package eu.jucy.gui.representation; import java.util.ArrayList; import java.util.List; import org.eclipse.jface.action.IContributionItem; import org.eclipse.jface.action.MenuManager; import org.eclipse.swt.SWT; import org.eclipse.swt.graphics.Point; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Menu; import org.eclipse.ui.IWorkbenchPart; import org.eclipse.ui.IWorkbenchWindow; import org.eclipse.ui.PlatformUI; import org.eclipse.ui.actions.CompoundContributionItem; import org.eclipse.ui.internal.presentations.util.ISystemMenu; import org.eclipse.ui.menus.CommandContributionItem; import org.eclipse.ui.menus.CommandContributionItemParameter; import org.eclipse.ui.plugin.AbstractUIPlugin; import org.eclipse.ui.presentations.IPresentablePart; import eu.jucy.gui.Application; import eu.jucy.gui.CloseEditorHandler; import eu.jucy.gui.IImageKeys; import eu.jucy.gui.IUCEditor; @SuppressWarnings("restriction") public class UCEditorContributionItem extends CompoundContributionItem { public UCEditorContributionItem() { super(); } @Override protected IContributionItem[] getContributionItems() { IWorkbenchPart part = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getPartService().getActivePart(); if (part instanceof IUCEditor) { List<IContributionItem> contribi = new ArrayList<IContributionItem>(); ((IUCEditor)part).getContributionItems(contribi); return contribi.toArray( new IContributionItem[]{}); } else { IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow(); CommandContributionItemParameter ccip = new CommandContributionItemParameter(window, null, CloseEditorHandler.COMMAND_ID,SWT.PUSH); ccip.icon = AbstractUIPlugin.imageDescriptorFromPlugin( Application.PLUGIN_ID, IImageKeys.STOPICON); CommandContributionItem cci = new CommandContributionItem(ccip); return new IContributionItem[]{cci}; } } public static class UCEditorSystemMenu implements ISystemMenu { private MenuManager menuManager; public UCEditorSystemMenu() { menuManager = new MenuManager(); menuManager.add(new UCEditorContributionItem()); } public void dispose() { menuManager.dispose(); menuManager.removeAll(); } public void show(Control parent, Point displayCoordinates, IPresentablePart currentSelection) { IWorkbenchPart part = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getPartService().getActivePart(); if (part instanceof IUCEditor) { ((IUCEditor)part).tabMenuBeforeShow(); } Menu aMenu = menuManager.createContextMenu(parent); menuManager.update(true); aMenu.setLocation(displayCoordinates.x, displayCoordinates.y); aMenu.setVisible(true); } } }