diff options
| author | krasimir <krasimir@chalmers.se> | 2010-12-28 16:26:10 +0000 |
|---|---|---|
| committer | krasimir <krasimir@chalmers.se> | 2010-12-28 16:26:10 +0000 |
| commit | c8b6192128f63f14e0044b1484fd742acce2e2cf (patch) | |
| tree | aef44998b9aaf32b7f55cccba964053bbd4c983a /src/ui/gwt | |
| parent | 3f34dee15bd56e0fe0f0ce8e2af12480aa9c7c90 (diff) | |
The GF editor now lets the user to upload his/her own grammars
Diffstat (limited to 'src/ui/gwt')
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(" ")); + + hPanel.add(new Label("Name:")); + final TextBox grammarName = new TextBox(); + grammarName.setName("name"); + grammarName.setWidth("300px"); + hPanel.add(grammarName); + + hPanel.add(new HTML(" ")); + + 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 Binary files differnew file mode 100644 index 000000000..6cb89ca4b --- /dev/null +++ b/src/ui/gwt/src/org/grammaticalframework/ui/gwt/public/grammar-buttons.png |
