bug 411266: Allow context menus on all FormFields
https://bugs.eclipse.org/bugs/show_bug.cgi?id=411266
Bugfix for RwtButtons: click re-enabled, request popup added.
diff --git a/org.eclipse.scout.rt.ui.rap/src/org/eclipse/scout/rt/ui/rap/form/fields/button/RwtScoutButton.java b/org.eclipse.scout.rt.ui.rap/src/org/eclipse/scout/rt/ui/rap/form/fields/button/RwtScoutButton.java
index 668b7dd..7648a2a 100644
--- a/org.eclipse.scout.rt.ui.rap/src/org/eclipse/scout/rt/ui/rap/form/fields/button/RwtScoutButton.java
+++ b/org.eclipse.scout.rt.ui.rap/src/org/eclipse/scout/rt/ui/rap/form/fields/button/RwtScoutButton.java
@@ -54,7 +54,7 @@
private RwtContextMenuMarkerComposite m_contextMenuMarker;
-// private RwtScoutMenuSupport m_menuSupport;
+ private RwtScoutContextMenu m_contextMenu;
public RwtScoutButton() {
m_selectionLock = new OptimisticLock();
@@ -89,21 +89,9 @@
setUiLabel(null);
if (uiFieldAsButton != null) {
setUiField(uiFieldAsButton);
-//
-// // attach rwt listeners
-// uiFieldAsButton.addListener(ButtonEx.SELECTION_ACTION, new P_RwtSelectionListener());
-//
-// m_menuSupport = RwtScoutMenuSupport.install(getUiField(), getUiField().getParent(), new IMenuProvider() {
-// @Override
-// public List<IMenu> getValidMenus(MenuContext menuContext) {
-// return getScoutObject().getUIFacade().fireButtonPopupFromUI();
-// }
-//
-// @Override
-// public List<IMenu> getAllMenus() {
-// return getScoutObject().getMenus();
-// }
-// }, getScoutObject(), getUiEnvironment(), getUiField());
+
+ // attach rwt listeners
+ uiFieldAsButton.addListener(ButtonEx.SELECTION_ACTION, new P_RwtSelectionListener());
LogicalGridData gd = (LogicalGridData) getUiField().getLayoutData();
adaptButtonLayoutData(gd);
@@ -125,8 +113,8 @@
@Override
protected void installContextMenu() {
- RwtScoutContextMenu contextMenu = new RwtScoutContextMenu(getUiField().getShell(), getScoutObject().getContextMenu(), m_contextMenuMarker, getUiEnvironment());
- getUiField().setMenu(contextMenu.getUiMenu());
+ m_contextMenu = new RwtScoutContextMenu(getUiField().getShell(), getScoutObject().getContextMenu(), m_contextMenuMarker, getUiEnvironment());
+ getUiField().setMenu(getContextMenu().getUiMenu());
}
/**
@@ -311,11 +299,11 @@
protected void disarmButtonFromScout() {
}
-// protected void requestPopupFromScout() {
-// if (m_menuSupport != null) {
-// m_menuSupport.openMenu();
-// }
-// }
+ protected void requestPopupFromScout() {
+ if (getContextMenu() != null) {
+ getContextMenu().getUiMenu().setVisible(true);
+ }
+ }
/**
* in rwt thread
@@ -334,6 +322,10 @@
}
}
+ public RwtScoutContextMenu getContextMenu() {
+ return m_contextMenu;
+ }
+
private class P_RwtSelectionListener implements Listener {
private static final long serialVersionUID = 1L;
@@ -372,52 +364,17 @@
});
break;
}
-// case ButtonEvent.TYPE_REQUEST_POPUP: {
-// getUiEnvironment().invokeUiLater(
-// new Runnable() {
-// @Override
-// public void run() {
-// requestPopupFromScout();
-// }
-// });
-// break;
-// }
+ case ButtonEvent.TYPE_REQUEST_POPUP: {
+ getUiEnvironment().invokeUiLater(
+ new Runnable() {
+ @Override
+ public void run() {
+ requestPopupFromScout();
+ }
+ });
+ break;
+ }
}
}
} // end class P_ScoutButtonListener
-
-// private class P_ContextMenuListener extends MenuAdapterEx {
-// private static final long serialVersionUID = 1L;
-//
-// public P_ContextMenuListener(Control menuControl, Control keyStrokeWidget) {
-// super(menuControl, keyStrokeWidget);
-// }
-//
-// @Override
-// public void menuShown(MenuEvent e) {
-// super.menuShown(e);
-//
-// try {
-// if (m_scoutActions == null) {
-// m_scoutActions = RwtMenuUtility.collectMenus(getScoutObject(), getUiEnvironment());
-// }
-// Menu menu = ((Menu) e.getSource());
-// RwtMenuUtility.fillContextMenu(m_scoutActions, RwtScoutButton.this.getUiEnvironment(), menu);
-// }
-// finally {
-// m_scoutActions = null;
-// }
-// }
-// } // end class P_ContextMenuListener
-//
-// private class P_RwtMenuDetectListener implements MenuDetectListener {
-//
-// private static final long serialVersionUID = 1L;
-//
-// @Override
-// public void menuDetected(MenuDetectEvent e) {
-// createAndShowMenu();
-// }
-//
-// }
}