diff options
| author | Laurent Fasani | 2016-03-29 08:34:14 +0000 |
|---|---|---|
| committer | Laurent Redor | 2016-04-07 09:51:13 +0000 |
| commit | 2654f2c8594a2cd0ea94a28decaa6dacd3c926a1 (patch) | |
| tree | da2f5e303d1a2eb423836c23e42a8f01999e38e8 | |
| parent | daf401adef38db2873e3f0abb87eff1528f955ec (diff) | |
| download | org.eclipse.sirius-2654f2c8594a2cd0ea94a28decaa6dacd3c926a1.tar.gz org.eclipse.sirius-2654f2c8594a2cd0ea94a28decaa6dacd3c926a1.tar.xz org.eclipse.sirius-2654f2c8594a2cd0ea94a28decaa6dacd3c926a1.zip | |
[472051] Fix tabbar animation effect
* To avoid animation effect, the contributed items are contributed
statically
* TabbarFillerWithoutContributions and TabbarFillerWithContributions
still gathers all dynamic contribution provided through
org.eclipse.ui.menus extension point.
* The static contribution does not support the dynamic visibility so
HideDDiagramElementLabelActionContributionItem is still dynamically
contributed for TabbarFillerWithContributions (it's the only one). So
other contributions have been made for a specific TABBAR ID (See
TabbarFillerWithoutContributions and plugin.xml modifications).
Bug: 472051
Change-Id: I5f9c32251566d3acf3163cd545bd85f208ade576
Signed-off-by: Laurent Fasani <laurent.fasani@obeo.fr>
Signed-off-by: Laurent Redor <laurent.redor@obeo.fr>
8 files changed, 909 insertions, 307 deletions
diff --git a/plugins/org.eclipse.sirius.diagram.ui/plugin.xml b/plugins/org.eclipse.sirius.diagram.ui/plugin.xml index 3eb7dc6147..1b1a98235e 100644 --- a/plugins/org.eclipse.sirius.diagram.ui/plugin.xml +++ b/plugins/org.eclipse.sirius.diagram.ui/plugin.xml @@ -1086,77 +1086,82 @@ <menuContribution allPopups="false" class="org.eclipse.sirius.diagram.ui.tools.internal.editor.tabbar.contributions.DistributeMenuExtensionContributionFactory" - locationURI="toolbar:org.eclipse.sirius.diagram.ui.tabbar?after=org.eclipse.sirius.diagram.ui.tabbar.arrangeselection"> + locationURI="toolbar:org.eclipse.sirius.diagram.ui.tabbar.fixed?after=org.eclipse.sirius.diagram.ui.tabbar.arrangeselection"> </menuContribution> <menuContribution allPopups="false" class="org.eclipse.sirius.diagram.ui.tools.internal.editor.tabbar.contributions.AlignMenutExtensionContributionFactory" - locationURI="toolbar:org.eclipse.sirius.diagram.ui.tabbar?after=org.eclipse.sirius.diagram.ui.tabbar.arrangeselection"> + locationURI="toolbar:org.eclipse.sirius.diagram.ui.tabbar.fixed?after=org.eclipse.sirius.diagram.ui.tabbar.arrangeselection"> </menuContribution> <menuContribution allPopups="false" class="org.eclipse.sirius.diagram.ui.tools.internal.editor.tabbar.contributions.DiagramElementPinUnPinExtensionContributionFactory" - locationURI="toolbar:org.eclipse.sirius.diagram.ui.tabbar?after=org.eclipse.sirius.diagram.ui.tabbar.hidepin"> + locationURI="toolbar:org.eclipse.sirius.diagram.ui.tabbar.fixed?after=org.eclipse.sirius.diagram.ui.tabbar.hidepin"> </menuContribution> <menuContribution allPopups="false" class="org.eclipse.sirius.diagram.ui.tools.internal.editor.tabbar.contributions.DiagramElementCopyExtensionContributionFactory" - locationURI="toolbar:org.eclipse.sirius.diagram.ui.tabbar?after=org.eclipse.sirius.diagram.ui.tabbar.past"> + locationURI="toolbar:org.eclipse.sirius.diagram.ui.tabbar.fixed?after=org.eclipse.sirius.diagram.ui.tabbar.past"> </menuContribution> <menuContribution allPopups="false" class="org.eclipse.sirius.diagram.ui.tools.internal.editor.tabbar.contributions.DiagramElementHideDeleteExtensionContributionFactory" - locationURI="toolbar:org.eclipse.sirius.diagram.ui.tabbar?after=org.eclipse.sirius.diagram.ui.tabbar.hidedelete"> + locationURI="toolbar:org.eclipse.sirius.diagram.ui.tabbar?after=org.eclipse.sirius.diagram.ui.tabbar.hideelement"> + </menuContribution> + <menuContribution + allPopups="false" + class="org.eclipse.sirius.diagram.ui.tools.internal.editor.tabbar.contributions.DiagramElementHideDeleteExtensionContributionFactory" + locationURI="toolbar:org.eclipse.sirius.diagram.ui.tabbar.fixed?after=org.eclipse.sirius.diagram.ui.tabbar.hideelement"> </menuContribution> <menuContribution allPopups="false" class="org.eclipse.sirius.diagram.ui.tools.internal.editor.tabbar.contributions.DiagramElementFontExtensionContributionFactory" - locationURI="toolbar:org.eclipse.sirius.diagram.ui.tabbar?after=org.eclipse.sirius.diagram.ui.tabbar.font"> + locationURI="toolbar:org.eclipse.sirius.diagram.ui.tabbar.fixed?after=org.eclipse.sirius.diagram.ui.tabbar.font"> </menuContribution> <menuContribution allPopups="false" class="org.eclipse.sirius.diagram.ui.tools.internal.editor.tabbar.contributions.DiagramElementStyleExtensionContributionFactory" - locationURI="toolbar:org.eclipse.sirius.diagram.ui.tabbar?after=org.eclipse.sirius.diagram.ui.tabbar.style"> + locationURI="toolbar:org.eclipse.sirius.diagram.ui.tabbar.fixed?after=org.eclipse.sirius.diagram.ui.tabbar.style"> </menuContribution> <menuContribution allPopups="false" class="org.eclipse.sirius.diagram.ui.tools.internal.editor.tabbar.contributions.DiagramElementSizeExtensionContributionFactory" - locationURI="toolbar:org.eclipse.sirius.diagram.ui.tabbar?after=org.eclipse.sirius.diagram.ui.tabbar.size"> + locationURI="toolbar:org.eclipse.sirius.diagram.ui.tabbar.fixed?after=org.eclipse.sirius.diagram.ui.tabbar.size"> </menuContribution> <menuContribution allPopups="false" class="org.eclipse.sirius.diagram.ui.tools.internal.editor.tabbar.contributions.ArrangeAllContributionFactory" - locationURI="toolbar:org.eclipse.sirius.diagram.ui.tabbar?after=org.eclipse.sirius.diagram.ui.tabbar.arrangeselection"> + locationURI="toolbar:org.eclipse.sirius.diagram.ui.tabbar.fixed?after=org.eclipse.sirius.diagram.ui.tabbar.arrangeselection"> </menuContribution> <menuContribution allPopups="false" class="org.eclipse.sirius.diagram.ui.tools.internal.editor.tabbar.contributions.LayerFilterExtensionContributionFactory" - locationURI="toolbar:org.eclipse.sirius.diagram.ui.tabbar?after=org.eclipse.sirius.diagram.ui.tabbar.layerfilter"> + locationURI="toolbar:org.eclipse.sirius.diagram.ui.tabbar.fixed?after=org.eclipse.sirius.diagram.ui.tabbar.layerfilter"> </menuContribution> <menuContribution allPopups="false" class="org.eclipse.sirius.diagram.ui.tools.internal.editor.tabbar.contributions.RefreshExtensionContributionFactory" - locationURI="toolbar:org.eclipse.sirius.diagram.ui.tabbar?after=org.eclipse.sirius.diagram.ui.tabbar.refresh"> + locationURI="toolbar:org.eclipse.sirius.diagram.ui.tabbar.fixed?after=org.eclipse.sirius.diagram.ui.tabbar.refresh"> </menuContribution> <menuContribution allPopups="false" class="org.eclipse.sirius.diagram.ui.tools.internal.editor.tabbar.contributions.ShowHidePinUnPinExtensionContributionFactory" - locationURI="toolbar:org.eclipse.sirius.diagram.ui.tabbar?after=org.eclipse.sirius.diagram.ui.tabbar.hidepin"> + locationURI="toolbar:org.eclipse.sirius.diagram.ui.tabbar.fixed?after=org.eclipse.sirius.diagram.ui.tabbar.hidepin"> </menuContribution> <menuContribution allPopups="false" class="org.eclipse.sirius.diagram.ui.tools.internal.editor.tabbar.contributions.PasteExtensionContributionFactory" - locationURI="toolbar:org.eclipse.sirius.diagram.ui.tabbar?after=org.eclipse.sirius.diagram.ui.tabbar.past"> + locationURI="toolbar:org.eclipse.sirius.diagram.ui.tabbar.fixed?after=org.eclipse.sirius.diagram.ui.tabbar.past"> </menuContribution> <menuContribution allPopups="false" class="org.eclipse.sirius.diagram.ui.tools.internal.editor.tabbar.contributions.ZoomExtensionContributionFactory" - locationURI="toolbar:org.eclipse.sirius.diagram.ui.tabbar?after=org.eclipse.sirius.diagram.ui.tabbar.zoom"> + locationURI="toolbar:org.eclipse.sirius.diagram.ui.tabbar.fixed?after=org.eclipse.sirius.diagram.ui.tabbar.zoom"> </menuContribution> <menuContribution allPopups="false" class="org.eclipse.sirius.diagram.ui.tools.internal.editor.tabbar.contributions.ExportExtensionContributionFactory" - locationURI="toolbar:org.eclipse.sirius.diagram.ui.tabbar?after=org.eclipse.sirius.diagram.ui.tabbar.export"> + locationURI="toolbar:org.eclipse.sirius.diagram.ui.tabbar.fixed?after=org.eclipse.sirius.diagram.ui.tabbar.export"> </menuContribution> </extension> diff --git a/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/api/editor/tabbar/AbstractTabbarContributor.java b/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/api/editor/tabbar/AbstractTabbarContributor.java index 1a9d75d1fb..dd44f431aa 100644 --- a/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/api/editor/tabbar/AbstractTabbarContributor.java +++ b/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/api/editor/tabbar/AbstractTabbarContributor.java @@ -10,58 +10,11 @@ *******************************************************************************/ package org.eclipse.sirius.diagram.ui.tools.api.editor.tabbar; -import org.eclipse.gef.ui.actions.ZoomComboContributionItem; -import org.eclipse.gmf.runtime.diagram.ui.actions.ActionIds; -import org.eclipse.gmf.runtime.diagram.ui.actions.internal.AutoSizeAction; -import org.eclipse.gmf.runtime.diagram.ui.actions.internal.CopyAppearancePropertiesAction; -import org.eclipse.gmf.runtime.diagram.ui.actions.internal.FontDialogAction; -import org.eclipse.gmf.runtime.diagram.ui.actions.internal.FontStyleAction; -import org.eclipse.gmf.runtime.diagram.ui.internal.l10n.DiagramUIPluginImages; -import org.eclipse.gmf.runtime.diagram.ui.l10n.DiagramUIMessages; import org.eclipse.gmf.runtime.diagram.ui.parts.IDiagramWorkbenchPart; -import org.eclipse.jface.action.ActionContributionItem; -import org.eclipse.jface.action.ContributionItem; -import org.eclipse.jface.action.IAction; import org.eclipse.jface.action.IContributionItem; import org.eclipse.jface.action.ToolBarManager; -import org.eclipse.sirius.diagram.DDiagram; -import org.eclipse.sirius.diagram.ui.part.SiriusDiagramActionBarContributor; -import org.eclipse.sirius.diagram.ui.provider.DiagramUIPlugin; -import org.eclipse.sirius.diagram.ui.tools.api.editor.DDiagramEditor; -import org.eclipse.sirius.diagram.ui.tools.api.image.DiagramImagesPath; -import org.eclipse.sirius.diagram.ui.tools.internal.actions.SaveAsImageFileAction; -import org.eclipse.sirius.diagram.ui.tools.internal.actions.SelectHiddenElementsAction; -import org.eclipse.sirius.diagram.ui.tools.internal.actions.SelectPinnedElementsAction; -import org.eclipse.sirius.diagram.ui.tools.internal.actions.SizeBothAction; -import org.eclipse.sirius.diagram.ui.tools.internal.actions.delete.DeleteFromDiagramAction; -import org.eclipse.sirius.diagram.ui.tools.internal.actions.delete.DeleteFromModelWithHookAction; -import org.eclipse.sirius.diagram.ui.tools.internal.actions.layout.CopyLayoutAction; -import org.eclipse.sirius.diagram.ui.tools.internal.actions.layout.PasteLayoutAction; -import org.eclipse.sirius.diagram.ui.tools.internal.actions.refresh.RefreshDiagramAction; -import org.eclipse.sirius.diagram.ui.tools.internal.actions.style.ResetStylePropertiesToDefaultValuesAction; -import org.eclipse.sirius.diagram.ui.tools.internal.actions.style.SetStyleToWorkspaceImageAction; -import org.eclipse.sirius.diagram.ui.tools.internal.actions.visibility.HideDDiagramElementAction; -import org.eclipse.sirius.diagram.ui.tools.internal.editor.tabbar.FiltersContributionItem; -import org.eclipse.sirius.diagram.ui.tools.internal.editor.tabbar.LayersContribution; -import org.eclipse.sirius.diagram.ui.tools.internal.editor.tabbar.LayoutingModeSwitchingAction; -import org.eclipse.sirius.diagram.ui.tools.internal.editor.tabbar.actions.DiagramActionContributionItem; -import org.eclipse.sirius.diagram.ui.tools.internal.editor.tabbar.actions.HideDDiagramElementLabelActionContributionItem; -import org.eclipse.sirius.diagram.ui.tools.internal.editor.tabbar.actions.TabbarAlignMenuManager; -import org.eclipse.sirius.diagram.ui.tools.internal.editor.tabbar.actions.TabbarArrangeMenuManager; -import org.eclipse.sirius.diagram.ui.tools.internal.editor.tabbar.actions.TabbarColorPropertyContributionItem; -import org.eclipse.sirius.diagram.ui.tools.internal.editor.tabbar.actions.TabbarDistributeMenuManager; -import org.eclipse.sirius.diagram.ui.tools.internal.editor.tabbar.actions.TabbarPinElementsEclipseAction; -import org.eclipse.sirius.diagram.ui.tools.internal.editor.tabbar.actions.TabbarRouterMenuManager; import org.eclipse.sirius.diagram.ui.tools.internal.editor.tabbar.actions.TabbarSelectMenuManager; -import org.eclipse.sirius.diagram.ui.tools.internal.editor.tabbar.actions.TabbarUnpinElementsEclipseAction; -import org.eclipse.sirius.diagram.ui.tools.internal.editor.tabbar.actions.TabbarZoomAction; -import org.eclipse.sirius.diagram.ui.tools.internal.editor.tabbar.actions.TabbarZoomInAction; -import org.eclipse.sirius.diagram.ui.tools.internal.editor.tabbar.actions.TabbarZoomOutAction; -import org.eclipse.sirius.diagram.ui.tools.internal.editor.tabbar.contributions.SiriusTabbarExtensionContributionFactory.TabbarActionContributionItem; -import org.eclipse.sirius.diagram.ui.tools.internal.editor.tabbar.contributions.ZoomExtensionContributionFactory.ZoomContributionItem; -import org.eclipse.swt.widgets.ToolBar; -import org.eclipse.swt.widgets.ToolItem; -import org.eclipse.ui.IWorkbenchPartSite; +import org.eclipse.sirius.diagram.ui.tools.internal.editor.tabbar.contributions.TabbarContributionFactory; /** * Abstract implementation of {@link ITabbarContributor}. Inherit from this @@ -71,9 +24,10 @@ import org.eclipse.ui.IWorkbenchPartSite; * @author Florian Barbin * */ -@SuppressWarnings("restriction") public abstract class AbstractTabbarContributor implements ITabbarContributor { + private TabbarContributionFactory contributorFactory = new TabbarContributionFactory(); + /** * Creates the Automatic Layout contribution item. Organized in a drop-down * menu, this item is used to trigger an automatic layout of the elements on @@ -84,9 +38,7 @@ public abstract class AbstractTabbarContributor implements ITabbarContributor { * @return the {@link IContributionItem}. */ protected IContributionItem createArrangeMenuManager(IDiagramWorkbenchPart part) { - TabbarArrangeMenuManager arrangeMenu = new TabbarArrangeMenuManager(part); - arrangeMenu.setVisible(true); - return arrangeMenu; + return contributorFactory.createArrangeMenuManager(part); } /** @@ -99,7 +51,7 @@ public abstract class AbstractTabbarContributor implements ITabbarContributor { protected IContributionItem createSelectMenuManager() { TabbarSelectMenuManager selectMenu = new TabbarSelectMenuManager(); selectMenu.setVisible(true); - return selectMenu; + return contributorFactory.createSelectMenuManager(); } /** @@ -110,9 +62,7 @@ public abstract class AbstractTabbarContributor implements ITabbarContributor { * @return the {@link IContributionItem}. */ protected IContributionItem createAlignMenuManager() { - TabbarAlignMenuManager alignMenu = new TabbarAlignMenuManager(); - alignMenu.setVisible(true); - return alignMenu; + return contributorFactory.createAlignMenuManager(); } /** @@ -126,10 +76,7 @@ public abstract class AbstractTabbarContributor implements ITabbarContributor { * @return the {@link IContributionItem}. */ protected IContributionItem createLayerContribution(IDiagramWorkbenchPart part, ToolBarManager manager) { - LayersContribution layersContribution = new LayersContribution(); - ContributionItem layerItem = layersContribution.createContributionItem(manager); - layersContribution.setPart(part); - return layerItem; + return contributorFactory.createLayerContribution(part, manager); } /** @@ -142,10 +89,7 @@ public abstract class AbstractTabbarContributor implements ITabbarContributor { * @return the {@link IContributionItem}. */ protected IContributionItem createFilterContribution(IDiagramWorkbenchPart part, ToolBarManager manager) { - FiltersContributionItem filtersContribution = new FiltersContributionItem(); - ContributionItem filterItem = filtersContribution.createContributionItem(manager); - filtersContribution.setPart(part); - return filterItem; + return contributorFactory.createFilterContribution(part, manager); } /** @@ -157,12 +101,7 @@ public abstract class AbstractTabbarContributor implements ITabbarContributor { * being initialized. */ protected IContributionItem createSelectHiddenElementsContribution(IDiagramWorkbenchPart part) { - IWorkbenchPartSite site = part.getSite(); - if (site != null) { - SelectHiddenElementsAction selectHiddenElementsAction = new SelectHiddenElementsAction(site.getPage(), part); - return new DiagramActionContributionItem(selectHiddenElementsAction); - } - return null; + return contributorFactory.createSelectHiddenElementsContribution(part); } /** @@ -174,9 +113,7 @@ public abstract class AbstractTabbarContributor implements ITabbarContributor { * @return the {@link IContributionItem}. */ protected IContributionItem createHideElementContribution(IDiagramWorkbenchPart part) { - HideDDiagramElementAction hideDDiagramElementAction = new HideDDiagramElementAction(SiriusDiagramActionBarContributor.HIDE_ELEMENT); - hideDDiagramElementAction.setActionPart(part); - return new TabbarActionContributionItem(hideDDiagramElementAction, part); + return contributorFactory.createHideElementContribution(part); } /** @@ -188,8 +125,7 @@ public abstract class AbstractTabbarContributor implements ITabbarContributor { * @return the {@link IContributionItem}. */ protected IContributionItem createHideElementLabelContribution(IDiagramWorkbenchPart part) { - HideDDiagramElementLabelActionContributionItem contributionItem = new HideDDiagramElementLabelActionContributionItem(part); - return contributionItem; + return contributorFactory.createHideElementLabelContribution(part); } /** @@ -202,9 +138,7 @@ public abstract class AbstractTabbarContributor implements ITabbarContributor { * @return the {@link IContributionItem}. */ protected IContributionItem createDeleteFromDiagramContribution(IDiagramWorkbenchPart part) { - DeleteFromDiagramAction deleteFromDiagramAction = new DeleteFromDiagramAction(DiagramUIMessages.DiagramEditor_Delete_from_Diagram, SiriusDiagramActionBarContributor.DELETE_FROM_DIAGRAM, - ActionIds.ACTION_DELETE_FROM_DIAGRAM, DiagramUIPlugin.Implementation.getBundledImageDescriptor(DiagramImagesPath.DELETE_FROM_DIAGRAM_ICON)); - return new TabbarActionContributionItem(deleteFromDiagramAction, part); + return contributorFactory.createDeleteFromDiagramContribution(part); } /** @@ -217,13 +151,7 @@ public abstract class AbstractTabbarContributor implements ITabbarContributor { * being initialized. */ protected IContributionItem createDeleteFromModelContribution(IDiagramWorkbenchPart part) { - IWorkbenchPartSite site = part.getSite(); - if (site != null) { - DeleteFromModelWithHookAction deleteFromModelAction = new DeleteFromModelWithHookAction(site.getPage(), part); - deleteFromModelAction.init(); - return new DiagramActionContributionItem(deleteFromModelAction); - } - return null; + return contributorFactory.createDeleteFromModelContribution(part); } /** @@ -235,13 +163,7 @@ public abstract class AbstractTabbarContributor implements ITabbarContributor { * being initialized. */ protected IContributionItem createSelectPinnedElementsContribution(IDiagramWorkbenchPart part) { - IWorkbenchPartSite site = part.getSite(); - if (site != null) { - SelectPinnedElementsAction pinnedElementsAction = new SelectPinnedElementsAction(site.getPage(), part); - - return new DiagramActionContributionItem(pinnedElementsAction); - } - return null; + return contributorFactory.createSelectPinnedElementsContribution(part); } /** @@ -253,8 +175,7 @@ public abstract class AbstractTabbarContributor implements ITabbarContributor { * @return the {@link IContributionItem}. */ protected IContributionItem createPinElementContribution(IDiagramWorkbenchPart part) { - TabbarPinElementsEclipseAction pinAction = new TabbarPinElementsEclipseAction(); - return new TabbarActionContributionItem(pinAction, part); + return contributorFactory.createPinElementContribution(part); } /** @@ -268,16 +189,7 @@ public abstract class AbstractTabbarContributor implements ITabbarContributor { * @return the {@link IContributionItem}. */ protected IContributionItem createUnPinElementContribution(IDiagramWorkbenchPart part, IContributionItem pinElementContributionItem) { - - TabbarUnpinElementsEclipseAction unpinAction = new TabbarUnpinElementsEclipseAction(); - if (pinElementContributionItem instanceof TabbarActionContributionItem) { - IAction pinAction = ((TabbarActionContributionItem) pinElementContributionItem).getAction(); - if (pinAction instanceof TabbarPinElementsEclipseAction) { - ((TabbarPinElementsEclipseAction) pinAction).setOppositePinAction(unpinAction); - } - unpinAction.setOppositePinAction(pinAction); - } - return new TabbarActionContributionItem(unpinAction, part); + return contributorFactory.createUnPinElementContribution(part, pinElementContributionItem); } /** @@ -289,21 +201,7 @@ public abstract class AbstractTabbarContributor implements ITabbarContributor { * being initialized. */ protected IContributionItem createZoomContribution(IDiagramWorkbenchPart part) { - IWorkbenchPartSite site = part.getSite(); - if (site != null) { - ZoomComboContributionItem zoomItem = new ZoomComboContributionItem(site.getPage()) { - - @Override - public void fill(ToolBar parent, int index) { - super.fill(parent, index); - ToolItem addedItem = parent.getItem(parent.getItemCount() - 1); - addedItem.setToolTipText(DiagramUIMessages.ZoomActionMenu_ZoomLabel); - } - - }; - return zoomItem; - } - return null; + return contributorFactory.createZoomContribution(part); } /** @@ -315,14 +213,7 @@ public abstract class AbstractTabbarContributor implements ITabbarContributor { * being initialized. */ protected IContributionItem createZoomInContribution(IDiagramWorkbenchPart part) { - IWorkbenchPartSite site = part.getSite(); - if (site != null) { - TabbarZoomAction zoomIn = new TabbarZoomInAction(); - zoomIn.setImageDescriptor(DiagramUIPluginImages.DESC_ZOOM_IN); - zoomIn.setText(DiagramUIMessages.ZoomAction_ZoomIn); - return new ZoomContributionItem(zoomIn, site.getPage()); - } - return null; + return contributorFactory.createZoomInContribution(part); } /** @@ -334,14 +225,7 @@ public abstract class AbstractTabbarContributor implements ITabbarContributor { * being initialized. */ protected IContributionItem createZoomOutContribution(IDiagramWorkbenchPart part) { - IWorkbenchPartSite site = part.getSite(); - if (site != null) { - TabbarZoomAction zoomOut = new TabbarZoomOutAction(); - zoomOut.setImageDescriptor(DiagramUIPluginImages.DESC_ZOOM_OUT); - zoomOut.setText(DiagramUIMessages.ZoomAction_ZoomOut); - return new ZoomContributionItem(zoomOut, site.getPage()); - } - return null; + return contributorFactory.createZoomOutContribution(part); } /** @@ -353,13 +237,7 @@ public abstract class AbstractTabbarContributor implements ITabbarContributor { * being initialized. */ protected IContributionItem createFontColorContribution(IDiagramWorkbenchPart part) { - IWorkbenchPartSite site = part.getSite(); - if (site != null) { - TabbarColorPropertyContributionItem fontColorMenu = TabbarColorPropertyContributionItem.createFontColorContributionItem(site.getPage()); - fontColorMenu.setActionWorkbenchPart(part); - return fontColorMenu; - } - return null; + return contributorFactory.createFontColorContribution(part); } /** @@ -371,12 +249,7 @@ public abstract class AbstractTabbarContributor implements ITabbarContributor { * being initialized. */ protected IContributionItem createBoldFontStyleContribution(IDiagramWorkbenchPart part) { - IWorkbenchPartSite site = part.getSite(); - if (site != null) { - FontStyleAction fontStyleBoldAction = FontStyleAction.createBoldFontStyleAction(site.getPage()); - return new ActionContributionItem(fontStyleBoldAction); - } - return null; + return contributorFactory.createBoldFontStyleContribution(part); } /** @@ -388,12 +261,7 @@ public abstract class AbstractTabbarContributor implements ITabbarContributor { * being initialized. */ protected IContributionItem createItalicFontStyleContribution(IDiagramWorkbenchPart part) { - IWorkbenchPartSite site = part.getSite(); - if (site != null) { - FontStyleAction fontStyleItalicAction = FontStyleAction.createItalicFontStyleAction(site.getPage()); - return new ActionContributionItem(fontStyleItalicAction); - } - return null; + return contributorFactory.createItalicFontStyleContribution(part); } /** @@ -405,13 +273,7 @@ public abstract class AbstractTabbarContributor implements ITabbarContributor { * being initialized. */ protected IContributionItem createFontDialogContribution(IDiagramWorkbenchPart part) { - IWorkbenchPartSite site = part.getSite(); - if (site != null) { - IAction fontDialogAction = new FontDialogAction(site.getPage()); - fontDialogAction.setImageDescriptor(DiagramUIPlugin.Implementation.getBundledImageDescriptor(DiagramImagesPath.FONT_WIZARD)); - return new ActionContributionItem(fontDialogAction); - } - return null; + return contributorFactory.createFontDialogContribution(part); } /** @@ -423,13 +285,7 @@ public abstract class AbstractTabbarContributor implements ITabbarContributor { * being initialized. */ protected IContributionItem createFillColorContribution(IDiagramWorkbenchPart part) { - IWorkbenchPartSite site = part.getSite(); - if (site != null) { - TabbarColorPropertyContributionItem fillColorMenu = TabbarColorPropertyContributionItem.createFillColorContributionItem(site.getPage()); - fillColorMenu.setActionWorkbenchPart(part); - return fillColorMenu; - } - return null; + return contributorFactory.createFillColorContribution(part); } /** @@ -441,13 +297,7 @@ public abstract class AbstractTabbarContributor implements ITabbarContributor { * being initialized. */ protected IContributionItem createLineColorPropertyContribution(IDiagramWorkbenchPart part) { - IWorkbenchPartSite site = part.getSite(); - if (site != null) { - TabbarColorPropertyContributionItem lineColorMenu = TabbarColorPropertyContributionItem.createLineColorContributionItem(site.getPage()); - lineColorMenu.setActionWorkbenchPart(part); - return lineColorMenu; - } - return null; + return contributorFactory.createLineColorPropertyContribution(part); } /** @@ -461,12 +311,7 @@ public abstract class AbstractTabbarContributor implements ITabbarContributor { * being initialized. */ protected IContributionItem createResetStylePropertyContribution(IDiagramWorkbenchPart part) { - IWorkbenchPartSite site = part.getSite(); - if (site != null) { - ResetStylePropertiesToDefaultValuesAction resetStylePropertiesToDefaultValuesAction = new ResetStylePropertiesToDefaultValuesAction(site.getPage()); - return new TabbarActionContributionItem(resetStylePropertiesToDefaultValuesAction, part); - } - return null; + return contributorFactory.createResetStylePropertyContribution(part); } /** @@ -480,7 +325,7 @@ public abstract class AbstractTabbarContributor implements ITabbarContributor { * @return the {@link IContributionItem}. */ protected IContributionItem createSetStyleToWorkspaceImageContribution(IDiagramWorkbenchPart part) { - return new TabbarActionContributionItem(new SetStyleToWorkspaceImageAction(), part); + return contributorFactory.createSetStyleToWorkspaceImageContribution(part); } /** @@ -492,8 +337,7 @@ public abstract class AbstractTabbarContributor implements ITabbarContributor { * @return the {@link IContributionItem}. */ protected IContributionItem createDistributeContribution() { - TabbarDistributeMenuManager distributeMenu = new TabbarDistributeMenuManager(); - return distributeMenu; + return contributorFactory.createDistributeContribution(); } /** @@ -503,8 +347,7 @@ public abstract class AbstractTabbarContributor implements ITabbarContributor { * @return the {@link IContributionItem}. */ protected IContributionItem createSaveAsImageContributionItem() { - SaveAsImageFileAction saveAsImageFileAction = new SaveAsImageFileAction(); - return new ActionContributionItem(saveAsImageFileAction); + return contributorFactory.createSaveAsImageContributionItem(); } /** @@ -519,16 +362,7 @@ public abstract class AbstractTabbarContributor implements ITabbarContributor { * mode. */ protected IContributionItem createLayoutingModeContributionItem(IDiagramWorkbenchPart part) { - IWorkbenchPartSite site = part.getSite(); - if (site != null && part instanceof DDiagramEditor) { - final DDiagramEditor editor = (DDiagramEditor) part; - DDiagram editorDiagram = (DDiagram) editor.getRepresentation(); - if (LayoutingModeSwitchingAction.diagramAllowsLayoutingMode(editorDiagram)) { - LayoutingModeSwitchingAction layoutingModeSwitchingAction = new LayoutingModeSwitchingAction(site.getPage(), editorDiagram); - return new TabbarActionContributionItem(layoutingModeSwitchingAction); - } - } - return null; + return contributorFactory.createLayoutingModeContributionItem(part); } /** @@ -538,9 +372,7 @@ public abstract class AbstractTabbarContributor implements ITabbarContributor { * @return the {@link IContributionItem}. */ protected IContributionItem createRouterContribution() { - TabbarRouterMenuManager routerMenu = new TabbarRouterMenuManager(); - routerMenu.setVisible(true); - return routerMenu; + return contributorFactory.createRouterContribution(); } /** @@ -553,12 +385,7 @@ public abstract class AbstractTabbarContributor implements ITabbarContributor { * being initialized. */ protected IContributionItem createCopyAppearancePropertiesContribution(IDiagramWorkbenchPart part) { - IWorkbenchPartSite site = part.getSite(); - if (site != null) { - CopyAppearancePropertiesAction copyAppearancePropertiesAction = new CopyAppearancePropertiesAction(site.getPage()); - return new ActionContributionItem(copyAppearancePropertiesAction); - } - return null; + return contributorFactory.createCopyAppearancePropertiesContribution(part); } /** @@ -572,12 +399,7 @@ public abstract class AbstractTabbarContributor implements ITabbarContributor { * being initialized. */ protected IContributionItem createCopyLayoutContribution(IDiagramWorkbenchPart part) { - IWorkbenchPartSite site = part.getSite(); - if (site != null) { - CopyLayoutAction copyLayoutAction = new CopyLayoutAction(site.getPage(), part); - return new ActionContributionItem(copyLayoutAction); - } - return null; + return contributorFactory.createCopyLayoutContribution(part); } /** @@ -589,12 +411,7 @@ public abstract class AbstractTabbarContributor implements ITabbarContributor { * being initialized. */ protected IContributionItem createPasteLayoutContribution(IDiagramWorkbenchPart part) { - IWorkbenchPartSite site = part.getSite(); - if (site != null) { - PasteLayoutAction pasteLayoutAction = new PasteLayoutAction(site.getPage(), part); - return new ActionContributionItem(pasteLayoutAction); - } - return null; + return contributorFactory.createPasteLayoutContribution(part); } /** @@ -606,9 +423,7 @@ public abstract class AbstractTabbarContributor implements ITabbarContributor { * @return the {@link IContributionItem}. */ protected IContributionItem createRefreshContribution() { - RefreshDiagramAction action = new RefreshDiagramAction(SiriusDiagramActionBarContributor.REFRESH_DIAGRAM, - DiagramUIPlugin.Implementation.getBundledImageDescriptor(DiagramImagesPath.REFRESH_IMG)); - return new ActionContributionItem(action); + return contributorFactory.createRefreshContribution(); } /** @@ -622,13 +437,7 @@ public abstract class AbstractTabbarContributor implements ITabbarContributor { * being initialized. */ protected IContributionItem createSizeBothContribution(IDiagramWorkbenchPart part) { - IWorkbenchPartSite site = part.getSite(); - if (site != null) { - SizeBothAction sizeBothAction = new SizeBothAction(site.getPage()); - sizeBothAction.init(); - return new ActionContributionItem(sizeBothAction); - } - return null; + return contributorFactory.createSizeBothContribution(part); } /** @@ -641,12 +450,7 @@ public abstract class AbstractTabbarContributor implements ITabbarContributor { * being initialized. */ protected IContributionItem createAutoSizeContribution(IDiagramWorkbenchPart part) { - IWorkbenchPartSite site = part.getSite(); - if (site != null) { - AutoSizeAction autoSizeAction = new AutoSizeAction(site.getPage()); - return new ActionContributionItem(autoSizeAction); - } - return null; + return contributorFactory.createAutoSizeContribution(part); } } diff --git a/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/internal/editor/tabbar/AbstractTabbarFiller.java b/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/internal/editor/tabbar/AbstractTabbarFiller.java index ae0edf1cb4..fc1ee641cf 100644 --- a/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/internal/editor/tabbar/AbstractTabbarFiller.java +++ b/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/internal/editor/tabbar/AbstractTabbarFiller.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2010, 2013 THALES GLOBAL SERVICES. + * Copyright (c) 2010, 2016 THALES GLOBAL SERVICES. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -13,6 +13,7 @@ package org.eclipse.sirius.diagram.ui.tools.internal.editor.tabbar; import org.eclipse.gmf.runtime.diagram.ui.parts.IDiagramWorkbenchPart; import org.eclipse.jface.action.Separator; import org.eclipse.jface.action.ToolBarManager; +import org.eclipse.jface.viewers.ISelection; import org.eclipse.sirius.common.tools.api.util.StringUtil; import org.eclipse.ui.IWorkbenchPage; import org.eclipse.ui.menus.IMenuService; @@ -53,6 +54,7 @@ public abstract class AbstractTabbarFiller implements TabbarFiller { * * @see org.eclipse.sirius.diagram.tools.internal.editor.tabbar.TabbarFiller#setPart(org.eclipse.gmf.runtime.diagram.ui.parts.IDiagramWorkbenchPart) */ + @Override public void setPart(IDiagramWorkbenchPart workbenchPart) { this.part = workbenchPart; } @@ -62,6 +64,7 @@ public abstract class AbstractTabbarFiller implements TabbarFiller { * * @see org.eclipse.sirius.diagram.tools.internal.editor.tabbar.TabbarFiller#fill() */ + @Override public void fill() { if (!isDisposed()) { doFill(); @@ -118,6 +121,15 @@ public abstract class AbstractTabbarFiller implements TabbarFiller { } /** + * Updates the tabbar according to the given selection. + * + * @param iSelection + * the current selection. + */ + protected void update(ISelection iSelection) { + } + + /** * Release the contributions. * * @see AbstractTabbarFiller#addTabbarContributions(). @@ -134,6 +146,7 @@ public abstract class AbstractTabbarFiller implements TabbarFiller { * * @see org.eclipse.sirius.diagram.tools.internal.editor.tabbar.TabbarFiller#dispose() */ + @Override public void dispose() { this.manager = null; this.page = null; diff --git a/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/internal/editor/tabbar/Tabbar.java b/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/internal/editor/tabbar/Tabbar.java index 91aa13c954..824ced3a01 100644 --- a/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/internal/editor/tabbar/Tabbar.java +++ b/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/internal/editor/tabbar/Tabbar.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2010, 2015 THALES GLOBAL SERVICES. + * Copyright (c) 2010, 2016 THALES GLOBAL SERVICES. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -52,6 +52,11 @@ public class Tabbar extends Composite implements ISelectionListener, IAuthorityL */ public static final String TABBAR_ID = "org.eclipse.sirius.diagram.ui.tabbar"; //$NON-NLS-1$ + /** + * Specific id for fixed tabbar ({@link #canBeDynamic()}. + */ + public static final String FIXED_TABBAR_ID = "org.eclipse.sirius.diagram.ui.tabbar.fixed"; //$NON-NLS-1$ + private IDiagramWorkbenchPart part; private IWorkbenchPage page; @@ -60,7 +65,7 @@ public class Tabbar extends Composite implements ISelectionListener, IAuthorityL private ToolBarManager manager; - private TabbarFiller diagramFiller; + private AbstractTabbarFiller diagramFiller; private IPermissionAuthority permissionAuthority; @@ -163,7 +168,7 @@ public class Tabbar extends Composite implements ISelectionListener, IAuthorityL @SuppressWarnings("unchecked") @Override public void selectionChanged(IWorkbenchPart partSelected, ISelection selection) { - if (diagramFiller instanceof TabbarFillerWithContributor && partSelected == this.part) { + if (!(diagramFiller instanceof TabbarFillerWithoutContributions) && partSelected == this.part) { if (currentSelection == null || !sameSelection(selection)) { if (selection instanceof StructuredSelection) { currentSelection = ((StructuredSelection) selection).toList(); @@ -191,9 +196,10 @@ public class Tabbar extends Composite implements ISelectionListener, IAuthorityL * the selection */ public void reinitToolBar(ISelection iSelection) { - if (diagramFiller instanceof TabbarFillerWithContributor) { - ((TabbarFillerWithContributor) diagramFiller).update(iSelection); + if (!(diagramFiller instanceof TabbarFillerWithoutContributions)) { + diagramFiller.update(iSelection); } + updateAllItems(); } diff --git a/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/internal/editor/tabbar/TabbarFillerWithContributions.java b/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/internal/editor/tabbar/TabbarFillerWithContributions.java index e08114977a..7e277d1a12 100644 --- a/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/internal/editor/tabbar/TabbarFillerWithContributions.java +++ b/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/internal/editor/tabbar/TabbarFillerWithContributions.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2010, 2014 THALES GLOBAL SERVICES. + * Copyright (c) 2010, 2016 THALES GLOBAL SERVICES and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -10,9 +10,22 @@ *******************************************************************************/ package org.eclipse.sirius.diagram.ui.tools.internal.editor.tabbar; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collection; +import java.util.List; + +import org.eclipse.jface.action.IContributionItem; +import org.eclipse.jface.action.Separator; import org.eclipse.jface.action.ToolBarManager; +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.viewers.IStructuredSelection; +import org.eclipse.sirius.diagram.ui.edit.api.part.AbstractDDiagramEditPart; +import org.eclipse.sirius.diagram.ui.tools.internal.editor.tabbar.contributions.TabbarContributionFactory; import org.eclipse.ui.IWorkbenchPage; +import com.google.common.collect.Lists; + /** * Fill the toolbar when a diagram is selected. * @@ -42,50 +55,166 @@ public class TabbarFillerWithContributions extends AbstractTabbarFiller { private static final String SIZE = "org.eclipse.sirius.diagram.ui.tabbar.size"; //$NON-NLS-1$ + private List<IContributionItem> dynamicContributions = new ArrayList<IContributionItem>(); + + private ArrayList<IContributionItem> diagramContributionItems = Lists.newArrayList(); + + private ArrayList<IContributionItem> diagramElementContributionItems = Lists.newArrayList(); + + private TabbarContributionFactory contributionFactory = new TabbarContributionFactory(); + /** - * Construct a new instance. + * Default Constructor. * * @param manager - * the toolbar manager + * the {@link ToolBarManager}. * @param page - * the workbench page + * the current {@link IWorkbenchPage}. */ public TabbarFillerWithContributions(ToolBarManager manager, IWorkbenchPage page) { super(manager, page); } - /** - * {@inheritDoc} - * - * @see org.eclipse.sirius.diagram.tools.internal.editor.tabbar.AbstractTabbarFiller#doFill() - */ @Override protected void doFill() { + // Add default contributions configureGroupSeparators(); + addDiagramContributionItems(); + addDiagramElementContributionItems(); + // Add dynamic contributions + ArrayList<IContributionItem> currentContributions = new ArrayList<IContributionItem>(Arrays.asList(manager.getItems())); addTabbarContributions(); + dynamicContributions = new ArrayList<IContributionItem>(Arrays.asList(manager.getItems())); + dynamicContributions.removeAll(currentContributions); + + update(null); } + /** + * Updates the tabbar according to the given selection. + * + * @param iSelection + * the current selection. + */ @Override - public void dispose() { - releaseTabbarContributions(); + public void update(ISelection iSelection) { + List<IContributionItem> existingItems = Arrays.asList(manager.getItems()); + for (IContributionItem current : existingItems) { + if (!dynamicContributions.contains(current) && !current.isSeparator()) { + current.setVisible(false); + } + } + + List<IContributionItem> contributionItems = getContributionItems(iSelection); + for (IContributionItem item : contributionItems) { + if (existingItems.contains(item)) { + item.setVisible(true); + } + } + + manager.update(true); + } - super.dispose(); + private List<IContributionItem> getContributionItems(ISelection selection) { + List<IContributionItem> contributedItems = diagramContributionItems; + if (selection instanceof IStructuredSelection) { + Object firstElement = ((IStructuredSelection) selection).getFirstElement(); + if (!(firstElement instanceof AbstractDDiagramEditPart)) { + contributedItems = diagramElementContributionItems; + } + } + return contributedItems; } private void configureGroupSeparators() { - addSeparator(ARRANGE_SELECTION); - addSeparator(REFRESH); - addSeparator(LAYER_FILTER); - addSeparator(HIDE_PIN); - addSeparator(PAST); - addSeparator(HIDE_DELETE); - addSeparator(ZOOM); - addSeparator(EXPORT); - addSeparator(FONT); - addSeparator(STYLE); - addSeparator(SIZE); + initSeparator(ARRANGE_SELECTION); + initSeparator(REFRESH); + initSeparator(LAYER_FILTER); + initSeparator(HIDE_PIN); + initSeparator(PAST); + initSeparator(HIDE_DELETE); + initSeparator(ZOOM); + initSeparator(EXPORT); + initSeparator(FONT); + initSeparator(STYLE); + initSeparator(SIZE); + } + private void initSeparator(String name) { + IContributionItem contributionItem = new Separator(name); + manager.add(contributionItem); } + + private void addDiagramContributionItems() { + addContributionItem(diagramContributionItems, ARRANGE_SELECTION, contributionFactory.createSelectMenuManager()); + addContributionItem(diagramContributionItems, ARRANGE_SELECTION, contributionFactory.createArrangeMenuManager(part)); + + addContributionItem(diagramContributionItems, REFRESH, contributionFactory.createRefreshContribution()); + + addContributionItem(diagramContributionItems, LAYER_FILTER, contributionFactory.createFilterContribution(part, manager)); + addContributionItem(diagramContributionItems, LAYER_FILTER, contributionFactory.createLayerContribution(part, manager)); + + addContributionItem(diagramContributionItems, HIDE_PIN, contributionFactory.createSelectPinnedElementsContribution(part)); + addContributionItem(diagramContributionItems, HIDE_PIN, contributionFactory.createSelectHiddenElementsContribution(part)); + + addContributionItem(diagramContributionItems, PAST, contributionFactory.createPasteLayoutContribution(part)); + + addContributionItem(diagramContributionItems, ZOOM, contributionFactory.createZoomContribution(part)); + addContributionItem(diagramContributionItems, ZOOM, contributionFactory.createZoomOutContribution(part)); + addContributionItem(diagramContributionItems, ZOOM, contributionFactory.createZoomInContribution(part)); + + addContributionItem(diagramContributionItems, EXPORT, contributionFactory.createLayoutingModeContributionItem(part)); + addContributionItem(diagramContributionItems, EXPORT, contributionFactory.createSaveAsImageContributionItem()); + } + + private void addContributionItem(Collection<IContributionItem> contributionItems, String separatorName, IContributionItem contributionItem) { + if (contributionItem != null) { + contributionItems.add(contributionItem); + manager.insertAfter(separatorName, contributionItem); + } + } + + private void addDiagramElementContributionItems() { + addContributionItem(diagramElementContributionItems, ARRANGE_SELECTION, contributionFactory.createDistributeContribution()); + addContributionItem(diagramElementContributionItems, ARRANGE_SELECTION, contributionFactory.createAlignMenuManager()); + addContributionItem(diagramElementContributionItems, ARRANGE_SELECTION, contributionFactory.createArrangeMenuManager(part)); + + IContributionItem pinElementContributionItem = contributionFactory.createPinElementContribution(part); + addContributionItem(diagramElementContributionItems, HIDE_PIN, contributionFactory.createUnPinElementContribution(part, pinElementContributionItem)); + addContributionItem(diagramElementContributionItems, HIDE_PIN, pinElementContributionItem); + + addContributionItem(diagramElementContributionItems, PAST, contributionFactory.createCopyLayoutContribution(part)); + + addContributionItem(diagramElementContributionItems, HIDE_DELETE, contributionFactory.createDeleteFromModelContribution(part)); + addContributionItem(diagramElementContributionItems, HIDE_DELETE, contributionFactory.createDeleteFromDiagramContribution(part)); + addContributionItem(diagramElementContributionItems, HIDE_DELETE, contributionFactory.createHideElementContribution(part)); + // The following contribution is dynamically provided because the + // default contribution does not handle visibility + // addContributionItem(diagramElementContributionItems, HIDE_DELETE, + // contributionFactory.createHideElementLabelContribution(part)); + + addContributionItem(diagramElementContributionItems, FONT, contributionFactory.createFontDialogContribution(part)); + addContributionItem(diagramElementContributionItems, FONT, contributionFactory.createFontColorContribution(part)); + addContributionItem(diagramElementContributionItems, FONT, contributionFactory.createItalicFontStyleContribution(part)); + addContributionItem(diagramElementContributionItems, FONT, contributionFactory.createBoldFontStyleContribution(part)); + + addContributionItem(diagramElementContributionItems, STYLE, contributionFactory.createCopyAppearancePropertiesContribution(part)); + addContributionItem(diagramElementContributionItems, STYLE, contributionFactory.createResetStylePropertyContribution(part)); + addContributionItem(diagramElementContributionItems, STYLE, contributionFactory.createSetStyleToWorkspaceImageContribution(part)); + addContributionItem(diagramElementContributionItems, STYLE, contributionFactory.createRouterContribution()); + addContributionItem(diagramElementContributionItems, STYLE, contributionFactory.createLineColorPropertyContribution(part)); + addContributionItem(diagramElementContributionItems, STYLE, contributionFactory.createFillColorContribution(part)); + + addContributionItem(diagramElementContributionItems, SIZE, contributionFactory.createAutoSizeContribution(part)); + addContributionItem(diagramElementContributionItems, SIZE, contributionFactory.createSizeBothContribution(part)); + } + + @Override + public void dispose() { + releaseTabbarContributions(); + super.dispose(); + } + } diff --git a/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/internal/editor/tabbar/TabbarFillerWithoutContributions.java b/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/internal/editor/tabbar/TabbarFillerWithoutContributions.java index 7dfd7fbc5c..006eb2ea2d 100644 --- a/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/internal/editor/tabbar/TabbarFillerWithoutContributions.java +++ b/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/internal/editor/tabbar/TabbarFillerWithoutContributions.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2013, 2014 THALES GLOBAL SERVICES and others. + * Copyright (c) 2013, 2016 THALES GLOBAL SERVICES and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -36,6 +36,7 @@ import org.eclipse.sirius.diagram.ui.tools.internal.editor.tabbar.contributions. import org.eclipse.swt.widgets.ToolBar; import org.eclipse.swt.widgets.ToolItem; import org.eclipse.ui.IWorkbenchPage; +import org.eclipse.ui.menus.IMenuService; /** * Directly fill the tabbar. This filler does not allows extension and does not @@ -195,4 +196,24 @@ public class TabbarFillerWithoutContributions extends AbstractTabbarFiller { AutoSizeAction autoSizeAction = new AutoSizeAction(page); manager.add(autoSizeAction); } + + /** + * Add the additions group and ask the menu service to populate the tabbar + * with contributions regarding the toolbar scheme with + * {@link Tabbar#FIXED_TABBAR_ID} id. + */ + @Override + protected void addTabbarContributions() { + addSeparator("additions"); //$NON-NLS-1$ + ((ToolBarContextService) IToolBarContextService.INSTANCE).setMenuManager(manager); + ((ToolBarContextService) IToolBarContextService.INSTANCE).setPage(page); + ((ToolBarContextService) IToolBarContextService.INSTANCE).setPart(part); + + // Get the menu service corresponding to the current site (and not the + // current workbench window). + IMenuService menuService = (IMenuService) part.getSite().getService(IMenuService.class); + menuService.populateContributionManager(manager, "toolbar:" + Tabbar.FIXED_TABBAR_ID); //$NON-NLS-1$ + + IToolBarContextService.INSTANCE.dispose(); + } } diff --git a/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/internal/editor/tabbar/contributions/DiagramElementHideDeleteExtensionContributionFactory.java b/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/internal/editor/tabbar/contributions/DiagramElementHideDeleteExtensionContributionFactory.java index 607e040fc1..5213b2e4f7 100644 --- a/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/internal/editor/tabbar/contributions/DiagramElementHideDeleteExtensionContributionFactory.java +++ b/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/internal/editor/tabbar/contributions/DiagramElementHideDeleteExtensionContributionFactory.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2012, 2015 THALES GLOBAL SERVICES and others. + * Copyright (c) 2012, 2016 THALES GLOBAL SERVICES and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -10,18 +10,8 @@ *******************************************************************************/ package org.eclipse.sirius.diagram.ui.tools.internal.editor.tabbar.contributions; -import org.eclipse.gmf.runtime.diagram.ui.actions.ActionIds; -import org.eclipse.gmf.runtime.diagram.ui.l10n.DiagramUIMessages; -import org.eclipse.jface.action.ActionContributionItem; import org.eclipse.jface.viewers.IStructuredSelection; -import org.eclipse.sirius.diagram.ui.part.SiriusDiagramActionBarContributor; -import org.eclipse.sirius.diagram.ui.provider.DiagramUIPlugin; -import org.eclipse.sirius.diagram.ui.tools.api.image.DiagramImagesPath; -import org.eclipse.sirius.diagram.ui.tools.internal.actions.delete.DeleteFromDiagramAction; -import org.eclipse.sirius.diagram.ui.tools.internal.actions.delete.DeleteFromModelWithHookAction; -import org.eclipse.sirius.diagram.ui.tools.internal.actions.visibility.HideDDiagramElementAction; import org.eclipse.sirius.diagram.ui.tools.internal.actions.visibility.HideDDiagramElementLabelAction; -import org.eclipse.sirius.diagram.ui.tools.internal.editor.tabbar.actions.DiagramActionContributionItem; import org.eclipse.sirius.diagram.ui.tools.internal.editor.tabbar.actions.HideDDiagramElementLabelActionContributionItem; import org.eclipse.sirius.diagram.ui.tools.internal.editor.tabbar.contributions.expressions.DDiagramElementTabbarExpression; import org.eclipse.ui.menus.IContributionRoot; @@ -37,25 +27,7 @@ public class DiagramElementHideDeleteExtensionContributionFactory extends Sirius @Override public void createContributionItems(IServiceLocator serviceLocator, IContributionRoot additions) { - - super.createContributionItems(serviceLocator, additions); - - HideDDiagramElementAction hideDDiagramElementAction = new HideDDiagramElementAction(SiriusDiagramActionBarContributor.HIDE_ELEMENT); - hideDDiagramElementAction.setEnabled(canEdit()); - hideDDiagramElementAction.setActionPart(getPart()); - additions.addContributionItem(new ActionContributionItem(hideDDiagramElementAction), new DDiagramElementTabbarExpression()); - createHideDDiagramElementLabelMenu(additions); - - DeleteFromDiagramAction deleteFromDiagramAction = new DeleteFromDiagramAction(DiagramUIMessages.DiagramEditor_Delete_from_Diagram, SiriusDiagramActionBarContributor.DELETE_FROM_DIAGRAM, - ActionIds.ACTION_DELETE_FROM_DIAGRAM, DiagramUIPlugin.Implementation.getBundledImageDescriptor(DiagramImagesPath.DELETE_FROM_DIAGRAM_ICON)); - additions.addContributionItem(new TabbarActionContributionItem(deleteFromDiagramAction, getPart()), new DDiagramElementTabbarExpression()); - - final DeleteFromModelWithHookAction deleteFromModelAction = new DeleteFromModelWithHookAction(getPage(), getPart()); - deleteFromModelAction.init(); - - additions.addContributionItem(new DiagramActionContributionItem(deleteFromModelAction), new DDiagramElementTabbarExpression()); - } /** diff --git a/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/internal/editor/tabbar/contributions/TabbarContributionFactory.java b/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/internal/editor/tabbar/contributions/TabbarContributionFactory.java new file mode 100644 index 0000000000..7d8a1700a3 --- /dev/null +++ b/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/internal/editor/tabbar/contributions/TabbarContributionFactory.java @@ -0,0 +1,652 @@ +/******************************************************************************* + * Copyright (c) 2016 Obeo. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Obeo - initial API and implementation + *******************************************************************************/ +package org.eclipse.sirius.diagram.ui.tools.internal.editor.tabbar.contributions; + +import org.eclipse.gef.ui.actions.ZoomComboContributionItem; +import org.eclipse.gmf.runtime.diagram.ui.actions.ActionIds; +import org.eclipse.gmf.runtime.diagram.ui.actions.internal.AutoSizeAction; +import org.eclipse.gmf.runtime.diagram.ui.actions.internal.CopyAppearancePropertiesAction; +import org.eclipse.gmf.runtime.diagram.ui.actions.internal.FontDialogAction; +import org.eclipse.gmf.runtime.diagram.ui.actions.internal.FontStyleAction; +import org.eclipse.gmf.runtime.diagram.ui.internal.l10n.DiagramUIPluginImages; +import org.eclipse.gmf.runtime.diagram.ui.l10n.DiagramUIMessages; +import org.eclipse.gmf.runtime.diagram.ui.parts.IDiagramWorkbenchPart; +import org.eclipse.jface.action.ActionContributionItem; +import org.eclipse.jface.action.ContributionItem; +import org.eclipse.jface.action.IAction; +import org.eclipse.jface.action.IContributionItem; +import org.eclipse.jface.action.ToolBarManager; +import org.eclipse.sirius.diagram.DDiagram; +import org.eclipse.sirius.diagram.ui.part.SiriusDiagramActionBarContributor; +import org.eclipse.sirius.diagram.ui.provider.DiagramUIPlugin; +import org.eclipse.sirius.diagram.ui.tools.api.editor.DDiagramEditor; +import org.eclipse.sirius.diagram.ui.tools.api.image.DiagramImagesPath; +import org.eclipse.sirius.diagram.ui.tools.internal.actions.SaveAsImageFileAction; +import org.eclipse.sirius.diagram.ui.tools.internal.actions.SelectHiddenElementsAction; +import org.eclipse.sirius.diagram.ui.tools.internal.actions.SelectPinnedElementsAction; +import org.eclipse.sirius.diagram.ui.tools.internal.actions.SizeBothAction; +import org.eclipse.sirius.diagram.ui.tools.internal.actions.delete.DeleteFromDiagramAction; +import org.eclipse.sirius.diagram.ui.tools.internal.actions.delete.DeleteFromModelWithHookAction; +import org.eclipse.sirius.diagram.ui.tools.internal.actions.layout.CopyLayoutAction; +import org.eclipse.sirius.diagram.ui.tools.internal.actions.layout.PasteLayoutAction; +import org.eclipse.sirius.diagram.ui.tools.internal.actions.refresh.RefreshDiagramAction; +import org.eclipse.sirius.diagram.ui.tools.internal.actions.style.ResetStylePropertiesToDefaultValuesAction; +import org.eclipse.sirius.diagram.ui.tools.internal.actions.style.SetStyleToWorkspaceImageAction; +import org.eclipse.sirius.diagram.ui.tools.internal.actions.visibility.HideDDiagramElementAction; +import org.eclipse.sirius.diagram.ui.tools.internal.editor.tabbar.FiltersContributionItem; +import org.eclipse.sirius.diagram.ui.tools.internal.editor.tabbar.LayersContribution; +import org.eclipse.sirius.diagram.ui.tools.internal.editor.tabbar.LayoutingModeSwitchingAction; +import org.eclipse.sirius.diagram.ui.tools.internal.editor.tabbar.actions.DiagramActionContributionItem; +import org.eclipse.sirius.diagram.ui.tools.internal.editor.tabbar.actions.HideDDiagramElementLabelActionContributionItem; +import org.eclipse.sirius.diagram.ui.tools.internal.editor.tabbar.actions.TabbarAlignMenuManager; +import org.eclipse.sirius.diagram.ui.tools.internal.editor.tabbar.actions.TabbarArrangeMenuManager; +import org.eclipse.sirius.diagram.ui.tools.internal.editor.tabbar.actions.TabbarColorPropertyContributionItem; +import org.eclipse.sirius.diagram.ui.tools.internal.editor.tabbar.actions.TabbarDistributeMenuManager; +import org.eclipse.sirius.diagram.ui.tools.internal.editor.tabbar.actions.TabbarPinElementsEclipseAction; +import org.eclipse.sirius.diagram.ui.tools.internal.editor.tabbar.actions.TabbarRouterMenuManager; +import org.eclipse.sirius.diagram.ui.tools.internal.editor.tabbar.actions.TabbarSelectMenuManager; +import org.eclipse.sirius.diagram.ui.tools.internal.editor.tabbar.actions.TabbarUnpinElementsEclipseAction; +import org.eclipse.sirius.diagram.ui.tools.internal.editor.tabbar.actions.TabbarZoomAction; +import org.eclipse.sirius.diagram.ui.tools.internal.editor.tabbar.actions.TabbarZoomInAction; +import org.eclipse.sirius.diagram.ui.tools.internal.editor.tabbar.actions.TabbarZoomOutAction; +import org.eclipse.sirius.diagram.ui.tools.internal.editor.tabbar.contributions.SiriusTabbarExtensionContributionFactory.TabbarActionContributionItem; +import org.eclipse.sirius.diagram.ui.tools.internal.editor.tabbar.contributions.ZoomExtensionContributionFactory.ZoomContributionItem; +import org.eclipse.swt.widgets.ToolBar; +import org.eclipse.swt.widgets.ToolItem; +import org.eclipse.ui.IWorkbenchPartSite; + +/** + * Factory for tabbar {@link IContributionItem}. + * + * @author lfasani + */ +public class TabbarContributionFactory { + + private static final String HIDE_ELEMENT_ID = "org.eclipse.sirius.diagram.ui.tabbar.hideelement"; //$NON-NLS-1$ + + /** + * Creates the Automatic Layout contribution item. Organized in a drop-down + * menu, this item is used to trigger an automatic layout of the elements on + * the diagram. + * + * @param part + * the current IDiagramWorkbenchPart. + * @return the {@link IContributionItem}. + */ + public IContributionItem createArrangeMenuManager(IDiagramWorkbenchPart part) { + TabbarArrangeMenuManager arrangeMenu = new TabbarArrangeMenuManager(part); + arrangeMenu.setVisible(true); + return arrangeMenu; + } + + /** + * Creates the Select menu manager contribution item. Organized in a + * drop-down menu, can be used to select groups of diagram elements in a + * single operation. + * + * @return the {@link IContributionItem}. + */ + public IContributionItem createSelectMenuManager() { + TabbarSelectMenuManager selectMenu = new TabbarSelectMenuManager(); + selectMenu.setVisible(true); + return selectMenu; + } + + /** + * Creates the Alignment contribution item. This menu contains several + * operations which can be used to align several graphical elements in + * various ways. + * + * @return the {@link IContributionItem}. + */ + public IContributionItem createAlignMenuManager() { + TabbarAlignMenuManager alignMenu = new TabbarAlignMenuManager(); + alignMenu.setVisible(true); + return alignMenu; + } + + /** + * Creates the Layer Selection contribution item. + * + * @param part + * the diagram workbench part. + * @param manager + * the toolbar manager. + * + * @return the {@link IContributionItem}. + */ + public IContributionItem createLayerContribution(IDiagramWorkbenchPart part, ToolBarManager manager) { + LayersContribution layersContribution = new LayersContribution(); + ContributionItem layerItem = layersContribution.createContributionItem(manager); + layersContribution.setPart(part); + return layerItem; + } + + /** + * Creates the Filter Selection contribution item. + * + * @param part + * the diagram workbench part. + * @param manager + * the toolbar manager. + * @return the {@link IContributionItem}. + */ + public IContributionItem createFilterContribution(IDiagramWorkbenchPart part, ToolBarManager manager) { + FiltersContributionItem filtersContribution = new FiltersContributionItem(); + ContributionItem filterItem = filtersContribution.createContributionItem(manager); + filtersContribution.setPart(part); + return filterItem; + } + + /** + * Creates the Select Hidden Elements contribution item. + * + * @param part + * the current IDiagramWorkbenchPart. + * @return the {@link IContributionItem} or null if the workbench part is + * being initialized. + */ + public IContributionItem createSelectHiddenElementsContribution(IDiagramWorkbenchPart part) { + IWorkbenchPartSite site = part.getSite(); + if (site != null) { + SelectHiddenElementsAction selectHiddenElementsAction = new SelectHiddenElementsAction(site.getPage(), part); + return new DiagramActionContributionItem(selectHiddenElementsAction); + } + return null; + } + + /** + * Creates the Hide Element contribution item. This button hides all the + * selected elements from view. + * + * @param part + * the current IDiagramWorkbenchPart. + * @return the {@link IContributionItem}. + */ + public IContributionItem createHideElementContribution(IDiagramWorkbenchPart part) { + HideDDiagramElementAction hideDDiagramElementAction = new HideDDiagramElementAction(SiriusDiagramActionBarContributor.HIDE_ELEMENT); + hideDDiagramElementAction.setActionPart(part); + TabbarActionContributionItem tabbarActionContributionItem = new TabbarActionContributionItem(hideDDiagramElementAction, part); + tabbarActionContributionItem.setId(HIDE_ELEMENT_ID); + return tabbarActionContributionItem; + } + + /** + * Creates the Hide Element Label contribution item. This button hides the + * label of the selected elements. + * + * @param part + * the current IDiagramWorkbenchPart. + * @return the {@link IContributionItem}. + */ + public IContributionItem createHideElementLabelContribution(IDiagramWorkbenchPart part) { + HideDDiagramElementLabelActionContributionItem contributionItem = new HideDDiagramElementLabelActionContributionItem(part); + return contributionItem; + } + + /** + * Creates the Delete From Diagram contribution item. This action removes + * the selected graphical element from the diagram, but does not delete the + * corresponding semantic elements. + * + * @param part + * the current IDiagramWorkbenchPart. + * @return the {@link IContributionItem}. + */ + public IContributionItem createDeleteFromDiagramContribution(IDiagramWorkbenchPart part) { + DeleteFromDiagramAction deleteFromDiagramAction = new DeleteFromDiagramAction(DiagramUIMessages.DiagramEditor_Delete_from_Diagram, SiriusDiagramActionBarContributor.DELETE_FROM_DIAGRAM, + ActionIds.ACTION_DELETE_FROM_DIAGRAM, DiagramUIPlugin.Implementation.getBundledImageDescriptor(DiagramImagesPath.DELETE_FROM_DIAGRAM_ICON)); + return new TabbarActionContributionItem(deleteFromDiagramAction, part); + } + + /** + * Creates the Delete From Model contribution item. This action removes both + * the selected graphical element and the corresponding semantic elements. + * + * @param part + * the current IDiagramWorkbenchPart. + * @return the {@link IContributionItem} or null if the workbench part is + * being initialized. + */ + public IContributionItem createDeleteFromModelContribution(IDiagramWorkbenchPart part) { + IWorkbenchPartSite site = part.getSite(); + if (site != null) { + DeleteFromModelWithHookAction deleteFromModelAction = new DeleteFromModelWithHookAction(site.getPage(), part); + deleteFromModelAction.init(); + return new DiagramActionContributionItem(deleteFromModelAction); + } + return null; + } + + /** + * Creates the Select Pinned elements contribution item. + * + * @param part + * the current IDiagramWorkbenchPart. + * @return the {@link IContributionItem} or null if the workbench part is + * being initialized. + */ + public IContributionItem createSelectPinnedElementsContribution(IDiagramWorkbenchPart part) { + IWorkbenchPartSite site = part.getSite(); + if (site != null) { + SelectPinnedElementsAction pinnedElementsAction = new SelectPinnedElementsAction(site.getPage(), part); + + return new DiagramActionContributionItem(pinnedElementsAction); + } + return null; + } + + /** + * Creates the Pin element contribution item. Mark all the selected elements + * as pinned. + * + * @param part + * the current IDiagramWorkbenchPart. + * @return the {@link IContributionItem}. + */ + public IContributionItem createPinElementContribution(IDiagramWorkbenchPart part) { + TabbarPinElementsEclipseAction pinAction = new TabbarPinElementsEclipseAction(); + return new TabbarActionContributionItem(pinAction, part); + } + + /** + * Creates the Unpin element contribution item. Mark all the selected + * elements as un-pinned. + * + * @param part + * the current IDiagramWorkbenchPart. + * @param pinElementContributionItem + * the opposite pin contribution item. Can be null. + * @return the {@link IContributionItem}. + */ + public IContributionItem createUnPinElementContribution(IDiagramWorkbenchPart part, IContributionItem pinElementContributionItem) { + + TabbarUnpinElementsEclipseAction unpinAction = new TabbarUnpinElementsEclipseAction(); + if (pinElementContributionItem instanceof TabbarActionContributionItem) { + IAction pinAction = ((TabbarActionContributionItem) pinElementContributionItem).getAction(); + if (pinAction instanceof TabbarPinElementsEclipseAction) { + ((TabbarPinElementsEclipseAction) pinAction).setOppositePinAction(unpinAction); + } + unpinAction.setOppositePinAction(pinAction); + } + return new TabbarActionContributionItem(unpinAction, part); + } + + /** + * Creates the Zoom combo contribution item. + * + * @param part + * the current IDiagramWorkbenchPart. + * @return the {@link IContributionItem} or null if the workbench part is + * being initialized. + */ + public IContributionItem createZoomContribution(IDiagramWorkbenchPart part) { + IWorkbenchPartSite site = part.getSite(); + if (site != null) { + ZoomComboContributionItem zoomItem = new ZoomComboContributionItem(site.getPage()) { + + @Override + public void fill(ToolBar parent, int index) { + super.fill(parent, index); + ToolItem addedItem = parent.getItem(parent.getItemCount() - 1); + addedItem.setToolTipText(DiagramUIMessages.ZoomActionMenu_ZoomLabel); + } + + }; + return zoomItem; + } + return null; + } + + /** + * Creates the Zoom-in contribution item. + * + * @param part + * the current IDiagramWorkbenchPart. + * @return the {@link IContributionItem} or null if the workbench part is + * being initialized. + */ + public IContributionItem createZoomInContribution(IDiagramWorkbenchPart part) { + IWorkbenchPartSite site = part.getSite(); + if (site != null) { + TabbarZoomAction zoomIn = new TabbarZoomInAction(); + zoomIn.setImageDescriptor(DiagramUIPluginImages.DESC_ZOOM_IN); + zoomIn.setText(DiagramUIMessages.ZoomAction_ZoomIn); + return new ZoomContributionItem(zoomIn, site.getPage()); + } + return null; + } + + /** + * Creates the Zoom-out contribution item. + * + * @param part + * the current IDiagramWorkbenchPart. + * @return the {@link IContributionItem} or null if the workbench part is + * being initialized. + */ + public IContributionItem createZoomOutContribution(IDiagramWorkbenchPart part) { + IWorkbenchPartSite site = part.getSite(); + if (site != null) { + TabbarZoomAction zoomOut = new TabbarZoomOutAction(); + zoomOut.setImageDescriptor(DiagramUIPluginImages.DESC_ZOOM_OUT); + zoomOut.setText(DiagramUIMessages.ZoomAction_ZoomOut); + return new ZoomContributionItem(zoomOut, site.getPage()); + } + return null; + } + + /** + * Creates the Font Color contribution item. + * + * @param part + * the current IDiagramWorkbenchPart. + * @return the {@link IContributionItem} or null if the workbench part is + * being initialized. + */ + public IContributionItem createFontColorContribution(IDiagramWorkbenchPart part) { + IWorkbenchPartSite site = part.getSite(); + if (site != null) { + TabbarColorPropertyContributionItem fontColorMenu = TabbarColorPropertyContributionItem.createFontColorContributionItem(site.getPage()); + fontColorMenu.setActionWorkbenchPart(part); + return fontColorMenu; + } + return null; + } + + /** + * Creates the Bold font contribution item. + * + * @param part + * the current IDiagramWorkbenchPart. + * @return the {@link IContributionItem} or null if the workbench part is + * being initialized. + */ + public IContributionItem createBoldFontStyleContribution(IDiagramWorkbenchPart part) { + IWorkbenchPartSite site = part.getSite(); + if (site != null) { + FontStyleAction fontStyleBoldAction = FontStyleAction.createBoldFontStyleAction(site.getPage()); + return new ActionContributionItem(fontStyleBoldAction); + } + return null; + } + + /** + * Creates the Italic font contribution item. + * + * @param part + * the current IDiagramWorkbenchPart. + * @return the {@link IContributionItem} or null if the workbench part is + * being initialized. + */ + public IContributionItem createItalicFontStyleContribution(IDiagramWorkbenchPart part) { + IWorkbenchPartSite site = part.getSite(); + if (site != null) { + FontStyleAction fontStyleItalicAction = FontStyleAction.createItalicFontStyleAction(site.getPage()); + return new ActionContributionItem(fontStyleItalicAction); + } + return null; + } + + /** + * Creates the Font dialog contribution item. + * + * @param part + * the current IDiagramWorkbenchPart. + * @return the {@link IContributionItem} or null if the workbench part is + * being initialized. + */ + public IContributionItem createFontDialogContribution(IDiagramWorkbenchPart part) { + IWorkbenchPartSite site = part.getSite(); + if (site != null) { + IAction fontDialogAction = new FontDialogAction(site.getPage()); + fontDialogAction.setImageDescriptor(DiagramUIPlugin.Implementation.getBundledImageDescriptor(DiagramImagesPath.FONT_WIZARD)); + return new ActionContributionItem(fontDialogAction); + } + return null; + } + + /** + * Creates the Fill Color contribution item. + * + * @param part + * the current IDiagramWorkbenchPart. + * @return the {@link IContributionItem} or null if the workbench part is + * being initialized. + */ + public IContributionItem createFillColorContribution(IDiagramWorkbenchPart part) { + IWorkbenchPartSite site = part.getSite(); + if (site != null) { + TabbarColorPropertyContributionItem fillColorMenu = TabbarColorPropertyContributionItem.createFillColorContributionItem(site.getPage()); + fillColorMenu.setActionWorkbenchPart(part); + return fillColorMenu; + } + return null; + } + + /** + * Creates the Line Color contribution item. + * + * @param part + * the current IDiagramWorkbenchPart. + * @return the {@link IContributionItem} or null if the workbench part is + * being initialized. + */ + public IContributionItem createLineColorPropertyContribution(IDiagramWorkbenchPart part) { + IWorkbenchPartSite site = part.getSite(); + if (site != null) { + TabbarColorPropertyContributionItem lineColorMenu = TabbarColorPropertyContributionItem.createLineColorContributionItem(site.getPage()); + lineColorMenu.setActionWorkbenchPart(part); + return lineColorMenu; + } + return null; + } + + /** + * Creates the Cancel Custom Style contribution item. The Cancel Custom + * Style button resets all the style attributes of an element to its default + * values and un-marks it as customized. + * + * @param part + * the current IDiagramWorkbenchPart. + * @return the {@link IContributionItem} or null if the workbench part is + * being initialized. + */ + public IContributionItem createResetStylePropertyContribution(IDiagramWorkbenchPart part) { + IWorkbenchPartSite site = part.getSite(); + if (site != null) { + ResetStylePropertiesToDefaultValuesAction resetStylePropertiesToDefaultValuesAction = new ResetStylePropertiesToDefaultValuesAction(site.getPage()); + return new TabbarActionContributionItem(resetStylePropertiesToDefaultValuesAction, part); + } + return null; + } + + /** + * Creates the set style to workspace image contribution item. The Workspace + * image button can be used to replace the graphical representation of an + * element by an image that you can select from anywhere in your Eclipse + * workspace. + * + * @param part + * the current IDiagramWorkbenchPart. + * @return the {@link IContributionItem}. + */ + public IContributionItem createSetStyleToWorkspaceImageContribution(IDiagramWorkbenchPart part) { + return new TabbarActionContributionItem(new SetStyleToWorkspaceImageAction(), part); + } + + /** + * Creates the Distribute menu contribution item. This menu contains several + * actions which can be used to distribute the selected diagram elements + * horizontally/vertically with a same space between their centers or their + * bounds. + * + * @return the {@link IContributionItem}. + */ + public IContributionItem createDistributeContribution() { + TabbarDistributeMenuManager distributeMenu = new TabbarDistributeMenuManager(); + return distributeMenu; + } + + /** + * Creates the Export As Image contribution item.This button can be used to + * export the current diagram as an image file stored on disk. + * + * @return the {@link IContributionItem}. + */ + public IContributionItem createSaveAsImageContributionItem() { + SaveAsImageFileAction saveAsImageFileAction = new SaveAsImageFileAction(); + return new ActionContributionItem(saveAsImageFileAction); + } + + /** + * Creates the Layout Mode contribution item. This button enables a special + * "layout mode", in which some operations are prevented from having an + * effect on the semantic model. + * + * @param part + * the current IDiagramWorkbenchPart. + * @return the {@link IContributionItem} or null if the workbench part is + * being initialized or if the diagram doesn't allow the layouting + * mode. + */ + public IContributionItem createLayoutingModeContributionItem(IDiagramWorkbenchPart part) { + IWorkbenchPartSite site = part.getSite(); + if (site != null && part instanceof DDiagramEditor) { + final DDiagramEditor editor = (DDiagramEditor) part; + DDiagram editorDiagram = (DDiagram) editor.getRepresentation(); + if (LayoutingModeSwitchingAction.diagramAllowsLayoutingMode(editorDiagram)) { + LayoutingModeSwitchingAction layoutingModeSwitchingAction = new LayoutingModeSwitchingAction(site.getPage(), editorDiagram); + return new TabbarActionContributionItem(layoutingModeSwitchingAction); + } + } + return null; + } + + /** + * Creates the Router contribution item. This action allows changing the + * line style of edges (Rectilinear, Oblique, Tree) + * + * @return the {@link IContributionItem}. + */ + public IContributionItem createRouterContribution() { + TabbarRouterMenuManager routerMenu = new TabbarRouterMenuManager(); + routerMenu.setVisible(true); + return routerMenu; + } + + /** + * Creates the Apply Style contribution item. Use this button to reproduce + * the visual style of an element onto others. + * + * @param part + * the current IDiagramWorkbenchPart. + * @return the {@link IContributionItem} or null if the workbench part is + * being initialized. + */ + public IContributionItem createCopyAppearancePropertiesContribution(IDiagramWorkbenchPart part) { + IWorkbenchPartSite site = part.getSite(); + if (site != null) { + CopyAppearancePropertiesAction copyAppearancePropertiesAction = new CopyAppearancePropertiesAction(site.getPage()); + return new ActionContributionItem(copyAppearancePropertiesAction); + } + return null; + } + + /** + * Creates the copy layout contribution item. This tool can be used to + * duplicate the layout of some diagram elements from this diagram into + * another. + * + * @param part + * the current IDiagramWorkbenchPart. + * @return the {@link IContributionItem} or null if the workbench part is + * being initialized. + */ + public IContributionItem createCopyLayoutContribution(IDiagramWorkbenchPart part) { + IWorkbenchPartSite site = part.getSite(); + if (site != null) { + CopyLayoutAction copyLayoutAction = new CopyLayoutAction(site.getPage(), part); + return new ActionContributionItem(copyLayoutAction); + } + return null; + } + + /** + * Creates the Paste Layout contribution item. + * + * @param part + * the current IDiagramWorkbenchPart. + * @return the {@link IContributionItem} or null if the workbench part is + * being initialized. + */ + public IContributionItem createPasteLayoutContribution(IDiagramWorkbenchPart part) { + IWorkbenchPartSite site = part.getSite(); + if (site != null) { + PasteLayoutAction pasteLayoutAction = new PasteLayoutAction(site.getPage(), part); + return new ActionContributionItem(pasteLayoutAction); + } + return null; + } + + /** + * Creates the Refresh action contribution item. This operation, which can + * also be invoked with the F5 keyboard shortcut, will force an update of + * the diagram's content according to the latest version of the underlying + * semantic model. + * + * @return the {@link IContributionItem}. + */ + public IContributionItem createRefreshContribution() { + RefreshDiagramAction action = new RefreshDiagramAction(SiriusDiagramActionBarContributor.REFRESH_DIAGRAM, + DiagramUIPlugin.Implementation.getBundledImageDescriptor(DiagramImagesPath.REFRESH_IMG)); + return new ActionContributionItem(action); + } + + /** + * Creates the Make Same Size contribution item. When multiple elements are + * selected, clicking on this tool will resize all of them to have the same + * size (both width and height). + * + * @param part + * the current IDiagramWorkbenchPart. + * @return the {@link IContributionItem} or null if the workbench part is + * being initialized. + */ + public IContributionItem createSizeBothContribution(IDiagramWorkbenchPart part) { + IWorkbenchPartSite site = part.getSite(); + if (site != null) { + SizeBothAction sizeBothAction = new SizeBothAction(site.getPage()); + sizeBothAction.init(); + return new ActionContributionItem(sizeBothAction); + } + return null; + } + + /** + * Creates the Auto-Size contribution item. This button marks the selected + * elements as auto-sized. + * + * @param part + * the current IDiagramWorkbenchPart. + * @return the {@link IContributionItem} or null if the workbench part is + * being initialized. + */ + public IContributionItem createAutoSizeContribution(IDiagramWorkbenchPart part) { + IWorkbenchPartSite site = part.getSite(); + if (site != null) { + AutoSizeAction autoSizeAction = new AutoSizeAction(site.getPage()); + return new ActionContributionItem(autoSizeAction); + } + return null; + } + +} |
