Code re-factoring and test extends
* move handling of Help event to ControlOperationHandler
* move test for creating of selection event to
WidgetOperationHandler_Test
* move handling of Selection/DefaultSelection to corresponding
widget/control operation handler
diff --git a/bundles/org.eclipse.rap.rwt/src/org/eclipse/rap/rwt/internal/protocol/ControlOperationHandler.java b/bundles/org.eclipse.rap.rwt/src/org/eclipse/rap/rwt/internal/protocol/ControlOperationHandler.java
index 09720a1..b495d2f 100644
--- a/bundles/org.eclipse.rap.rwt/src/org/eclipse/rap/rwt/internal/protocol/ControlOperationHandler.java
+++ b/bundles/org.eclipse.rap.rwt/src/org/eclipse/rap/rwt/internal/protocol/ControlOperationHandler.java
@@ -51,6 +51,8 @@
handleNotifyKeyDown( control, properties );
} else if( "MenuDetect".equals( eventName ) ) {
handleNotifyMenuDetect( control, properties );
+ } else if( "Help".equals( eventName ) ) {
+ handleNotifyHelp( control, properties );
} else {
super.handleNotify( control, eventName, properties );
}
@@ -152,7 +154,14 @@
control.notifyListeners( SWT.MenuDetect, createMenuDetectEvent( properties ) );
}
- static void processMouseEvent( int eventType, Control control, JsonObject properties ) {
+ /*
+ * PROTOCOL NOTIFY Help
+ */
+ public void handleNotifyHelp( T widget, JsonObject properties ) {
+ widget.notifyListeners( SWT.Help, new Event() );
+ }
+
+ private static void processMouseEvent( int eventType, Control control, JsonObject properties ) {
Event event = createMouseEvent( eventType, control, properties );
boolean pass = false;
if( control instanceof Scrollable ) {
@@ -183,7 +192,7 @@
return event;
}
- static void processTraverseEvent( Control control, JsonObject properties ) {
+ private static void processTraverseEvent( Control control, JsonObject properties ) {
int keyCode = properties.get( EVENT_PARAM_KEY_CODE ).asInt();
int charCode = properties.get( EVENT_PARAM_CHAR_CODE ).asInt();
int stateMask = readStateMask( properties );
diff --git a/bundles/org.eclipse.rap.rwt/src/org/eclipse/rap/rwt/internal/protocol/WidgetOperationHandler.java b/bundles/org.eclipse.rap.rwt/src/org/eclipse/rap/rwt/internal/protocol/WidgetOperationHandler.java
index 0d5d253..acd6387 100644
--- a/bundles/org.eclipse.rap.rwt/src/org/eclipse/rap/rwt/internal/protocol/WidgetOperationHandler.java
+++ b/bundles/org.eclipse.rap.rwt/src/org/eclipse/rap/rwt/internal/protocol/WidgetOperationHandler.java
@@ -34,11 +34,6 @@
}
@Override
- public void handleNotify( String eventName, JsonObject properties ) {
- handleNotify( widget, eventName, properties );
- }
-
- @Override
public void handleSet( JsonObject properties ) {
handleSet( widget, properties );
}
@@ -48,6 +43,11 @@
handleCall( widget, method, parameters );
}
+ @Override
+ public void handleNotify( String eventName, JsonObject properties ) {
+ handleNotify( widget, eventName, properties );
+ }
+
public void handleSet( T widget, JsonObject properties ) {
throw new UnsupportedOperationException( "set operations not supported by this handler" );
}
@@ -57,46 +57,7 @@
}
public void handleNotify( T widget, String eventName, JsonObject properties ) {
- if( "Help".equals( eventName ) ) {
- handleNotifyHelp( widget, properties );
- } else if( "Selection".equals( eventName ) ) {
- handleNotifySelection( widget, properties );
- } else if( "DefaultSelection".equals( eventName ) ) {
- handleNotifyDefaultSelection( widget, properties );
- } else {
- throw new UnsupportedOperationException( "notify operations not supported by this handler" );
- }
- }
-
- /*
- * PROTOCOL NOTIFY Selection
- *
- * @param altKey (boolean) true if the ALT key was pressed
- * @param ctrlKey (boolean) true if the CTRL key was pressed
- * @param shiftKey (boolean) true if the SHIFT key was pressed
- */
- public void handleNotifySelection( T widget, JsonObject properties ) {
- Event event = createSelectionEvent( SWT.Selection, properties );
- widget.notifyListeners( SWT.Selection, event );
- }
-
- /*
- * PROTOCOL NOTIFY DefaultSelection
- *
- * @param altKey (boolean) true if the ALT key was pressed
- * @param ctrlKey (boolean) true if the CTRL key was pressed
- * @param shiftKey (boolean) true if the SHIFT key was pressed
- */
- public void handleNotifyDefaultSelection( T widget, JsonObject properties ) {
- Event event = createSelectionEvent( SWT.DefaultSelection, properties );
- widget.notifyListeners( SWT.DefaultSelection, event );
- }
-
- /*
- * PROTOCOL NOTIFY Help
- */
- public void handleNotifyHelp( T widget, JsonObject properties ) {
- widget.notifyListeners( SWT.Help, new Event() );
+ throw new UnsupportedOperationException( "notify operations not supported by this handler" );
}
protected static Event createSelectionEvent( int eventType, JsonObject properties ) {
diff --git a/bundles/org.eclipse.rap.rwt/widgetkits/org/eclipse/swt/internal/widgets/buttonkit/ButtonOperationHandler.java b/bundles/org.eclipse.rap.rwt/widgetkits/org/eclipse/swt/internal/widgets/buttonkit/ButtonOperationHandler.java
index 99a7d4f..e782670 100644
--- a/bundles/org.eclipse.rap.rwt/widgetkits/org/eclipse/swt/internal/widgets/buttonkit/ButtonOperationHandler.java
+++ b/bundles/org.eclipse.rap.rwt/widgetkits/org/eclipse/swt/internal/widgets/buttonkit/ButtonOperationHandler.java
@@ -32,22 +32,6 @@
}
/*
- * PROTOCOL NOTIFY Selection
- *
- * @param altKey (boolean) true if the ALT key was pressed
- * @param ctrlKey (boolean) true if the CTRL key was pressed
- * @param shiftKey (boolean) true if the SHIFT key was pressed
- */
- @Override
- public void handleNotifySelection( Button button, JsonObject properties ) {
- Event event = createSelectionEvent( SWT.Selection, properties );
- if( ( button.getStyle() & SWT.RADIO ) != 0 && !button.getSelection() ) {
- event.time = -1;
- }
- button.notifyListeners( SWT.Selection, event );
- }
-
- /*
* PROTOCOL SET selection
*
* @param selection (boolean) true if the button was selected, otherwise false
@@ -59,4 +43,42 @@
}
}
+ @Override
+ public void handleNotify( Button button, String eventName, JsonObject properties ) {
+ if( "Selection".equals( eventName ) ) {
+ handleNotifySelection( button, properties );
+ } else if( "DefaultSelection".equals( eventName ) ) {
+ handleNotifyDefaultSelection( button, properties );
+ } else {
+ super.handleNotify( button, eventName, properties );
+ }
+ }
+
+ /*
+ * PROTOCOL NOTIFY Selection
+ *
+ * @param altKey (boolean) true if the ALT key was pressed
+ * @param ctrlKey (boolean) true if the CTRL key was pressed
+ * @param shiftKey (boolean) true if the SHIFT key was pressed
+ */
+ public void handleNotifySelection( Button button, JsonObject properties ) {
+ Event event = createSelectionEvent( SWT.Selection, properties );
+ if( ( button.getStyle() & SWT.RADIO ) != 0 && !button.getSelection() ) {
+ event.time = -1;
+ }
+ button.notifyListeners( SWT.Selection, event );
+ }
+
+ /*
+ * PROTOCOL NOTIFY DefaultSelection
+ *
+ * @param altKey (boolean) true if the ALT key was pressed
+ * @param ctrlKey (boolean) true if the CTRL key was pressed
+ * @param shiftKey (boolean) true if the SHIFT key was pressed
+ */
+ public void handleNotifyDefaultSelection( Button button, JsonObject properties ) {
+ Event event = createSelectionEvent( SWT.DefaultSelection, properties );
+ button.notifyListeners( SWT.DefaultSelection, event );
+ }
+
}
diff --git a/bundles/org.eclipse.rap.rwt/widgetkits/org/eclipse/swt/internal/widgets/combokit/ComboOperationHandler.java b/bundles/org.eclipse.rap.rwt/widgetkits/org/eclipse/swt/internal/widgets/combokit/ComboOperationHandler.java
index e425b20..437d7bf 100644
--- a/bundles/org.eclipse.rap.rwt/widgetkits/org/eclipse/swt/internal/widgets/combokit/ComboOperationHandler.java
+++ b/bundles/org.eclipse.rap.rwt/widgetkits/org/eclipse/swt/internal/widgets/combokit/ComboOperationHandler.java
@@ -20,6 +20,7 @@
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.widgets.Combo;
+import org.eclipse.swt.widgets.Event;
public class ComboOperationHandler extends ControlOperationHandler<Combo> {
@@ -44,7 +45,11 @@
@Override
public void handleNotify( Combo combo, String eventName, JsonObject properties ) {
- if( "Modify".equals( eventName ) ) {
+ if( "Selection".equals( eventName ) ) {
+ handleNotifySelection( combo, properties );
+ } else if( "DefaultSelection".equals( eventName ) ) {
+ handleNotifyDefaultSelection( combo, properties );
+ } else if( "Modify".equals( eventName ) ) {
handleNotifyModify( combo, properties );
} else {
super.handleNotify( combo, eventName, properties );
@@ -52,10 +57,34 @@
}
/*
+ * PROTOCOL NOTIFY Selection
+ *
+ * @param altKey (boolean) true if the ALT key was pressed
+ * @param ctrlKey (boolean) true if the CTRL key was pressed
+ * @param shiftKey (boolean) true if the SHIFT key was pressed
+ */
+ public void handleNotifySelection( Combo combo, JsonObject properties ) {
+ Event event = createSelectionEvent( SWT.Selection, properties );
+ combo.notifyListeners( SWT.Selection, event );
+ }
+
+ /*
+ * PROTOCOL NOTIFY DefaultSelection
+ *
+ * @param altKey (boolean) true if the ALT key was pressed
+ * @param ctrlKey (boolean) true if the CTRL key was pressed
+ * @param shiftKey (boolean) true if the SHIFT key was pressed
+ */
+ public void handleNotifyDefaultSelection( Combo combo, JsonObject properties ) {
+ Event event = createSelectionEvent( SWT.DefaultSelection, properties );
+ combo.notifyListeners( SWT.DefaultSelection, event );
+ }
+
+ /*
* PROTOCOL NOTIFY Modify
* ignored, Modify event is fired when set text
*/
- public void handleNotifyModify( Combo control, JsonObject properties ) {
+ public void handleNotifyModify( Combo combo, JsonObject properties ) {
}
/*
diff --git a/bundles/org.eclipse.rap.rwt/widgetkits/org/eclipse/swt/internal/widgets/treecolumnkit/TreeColumnOperationHandler.java b/bundles/org.eclipse.rap.rwt/widgetkits/org/eclipse/swt/internal/widgets/treecolumnkit/TreeColumnOperationHandler.java
index bfc78f9..1a86775 100644
--- a/bundles/org.eclipse.rap.rwt/widgetkits/org/eclipse/swt/internal/widgets/treecolumnkit/TreeColumnOperationHandler.java
+++ b/bundles/org.eclipse.rap.rwt/widgetkits/org/eclipse/swt/internal/widgets/treecolumnkit/TreeColumnOperationHandler.java
@@ -17,7 +17,9 @@
import org.eclipse.rap.json.JsonObject;
import org.eclipse.rap.rwt.internal.protocol.WidgetOperationHandler;
import org.eclipse.rap.rwt.lifecycle.ProcessActionRunner;
+import org.eclipse.swt.SWT;
import org.eclipse.swt.internal.widgets.ITreeAdapter;
+import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Tree;
import org.eclipse.swt.widgets.TreeColumn;
@@ -42,6 +44,17 @@
}
}
+ @Override
+ public void handleNotify( TreeColumn column, String eventName, JsonObject properties ) {
+ if( "Selection".equals( eventName ) ) {
+ handleNotifySelection( column, properties );
+ } else if( "DefaultSelection".equals( eventName ) ) {
+ handleNotifyDefaultSelection( column, properties );
+ } else {
+ super.handleNotify( column, eventName, properties );
+ }
+ }
+
/*
* PROTOCOL CALL move
*
@@ -70,6 +83,30 @@
} );
}
+ /*
+ * PROTOCOL NOTIFY Selection
+ *
+ * @param altKey (boolean) true if the ALT key was pressed
+ * @param ctrlKey (boolean) true if the CTRL key was pressed
+ * @param shiftKey (boolean) true if the SHIFT key was pressed
+ */
+ public void handleNotifySelection( TreeColumn column, JsonObject properties ) {
+ Event event = createSelectionEvent( SWT.Selection, properties );
+ column.notifyListeners( SWT.Selection, event );
+ }
+
+ /*
+ * PROTOCOL NOTIFY DefaultSelection
+ *
+ * @param altKey (boolean) true if the ALT key was pressed
+ * @param ctrlKey (boolean) true if the CTRL key was pressed
+ * @param shiftKey (boolean) true if the SHIFT key was pressed
+ */
+ public void handleNotifyDefaultSelection( TreeColumn column, JsonObject properties ) {
+ Event event = createSelectionEvent( SWT.DefaultSelection, properties );
+ column.notifyListeners( SWT.DefaultSelection, event );
+ }
+
static void moveColumn( TreeColumn column, int newLeft ) {
Tree tree = column.getParent();
int targetColumn = findMoveTarget( tree, newLeft );
diff --git a/bundles/org.eclipse.rap.rwt/widgetkits/org/eclipse/swt/internal/widgets/treekit/TreeOperationHandler.java b/bundles/org.eclipse.rap.rwt/widgetkits/org/eclipse/swt/internal/widgets/treekit/TreeOperationHandler.java
index 88d065e..bc1ecdb 100644
--- a/bundles/org.eclipse.rap.rwt/widgetkits/org/eclipse/swt/internal/widgets/treekit/TreeOperationHandler.java
+++ b/bundles/org.eclipse.rap.rwt/widgetkits/org/eclipse/swt/internal/widgets/treekit/TreeOperationHandler.java
@@ -71,60 +71,6 @@
}
/*
- * PROTOCOL NOTIFY Selection
- *
- * @param altKey (boolean) true if the ALT key was pressed
- * @param ctrlKey (boolean) true if the CTRL key was pressed
- * @param shiftKey (boolean) true if the SHIFT key was pressed
- * @param detail (string) "check" is checkbox is selected
- * @item item (string) id of selected item
- */
- @Override
- public void handleNotifySelection( Tree tree, JsonObject properties ) {
- Event event = createSelectionEvent( SWT.Selection, properties );
- event.item = getItem( tree, properties.get( EVENT_PARAM_ITEM ).asString() );
- tree.notifyListeners( SWT.Selection, event );
- }
-
- /*
- * PROTOCOL NOTIFY DefaultSelection
- *
- * @param altKey (boolean) true if the ALT key was pressed
- * @param ctrlKey (boolean) true if the CTRL key was pressed
- * @param shiftKey (boolean) true if the SHIFT key was pressed
- * @param detail (string) "check" is checkbox is selected
- * @item item (string) id of selected item
- */
- @Override
- public void handleNotifyDefaultSelection( Tree tree, JsonObject properties ) {
- Event event = createSelectionEvent( SWT.DefaultSelection, properties );
- event.item = getItem( tree, properties.get( EVENT_PARAM_ITEM ).asString() );
- tree.notifyListeners( SWT.DefaultSelection, event );
- }
-
- /*
- * PROTOCOL NOTIFY Expand
- *
- * @item item (string) id of expanded item
- */
- public void handleNotifyExpand( Tree tree, JsonObject properties ) {
- Event event = new Event();
- event.item = getItem( tree, properties.get( EVENT_PARAM_ITEM ).asString() );
- tree.notifyListeners( SWT.Expand, event );
- }
-
- /*
- * PROTOCOL NOTIFY Collapse
- *
- * @item item (string) id of collapsed item
- */
- public void handleNotifyCollapse( Tree tree, JsonObject properties ) {
- Event event = new Event();
- event.item = getItem( tree, properties.get( EVENT_PARAM_ITEM ).asString() );
- tree.notifyListeners( SWT.Collapse, event );
- }
-
- /*
* PROTOCOL SET selection
*
* @param selection ([string]) array with ids of selected items
@@ -196,6 +142,58 @@
}
}
+ /*
+ * PROTOCOL NOTIFY Selection
+ *
+ * @param altKey (boolean) true if the ALT key was pressed
+ * @param ctrlKey (boolean) true if the CTRL key was pressed
+ * @param shiftKey (boolean) true if the SHIFT key was pressed
+ * @param detail (string) "check" is checkbox is selected
+ * @item item (string) id of selected item
+ */
+ public void handleNotifySelection( Tree tree, JsonObject properties ) {
+ Event event = createSelectionEvent( SWT.Selection, properties );
+ event.item = getItem( tree, properties.get( EVENT_PARAM_ITEM ).asString() );
+ tree.notifyListeners( SWT.Selection, event );
+ }
+
+ /*
+ * PROTOCOL NOTIFY DefaultSelection
+ *
+ * @param altKey (boolean) true if the ALT key was pressed
+ * @param ctrlKey (boolean) true if the CTRL key was pressed
+ * @param shiftKey (boolean) true if the SHIFT key was pressed
+ * @param detail (string) "check" is checkbox is selected
+ * @item item (string) id of selected item
+ */
+ public void handleNotifyDefaultSelection( Tree tree, JsonObject properties ) {
+ Event event = createSelectionEvent( SWT.DefaultSelection, properties );
+ event.item = getItem( tree, properties.get( EVENT_PARAM_ITEM ).asString() );
+ tree.notifyListeners( SWT.DefaultSelection, event );
+ }
+
+ /*
+ * PROTOCOL NOTIFY Expand
+ *
+ * @item item (string) id of expanded item
+ */
+ public void handleNotifyExpand( Tree tree, JsonObject properties ) {
+ Event event = new Event();
+ event.item = getItem( tree, properties.get( EVENT_PARAM_ITEM ).asString() );
+ tree.notifyListeners( SWT.Expand, event );
+ }
+
+ /*
+ * PROTOCOL NOTIFY Collapse
+ *
+ * @item item (string) id of collapsed item
+ */
+ public void handleNotifyCollapse( Tree tree, JsonObject properties ) {
+ Event event = new Event();
+ event.item = getItem( tree, properties.get( EVENT_PARAM_ITEM ).asString() );
+ tree.notifyListeners( SWT.Collapse, event );
+ }
+
private TreeItem getItem( Tree tree, String itemId ) {
TreeItem item = null;
String[] idParts = itemId.split( "#" );
diff --git a/tests/org.eclipse.rap.rwt.test/src/org/eclipse/rap/rwt/internal/protocol/ControlOperationHandler_Test.java b/tests/org.eclipse.rap.rwt.test/src/org/eclipse/rap/rwt/internal/protocol/ControlOperationHandler_Test.java
index 4c9e4f7..5f697b5 100644
--- a/tests/org.eclipse.rap.rwt.test/src/org/eclipse/rap/rwt/internal/protocol/ControlOperationHandler_Test.java
+++ b/tests/org.eclipse.rap.rwt.test/src/org/eclipse/rap/rwt/internal/protocol/ControlOperationHandler_Test.java
@@ -10,13 +10,11 @@
******************************************************************************/
package org.eclipse.rap.rwt.internal.protocol;
+import static org.eclipse.rap.rwt.internal.protocol.ClientMessageConst.EVENT_KEY_DOWN;
import static org.eclipse.rap.rwt.internal.protocol.ControlOperationHandler.createKeyEvent;
import static org.eclipse.rap.rwt.internal.protocol.ControlOperationHandler.createMenuDetectEvent;
import static org.eclipse.rap.rwt.internal.protocol.ControlOperationHandler.createMouseEvent;
-import static org.eclipse.rap.rwt.internal.protocol.ControlOperationHandler.createSelectionEvent;
import static org.eclipse.rap.rwt.internal.protocol.ControlOperationHandler.getTraverseKey;
-import static org.eclipse.rap.rwt.internal.protocol.ControlOperationHandler.processMouseEvent;
-import static org.eclipse.rap.rwt.internal.protocol.ControlOperationHandler.processTraverseEvent;
import static org.eclipse.rap.rwt.internal.protocol.ControlOperationHandler.translateKeyCode;
import static org.junit.Assert.assertEquals;
import static org.mockito.Matchers.any;
@@ -29,7 +27,6 @@
import org.eclipse.rap.json.JsonObject;
import org.eclipse.rap.rwt.testfixture.Fixture;
import org.eclipse.swt.SWT;
-import org.eclipse.swt.graphics.Rectangle;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Display;
@@ -46,6 +43,7 @@
private Shell shell;
private Button control;
private Control mockedControl;
+ private ControlOperationHandler<Control> handler;
@Before
public void setUp() {
@@ -55,6 +53,7 @@
control = new Button( shell, SWT.NONE );
control.setBounds( 10, 10, 100, 20 );
mockedControl = mock( Control.class );
+ handler = new ControlOperationHandler<Control>( mockedControl ) {};
}
@After
@@ -63,44 +62,6 @@
}
@Test
- public void testCreateSelectionEvent_withoutProperties() {
- Event event = createSelectionEvent( SWT.Selection, new JsonObject() );
-
- assertEquals( SWT.Selection, event.type );
- }
-
- @Test
- public void testCreateSelectionEvent_withStateMask() {
- JsonObject properties = new JsonObject().add( "altKey", true ).add( "ctrlKey", true );
-
- Event event = createSelectionEvent( SWT.Selection, properties );
-
- assertEquals( SWT.ALT | SWT.CTRL, event.stateMask );
- }
-
- @Test
- public void testCreateSelectionEvent_withDetail() {
- JsonObject properties = new JsonObject().add( "detail", "check" );
-
- Event event = createSelectionEvent( SWT.Selection, properties );
-
- assertEquals( SWT.CHECK, event.detail );
- }
-
- @Test
- public void testCreateSelectionEvent_withBounds() {
- JsonObject properties = new JsonObject()
- .add( "x", 1 )
- .add( "y", 2 )
- .add( "width", 3 )
- .add( "height", 4 );
-
- Event event = createSelectionEvent( SWT.Selection, properties );
-
- assertEquals( new Rectangle( 1, 2, 3, 4 ), event.getBounds() );
- }
-
- @Test
public void testCreateMouseEvent() {
JsonObject properties = new JsonObject()
.add( "button", 1 )
@@ -143,92 +104,6 @@
}
@Test
- public void testProcessMouseEvent_onControl_valid() {
- Control spyControl = spy( control );
- JsonObject properties = new JsonObject()
- .add( "button", 1 )
- .add( "x", 15 )
- .add( "y", 20 )
- .add( "time", 4 );
-
- processMouseEvent( SWT.MouseDown, spyControl, properties );
-
- verify( spyControl ).notifyListeners( eq( SWT.MouseDown ), any( Event.class ) );
- }
-
- @Test
- public void testProcessMouseEvent_onControl_invalid() {
- Control spyControl = spy( control );
- JsonObject properties = new JsonObject()
- .add( "button", 1 )
- .add( "x", -10 )
- .add( "y", 3 )
- .add( "time", 4 );
-
- processMouseEvent( SWT.MouseDown, spyControl, properties );
-
- verify( spyControl, never() ).notifyListeners( eq( SWT.MouseDown ), any( Event.class ) );
- }
-
- @Test
- public void testProcessMouseEvent_onScrollable_valid() {
- Control spyControl = spy( shell );
- JsonObject properties = new JsonObject()
- .add( "button", 1 )
- .add( "x", 20 )
- .add( "y", 60 )
- .add( "time", 4 );
-
- processMouseEvent( SWT.MouseDown, spyControl, properties );
-
- verify( spyControl ).notifyListeners( eq( SWT.MouseDown ), any( Event.class ) );
- }
-
- @Test
- public void testProcessMouseEvent_onScrollable_invalid() {
- Control spyControl = spy( shell );
- JsonObject properties = new JsonObject()
- .add( "button", 1 )
- .add( "x", 2 )
- .add( "y", 3 )
- .add( "time", 4 );
-
- processMouseEvent( SWT.MouseDown, spyControl, properties );
-
- verify( spyControl, never() ).notifyListeners( eq( SWT.MouseDown ), any( Event.class ) );
- }
-
- @Test
- public void testProcessTraverseEvent() {
- JsonObject properties = new JsonObject()
- .add( "shiftKey", true )
- .add( "keyCode", 9 )
- .add( "charCode", 0 );
-
- processTraverseEvent( mockedControl, properties );
-
- ArgumentCaptor<Event> captor = ArgumentCaptor.forClass( Event.class );
- verify( mockedControl ).notifyListeners( eq( SWT.Traverse ), captor.capture() );
- Event event = captor.getValue();
- assertEquals( SWT.SHIFT, event.stateMask );
- assertEquals( 9, event.keyCode );
- assertEquals( 9, event.character );
- assertEquals( SWT.TRAVERSE_TAB_PREVIOUS, event.detail );
- }
-
- @Test
- public void testProcessTraverseEvent_wrongKeyModifier() {
- JsonObject properties = new JsonObject()
- .add( "ctrlKey", true )
- .add( "keyCode", 9 )
- .add( "charCode", 0 );
-
- processTraverseEvent( mockedControl, properties );
-
- verify( mockedControl, never() ).notifyListeners( eq( SWT.Traverse ), any( Event.class ) );
- }
-
- @Test
public void testGetTraverseKey() {
int traverseKey;
traverseKey = getTraverseKey( 13, 0 );
@@ -336,4 +211,161 @@
assertEquals( 2, event.y );
}
+ @Test
+ public void testHandleNotify_processesFocusIn() {
+ JsonObject properties = new JsonObject();
+
+ handler.handleNotify( "FocusIn", properties );
+
+ verify( mockedControl ).notifyListeners( eq( SWT.FocusIn ), any( Event.class ) );
+ }
+
+ @Test
+ public void testHandleNotify_processesFocusOut() {
+ JsonObject properties = new JsonObject();
+
+ handler.handleNotify( "FocusOut", properties );
+
+ verify( mockedControl ).notifyListeners( eq( SWT.FocusOut ), any( Event.class ) );
+ }
+
+ @Test
+ public void testHandleNotify_processesMouseDown_onControl_valid() {
+ Control spyControl = spy( control );
+ handler = new ControlOperationHandler<Control>( spyControl ) {};
+ JsonObject properties = new JsonObject()
+ .add( "button", 1 )
+ .add( "x", 15 )
+ .add( "y", 20 )
+ .add( "time", 4 );
+
+ handler.handleNotifyMouseDown( spyControl, properties );
+
+ verify( spyControl ).notifyListeners( eq( SWT.MouseDown ), any( Event.class ) );
+ }
+
+ @Test
+ public void testHandleNotify_processesMouseDown_onControl_invalid() {
+ Control spyControl = spy( control );
+ JsonObject properties = new JsonObject()
+ .add( "button", 1 )
+ .add( "x", -10 )
+ .add( "y", 3 )
+ .add( "time", 4 );
+
+ handler.handleNotifyMouseDown( spyControl, properties );
+
+ verify( spyControl, never() ).notifyListeners( eq( SWT.MouseDown ), any( Event.class ) );
+ }
+
+ @Test
+ public void testHandleNotify_processesMouseDown_onScrollable_valid() {
+ Control spyControl = spy( shell );
+ JsonObject properties = new JsonObject()
+ .add( "button", 1 )
+ .add( "x", 20 )
+ .add( "y", 60 )
+ .add( "time", 4 );
+
+ handler.handleNotifyMouseDown( spyControl, properties );
+
+ verify( spyControl ).notifyListeners( eq( SWT.MouseDown ), any( Event.class ) );
+ }
+
+ @Test
+ public void testHandleNotify_processesMouseDown_onScrollable_invalid() {
+ Control spyControl = spy( shell );
+ JsonObject properties = new JsonObject()
+ .add( "button", 1 )
+ .add( "x", 2 )
+ .add( "y", 3 )
+ .add( "time", 4 );
+
+ handler.handleNotifyMouseDown( spyControl, properties );
+
+ verify( spyControl, never() ).notifyListeners( eq( SWT.MouseDown ), any( Event.class ) );
+ }
+
+ @Test
+ public void testHandleNotify_processesKeyDown() {
+ JsonObject properties = new JsonObject()
+ .add( "shiftKey", true )
+ .add( "keyCode", 65 )
+ .add( "charCode", 97 );
+
+ handler.handleNotify( EVENT_KEY_DOWN, properties );
+
+ ArgumentCaptor<Event> captor = ArgumentCaptor.forClass( Event.class );
+ verify( mockedControl ).notifyListeners( eq( SWT.KeyDown ), captor.capture() );
+ Event event = captor.getValue();
+ assertEquals( SWT.SHIFT, event.stateMask );
+ assertEquals( 97, event.keyCode );
+ assertEquals( 'a', event.character );
+ }
+
+ @Test
+ public void testHandleNotify_processesKeyUp() {
+ JsonObject properties = new JsonObject()
+ .add( "shiftKey", true )
+ .add( "keyCode", 65 )
+ .add( "charCode", 97 );
+
+ handler.handleNotify( EVENT_KEY_DOWN, properties );
+
+ ArgumentCaptor<Event> captor = ArgumentCaptor.forClass( Event.class );
+ verify( mockedControl ).notifyListeners( eq( SWT.KeyUp ), captor.capture() );
+ Event event = captor.getValue();
+ assertEquals( SWT.SHIFT, event.stateMask );
+ assertEquals( 97, event.keyCode );
+ assertEquals( 'a', event.character );
+ }
+
+ @Test
+ public void testHandleNotify_processesTraverse() {
+ JsonObject properties = new JsonObject()
+ .add( "shiftKey", true )
+ .add( "keyCode", 9 )
+ .add( "charCode", 0 );
+
+ handler.handleNotify( "Traverse", properties );
+
+ ArgumentCaptor<Event> captor = ArgumentCaptor.forClass( Event.class );
+ verify( mockedControl ).notifyListeners( eq( SWT.Traverse ), captor.capture() );
+ Event event = captor.getValue();
+ assertEquals( SWT.SHIFT, event.stateMask );
+ assertEquals( 9, event.keyCode );
+ assertEquals( 9, event.character );
+ assertEquals( SWT.TRAVERSE_TAB_PREVIOUS, event.detail );
+ }
+
+ @Test
+ public void testHandleNotify_processesTraverse_wrongKeyModifier() {
+ JsonObject properties = new JsonObject()
+ .add( "ctrlKey", true )
+ .add( "keyCode", 9 )
+ .add( "charCode", 0 );
+
+ handler.handleNotify( "Traverse", properties );
+
+ verify( mockedControl, never() ).notifyListeners( eq( SWT.Traverse ), any( Event.class ) );
+ }
+
+ @Test
+ public void testHandleNotify_processesMenuDetect() {
+ JsonObject properties = new JsonObject().add( "x", 1 ).add( "y", 2 );
+
+ handler.handleNotify( "MenuDetect", properties );
+
+ verify( mockedControl ).notifyListeners( eq( SWT.MenuDetect ), any( Event.class ) );
+ }
+
+ @Test
+ public void testHandleNotify_processesHelp() {
+ JsonObject properties = new JsonObject();
+
+ handler.handleNotify( "Help", properties );
+
+ verify( mockedControl ).notifyListeners( eq( SWT.Help ), any( Event.class ) );
+ }
+
}
diff --git a/tests/org.eclipse.rap.rwt.test/src/org/eclipse/rap/rwt/internal/protocol/WidgetOperationHandler_Test.java b/tests/org.eclipse.rap.rwt.test/src/org/eclipse/rap/rwt/internal/protocol/WidgetOperationHandler_Test.java
index 62168d7..f6df7be 100644
--- a/tests/org.eclipse.rap.rwt.test/src/org/eclipse/rap/rwt/internal/protocol/WidgetOperationHandler_Test.java
+++ b/tests/org.eclipse.rap.rwt.test/src/org/eclipse/rap/rwt/internal/protocol/WidgetOperationHandler_Test.java
@@ -10,24 +10,72 @@
******************************************************************************/
package org.eclipse.rap.rwt.internal.protocol;
-import static org.mockito.Matchers.any;
-import static org.mockito.Matchers.eq;
+import static org.eclipse.rap.rwt.internal.protocol.WidgetOperationHandler.createSelectionEvent;
+import static org.junit.Assert.assertEquals;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify;
import org.eclipse.rap.json.JsonObject;
import org.eclipse.swt.SWT;
+import org.eclipse.swt.graphics.Rectangle;
import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Widget;
+import org.junit.Before;
import org.junit.Test;
public class WidgetOperationHandler_Test {
+ private Widget widget;
+ private WidgetOperationHandler<Widget> handler;
+
+ @Before
+ public void setUp() {
+ widget = mock( Widget.class );
+ handler = new WidgetOperationHandler<Widget>( widget ) {};
+ }
+
+ @Test
+ public void testCreateSelectionEvent_withoutProperties() {
+ Event event = createSelectionEvent( SWT.Selection, new JsonObject() );
+
+ assertEquals( SWT.Selection, event.type );
+ }
+
+ @Test
+ public void testCreateSelectionEvent_withStateMask() {
+ JsonObject properties = new JsonObject().add( "altKey", true ).add( "ctrlKey", true );
+
+ Event event = createSelectionEvent( SWT.Selection, properties );
+
+ assertEquals( SWT.ALT | SWT.CTRL, event.stateMask );
+ }
+
+ @Test
+ public void testCreateSelectionEvent_withDetail() {
+ JsonObject properties = new JsonObject().add( "detail", "check" );
+
+ Event event = createSelectionEvent( SWT.Selection, properties );
+
+ assertEquals( SWT.CHECK, event.detail );
+ }
+
+ @Test
+ public void testCreateSelectionEvent_withBounds() {
+ JsonObject properties = new JsonObject()
+ .add( "x", 1 )
+ .add( "y", 2 )
+ .add( "width", 3 )
+ .add( "height", 4 );
+
+ Event event = createSelectionEvent( SWT.Selection, properties );
+
+ assertEquals( new Rectangle( 1, 2, 3, 4 ), event.getBounds() );
+ }
+
@Test
public void testHandleSet_delegatesToHandleSetWithWidget() {
- Widget widget = mock( Widget.class );
JsonObject properties = new JsonObject();
WidgetOperationHandler<Widget> handler = spy( new TestWidgetOperationHandler( widget ) );
@@ -38,16 +86,13 @@
@Test( expected = UnsupportedOperationException.class )
public void testHandleSet_throwsExceptionIfNotSupported() {
- Widget widget = mock( Widget.class );
JsonObject properties = new JsonObject();
- WidgetOperationHandler<Widget> handler = spy( new WidgetOperationHandler<Widget>( widget ) {} );
handler.handleSet( properties );
}
@Test
public void testHandleCall_delegatesToHandleCallWithWidget() {
- Widget widget = mock( Widget.class );
JsonObject properties = new JsonObject();
WidgetOperationHandler<Widget> handler = spy( new TestWidgetOperationHandler( widget ) );
@@ -58,9 +103,7 @@
@Test( expected = UnsupportedOperationException.class )
public void testHandleCall_throwsExceptionIfNotSupported() {
- Widget widget = mock( Widget.class );
JsonObject properties = new JsonObject();
- WidgetOperationHandler<Widget> handler = spy( new WidgetOperationHandler<Widget>( widget ) {} );
handler.handleCall( "foo", properties );
}
@@ -78,24 +121,11 @@
@Test( expected = UnsupportedOperationException.class )
public void testHandleNotify_throwsExceptionIfNotSupported() {
- Widget widget = mock( Widget.class );
JsonObject properties = new JsonObject();
- WidgetOperationHandler<Widget> handler = spy( new WidgetOperationHandler<Widget>( widget ) {} );
handler.handleNotify( "foo", properties );
}
- @Test
- public void testHandleNotify_processesHelp() {
- Widget widget = mock( Widget.class );
- JsonObject properties = new JsonObject();
- WidgetOperationHandler<Widget> handler = new WidgetOperationHandler<Widget>( widget ) {};
-
- handler.handleNotify( "Help", properties );
-
- verify( widget ).notifyListeners( eq( SWT.Help ), any( Event.class ) );
- }
-
private static class TestWidgetOperationHandler extends WidgetOperationHandler<Widget> {
private TestWidgetOperationHandler( Widget widget ) {