From 3d11bf48a395ce46c2e4e47978e188bb5acb7ccb Mon Sep 17 00:00:00 2001 From: bjorn Date: Mon, 22 Sep 2008 10:11:15 +0000 Subject: [PATCH] GWT: somewhat nicer iterable() hack. --- .../cs/gf/gwt_translate/client/GF.java | 47 ++++++++++--------- .../cs/gf/gwt_translate/client/Translate.java | 4 +- 2 files changed, 27 insertions(+), 24 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 Iterable iterable(final JsArray array) { - return new Iterable() { - public Iterator iterator() { - return new Iterator() { - int i = 0; + public static class IterableJsArray extends JsArray { + protected IterableJsArray() {} - public boolean hasNext() { - return i < array.length(); - } - public T next() { - if (!hasNext()) { - throw new NoSuchElementException(); + public final Iterable iterable() { + return new Iterable() { + public Iterator iterator() { + return new Iterator() { + 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 getLanguages() /*-{ return this.languages; }-*/; + public final native IterableJsArray 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 { } - public static class Translations extends JsArray { + public static class Translations extends IterableJsArray { protected Translations() { } } @@ -138,7 +141,7 @@ public class GF { public interface CompleteCallback extends GFCallback { } - public static class Completions extends JsArray { + public static class Completions extends IterableJsArray { 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);