blob: e4f17fead2b420c2773e29996c0578dd69a68858 [file] [log] [blame]
<?xml version='1.0' encoding='UTF-8'?>
<!-- Schema file written by PDE -->
<schema targetNamespace="org.eclipse.sirius.diagram.ui" xmlns="http://www.w3.org/2001/XMLSchema">
<annotation>
<appInfo>
<meta.schema plugin="org.eclipse.sirius.diagram.ui" id="tabbarContributor" name="Tabbar Contributor Extension"/>
</appInfo>
<documentation>
This extension-point allows providing a full customized tab-bar by implementing the &lt;code&gt;org.eclipse.sirius.diagram.ui.tools.api.editor.tabbar.ITabbarContributor&lt;/code&gt;. See the ITabbarContributor documentation for more details.
</documentation>
</annotation>
<element name="extension">
<annotation>
<appInfo>
<meta.element />
</appInfo>
</annotation>
<complexType>
<sequence minOccurs="1" maxOccurs="unbounded">
<element ref="tabbarContributor"/>
</sequence>
<attribute name="point" type="string" use="required">
<annotation>
<documentation>
The fully qualified identifier of the target extension point.
</documentation>
</annotation>
</attribute>
<attribute name="id" type="string">
<annotation>
<documentation>
An optional identifier of the extension instance.
</documentation>
</annotation>
</attribute>
<attribute name="name" type="string">
<annotation>
<documentation>
An optional name of the extension instance.
</documentation>
<appInfo>
<meta.attribute translatable="true"/>
</appInfo>
</annotation>
</attribute>
</complexType>
</element>
<element name="tabbarContributor">
<annotation>
<documentation>
ITabbarContributor implementation
</documentation>
</annotation>
<complexType>
<attribute name="class" type="string" use="required">
<annotation>
<documentation>
An implementation of ITabbarContributor. An abstract implementation AbstractTabbarContributor is available to reuse the existing Sirius actions. See the interface javadoc for more details.
</documentation>
<appInfo>
<meta.attribute kind="java" basedOn=":org.eclipse.sirius.diagram.ui.tools.api.editor.tabbar.ITabbarContributor"/>
</appInfo>
</annotation>
</attribute>
</complexType>
</element>
<annotation>
<appInfo>
<meta.section type="since"/>
</appInfo>
<documentation>
This extension-point is available since Sirius 4.0.0.
</documentation>
</annotation>
<annotation>
<appInfo>
<meta.section type="examples"/>
</appInfo>
<documentation>
&lt;pre&gt;&lt;extension
point=&quot;org.eclipse.sirius.diagram.ui.tabbarContributor&quot;&gt;
&lt;tabbarContributor
class=&quot;org.eclipse.sirius.tests.swtbot.tabbar.SampleTabbarExt&quot;&gt;
&lt;/tabbarContributor&gt;
&lt;/extension&gt;
&lt;/pre&gt;
Example of ITabbarContributor implementation. In this example, we provide two different contributions when the diagram background is selected or when a diagram element is selected. If an edge is selected, the accept method return false. Thus, the tabbar will be empty.
&lt;pre&gt;
public class SampleTabbarExt extends AbstractTabbarContributor {
private ArrayList&lt;IContributionItem&gt; diagramContributionItems;
private ArrayList&lt;IContributionItem&gt; diagramElementContributionItems;
@Override
public List&lt;IContributionItem&gt; getContributionItems(ISelection selection, IDiagramWorkbenchPart part, ToolBarManager manager) {
List&lt;IContributionItem&gt; contributionItems = new ArrayList&lt;IContributionItem&gt;();
if (selection instanceof IStructuredSelection) {
Object firstElement = ((IStructuredSelection) selection).getFirstElement();
if (firstElement instanceof AbstractDDiagramEditPart) {
//If the user selects the diagram background, a specifc contribution items list is returned.
contributionItems = getDiagramContributionItem(part, manager);
} else if (firstElement instanceof IAbstractDiagramNodeEditPart) {
//If the user selects a DDIagramElement, another contribution items list is returned.
contributionItems = getDiagramElementContributionItem(part, manager);
}
}
return contributionItems;
}
@Override
public boolean accept(ISelection selection) {
boolean accept = false;
if (selection == null) {
accept = true;
} else if (selection instanceof IStructuredSelection) {
Object firstElement = ((IStructuredSelection) selection).getFirstElement();
if (firstElement instanceof AbstractDDiagramEditPart || firstElement instanceof IAbstractDiagramNodeEditPart) {
accept = true;
}
}
return accept;
}
@Override
public List&lt;IContributionItem&gt; getContributionItems(IDiagramWorkbenchPart part, ToolBarManager manager) {
return getDiagramContributionItem(part, manager);
}
private List&lt;IContributionItem&gt; getDiagramContributionItem(IDiagramWorkbenchPart part, ToolBarManager manager) {
if (diagramContributionItems == null) {
diagramContributionItems = new ArrayList&lt;IContributionItem&gt;();
diagramContributionItems.add(createArrangeMenuManager(part));
diagramContributionItems.add(createSelectMenuManager());
diagramContributionItems.add(createLayerContribution(part, manager));
diagramContributionItems.add(createZoomInContribution(part));
diagramContributionItems.add(createLayoutingModeContributionItem(part));
diagramContributionItems.add(createCopyAppearancePropertiesContribution(part));
diagramContributionItems.add(createCopyLayoutContribution(part));
}
return diagramContributionItems;
}
private List&lt;IContributionItem&gt; getDiagramElementContributionItem(IDiagramWorkbenchPart part, ToolBarManager manager) {
if (diagramElementContributionItems == null) {
diagramElementContributionItems = new ArrayList&lt;IContributionItem&gt;();
diagramElementContributionItems.add(createArrangeMenuManager(part));
diagramElementContributionItems.add(createAlignMenuManager());
diagramElementContributionItems.add(createHideElementLabelContribution(part));
diagramElementContributionItems.add(createHideElementContribution(part));
diagramElementContributionItems.add(createDeleteFromDiagramContribution(part));
diagramElementContributionItems.add(createDeleteFromModelContribution(part));
IContributionItem pinElementContributionItem = createPinElementContribution(part);
diagramElementContributionItems.add(pinElementContributionItem);
diagramElementContributionItems.add(createUnPinElementContribution(part, pinElementContributionItem));
diagramElementContributionItems.add(createAutoSizeContribution(part));
}
return diagramElementContributionItems;
}
&lt;/pre&gt;
</documentation>
</annotation>
<annotation>
<appInfo>
<meta.section type="apiinfo"/>
</appInfo>
<documentation>
org.eclipse.sirius.diagram.ui.tools.api.editor.tabbar.ITabbarContributor allows providing a customized tab-bar for a specific selection. See &quot;Supplied Implementation&quot; to reuse the default Sirius actions.
</documentation>
</annotation>
<annotation>
<appInfo>
<meta.section type="implementation"/>
</appInfo>
<documentation>
org.eclipse.sirius.diagram.ui.tools.api.editor.tabbar.AbstractTabbarContributor is an abstract implementation of ITabbarContributor that allows reusing one or several of the default Sirius contribution items.
</documentation>
</annotation>
<annotation>
<appInfo>
<meta.section type="copyright"/>
</appInfo>
<documentation>
Copyright (c) 2015 Obeo&lt;br/&gt;
This program and the accompanying materials
are made available under the terms of the Eclipse Public License 2.0
which accompanies this distribution, and is available at
&lt;a href=&quot;https://www.eclipse.org/legal/epl-2.0&quot;&gt;https://www.eclipse.org/legal/epl-v20.html&lt;/a&gt;/
SPDX-License-Identifier: EPL-2.0
</documentation>
</annotation>
</schema>