Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-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