forked from GitHub/gf-core
GWT lib and translator: added support for multiple pgf files.
This commit is contained in:
@@ -12,6 +12,8 @@ public class CompletionOracle extends SuggestOracle {
|
|||||||
|
|
||||||
private PGF pgf;
|
private PGF pgf;
|
||||||
|
|
||||||
|
private String pgfName;
|
||||||
|
|
||||||
private ErrorHandler errorHandler;
|
private ErrorHandler errorHandler;
|
||||||
|
|
||||||
private List<String> inputLangs = null;
|
private List<String> inputLangs = null;
|
||||||
@@ -32,6 +34,14 @@ public class CompletionOracle extends SuggestOracle {
|
|||||||
this.errorHandler = errorHandler;
|
this.errorHandler = errorHandler;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getGrammarName() {
|
||||||
|
return pgfName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setGrammarName(String pgfName) {
|
||||||
|
this.pgfName = pgfName;
|
||||||
|
}
|
||||||
|
|
||||||
public void setInputLangs(List<String> inputLangs) {
|
public void setInputLangs(List<String> inputLangs) {
|
||||||
this.inputLangs = inputLangs;
|
this.inputLangs = inputLangs;
|
||||||
this.oldQuery = null;
|
this.oldQuery = null;
|
||||||
@@ -109,7 +119,7 @@ public class CompletionOracle extends SuggestOracle {
|
|||||||
// hack: first report no completions, to hide suggestions until we get the new completions
|
// hack: first report no completions, to hide suggestions until we get the new completions
|
||||||
callback.onSuggestionsReady(request, new SuggestOracle.Response(Collections.<CompletionSuggestion>emptyList()));
|
callback.onSuggestionsReady(request, new SuggestOracle.Response(Collections.<CompletionSuggestion>emptyList()));
|
||||||
|
|
||||||
jsonRequest = pgf.complete(request.getQuery(), getInputLangs(), null, LIMIT_SCALE_FACTOR * request.getLimit(),
|
jsonRequest = pgf.complete(getGrammarName(), request.getQuery(), getInputLangs(), null, LIMIT_SCALE_FACTOR * request.getLimit(),
|
||||||
new PGF.CompleteCallback() {
|
new PGF.CompleteCallback() {
|
||||||
public void onResult(PGF.Completions completions) {
|
public void onResult(PGF.Completions completions) {
|
||||||
List<CompletionSuggestion> suggestions = new ArrayList<CompletionSuggestion>();
|
List<CompletionSuggestion> suggestions = new ArrayList<CompletionSuggestion>();
|
||||||
|
|||||||
@@ -0,0 +1,26 @@
|
|||||||
|
package se.chalmers.cs.gf.gwt.client;
|
||||||
|
|
||||||
|
import com.google.gwt.user.client.ui.ListBox;
|
||||||
|
|
||||||
|
public class GrammarBox extends ListBox {
|
||||||
|
|
||||||
|
public GrammarBox() {
|
||||||
|
setEnabled(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setGrammarNames(PGF.GrammarNames grammarNames) {
|
||||||
|
for (PGF.GrammarName grammarName : grammarNames.iterable()) {
|
||||||
|
addItem(grammarName.getName());
|
||||||
|
}
|
||||||
|
if (!grammarNames.isEmpty()) {
|
||||||
|
setSelectedIndex(0);
|
||||||
|
setEnabled(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getSelectedGrammar() {
|
||||||
|
int i = getSelectedIndex();
|
||||||
|
return i == -1 ? null : getValue(i);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -2,21 +2,23 @@ package se.chalmers.cs.gf.gwt.client;
|
|||||||
|
|
||||||
public class InputLanguageBox extends MultiListBox {
|
public class InputLanguageBox extends MultiListBox {
|
||||||
|
|
||||||
public InputLanguageBox() {
|
public InputLanguageBox() {
|
||||||
setEnabled(false);
|
setEnabled(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setGrammar(PGF.Grammar grammar) {
|
public void setGrammar(PGF.Grammar grammar) {
|
||||||
for (PGF.Language l : grammar.getLanguages().iterable()) {
|
clear();
|
||||||
String name = l.getName();
|
addItem("Any language", "");
|
||||||
if (l.canParse()) {
|
for (PGF.Language l : grammar.getLanguages().iterable()) {
|
||||||
addItem(name);
|
String name = l.getName();
|
||||||
if (name.equals(grammar.getUserLanguage())) {
|
if (l.canParse()) {
|
||||||
setSelectedIndex(getItemCount()-1);
|
addItem(name);
|
||||||
}
|
if (name.equals(grammar.getUserLanguage())) {
|
||||||
}
|
setSelectedIndex(getItemCount()-1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
setEnabled(true);
|
||||||
}
|
}
|
||||||
setEnabled(true);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -2,15 +2,17 @@ package se.chalmers.cs.gf.gwt.client;
|
|||||||
|
|
||||||
public class OutputLanguageBox extends MultiListBox {
|
public class OutputLanguageBox extends MultiListBox {
|
||||||
|
|
||||||
public OutputLanguageBox() {
|
public OutputLanguageBox() {
|
||||||
setEnabled(false);
|
setEnabled(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setGrammar(PGF.Grammar grammar) {
|
public void setGrammar(PGF.Grammar grammar) {
|
||||||
for (PGF.Language l : grammar.getLanguages().iterable()) {
|
clear();
|
||||||
addItem(l.getName());
|
addItem("All languages", "");
|
||||||
|
for (PGF.Language l : grammar.getLanguages().iterable()) {
|
||||||
|
addItem(l.getName());
|
||||||
|
}
|
||||||
|
setEnabled(true);
|
||||||
}
|
}
|
||||||
setEnabled(true);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -10,17 +10,33 @@ import java.util.ArrayList;
|
|||||||
public class PGF {
|
public class PGF {
|
||||||
|
|
||||||
private String baseURL;
|
private String baseURL;
|
||||||
private String pgfName;
|
|
||||||
|
|
||||||
public PGF (String baseURL, String pgfName) {
|
public PGF (String baseURL) {
|
||||||
this.baseURL = baseURL;
|
this.baseURL = baseURL;
|
||||||
this.pgfName = pgfName;
|
}
|
||||||
|
|
||||||
|
/* List grammars */
|
||||||
|
|
||||||
|
public JSONRequest listGrammars (final GrammarNamesCallback callback) {
|
||||||
|
return JSONRequestBuilder.sendRequest(baseURL + "/", null, callback);
|
||||||
|
}
|
||||||
|
|
||||||
|
public interface GrammarNamesCallback extends JSONCallback<GrammarNames> { }
|
||||||
|
|
||||||
|
public static class GrammarNames extends IterableJsArray<GrammarName> {
|
||||||
|
protected GrammarNames() { }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static class GrammarName extends JavaScriptObject {
|
||||||
|
protected GrammarName() { }
|
||||||
|
|
||||||
|
public final native String getName() /*-{ return this.name; }-*/;
|
||||||
|
}
|
||||||
|
|
||||||
/* Grammar */
|
/* Grammar */
|
||||||
|
|
||||||
public JSONRequest grammar (final GrammarCallback callback) {
|
public JSONRequest grammar (String pgfName, final GrammarCallback callback) {
|
||||||
return sendRequest("grammar", null, callback);
|
return sendGrammarRequest(pgfName, "grammar", null, callback);
|
||||||
}
|
}
|
||||||
|
|
||||||
public interface GrammarCallback extends JSONCallback<Grammar> { }
|
public interface GrammarCallback extends JSONCallback<Grammar> { }
|
||||||
@@ -55,7 +71,7 @@ public class PGF {
|
|||||||
|
|
||||||
/* Translation */
|
/* Translation */
|
||||||
|
|
||||||
public JSONRequest translate (String input, List<String> fromLangs, String cat, List<String> toLangs,
|
public JSONRequest translate (String pgfName, String input, List<String> fromLangs, String cat, List<String> toLangs,
|
||||||
final TranslateCallback callback) {
|
final TranslateCallback callback) {
|
||||||
List<Arg> args = new ArrayList<Arg>();
|
List<Arg> args = new ArrayList<Arg>();
|
||||||
args.add(new Arg("input", input));
|
args.add(new Arg("input", input));
|
||||||
@@ -70,7 +86,7 @@ public class PGF {
|
|||||||
args.add(new Arg("to", to));
|
args.add(new Arg("to", to));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return sendRequest("translate", args, callback);
|
return sendGrammarRequest(pgfName, "translate", args, callback);
|
||||||
}
|
}
|
||||||
|
|
||||||
public interface TranslateCallback extends JSONCallback<Translations> { }
|
public interface TranslateCallback extends JSONCallback<Translations> { }
|
||||||
@@ -89,7 +105,7 @@ public class PGF {
|
|||||||
|
|
||||||
/* Completion */
|
/* Completion */
|
||||||
|
|
||||||
public JSONRequest complete (String input, List<String> fromLangs, String cat, int limit, final CompleteCallback callback) {
|
public JSONRequest complete (String pgfName, String input, List<String> fromLangs, String cat, int limit, final CompleteCallback callback) {
|
||||||
List<Arg> args = new ArrayList<Arg>();
|
List<Arg> args = new ArrayList<Arg>();
|
||||||
args.add(new Arg("input", input));
|
args.add(new Arg("input", input));
|
||||||
if (fromLangs != null) {
|
if (fromLangs != null) {
|
||||||
@@ -99,7 +115,7 @@ public class PGF {
|
|||||||
}
|
}
|
||||||
args.add(new Arg("cat", cat));
|
args.add(new Arg("cat", cat));
|
||||||
args.add(new Arg("limit", limit));
|
args.add(new Arg("limit", limit));
|
||||||
return sendRequest("complete", args, callback);
|
return sendGrammarRequest(pgfName, "complete", args, callback);
|
||||||
}
|
}
|
||||||
|
|
||||||
public interface CompleteCallback extends JSONCallback<Completions> { }
|
public interface CompleteCallback extends JSONCallback<Completions> { }
|
||||||
@@ -117,7 +133,7 @@ public class PGF {
|
|||||||
|
|
||||||
/* Parsing */
|
/* Parsing */
|
||||||
|
|
||||||
public JSONRequest parse (String input, List<String> fromLangs, String cat, final ParseCallback callback) {
|
public JSONRequest parse (String pgfName, String input, List<String> fromLangs, String cat, final ParseCallback callback) {
|
||||||
List<Arg> args = new ArrayList<Arg>();
|
List<Arg> args = new ArrayList<Arg>();
|
||||||
args.add(new Arg("input", input));
|
args.add(new Arg("input", input));
|
||||||
if (fromLangs != null) {
|
if (fromLangs != null) {
|
||||||
@@ -126,7 +142,7 @@ public class PGF {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
args.add(new Arg("cat", cat));
|
args.add(new Arg("cat", cat));
|
||||||
return sendRequest("parse", args, callback);
|
return sendGrammarRequest(pgfName, "parse", args, callback);
|
||||||
}
|
}
|
||||||
|
|
||||||
public interface ParseCallback extends JSONCallback<ParseResults> { }
|
public interface ParseCallback extends JSONCallback<ParseResults> { }
|
||||||
@@ -144,7 +160,7 @@ public class PGF {
|
|||||||
|
|
||||||
/* Common */
|
/* Common */
|
||||||
|
|
||||||
public <T extends JavaScriptObject> JSONRequest sendRequest(String resource, List<Arg> args, final JSONCallback<T> callback) {
|
public <T extends JavaScriptObject> JSONRequest sendGrammarRequest(String pgfName, String resource, List<Arg> args, final JSONCallback<T> callback) {
|
||||||
return JSONRequestBuilder.sendRequest(baseURL + "/" + pgfName + "/" + resource, args, callback);
|
return JSONRequestBuilder.sendRequest(baseURL + "/" + pgfName + "/" + resource, args, callback);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,36 @@
|
|||||||
|
package se.chalmers.cs.gf.gwt.client;
|
||||||
|
|
||||||
|
import com.google.gwt.core.client.GWT;
|
||||||
|
import com.google.gwt.user.client.ui.Label;
|
||||||
|
import com.google.gwt.user.client.ui.PopupPanel;
|
||||||
|
|
||||||
|
public class StatusPopup extends PopupPanel {
|
||||||
|
|
||||||
|
private Label label = new Label();
|
||||||
|
|
||||||
|
public StatusPopup () {
|
||||||
|
super(true, true);
|
||||||
|
label = new Label();
|
||||||
|
add(label);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setStatus(String msg) {
|
||||||
|
removeStyleDependentName("error");
|
||||||
|
label.setText(msg);
|
||||||
|
center();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void showError(String msg, Throwable e) {
|
||||||
|
GWT.log(msg, e);
|
||||||
|
addStyleDependentName("error");
|
||||||
|
label.setText(msg);
|
||||||
|
center();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void clearStatus() {
|
||||||
|
removeStyleDependentName("error");
|
||||||
|
label.setText("");
|
||||||
|
hide();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -5,175 +5,212 @@ import com.google.gwt.user.client.ui.Button;
|
|||||||
import com.google.gwt.user.client.ui.ChangeListener;
|
import com.google.gwt.user.client.ui.ChangeListener;
|
||||||
import com.google.gwt.user.client.ui.ClickListener;
|
import com.google.gwt.user.client.ui.ClickListener;
|
||||||
import com.google.gwt.user.client.ui.HorizontalPanel;
|
import com.google.gwt.user.client.ui.HorizontalPanel;
|
||||||
|
import com.google.gwt.user.client.ui.KeyboardListenerAdapter;
|
||||||
import com.google.gwt.user.client.ui.Label;
|
import com.google.gwt.user.client.ui.Label;
|
||||||
import com.google.gwt.user.client.ui.PopupPanel;
|
|
||||||
import com.google.gwt.user.client.ui.RootPanel;
|
import com.google.gwt.user.client.ui.RootPanel;
|
||||||
import com.google.gwt.user.client.ui.SuggestBox;
|
import com.google.gwt.user.client.ui.SuggestBox;
|
||||||
import com.google.gwt.user.client.ui.VerticalPanel;
|
import com.google.gwt.user.client.ui.VerticalPanel;
|
||||||
import com.google.gwt.user.client.ui.Widget;
|
import com.google.gwt.user.client.ui.Widget;
|
||||||
import com.google.gwt.user.client.ui.KeyboardListenerAdapter;
|
|
||||||
|
|
||||||
import com.google.gwt.core.client.GWT;
|
|
||||||
|
|
||||||
|
|
||||||
public class TranslateApp implements EntryPoint {
|
public class TranslateApp implements EntryPoint {
|
||||||
|
|
||||||
private static final String pgfBaseURL = "/pgf";
|
private static final String pgfBaseURL = "/pgf";
|
||||||
private static final String pgfName = "grammar.pgf";
|
|
||||||
|
|
||||||
private PGF pgf;
|
private PGF pgf;
|
||||||
|
|
||||||
private CompletionOracle oracle;
|
private CompletionOracle oracle;
|
||||||
private SuggestBox suggest;
|
private SuggestBox suggest;
|
||||||
private PGF.Grammar grammar;
|
private PGF.Grammar grammar;
|
||||||
private InputLanguageBox fromLangBox;
|
private GrammarBox grammarBox;
|
||||||
private OutputLanguageBox toLangBox;
|
private InputLanguageBox fromLangBox;
|
||||||
private Button translateButton;
|
private OutputLanguageBox toLangBox;
|
||||||
private VerticalPanel outputPanel;
|
private Button translateButton;
|
||||||
private PopupPanel statusPopup;
|
private VerticalPanel outputPanel;
|
||||||
private Label statusLabel;
|
private StatusPopup statusPopup;
|
||||||
|
|
||||||
private void addTranslation(String text, String toLang) {
|
//
|
||||||
Label l = new Label(text);
|
// Translation
|
||||||
l.addStyleName("my-translation");
|
//
|
||||||
PGF.Language lang = grammar.getLanguage(toLang);
|
|
||||||
if (lang != null) {
|
private void translate() {
|
||||||
l.getElement().setLang(lang.getLanguageCode());
|
outputPanel.clear();
|
||||||
|
setStatus("Translating...");
|
||||||
|
pgf.translate(getGrammarName(), suggest.getText(), fromLangBox.getSelectedValues(), null,
|
||||||
|
toLangBox.getSelectedValues(), new PGF.TranslateCallback() {
|
||||||
|
public void onResult (PGF.Translations translations) {
|
||||||
|
for (PGF.Translation t : translations.iterable()) {
|
||||||
|
Label l = new Label(t.getText());
|
||||||
|
l.addStyleName("my-translation");
|
||||||
|
PGF.Language lang = grammar.getLanguage(t.getTo());
|
||||||
|
if (lang != null) {
|
||||||
|
l.getElement().setLang(lang.getLanguageCode());
|
||||||
|
}
|
||||||
|
outputPanel.add(l);
|
||||||
|
}
|
||||||
|
clearStatus();
|
||||||
|
}
|
||||||
|
public void onError (Throwable e) {
|
||||||
|
showError("Translation failed", e);
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
outputPanel.add(l);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void translate() {
|
//
|
||||||
outputPanel.clear();
|
// Status stuff
|
||||||
setStatus("Translating...");
|
//
|
||||||
pgf.translate(suggest.getText(), fromLangBox.getSelectedValues(), null,
|
|
||||||
toLangBox.getSelectedValues(), new PGF.TranslateCallback() {
|
|
||||||
public void onResult (PGF.Translations translations) {
|
|
||||||
for (PGF.Translation t : translations.iterable()) {
|
|
||||||
addTranslation(t.getText(), t.getTo());
|
|
||||||
}
|
|
||||||
clearStatus();
|
|
||||||
}
|
|
||||||
public void onError (Throwable e) {
|
|
||||||
showError("Translation failed", e);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
private void updateLangs() {
|
private void setStatus(String msg) {
|
||||||
oracle.setInputLangs(fromLangBox.getSelectedValues());
|
statusPopup.setStatus(msg);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setStatus(String msg) {
|
private void showError(String msg, Throwable e) {
|
||||||
statusLabel.setText(msg);
|
statusPopup.showError(msg, e);
|
||||||
statusPopup.center();
|
}
|
||||||
}
|
|
||||||
|
|
||||||
private void showError(String msg, Throwable e) {
|
private void clearStatus() {
|
||||||
GWT.log(msg, e);
|
statusPopup.clearStatus();
|
||||||
setStatus(msg);
|
}
|
||||||
}
|
|
||||||
|
|
||||||
private void clearStatus() {
|
//
|
||||||
statusPopup.hide();
|
// Grammars
|
||||||
}
|
//
|
||||||
|
|
||||||
private void setGrammar(PGF.Grammar grammar) {
|
private String getGrammarName() {
|
||||||
this.grammar = grammar;
|
return grammarBox.getSelectedGrammar();
|
||||||
|
}
|
||||||
|
|
||||||
fromLangBox.setGrammar(grammar);
|
private void updateAvailableGrammars() {
|
||||||
toLangBox.setGrammar(grammar);
|
pgf.listGrammars(new PGF.GrammarNamesCallback() {
|
||||||
|
public void onResult(PGF.GrammarNames grammarNames) {
|
||||||
|
grammarBox.setGrammarNames(grammarNames);
|
||||||
|
// setGrammarNames() picks the first grammar automatically
|
||||||
|
updateSelectedGrammar();
|
||||||
|
}
|
||||||
|
|
||||||
updateLangs();
|
public void onError (Throwable e) {
|
||||||
clearStatus();
|
showError("Error getting grammar list", e);
|
||||||
translateButton.setEnabled(true);
|
}
|
||||||
}
|
});
|
||||||
|
}
|
||||||
|
|
||||||
private void createTranslationUI() {
|
private void updateSelectedGrammar() {
|
||||||
|
oracle.setGrammarName(getGrammarName());
|
||||||
|
updateAvailableLanguages();
|
||||||
|
}
|
||||||
|
|
||||||
oracle = new CompletionOracle(pgf, new CompletionOracle.ErrorHandler() {
|
//
|
||||||
public void onError(Throwable e) {
|
// Languages
|
||||||
showError("Completion failed", e);
|
//
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
suggest = new SuggestBox(oracle);
|
private void updateAvailableLanguages() {
|
||||||
suggest.addKeyboardListener(new KeyboardListenerAdapter() {
|
pgf.grammar(getGrammarName(), new PGF.GrammarCallback() {
|
||||||
public void onKeyUp (Widget sender, char keyCode, int modifiers) {
|
public void onResult(PGF.Grammar grammar) {
|
||||||
if (keyCode == KEY_ENTER) {
|
TranslateApp.this.grammar = grammar;
|
||||||
translate();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
fromLangBox = new InputLanguageBox();
|
fromLangBox.setGrammar(grammar);
|
||||||
fromLangBox.addItem("Any language", "");
|
toLangBox.setGrammar(grammar);
|
||||||
fromLangBox.addChangeListener(new ChangeListener() {
|
|
||||||
public void onChange(Widget sender) {
|
|
||||||
updateLangs();
|
|
||||||
translate();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
toLangBox = new OutputLanguageBox();
|
updateSelectedLanguages();
|
||||||
toLangBox.addItem("All languages", "");
|
clearStatus();
|
||||||
toLangBox.addChangeListener(new ChangeListener() {
|
translateButton.setEnabled(true);
|
||||||
public void onChange(Widget sender) {
|
}
|
||||||
updateLangs();
|
|
||||||
translate();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
translateButton = new Button("Translate");
|
public void onError (Throwable e) {
|
||||||
translateButton.setEnabled(false);
|
showError("Error getting language information", e);
|
||||||
translateButton.addClickListener(new ClickListener() {
|
}
|
||||||
public void onClick(Widget sender) {
|
});
|
||||||
translate();
|
}
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
HorizontalPanel settingsPanel = new HorizontalPanel();
|
private void updateSelectedLanguages() {
|
||||||
settingsPanel.addStyleName("my-settingsPanel");
|
oracle.setInputLangs(fromLangBox.getSelectedValues());
|
||||||
settingsPanel.setVerticalAlignment(HorizontalPanel.ALIGN_MIDDLE);
|
translate();
|
||||||
settingsPanel.add(new Label("From:"));
|
}
|
||||||
settingsPanel.add(fromLangBox);
|
|
||||||
settingsPanel.add(new Label("To:"));
|
|
||||||
settingsPanel.add(toLangBox);
|
|
||||||
settingsPanel.add(translateButton);
|
|
||||||
|
|
||||||
outputPanel = new VerticalPanel();
|
//
|
||||||
outputPanel.addStyleName("my-translations");
|
// GUI
|
||||||
|
//
|
||||||
|
|
||||||
VerticalPanel vPanel = new VerticalPanel();
|
private void createTranslationUI() {
|
||||||
vPanel.setWidth("100%");
|
|
||||||
vPanel.setHorizontalAlignment(VerticalPanel.ALIGN_CENTER);
|
|
||||||
vPanel.add(suggest);
|
|
||||||
vPanel.add(settingsPanel);
|
|
||||||
vPanel.add(outputPanel);
|
|
||||||
|
|
||||||
RootPanel.get().add(vPanel);
|
statusPopup = new StatusPopup();
|
||||||
|
setStatus("Loading...");
|
||||||
|
|
||||||
}
|
oracle = new CompletionOracle(pgf, new CompletionOracle.ErrorHandler() {
|
||||||
|
public void onError(Throwable e) {
|
||||||
|
showError("Completion failed", e);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
public void onModuleLoad() {
|
suggest = new SuggestBox(oracle);
|
||||||
statusLabel = new Label("Loading...");
|
suggest.addKeyboardListener(new KeyboardListenerAdapter() {
|
||||||
statusPopup = new PopupPanel(true, true);
|
public void onKeyUp (Widget sender, char keyCode, int modifiers) {
|
||||||
statusPopup.add(statusLabel);
|
if (keyCode == KEY_ENTER) {
|
||||||
statusPopup.center();
|
translate();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
pgf = new PGF(pgfBaseURL, pgfName);
|
grammarBox = new GrammarBox();
|
||||||
|
grammarBox.addChangeListener(new ChangeListener() {
|
||||||
|
public void onChange(Widget sender) {
|
||||||
|
updateSelectedGrammar();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
createTranslationUI();
|
ChangeListener languageChangeListener = new ChangeListener() {
|
||||||
|
public void onChange(Widget sender) {
|
||||||
|
updateSelectedLanguages();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
pgf.grammar(new PGF.GrammarCallback() {
|
fromLangBox = new InputLanguageBox();
|
||||||
public void onResult(PGF.Grammar grammar) {
|
fromLangBox.addChangeListener(languageChangeListener);
|
||||||
setGrammar(grammar);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void onError (Throwable e) {
|
toLangBox = new OutputLanguageBox();
|
||||||
showError("Error getting language information", e);
|
toLangBox.addChangeListener(languageChangeListener);
|
||||||
}
|
|
||||||
});
|
translateButton = new Button("Translate");
|
||||||
}
|
translateButton.setEnabled(false);
|
||||||
|
translateButton.addClickListener(new ClickListener() {
|
||||||
|
public void onClick(Widget sender) {
|
||||||
|
translate();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
HorizontalPanel settingsPanel = new HorizontalPanel();
|
||||||
|
settingsPanel.addStyleName("my-settingsPanel");
|
||||||
|
settingsPanel.setVerticalAlignment(HorizontalPanel.ALIGN_MIDDLE);
|
||||||
|
settingsPanel.add(new Label("Grammar:"));
|
||||||
|
settingsPanel.add(grammarBox);
|
||||||
|
settingsPanel.add(new Label("From:"));
|
||||||
|
settingsPanel.add(fromLangBox);
|
||||||
|
settingsPanel.add(new Label("To:"));
|
||||||
|
settingsPanel.add(toLangBox);
|
||||||
|
settingsPanel.add(translateButton);
|
||||||
|
|
||||||
|
outputPanel = new VerticalPanel();
|
||||||
|
outputPanel.addStyleName("my-translations");
|
||||||
|
|
||||||
|
VerticalPanel vPanel = new VerticalPanel();
|
||||||
|
vPanel.setWidth("100%");
|
||||||
|
vPanel.setHorizontalAlignment(VerticalPanel.ALIGN_CENTER);
|
||||||
|
vPanel.add(suggest);
|
||||||
|
vPanel.add(settingsPanel);
|
||||||
|
vPanel.add(outputPanel);
|
||||||
|
|
||||||
|
RootPanel.get().add(vPanel);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// Initialization
|
||||||
|
//
|
||||||
|
|
||||||
|
public void onModuleLoad() {
|
||||||
|
pgf = new PGF(pgfBaseURL);
|
||||||
|
createTranslationUI();
|
||||||
|
updateAvailableGrammars();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user