}
if (e == null || pid == null) {
+
+ // Still test for context menu option
+ String subPartName = client.getContextMenu().getSubPartName(
+ targetElement);
+ if (subPartName != null) {
+ // IContextMenu, singleton attached directly to rootpanel
+ return "/IContextMenu[0]" + SUBPART_SEPARATOR + subPartName;
+
+ }
return null;
}
String[] split = part.split("\\[");
Iterator<? extends Widget> i;
- if (split[0].equals("IWindow")) {
+ String widgetClassName = split[0];
+ if (widgetClassName.equals("IWindow")) {
i = client.getView().getSubWindowList().iterator();
+ } else if (widgetClassName.equals("IContextMenu")) {
+ return client.getContextMenu();
} else {
i = parent.iterator();
}
Widget child = i.next();
String simpleName2 = Util.getSimpleName(child);
- if (split[0].equals(simpleName2)) {
+ if (widgetClassName.equals(simpleName2)) {
if (pos == 0) {
w = child;
ok = true;
package com.itmill.toolkit.terminal.gwt.client.ui;
+import com.google.gwt.dom.client.NodeList;
+import com.google.gwt.dom.client.TableRowElement;
+import com.google.gwt.dom.client.TableSectionElement;
+import com.google.gwt.user.client.Element;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.MenuBar;
import com.google.gwt.user.client.ui.MenuItem;
import com.google.gwt.user.client.ui.PopupPanel;
+import com.itmill.toolkit.terminal.gwt.client.ApplicationConnection;
-public class IContextMenu extends IToolkitOverlay {
+public class IContextMenu extends IToolkitOverlay implements SubPartAware {
private ActionOwner actionOwner;
* super.onBrowserEvent(event); }
*/
}
+
+ public Element getSubPartElement(String subPart) {
+ int index = Integer.parseInt(subPart.substring(6));
+ ApplicationConnection.getConsole().log(
+ "Searching element for selection index " + index);
+ Element wrapperdiv = menu.getElement();
+ com.google.gwt.dom.client.TableSectionElement tBody = (TableSectionElement) wrapperdiv
+ .getFirstChildElement().getFirstChildElement();
+ TableRowElement item = tBody.getRows().getItem(index);
+ com.google.gwt.dom.client.Element clickableDivElement = item
+ .getFirstChildElement().getFirstChildElement();
+ return clickableDivElement.cast();
+ }
+
+ public String getSubPartName(Element subElement) {
+ if (getElement().isOrHasChild(subElement)) {
+ com.google.gwt.dom.client.Element e = subElement;
+ {
+ while (e != null && !e.getTagName().toLowerCase().equals("tr")) {
+ e = e.getParentElement();
+ ApplicationConnection.getConsole().log("Found row");
+ }
+ }
+ com.google.gwt.dom.client.TableSectionElement parentElement = (TableSectionElement) e
+ .getParentElement();
+ NodeList<TableRowElement> rows = parentElement.getRows();
+ for (int i = 0; i < rows.getLength(); i++) {
+ if (rows.getItem(i) == e) {
+ ApplicationConnection.getConsole().log(
+ "Found index for row" + 1);
+ return "option" + i;
+ }
+ }
+ return null;
+ } else {
+ return null;
+ }
+ }
}