]> source.dussan.org Git - vaadin-framework.git/commitdiff
Table ItemClickListener now supports middle- and right-button. Fixes #2987
authorMarc Englund <marc.englund@itmill.com>
Wed, 20 May 2009 08:41:36 +0000 (08:41 +0000)
committerMarc Englund <marc.englund@itmill.com>
Wed, 20 May 2009 08:41:36 +0000 (08:41 +0000)
svn changeset:7914/svn branch:6.0

src/com/vaadin/demo/sampler/features/table/TableStylingExample.java
src/com/vaadin/terminal/gwt/client/ui/VScrollTable.java

index afcd565ff7db473459f19f26432f33b2a83627cc..80b059aeda0981e58e778a8263b406b4e37fc131 100644 (file)
@@ -70,6 +70,7 @@ public class TableStylingExample extends VerticalLayout {
         table.setColumnCollapsingAllowed(true);
 
         // Actions (a.k.a context menu)
+
         table.addActionHandler(new Action.Handler() {
             public Action[] getActions(Object target, Object sender) {
                 return ACTIONS;
@@ -115,6 +116,10 @@ public class TableStylingExample extends VerticalLayout {
         // toggle cell 'marked' styling when double-clicked
         table.addListener(new ItemClickListener() {
             public void itemClick(ItemClickEvent event) {
+                if (event.getButton() == ItemClickEvent.BUTTON_RIGHT) {
+                    // you can handle left/right/middle -mouseclick
+                }
+
                 if (event.isDoubleClick()) {
                     Object itemId = event.getItemId();
                     Object propertyId = event.getPropertyId();
index 2bc747fbc8715902430ba15bc81ee4d2ffa76c3e..3978f3cc78b2dec595dc19b2fb67206ed1824a45 100644 (file)
@@ -2203,7 +2203,7 @@ public class VScrollTable extends FlowPanel implements Table, ScrollListener {
                 this.rowKey = rowKey;
                 rowElement = Document.get().createTRElement();
                 setElement(rowElement);
-                DOM.sinkEvents(getElement(), Event.ONCLICK | Event.ONDBLCLICK
+                DOM.sinkEvents(getElement(), Event.ONMOUSEUP | Event.ONDBLCLICK
                         | Event.ONCONTEXTMENU);
             }
 
@@ -2402,7 +2402,8 @@ public class VScrollTable extends FlowPanel implements Table, ScrollListener {
                                     paintableId,
                                     "clickEvent",
                                     details.toString(),
-                                    !(!doubleClick
+                                    !(event.getButton() == Event.BUTTON_LEFT
+                                            && !doubleClick
                                             && selectMode > Table.SELECT_MODE_NONE && immediate));
                 }
             }
@@ -2416,9 +2417,13 @@ public class VScrollTable extends FlowPanel implements Table, ScrollListener {
                     Element targetTdOrTr = getEventTargetTdOrTr(event);
                     if (targetTdOrTr != null) {
                         switch (DOM.eventGetType(event)) {
-                        case Event.ONCLICK:
+                        case Event.ONDBLCLICK:
+                            handleClickEvent(event, targetTdOrTr);
+                            break;
+                        case Event.ONMOUSEUP:
                             handleClickEvent(event, targetTdOrTr);
-                            if (selectMode > Table.SELECT_MODE_NONE) {
+                            if (event.getButton() == Event.BUTTON_LEFT
+                                    && selectMode > Table.SELECT_MODE_NONE) {
                                 toggleSelection();
                                 // Note: changing the immediateness of this
                                 // might
@@ -2428,9 +2433,6 @@ public class VScrollTable extends FlowPanel implements Table, ScrollListener {
                                         selectedRowKeys.toArray(), immediate);
                             }
                             break;
-                        case Event.ONDBLCLICK:
-                            handleClickEvent(event, targetTdOrTr);
-                            break;
                         case Event.ONCONTEXTMENU:
                             showContextMenu(event);
                             break;