From 12d64654d7a9505c45b60cf391df825f3caf3134 Mon Sep 17 00:00:00 2001 From: krasimir Date: Thu, 26 Nov 2009 14:47:35 +0000 Subject: [PATCH] the default function of the PGFService should return list of functions as well as list of categories --- src/server/PGFService.hs | 4 +- .../cs/gf/gwt/client/CompletionOracle.java | 4 +- .../chalmers/cs/gf/gwt/client/FridgeApp.java | 6 +- .../src/se/chalmers/cs/gf/gwt/client/PGF.java | 16 +++++ .../chalmers/cs/gf/gwt/client/PGFWrapper.java | 65 +++++++++++++++---- .../cs/gf/gwt/client/SettingsPanel.java | 4 +- .../cs/gf/gwt/client/TranslateApp.java | 6 +- 7 files changed, 86 insertions(+), 19 deletions(-) diff --git a/src/server/PGFService.hs b/src/server/PGFService.hs index 0a457395f..21914ba69 100644 --- a/src/server/PGFService.hs +++ b/src/server/PGFService.hs @@ -138,7 +138,8 @@ doGrammar :: PGF -> Maybe (Accept Language) -> JSValue doGrammar pgf macc = showJSON $ toJSObject [("name", showJSON (PGF.abstractName pgf)), ("userLanguage", showJSON (selectLanguage pgf macc)), - ("categories", showJSON categories), + ("categories", showJSON categories), + ("functions", showJSON functions), ("languages", showJSON languages)] where languages = map toJSObject [[("name", showJSON l), @@ -146,6 +147,7 @@ doGrammar pgf macc = showJSON $ toJSObject ("canParse", showJSON $ PGF.canParse pgf l)] | l <- PGF.languages pgf] categories = map toJSObject [[("name", PGF.showCId cat)] | cat <- PGF.categories pgf] + functions = map toJSObject [[("name", PGF.showCId fun)] | fun <- PGF.functions pgf] doGraphvizAbstrTree pgf tree = do let dot = PGF.graphvizAbstractTree pgf (True,True) tree diff --git a/src/server/gwt/src/se/chalmers/cs/gf/gwt/client/CompletionOracle.java b/src/server/gwt/src/se/chalmers/cs/gf/gwt/client/CompletionOracle.java index 52d0e387a..9e8fa35ec 100644 --- a/src/server/gwt/src/se/chalmers/cs/gf/gwt/client/CompletionOracle.java +++ b/src/server/gwt/src/se/chalmers/cs/gf/gwt/client/CompletionOracle.java @@ -33,7 +33,9 @@ public class CompletionOracle extends SuggestOracle { public void onAvailableLanguagesChanged() { clearState(); } public void onInputLanguageChanged() { clearState(); } public void onOutputLanguageChanged() { clearState(); } - public void onCatChanged() { clearState(); } + public void onAvailableCategoriesChanged() { clearState(); } + public void onStartCategoryChanged() { clearState(); } + public void onAvailableFunctionsChanged() { clearState(); } public void onSettingsError(String msg, Throwable e) { clearState(); } }); } diff --git a/src/server/gwt/src/se/chalmers/cs/gf/gwt/client/FridgeApp.java b/src/server/gwt/src/se/chalmers/cs/gf/gwt/client/FridgeApp.java index c0bfc376e..2e20f713f 100644 --- a/src/server/gwt/src/se/chalmers/cs/gf/gwt/client/FridgeApp.java +++ b/src/server/gwt/src/se/chalmers/cs/gf/gwt/client/FridgeApp.java @@ -265,9 +265,13 @@ public class FridgeApp implements EntryPoint { public void onOutputLanguageChanged() { update(); } - public void onCatChanged() { + public void onAvailableCategoriesChanged() { + } + public void onStartCategoryChanged() { update(); } + public void onAvailableFunctionsChanged() { + } public void onSettingsError(String msg, Throwable e) { showError(msg,e); } diff --git a/src/server/gwt/src/se/chalmers/cs/gf/gwt/client/PGF.java b/src/server/gwt/src/se/chalmers/cs/gf/gwt/client/PGF.java index 80af107bb..cd9fac9a8 100644 --- a/src/server/gwt/src/se/chalmers/cs/gf/gwt/client/PGF.java +++ b/src/server/gwt/src/se/chalmers/cs/gf/gwt/client/PGF.java @@ -28,6 +28,10 @@ public class PGF { public final native String getUserLanguage() /*-{ return this.userLanguage; }-*/; public final native IterableJsArray getLanguages() /*-{ return this.languages; }-*/; + + public final native IterableJsArray getCategories() /*-{ return this.categories; }-*/; + + public final native IterableJsArray getFunctions() /*-{ return this.functions; }-*/; } public static class Language extends JavaScriptObject { @@ -38,6 +42,18 @@ public class PGF { public final native boolean canParse() /*-{ return this.canParse; }-*/; } + public static class Category extends JavaScriptObject { + protected Category() { } + + public final native String getName() /*-{ return this.name; }-*/; + } + + public static class Function extends JavaScriptObject { + protected Function() { } + + public final native String getName() /*-{ return this.name; }-*/; + } + /* Translation */ public JSONRequest translate (String pgfURL, String input, String fromLang, String cat, String toLang, diff --git a/src/server/gwt/src/se/chalmers/cs/gf/gwt/client/PGFWrapper.java b/src/server/gwt/src/se/chalmers/cs/gf/gwt/client/PGFWrapper.java index 329ae5f32..09b15ac07 100644 --- a/src/server/gwt/src/se/chalmers/cs/gf/gwt/client/PGFWrapper.java +++ b/src/server/gwt/src/se/chalmers/cs/gf/gwt/client/PGFWrapper.java @@ -35,7 +35,10 @@ public class PGFWrapper { private LinkedHashMap languages; private List parseableLanguages; - + + private List categories; + private List functions; + // Event listeners private List listeners = new LinkedList(); @@ -112,6 +115,18 @@ public class PGFWrapper { } } fireAvailableLanguagesChanged(); + + categories = new ArrayList(); + for (PGF.Category category : grammar.getCategories().iterable()) { + categories.add(category.getName()); + } + fireAvailableCategoriesChanged(); + + functions = new ArrayList(); + for (PGF.Function function : grammar.getFunctions().iterable()) { + functions.add(function.getName()); + } + fireAvailableFunctionsChanged(); } public void onError (Throwable e) { @@ -196,37 +211,43 @@ public class PGFWrapper { fireOutputLanguageChanged(); } - public String getCat() { + public String getStartCategory() { return cat; } - public void setCat(String cat) { + public void setStartCategory(String cat) { this.cat = cat; - fireCatChanged(); + fireStartCategoryChanged(); + } + + public List getCategories() { + return categories; + } + + public List getFunctions() { + return functions; } // // Information about the available grammars // - public List getGrammars() { return grammars; } - + // // Information about the selected grammar // - private void clearCachedInfo () { languages = null; parseableLanguages = null; } - + public String getUserLanguage () { return userLanguage; } - + public String getLanguageCode (String language) { PGF.Language l = languages.get(language); return l == null ? null : l.getLanguageCode(); @@ -249,7 +270,9 @@ public class PGFWrapper { public void onAvailableLanguagesChanged(); public void onInputLanguageChanged(); public void onOutputLanguageChanged(); - public void onCatChanged(); + public void onAvailableCategoriesChanged(); + public void onStartCategoryChanged(); + public void onAvailableFunctionsChanged(); public void onSettingsError(String msg, Throwable e); } @@ -258,7 +281,9 @@ public class PGFWrapper { public void onAvailableLanguagesChanged() {} public void onInputLanguageChanged() {} public void onOutputLanguageChanged() {} - public void onCatChanged() {} + public void onAvailableCategoriesChanged() {} + public void onStartCategoryChanged() {} + public void onAvailableFunctionsChanged() {} public void onSettingsError(String msg, Throwable e) {} } @@ -283,16 +308,28 @@ public class PGFWrapper { listener.onInputLanguageChanged(); } } - + protected void fireOutputLanguageChanged() { for (SettingsListener listener : listeners) { listener.onOutputLanguageChanged(); } } - protected void fireCatChanged() { + protected void fireAvailableCategoriesChanged() { for (SettingsListener listener : listeners) { - listener.onCatChanged(); + listener.onAvailableCategoriesChanged(); + } + } + + protected void fireStartCategoryChanged() { + for (SettingsListener listener : listeners) { + listener.onStartCategoryChanged(); + } + } + + protected void fireAvailableFunctionsChanged() { + for (SettingsListener listener : listeners) { + listener.onAvailableFunctionsChanged(); } } diff --git a/src/server/gwt/src/se/chalmers/cs/gf/gwt/client/SettingsPanel.java b/src/server/gwt/src/se/chalmers/cs/gf/gwt/client/SettingsPanel.java index 43a9b915e..141631c1d 100644 --- a/src/server/gwt/src/se/chalmers/cs/gf/gwt/client/SettingsPanel.java +++ b/src/server/gwt/src/se/chalmers/cs/gf/gwt/client/SettingsPanel.java @@ -108,7 +108,9 @@ public class SettingsPanel extends Composite { toLangBox.setSelectedValue(pgf.getOutputLanguage()); } } - public void onCatChanged() { } + public void onAvailableCategoriesChanged() { } + public void onStartCategoryChanged() { } + public void onAvailableFunctionsChanged() { } public void onSettingsError(String msg, Throwable e) { } } diff --git a/src/server/gwt/src/se/chalmers/cs/gf/gwt/client/TranslateApp.java b/src/server/gwt/src/se/chalmers/cs/gf/gwt/client/TranslateApp.java index 14aa2da2d..46f6329a4 100644 --- a/src/server/gwt/src/se/chalmers/cs/gf/gwt/client/TranslateApp.java +++ b/src/server/gwt/src/se/chalmers/cs/gf/gwt/client/TranslateApp.java @@ -300,9 +300,13 @@ public class TranslateApp implements EntryPoint { public void onOutputLanguageChanged() { update(); } - public void onCatChanged() { + public void onAvailableCategoriesChanged() { + } + public void onStartCategoryChanged() { update(); } + public void onAvailableFunctionsChanged() { + } public void onSettingsError(String msg, Throwable e) { showError(msg,e); }