summaryrefslogtreecommitdiff
path: root/src/ui
diff options
context:
space:
mode:
Diffstat (limited to 'src/ui')
-rw-r--r--src/ui/gwt/src/org/grammaticalframework/ui/gwt/client/BrowsePanel.java2
-rw-r--r--src/ui/gwt/src/org/grammaticalframework/ui/gwt/client/CompletionOracle.java2
-rw-r--r--src/ui/gwt/src/org/grammaticalframework/ui/gwt/client/ContentService.java50
-rw-r--r--src/ui/gwt/src/org/grammaticalframework/ui/gwt/client/DocumentsPanel.java2
-rw-r--r--src/ui/gwt/src/org/grammaticalframework/ui/gwt/client/EditorApp.java25
-rw-r--r--src/ui/gwt/src/org/grammaticalframework/ui/gwt/client/FridgeApp.java6
-rw-r--r--src/ui/gwt/src/org/grammaticalframework/ui/gwt/client/GrammarsPanel.java226
-rw-r--r--src/ui/gwt/src/org/grammaticalframework/ui/gwt/client/PGFWrapper.java14
-rw-r--r--src/ui/gwt/src/org/grammaticalframework/ui/gwt/client/QueryPanel.java2
-rw-r--r--src/ui/gwt/src/org/grammaticalframework/ui/gwt/client/SettingsListener.java10
-rw-r--r--src/ui/gwt/src/org/grammaticalframework/ui/gwt/client/SettingsPanel.java53
-rw-r--r--src/ui/gwt/src/org/grammaticalframework/ui/gwt/client/TranslateApp.java6
-rw-r--r--src/ui/gwt/src/org/grammaticalframework/ui/gwt/public/Editor.css33
-rw-r--r--src/ui/gwt/src/org/grammaticalframework/ui/gwt/public/grammar-buttons.pngbin0 -> 1732 bytes
14 files changed, 298 insertions, 133 deletions
diff --git a/src/ui/gwt/src/org/grammaticalframework/ui/gwt/client/BrowsePanel.java b/src/ui/gwt/src/org/grammaticalframework/ui/gwt/client/BrowsePanel.java
index a512b0b03..ed5af3faf 100644
--- a/src/ui/gwt/src/org/grammaticalframework/ui/gwt/client/BrowsePanel.java
+++ b/src/ui/gwt/src/org/grammaticalframework/ui/gwt/client/BrowsePanel.java
@@ -234,7 +234,7 @@ public class BrowsePanel extends Composite {
}
}
- protected class MySettingsListener implements PGFWrapper.SettingsListener {
+ protected class MySettingsListener implements SettingsListener {
private PGFWrapper pgf;
diff --git a/src/ui/gwt/src/org/grammaticalframework/ui/gwt/client/CompletionOracle.java b/src/ui/gwt/src/org/grammaticalframework/ui/gwt/client/CompletionOracle.java
index 504c13879..7ea5d2be6 100644
--- a/src/ui/gwt/src/org/grammaticalframework/ui/gwt/client/CompletionOracle.java
+++ b/src/ui/gwt/src/org/grammaticalframework/ui/gwt/client/CompletionOracle.java
@@ -28,7 +28,7 @@ public class CompletionOracle extends SuggestOracle {
public CompletionOracle (PGFWrapper pgf, ErrorHandler errorHandler) {
this.pgf = pgf;
this.errorHandler = errorHandler;
- pgf.addSettingsListener(new PGFWrapper.SettingsListener() {
+ pgf.addSettingsListener(new SettingsListener() {
public void onAvailableGrammarsChanged() { clearState(); }
public void onSelectedGrammarChanged() { clearState(); }
public void onInputLanguageChanged() { clearState(); }
diff --git a/src/ui/gwt/src/org/grammaticalframework/ui/gwt/client/ContentService.java b/src/ui/gwt/src/org/grammaticalframework/ui/gwt/client/ContentService.java
index 42ae897ba..e6f0b5509 100644
--- a/src/ui/gwt/src/org/grammaticalframework/ui/gwt/client/ContentService.java
+++ b/src/ui/gwt/src/org/grammaticalframework/ui/gwt/client/ContentService.java
@@ -8,6 +8,11 @@ import com.google.gwt.core.client.*;
public class ContentService {
String contentBaseURL;
+ // Event listeners
+ private List<SettingsListener> listeners = new LinkedList<SettingsListener>();
+ private List<GrammarInfo> grammars = null;
+
+
public ContentService(String contentBaseURL) {
this.contentBaseURL = contentBaseURL;
}
@@ -15,6 +20,51 @@ public class ContentService {
public String getBaseURL() {
return contentBaseURL;
}
+
+ public void addSettingsListener(SettingsListener listener) {
+ listeners.add(listener);
+ }
+
+ public void updateAvailableGrammars() {
+ List<Arg> args = new ArrayList<Arg>();
+ args.add(new Arg("command", "grammars"));
+ JSONRequestBuilder.sendRequest(contentBaseURL, args, new GrammarsCallback() {
+ public void onResult(IterableJsArray<ContentService.GrammarInfo> grammars_) {
+ grammars = new ArrayList<GrammarInfo>();
+ for (ContentService.GrammarInfo grammar : grammars_.iterable()) {
+ grammars.add(grammar);
+ }
+
+ for (SettingsListener listener : listeners) {
+ listener.onAvailableGrammarsChanged();
+ }
+ }
+
+ public void onError(Throwable e) {
+ }
+ });
+ }
+
+ public List<GrammarInfo> getGrammars() {
+ return grammars;
+ }
+
+ public interface GrammarsCallback extends JSONCallback<IterableJsArray<GrammarInfo>> {}
+
+ public static class GrammarInfo extends JavaScriptObject {
+ protected GrammarInfo() { }
+
+ public final native String getURL() /*-{ return this.url; }-*/;
+ public final native String getName() /*-{ return this.name; }-*/;
+ public final native String getDescription() /*-{ return this.description; }-*/;
+ }
+
+ public JSONRequest deleteGrammar(String grammarURL, DeleteCallback callback) {
+ List<Arg> args = new ArrayList<Arg>();
+ args.add(new Arg("url", grammarURL));
+ args.add(new Arg("command", "delete_grammar"));
+ return JSONRequestBuilder.sendRequest(contentBaseURL, args, callback);
+ }
public JSONRequest save(Object id, String content, SaveCallback callback) {
List<Arg> args = new ArrayList<Arg>();
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
index c2f5b3844..09acce5f5 100644
--- a/src/ui/gwt/src/org/grammaticalframework/ui/gwt/client/DocumentsPanel.java
+++ b/src/ui/gwt/src/org/grammaticalframework/ui/gwt/client/DocumentsPanel.java
@@ -44,7 +44,7 @@ public class DocumentsPanel extends Composite implements HasSelectionHandlers<Ob
});
FlexTable header = new FlexTable();
- header.setStylePrimaryName("my-DocumentsHeader");
+ header.setStylePrimaryName("my-TableHeader");
header.setText(0,0,"Documents");
header.setWidget(0,1,deleteButton);
header.getColumnFormatter().setWidth(1,"20px");
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 949550612..dde097b8f 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
@@ -17,6 +17,7 @@ public class EditorApp implements EntryPoint {
protected ContentService contentService;
protected PGFWrapper pgf;
+ protected SettingsPanel settingsPanel;
protected VerticalPanel outputPanel;
protected Widget editorPanel;
protected BrowsePanel browsePanel;
@@ -221,7 +222,7 @@ public class EditorApp implements EntryPoint {
hPanel.setCellHorizontalAlignment(linksPanel,HorizontalPanel.ALIGN_LEFT);
linksPanel.selectTab(1);
- Widget settingsPanel = createSettingsPanel();
+ settingsPanel = createSettingsPanel();
hPanel.add(settingsPanel);
hPanel.setCellHorizontalAlignment(settingsPanel,HorizontalPanel.ALIGN_RIGHT);
@@ -231,8 +232,8 @@ public class EditorApp implements EntryPoint {
return vPanel;
}
- protected Widget createSettingsPanel () {
- return new SettingsPanel(pgf);
+ protected SettingsPanel createSettingsPanel () {
+ return new SettingsPanel(pgf, contentService, statusPopup);
}
protected Widget createEditorPanel() {
@@ -412,23 +413,11 @@ public class EditorApp implements EntryPoint {
return msgHTML;
}
- protected void setPGFName (String pgfName) {
- if (pgfName != null && !pgfName.equals(pgf.getPGFName())) {
- pgf.setPGFName(pgfName);
- }
- }
-
- protected void setInputLanguage (String inputLanguage) {
- if (inputLanguage != null && !inputLanguage.equals(pgf.getInputLanguage())) {
- pgf.setInputLanguage(inputLanguage);
- }
- }
-
//
// Initialization
//
- protected class MySettingsListener implements PGFWrapper.SettingsListener {
+ protected class MySettingsListener implements SettingsListener {
// Will only happen on load
public void onAvailableGrammarsChanged() {
if (pgf.getPGFName() == null) {
@@ -459,7 +448,7 @@ public class EditorApp implements EntryPoint {
statusPopup.showError(msg,e);
}
}
-
+
public void onModuleLoad() {
statusPopup = new StatusPopup();
@@ -467,7 +456,7 @@ public class EditorApp implements EntryPoint {
contentService = new ContentService(contentBaseURL);
RootPanel.get().add(createUI());
pgf.addSettingsListener(new MySettingsListener());
- pgf.updateAvailableGrammars();
+ contentService.updateAvailableGrammars();
textPanel.setFocus(true);
}
diff --git a/src/ui/gwt/src/org/grammaticalframework/ui/gwt/client/FridgeApp.java b/src/ui/gwt/src/org/grammaticalframework/ui/gwt/client/FridgeApp.java
index 564ae35cc..acc28977a 100644
--- a/src/ui/gwt/src/org/grammaticalframework/ui/gwt/client/FridgeApp.java
+++ b/src/ui/gwt/src/org/grammaticalframework/ui/gwt/client/FridgeApp.java
@@ -202,11 +202,11 @@ public class FridgeApp implements EntryPoint {
prefixPanel.setStylePrimaryName("my-PrefixPanel");
bagPanel = new FridgeBagPanel();
outputPanel = new TranslationsPanel();
- SettingsPanel settingsPanel = new SettingsPanel(pgf, true, false);
+ SettingsPanel settingsPanel = new SettingsPanel(pgf, null, statusPopup);
VerticalPanel vPanel = new VerticalPanel();
vPanel.setHorizontalAlignment(VerticalPanel.ALIGN_CENTER);
- vPanel.setWidth("100%");
+ vPanel.setWidth("100%");
vPanel.add(prefixPanel);
vPanel.add(bagPanel);
@@ -295,7 +295,7 @@ public class FridgeApp implements EntryPoint {
// Initialization
//
- protected class MySettingsListener implements PGFWrapper.SettingsListener {
+ protected class MySettingsListener implements SettingsListener {
// Will only happen on load
public void onAvailableGrammarsChanged() {
if (pgf.getPGFName() == null) {
diff --git a/src/ui/gwt/src/org/grammaticalframework/ui/gwt/client/GrammarsPanel.java b/src/ui/gwt/src/org/grammaticalframework/ui/gwt/client/GrammarsPanel.java
index 0e7a8195f..70f761f8b 100644
--- a/src/ui/gwt/src/org/grammaticalframework/ui/gwt/client/GrammarsPanel.java
+++ b/src/ui/gwt/src/org/grammaticalframework/ui/gwt/client/GrammarsPanel.java
@@ -14,79 +14,187 @@ public class GrammarsPanel extends Composite {
private PGFWrapper pgf;
private ContentService contentService;
private StatusPopup statusPopup;
- private FlexTable table;
- private ArrayList documentIds = new ArrayList();
+
+ private VerticalPanel grammarsPanel;
+ private FormPanel form = null;
public GrammarsPanel(PGFWrapper pgf, ContentService contentService, StatusPopup statusPopup) {
this.pgf = pgf;
this.contentService = contentService;
this.statusPopup = statusPopup;
- HorizontalPanel grammarsPanel = new HorizontalPanel();
-
- UploadFormHandler uploadFormHandler = new UploadFormHandler();
-
- final FormPanel form = new FormPanel();
- form.setEncoding(FormPanel.ENCODING_MULTIPART);
- form.setMethod(FormPanel.METHOD_POST);
- form.setAction(contentService.getBaseURL());
- form.addSubmitHandler(uploadFormHandler);
- form.addSubmitCompleteHandler(uploadFormHandler);
- grammarsPanel.add(form);
-
- HorizontalPanel hPanel = new HorizontalPanel();
- hPanel.setSpacing(8);
- form.add(hPanel);
-
- VerticalPanel vPanel = new VerticalPanel();
- hPanel.add(vPanel);
-
- vPanel.add(new HTML("<input type=\"hidden\" name=\"command\" value=\"update_grammar\"/>"));
-
- FileUpload fileUpload = new FileUpload();
- fileUpload.setName("file");
- vPanel.add(fileUpload);
-
- vPanel.add(new HTML("<BR/>"));
-
- vPanel.add(new Label("Name:"));
- TextBox grammarName = new TextBox();
- grammarName.setName("name");
- grammarName.setWidth("100%");
- vPanel.add(grammarName);
+ VerticalPanel vpanel = new VerticalPanel();
- vPanel.add(new HTML("<BR/>"));
-
- vPanel.add(new Label("Description:"));
- TextArea grammarDescr = new TextArea();
- grammarDescr.setName("description");
- grammarDescr.setWidth("100%");
- grammarDescr.setHeight("150px");
- vPanel.add(grammarDescr);
-
- VerticalPanel btnPanel = new VerticalPanel();
- btnPanel.setSpacing(3);
- hPanel.add(btnPanel);
-
- btnPanel.add(new Button("Upload", new ClickListener() {
- public void onClick(Widget sender) {
- form.submit();
- }
- }));
- btnPanel.add(new Button("Cancel", new ClickListener() {
+ Button btnNew = new Button("New Grammar");
+ btnNew.addClickListener(new ClickListener() {
public void onClick(Widget sender) {
+ if (form == null) {
+ grammarsPanel.insert(new GrammarInfoPanel(null),0);
+ }
}
- }));
+ });
+ vpanel.add(btnNew);
- initWidget(grammarsPanel);
+ grammarsPanel = new VerticalPanel();
+ grammarsPanel.setWidth("100%");
+ vpanel.add(grammarsPanel);
+
+ initWidget(vpanel);
setStylePrimaryName("my-GrammarsPanel");
+
+ contentService.addSettingsListener(new MySettingsListener());
}
- private class UploadFormHandler implements FormPanel.SubmitHandler, FormPanel.SubmitCompleteHandler {
- public void onSubmit(FormPanel.SubmitEvent event) {
+ private class GrammarInfoPanel extends Composite {
+ public GrammarInfoPanel(final ContentService.GrammarInfo grammar) {
+ final VerticalPanel vpanel = new VerticalPanel();
+
+ if (grammar != null) {
+ FlexTable header = new FlexTable();
+ header.setStylePrimaryName("my-TableHeader");
+ header.setText(0,0,grammar.getName());
+ vpanel.add(header);
+
+ final Image updateButton = new Image("org.grammaticalframework.ui.gwt.EditorApp/grammar-buttons.png",0,0,20,20);
+ updateButton.setTitle("Edit the grammar definition.");
+ updateButton.setStylePrimaryName("toolbar-button");
+ header.setWidget(0,1,updateButton);
+ header.getColumnFormatter().setWidth(1,"20px");
+
+ final Image deleteButton = new Image("org.grammaticalframework.ui.gwt.EditorApp/grammar-buttons.png",20,0,20,20);
+ deleteButton.setTitle("Delete this grammar.");
+ deleteButton.setStylePrimaryName("toolbar-button");
+ header.setWidget(0,2,deleteButton);
+ header.getColumnFormatter().setWidth(2,"20px");
+
+ final Label descr = new Label(grammar.getDescription());
+ descr.setStylePrimaryName("descr-label");
+ vpanel.add(descr);
+
+ updateButton.addClickListener(new ClickListener () {
+ public void onClick(Widget sender) {
+ if (form == null) {
+ vpanel.remove(descr);
+ vpanel.add(form = createUploadForm(grammar));
+ }
+ }
+ });
+
+ deleteButton.addClickListener(new ClickListener () {
+ public void onClick(Widget sender) {
+ contentService.deleteGrammar(grammar.getURL(), new ContentService.DeleteCallback() {
+ public void onResult(ContentService.DeleteResult result) {
+ contentService.updateAvailableGrammars();
+ }
+
+ public void onError(Throwable e) {
+ statusPopup.showError("Delete failed", e);
+ }
+ });
+ }
+ });
+ } else {
+ FlexTable header = new FlexTable();
+ header.setStylePrimaryName("my-TableHeader");
+ header.setText(0,0,"Add New Grammar");
+ vpanel.add(header);
+ vpanel.add(form = createUploadForm(grammar));
+ }
+
+ initWidget(vpanel);
+ setStylePrimaryName("my-GrammarInfoPanel");
}
+
+ public FormPanel createUploadForm(final ContentService.GrammarInfo grammar) {
+ UploadFormHandler uploadFormHandler = new UploadFormHandler();
+
+ final FormPanel form = new FormPanel();
+ form.setWidth("100%");
+ form.setEncoding(FormPanel.ENCODING_MULTIPART);
+ form.setMethod(FormPanel.METHOD_POST);
+ form.setAction(contentService.getBaseURL());
+ form.addSubmitHandler(uploadFormHandler);
+ form.addSubmitCompleteHandler(uploadFormHandler);
+
+ VerticalPanel vPanel = new VerticalPanel();
+ vPanel.setWidth("100%");
+ form.add(vPanel);
+
+ vPanel.add(new HTML("<input type=\"hidden\" name=\"command\" value=\"update_grammar\"/>"));
- public void onSubmitComplete(FormPanel.SubmitCompleteEvent event) {
+ HorizontalPanel hPanel = new HorizontalPanel();
+ hPanel.setSpacing(8);
+ hPanel.setVerticalAlignment(HorizontalPanel.ALIGN_MIDDLE);
+ vPanel.add(hPanel);
+
+ final FileUpload fileUpload = new FileUpload();
+ fileUpload.setName("file");
+ hPanel.add(fileUpload);
+
+ hPanel.add(new HTML("&nbsp;"));
+
+ hPanel.add(new Label("Name:"));
+ final TextBox grammarName = new TextBox();
+ grammarName.setName("name");
+ grammarName.setWidth("300px");
+ hPanel.add(grammarName);
+
+ hPanel.add(new HTML("&nbsp;"));
+
+ hPanel.add(new Button("Upload", new ClickListener() {
+ public void onClick(Widget sender) {
+ if (grammar == null &&
+ fileUpload.getFilename().equals(""))
+ statusPopup.showError("You must select a file to upload", null);
+ else
+ form.submit();
+ }
+ }));
+ hPanel.add(new Button("Cancel", new ClickListener() {
+ public void onClick(Widget sender) {
+ contentService.updateAvailableGrammars();
+ }
+ }));
+
+ vPanel.add(new Label("Description:"));
+ TextArea grammarDescr = new TextArea();
+ grammarDescr.setName("description");
+ grammarDescr.setWidth("100%");
+ grammarDescr.setHeight("50px");
+ vPanel.add(grammarDescr);
+
+ if (grammar != null) {
+ grammarName.setText(grammar.getName());
+ grammarDescr.setText(grammar.getDescription());
+
+ vPanel.add(new HTML("<input type=\"hidden\" name=\"url\" value=\""+grammar.getURL()+"\"/>"));
+ }
+
+ return form;
}
- };
+
+ private class UploadFormHandler implements FormPanel.SubmitHandler, FormPanel.SubmitCompleteHandler {
+ public void onSubmit(FormPanel.SubmitEvent event) {
+ }
+
+ public void onSubmitComplete(FormPanel.SubmitCompleteEvent event) {
+ contentService.updateAvailableGrammars();
+ }
+ }
+ }
+
+ private class MySettingsListener implements SettingsListener {
+ public void onAvailableGrammarsChanged() {
+ form = null;
+ grammarsPanel.clear();
+ for (ContentService.GrammarInfo grammar : contentService.getGrammars()) {
+ grammarsPanel.add(new GrammarInfoPanel(grammar));
+ }
+ }
+ public void onSelectedGrammarChanged() { }
+ public void onInputLanguageChanged() { }
+ public void onOutputLanguageChanged() { }
+ public void onStartCategoryChanged() { }
+ public void onSettingsError(String msg, Throwable e) { }
+ }
}
diff --git a/src/ui/gwt/src/org/grammaticalframework/ui/gwt/client/PGFWrapper.java b/src/ui/gwt/src/org/grammaticalframework/ui/gwt/client/PGFWrapper.java
index 2c85a4704..9c88da7f6 100644
--- a/src/ui/gwt/src/org/grammaticalframework/ui/gwt/client/PGFWrapper.java
+++ b/src/ui/gwt/src/org/grammaticalframework/ui/gwt/client/PGFWrapper.java
@@ -100,6 +100,9 @@ public class PGFWrapper {
}
protected void updateSelectedGrammar () {
+ if (grammarURL == null)
+ return;
+
clearCachedInfo();
pgf.grammar(grammarURL, new PGF.GrammarCallback() {
public void onResult(PGF.Grammar grammar) {
@@ -176,7 +179,7 @@ public class PGFWrapper {
public void setPGFName(String pgfName) {
this.pgfName = pgfName;
- this.grammarURL = baseURL + "/" + pgfName;
+ this.grammarURL = (pgfName == null) ? null : baseURL + "/" + pgfName;
this.inputLanguage = null;
this.outputLanguage = null;
this.cat = null;
@@ -263,15 +266,6 @@ public class PGFWrapper {
// Listeners
//
- public interface SettingsListener {
- public void onAvailableGrammarsChanged();
- public void onSelectedGrammarChanged();
- public void onInputLanguageChanged();
- public void onOutputLanguageChanged();
- public void onStartCategoryChanged();
- public void onSettingsError(String msg, Throwable e);
- }
-
public static class SettingsAdapter implements SettingsListener {
public void onAvailableGrammarsChanged() {}
public void onSelectedGrammarChanged() {}
diff --git a/src/ui/gwt/src/org/grammaticalframework/ui/gwt/client/QueryPanel.java b/src/ui/gwt/src/org/grammaticalframework/ui/gwt/client/QueryPanel.java
index 25a278650..b364ed0b6 100644
--- a/src/ui/gwt/src/org/grammaticalframework/ui/gwt/client/QueryPanel.java
+++ b/src/ui/gwt/src/org/grammaticalframework/ui/gwt/client/QueryPanel.java
@@ -124,7 +124,7 @@ public class QueryPanel extends Composite {
return queryPanel;
}
- protected class MySettingsListener implements PGFWrapper.SettingsListener {
+ protected class MySettingsListener implements SettingsListener {
public MySettingsListener() {
}
diff --git a/src/ui/gwt/src/org/grammaticalframework/ui/gwt/client/SettingsListener.java b/src/ui/gwt/src/org/grammaticalframework/ui/gwt/client/SettingsListener.java
new file mode 100644
index 000000000..494c990f6
--- /dev/null
+++ b/src/ui/gwt/src/org/grammaticalframework/ui/gwt/client/SettingsListener.java
@@ -0,0 +1,10 @@
+package org.grammaticalframework.ui.gwt.client;
+
+public interface SettingsListener {
+ public void onAvailableGrammarsChanged();
+ public void onSelectedGrammarChanged();
+ public void onInputLanguageChanged();
+ public void onOutputLanguageChanged();
+ public void onStartCategoryChanged();
+ public void onSettingsError(String msg, Throwable e);
+}
diff --git a/src/ui/gwt/src/org/grammaticalframework/ui/gwt/client/SettingsPanel.java b/src/ui/gwt/src/org/grammaticalframework/ui/gwt/client/SettingsPanel.java
index 1ee3f71e1..a5c19bc64 100644
--- a/src/ui/gwt/src/org/grammaticalframework/ui/gwt/client/SettingsPanel.java
+++ b/src/ui/gwt/src/org/grammaticalframework/ui/gwt/client/SettingsPanel.java
@@ -5,31 +5,29 @@ import com.google.gwt.user.client.ui.*;
public class SettingsPanel extends Composite {
private PGFWrapper pgf;
+ private ContentService contentService;
+ private StatusPopup statusPopup;
private MyListBox grammarBox;
private MyListBox fromLangBox;
private MyListBox toLangBox;
- public SettingsPanel (PGFWrapper pgf) {
- this(pgf, true, true);
- }
-
- public SettingsPanel (PGFWrapper pgf, boolean showPGFName, boolean showOutputLanguage) {
+ public SettingsPanel (PGFWrapper pgf, ContentService contentService, StatusPopup statusPopup) {
this.pgf = pgf;
-
+ this.contentService = contentService;
+ this.statusPopup = statusPopup;
+
HorizontalPanel settingsPanel = new HorizontalPanel();
settingsPanel.setHorizontalAlignment(HorizontalPanel.ALIGN_CENTER);
settingsPanel.setVerticalAlignment(HorizontalPanel.ALIGN_MIDDLE);
- if (showPGFName) {
- grammarBox = new MyListBox();
- grammarBox.addChangeListener(new ChangeListener() {
- public void onChange(Widget sender) {
- SettingsPanel.this.pgf.setPGFName(grammarBox.getSelectedValue());
- }
- });
- settingsPanel.add(new FormWidget("Grammar:", grammarBox));
- }
+ grammarBox = new MyListBox();
+ grammarBox.addChangeListener(new ChangeListener() {
+ public void onChange(Widget sender) {
+ SettingsPanel.this.pgf.setPGFName(grammarBox.getSelectedValue());
+ }
+ });
+ settingsPanel.add(new FormWidget("Grammar:", grammarBox));
fromLangBox = new MyListBox();
fromLangBox.addChangeListener(new ChangeListener() {
@@ -39,20 +37,19 @@ public class SettingsPanel extends Composite {
});
settingsPanel.add(new FormWidget("From:", fromLangBox));
- if (showOutputLanguage) {
- toLangBox = new MyListBox();
- toLangBox.addChangeListener(new ChangeListener() {
- public void onChange(Widget sender) {
- SettingsPanel.this.pgf.setOutputLanguage(toLangBox.getSelectedValue());
- }
- });
- settingsPanel.add(new FormWidget("To:", toLangBox));
- }
+ toLangBox = new MyListBox();
+ toLangBox.addChangeListener(new ChangeListener() {
+ public void onChange(Widget sender) {
+ SettingsPanel.this.pgf.setOutputLanguage(toLangBox.getSelectedValue());
+ }
+ });
+ settingsPanel.add(new FormWidget("To:", toLangBox));
initWidget(settingsPanel);
setStylePrimaryName("my-SettingsPanel");
pgf.addSettingsListener(new MySettingsListener());
+ contentService.addSettingsListener(new MySettingsListener());
}
private static class FormWidget extends HorizontalPanel {
@@ -64,11 +61,15 @@ public class SettingsPanel extends Composite {
}
}
- private class MySettingsListener implements PGFWrapper.SettingsListener {
+ private class MySettingsListener implements SettingsListener {
public void onAvailableGrammarsChanged() {
if (grammarBox != null) {
grammarBox.clear();
- grammarBox.addItems(pgf.getGrammars());
+
+ for (ContentService.GrammarInfo grammar : contentService.getGrammars()) {
+ grammarBox.addItem(grammar.getName(), grammar.getURL());
+ }
+ pgf.setPGFName(grammarBox.getSelectedValue());
}
}
public void onSelectedGrammarChanged() {
diff --git a/src/ui/gwt/src/org/grammaticalframework/ui/gwt/client/TranslateApp.java b/src/ui/gwt/src/org/grammaticalframework/ui/gwt/client/TranslateApp.java
index ae7e73f4a..9a6b84a8a 100644
--- a/src/ui/gwt/src/org/grammaticalframework/ui/gwt/client/TranslateApp.java
+++ b/src/ui/gwt/src/org/grammaticalframework/ui/gwt/client/TranslateApp.java
@@ -203,7 +203,7 @@ public class TranslateApp implements EntryPoint {
vPanel.setWidth("100%");
vPanel.setHorizontalAlignment(VerticalPanel.ALIGN_CENTER);
vPanel.add(createSuggestPanel());
- vPanel.add(createSettingsPanel());
+ vPanel.add(createSettingsPanel());
vPanel.add(createTranslationsPanel());
return vPanel;
@@ -221,7 +221,7 @@ public class TranslateApp implements EntryPoint {
}
protected Widget createSettingsPanel () {
- return new SettingsPanel(pgf);
+ return new SettingsPanel(pgf, null, statusPopup);
}
protected Widget createTranslationsPanel () {
@@ -276,7 +276,7 @@ public class TranslateApp implements EntryPoint {
// Initialization
//
- protected class MySettingsListener implements PGFWrapper.SettingsListener {
+ protected class MySettingsListener implements SettingsListener {
// Will only happen on load
public void onAvailableGrammarsChanged() {
if (pgf.getPGFName() == null) {
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 45abd36b2..0fd99f8a3 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
@@ -15,16 +15,6 @@
margin: 0 0.4em;
}
-.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;
@@ -45,6 +35,29 @@
width: 100%;
}
+.my-GrammarInfoPanel {
+ width: 100%;
+ border: 1px solid #E5E5E5;
+ margin-top: 5px;
+ margin-bottom: 5px;
+}
+
+.my-GrammarInfoPanel .descr-label {
+ width: 100%;
+ height: 50px;
+ padding: 3px;
+}
+
+.my-TableHeader {
+ 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-EditorPanel {
padding-top: 1em;
padding-bottom: 1em
diff --git a/src/ui/gwt/src/org/grammaticalframework/ui/gwt/public/grammar-buttons.png b/src/ui/gwt/src/org/grammaticalframework/ui/gwt/public/grammar-buttons.png
new file mode 100644
index 000000000..6cb89ca4b
--- /dev/null
+++ b/src/ui/gwt/src/org/grammaticalframework/ui/gwt/public/grammar-buttons.png
Binary files differ