Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLaurent Fasani2016-03-29 08:34:14 +0000
committerLaurent Redor2016-04-13 13:24:34 +0000
commit4740458497cda30bd3609b45163db3e46e70fa2d (patch)
treef32b02b033ebc5fba9282d3cfb16efb482624064
parent0858d594c7010ef90d50967efe25b0c2d1cd8e48 (diff)
downloadorg.eclipse.sirius-3.1.5rc1.tar.gz
org.eclipse.sirius-3.1.5rc1.tar.xz
org.eclipse.sirius-3.1.5rc1.zip
[491173] Fix tabbar animation effectv3.1.5rc1
* To avoid animation effect, the contributed items are contributed statically. * The static contribution does not support the dynamic visibility so HideDDiagramElementLabelActionContributionItem is still dynamically contributed for TabbarFillerWithContributions (it's the only one). So other dynamic contributions have been removed (see plugin.xml modifications). Bug: 491173 Change-Id: I5f9c32251566d3acf3163cd545bd85f208ade576 Signed-off-by: Laurent Fasani <laurent.fasani@obeo.fr> Signed-off-by: Laurent Redor <laurent.redor@obeo.fr>
-rw-r--r--plugins/org.eclipse.sirius.diagram.ui/plugin.xml73
-rw-r--r--plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/internal/editor/tabbar/AbstractTabbarFiller.java15
-rw-r--r--plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/internal/editor/tabbar/Tabbar.java32
-rw-r--r--plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/internal/editor/tabbar/TabbarFillerWithContributions.java176
-rw-r--r--plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/internal/editor/tabbar/contributions/DiagramElementHideDeleteExtensionContributionFactory.java30
-rw-r--r--plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/internal/editor/tabbar/contributions/TabbarContributionFactory.java690
6 files changed, 887 insertions, 129 deletions
diff --git a/plugins/org.eclipse.sirius.diagram.ui/plugin.xml b/plugins/org.eclipse.sirius.diagram.ui/plugin.xml
index 6c4d9fb250..eba7d29f27 100644
--- a/plugins/org.eclipse.sirius.diagram.ui/plugin.xml
+++ b/plugins/org.eclipse.sirius.diagram.ui/plugin.xml
@@ -1084,84 +1084,13 @@
point="org.eclipse.ui.menus">
<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">
- </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">
- </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">
- </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">
- </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">
- </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">
- </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">
- </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">
- </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">
- </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">
- </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">
- </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">
- </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">
- </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">
- </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?after=org.eclipse.sirius.diagram.ui.tabbar.hideelement">
</menuContribution>
</extension>
<extension
point="org.eclipse.ui.menus">
-
<menuContribution
locationURI="popup:org.eclipse.sirius.diagram.ui.popup.hideReveal">
<command
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 d92e068552..2e03f2a6ad 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
@@ -21,6 +21,7 @@ import org.eclipse.jface.action.IContributionItem;
import org.eclipse.jface.action.IToolBarManager;
import org.eclipse.jface.action.ToolBarManager;
import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.StructuredSelection;
import org.eclipse.sirius.business.api.session.Session;
import org.eclipse.sirius.common.ui.tools.api.util.EclipseUIUtil;
import org.eclipse.sirius.diagram.ui.tools.api.editor.DDiagramEditor;
@@ -59,10 +60,12 @@ public class Tabbar extends Composite implements ISelectionListener, IAuthorityL
private ToolBarManager manager;
- private TabbarFiller diagramFiller;
+ private AbstractTabbarFiller diagramFiller;
private IPermissionAuthority permissionAuthority;
+ private Collection<Object> currentSelection;
+
/**
* Instantiate a new tab bar.
*
@@ -150,10 +153,28 @@ public class Tabbar extends Composite implements ISelectionListener, IAuthorityL
return canBeDynamic;
}
+ @SuppressWarnings("unchecked")
@Override
public void selectionChanged(IWorkbenchPart partSelected, ISelection selection) {
- // nothing to do here. Each item contribution is now responsible for
- // refresh himself when selection change.
+ if (!(diagramFiller instanceof TabbarFillerWithoutContributions) && partSelected == this.part) {
+ if (currentSelection == null || !sameSelection(selection)) {
+ if (selection instanceof StructuredSelection) {
+ currentSelection = ((StructuredSelection) selection).toList();
+ }
+ reinitToolBar(selection);
+ }
+ }
+ }
+
+ @SuppressWarnings("rawtypes")
+ private boolean sameSelection(ISelection selection) {
+ if (selection instanceof StructuredSelection) {
+ List newSelection = ((StructuredSelection) selection).toList();
+ if (newSelection.size() == currentSelection.size()) {
+ return currentSelection.containsAll(newSelection);
+ }
+ }
+ return false;
}
/**
@@ -163,6 +184,9 @@ public class Tabbar extends Composite implements ISelectionListener, IAuthorityL
* the selection
*/
public void reinitToolBar(ISelection 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..78c107b113 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,167 @@ 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.createConcernContribution(part));
+ 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/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..06266e1bdc
--- /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,690 @@
+/*******************************************************************************
+ * 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.description.DiagramDescription;
+import org.eclipse.sirius.diagram.ui.part.SiriusDiagramActionBarContributor;
+import org.eclipse.sirius.diagram.ui.provider.DiagramUIPlugin;
+import org.eclipse.sirius.diagram.ui.tools.api.action.ConcernComboContributionItem;
+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 Concern Selection contribution item, if needed.
+ *
+ * @param part
+ * the diagram workbench part.
+ * @return the {@link IContributionItem} or null of it is not needed.
+ */
+ public IContributionItem createConcernContribution(IDiagramWorkbenchPart part) {
+ if (part instanceof DDiagramEditor) {
+ final DDiagram editorDiagram = (DDiagram) ((DDiagramEditor) part).getRepresentation();
+ DiagramDescription description = null;
+ if (editorDiagram != null) {
+ description = editorDiagram.getDescription();
+ }
+
+ if (description != null) {
+ IWorkbenchPartSite site = part.getSite();
+ if (site != null) {
+ return createConcernItem(editorDiagram, description, site);
+ }
+ }
+ }
+ return null;
+ }
+
+ private IContributionItem createConcernItem(final DDiagram diagram, final DiagramDescription description, IWorkbenchPartSite site) {
+ if (description.getConcerns() != null && !description.getConcerns().getOwnedConcernDescriptions().isEmpty() && description.getConcerns().getOwnedConcernDescriptions().size() != 1) {
+ ConcernComboContributionItem item = new ConcernComboContributionItem(site.getPage(), ""); //$NON-NLS-1$
+ if (diagram != null) {
+ item.setDiagram(diagram);
+ }
+ return item;
+ }
+ return null;
+ }
+
+ /**
+ * 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;
+ }
+
+}

Back to the top