Minor refactorings in ModelListener
diff --git a/bundles/org.eclipse.rap.addons.dropdown.viewer/src/org/eclipse/rap/addons/dropdown/viewer/internal/resources/ModelListener.js b/bundles/org.eclipse.rap.addons.dropdown.viewer/src/org/eclipse/rap/addons/dropdown/viewer/internal/resources/ModelListener.js
index 68153a1..25efb58 100644
--- a/bundles/org.eclipse.rap.addons.dropdown.viewer/src/org/eclipse/rap/addons/dropdown/viewer/internal/resources/ModelListener.js
+++ b/bundles/org.eclipse.rap.addons.dropdown.viewer/src/org/eclipse/rap/addons/dropdown/viewer/internal/resources/ModelListener.js
@@ -39,7 +39,7 @@
// Event Handling
function onChangeUserText( event ) {
- this.set( "suggestion", null, { "sourceEvent" : "change:userText" } );
+ this.set( "suggestion", null, { "action" : "sync" } );
var query = createQuery( event.value.toLowerCase() );
var results = searchItems( this.get( "elements" ), query );
this.set( "results", results );
@@ -48,11 +48,10 @@
function onChangeResults( event ) {
if( this.get( "autoComplete" ) ) {
var items = this.get( "results" ).items;
- var options = { "sourceEvent" : "change:results" };
if( items.length === 1 ) {
- this.set( "suggestion", items[ 0 ], options );
+ this.set( "suggestion", items[ 0 ] );
} else {
- this.set( "suggestion", null, options );
+ this.set( "suggestion", null );
}
}
}
@@ -62,15 +61,16 @@
if( event.value !== -1 ) {
suggestion = this.get( "results" ).items[ event.value ] || "";
}
- this.set( "suggestion", suggestion, { "sourceEvent" : "change:resultSelection" } );
+ var options = { "action" : "selection" };
+ this.set( "suggestion", suggestion, options );
}
function onChangeSuggestion( event ) {
- if( event.options.sourceEvent !== "change:userText" ) {
+ if( event.options.action !== "sync" ) {
var userText = this.get( "userText" ) || "";
var text = event.value || userText;
this.set( "text", text );
- if( event.options.sourceEvent === "change:resultSelection" ) {
+ if( event.options.action === "selection" ) {
if( event.value === null ) {
this.set( "textSelection", [ text.length , text.length ] );
} else {
diff --git a/tests/org.eclipse.rap.addons.dropdown.test/jasmine/jasmine/specs/ModelListenerSpec.js b/tests/org.eclipse.rap.addons.dropdown.test/jasmine/jasmine/specs/ModelListenerSpec.js
index a9c331d..689f29e 100644
--- a/tests/org.eclipse.rap.addons.dropdown.test/jasmine/jasmine/specs/ModelListenerSpec.js
+++ b/tests/org.eclipse.rap.addons.dropdown.test/jasmine/jasmine/specs/ModelListenerSpec.js
@@ -162,7 +162,6 @@
model.set( "userText", "ba" );
expect( model.get( "suggestion" ) ).toBeNull();
- expect( log[ 0 ][ 0 ].options.sourceEvent ).toBe( "change:userText" );
} );
it( "updates results", function() {
@@ -196,14 +195,14 @@
expect( model.get( "suggestion" ) ).toBeNull();
} );
- it( "sets sourceEvent option", function() {
+ it( "sets action option", function() {
model.addListener( "change:resultSelection", createClientListener( "ModelListener" ) );
model.addListener( "change:suggestion", logger );
model.set( "results", { "items" : [ "bar", "banana" ] } );
model.set( "resultSelection", 1 );
- expect( log[ 0 ][ 0 ].options.sourceEvent ).toBe( "change:resultSelection" );
+ expect( log[ 0 ][ 0 ].options.action ).toBe( "selection" );
} );
} );
@@ -215,7 +214,7 @@
model.set( "text", "bar" );
model.set( "textSelection", [ 0, 0 ] );
- model.set( "suggestion", "foo", { "sourceEvent" : "change:userText" } );
+ model.set( "suggestion", "foo", { "action" : "sync" } );
expect( model.get( "text" ) ).toEqual( "bar" );
expect( model.get( "textSelection" ) ).toEqual( [ 0, 0 ] );
@@ -232,7 +231,7 @@
it( "sets textSelection for result selection", function() {
model.addListener( "change:suggestion", createClientListener( "ModelListener" ) );
- model.set( "suggestion", "foo", { "sourceEvent" : "change:resultSelection" } );
+ model.set( "suggestion", "foo", { "action" : "selection" } );
expect( model.get( "textSelection" ) ).toEqual( [ 0, 3 ] );
} );
@@ -241,7 +240,7 @@
model.addListener( "change:suggestion", createClientListener( "ModelListener" ) );
model.set( "userText", "foo" );
- model.set( "suggestion", "foobar", { "sourceEvent" : "change:results" } );
+ model.set( "suggestion", "foobar" );
expect( model.get( "textSelection" ) ).toEqual( [ 3, 6 ] );
} );
@@ -250,7 +249,7 @@
model.addListener( "change:suggestion", createClientListener( "ModelListener" ) );
model.set( "userText", "bar" );
- model.set( "suggestion", null, { "sourceEvent" : "change:resultSelection" } );
+ model.set( "suggestion", null, { "action" : "selection" } );
expect( model.get( "text" ) ).toEqual( "bar" );
} );
@@ -259,7 +258,7 @@
model.addListener( "change:suggestion", createClientListener( "ModelListener" ) );
model.set( "userText", "bar" );
- model.set( "suggestion", null, { "sourceEvent" : "change:resultSelection" } );
+ model.set( "suggestion", null, { "action" : "selection" } );
expect( model.get( "textSelection" ) ).toEqual( [ 3, 3 ] );
} );
@@ -297,28 +296,6 @@
expect( model.get( "suggestion" ) ).toBeNull();
} );
- it( "sets sourceEvent option when setting suggestion", function() {
- model.set( "suggestion", "ban" );
- model.set( "autoComplete", true );
- model.addListener( "change:results", createClientListener( "ModelListener" ) );
- model.addListener( "change:suggestion", logger );
-
- model.set( "results", { "items" : [ "banana" ] } );
-
- expect( log[ 0 ][ 0 ].options.sourceEvent ).toBe( "change:results" );
- } );
-
- it( "sets sourceEvent option when resetting suggestion", function() {
- model.set( "suggestion", "ban" );
- model.set( "autoComplete", true );
- model.addListener( "change:results", createClientListener( "ModelListener" ) );
- model.addListener( "change:suggestion", logger );
-
- model.set( "results", { "items" : [ "banana", "apple" ] } );
-
- expect( log[ 0 ][ 0 ].options.sourceEvent ).toBe( "change:results" );
- } );
-
} );
describe( "accept", function() {