diff options
| author | Tom Schindl | 2014-05-22 10:40:50 +0000 |
|---|---|---|
| committer | Tom Schindl | 2014-05-22 10:40:50 +0000 |
| commit | 6e365a59151fd13e1f10a7fe2e22b164256344f4 (patch) | |
| tree | eecb22a02bed98fcc809b86299e4f976ce4cbb20 | |
| parent | 6e41c0f31ba99b9d8f7b3c75dff766293e91fd3e (diff) | |
| download | org.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
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 Binary files differnew file mode 100644 index 0000000..439b26c --- /dev/null +++ b/bundles/org.eclipse.e4.ui.workbench.renderers.swt/icons/viewMenu.png 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(); + } +} |
