diff options
| author | bjorn <bjorn@bringert.net> | 2008-09-22 10:11:15 +0000 |
|---|---|---|
| committer | bjorn <bjorn@bringert.net> | 2008-09-22 10:11:15 +0000 |
| commit | 4862018f140a1bdcc7961d445ed9aa92facd742f (patch) | |
| tree | fcc488bda8e7d08c605e98e6d0606b6290910f54 | |
| parent | 0031276944d198cb79df79fd94d55c590cc4202f (diff) | |
GWT: somewhat nicer iterable() hack.
| -rw-r--r-- | src/server/gwt-client/src/se/chalmers/cs/gf/gwt_translate/client/GF.java | 49 | ||||
| -rw-r--r-- | src/server/gwt-client/src/se/chalmers/cs/gf/gwt_translate/client/Translate.java | 4 |
2 files changed, 28 insertions, 25 deletions
diff --git a/src/server/gwt-client/src/se/chalmers/cs/gf/gwt_translate/client/GF.java b/src/server/gwt-client/src/se/chalmers/cs/gf/gwt_translate/client/GF.java index 774b89082..9fd23f59c 100644 --- a/src/server/gwt-client/src/se/chalmers/cs/gf/gwt_translate/client/GF.java +++ b/src/server/gwt-client/src/se/chalmers/cs/gf/gwt_translate/client/GF.java @@ -28,27 +28,30 @@ public class GF { public void onError (Throwable e) ; } - public static <T extends JavaScriptObject> Iterable<T> iterable(final JsArray<T> array) { - return new Iterable<T>() { - public Iterator<T> iterator() { - return new Iterator<T>() { - int i = 0; - - public boolean hasNext() { - return i < array.length(); - } - public T next() { - if (!hasNext()) { - throw new NoSuchElementException(); + public static class IterableJsArray<T extends JavaScriptObject> extends JsArray<T> { + protected IterableJsArray() {} + + public final Iterable<T> iterable() { + return new Iterable<T>() { + public Iterator<T> iterator() { + return new Iterator<T>() { + private int i = 0; + public boolean hasNext() { + return i < length(); } - return array.get(i++); - } - public void remove() { - throw new UnsupportedOperationException(); - } - }; - } - }; + public T next() { + if (!hasNext()) { + throw new NoSuchElementException(); + } + return get(i++); + } + public void remove() { + throw new UnsupportedOperationException(); + } + }; + } + }; + } } /* Grammar */ @@ -66,7 +69,7 @@ public class GF { public final native String getUserLanguage() /*-{ return this.userLanguage; }-*/; - public final native JsArray<Language> getLanguages() /*-{ return this.languages; }-*/; + public final native IterableJsArray<Language> getLanguages() /*-{ return this.languages; }-*/; public final Language getLanguage(String name) { int c = getLanguages().length(); @@ -109,7 +112,7 @@ public class GF { public interface TranslateCallback extends GFCallback<Translations> { } - public static class Translations extends JsArray<Translation> { + public static class Translations extends IterableJsArray<Translation> { protected Translations() { } } @@ -138,7 +141,7 @@ public class GF { public interface CompleteCallback extends GFCallback<Completions> { } - public static class Completions extends JsArray<Translation> { + public static class Completions extends IterableJsArray<Translation> { protected Completions() { } } diff --git a/src/server/gwt-client/src/se/chalmers/cs/gf/gwt_translate/client/Translate.java b/src/server/gwt-client/src/se/chalmers/cs/gf/gwt_translate/client/Translate.java index 69b953fba..2fb9ca962 100644 --- a/src/server/gwt-client/src/se/chalmers/cs/gf/gwt_translate/client/Translate.java +++ b/src/server/gwt-client/src/se/chalmers/cs/gf/gwt_translate/client/Translate.java @@ -60,7 +60,7 @@ public class Translate implements EntryPoint { gf.translate(suggest.getText(), listBoxSelection(fromLangBox), null, listBoxSelection(toLangBox), new GF.TranslateCallback() { public void onResult (GF.Translations translations) { - for (GF.Translation t : GF.iterable(translations)) { + for (GF.Translation t : translations.iterable()) { addTranslation(t.getText(), t.getTo()); } clearStatus(); @@ -103,7 +103,7 @@ public class Translate implements EntryPoint { private void setGrammar(GF.Grammar grammar) { this.grammar = grammar; - for (GF.Language l :GF.iterable(grammar.getLanguages())) { + for (GF.Language l : grammar.getLanguages().iterable()) { String name = l.getName(); if (l.canParse()) { fromLangBox.addItem(name); |
