Allow AutoSuggest customization by extending AutoSuggestClientListener
This allows ClientScripting to discontinue the Script class
diff --git a/bundles/org.eclipse.rap.addons.autosuggest/META-INF/MANIFEST.MF b/bundles/org.eclipse.rap.addons.autosuggest/META-INF/MANIFEST.MF
index 385a380..c462895 100644
--- a/bundles/org.eclipse.rap.addons.autosuggest/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.rap.addons.autosuggest/META-INF/MANIFEST.MF
@@ -5,8 +5,7 @@
Bundle-Version: 0.1.0.qualifier
Bundle-Vendor: Eclipse.org - RAP Incubator
Bundle-RequiredExecutionEnvironment: J2SE-1.5
-Export-Package: org.eclipse.rap.addons.autosuggest;version="0.1.0",
- org.eclipse.rap.addons.autosuggest.internal;version="0.1.0";x-internal:=true
+Export-Package: org.eclipse.rap.addons.autosuggest;version="0.1.0"
Require-Bundle: org.eclipse.rap.rwt;bundle-version="2.1.0"
Import-Package: org.eclipse.rap.addons.dropdown;version="0.1.0",
org.eclipse.rap.clientscripting;version="0.2.0",
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 3b446c6..60fb407 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
@@ -15,13 +15,11 @@
import java.util.ArrayList;
import java.util.List;
-import org.eclipse.rap.addons.autosuggest.internal.AutoSuggestClientListener;
-import org.eclipse.rap.addons.autosuggest.internal.resources.AutoSuggestScript;
-import org.eclipse.rap.addons.autosuggest.internal.resources.EventDelegatorScript;
+import org.eclipse.rap.addons.autosuggest.internal.resources.AutoSuggestListener;
+import org.eclipse.rap.addons.autosuggest.internal.resources.EventDelegatorListener;
import org.eclipse.rap.addons.autosuggest.internal.resources.ModelResources;
import org.eclipse.rap.addons.dropdown.DropDown;
import org.eclipse.rap.clientscripting.ClientListener;
-import org.eclipse.rap.clientscripting.Script;
import org.eclipse.rap.clientscripting.WidgetDataWhiteList;
import org.eclipse.rap.json.JsonObject;
import org.eclipse.rap.rwt.RWT;
@@ -155,33 +153,31 @@
private void attachClientListeners() {
int[] dropDownEventTypes = new int[] { SWT.Show, SWT.Hide, SWT.Selection, SWT.DefaultSelection };
- attachClientListenerToDropDown( EventDelegatorScript.getInstance(), dropDownEventTypes );
- attachClientListenerToText( EventDelegatorScript.getInstance(), SWT.Modify, SWT.Verify );
- attachClientListenerToModel( getAutoSuggestScript(), "change", "accept" );
+ attachClientListenerToDropDown( EventDelegatorListener.getInstance(), dropDownEventTypes );
+ attachClientListenerToText( EventDelegatorListener.getInstance(), SWT.Modify, SWT.Verify );
+ attachClientListenerToModel( getAutoSuggestListener(), "change", "accept" );
}
- protected Script getAutoSuggestScript() {
- return AutoSuggestScript.getInstance();
+ protected AutoSuggestClientListener getAutoSuggestListener() {
+ return AutoSuggestListener.getInstance();
}
- private void attachClientListenerToText( Script script, int... types ) {
+ private void attachClientListenerToText( ClientListener listener, int... types ) {
textClientListenerTypes = types;
- textClientListener = new ClientListener( script );
+ textClientListener = listener;
for( int type : types ) {
- text.addListener( type, textClientListener );
+ text.addListener( type, listener );
}
}
- private void attachClientListenerToDropDown( Script script, int... types ) {
- ClientListener clientListener = new ClientListener( script );
+ private void attachClientListenerToDropDown( ClientListener listener, int... types ) {
for( int type : types ) {
- dropDown.addListener( type, clientListener );
+ dropDown.addListener( type, listener );
}
}
- private void attachClientListenerToModel( Script script, String... types ) {
- AutoSuggestClientListener clientListener = new AutoSuggestClientListener( script );
- String listenerId = clientListener.getId();
+ private void attachClientListenerToModel( AutoSuggestClientListener listener, String... types ) {
+ String listenerId = listener.getId();
for( String type : types ) {
remoteObject.call( "addListener",
new JsonObject().add( "listener", listenerId ).add( "type", type ) );
diff --git a/bundles/org.eclipse.rap.addons.autosuggest/src/org/eclipse/rap/addons/autosuggest/internal/AutoSuggestClientListener.java b/bundles/org.eclipse.rap.addons.autosuggest/src/org/eclipse/rap/addons/autosuggest/AutoSuggestClientListener.java
similarity index 75%
rename from bundles/org.eclipse.rap.addons.autosuggest/src/org/eclipse/rap/addons/autosuggest/internal/AutoSuggestClientListener.java
rename to bundles/org.eclipse.rap.addons.autosuggest/src/org/eclipse/rap/addons/autosuggest/AutoSuggestClientListener.java
index 6675748..b9a2f29 100644
--- a/bundles/org.eclipse.rap.addons.autosuggest/src/org/eclipse/rap/addons/autosuggest/internal/AutoSuggestClientListener.java
+++ b/bundles/org.eclipse.rap.addons.autosuggest/src/org/eclipse/rap/addons/autosuggest/AutoSuggestClientListener.java
@@ -8,23 +8,18 @@
* Contributors:
* EclipseSource - initial API and implementation
******************************************************************************/
-package org.eclipse.rap.addons.autosuggest.internal;
+package org.eclipse.rap.addons.autosuggest;
-import org.eclipse.rap.clientscripting.Script;
import org.eclipse.rap.clientscripting.internal.ClientFunction;
@SuppressWarnings( "restriction" )
-public final class AutoSuggestClientListener extends ClientFunction {
+public class AutoSuggestClientListener extends ClientFunction {
public AutoSuggestClientListener( String scriptCode ) {
super( scriptCode );
}
- public AutoSuggestClientListener( Script script ) {
- super( script );
- }
-
public String getId() {
return getRemoteId();
}
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/AutoSuggestListener.java
similarity index 74%
rename from bundles/org.eclipse.rap.addons.autosuggest/src/org/eclipse/rap/addons/autosuggest/internal/resources/AutoSuggestScript.java
rename to bundles/org.eclipse.rap.addons.autosuggest/src/org/eclipse/rap/addons/autosuggest/internal/resources/AutoSuggestListener.java
index da77f34..4ae4f27 100644
--- 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/AutoSuggestListener.java
@@ -10,17 +10,17 @@
******************************************************************************/
package org.eclipse.rap.addons.autosuggest.internal.resources;
-import org.eclipse.rap.clientscripting.Script;
+import org.eclipse.rap.addons.autosuggest.AutoSuggestClientListener;
import org.eclipse.rap.rwt.SingletonUtil;
-public class AutoSuggestScript extends Script {
+public class AutoSuggestListener extends AutoSuggestClientListener {
- public static AutoSuggestScript getInstance() {
- return SingletonUtil.getSessionInstance( AutoSuggestScript.class );
+ public static AutoSuggestListener getInstance() {
+ return SingletonUtil.getSessionInstance( AutoSuggestListener.class );
}
- private AutoSuggestScript() {
+ private AutoSuggestListener() {
super( getText() );
}
diff --git a/bundles/org.eclipse.rap.addons.autosuggest/src/org/eclipse/rap/addons/autosuggest/internal/resources/EventDelegatorScript.java b/bundles/org.eclipse.rap.addons.autosuggest/src/org/eclipse/rap/addons/autosuggest/internal/resources/EventDelegatorListener.java
similarity index 63%
rename from bundles/org.eclipse.rap.addons.autosuggest/src/org/eclipse/rap/addons/autosuggest/internal/resources/EventDelegatorScript.java
rename to bundles/org.eclipse.rap.addons.autosuggest/src/org/eclipse/rap/addons/autosuggest/internal/resources/EventDelegatorListener.java
index 7267335..5a3ac77 100644
--- a/bundles/org.eclipse.rap.addons.autosuggest/src/org/eclipse/rap/addons/autosuggest/internal/resources/EventDelegatorScript.java
+++ b/bundles/org.eclipse.rap.addons.autosuggest/src/org/eclipse/rap/addons/autosuggest/internal/resources/EventDelegatorListener.java
@@ -10,18 +10,21 @@
******************************************************************************/
package org.eclipse.rap.addons.autosuggest.internal.resources;
-import org.eclipse.rap.clientscripting.Script;
+import org.eclipse.rap.clientscripting.ClientListener;
import org.eclipse.rap.rwt.SingletonUtil;
-public class EventDelegatorScript extends Script {
+public class EventDelegatorListener {
- public static EventDelegatorScript getInstance() {
- return SingletonUtil.getSessionInstance( EventDelegatorScript.class );
+ private final ClientListener eventDeleatorListener;
+
+ // Can not extend ClientListener since Widget#addListner would not detect it
+ public static ClientListener getInstance() {
+ return SingletonUtil.getSessionInstance( EventDelegatorListener.class ).eventDeleatorListener;
}
- private EventDelegatorScript() {
- super( getText() );
+ private EventDelegatorListener() {
+ eventDeleatorListener = new ClientListener( getText() );
}
private static String getText() {
diff --git a/examples/org.eclipse.rap.addons.dropdown.demo/DropDown Demo 9494_dropdown.launch b/examples/org.eclipse.rap.addons.dropdown.demo/DropDown Demo 9494_dropdown.launch
index 54fd9fe..c0c2877 100644
--- a/examples/org.eclipse.rap.addons.dropdown.demo/DropDown Demo 9494_dropdown.launch
+++ b/examples/org.eclipse.rap.addons.dropdown.demo/DropDown Demo 9494_dropdown.launch
@@ -39,10 +39,10 @@
<booleanAttribute key="org.eclipse.rap.launch.useManualPort" value="true"/>
<booleanAttribute key="org.eclipse.rap.launch.useSessionTimeout" value="false"/>
<stringAttribute key="pde.version" value="3.3"/>
-<booleanAttribute key="show_selected_only" value="true"/>
+<booleanAttribute key="show_selected_only" value="false"/>
<stringAttribute key="target_bundles" value="com.ibm.icu.base@default:default,javax.servlet@default:default,javax.xml@default:default,org.apache.felix.gogo.command@default:default,org.apache.felix.gogo.runtime@default:default,org.apache.felix.gogo.shell@default:default,org.eclipse.equinox.console@default:default,org.eclipse.equinox.ds@1:true,org.eclipse.equinox.http.jetty@default:default,org.eclipse.equinox.http.servlet@default:default,org.eclipse.equinox.util@default:default,org.eclipse.jetty.continuation@default:default,org.eclipse.jetty.http@default:default,org.eclipse.jetty.io@default:default,org.eclipse.jetty.security@default:default,org.eclipse.jetty.server@default:default,org.eclipse.jetty.servlet@default:default,org.eclipse.jetty.util@default:default,org.eclipse.osgi.services@default:default,org.eclipse.osgi@-1:true,org.eclipse.rap.rwt.osgi@default:default,org.eclipse.rap.rwt@default:default"/>
<booleanAttribute key="tracing" value="false"/>
<booleanAttribute key="useCustomFeatures" value="false"/>
<booleanAttribute key="useDefaultConfigArea" value="true"/>
-<stringAttribute key="workspace_bundles" value="org.eclipse.rap.addons.dropdown.demo@default:default,org.eclipse.rap.addons.dropdown@default:default,org.eclipse.rap.clientscripting@default:default"/>
+<stringAttribute key="workspace_bundles" value="org.eclipse.rap.addons.autosuggest@default:default,org.eclipse.rap.addons.dropdown.demo@default:default,org.eclipse.rap.addons.dropdown@default:default,org.eclipse.rap.clientscripting@default:default"/>
</launchConfiguration>
diff --git a/examples/org.eclipse.rap.addons.dropdown.demo/META-INF/MANIFEST.MF b/examples/org.eclipse.rap.addons.dropdown.demo/META-INF/MANIFEST.MF
index dea5eff..a3062b6 100644
--- a/examples/org.eclipse.rap.addons.dropdown.demo/META-INF/MANIFEST.MF
+++ b/examples/org.eclipse.rap.addons.dropdown.demo/META-INF/MANIFEST.MF
@@ -9,6 +9,5 @@
Service-Component: OSGI-INF/*.xml
Bundle-Vendor: Eclipse.org - RAP Incubator
Import-Package: org.eclipse.rap.addons.autosuggest;version="0.1.0",
- org.eclipse.rap.addons.autosuggest.internal;version="0.1.0",
org.eclipse.rap.addons.dropdown;version="0.1.0"
Export-Package: org.eclipse.rap.addons.dropdown.demo;version="0.1.0"
diff --git a/examples/org.eclipse.rap.addons.dropdown.demo/src/org/eclipse/rap/addons/dropdown/demo/AutoSuggestDemo.java b/examples/org.eclipse.rap.addons.dropdown.demo/src/org/eclipse/rap/addons/dropdown/demo/AutoSuggestDemo.java
index e92674c..0e49ce6 100644
--- a/examples/org.eclipse.rap.addons.dropdown.demo/src/org/eclipse/rap/addons/dropdown/demo/AutoSuggestDemo.java
+++ b/examples/org.eclipse.rap.addons.dropdown.demo/src/org/eclipse/rap/addons/dropdown/demo/AutoSuggestDemo.java
@@ -13,12 +13,12 @@
import java.util.Arrays;
import org.eclipse.rap.addons.autosuggest.AutoSuggest;
+import org.eclipse.rap.addons.autosuggest.AutoSuggestClientListener;
import org.eclipse.rap.addons.autosuggest.DataProvider;
import org.eclipse.rap.addons.autosuggest.DataSource;
import org.eclipse.rap.addons.autosuggest.SuggestionSelectedListener;
import org.eclipse.rap.addons.dropdown.demo.data.KFZ;
-import org.eclipse.rap.addons.dropdown.demo.scripts.CustomAutoSuggestScript;
-import org.eclipse.rap.clientscripting.Script;
+import org.eclipse.rap.addons.dropdown.demo.scripts.CustomAutoSuggestClientListener;
import org.eclipse.rap.rwt.RWT;
import org.eclipse.rap.rwt.application.AbstractEntryPoint;
import org.eclipse.rap.rwt.internal.client.WidgetDataWhiteList;
@@ -48,8 +48,8 @@
}
@Override
- protected Script getAutoSuggestScript() {
- return CustomAutoSuggestScript.getInstance();
+ protected AutoSuggestClientListener getAutoSuggestListener() {
+ return CustomAutoSuggestClientListener.getInstance();
}
}
diff --git a/examples/org.eclipse.rap.addons.dropdown.demo/src/org/eclipse/rap/addons/dropdown/demo/scripts/CustomAutoSuggestScript.java b/examples/org.eclipse.rap.addons.dropdown.demo/src/org/eclipse/rap/addons/dropdown/demo/scripts/CustomAutoSuggestClientListener.java
similarity index 70%
rename from examples/org.eclipse.rap.addons.dropdown.demo/src/org/eclipse/rap/addons/dropdown/demo/scripts/CustomAutoSuggestScript.java
rename to examples/org.eclipse.rap.addons.dropdown.demo/src/org/eclipse/rap/addons/dropdown/demo/scripts/CustomAutoSuggestClientListener.java
index cc028d4..1d24309 100644
--- a/examples/org.eclipse.rap.addons.dropdown.demo/src/org/eclipse/rap/addons/dropdown/demo/scripts/CustomAutoSuggestScript.java
+++ b/examples/org.eclipse.rap.addons.dropdown.demo/src/org/eclipse/rap/addons/dropdown/demo/scripts/CustomAutoSuggestClientListener.java
@@ -10,17 +10,17 @@
******************************************************************************/
package org.eclipse.rap.addons.dropdown.demo.scripts;
-import org.eclipse.rap.clientscripting.Script;
+import org.eclipse.rap.addons.autosuggest.AutoSuggestClientListener;
import org.eclipse.rap.rwt.SingletonUtil;
-public class CustomAutoSuggestScript extends Script {
+public class CustomAutoSuggestClientListener extends AutoSuggestClientListener {
- public static CustomAutoSuggestScript getInstance() {
- return SingletonUtil.getSessionInstance( CustomAutoSuggestScript.class );
+ public static CustomAutoSuggestClientListener getInstance() {
+ return SingletonUtil.getSessionInstance( CustomAutoSuggestClientListener.class );
}
- private CustomAutoSuggestScript() {
+ private CustomAutoSuggestClientListener() {
super( getText() );
}