From 3b385cda46b30b9843e9509ecdc2df7ef800e1b2 Mon Sep 17 00:00:00 2001 From: Marc Englund Date: Wed, 20 May 2009 08:41:36 +0000 Subject: [PATCH] Table ItemClickListener now supports middle- and right-button. Fixes #2987 svn changeset:7914/svn branch:6.0 --- .../features/table/TableStylingExample.java | 5 +++++ .../terminal/gwt/client/ui/VScrollTable.java | 16 +++++++++------- 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/src/com/vaadin/demo/sampler/features/table/TableStylingExample.java b/src/com/vaadin/demo/sampler/features/table/TableStylingExample.java index afcd565ff7..80b059aeda 100644 --- a/src/com/vaadin/demo/sampler/features/table/TableStylingExample.java +++ b/src/com/vaadin/demo/sampler/features/table/TableStylingExample.java @@ -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(); diff --git a/src/com/vaadin/terminal/gwt/client/ui/VScrollTable.java b/src/com/vaadin/terminal/gwt/client/ui/VScrollTable.java index 2bc747fbc8..3978f3cc78 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/VScrollTable.java +++ b/src/com/vaadin/terminal/gwt/client/ui/VScrollTable.java @@ -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; -- 2.39.5