diff --git a/src/ui/gwt/src/org/grammaticalframework/ui/gwt/client/DocumentsPanel.java b/src/ui/gwt/src/org/grammaticalframework/ui/gwt/client/DocumentsPanel.java new file mode 100644 index 000000000..1cdd99700 --- /dev/null +++ b/src/ui/gwt/src/org/grammaticalframework/ui/gwt/client/DocumentsPanel.java @@ -0,0 +1,56 @@ +package org.grammaticalframework.ui.gwt.client; + +import java.util.*; +import com.google.gwt.user.client.*; +import com.google.gwt.user.client.ui.*; +import com.google.gwt.http.client.*; +import com.google.gwt.xml.client.*; +import com.google.gwt.event.logical.shared.*; +import com.google.gwt.event.dom.client.*; + +public class DocumentsPanel extends Composite { + + private PGFWrapper pgf; + private FlexTable table; + + public DocumentsPanel(PGFWrapper pgf) { + this.pgf = pgf; + + VerticalPanel documentsPanel = new VerticalPanel(); + documentsPanel.setStylePrimaryName("my-DocumentsFrame"); + + Label header = new Label("Documents"); + header.setStylePrimaryName("my-DocumentsHeader"); + documentsPanel.add(header); + + table = new FlexTable(); + table.setStylePrimaryName("my-DocumentsTable"); + documentsPanel.add(table); + + addRow(0, "Test0"); + addRow(1, "Test1"); + addRow(2, "Test2"); + addRow(3, "Test3"); + + table.addClickHandler(new ClickHandler() { + public void onClick(ClickEvent event) { + HTMLTable.Cell cell = table.getCellForEvent(event); + if (cell != null) { + int row = cell.getRowIndex(); + selectRow(row); + } + } + }); + + initWidget(documentsPanel); + setStylePrimaryName("my-DocumentsPanel"); + } + + private void addRow(int row, String text) { + table.setText(row, 0, text); + table.getRowFormatter().addStyleName(row, "row"); + } + + private void selectRow(int row) { + } +} diff --git a/src/ui/gwt/src/org/grammaticalframework/ui/gwt/client/EditorApp.java b/src/ui/gwt/src/org/grammaticalframework/ui/gwt/client/EditorApp.java index 107e2c6cd..30e1cd896 100644 --- a/src/ui/gwt/src/org/grammaticalframework/ui/gwt/client/EditorApp.java +++ b/src/ui/gwt/src/org/grammaticalframework/ui/gwt/client/EditorApp.java @@ -19,6 +19,7 @@ public class EditorApp implements EntryPoint { protected Widget translatePanel; protected BrowsePanel browsePanel; protected QueryPanel queryPanel; + protected DocumentsPanel documentsPanel; protected StatusPopup statusPopup; protected TextInputPanel textPanel; protected FridgeBagPanel bagPanel; @@ -217,6 +218,7 @@ public class EditorApp implements EntryPoint { translatePanel = createTranslatePanel(); browsePanel = createBrowsePanel(); queryPanel = createQueryPanel(); + documentsPanel = createDocumentsPanel(); VerticalPanel vPanel = new VerticalPanel(); vPanel.setWidth("100%"); @@ -318,13 +320,29 @@ public class EditorApp implements EntryPoint { return new QueryPanel(pgf); } + protected DocumentsPanel createDocumentsPanel() { + return new DocumentsPanel(pgf); + } + protected Widget createLinksPanel(final Panel parent) { HorizontalPanel linksPanel = new HorizontalPanel(); linksPanel.setStylePrimaryName("my-LinksPanel"); + Hyperlink documentsLink = new Hyperlink("Documents", "documents"); + documentsLink.addClickListener(new ClickListener() { + public void onClick(Widget sender) { + parent.remove(browsePanel); + parent.remove(queryPanel); + parent.remove(translatePanel); + parent.add(documentsPanel); + } + }); + linksPanel.add(documentsLink); + Hyperlink translateLink = new Hyperlink("Translate", "translate"); translateLink.addClickListener(new ClickListener() { public void onClick(Widget sender) { + parent.remove(documentsPanel); parent.remove(browsePanel); parent.remove(queryPanel); parent.add(translatePanel); @@ -335,6 +353,7 @@ public class EditorApp implements EntryPoint { Hyperlink queryLink = new Hyperlink("Query", "query"); queryLink.addClickListener(new ClickListener() { public void onClick(Widget sender) { + parent.remove(documentsPanel); parent.remove(translatePanel); parent.remove(browsePanel); parent.add(queryPanel); @@ -345,6 +364,7 @@ public class EditorApp implements EntryPoint { Hyperlink browseLink = new Hyperlink("Browse", "browse"); browseLink.addClickListener(new ClickListener() { public void onClick(Widget sender) { + parent.remove(documentsPanel); parent.remove(translatePanel); parent.remove(queryPanel); parent.add(browsePanel); @@ -379,15 +399,23 @@ public class EditorApp implements EntryPoint { } public void onHistoryChanged(String token) { - if (token.equals("translate")) { + if (token.equals("documents")) { + parent.add(documentsPanel); + parent.remove(translatePanel); parent.remove(queryPanel); parent.remove(browsePanel); + } else if (token.equals("translate")) { + parent.remove(documentsPanel); parent.add(translatePanel); - } else if (token.equals("query")) { - parent.remove(translatePanel); + parent.remove(queryPanel); parent.remove(browsePanel); + } else if (token.equals("query")) { + parent.remove(documentsPanel); + parent.remove(translatePanel); parent.add(queryPanel); + parent.remove(browsePanel); } else if (token.equals("browse")) { + parent.remove(documentsPanel); parent.remove(translatePanel); parent.remove(queryPanel); parent.add(browsePanel); diff --git a/src/ui/gwt/src/org/grammaticalframework/ui/gwt/client/TextInputPanel.java b/src/ui/gwt/src/org/grammaticalframework/ui/gwt/client/TextInputPanel.java index cfaec4f03..2a70e4d02 100644 --- a/src/ui/gwt/src/org/grammaticalframework/ui/gwt/client/TextInputPanel.java +++ b/src/ui/gwt/src/org/grammaticalframework/ui/gwt/client/TextInputPanel.java @@ -71,7 +71,7 @@ public class TextInputPanel extends Composite implements Focusable, HasValueChan toolbar.setCellVerticalAlignment(buttons,HorizontalPanel.ALIGN_MIDDLE); Image clearButton = new Image("org.grammaticalframework.ui.gwt.EditorApp/textinput-buttons.png",0,0,20,20); - clearButton.setTitle("Clears the whole text."); + clearButton.setTitle("Clears the whole document."); clearButton.setStylePrimaryName("button"); clearButton.addClickListener(new ClickListener () { public void onClick(Widget sender) { @@ -80,7 +80,17 @@ public class TextInputPanel extends Composite implements Focusable, HasValueChan }); buttons.add(clearButton); - Image deleteLastButton = new Image("org.grammaticalframework.ui.gwt.EditorApp/textinput-buttons.png",20,0,20,20); + Image saveButton = new Image("org.grammaticalframework.ui.gwt.EditorApp/textinput-buttons.png",20,0,20,20); + saveButton.setTitle("Save the document."); + saveButton.setStylePrimaryName("button"); + saveButton.addClickListener(new ClickListener () { + public void onClick(Widget sender) { + save(); + } + }); + buttons.add(saveButton); + + Image deleteLastButton = new Image("org.grammaticalframework.ui.gwt.EditorApp/textinput-buttons.png",40,0,20,20); deleteLastButton.setTitle("Removes the last word."); deleteLastButton.setStylePrimaryName("button"); deleteLastButton.addClickListener(new ClickListener () { @@ -160,6 +170,9 @@ public class TextInputPanel extends Composite implements Focusable, HasValueChan tempPanel = null; fireValueChange(); } + + public void save() { + } public void addMagnet(Magnet magnet) { Label wordLabel = new Label(magnet.getText()); diff --git a/src/ui/gwt/src/org/grammaticalframework/ui/gwt/public/Editor.css b/src/ui/gwt/src/org/grammaticalframework/ui/gwt/public/Editor.css index 2b876160e..233255ade 100644 --- a/src/ui/gwt/src/org/grammaticalframework/ui/gwt/public/Editor.css +++ b/src/ui/gwt/src/org/grammaticalframework/ui/gwt/public/Editor.css @@ -1,4 +1,36 @@ -/** Add css rules here for your application. */ +.my-DocumentsPanel { + padding: 1em; + width: 100%; +} + +.my-DocumentsFrame { + width: 100%; +} + +.my-DocumentsHeader { + width: 100%; + background-attachement: scroll; + background-color: #E5E5E5; + background-image: url("background.png"); + background-position: 0px -192px; + background-repeat: repeat-x; + font-size: 150%; +} + +.my-DocumentsTable { + width: 100%; + border: 1px solid #E5E5E5; + border-collapse: collapse; +} + +.my-DocumentsTable .row td { + cursor:pointer; + border: 1px solid #E5E5E5; +} + +.my-DocumentsTable .row:hover { + background-color: rgb(147, 194, 241); +} .my-TranslatePanel { padding-top: 1em; diff --git a/src/ui/gwt/src/org/grammaticalframework/ui/gwt/public/textinput-buttons.png b/src/ui/gwt/src/org/grammaticalframework/ui/gwt/public/textinput-buttons.png index 46029f34e..9f6017f70 100644 Binary files a/src/ui/gwt/src/org/grammaticalframework/ui/gwt/public/textinput-buttons.png and b/src/ui/gwt/src/org/grammaticalframework/ui/gwt/public/textinput-buttons.png differ