summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorbjorn <bjorn@bringert.net>2008-11-04 14:12:37 +0000
committerbjorn <bjorn@bringert.net>2008-11-04 14:12:37 +0000
commitcf079aa6e4c3a102aa2873e1b514ce7592e86e0d (patch)
treee9611ef76235a7432c350ce40892570d172fa94a
parent13042d7dac3fdea8d3cb637782e51cf41e4d676e (diff)
Get Fridge to compile with changes in Translate.
-rw-r--r--src/server/gwt/src/se/chalmers/cs/gf/gwt/client/FridgeApp.java196
-rw-r--r--src/server/gwt/src/se/chalmers/cs/gf/gwt/client/Magnet.java66
-rw-r--r--src/server/gwt/src/se/chalmers/cs/gf/gwt/client/UsedMagnet.java20
-rw-r--r--src/server/gwt/src/se/chalmers/cs/gf/gwt/public/Fridge.css2
4 files changed, 131 insertions, 153 deletions
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 b2dc0a6c7..fde06f978 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
@@ -1,17 +1,16 @@
package se.chalmers.cs.gf.gwt.client;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-
import com.google.gwt.core.client.EntryPoint;
+import com.google.gwt.core.client.GWT;
+import com.google.gwt.user.client.History;
+import com.google.gwt.user.client.HistoryListener;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.ClickListener;
import com.google.gwt.user.client.ui.FlowPanel;
import com.google.gwt.user.client.ui.HorizontalPanel;
+import com.google.gwt.user.client.ui.Hyperlink;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.Panel;
-import com.google.gwt.user.client.ui.PushButton;
import com.google.gwt.user.client.ui.RootPanel;
import com.google.gwt.user.client.ui.VerticalPanel;
import com.google.gwt.user.client.ui.Widget;
@@ -24,7 +23,7 @@ public class FridgeApp implements EntryPoint {
private PGF pgf;
private FlowPanel textPanel;
- private Panel bagPanel;
+ private FlowPanel bagPanel;
private SettingsPanel settingsPanel;
private VerticalPanel outputPanel;
private StatusPopup statusPopup;
@@ -37,19 +36,14 @@ public class FridgeApp implements EntryPoint {
outputPanel.clear();
setStatus("Translating...");
pgf.translate(settingsPanel.getGrammarName(),
- getText(),
- settingsPanel.getInputLanguages(), null,
- settingsPanel.getOutputLanguages(),
- new PGF.TranslateCallback() {
+ getText(),
+ settingsPanel.getInputLanguage(), null,
+ settingsPanel.getOutputLanguage(),
+ new PGF.TranslateCallback() {
public void onResult (PGF.Translations translations) {
for (final PGF.Translation t : translations.iterable()) {
- PushButton l = new PushButton(t.getText());
+ Hyperlink l = new Hyperlink(t.getText(), t.getTo() + "/" + t.getText());
l.addStyleName("my-translation");
- l.addClickListener(new ClickListener() {
- public void onClick(Widget sender) {
- setText(t.getTo(), t.getText());
- }
- });
PGF.Language lang = settingsPanel.getGrammar().getLanguage(t.getTo());
if (lang != null) {
l.getElement().setLang(lang.getLanguageCode());
@@ -63,22 +57,52 @@ public class FridgeApp implements EntryPoint {
}
});
}
-
+
//
- // Magnets
+ // Available words
//
-
- private List<String> getWords() {
- List<String> l = new ArrayList<String>();
- for (Widget w : textPanel) {
- l.add(((Magnet)w).getText());
- }
- return l;
+
+ private void updateBag () {
+ updateBag("");
}
-
+
+ private void updateBag (String prefix) {
+ bagPanel.clear();
+ int limit = 100;
+ pgf.complete(settingsPanel.getGrammarName(),
+ getText() + " " + prefix,
+ settingsPanel.getInputLanguage(), null,
+ limit, new PGF.CompleteCallback() {
+ public void onResult(PGF.Completions completions) {
+ for (PGF.Completion completion : completions.iterable()) {
+ String text = completion.getText();
+ if (!completion.getText().equals(getText() + " ")) {
+ String[] words = text.split("\\s+");
+ String word = (words.length > 0) ? words[words.length - 1] : "";
+ String token = /* settingsPanel.getGrammarName() + "/" + */ completion.getFrom() + "/" + text;
+ Hyperlink magnet = new Hyperlink(word, token);
+ magnet.addStyleName("my-Magnet");
+ bagPanel.add(magnet);
+ }
+ }
+ if (bagPanel.getWidgetCount() == 0) {
+ bagPanel.add(new Label("<empty>"));
+ }
+ }
+ public void onError(Throwable e) {
+ showError("Error getting completions.", e);
+ }
+ });
+ }
+
+ //
+ // Current text
+ //
+
private String getText () {
StringBuilder sb = new StringBuilder();
- for (String word : getWords()) {
+ for (Widget w : textPanel) {
+ String word = ((UsedMagnet)w).getText();
if (sb.length() > 0) {
sb.append(' ');
}
@@ -86,70 +110,75 @@ public class FridgeApp implements EntryPoint {
}
return sb.toString();
}
-
- private void setText (String language, String text) {
- settingsPanel.setInputLanguages(Collections.singletonList(language));
- textPanel.clear();
- for (String word : text.split("\\s+")) {
- textPanel.add(new Magnet(language, word));
+
+ private void clear() {
+ String token = settingsPanel.getInputLanguage() + "/" + "";
+ if (History.getToken().equals(token)) {
+ History.fireCurrentHistoryState();
+ } else {
+ History.newItem(token);
}
- updateBag();
}
- private ClickListener magnetClickListener = new ClickListener () {
- public void onClick(Widget sender) {
- Magnet magnet = (Magnet)sender;
- textPanel.add(new Magnet(magnet));
- update();
+ private HistoryListener historyListener = new HistoryListener() {
+ public void onHistoryChanged(String historyToken) {
+ GWT.log("History changed:" + historyToken, null);
+ String[] parts = historyToken.split("/");
+ GWT.log(parts.length + " parts", null);
+ if (parts.length == 0) {
+ setState("", "");
+ } else if (parts.length == 1) {
+ setState(parts[0], "");
+ } else if (parts.length == 2) {
+ setState(parts[0], parts[1]);
+ }
}
};
- private void updateBag () {
- bagPanel.clear();
- int limit = 100;
- pgf.complete(settingsPanel.getGrammarName(),
- getText() + " ",
- settingsPanel.getInputLanguages(), null,
- limit, new PGF.CompleteCallback() {
- public void onResult(PGF.Completions completions) {
- boolean empty = true;
- List<String> oldWords = getWords();
- for (PGF.Completion completion : completions.iterable()) {
- String[] newWords = completion.getText().split("\\s+");
- if (newWords.length == oldWords.size()+1) {
- String word = newWords[newWords.length-1];
- bagPanel.add(new Magnet(completion.getFrom(), word, magnetClickListener));
- empty = false;
+ /*
+
+ private static class State {
+ public String grammarName = "";
+ public String inputLanguage = "";
+ public String text = "";
+
+ public State (String token) {
+ String[] parts = token.split("/");
+ if (parts.length >= 1) {
+ this.grammarName = parts[0];
+ if (parts.length >= 2) {
+ this.inputLanguage = parts[1];
+ if (parts.length >= 3) {
+ this.text = parts[2];
}
}
- if (empty) {
- bagPanel.add(new Label("<empty>"));
- }
- }
- public void onError(Throwable e) {
- showError("Error getting completions.", e);
- }
- });
+ }
+ }
}
- public void update() {
+ private void setState(State state) {
+ settingsPanel.setInputLanguage(state.inputLanguage);
+ textPanel.clear();
+ for (String word : state.text.split("\\s+")) {
+ textPanel.add(new UsedMagnet(state.inputLanguage, word));
+ }
updateBag();
translate();
}
+
+ */
- public void clear() {
+ private void setState(String inputLang, String text) {
+ GWT.log("New text: \"" + text + "\"", null);
+ settingsPanel.setInputLanguage(inputLang);
textPanel.clear();
- update();
- }
-
- public void deleteLastMagnet() {
- int c = textPanel.getWidgetCount();
- if (c > 0) {
- textPanel.remove(c-1);
- update();
+ for (String word : text.split("\\s+")) {
+ textPanel.add(new UsedMagnet(inputLang, word));
}
+ updateBag();
+ translate();
}
-
+
//
// Status stuff
//
@@ -165,7 +194,7 @@ public class FridgeApp implements EntryPoint {
private void clearStatus() {
statusPopup.clearStatus();
}
-
+
//
// GUI
//
@@ -179,33 +208,27 @@ public class FridgeApp implements EntryPoint {
settingsPanel.addSettingsListener(new SettingsPanel.SettingsListener() {
public void grammarChanged(String pgfName) {
}
- public void languagesChanged(List<String> inputLangs, List<String> outputLangs) {
- update();
+ public void languagesChanged(String inputLang, String outputLang) {
+ clear();
}
public void settingsError(String msg, Throwable e) {
showError(msg,e);
}
});
-
+
Panel buttons = new HorizontalPanel();
buttons.add(new Button("Clear", new ClickListener () {
public void onClick(Widget sender) {
clear();
}
}));
- buttons.add(new Button("Delete last", new ClickListener () {
- public void onClick(Widget sender) {
- deleteLastMagnet();
- }
- }));
-
outputPanel = new VerticalPanel();
outputPanel.addStyleName("my-translations");
-
+
textPanel = new FlowPanel();
textPanel.setStylePrimaryName("my-TextPanel");
-
+
bagPanel = new FlowPanel();
bagPanel.setStylePrimaryName("my-BagPanel");
@@ -229,6 +252,7 @@ public class FridgeApp implements EntryPoint {
public void onModuleLoad() {
pgf = new PGF(pgfBaseURL);
createTranslationUI();
+ History.addHistoryListener(historyListener);
settingsPanel.updateAvailableGrammars();
}
diff --git a/src/server/gwt/src/se/chalmers/cs/gf/gwt/client/Magnet.java b/src/server/gwt/src/se/chalmers/cs/gf/gwt/client/Magnet.java
deleted file mode 100644
index 9f86a6747..000000000
--- a/src/server/gwt/src/se/chalmers/cs/gf/gwt/client/Magnet.java
+++ /dev/null
@@ -1,66 +0,0 @@
-package se.chalmers.cs.gf.gwt.client;
-
-import com.google.gwt.user.client.ui.ClickListener;
-import com.google.gwt.user.client.ui.ClickListenerCollection;
-import com.google.gwt.user.client.ui.Composite;
-import com.google.gwt.user.client.ui.PushButton;
-import com.google.gwt.user.client.ui.SourcesClickEvents;
-import com.google.gwt.user.client.ui.Widget;
-
-public class Magnet extends Composite implements SourcesClickEvents {
-
- private String language;
-
- private String text;
-
- private ClickListenerCollection clickListeners = null;
-
- public Magnet(Magnet magnet) {
- this(magnet.language, magnet.text);
- }
-
- public Magnet(String language, String text) {
- this(language, text, null);
- }
-
- public Magnet(String language, String text, ClickListener listener) {
- this.language = language;
- this.text = text;
- final PushButton button = new PushButton(text);
- button.addClickListener(new ClickListener() {
- public void onClick(Widget sender) {
- button.setFocus(false);
- fireClick();
- }
- });
- initWidget(button);
- addStyleName("my-Magnet");
- if (listener != null) {
- addClickListener(listener);
- }
- }
-
- public String getText() {
- return text;
- }
-
- public void addClickListener(ClickListener listener) {
- if (clickListeners == null) {
- clickListeners = new ClickListenerCollection();
- }
- clickListeners.add(listener);
- }
-
- public void removeClickListener(ClickListener listener) {
- if (clickListeners != null) {
- clickListeners.remove(listener);
- }
- }
-
- public void fireClick () {
- if (clickListeners != null) {
- clickListeners.fireClick(this);
- }
- }
-
-}
diff --git a/src/server/gwt/src/se/chalmers/cs/gf/gwt/client/UsedMagnet.java b/src/server/gwt/src/se/chalmers/cs/gf/gwt/client/UsedMagnet.java
new file mode 100644
index 000000000..1388ae811
--- /dev/null
+++ b/src/server/gwt/src/se/chalmers/cs/gf/gwt/client/UsedMagnet.java
@@ -0,0 +1,20 @@
+package se.chalmers.cs.gf.gwt.client;
+
+import com.google.gwt.user.client.ui.Composite;
+import com.google.gwt.user.client.ui.Label;
+
+public class UsedMagnet extends Composite {
+
+ private String word;
+
+ public UsedMagnet(String language, String word) {
+ this.word = word;
+ initWidget(new Label(word));
+ setStylePrimaryName("my-UsedMagnet");
+ }
+
+ public String getText() {
+ return word;
+ }
+
+}
diff --git a/src/server/gwt/src/se/chalmers/cs/gf/gwt/public/Fridge.css b/src/server/gwt/src/se/chalmers/cs/gf/gwt/public/Fridge.css
index 6d692d606..63bfcdbb3 100644
--- a/src/server/gwt/src/se/chalmers/cs/gf/gwt/public/Fridge.css
+++ b/src/server/gwt/src/se/chalmers/cs/gf/gwt/public/Fridge.css
@@ -14,7 +14,7 @@
overflow: auto;
}
-.my-Magnet {
+.my-Magnet, .my-UsedMagnet {
float: left;
margin: 0.3em;
padding: 0.3em;