Use Script class to create AutoSuggest ClientListener
The scripts are thereby shared within the session while the
ClientListeners are not.
diff --git a/bundles/org.eclipse.rap.addons.autosuggest/src/org/eclipse/rap/addons/autosuggest/AutoSuggest.java b/bundles/org.eclipse.rap.addons.autosuggest/src/org/eclipse/rap/addons/autosuggest/AutoSuggest.java
index 0bbab38..257e754 100644
--- a/bundles/org.eclipse.rap.addons.autosuggest/src/org/eclipse/rap/addons/autosuggest/AutoSuggest.java
+++ b/bundles/org.eclipse.rap.addons.autosuggest/src/org/eclipse/rap/addons/autosuggest/AutoSuggest.java
@@ -18,7 +18,8 @@
import org.eclipse.rap.addons.autosuggest.internal.ClientModelListener;
import org.eclipse.rap.addons.autosuggest.internal.Model;
import org.eclipse.rap.addons.autosuggest.internal.ModelListener;
-import org.eclipse.rap.addons.autosuggest.internal.resources.ResourceLoaderUtil;
+import org.eclipse.rap.addons.autosuggest.internal.resources.AutoSuggestScript;
+import org.eclipse.rap.addons.autosuggest.internal.resources.DataBindingScript;
import org.eclipse.rap.addons.dropdown.DropDown;
import org.eclipse.rap.clientscripting.ClientListener;
import org.eclipse.rap.clientscripting.WidgetDataWhiteList;
@@ -32,8 +33,6 @@
public class AutoSuggest {
private static final String EVENT_TYPE_SELECTION = "suggestionSelected";
- private final static String LISTENER_PREFIX
- = "org/eclipse/rap/addons/autosuggest/internal/resources/";
private static final String MODEL_ID_KEY
= "org.eclipse.rap.addons.autosuggest#Model";
@@ -149,16 +148,15 @@
}
private void attachClientListeners() {
- // TODO [tb] : share listener within session
- clientListener = createClientListener( "DataBinding.js" );
+ clientListener = new ClientListener( DataBindingScript.getInstance() );
text.addListener( SWT.Modify, clientListener );
text.addListener( SWT.Verify, clientListener );
dropDown.addListener( SWT.Show, clientListener );
dropDown.addListener( SWT.Hide, clientListener );
dropDown.addListener( SWT.Selection, clientListener );
dropDown.addListener( SWT.DefaultSelection, clientListener );
- model.addListener( "change", createModelListener( "DataBinding.js" ) );
- ClientModelListener modelListener = createModelListener( "AutoSuggest.js" );
+ model.addListener( "change", new ClientModelListener( DataBindingScript.getInstance() ) );
+ ClientModelListener modelListener = new ClientModelListener( AutoSuggestScript.getInstance() );
model.addListener( "change", modelListener );
model.addListener( "accept", modelListener );
}
@@ -171,12 +169,4 @@
text.setData( MODEL_ID_KEY, model.getId() );
}
- private static ClientListener createClientListener( String name ) {
- return new ClientListener( ResourceLoaderUtil.readTextContent( LISTENER_PREFIX + name ) );
- }
-
- private static ClientModelListener createModelListener( String name ) {
- return new ClientModelListener( ResourceLoaderUtil.readTextContent( LISTENER_PREFIX + name ) );
- }
-
}
diff --git a/bundles/org.eclipse.rap.addons.autosuggest/src/org/eclipse/rap/addons/autosuggest/internal/ClientModelListener.java b/bundles/org.eclipse.rap.addons.autosuggest/src/org/eclipse/rap/addons/autosuggest/internal/ClientModelListener.java
index ad739bf..84529b7 100644
--- a/bundles/org.eclipse.rap.addons.autosuggest/src/org/eclipse/rap/addons/autosuggest/internal/ClientModelListener.java
+++ b/bundles/org.eclipse.rap.addons.autosuggest/src/org/eclipse/rap/addons/autosuggest/internal/ClientModelListener.java
@@ -10,6 +10,7 @@
******************************************************************************/
package org.eclipse.rap.addons.autosuggest.internal;
+import org.eclipse.rap.clientscripting.Script;
import org.eclipse.rap.clientscripting.internal.ClientFunction;
import org.eclipse.rap.clientscripting.internal.ClientListenerBinding;
import org.eclipse.rap.json.JsonObject;
@@ -22,6 +23,10 @@
super( scriptCode );
}
+ public ClientModelListener( Script script ) {
+ super( script );
+ }
+
public void handleEvent( JsonObject argument ) { }
void addTo( Model model, String eventType ) {
diff --git a/bundles/org.eclipse.rap.addons.autosuggest/src/org/eclipse/rap/addons/autosuggest/internal/resources/AutoSuggestScript.java b/bundles/org.eclipse.rap.addons.autosuggest/src/org/eclipse/rap/addons/autosuggest/internal/resources/AutoSuggestScript.java
new file mode 100644
index 0000000..da77f34
--- /dev/null
+++ b/bundles/org.eclipse.rap.addons.autosuggest/src/org/eclipse/rap/addons/autosuggest/internal/resources/AutoSuggestScript.java
@@ -0,0 +1,32 @@
+/*******************************************************************************
+ * Copyright (c) 2013 EclipseSource and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * EclipseSource - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.rap.addons.autosuggest.internal.resources;
+
+import org.eclipse.rap.clientscripting.Script;
+import org.eclipse.rap.rwt.SingletonUtil;
+
+
+public class AutoSuggestScript extends Script {
+
+ public static AutoSuggestScript getInstance() {
+ return SingletonUtil.getSessionInstance( AutoSuggestScript.class );
+ }
+
+ private AutoSuggestScript() {
+ super( getText() );
+ }
+
+ private static String getText() {
+ String path = "org/eclipse/rap/addons/autosuggest/internal/resources/AutoSuggest.js";
+ return ResourceLoaderUtil.readTextContent( path );
+ }
+
+}
diff --git a/bundles/org.eclipse.rap.addons.autosuggest/src/org/eclipse/rap/addons/autosuggest/internal/resources/DataBindingScript.java b/bundles/org.eclipse.rap.addons.autosuggest/src/org/eclipse/rap/addons/autosuggest/internal/resources/DataBindingScript.java
new file mode 100644
index 0000000..f92a20d
--- /dev/null
+++ b/bundles/org.eclipse.rap.addons.autosuggest/src/org/eclipse/rap/addons/autosuggest/internal/resources/DataBindingScript.java
@@ -0,0 +1,32 @@
+/*******************************************************************************
+ * Copyright (c) 2013 EclipseSource and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * EclipseSource - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.rap.addons.autosuggest.internal.resources;
+
+import org.eclipse.rap.clientscripting.Script;
+import org.eclipse.rap.rwt.SingletonUtil;
+
+
+public class DataBindingScript extends Script {
+
+ public static DataBindingScript getInstance() {
+ return SingletonUtil.getSessionInstance( DataBindingScript.class );
+ }
+
+ private DataBindingScript() {
+ super( getText() );
+ }
+
+ private static String getText() {
+ String path = "org/eclipse/rap/addons/autosuggest/internal/resources/DataBinding.js";
+ return ResourceLoaderUtil.readTextContent( path );
+ }
+
+}