Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTom Schindl2014-05-22 10:40:50 +0000
committerTom Schindl2014-05-22 10:40:50 +0000
commit6e365a59151fd13e1f10a7fe2e22b164256344f4 (patch)
treeeecb22a02bed98fcc809b86299e4f976ce4cbb20
parent6e41c0f31ba99b9d8f7b3c75dff766293e91fd3e (diff)
downloadorg.eclipse.rap.incubator.e4-6e365a59151fd13e1f10a7fe2e22b164256344f4.tar.gz
org.eclipse.rap.incubator.e4-6e365a59151fd13e1f10a7fe2e22b164256344f4.tar.xz
org.eclipse.rap.incubator.e4-6e365a59151fd13e1f10a7fe2e22b164256344f4.zip
Bug 435496 - [e4] RAP renderer does not support ViewMenu & Part-ToolBars
-rw-r--r--bundles/org.eclipse.e4.ui.workbench.renderers.swt/icons/viewMenu.pngbin0 -> 135 bytes
-rw-r--r--bundles/org.eclipse.e4.ui.workbench.renderers.swt/src/org/eclipse/e4/ui/workbench/renderers/swt/StackRenderer.java466
-rw-r--r--demo/org.eclipse.rap.e4.demo/Application.e4xmi24
-rw-r--r--demo/org.eclipse.rap.e4.demo/src/org/eclipse/rap/e4/demo/handlers/ExitApplication.java10
-rw-r--r--demo/org.eclipse.rap.e4.demo/src/org/eclipse/rap/e4/demo/handlers/HelloWorldHandler.java16
5 files changed, 261 insertions, 255 deletions
diff --git a/bundles/org.eclipse.e4.ui.workbench.renderers.swt/icons/viewMenu.png b/bundles/org.eclipse.e4.ui.workbench.renderers.swt/icons/viewMenu.png
new file mode 100644
index 0000000..439b26c
--- /dev/null
+++ b/bundles/org.eclipse.e4.ui.workbench.renderers.swt/icons/viewMenu.png
Binary files differ
diff --git a/bundles/org.eclipse.e4.ui.workbench.renderers.swt/src/org/eclipse/e4/ui/workbench/renderers/swt/StackRenderer.java b/bundles/org.eclipse.e4.ui.workbench.renderers.swt/src/org/eclipse/e4/ui/workbench/renderers/swt/StackRenderer.java
index c370257..e248fbf 100644
--- a/bundles/org.eclipse.e4.ui.workbench.renderers.swt/src/org/eclipse/e4/ui/workbench/renderers/swt/StackRenderer.java
+++ b/bundles/org.eclipse.e4.ui.workbench.renderers.swt/src/org/eclipse/e4/ui/workbench/renderers/swt/StackRenderer.java
@@ -24,6 +24,7 @@ import org.eclipse.e4.core.contexts.IEclipseContext;
import org.eclipse.e4.core.di.annotations.Optional;
import org.eclipse.e4.core.services.events.IEventBroker;
import org.eclipse.e4.ui.di.UIEventTopic;
+import org.eclipse.e4.ui.internal.workbench.OpaqueElementUtil;
import org.eclipse.e4.ui.internal.workbench.renderers.swt.BasicPartList;
import org.eclipse.e4.ui.internal.workbench.renderers.swt.SWTRenderersMessages;
import org.eclipse.e4.ui.internal.workbench.swt.AbstractPartRenderer;
@@ -53,6 +54,7 @@ import org.eclipse.e4.ui.workbench.modeling.EPartService;
import org.eclipse.e4.ui.workbench.modeling.ISaveHandler;
import org.eclipse.e4.ui.workbench.modeling.ISaveHandler.Save;
import org.eclipse.e4.ui.workbench.swt.util.ISWTResourceUtilities;
+import org.eclipse.jface.action.IContributionItem;
import org.eclipse.jface.action.LegacyActionTools;
import org.eclipse.jface.action.MenuManager;
import org.eclipse.swt.SWT;
@@ -73,6 +75,8 @@ import org.eclipse.swt.events.SelectionListener;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.graphics.Rectangle;
+import org.eclipse.swt.layout.RowData;
+import org.eclipse.swt.layout.RowLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Display;
@@ -81,6 +85,7 @@ import org.eclipse.swt.widgets.Menu;
import org.eclipse.swt.widgets.MenuItem;
import org.eclipse.swt.widgets.Monitor;
import org.eclipse.swt.widgets.Shell;
+import org.eclipse.swt.widgets.ToolBar;
import org.eclipse.swt.widgets.ToolItem;
import org.eclipse.swt.widgets.Widget;
import org.osgi.service.event.Event;
@@ -637,148 +642,162 @@ public class StackRenderer extends LazyStackRenderer {
* @param ctf
*/
private void addTopRight(CTabFolder ctf) {
-//FIXME RAP unsupported
-// Composite trComp = new Composite(ctf, SWT.NONE);
-// trComp.setBackground(Display.getCurrent().getSystemColor(
-// SWT.COLOR_DARK_CYAN));
-// RowLayout rl = new RowLayout();
-// trComp.setLayout(rl);
-// rl.marginBottom = rl.marginTop = rl.marginRight = rl.marginLeft = 0;
-// ctf.setTopRight(trComp, SWT.RIGHT | SWT.WRAP);
-//
-// // Initially it's not visible
-// trComp.setVisible(false);
-//
-// // Create a TB for the view's drop-down menu
-// ToolBar menuTB = new ToolBar(trComp, SWT.FLAT | SWT.RIGHT);
-// menuTB.setData(TAG_VIEW_MENU);
-// RowData rd = new RowData();
-// menuTB.setLayoutData(rd);
-// ToolItem ti = new ToolItem(menuTB, SWT.PUSH);
-// ti.setImage(getViewMenuImage());
-// ti.setHotImage(null);
-// ti.setToolTipText(SWTRenderersMessages.viewMenu);
-//
-// // Initially it's not visible
-// rd.exclude = true;
-// menuTB.setVisible(false);
-//
-// ti.addSelectionListener(new SelectionListener() {
-// @Override
-// public void widgetSelected(SelectionEvent e) {
-// showMenu((ToolItem) e.widget);
-// }
-//
-// @Override
-// public void widgetDefaultSelected(SelectionEvent e) {
-// showMenu((ToolItem) e.widget);
-// }
-// });
-// menuTB.getAccessible().addAccessibleListener(new AccessibleAdapter() {
-// @Override
-// public void getName(AccessibleEvent e) {
-// if (e.childID != ACC.CHILDID_SELF) {
-// Accessible accessible = (Accessible) e.getSource();
-// ToolBar toolBar = (ToolBar) accessible.getControl();
-// if (0 <= e.childID && e.childID < toolBar.getItemCount()) {
-// ToolItem item = toolBar.getItem(e.childID);
-// if (item != null) {
-// e.result = item.getToolTipText();
-// }
-// }
-// }
-// }
-// });
-//
-// // Set an initial bounds
-// trComp.pack();
+ Composite trComp = new Composite(ctf, SWT.NONE);
+ trComp.setBackground(Display.getCurrent().getSystemColor(
+ SWT.COLOR_DARK_CYAN));
+ RowLayout rl = new RowLayout();
+ trComp.setLayout(rl);
+ rl.marginBottom = rl.marginTop = rl.marginRight = rl.marginLeft = 0;
+ ctf.setTopRight(trComp, SWT.RIGHT /* FIXME RAP NOT SUPPORTED | SWT.WRAP */);
+
+ // Initially it's not visible
+ trComp.setVisible(false);
+
+ // Create a TB for the view's drop-down menu
+ ToolBar menuTB = new ToolBar(trComp, SWT.FLAT | SWT.RIGHT);
+ menuTB.setData(TAG_VIEW_MENU);
+ RowData rd = new RowData();
+ menuTB.setLayoutData(rd);
+ ToolItem ti = new ToolItem(menuTB, SWT.PUSH);
+ ti.setImage(getViewMenuImage());
+ ti.setHotImage(null);
+ ti.setToolTipText(SWTRenderersMessages.viewMenu);
+
+ // Initially it's not visible
+ rd.exclude = true;
+ menuTB.setVisible(false);
+
+ ti.addSelectionListener(new SelectionListener() {
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ showMenu((ToolItem) e.widget);
+ }
+
+ @Override
+ public void widgetDefaultSelected(SelectionEvent e) {
+ showMenu((ToolItem) e.widget);
+ }
+ });
+ // menuTB.getAccessible().addAccessibleListener(new AccessibleAdapter()
+ // {
+ // @Override
+ // public void getName(AccessibleEvent e) {
+ // if (e.childID != ACC.CHILDID_SELF) {
+ // Accessible accessible = (Accessible) e.getSource();
+ // ToolBar toolBar = (ToolBar) accessible.getControl();
+ // if (0 <= e.childID && e.childID < toolBar.getItemCount()) {
+ // ToolItem item = toolBar.getItem(e.childID);
+ // if (item != null) {
+ // e.result = item.getToolTipText();
+ // }
+ // }
+ // }
+ // }
+ // });
+
+ // Set an initial bounds
+ trComp.pack();
}
boolean adjusting = false;
public void adjustTopRight(final CTabFolder ctf) {
-//FIXME RAP unsupported
-// if (adjusting)
-// return;
-//
-// adjusting = true;
-//
-// try {
-// // Gather the parameters...old part, new part...
-// MPartStack stack = (MPartStack) ctf.getData(OWNING_ME);
-// MUIElement element = stack.getSelectedElement();
-// MPart curPart = (MPart) ctf.getTopRight().getData(THE_PART_KEY);
-// MPart part = null;
-// if (element != null) {
-// part = (MPart) ((element instanceof MPart) ? element
-// : ((MPlaceholder) element).getRef());
-// }
-//
-// // Hide the old TB if we're changing
-// if (part != curPart && curPart != null
-// && curPart.getToolbar() != null) {
-// curPart.getToolbar().setVisible(false);
-// }
-//
-// Composite trComp = (Composite) ctf.getTopRight();
-// Control[] kids = trComp.getChildren();
-//
-// boolean needsTB = part != null && part.getToolbar() != null
-// && part.getToolbar().isToBeRendered();
-//
-// // View menu (if any)
-// MMenu viewMenu = getViewMenu(part);
-// boolean needsMenu = viewMenu != null
-// && hasVisibleMenuItems(viewMenu, part);
-//
-// // Check the current state of the TB's
-// ToolBar menuTB = (ToolBar) kids[kids.length - 1];
-//
-// // We need to modify the 'exclude' bit based on if the menuTB is
-// // visible or not
-// RowData rd = (RowData) menuTB.getLayoutData();
-// if (needsMenu) {
-// menuTB.getItem(0).setData(THE_PART_KEY, part);
-// menuTB.moveBelow(null);
-// menuTB.pack();
-// rd.exclude = false;
-// menuTB.setVisible(true);
-// } else {
-// menuTB.getItem(0).setData(THE_PART_KEY, null);
-// rd.exclude = true;
-// menuTB.setVisible(false);
-// }
-//
-// ToolBar newViewTB = null;
-// if (needsTB && part != null && part.getObject() != null) {
-// part.getToolbar().setVisible(true);
-// newViewTB = (ToolBar) renderer.createGui(part.getToolbar(),
-// ctf.getTopRight(), part.getContext());
-// // We can get calls during shutdown in which case the
-// // rendering engine will return 'null' because you can't
-// // render anything while a removeGui is taking place...
-// if (newViewTB == null) {
-// adjusting = false;
-// return;
-// }
-// newViewTB.moveAbove(null);
-// newViewTB.pack();
-// }
-//
-// if (needsMenu || needsTB) {
-// ctf.getTopRight().setData(THE_PART_KEY, part);
-// ctf.getTopRight().pack(true);
-// ctf.getTopRight().setVisible(true);
-// } else {
-// ctf.getTopRight().setData(THE_PART_KEY, null);
-// ctf.getTopRight().setVisible(false);
-// }
-//
-// // Pack the result
-// trComp.pack();
-// } finally {
-// adjusting = false;
-// }
+ if (adjusting)
+ return;
+
+ adjusting = true;
+
+ try {
+ // Gather the parameters...old part, new part...
+ MPartStack stack = (MPartStack) ctf.getData(OWNING_ME);
+ MUIElement element = stack.getSelectedElement();
+ MPart curPart = (MPart) ctf.getTopRight().getData(THE_PART_KEY);
+ MPart part = null;
+ if (element != null) {
+ part = (MPart) ((element instanceof MPart) ? element
+ : ((MPlaceholder) element).getRef());
+ }
+
+ // Hide the old TB if we're changing
+ if (part != curPart && curPart != null
+ && curPart.getToolbar() != null) {
+ // RCP does reparenting curPart.getToolbar().setVisible(false);
+ Control c = (Control) curPart.getToolbar().getWidget();
+ c.setVisible(false);
+ RowData rd = (RowData) c.getLayoutData();
+ rd.exclude = true;
+ }
+
+ Composite trComp = (Composite) ctf.getTopRight();
+ Control[] kids = trComp.getChildren();
+
+ boolean needsTB = part != null && part.getToolbar() != null
+ && part.getToolbar().isToBeRendered();
+
+ // View menu (if any)
+ MMenu viewMenu = getViewMenu(part);
+ boolean needsMenu = viewMenu != null
+ && hasVisibleMenuItems(viewMenu, part);
+
+ // Check the current state of the TB's
+ ToolBar menuTB = (ToolBar) kids[kids.length - 1];
+
+ // We need to modify the 'exclude' bit based on if the menuTB is
+ // visible or not
+ RowData rd = (RowData) menuTB.getLayoutData();
+ if (needsMenu) {
+ menuTB.getItem(0).setData(THE_PART_KEY, part);
+ menuTB.moveBelow(null);
+ menuTB.pack();
+ rd.exclude = false;
+ menuTB.setVisible(true);
+ } else {
+ menuTB.getItem(0).setData(THE_PART_KEY, null);
+ rd.exclude = true;
+ menuTB.setVisible(false);
+ }
+
+ ToolBar newViewTB = null;
+ if (needsTB && part != null && part.getObject() != null) {
+ // RCP does reparenting part.getToolbar().setVisible(true);
+ newViewTB = (ToolBar) renderer.createGui(part.getToolbar(),
+ ctf.getTopRight(), part.getContext());
+ if (newViewTB != null) {
+ RowData rowData = (RowData) newViewTB.getLayoutData();
+ if (rowData == null) {
+ rowData = new RowData();
+ newViewTB.setLayoutData(rowData);
+ } else {
+ rowData.exclude = false;
+ newViewTB.setVisible(true);
+ }
+ }
+
+ // We can get calls during shutdown in which case the
+ // rendering engine will return 'null' because you can't
+ // render anything while a removeGui is taking place...
+ if (newViewTB == null) {
+ adjusting = false;
+ return;
+ }
+ newViewTB.moveAbove(null);
+ newViewTB.pack();
+ }
+
+ if (needsMenu || needsTB) {
+ ctf.getTopRight().setData(THE_PART_KEY, part);
+ ctf.getTopRight().pack(true);
+ ctf.getTopRight().setVisible(true);
+ } else {
+ ctf.getTopRight().setData(THE_PART_KEY, null);
+ ctf.getTopRight().setVisible(false);
+ }
+
+ // Pack the result
+ trComp.pack();
+ } finally {
+ adjusting = false;
+ }
}
@Override
@@ -1296,48 +1315,15 @@ public class StackRenderer extends LazyStackRenderer {
swtMenu.dispose();
}
}
-//FIXME RAP unsupported
-// private Image getViewMenuImage() {
-// if (viewMenuImage == null) {
-// Display d = Display.getCurrent();
-//
-// Image viewMenu = new Image(d, 16, 16);
-// Image viewMenuMask = new Image(d, 16, 16);
-//
-// Display display = Display.getCurrent();
-// GC gc = new GC(viewMenu);
-// GC maskgc = new GC(viewMenuMask);
-// gc.setForeground(display
-// .getSystemColor(SWT.COLOR_WIDGET_DARK_SHADOW));
-// gc.setBackground(display.getSystemColor(SWT.COLOR_LIST_BACKGROUND));
-//
-// int[] shapeArray = new int[] { 6, 3, 15, 3, 11, 7, 10, 7 };
-// gc.fillPolygon(shapeArray);
-// gc.drawPolygon(shapeArray);
-//
-// Color black = display.getSystemColor(SWT.COLOR_BLACK);
-// Color white = display.getSystemColor(SWT.COLOR_WHITE);
-//
-// maskgc.setBackground(black);
-// maskgc.fillRectangle(0, 0, 16, 16);
-//
-// maskgc.setBackground(white);
-// maskgc.setForeground(white);
-// maskgc.fillPolygon(shapeArray);
-// maskgc.drawPolygon(shapeArray);
-// gc.dispose();
-// maskgc.dispose();
-//
-// ImageData data = viewMenu.getImageData();
-// data.transparentPixel = data.getPixel(0, 0);
-//
-// viewMenuImage = new Image(d, viewMenu.getImageData(),
-// viewMenuMask.getImageData());
-// viewMenu.dispose();
-// viewMenuMask.dispose();
-// }
-// return viewMenuImage;
-// }
+
+ private Image getViewMenuImage() {
+ if (viewMenuImage == null) {
+ viewMenuImage = new Image(Display.getCurrent(), getClass()
+ .getClassLoader()
+ .getResourceAsStream("/icons/viewMenu.png")); //$NON-NLS-1$
+ }
+ return viewMenuImage;
+ }
private void openMenuFor(MPart part, CTabFolder folder, Point point) {
Menu tabMenu = createTabMenu(folder, part);
@@ -1540,67 +1526,67 @@ public class StackRenderer extends LazyStackRenderer {
}
return null;
}
-//FIXME RAP unsupported
-// /**
-// * Determine whether the given view menu has any visible menu items.
-// *
-// * @param viewMenu
-// * the view menu to check
-// * @param part
-// * the view menu's parent part
-// * @return <tt>true</tt> if the specified view menu has visible children,
-// * <tt>false</tt> otherwise
-// */
-// private boolean hasVisibleMenuItems(MMenu viewMenu, MPart part) {
-// if (!viewMenu.isToBeRendered() || !viewMenu.isVisible()) {
-// return false;
-// }
-//
-// for (MMenuElement menuElement : viewMenu.getChildren()) {
-// if (menuElement.isToBeRendered() && menuElement.isVisible()) {
-// if (OpaqueElementUtil.isOpaqueMenuItem(menuElement)
-// || OpaqueElementUtil.isOpaqueMenuSeparator(menuElement)) {
-// IContributionItem item = (IContributionItem) OpaqueElementUtil
-// .getOpaqueItem(menuElement);
-// if (item != null && item.isVisible()) {
-// return true;
-// }
-// } else {
-// return true;
-// }
-// }
-// }
-//
-// Object menuRenderer = viewMenu.getRenderer();
-// if (menuRenderer instanceof MenuManagerRenderer) {
-// MenuManager manager = ((MenuManagerRenderer) menuRenderer)
-// .getManager(viewMenu);
-// if (manager != null && manager.isVisible()) {
-// return true;
-// }
-// }
-//
-// Control control = (Control) part.getWidget();
-// if (control != null) {
-// Menu menu = (Menu) renderer.createGui(viewMenu, control.getShell(),
-// part.getContext());
-// if (menu != null) {
-// menuRenderer = viewMenu.getRenderer();
-// if (menuRenderer instanceof MenuManagerRenderer) {
-// MenuManagerRenderer menuManagerRenderer = (MenuManagerRenderer) menuRenderer;
-// MenuManager manager = menuManagerRenderer
-// .getManager(viewMenu);
-// if (manager != null) {
-// // remark ourselves as dirty so that the menu will be
-// // reconstructed
-// manager.markDirty();
-// }
-// }
-// return menu.getItemCount() != 0;
-// }
-// }
-// return false;
-// }
+
+ /**
+ * Determine whether the given view menu has any visible menu items.
+ *
+ * @param viewMenu
+ * the view menu to check
+ * @param part
+ * the view menu's parent part
+ * @return <tt>true</tt> if the specified view menu has visible children,
+ * <tt>false</tt> otherwise
+ */
+ private boolean hasVisibleMenuItems(MMenu viewMenu, MPart part) {
+ if (!viewMenu.isToBeRendered() || !viewMenu.isVisible()) {
+ return false;
+ }
+
+ for (MMenuElement menuElement : viewMenu.getChildren()) {
+ if (menuElement.isToBeRendered() && menuElement.isVisible()) {
+ if (OpaqueElementUtil.isOpaqueMenuItem(menuElement)
+ || OpaqueElementUtil.isOpaqueMenuSeparator(menuElement)) {
+ IContributionItem item = (IContributionItem) OpaqueElementUtil
+ .getOpaqueItem(menuElement);
+ if (item != null && item.isVisible()) {
+ return true;
+ }
+ } else {
+ return true;
+ }
+ }
+ }
+
+ Object menuRenderer = viewMenu.getRenderer();
+ if (menuRenderer instanceof MenuManagerRenderer) {
+ MenuManager manager = ((MenuManagerRenderer) menuRenderer)
+ .getManager(viewMenu);
+ if (manager != null && manager.isVisible()) {
+ return true;
+ }
+ }
+
+ Control control = (Control) part.getWidget();
+ if (control != null) {
+ Menu menu = (Menu) renderer.createGui(viewMenu, control.getShell(),
+ part.getContext());
+ if (menu != null) {
+ menuRenderer = viewMenu.getRenderer();
+ if (menuRenderer instanceof MenuManagerRenderer) {
+ MenuManagerRenderer menuManagerRenderer = (MenuManagerRenderer) menuRenderer;
+ MenuManager manager = menuManagerRenderer
+ .getManager(viewMenu);
+ if (manager != null) {
+ // remark ourselves as dirty so that the menu will be
+ // reconstructed
+ manager.markDirty();
+ }
+ }
+ return menu.getItemCount() != 0;
+ }
+ }
+ return false;
+ }
@SuppressWarnings("javadoc")
public class TabStateHandler implements EventHandler {
diff --git a/demo/org.eclipse.rap.e4.demo/Application.e4xmi b/demo/org.eclipse.rap.e4.demo/Application.e4xmi
index c3418e6..d4de7cc 100644
--- a/demo/org.eclipse.rap.e4.demo/Application.e4xmi
+++ b/demo/org.eclipse.rap.e4.demo/Application.e4xmi
@@ -4,19 +4,33 @@
<children xsi:type="basic:PartSashContainer" xmi:id="_FPvvQKCAEeOCJ5u74o02rg" elementId="org.eclipse.rap.e4.demo.partsashcontainer.0" horizontal="true">
<children xsi:type="basic:Part" xmi:id="_FzadAKCAEeOCJ5u74o02rg" elementId="org.eclipse.rap.e4.demo.part.0" containerData="100"/>
<children xsi:type="basic:PartStack" xmi:id="_M-uNIKCAEeOCJ5u74o02rg" elementId="org.eclipse.rap.e4.demo.partstack.0" containerData="300">
- <children xsi:type="basic:Part" xmi:id="_GwxdIKCAEeOCJ5u74o02rg" elementId="org.eclipse.rap.e4.demo.part.1" contributionURI="bundleclass://org.eclipse.rap.e4.demo/org.eclipse.rap.e4.demo.parts.EventSamplePart" label="%part.label.1"/>
- <children xsi:type="basic:Part" xmi:id="_rk6l0KhAEeO0Haj3z6o3PQ" elementId="org.eclipse.rap.e4.demo.part.2" contributionURI="bundleclass://org.eclipse.rap.e4.demo/org.eclipse.rap.e4.demo.parts.PreferenceSamplePart" label="%part.label.2"/>
- <children xsi:type="basic:Part" xmi:id="_JBUKsKhHEeO0Haj3z6o3PQ" elementId="org.eclipse.rap.e4.demo.part.3" contributionURI="bundleclass://org.eclipse.rap.e4.demo/org.eclipse.rap.e4.demo.parts.NLSSamplePart" label="%part.label.3"/>
+ <children xsi:type="basic:Part" xmi:id="_GwxdIKCAEeOCJ5u74o02rg" elementId="org.eclipse.rap.e4.demo.part.1" contributionURI="bundleclass://org.eclipse.rap.e4.demo/org.eclipse.rap.e4.demo.parts.EventSamplePart" label="%part.label.1">
+ <toolbar xmi:id="_HHjAcOGREeObqJp-_0s5uA" elementId="org.eclipse.rap.e4.demo.toolbar.1">
+ <children xsi:type="menu:DirectToolItem" xmi:id="_Hh9EgOGREeObqJp-_0s5uA" elementId="org.eclipse.rap.e4.demo.directtoolitem.1" label="TB-Item" contributionURI="bundleclass://org.eclipse.rap.e4.demo/org.eclipse.rap.e4.demo.handlers.HelloWorldHandler"/>
+ </toolbar>
+ </children>
+ <children xsi:type="basic:Part" xmi:id="_rk6l0KhAEeO0Haj3z6o3PQ" elementId="org.eclipse.rap.e4.demo.part.2" contributionURI="bundleclass://org.eclipse.rap.e4.demo/org.eclipse.rap.e4.demo.parts.PreferenceSamplePart" label="%part.label.2">
+ <menus xmi:id="_EIg8IOGUEeObqJp-_0s5uA" elementId="org.eclipse.rap.e4.demo.menu.2">
+ <tags>ViewMenu</tags>
+ <children xsi:type="menu:DirectMenuItem" xmi:id="_HAt4UOGUEeObqJp-_0s5uA" elementId="org.eclipse.rap.e4.demo.directmenuitem.1" label="Hello World" contributionURI="bundleclass://org.eclipse.rap.e4.demo/org.eclipse.rap.e4.demo.handlers.HelloWorldHandler"/>
+ </menus>
+ </children>
+ <children xsi:type="basic:Part" xmi:id="_JBUKsKhHEeO0Haj3z6o3PQ" elementId="org.eclipse.rap.e4.demo.part.3" contributionURI="bundleclass://org.eclipse.rap.e4.demo/org.eclipse.rap.e4.demo.parts.NLSSamplePart" label="%part.label.3">
+ <menus xmi:id="_4EurEOGcEeObqJp-_0s5uA" elementId="org.eclipse.rap.e4.demo.menu.3">
+ <tags>ViewMenu</tags>
+ <children xsi:type="menu:DirectMenuItem" xmi:id="_4nG_YOGcEeObqJp-_0s5uA" elementId="org.eclipse.rap.e4.demo.directmenuitem.2" label="Hello extra"/>
+ </menus>
+ </children>
</children>
</children>
<mainMenu xmi:id="_wk6tQKhGEeO0Haj3z6o3PQ" elementId="org.eclipse.rap.e4.demo.menu.0">
<children xsi:type="menu:Menu" xmi:id="_xXHmQKhGEeO0Haj3z6o3PQ" elementId="org.eclipse.rap.e4.demo.menu.1" label="%menu.label.1">
- <children xsi:type="menu:DirectMenuItem" xmi:id="_y5diwKhGEeO0Haj3z6o3PQ" elementId="org.eclipse.rap.e4.demo.directmenuitem.0" label="%directmenuitem.label.1" contributionURI="bundleclass://org.eclipse.rap.e4.demo/org.eclipse.rap.e4.demo.handlers.ExitApplication"/>
+ <children xsi:type="menu:DirectMenuItem" xmi:id="_y5diwKhGEeO0Haj3z6o3PQ" elementId="org.eclipse.rap.e4.demo.directmenuitem.0" label="%directmenuitem.label.1" contributionURI="bundleclass://org.eclipse.rap.e4.demo/org.eclipse.rap.e4.demo.handlers.HelloWorldHandler"/>
</children>
</mainMenu>
<trimBars xmi:id="_svgAANdbEeOAKaBhrzDgEg" elementId="org.eclipse.rap.e4.demo.trimbar.0">
<children xsi:type="menu:ToolBar" xmi:id="_uOnCUNdbEeOAKaBhrzDgEg" elementId="org.eclipse.rap.e4.demo.toolbar.0">
- <children xsi:type="menu:DirectToolItem" xmi:id="_wqJQoNdbEeOAKaBhrzDgEg" elementId="org.eclipse.rap.e4.demo.directtoolitem.0" label="%directmenuitem.label.1" contributionURI="bundleclass://org.eclipse.rap.e4.demo/org.eclipse.rap.e4.demo.handlers.ExitApplication"/>
+ <children xsi:type="menu:DirectToolItem" xmi:id="_wqJQoNdbEeOAKaBhrzDgEg" elementId="org.eclipse.rap.e4.demo.directtoolitem.0" label="%directmenuitem.label.1" contributionURI="bundleclass://org.eclipse.rap.e4.demo/org.eclipse.rap.e4.demo.handlers.HelloWorldHandler"/>
</children>
</trimBars>
</children>
diff --git a/demo/org.eclipse.rap.e4.demo/src/org/eclipse/rap/e4/demo/handlers/ExitApplication.java b/demo/org.eclipse.rap.e4.demo/src/org/eclipse/rap/e4/demo/handlers/ExitApplication.java
deleted file mode 100644
index f9b407e..0000000
--- a/demo/org.eclipse.rap.e4.demo/src/org/eclipse/rap/e4/demo/handlers/ExitApplication.java
+++ /dev/null
@@ -1,10 +0,0 @@
-package org.eclipse.rap.e4.demo.handlers;
-
-import org.eclipse.e4.core.di.annotations.Execute;
-
-public class ExitApplication {
- @Execute
- public void exitApp() {
-
- }
-}
diff --git a/demo/org.eclipse.rap.e4.demo/src/org/eclipse/rap/e4/demo/handlers/HelloWorldHandler.java b/demo/org.eclipse.rap.e4.demo/src/org/eclipse/rap/e4/demo/handlers/HelloWorldHandler.java
new file mode 100644
index 0000000..8f6ece1
--- /dev/null
+++ b/demo/org.eclipse.rap.e4.demo/src/org/eclipse/rap/e4/demo/handlers/HelloWorldHandler.java
@@ -0,0 +1,16 @@
+package org.eclipse.rap.e4.demo.handlers;
+
+import org.eclipse.e4.core.di.annotations.Execute;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.widgets.MessageBox;
+import org.eclipse.swt.widgets.Shell;
+
+public class HelloWorldHandler {
+ @Execute
+ public void hello(Shell s) {
+ MessageBox b = new MessageBox(s,SWT.ICON_INFORMATION);
+ b.setText("Hello e4");
+ b.setMessage("e4 and RAP are a perfect match!!");
+ b.open();
+ }
+}

Back to the top