Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.
View | Details | Raw Unified | Return to bug 161573
Collapse All | Expand All

(-)src/org/eclipse/uml2/diagram/component/edit/helpers/PortRequiredEditHelperAdvice.java (+9 lines)
Added Link Here
1
package org.eclipse.uml2.diagram.component.edit.helpers;
2
3
import org.eclipse.gmf.runtime.emf.type.core.edithelper.AbstractEditHelperAdvice;
4
5
/**
6
 * @generated
7
 */
8
public class PortRequiredEditHelperAdvice extends AbstractEditHelperAdvice {
9
}
(-)src/org/eclipse/uml2/diagram/component/navigator/UMLNavigatorActionProvider.java (+154 lines)
Added Link Here
1
package org.eclipse.uml2.diagram.component.navigator;
2
3
import org.eclipse.gmf.runtime.diagram.ui.parts.DiagramEditorInput;
4
5
import org.eclipse.gmf.runtime.notation.Diagram;
6
7
import org.eclipse.jface.action.Action;
8
import org.eclipse.jface.action.IMenuManager;
9
10
import org.eclipse.jface.viewers.IStructuredSelection;
11
12
import org.eclipse.ui.IActionBars;
13
import org.eclipse.ui.IWorkbenchPage;
14
import org.eclipse.ui.PartInitException;
15
16
import org.eclipse.ui.navigator.CommonActionProvider;
17
import org.eclipse.ui.navigator.ICommonActionConstants;
18
import org.eclipse.ui.navigator.ICommonActionExtensionSite;
19
import org.eclipse.ui.navigator.ICommonMenuConstants;
20
import org.eclipse.ui.navigator.ICommonViewerWorkbenchSite;
21
22
import org.eclipse.uml2.diagram.component.edit.parts.PackageEditPart;
23
24
import org.eclipse.uml2.diagram.component.part.UMLDiagramEditor;
25
import org.eclipse.uml2.diagram.component.part.UMLDiagramEditorPlugin;
26
import org.eclipse.uml2.diagram.component.part.UMLVisualIDRegistry;
27
28
/**
29
 * @generated
30
 */
31
public class UMLNavigatorActionProvider extends CommonActionProvider {
32
33
	/**
34
	 * @generated
35
	 */
36
	private boolean myContribute;
37
38
	/**
39
	 * @generated
40
	 */
41
	private OpenDiagramAction myOpenDiagramAction;
42
43
	/**
44
	 * @generated
45
	 */
46
	public void init(ICommonActionExtensionSite aSite) {
47
		super.init(aSite);
48
		if (aSite.getViewSite() instanceof ICommonViewerWorkbenchSite) {
49
			myContribute = true;
50
			makeActions((ICommonViewerWorkbenchSite) aSite.getViewSite());
51
		} else {
52
			myContribute = false;
53
		}
54
	}
55
56
	/**
57
	 * @generated
58
	 */
59
	private void makeActions(ICommonViewerWorkbenchSite viewerSite) {
60
		myOpenDiagramAction = new OpenDiagramAction(viewerSite);
61
	}
62
63
	/**
64
	 * @generated
65
	 */
66
	public void fillActionBars(IActionBars actionBars) {
67
		if (!myContribute) {
68
			return;
69
		}
70
		IStructuredSelection selection = (IStructuredSelection) getContext().getSelection();
71
		myOpenDiagramAction.selectionChanged(selection);
72
		if (myOpenDiagramAction.isEnabled()) {
73
			actionBars.setGlobalActionHandler(ICommonActionConstants.OPEN, myOpenDiagramAction);
74
		}
75
	}
76
77
	/**
78
	 * @generated
79
	 */
80
	public void fillContextMenu(IMenuManager menu) {
81
		/*		if (!myContribute || getContext().getSelection().isEmpty()) {
82
		 return;
83
		 }
84
85
		 IStructuredSelection selection = (IStructuredSelection) getContext().getSelection();
86
87
		 myOpenDiagramAction.selectionChanged(selection);
88
		 if (myOpenDiagramAction.isEnabled()) {
89
		 menu.insertAfter(ICommonMenuConstants.GROUP_OPEN, myOpenDiagramAction);
90
		 }*/
91
	}
92
93
	/**
94
	 * @generated
95
	 */
96
	private class OpenDiagramAction extends Action {
97
98
		/**
99
		 * @generated
100
		 */
101
		private Diagram myDiagram;
102
103
		/**
104
		 * @generated
105
		 */
106
		private ICommonViewerWorkbenchSite myViewerSite;
107
108
		/**
109
		 * @generated
110
		 */
111
		public OpenDiagramAction(ICommonViewerWorkbenchSite viewerSite) {
112
			super("Open Diagram");
113
			myViewerSite = viewerSite;
114
		}
115
116
		/**
117
		 * @generated
118
		 */
119
		public final void selectionChanged(IStructuredSelection selection) {
120
			myDiagram = null;
121
			if (selection.size() == 1) {
122
				Object selectedElement = selection.getFirstElement();
123
				if (selectedElement instanceof UMLNavigatorItem) {
124
					selectedElement = ((UMLNavigatorItem) selectedElement).getView();
125
				}
126
				if (selectedElement instanceof Diagram) {
127
					Diagram diagram = (Diagram) selectedElement;
128
					if (PackageEditPart.MODEL_ID.equals(UMLVisualIDRegistry.getModelID(diagram))) {
129
						myDiagram = diagram;
130
					}
131
				}
132
			}
133
			setEnabled(myDiagram != null);
134
		}
135
136
		/**
137
		 * @generated
138
		 */
139
		public void run() {
140
			if (myDiagram == null) {
141
				return;
142
			}
143
			DiagramEditorInput editorInput = new DiagramEditorInput(myDiagram);
144
			IWorkbenchPage page = myViewerSite.getPage();
145
			try {
146
				page.openEditor(editorInput, UMLDiagramEditor.ID);
147
			} catch (PartInitException e) {
148
				UMLDiagramEditorPlugin.getInstance().logError("Exception while openning diagram", e);
149
			}
150
		}
151
152
	}
153
154
}
(-)icons/obj16/UMLDiagramFile.gif (+6 lines)
Added Link Here
1
GIF89a¥	åëø___¿¿¿ÿߟÀÀÀ€€€ÿÿÀÀÀÿÿÿ?}IÒ輲ٌ™Ìf€À@´?=´?=°?>¬Œ@§‹B¢ˆC?…E—‚FƒwM~uN{sPÔ²iÚ½|àÈ?ùúü÷ùûõøûòõûðõûíòúêðùßéøÜç÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ!ù?,pÀŸB,…H$ÄÃln I¤äC}<
2
œgô7yA×Nv¥„ΡkãL‰VD¢FC
3
¯D-£FÁZhŒFQzj$$‚„†}ˆŠIƒ{?
4
?QŒj
5
Q%„¢
6
%Q&&r«©Q°±²[µQA;
(-)icons/incomingLinksNavigatorGroup.gif (+5 lines)
Added Link Here
1
GIF89aÕÿÿ­r/‚GøØˆžf'øÐxøà˜øÐ€f>2èÆ”øè°èЈøðÈÿÿÿË6úöºøà øØ?Œ]Føè˜Ò«€üößãϹ´2àÀx­r+ðØ?¥l$yO@ž_­l$?R¼2ï߯¼…2Å6!ù,s@€pH,?È#âèh:‚¨T0ô4®
2
‹à‘?p©€Ñd¢Y`B‚¡‹p8G AØ%‚%HÁçW¶	_B†‰Š‹?’“’š??–B¥¦¥ B­®­©C³´µI·¸FA;Content-Type: image/gif
3
4
GIF89aÕÿÿ­r/‚GøØˆžf'øÐxøà˜øÐ€f>2èÆ”øè°èЈøðÈÿÿÿË6úöºøà øØ?Œ]Føè˜Ò«€üößãϹ´2àÀx­r+ðØ?¥l$yO@ž_­l$?R¼2ï߯¼…2Å6!ù,s@€pH,?È#âèh:‚¨T0ô4®
5
‹à‘?p©€Ñd¢Y`B‚¡‹p8G AØ%‚%HÁçW¶	_B†‰Š‹?’“’š??–B¥¦¥ B­®­©C³´µI·¸FA;
(-)src/org/eclipse/uml2/diagram/component/edit/parts/PackageEditPart.java (+41 lines)
Added Link Here
1
package org.eclipse.uml2.diagram.component.edit.parts;
2
3
import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;
4
import org.eclipse.gmf.runtime.notation.View;
5
import org.eclipse.gmf.runtime.diagram.ui.editparts.DiagramEditPart;
6
7
import org.eclipse.uml2.diagram.component.edit.policies.PackageCanonicalEditPolicy;
8
import org.eclipse.uml2.diagram.component.edit.policies.PackageItemSemanticEditPolicy;
9
10
/**
11
 * @generated
12
 */
13
public class PackageEditPart extends DiagramEditPart {
14
15
	/**
16
	 * @generated
17
	 */
18
	public final static String MODEL_ID = "UMLComponent"; //$NON-NLS-1$
19
20
	/**
21
	 * @generated
22
	 */
23
	public static final int VISUAL_ID = 1000;
24
25
	/**
26
	 * @generated
27
	 */
28
	public PackageEditPart(View view) {
29
		super(view);
30
	}
31
32
	/**
33
	 * @generated
34
	 */
35
	protected void createDefaultEditPolicies() {
36
		super.createDefaultEditPolicies();
37
		installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE, new PackageItemSemanticEditPolicy());
38
		installEditPolicy(EditPolicyRoles.CANONICAL_ROLE, new PackageCanonicalEditPolicy());
39
40
	}
41
}
(-)src/org/eclipse/uml2/diagram/component/edit/policies/PortRequiredItemSemanticEditPolicy.java (+20 lines)
Added Link Here
1
package org.eclipse.uml2.diagram.component.edit.policies;
2
3
import org.eclipse.gef.commands.Command;
4
5
import org.eclipse.gmf.runtime.emf.type.core.commands.DestroyReferenceCommand;
6
7
import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyReferenceRequest;
8
9
/**
10
 * @generated
11
 */
12
public class PortRequiredItemSemanticEditPolicy extends UMLBaseItemSemanticEditPolicy {
13
14
	/**
15
	 * @generated
16
	 */
17
	protected Command getDestroyReferenceCommand(DestroyReferenceRequest req) {
18
		return getMSLWrapper(new DestroyReferenceCommand(req));
19
	}
20
}
(-)src/org/eclipse/uml2/diagram/component/part/UMLNewDiagramFileWizard.java (+288 lines)
Added Link Here
1
package org.eclipse.uml2.diagram.component.part;
2
3
import java.io.IOException;
4
5
import java.util.Collections;
6
import java.util.LinkedList;
7
import java.util.List;
8
9
import org.eclipse.core.commands.ExecutionException;
10
11
import org.eclipse.core.commands.operations.OperationHistoryFactory;
12
13
import org.eclipse.core.resources.IContainer;
14
import org.eclipse.core.resources.IFile;
15
16
import org.eclipse.core.runtime.CoreException;
17
import org.eclipse.core.runtime.IAdaptable;
18
import org.eclipse.core.runtime.IProgressMonitor;
19
import org.eclipse.core.runtime.NullProgressMonitor;
20
import org.eclipse.core.runtime.Path;
21
22
import org.eclipse.emf.common.util.URI;
23
24
import org.eclipse.emf.ecore.EObject;
25
26
import org.eclipse.emf.ecore.resource.Resource;
27
import org.eclipse.emf.ecore.resource.ResourceSet;
28
29
import org.eclipse.emf.ecore.util.FeatureMap;
30
31
import org.eclipse.emf.edit.provider.IWrapperItemProvider;
32
33
import org.eclipse.emf.edit.ui.provider.AdapterFactoryContentProvider;
34
import org.eclipse.emf.edit.ui.provider.AdapterFactoryLabelProvider;
35
36
import org.eclipse.emf.transaction.TransactionalEditingDomain;
37
38
import org.eclipse.gmf.runtime.common.core.command.CommandResult;
39
40
import org.eclipse.gmf.runtime.diagram.core.services.ViewService;
41
42
import org.eclipse.gmf.runtime.diagram.core.services.view.CreateDiagramViewOperation;
43
44
import org.eclipse.gmf.runtime.emf.commands.core.command.AbstractTransactionalCommand;
45
46
import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;
47
48
import org.eclipse.gmf.runtime.notation.Diagram;
49
50
import org.eclipse.jface.viewers.ISelectionChangedListener;
51
import org.eclipse.jface.viewers.IStructuredSelection;
52
import org.eclipse.jface.viewers.SelectionChangedEvent;
53
import org.eclipse.jface.viewers.StructuredSelection;
54
import org.eclipse.jface.viewers.TreeViewer;
55
56
import org.eclipse.jface.wizard.Wizard;
57
import org.eclipse.jface.wizard.WizardPage;
58
59
import org.eclipse.swt.SWT;
60
61
import org.eclipse.swt.layout.GridData;
62
import org.eclipse.swt.layout.GridLayout;
63
64
import org.eclipse.swt.widgets.Composite;
65
import org.eclipse.swt.widgets.Label;
66
67
import org.eclipse.ui.IWorkbenchPage;
68
import org.eclipse.ui.PartInitException;
69
70
import org.eclipse.ui.dialogs.WizardNewFileCreationPage;
71
import org.eclipse.uml2.diagram.component.edit.parts.PackageEditPart;
72
73
/**
74
 * @generated
75
 */
76
public class UMLNewDiagramFileWizard extends Wizard {
77
78
	/**
79
	 * @generated
80
	 */
81
	private TransactionalEditingDomain myEditingDomain;
82
83
	/**
84
	 * @generated
85
	 */
86
	private WizardNewFileCreationPage myFileCreationPage;
87
88
	/**
89
	 * @generated
90
	 */
91
	private IFile mySelectedModelFile;
92
93
	/**
94
	 * @generated
95
	 */
96
	private IWorkbenchPage myWorkbenchPage;
97
98
	/**
99
	 * @generated
100
	 */
101
	private IStructuredSelection mySelection;
102
103
	/**
104
	 * @generated
105
	 */
106
	private EObject myDiagramRoot;
107
108
	/**
109
	 * @generated
110
	 */
111
	public UMLNewDiagramFileWizard(IFile selectedModelFile, IWorkbenchPage workbenchPage, IStructuredSelection selection, EObject diagramRoot, TransactionalEditingDomain editingDomain) {
112
		assert selectedModelFile != null : "Null selectedModelFile in UMLNewDiagramFileWizard constructor"; //$NON-NLS-1$
113
		assert workbenchPage != null : "Null workbenchPage in UMLNewDiagramFileWizard constructor"; //$NON-NLS-1$
114
		assert selection != null : "Null selection in UMLNewDiagramFileWizard constructor"; //$NON-NLS-1$
115
		assert diagramRoot != null : "Null diagramRoot in UMLNewDiagramFileWizard constructor"; //$NON-NLS-1$
116
		assert editingDomain != null : "Null editingDomain in UMLNewDiagramFileWizard constructor"; //$NON-NLS-1$
117
118
		mySelectedModelFile = selectedModelFile;
119
		myWorkbenchPage = workbenchPage;
120
		mySelection = selection;
121
		myDiagramRoot = diagramRoot;
122
		myEditingDomain = editingDomain;
123
	}
124
125
	/**
126
	 * @generated
127
	 */
128
	public void addPages() {
129
		myFileCreationPage = new WizardNewFileCreationPage("Initialize new Ecore diagram file", mySelection) {
130
131
			public void createControl(Composite parent) {
132
				super.createControl(parent);
133
134
				IContainer parentContainer = mySelectedModelFile.getParent();
135
				String originalFileName = mySelectedModelFile.getProjectRelativePath().removeFileExtension().lastSegment();
136
				String fileExtension = ".umlcomponent_diagram"; //$NON-NLS-1$
137
				String fileName = originalFileName + fileExtension;
138
				for (int i = 1; parentContainer.getFile(new Path(fileName)).exists(); i++) {
139
					fileName = originalFileName + i + fileExtension;
140
				}
141
				setFileName(fileName);
142
			}
143
144
		};
145
		myFileCreationPage.setTitle("Diagram file");
146
		myFileCreationPage.setDescription("Create new diagram based on " + PackageEditPart.MODEL_ID + " model content");
147
		addPage(myFileCreationPage);
148
		addPage(new RootElementSelectorPage());
149
	}
150
151
	/**
152
	 * @generated
153
	 */
154
	public boolean performFinish() {
155
		IFile diagramFile = myFileCreationPage.createNewFile();
156
		try {
157
			diagramFile.setCharset("UTF-8", new NullProgressMonitor()); //$NON-NLS-1$
158
		} catch (CoreException e) {
159
			UMLDiagramEditorPlugin.getInstance().logError("Unable to set charset for diagram file", e); //$NON-NLS-1$
160
		}
161
162
		ResourceSet resourceSet = myEditingDomain.getResourceSet();
163
		final Resource diagramResource = resourceSet.createResource(URI.createPlatformResourceURI(diagramFile.getFullPath().toString()));
164
165
		List affectedFiles = new LinkedList();
166
		affectedFiles.add(mySelectedModelFile);
167
		affectedFiles.add(diagramFile);
168
169
		AbstractTransactionalCommand command = new AbstractTransactionalCommand(myEditingDomain, "Initializing diagram contents", affectedFiles) { //$NON-NLS-1$
170
171
			protected CommandResult doExecuteWithResult(IProgressMonitor monitor, IAdaptable info) throws ExecutionException {
172
				int diagramVID = UMLVisualIDRegistry.getDiagramVisualID(myDiagramRoot);
173
				if (diagramVID != PackageEditPart.VISUAL_ID) {
174
					return CommandResult.newErrorCommandResult("Incorrect model object stored as a root resource object"); //$NON-NLS-1$
175
				}
176
				Diagram diagram = ViewService.createDiagram(myDiagramRoot, PackageEditPart.MODEL_ID, UMLDiagramEditorPlugin.DIAGRAM_PREFERENCES_HINT);
177
				diagramResource.getContents().add(diagram);
178
				return CommandResult.newOKCommandResult();
179
			}
180
		};
181
182
		try {
183
			OperationHistoryFactory.getOperationHistory().execute(command, new NullProgressMonitor(), null);
184
			diagramResource.save(Collections.EMPTY_MAP);
185
			UMLDiagramEditorUtil.openDiagramEditor(myWorkbenchPage, diagramFile);
186
		} catch (ExecutionException e) {
187
			UMLDiagramEditorPlugin.getInstance().logError("Unable to create model and diagram", e); //$NON-NLS-1$
188
		} catch (IOException ex) {
189
			UMLDiagramEditorPlugin.getInstance().logError("Save operation failed for: " + diagramFile.getFullPath().toString(), ex); //$NON-NLS-1$
190
		} catch (PartInitException ex) {
191
			UMLDiagramEditorPlugin.getInstance().logError("Unable to open editor", ex); //$NON-NLS-1$
192
		}
193
		return true;
194
	}
195
196
	/**
197
	 * @generated
198
	 */
199
	private class RootElementSelectorPage extends WizardPage implements ISelectionChangedListener {
200
201
		/**
202
		 * @generated
203
		 */
204
		protected RootElementSelectorPage() {
205
			super("Select diagram root element");
206
			setTitle("Diagram root element");
207
			setDescription("Select semantic model element to be depicted on diagram");
208
		}
209
210
		/**
211
		 * @generated
212
		 */
213
		public void createControl(Composite parent) {
214
			initializeDialogUnits(parent);
215
			Composite topLevel = new Composite(parent, SWT.NONE);
216
			topLevel.setLayout(new GridLayout());
217
			topLevel.setLayoutData(new GridData(GridData.VERTICAL_ALIGN_FILL | GridData.HORIZONTAL_ALIGN_FILL));
218
			topLevel.setFont(parent.getFont());
219
			setControl(topLevel);
220
			createModelBrowser(topLevel);
221
			setPageComplete(validatePage());
222
		}
223
224
		/**
225
		 * @generated
226
		 */
227
		private void createModelBrowser(Composite parent) {
228
			Composite panel = new Composite(parent, SWT.NONE);
229
			panel.setLayoutData(new GridData(GridData.FILL_BOTH));
230
			GridLayout layout = new GridLayout();
231
			layout.marginWidth = 0;
232
			panel.setLayout(layout);
233
234
			Label label = new Label(panel, SWT.NONE);
235
			label.setText("Select diagram root element:");
236
			label.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING));
237
238
			TreeViewer treeViewer = new TreeViewer(panel, SWT.SINGLE | SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER);
239
			GridData layoutData = new GridData(GridData.FILL_BOTH);
240
			layoutData.heightHint = 300;
241
			layoutData.widthHint = 300;
242
			treeViewer.getTree().setLayoutData(layoutData);
243
			treeViewer.setContentProvider(new AdapterFactoryContentProvider(UMLDiagramEditorPlugin.getInstance().getItemProvidersAdapterFactory()));
244
			treeViewer.setLabelProvider(new AdapterFactoryLabelProvider(UMLDiagramEditorPlugin.getInstance().getItemProvidersAdapterFactory()));
245
			treeViewer.setInput(myDiagramRoot.eResource());
246
			treeViewer.setSelection(new StructuredSelection(myDiagramRoot));
247
			treeViewer.addSelectionChangedListener(this);
248
		}
249
250
		/**
251
		 * @generated
252
		 */
253
		public void selectionChanged(SelectionChangedEvent event) {
254
			myDiagramRoot = null;
255
			if (event.getSelection() instanceof IStructuredSelection) {
256
				IStructuredSelection selection = (IStructuredSelection) event.getSelection();
257
				if (selection.size() == 1) {
258
					Object selectedElement = selection.getFirstElement();
259
					if (selectedElement instanceof IWrapperItemProvider) {
260
						selectedElement = ((IWrapperItemProvider) selectedElement).getValue();
261
					}
262
					if (selectedElement instanceof FeatureMap.Entry) {
263
						selectedElement = ((FeatureMap.Entry) selectedElement).getValue();
264
					}
265
					if (selectedElement instanceof EObject) {
266
						myDiagramRoot = (EObject) selectedElement;
267
					}
268
				}
269
			}
270
			setPageComplete(validatePage());
271
		}
272
273
		/**
274
		 * @generated
275
		 */
276
		private boolean validatePage() {
277
			if (myDiagramRoot == null) {
278
				setErrorMessage("No diagram root element selected");
279
				return false;
280
			}
281
			boolean result = ViewService.getInstance().provides(
282
					new CreateDiagramViewOperation(new EObjectAdapter(myDiagramRoot), PackageEditPart.MODEL_ID, UMLDiagramEditorPlugin.DIAGRAM_PREFERENCES_HINT));
283
			setErrorMessage(result ? null : "Invalid diagram root element was selected");
284
			return result;
285
		}
286
287
	}
288
}
(-)src/org/eclipse/uml2/diagram/component/edit/policies/InterfaceRealizationItemSemanticEditPolicy.java (+20 lines)
Added Link Here
1
package org.eclipse.uml2.diagram.component.edit.policies;
2
3
import org.eclipse.gef.commands.Command;
4
5
import org.eclipse.gmf.runtime.emf.type.core.commands.DestroyElementCommand;
6
7
import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest;
8
9
/**
10
 * @generated
11
 */
12
public class InterfaceRealizationItemSemanticEditPolicy extends UMLBaseItemSemanticEditPolicy {
13
14
	/**
15
	 * @generated
16
	 */
17
	protected Command getDestroyElementCommand(DestroyElementRequest req) {
18
		return getMSLWrapper(new DestroyElementCommand(req));
19
	}
20
}
(-)src/org/eclipse/uml2/diagram/component/edit/policies/Class2ItemSemanticEditPolicy.java (+120 lines)
Added Link Here
1
package org.eclipse.uml2.diagram.component.edit.policies;
2
3
import org.eclipse.gef.commands.Command;
4
import org.eclipse.gmf.runtime.emf.type.core.commands.DestroyElementCommand;
5
import org.eclipse.gmf.runtime.emf.type.core.requests.CreateRelationshipRequest;
6
import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest;
7
import org.eclipse.emf.ecore.EObject;
8
import org.eclipse.emf.ecore.EAnnotation;
9
import org.eclipse.gmf.runtime.notation.View;
10
import org.eclipse.emf.ecore.EClass;
11
12
import org.eclipse.gef.commands.UnexecutableCommand;
13
14
import org.eclipse.gmf.runtime.emf.type.core.commands.CreateElementCommand;
15
16
import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;
17
18
import org.eclipse.uml2.diagram.component.providers.UMLElementTypes;
19
import org.eclipse.uml2.uml.Port;
20
import org.eclipse.uml2.uml.UMLPackage;
21
22
/**
23
 * @generated
24
 */
25
public class Class2ItemSemanticEditPolicy extends UMLBaseItemSemanticEditPolicy {
26
27
	/**
28
	 * @generated
29
	 */
30
	protected Command getCreateCommand(CreateElementRequest req) {
31
		if (UMLElementTypes.Port_3002 == req.getElementType()) {
32
			if (req.getContainmentFeature() == null) {
33
				req.setContainmentFeature(UMLPackage.eINSTANCE.getStructuredClassifier_OwnedAttribute());
34
			}
35
			return getMSLWrapper(new CreatePort_3002Command(req));
36
		}
37
		return super.getCreateCommand(req);
38
	}
39
40
	/**
41
	 * @generated
42
	 */
43
	private static class CreatePort_3002Command extends CreateElementCommand {
44
45
		/**
46
		 * @generated
47
		 */
48
		public CreatePort_3002Command(CreateElementRequest req) {
49
			super(req);
50
		}
51
52
		/**
53
		 * @generated
54
		 */
55
		protected EClass getEClassToEdit() {
56
			return UMLPackage.eINSTANCE.getClass_();
57
		};
58
59
		/**
60
		 * @generated
61
		 */
62
		protected EObject getElementToEdit() {
63
			EObject container = ((CreateElementRequest) getRequest()).getContainer();
64
			if (container instanceof View) {
65
				container = ((View) container).getElement();
66
			}
67
			return container;
68
		}
69
70
		/**
71
		 * @generated
72
		 */
73
		protected EObject doDefaultElementCreation() {
74
			Port newElement = (Port) super.doDefaultElementCreation();
75
			if (newElement != null) {
76
				UMLElementTypes.Initializers.Port_3002.init(newElement);
77
			}
78
			return newElement;
79
		}
80
	}
81
82
	/**
83
	 * @generated
84
	 */
85
	protected Command getDestroyElementCommand(DestroyElementRequest req) {
86
		return getMSLWrapper(new DestroyElementCommand(req) {
87
88
			protected EObject getElementToDestroy() {
89
				View view = (View) getHost().getModel();
90
				EAnnotation annotation = view.getEAnnotation("Shortcut"); //$NON-NLS-1$
91
				if (annotation != null) {
92
					return view;
93
				}
94
				return super.getElementToDestroy();
95
			}
96
97
		});
98
	}
99
100
	/**
101
	 * @generated
102
	 */
103
	protected Command getCreateRelationshipCommand(CreateRelationshipRequest req) {
104
		if (UMLElementTypes.InterfaceRealization_4001 == req.getElementType()) {
105
			return req.getTarget() == null ? getCreateStartOutgoingInterfaceRealization4001Command(req) : null;
106
		}
107
		return super.getCreateRelationshipCommand(req);
108
	}
109
110
	/**
111
	 * @generated
112
	 */
113
	protected Command getCreateStartOutgoingInterfaceRealization4001Command(CreateRelationshipRequest req) {
114
		if (!UMLBaseItemSemanticEditPolicy.LinkConstraints.InterfaceRealization_4001.canCreateLink(req, false)) {
115
			return UnexecutableCommand.INSTANCE;
116
		}
117
		return new Command() {
118
		};
119
	}
120
}
(-).classpath (+8 lines)
Added Link Here
1
<?xml version="1.0" encoding="UTF-8"?>
2
<classpath>
3
	<classpathentry kind="src" path="src"/>
4
	<classpathentry kind="src" path="custom-src"/>
5
	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
6
	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
7
	<classpathentry kind="output" path="bin"/>
8
</classpath>
(-)src/org/eclipse/uml2/diagram/component/edit/helpers/ClassEditHelperAdvice.java (+9 lines)
Added Link Here
1
package org.eclipse.uml2.diagram.component.edit.helpers;
2
3
import org.eclipse.gmf.runtime.emf.type.core.edithelper.AbstractEditHelperAdvice;
4
5
/**
6
 * @generated
7
 */
8
public class ClassEditHelperAdvice extends AbstractEditHelperAdvice {
9
}
(-)src/org/eclipse/uml2/diagram/component/edit/policies/PackageItemSemanticEditPolicy.java (+247 lines)
Added Link Here
1
package org.eclipse.uml2.diagram.component.edit.policies;
2
3
import org.eclipse.emf.transaction.TransactionalEditingDomain;
4
import org.eclipse.gef.commands.Command;
5
import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;
6
import org.eclipse.gmf.runtime.emf.commands.core.commands.DuplicateEObjectsCommand;
7
import org.eclipse.gmf.runtime.emf.type.core.requests.DuplicateElementsRequest;
8
import org.eclipse.emf.ecore.EClass;
9
import org.eclipse.emf.ecore.EObject;
10
11
import org.eclipse.gmf.runtime.emf.type.core.commands.CreateElementCommand;
12
13
import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;
14
15
import org.eclipse.gmf.runtime.notation.View;
16
17
import org.eclipse.uml2.diagram.component.providers.UMLElementTypes;
18
import org.eclipse.uml2.uml.Artifact;
19
import org.eclipse.uml2.uml.Component;
20
import org.eclipse.uml2.uml.Interface;
21
import org.eclipse.uml2.uml.UMLPackage;
22
23
/**
24
 * @generated
25
 */
26
public class PackageItemSemanticEditPolicy extends UMLBaseItemSemanticEditPolicy {
27
28
	/**
29
	 * @generated
30
	 */
31
	protected Command getCreateCommand(CreateElementRequest req) {
32
		if (UMLElementTypes.Component_2001 == req.getElementType()) {
33
			if (req.getContainmentFeature() == null) {
34
				req.setContainmentFeature(UMLPackage.eINSTANCE.getPackage_PackagedElement());
35
			}
36
			return getMSLWrapper(new CreateComponent_2001Command(req));
37
		}
38
		if (UMLElementTypes.Artifact_2002 == req.getElementType()) {
39
			if (req.getContainmentFeature() == null) {
40
				req.setContainmentFeature(UMLPackage.eINSTANCE.getPackage_PackagedElement());
41
			}
42
			return getMSLWrapper(new CreateArtifact_2002Command(req));
43
		}
44
		if (UMLElementTypes.Interface_2003 == req.getElementType()) {
45
			if (req.getContainmentFeature() == null) {
46
				req.setContainmentFeature(UMLPackage.eINSTANCE.getPackage_PackagedElement());
47
			}
48
			return getMSLWrapper(new CreateInterface_2003Command(req));
49
		}
50
		if (UMLElementTypes.Class_2004 == req.getElementType()) {
51
			if (req.getContainmentFeature() == null) {
52
				req.setContainmentFeature(UMLPackage.eINSTANCE.getPackage_PackagedElement());
53
			}
54
			return getMSLWrapper(new CreateClass_2004Command(req));
55
		}
56
		return super.getCreateCommand(req);
57
	}
58
59
	/**
60
	 * @generated
61
	 */
62
	private static class CreateComponent_2001Command extends CreateElementCommand {
63
64
		/**
65
		 * @generated
66
		 */
67
		public CreateComponent_2001Command(CreateElementRequest req) {
68
			super(req);
69
		}
70
71
		/**
72
		 * @generated
73
		 */
74
		protected EClass getEClassToEdit() {
75
			return UMLPackage.eINSTANCE.getPackage();
76
		};
77
78
		/**
79
		 * @generated
80
		 */
81
		protected EObject getElementToEdit() {
82
			EObject container = ((CreateElementRequest) getRequest()).getContainer();
83
			if (container instanceof View) {
84
				container = ((View) container).getElement();
85
			}
86
			return container;
87
		}
88
89
		/**
90
		 * @generated
91
		 */
92
		protected EObject doDefaultElementCreation() {
93
			Component newElement = (Component) super.doDefaultElementCreation();
94
			if (newElement != null) {
95
				UMLElementTypes.Initializers.Component_2001.init(newElement);
96
			}
97
			return newElement;
98
		}
99
	}
100
101
	/**
102
	 * @generated
103
	 */
104
	private static class CreateArtifact_2002Command extends CreateElementCommand {
105
106
		/**
107
		 * @generated
108
		 */
109
		public CreateArtifact_2002Command(CreateElementRequest req) {
110
			super(req);
111
		}
112
113
		/**
114
		 * @generated
115
		 */
116
		protected EClass getEClassToEdit() {
117
			return UMLPackage.eINSTANCE.getPackage();
118
		};
119
120
		/**
121
		 * @generated
122
		 */
123
		protected EObject getElementToEdit() {
124
			EObject container = ((CreateElementRequest) getRequest()).getContainer();
125
			if (container instanceof View) {
126
				container = ((View) container).getElement();
127
			}
128
			return container;
129
		}
130
131
		/**
132
		 * @generated
133
		 */
134
		protected EObject doDefaultElementCreation() {
135
			Artifact newElement = (Artifact) super.doDefaultElementCreation();
136
			if (newElement != null) {
137
				UMLElementTypes.Initializers.Artifact_2002.init(newElement);
138
			}
139
			return newElement;
140
		}
141
	}
142
143
	/**
144
	 * @generated
145
	 */
146
	private static class CreateInterface_2003Command extends CreateElementCommand {
147
148
		/**
149
		 * @generated
150
		 */
151
		public CreateInterface_2003Command(CreateElementRequest req) {
152
			super(req);
153
		}
154
155
		/**
156
		 * @generated
157
		 */
158
		protected EClass getEClassToEdit() {
159
			return UMLPackage.eINSTANCE.getPackage();
160
		};
161
162
		/**
163
		 * @generated
164
		 */
165
		protected EObject getElementToEdit() {
166
			EObject container = ((CreateElementRequest) getRequest()).getContainer();
167
			if (container instanceof View) {
168
				container = ((View) container).getElement();
169
			}
170
			return container;
171
		}
172
173
		/**
174
		 * @generated
175
		 */
176
		protected EObject doDefaultElementCreation() {
177
			Interface newElement = (Interface) super.doDefaultElementCreation();
178
			if (newElement != null) {
179
				UMLElementTypes.Initializers.Interface_2003.init(newElement);
180
			}
181
			return newElement;
182
		}
183
	}
184
185
	/**
186
	 * @generated
187
	 */
188
	private static class CreateClass_2004Command extends CreateElementCommand {
189
190
		/**
191
		 * @generated
192
		 */
193
		public CreateClass_2004Command(CreateElementRequest req) {
194
			super(req);
195
		}
196
197
		/**
198
		 * @generated
199
		 */
200
		protected EClass getEClassToEdit() {
201
			return UMLPackage.eINSTANCE.getPackage();
202
		};
203
204
		/**
205
		 * @generated
206
		 */
207
		protected EObject getElementToEdit() {
208
			EObject container = ((CreateElementRequest) getRequest()).getContainer();
209
			if (container instanceof View) {
210
				container = ((View) container).getElement();
211
			}
212
			return container;
213
		}
214
215
		/**
216
		 * @generated
217
		 */
218
		protected EObject doDefaultElementCreation() {
219
			org.eclipse.uml2.uml.Class newElement = (org.eclipse.uml2.uml.Class) super.doDefaultElementCreation();
220
			if (newElement != null) {
221
				UMLElementTypes.Initializers.Class_2004.init(newElement);
222
			}
223
			return newElement;
224
		}
225
	}
226
227
	/**
228
	 * @generated
229
	 */
230
	protected Command getDuplicateCommand(DuplicateElementsRequest req) {
231
		TransactionalEditingDomain editingDomain = ((IGraphicalEditPart) getHost()).getEditingDomain();
232
		return getMSLWrapper(new DuplicateAnythingCommand(editingDomain, req));
233
	}
234
235
	/**
236
	 * @generated
237
	 */
238
	private static class DuplicateAnythingCommand extends DuplicateEObjectsCommand {
239
240
		/**
241
		 * @generated
242
		 */
243
		public DuplicateAnythingCommand(TransactionalEditingDomain editingDomain, DuplicateElementsRequest req) {
244
			super(editingDomain, req.getLabel(), req.getElementsToBeDuplicated(), req.getAllDuplicatedElementsMap());
245
		}
246
	}
247
}
(-)src/org/eclipse/uml2/diagram/component/providers/UMLViewProvider.java (+178 lines)
Added Link Here
1
package org.eclipse.uml2.diagram.component.providers;
2
3
import org.eclipse.core.runtime.IAdaptable;
4
import org.eclipse.emf.ecore.EClass;
5
import org.eclipse.emf.ecore.EObject;
6
import org.eclipse.gmf.runtime.diagram.core.providers.AbstractViewProvider;
7
import org.eclipse.gmf.runtime.notation.View;
8
import org.eclipse.gmf.runtime.emf.type.core.IElementType;
9
10
import org.eclipse.uml2.diagram.component.edit.parts.Artifact2EditPart;
11
import org.eclipse.uml2.diagram.component.edit.parts.ArtifactEditPart;
12
import org.eclipse.uml2.diagram.component.edit.parts.ArtifactName2EditPart;
13
import org.eclipse.uml2.diagram.component.edit.parts.ArtifactNameEditPart;
14
import org.eclipse.uml2.diagram.component.edit.parts.Class2EditPart;
15
import org.eclipse.uml2.diagram.component.edit.parts.ClassEditPart;
16
import org.eclipse.uml2.diagram.component.edit.parts.ClassName2EditPart;
17
import org.eclipse.uml2.diagram.component.edit.parts.ClassNameEditPart;
18
import org.eclipse.uml2.diagram.component.edit.parts.Component2EditPart;
19
import org.eclipse.uml2.diagram.component.edit.parts.ComponentContents2EditPart;
20
import org.eclipse.uml2.diagram.component.edit.parts.ComponentContentsEditPart;
21
import org.eclipse.uml2.diagram.component.edit.parts.ComponentEditPart;
22
import org.eclipse.uml2.diagram.component.edit.parts.ComponentName2EditPart;
23
import org.eclipse.uml2.diagram.component.edit.parts.ComponentNameEditPart;
24
import org.eclipse.uml2.diagram.component.edit.parts.Interface2EditPart;
25
import org.eclipse.uml2.diagram.component.edit.parts.InterfaceEditPart;
26
import org.eclipse.uml2.diagram.component.edit.parts.InterfaceName2EditPart;
27
import org.eclipse.uml2.diagram.component.edit.parts.InterfaceNameEditPart;
28
import org.eclipse.uml2.diagram.component.edit.parts.InterfaceRealizationEditPart;
29
import org.eclipse.uml2.diagram.component.edit.parts.PackageEditPart;
30
import org.eclipse.uml2.diagram.component.edit.parts.PortEditPart;
31
import org.eclipse.uml2.diagram.component.edit.parts.PortNameEditPart;
32
import org.eclipse.uml2.diagram.component.part.UMLVisualIDRegistry;
33
import org.eclipse.uml2.diagram.component.view.factories.Artifact2ViewFactory;
34
import org.eclipse.uml2.diagram.component.view.factories.ArtifactName2ViewFactory;
35
import org.eclipse.uml2.diagram.component.view.factories.ArtifactNameViewFactory;
36
import org.eclipse.uml2.diagram.component.view.factories.ArtifactViewFactory;
37
import org.eclipse.uml2.diagram.component.view.factories.Class2ViewFactory;
38
import org.eclipse.uml2.diagram.component.view.factories.ClassName2ViewFactory;
39
import org.eclipse.uml2.diagram.component.view.factories.ClassNameViewFactory;
40
import org.eclipse.uml2.diagram.component.view.factories.ClassViewFactory;
41
import org.eclipse.uml2.diagram.component.view.factories.Component2ViewFactory;
42
import org.eclipse.uml2.diagram.component.view.factories.ComponentContents2ViewFactory;
43
import org.eclipse.uml2.diagram.component.view.factories.ComponentContentsViewFactory;
44
import org.eclipse.uml2.diagram.component.view.factories.ComponentName2ViewFactory;
45
import org.eclipse.uml2.diagram.component.view.factories.ComponentNameViewFactory;
46
import org.eclipse.uml2.diagram.component.view.factories.ComponentViewFactory;
47
import org.eclipse.uml2.diagram.component.view.factories.Interface2ViewFactory;
48
import org.eclipse.uml2.diagram.component.view.factories.InterfaceName2ViewFactory;
49
import org.eclipse.uml2.diagram.component.view.factories.InterfaceNameViewFactory;
50
import org.eclipse.uml2.diagram.component.view.factories.InterfaceRealizationViewFactory;
51
import org.eclipse.uml2.diagram.component.view.factories.InterfaceViewFactory;
52
import org.eclipse.uml2.diagram.component.view.factories.PackageViewFactory;
53
import org.eclipse.uml2.diagram.component.view.factories.PortNameViewFactory;
54
import org.eclipse.uml2.diagram.component.view.factories.PortProvidedViewFactory;
55
import org.eclipse.uml2.diagram.component.view.factories.PortRequiredViewFactory;
56
import org.eclipse.uml2.diagram.component.view.factories.PortViewFactory;
57
58
/**
59
 * @generated
60
 */
61
public class UMLViewProvider extends AbstractViewProvider {
62
63
	/**
64
	 * @generated
65
	 */
66
	protected Class getDiagramViewClass(IAdaptable semanticAdapter, String diagramKind) {
67
		EObject semanticElement = getSemanticElement(semanticAdapter);
68
		if (PackageEditPart.MODEL_ID.equals(diagramKind) && UMLVisualIDRegistry.getDiagramVisualID(semanticElement) != -1) {
69
			return PackageViewFactory.class;
70
		}
71
		return null;
72
	}
73
74
	/**
75
	 * @generated
76
	 */
77
	protected Class getNodeViewClass(IAdaptable semanticAdapter, View containerView, String semanticHint) {
78
		if (containerView == null) {
79
			return null;
80
		}
81
		IElementType elementType = getSemanticElementType(semanticAdapter);
82
		if (elementType != null && !UMLElementTypes.isKnownElementType(elementType)) {
83
			return null;
84
		}
85
		EClass semanticType = getSemanticEClass(semanticAdapter);
86
		EObject semanticElement = getSemanticElement(semanticAdapter);
87
		int nodeVID = UMLVisualIDRegistry.getNodeVisualID(containerView, semanticElement, semanticType, semanticHint);
88
		switch (nodeVID) {
89
		case ComponentEditPart.VISUAL_ID:
90
			return ComponentViewFactory.class;
91
		case ComponentName2EditPart.VISUAL_ID:
92
			return ComponentName2ViewFactory.class;
93
		case Artifact2EditPart.VISUAL_ID:
94
			return Artifact2ViewFactory.class;
95
		case ArtifactName2EditPart.VISUAL_ID:
96
			return ArtifactName2ViewFactory.class;
97
		case Interface2EditPart.VISUAL_ID:
98
			return Interface2ViewFactory.class;
99
		case InterfaceName2EditPart.VISUAL_ID:
100
			return InterfaceName2ViewFactory.class;
101
		case Class2EditPart.VISUAL_ID:
102
			return Class2ViewFactory.class;
103
		case ClassName2EditPart.VISUAL_ID:
104
			return ClassName2ViewFactory.class;
105
		case Component2EditPart.VISUAL_ID:
106
			return Component2ViewFactory.class;
107
		case ComponentNameEditPart.VISUAL_ID:
108
			return ComponentNameViewFactory.class;
109
		case PortEditPart.VISUAL_ID:
110
			return PortViewFactory.class;
111
		case PortNameEditPart.VISUAL_ID:
112
			return PortNameViewFactory.class;
113
		case ArtifactEditPart.VISUAL_ID:
114
			return ArtifactViewFactory.class;
115
		case ArtifactNameEditPart.VISUAL_ID:
116
			return ArtifactNameViewFactory.class;
117
		case ClassEditPart.VISUAL_ID:
118
			return ClassViewFactory.class;
119
		case ClassNameEditPart.VISUAL_ID:
120
			return ClassNameViewFactory.class;
121
		case InterfaceEditPart.VISUAL_ID:
122
			return InterfaceViewFactory.class;
123
		case InterfaceNameEditPart.VISUAL_ID:
124
			return InterfaceNameViewFactory.class;
125
		case ComponentContentsEditPart.VISUAL_ID:
126
			return ComponentContentsViewFactory.class;
127
		case ComponentContents2EditPart.VISUAL_ID:
128
			return ComponentContents2ViewFactory.class;
129
		}
130
		return null;
131
	}
132
133
	/**
134
	 * @generated
135
	 */
136
	protected Class getEdgeViewClass(IAdaptable semanticAdapter, View containerView, String semanticHint) {
137
		IElementType elementType = getSemanticElementType(semanticAdapter);
138
		if (elementType != null && !UMLElementTypes.isKnownElementType(elementType)) {
139
			return null;
140
		}
141
		if (UMLElementTypes.PortProvided_4006.equals(elementType)) {
142
			return PortProvidedViewFactory.class;
143
		}
144
		if (UMLElementTypes.PortRequired_4004.equals(elementType)) {
145
			return PortRequiredViewFactory.class;
146
		}
147
		EClass semanticType = getSemanticEClass(semanticAdapter);
148
		if (semanticType == null) {
149
			return null;
150
		}
151
		EObject semanticElement = getSemanticElement(semanticAdapter);
152
		int linkVID = UMLVisualIDRegistry.getLinkWithClassVisualID(semanticElement, semanticType);
153
		switch (linkVID) {
154
		case InterfaceRealizationEditPart.VISUAL_ID:
155
			return InterfaceRealizationViewFactory.class;
156
		}
157
		return getUnrecognizedConnectorViewClass(semanticAdapter, containerView, semanticHint);
158
	}
159
160
	/**
161
	 * @generated
162
	 */
163
	private IElementType getSemanticElementType(IAdaptable semanticAdapter) {
164
		if (semanticAdapter == null) {
165
			return null;
166
		}
167
		return (IElementType) semanticAdapter.getAdapter(IElementType.class);
168
	}
169
170
	/**
171
	 * @generated
172
	 */
173
	private Class getUnrecognizedConnectorViewClass(IAdaptable semanticAdapter, View containerView, String semanticHint) {
174
		// Handle unrecognized child node classes here
175
		return null;
176
	}
177
178
}
(-)src/org/eclipse/uml2/diagram/component/view/factories/ClassName2ViewFactory.java (+29 lines)
Added Link Here
1
package org.eclipse.uml2.diagram.component.view.factories;
2
3
import org.eclipse.core.runtime.IAdaptable;
4
import org.eclipse.gmf.runtime.notation.View;
5
import java.util.ArrayList;
6
import java.util.List;
7
8
import org.eclipse.gmf.runtime.diagram.ui.view.factories.BasicNodeViewFactory;
9
10
/**
11
 * @generated
12
 */
13
public class ClassName2ViewFactory extends BasicNodeViewFactory {
14
15
	/**
16
	 * @generated
17
	 */
18
	protected void decorateView(View containerView, View view, IAdaptable semanticAdapter, String semanticHint, int index, boolean persisted) {
19
		super.decorateView(containerView, view, semanticAdapter, semanticHint, index, persisted);
20
	}
21
22
	/**
23
	 * @generated
24
	 */
25
	protected List createStyles(View view) {
26
		List styles = new ArrayList();
27
		return styles;
28
	}
29
}
(-)src/org/eclipse/uml2/diagram/component/navigator/UMLNavigatorLabelProvider.java (+480 lines)
Added Link Here
1
package org.eclipse.uml2.diagram.component.navigator;
2
3
import org.eclipse.core.runtime.IAdaptable;
4
5
import org.eclipse.emf.ecore.EObject;
6
7
import org.eclipse.gmf.runtime.common.ui.services.parser.IParser;
8
import org.eclipse.gmf.runtime.common.ui.services.parser.ParserOptions;
9
import org.eclipse.gmf.runtime.common.ui.services.parser.ParserService;
10
11
import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;
12
13
import org.eclipse.gmf.runtime.emf.type.core.IElementType;
14
15
import org.eclipse.gmf.runtime.notation.View;
16
17
import org.eclipse.jface.resource.ImageDescriptor;
18
import org.eclipse.jface.resource.ImageRegistry;
19
20
import org.eclipse.jface.viewers.LabelProvider;
21
22
import org.eclipse.swt.graphics.Image;
23
24
import org.eclipse.ui.IMemento;
25
26
import org.eclipse.ui.navigator.ICommonContentExtensionSite;
27
import org.eclipse.ui.navigator.ICommonLabelProvider;
28
29
import org.eclipse.uml2.diagram.component.edit.parts.Artifact2EditPart;
30
import org.eclipse.uml2.diagram.component.edit.parts.ArtifactEditPart;
31
import org.eclipse.uml2.diagram.component.edit.parts.ArtifactName2EditPart;
32
import org.eclipse.uml2.diagram.component.edit.parts.ArtifactNameEditPart;
33
import org.eclipse.uml2.diagram.component.edit.parts.Class2EditPart;
34
import org.eclipse.uml2.diagram.component.edit.parts.ClassEditPart;
35
import org.eclipse.uml2.diagram.component.edit.parts.ClassName2EditPart;
36
import org.eclipse.uml2.diagram.component.edit.parts.ClassNameEditPart;
37
import org.eclipse.uml2.diagram.component.edit.parts.Component2EditPart;
38
import org.eclipse.uml2.diagram.component.edit.parts.ComponentEditPart;
39
import org.eclipse.uml2.diagram.component.edit.parts.ComponentName2EditPart;
40
import org.eclipse.uml2.diagram.component.edit.parts.ComponentNameEditPart;
41
import org.eclipse.uml2.diagram.component.edit.parts.Interface2EditPart;
42
import org.eclipse.uml2.diagram.component.edit.parts.InterfaceEditPart;
43
import org.eclipse.uml2.diagram.component.edit.parts.InterfaceName2EditPart;
44
import org.eclipse.uml2.diagram.component.edit.parts.InterfaceNameEditPart;
45
import org.eclipse.uml2.diagram.component.edit.parts.InterfaceRealizationEditPart;
46
import org.eclipse.uml2.diagram.component.edit.parts.PackageEditPart;
47
import org.eclipse.uml2.diagram.component.edit.parts.PortEditPart;
48
import org.eclipse.uml2.diagram.component.edit.parts.PortNameEditPart;
49
import org.eclipse.uml2.diagram.component.edit.parts.PortProvidedEditPart;
50
import org.eclipse.uml2.diagram.component.edit.parts.PortRequiredEditPart;
51
import org.eclipse.uml2.diagram.component.part.UMLDiagramEditorPlugin;
52
import org.eclipse.uml2.diagram.component.part.UMLVisualIDRegistry;
53
import org.eclipse.uml2.diagram.component.providers.UMLElementTypes;
54
import org.eclipse.uml2.uml.NamedElement;
55
56
/**
57
 * @generated
58
 */
59
public class UMLNavigatorLabelProvider extends LabelProvider implements ICommonLabelProvider {
60
61
	/**
62
	 * @generated
63
	 */
64
	static {
65
		UMLDiagramEditorPlugin.getInstance().getImageRegistry().put("Navigator?InvalidElement", ImageDescriptor.getMissingImageDescriptor());
66
		UMLDiagramEditorPlugin.getInstance().getImageRegistry().put("Navigator?UnknownElement", ImageDescriptor.getMissingImageDescriptor());
67
		UMLDiagramEditorPlugin.getInstance().getImageRegistry().put("Navigator?ImageNotFound", ImageDescriptor.getMissingImageDescriptor());
68
	}
69
70
	/**
71
	 * @generated
72
	 */
73
	public Image getImage(Object element) {
74
		if (false == element instanceof UMLAbstractNavigatorItem) {
75
			return super.getImage(element);
76
		}
77
78
		UMLAbstractNavigatorItem abstractNavigatorItem = (UMLAbstractNavigatorItem) element;
79
		if (!PackageEditPart.MODEL_ID.equals(abstractNavigatorItem.getModelID())) {
80
			return super.getImage(element);
81
		}
82
83
		if (abstractNavigatorItem instanceof UMLNavigatorItem) {
84
			UMLNavigatorItem navigatorItem = (UMLNavigatorItem) abstractNavigatorItem;
85
			switch (navigatorItem.getVisualID()) {
86
			case ComponentEditPart.VISUAL_ID:
87
				return getImage("Navigator?TopLevelNode?http://www.eclipse.org/uml2/2.0.0/UML?Component", UMLElementTypes.Component_2001);
88
			case Artifact2EditPart.VISUAL_ID:
89
				return getImage("Navigator?TopLevelNode?http://www.eclipse.org/uml2/2.0.0/UML?Artifact", UMLElementTypes.Artifact_2002);
90
			case Interface2EditPart.VISUAL_ID:
91
				return getImage("Navigator?TopLevelNode?http://www.eclipse.org/uml2/2.0.0/UML?Interface", UMLElementTypes.Interface_2003);
92
			case Class2EditPart.VISUAL_ID:
93
				return getImage("Navigator?TopLevelNode?http://www.eclipse.org/uml2/2.0.0/UML?Class", UMLElementTypes.Class_2004);
94
			case Component2EditPart.VISUAL_ID:
95
				return getImage("Navigator?Node?http://www.eclipse.org/uml2/2.0.0/UML?Component", UMLElementTypes.Component_3001);
96
			case PortEditPart.VISUAL_ID:
97
				return getImage("Navigator?Node?http://www.eclipse.org/uml2/2.0.0/UML?Port", UMLElementTypes.Port_3002);
98
			case ArtifactEditPart.VISUAL_ID:
99
				return getImage("Navigator?Node?http://www.eclipse.org/uml2/2.0.0/UML?Artifact", UMLElementTypes.Artifact_3003);
100
			case ClassEditPart.VISUAL_ID:
101
				return getImage("Navigator?Node?http://www.eclipse.org/uml2/2.0.0/UML?Class", UMLElementTypes.Class_3004);
102
			case InterfaceEditPart.VISUAL_ID:
103
				return getImage("Navigator?Node?http://www.eclipse.org/uml2/2.0.0/UML?Interface", UMLElementTypes.Interface_3005);
104
			case PackageEditPart.VISUAL_ID:
105
				return getImage("Navigator?Diagram?http://www.eclipse.org/uml2/2.0.0/UML?Package", UMLElementTypes.Package_1000);
106
			case InterfaceRealizationEditPart.VISUAL_ID:
107
				return getImage("Navigator?Link?http://www.eclipse.org/uml2/2.0.0/UML?InterfaceRealization", UMLElementTypes.InterfaceRealization_4001);
108
			case PortProvidedEditPart.VISUAL_ID:
109
				return getImage("Navigator?Link?http://www.eclipse.org/uml2/2.0.0/UML?Port?provided", UMLElementTypes.PortProvided_4006);
110
			case PortRequiredEditPart.VISUAL_ID:
111
				return getImage("Navigator?Link?http://www.eclipse.org/uml2/2.0.0/UML?Port?required", UMLElementTypes.PortRequired_4004);
112
			default:
113
				return getImage("Navigator?UnknownElement", null);
114
			}
115
		} else if (abstractNavigatorItem instanceof UMLNavigatorGroup) {
116
			UMLNavigatorGroup group = (UMLNavigatorGroup) element;
117
			return UMLDiagramEditorPlugin.getInstance().getBundledImage(group.getIcon());
118
		}
119
		return super.getImage(element);
120
	}
121
122
	/**
123
	 * @generated
124
	 */
125
	private Image getImage(String key, IElementType elementType) {
126
		ImageRegistry imageRegistry = UMLDiagramEditorPlugin.getInstance().getImageRegistry();
127
		Image image = imageRegistry.get(key);
128
		if (image == null && elementType != null && UMLElementTypes.isKnownElementType(elementType)) {
129
			image = UMLElementTypes.getImage(elementType);
130
			imageRegistry.put(key, image);
131
		}
132
133
		if (image == null) {
134
			image = imageRegistry.get("Navigator?ImageNotFound");
135
			imageRegistry.put(key, image);
136
		}
137
		return image;
138
	}
139
140
	/**
141
	 * @generated
142
	 */
143
	public String getText(Object element) {
144
		if (false == element instanceof UMLAbstractNavigatorItem) {
145
			return super.getText(element);
146
		}
147
148
		UMLAbstractNavigatorItem abstractNavigatorItem = (UMLAbstractNavigatorItem) element;
149
		if (!PackageEditPart.MODEL_ID.equals(abstractNavigatorItem.getModelID())) {
150
			return super.getText(element);
151
		}
152
153
		if (abstractNavigatorItem instanceof UMLNavigatorItem) {
154
			UMLNavigatorItem navigatorItem = (UMLNavigatorItem) abstractNavigatorItem;
155
			switch (navigatorItem.getVisualID()) {
156
			case ComponentEditPart.VISUAL_ID:
157
				return getComponent_2001Text(navigatorItem.getView());
158
			case Artifact2EditPart.VISUAL_ID:
159
				return getArtifact_2002Text(navigatorItem.getView());
160
			case Interface2EditPart.VISUAL_ID:
161
				return getInterface_2003Text(navigatorItem.getView());
162
			case Class2EditPart.VISUAL_ID:
163
				return getClass_2004Text(navigatorItem.getView());
164
			case Component2EditPart.VISUAL_ID:
165
				return getComponent_3001Text(navigatorItem.getView());
166
			case PortEditPart.VISUAL_ID:
167
				return getPort_3002Text(navigatorItem.getView());
168
			case ArtifactEditPart.VISUAL_ID:
169
				return getArtifact_3003Text(navigatorItem.getView());
170
			case ClassEditPart.VISUAL_ID:
171
				return getClass_3004Text(navigatorItem.getView());
172
			case InterfaceEditPart.VISUAL_ID:
173
				return getInterface_3005Text(navigatorItem.getView());
174
			case PackageEditPart.VISUAL_ID:
175
				return getPackage_1000Text(navigatorItem.getView());
176
			case InterfaceRealizationEditPart.VISUAL_ID:
177
				return getInterfaceRealization_4001Text(navigatorItem.getView());
178
			case PortProvidedEditPart.VISUAL_ID:
179
				return getPortProvided_4006Text(navigatorItem.getView());
180
			case PortRequiredEditPart.VISUAL_ID:
181
				return getPortRequired_4004Text(navigatorItem.getView());
182
			default:
183
				return getUnknownElementText(navigatorItem.getView());
184
			}
185
		} else if (abstractNavigatorItem instanceof UMLNavigatorGroup) {
186
			UMLNavigatorGroup group = (UMLNavigatorGroup) element;
187
			return group.getGroupName();
188
		}
189
		return super.getText(element);
190
	}
191
192
	/**
193
	 * @generated
194
	 */
195
	private String getComponent_2001Text(View view) {
196
		IParser parser = ParserService.getInstance().getParser(new IAdaptable() {
197
198
			public Object getAdapter(Class adapter) {
199
				if (String.class.equals(adapter)) {
200
					return UMLVisualIDRegistry.getType(ComponentName2EditPart.VISUAL_ID);
201
				}
202
				if (IElementType.class.equals(adapter)) {
203
					return UMLElementTypes.Component_2001;
204
				}
205
				return null;
206
			}
207
		});
208
		if (parser != null) {
209
			return parser.getPrintString(new EObjectAdapter(view.getElement() != null ? view.getElement() : view), ParserOptions.NONE.intValue());
210
		} else {
211
			UMLDiagramEditorPlugin.getInstance().logError("Parser was not found for label " + 5001);
212
			return "";
213
		}
214
	}
215
216
	/**
217
	 * @generated
218
	 */
219
	private String getArtifact_2002Text(View view) {
220
		IParser parser = ParserService.getInstance().getParser(new IAdaptable() {
221
222
			public Object getAdapter(Class adapter) {
223
				if (String.class.equals(adapter)) {
224
					return UMLVisualIDRegistry.getType(ArtifactName2EditPart.VISUAL_ID);
225
				}
226
				if (IElementType.class.equals(adapter)) {
227
					return UMLElementTypes.Artifact_2002;
228
				}
229
				return null;
230
			}
231
		});
232
		if (parser != null) {
233
			return parser.getPrintString(new EObjectAdapter(view.getElement() != null ? view.getElement() : view), ParserOptions.NONE.intValue());
234
		} else {
235
			UMLDiagramEditorPlugin.getInstance().logError("Parser was not found for label " + 5004);
236
			return "";
237
		}
238
	}
239
240
	/**
241
	 * @generated
242
	 */
243
	private String getInterface_2003Text(View view) {
244
		IParser parser = ParserService.getInstance().getParser(new IAdaptable() {
245
246
			public Object getAdapter(Class adapter) {
247
				if (String.class.equals(adapter)) {
248
					return UMLVisualIDRegistry.getType(InterfaceName2EditPart.VISUAL_ID);
249
				}
250
				if (IElementType.class.equals(adapter)) {
251
					return UMLElementTypes.Interface_2003;
252
				}
253
				return null;
254
			}
255
		});
256
		if (parser != null) {
257
			return parser.getPrintString(new EObjectAdapter(view.getElement() != null ? view.getElement() : view), ParserOptions.NONE.intValue());
258
		} else {
259
			UMLDiagramEditorPlugin.getInstance().logError("Parser was not found for label " + 5005);
260
			return "";
261
		}
262
	}
263
264
	/**
265
	 * @generated
266
	 */
267
	private String getClass_2004Text(View view) {
268
		IParser parser = ParserService.getInstance().getParser(new IAdaptable() {
269
270
			public Object getAdapter(Class adapter) {
271
				if (String.class.equals(adapter)) {
272
					return UMLVisualIDRegistry.getType(ClassName2EditPart.VISUAL_ID);
273
				}
274
				if (IElementType.class.equals(adapter)) {
275
					return UMLElementTypes.Class_2004;
276
				}
277
				return null;
278
			}
279
		});
280
		if (parser != null) {
281
			return parser.getPrintString(new EObjectAdapter(view.getElement() != null ? view.getElement() : view), ParserOptions.NONE.intValue());
282
		} else {
283
			UMLDiagramEditorPlugin.getInstance().logError("Parser was not found for label " + 5008);
284
			return "";
285
		}
286
	}
287
288
	/**
289
	 * @generated
290
	 */
291
	private String getComponent_3001Text(View view) {
292
		IParser parser = ParserService.getInstance().getParser(new IAdaptable() {
293
294
			public Object getAdapter(Class adapter) {
295
				if (String.class.equals(adapter)) {
296
					return UMLVisualIDRegistry.getType(ComponentNameEditPart.VISUAL_ID);
297
				}
298
				if (IElementType.class.equals(adapter)) {
299
					return UMLElementTypes.Component_3001;
300
				}
301
				return null;
302
			}
303
		});
304
		if (parser != null) {
305
			return parser.getPrintString(new EObjectAdapter(view.getElement() != null ? view.getElement() : view), ParserOptions.NONE.intValue());
306
		} else {
307
			UMLDiagramEditorPlugin.getInstance().logError("Parser was not found for label " + 5002);
308
			return "";
309
		}
310
	}
311
312
	/**
313
	 * @generated
314
	 */
315
	private String getPort_3002Text(View view) {
316
		IParser parser = ParserService.getInstance().getParser(new IAdaptable() {
317
318
			public Object getAdapter(Class adapter) {
319
				if (String.class.equals(adapter)) {
320
					return UMLVisualIDRegistry.getType(PortNameEditPart.VISUAL_ID);
321
				}
322
				if (IElementType.class.equals(adapter)) {
323
					return UMLElementTypes.Port_3002;
324
				}
325
				return null;
326
			}
327
		});
328
		if (parser != null) {
329
			return parser.getPrintString(new EObjectAdapter(view.getElement() != null ? view.getElement() : view), ParserOptions.NONE.intValue());
330
		} else {
331
			UMLDiagramEditorPlugin.getInstance().logError("Parser was not found for label " + 5003);
332
			return "";
333
		}
334
	}
335
336
	/**
337
	 * @generated
338
	 */
339
	private String getArtifact_3003Text(View view) {
340
		IParser parser = ParserService.getInstance().getParser(new IAdaptable() {
341
342
			public Object getAdapter(Class adapter) {
343
				if (String.class.equals(adapter)) {
344
					return UMLVisualIDRegistry.getType(ArtifactNameEditPart.VISUAL_ID);
345
				}
346
				if (IElementType.class.equals(adapter)) {
347
					return UMLElementTypes.Artifact_3003;
348
				}
349
				return null;
350
			}
351
		});
352
		if (parser != null) {
353
			return parser.getPrintString(new EObjectAdapter(view.getElement() != null ? view.getElement() : view), ParserOptions.NONE.intValue());
354
		} else {
355
			UMLDiagramEditorPlugin.getInstance().logError("Parser was not found for label " + 5006);
356
			return "";
357
		}
358
	}
359
360
	/**
361
	 * @generated
362
	 */
363
	private String getClass_3004Text(View view) {
364
		IParser parser = ParserService.getInstance().getParser(new IAdaptable() {
365
366
			public Object getAdapter(Class adapter) {
367
				if (String.class.equals(adapter)) {
368
					return UMLVisualIDRegistry.getType(ClassNameEditPart.VISUAL_ID);
369
				}
370
				if (IElementType.class.equals(adapter)) {
371
					return UMLElementTypes.Class_3004;
372
				}
373
				return null;
374
			}
375
		});
376
		if (parser != null) {
377
			return parser.getPrintString(new EObjectAdapter(view.getElement() != null ? view.getElement() : view), ParserOptions.NONE.intValue());
378
		} else {
379
			UMLDiagramEditorPlugin.getInstance().logError("Parser was not found for label " + 5007);
380
			return "";
381
		}
382
	}
383
384
	/**
385
	 * @generated
386
	 */
387
	private String getInterface_3005Text(View view) {
388
		IParser parser = ParserService.getInstance().getParser(new IAdaptable() {
389
390
			public Object getAdapter(Class adapter) {
391
				if (String.class.equals(adapter)) {
392
					return UMLVisualIDRegistry.getType(InterfaceNameEditPart.VISUAL_ID);
393
				}
394
				if (IElementType.class.equals(adapter)) {
395
					return UMLElementTypes.Interface_3005;
396
				}
397
				return null;
398
			}
399
		});
400
		if (parser != null) {
401
			return parser.getPrintString(new EObjectAdapter(view.getElement() != null ? view.getElement() : view), ParserOptions.NONE.intValue());
402
		} else {
403
			UMLDiagramEditorPlugin.getInstance().logError("Parser was not found for label " + 5009);
404
			return "";
405
		}
406
	}
407
408
	/**
409
	 * @generated
410
	 */
411
	private String getPackage_1000Text(View view) {
412
		EObject domainModelElement = view.getElement();
413
		if (domainModelElement != null) {
414
			return String.valueOf(((NamedElement) domainModelElement).getName());
415
		} else {
416
			UMLDiagramEditorPlugin.getInstance().logError("No domain element for view with visualID = " + 1000);
417
			return "";
418
		}
419
	}
420
421
	/**
422
	 * @generated
423
	 */
424
	private String getInterfaceRealization_4001Text(View view) {
425
		EObject domainModelElement = view.getElement();
426
		if (domainModelElement != null) {
427
			return String.valueOf(((NamedElement) domainModelElement).getName());
428
		} else {
429
			UMLDiagramEditorPlugin.getInstance().logError("No domain element for view with visualID = " + 4001);
430
			return "";
431
		}
432
	}
433
434
	/**
435
	 * @generated
436
	 */
437
	private String getPortProvided_4006Text(View view) {
438
		return "";
439
	}
440
441
	/**
442
	 * @generated
443
	 */
444
	private String getPortRequired_4004Text(View view) {
445
		return "";
446
	}
447
448
	/**
449
	 * @generated
450
	 */
451
	private String getUnknownElementText(View view) {
452
		return "<UnknownElement Visual_ID = " + view.getType() + ">";
453
	}
454
455
	/**
456
	 * @generated
457
	 */
458
	public void init(ICommonContentExtensionSite aConfig) {
459
	}
460
461
	/**
462
	 * @generated
463
	 */
464
	public void restoreState(IMemento aMemento) {
465
	}
466
467
	/**
468
	 * @generated
469
	 */
470
	public void saveState(IMemento aMemento) {
471
	}
472
473
	/**
474
	 * @generated
475
	 */
476
	public String getDescription(Object anElement) {
477
		return null;
478
	}
479
480
}
(-)src/org/eclipse/uml2/diagram/component/edit/policies/Interface2ItemSemanticEditPolicy.java (+164 lines)
Added Link Here
1
package org.eclipse.uml2.diagram.component.edit.policies;
2
3
import org.eclipse.gef.commands.Command;
4
import org.eclipse.gmf.runtime.emf.type.core.commands.DestroyElementCommand;
5
import org.eclipse.gmf.runtime.emf.type.core.requests.CreateRelationshipRequest;
6
import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest;
7
import org.eclipse.emf.ecore.EObject;
8
import org.eclipse.emf.ecore.EAnnotation;
9
import org.eclipse.gmf.runtime.notation.View;
10
import org.eclipse.emf.ecore.EClass;
11
12
import org.eclipse.gef.commands.UnexecutableCommand;
13
14
import org.eclipse.gmf.runtime.emf.type.core.commands.CreateRelationshipCommand;
15
import org.eclipse.gmf.runtime.emf.type.core.commands.SetValueCommand;
16
17
import org.eclipse.gmf.runtime.emf.type.core.requests.SetRequest;
18
19
import org.eclipse.uml2.diagram.component.providers.UMLElementTypes;
20
import org.eclipse.uml2.uml.BehavioredClassifier;
21
import org.eclipse.uml2.uml.Interface;
22
import org.eclipse.uml2.uml.InterfaceRealization;
23
import org.eclipse.uml2.uml.Port;
24
import org.eclipse.uml2.uml.UMLPackage;
25
26
/**
27
 * @generated
28
 */
29
public class Interface2ItemSemanticEditPolicy extends UMLBaseItemSemanticEditPolicy {
30
31
	/**
32
	 * @generated
33
	 */
34
	protected Command getDestroyElementCommand(DestroyElementRequest req) {
35
		return getMSLWrapper(new DestroyElementCommand(req) {
36
37
			protected EObject getElementToDestroy() {
38
				View view = (View) getHost().getModel();
39
				EAnnotation annotation = view.getEAnnotation("Shortcut"); //$NON-NLS-1$
40
				if (annotation != null) {
41
					return view;
42
				}
43
				return super.getElementToDestroy();
44
			}
45
46
		});
47
	}
48
49
	/**
50
	 * @generated
51
	 */
52
	protected Command getCreateRelationshipCommand(CreateRelationshipRequest req) {
53
		if (UMLElementTypes.InterfaceRealization_4001 == req.getElementType()) {
54
			return req.getTarget() == null ? null : getCreateCompleteIncomingInterfaceRealization4001Command(req);
55
		}
56
		if (UMLElementTypes.PortProvided_4006 == req.getElementType()) {
57
			return req.getTarget() == null ? null : getCreateCompleteIncomingPort_Provided4006Command(req);
58
		}
59
		if (UMLElementTypes.PortRequired_4004 == req.getElementType()) {
60
			return req.getTarget() == null ? null : getCreateCompleteIncomingPort_Required4004Command(req);
61
		}
62
		return super.getCreateRelationshipCommand(req);
63
	}
64
65
	/**
66
	 * @generated
67
	 */
68
	protected Command getCreateCompleteIncomingInterfaceRealization4001Command(CreateRelationshipRequest req) {
69
		if (!(req.getSource() instanceof BehavioredClassifier)) {
70
			return UnexecutableCommand.INSTANCE;
71
		}
72
		final BehavioredClassifier element = (BehavioredClassifier) getRelationshipContainer(req.getSource(), UMLPackage.eINSTANCE.getBehavioredClassifier(), req.getElementType());
73
		if (element == null) {
74
			return UnexecutableCommand.INSTANCE;
75
		}
76
		if (!UMLBaseItemSemanticEditPolicy.LinkConstraints.InterfaceRealization_4001.canCreateLink(req, false)) {
77
			return UnexecutableCommand.INSTANCE;
78
		}
79
		if (req.getContainmentFeature() == null) {
80
			req.setContainmentFeature(UMLPackage.eINSTANCE.getBehavioredClassifier_InterfaceRealization());
81
		}
82
		return getMSLWrapper(new CreateIncomingInterfaceRealization4001Command(req) {
83
84
			protected EObject getElementToEdit() {
85
				return element;
86
			}
87
		});
88
	}
89
90
	/**
91
	 * @generated
92
	 */
93
	private static class CreateIncomingInterfaceRealization4001Command extends CreateRelationshipCommand {
94
95
		/**
96
		 * @generated
97
		 */
98
		public CreateIncomingInterfaceRealization4001Command(CreateRelationshipRequest req) {
99
			super(req);
100
		}
101
102
		/**
103
		 * @generated
104
		 */
105
		protected EClass getEClassToEdit() {
106
			return UMLPackage.eINSTANCE.getBehavioredClassifier();
107
		};
108
109
		/**
110
		 * @generated
111
		 */
112
		protected void setElementToEdit(EObject element) {
113
			throw new UnsupportedOperationException();
114
		}
115
116
		/**
117
		 * @generated
118
		 */
119
		protected EObject doDefaultElementCreation() {
120
			InterfaceRealization newElement = (InterfaceRealization) super.doDefaultElementCreation();
121
			if (newElement != null) {
122
				newElement.setContract((Interface) getTarget());
123
				newElement.setImplementingClassifier((BehavioredClassifier) getSource());
124
			}
125
			return newElement;
126
		}
127
	}
128
129
	/**
130
	 * @generated
131
	 */
132
	protected Command getCreateCompleteIncomingPort_Provided4006Command(CreateRelationshipRequest req) {
133
		if (!(req.getSource() instanceof Port)) {
134
			return UnexecutableCommand.INSTANCE;
135
		}
136
		Port element = (Port) req.getSource();
137
		if (element.getProvideds().contains(req.getTarget())) {
138
			return UnexecutableCommand.INSTANCE;
139
		}
140
		if (!UMLBaseItemSemanticEditPolicy.LinkConstraints.PortProvided_4006.canCreateLink(req, false)) {
141
			return UnexecutableCommand.INSTANCE;
142
		}
143
		SetRequest setReq = new SetRequest(req.getSource(), UMLPackage.eINSTANCE.getPort_Provided(), req.getTarget());
144
		return getMSLWrapper(new SetValueCommand(setReq));
145
	}
146
147
	/**
148
	 * @generated
149
	 */
150
	protected Command getCreateCompleteIncomingPort_Required4004Command(CreateRelationshipRequest req) {
151
		if (!(req.getSource() instanceof Port)) {
152
			return UnexecutableCommand.INSTANCE;
153
		}
154
		Port element = (Port) req.getSource();
155
		if (element.getRequireds().contains(req.getTarget())) {
156
			return UnexecutableCommand.INSTANCE;
157
		}
158
		if (!UMLBaseItemSemanticEditPolicy.LinkConstraints.PortRequired_4004.canCreateLink(req, false)) {
159
			return UnexecutableCommand.INSTANCE;
160
		}
161
		SetRequest setReq = new SetRequest(req.getSource(), UMLPackage.eINSTANCE.getPort_Required(), req.getTarget());
162
		return getMSLWrapper(new SetValueCommand(setReq));
163
	}
164
}
(-)src/org/eclipse/uml2/diagram/component/edit/helpers/PortEditHelper.java (+7 lines)
Added Link Here
1
package org.eclipse.uml2.diagram.component.edit.helpers;
2
3
/**
4
 * @generated
5
 */
6
public class PortEditHelper extends UMLBaseEditHelper {
7
}
(-)src/org/eclipse/uml2/diagram/component/view/factories/ClassViewFactory.java (+57 lines)
Added Link Here
1
package org.eclipse.uml2.diagram.component.view.factories;
2
3
import java.util.ArrayList;
4
import java.util.List;
5
6
import org.eclipse.core.runtime.IAdaptable;
7
8
import org.eclipse.emf.ecore.EAnnotation;
9
import org.eclipse.emf.ecore.EcoreFactory;
10
11
import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil;
12
13
import org.eclipse.gmf.runtime.diagram.ui.view.factories.AbstractShapeViewFactory;
14
15
import org.eclipse.gmf.runtime.notation.NotationFactory;
16
import org.eclipse.gmf.runtime.notation.View;
17
18
import org.eclipse.uml2.diagram.component.edit.parts.ClassNameEditPart;
19
import org.eclipse.uml2.diagram.component.edit.parts.PackageEditPart;
20
import org.eclipse.uml2.diagram.component.part.UMLVisualIDRegistry;
21
22
/**
23
 * @generated
24
 */
25
public class ClassViewFactory extends AbstractShapeViewFactory {
26
27
	/**
28
	 * @generated 
29
	 */
30
	protected List createStyles(View view) {
31
		List styles = new ArrayList();
32
		styles.add(NotationFactory.eINSTANCE.createFontStyle());
33
		styles.add(NotationFactory.eINSTANCE.createDescriptionStyle());
34
		styles.add(NotationFactory.eINSTANCE.createFillStyle());
35
		styles.add(NotationFactory.eINSTANCE.createLineStyle());
36
		return styles;
37
	}
38
39
	/**
40
	 * @generated
41
	 */
42
	protected void decorateView(View containerView, View view, IAdaptable semanticAdapter, String semanticHint, int index, boolean persisted) {
43
		if (semanticHint == null) {
44
			semanticHint = UMLVisualIDRegistry.getType(org.eclipse.uml2.diagram.component.edit.parts.ClassEditPart.VISUAL_ID);
45
			view.setType(semanticHint);
46
		}
47
		super.decorateView(containerView, view, semanticAdapter, semanticHint, index, persisted);
48
		if (!PackageEditPart.MODEL_ID.equals(UMLVisualIDRegistry.getModelID(containerView))) {
49
			EAnnotation shortcutAnnotation = EcoreFactory.eINSTANCE.createEAnnotation();
50
			shortcutAnnotation.setSource("Shortcut"); //$NON-NLS-1$
51
			shortcutAnnotation.getDetails().put("modelID", PackageEditPart.MODEL_ID); //$NON-NLS-1$
52
			view.getEAnnotations().add(shortcutAnnotation);
53
		}
54
		getViewService().createNode(semanticAdapter, view, UMLVisualIDRegistry.getType(ClassNameEditPart.VISUAL_ID), ViewUtil.APPEND, true, getPreferencesHint());
55
	}
56
57
}
(-)src/org/eclipse/uml2/diagram/component/edit/parts/ComponentEditPart.java (+418 lines)
Added Link Here
1
package org.eclipse.uml2.diagram.component.edit.parts;
2
3
import org.eclipse.draw2d.IFigure;
4
import org.eclipse.draw2d.PositionConstants;
5
import org.eclipse.draw2d.StackLayout;
6
7
import org.eclipse.gef.EditPart;
8
import org.eclipse.gef.EditPolicy;
9
import org.eclipse.gef.Request;
10
11
import org.eclipse.gef.commands.Command;
12
13
import org.eclipse.gef.editpolicies.LayoutEditPolicy;
14
import org.eclipse.gef.editpolicies.NonResizableEditPolicy;
15
16
import org.eclipse.gef.requests.CreateRequest;
17
18
import org.eclipse.gmf.runtime.diagram.ui.editparts.AbstractBorderedShapeEditPart;
19
import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;
20
21
import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy;
22
import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy;
23
import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;
24
25
import org.eclipse.gmf.runtime.diagram.ui.figures.BorderItemLocator;
26
27
import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout;
28
29
import org.eclipse.gmf.runtime.gef.ui.figures.DefaultSizeNodeFigure;
30
import org.eclipse.gmf.runtime.gef.ui.figures.NodeFigure;
31
32
import org.eclipse.gmf.runtime.notation.View;
33
34
import org.eclipse.uml2.diagram.component.edit.policies.ComponentCanonicalEditPolicy;
35
import org.eclipse.uml2.diagram.component.edit.policies.ComponentItemSemanticEditPolicy;
36
import org.eclipse.uml2.diagram.component.part.UMLVisualIDRegistry;
37
38
/**
39
 * @generated
40
 */
41
public class ComponentEditPart extends AbstractBorderedShapeEditPart {
42
43
	/**
44
	 * @generated
45
	 */
46
	public static final int VISUAL_ID = 2001;
47
48
	/**
49
	 * @generated
50
	 */
51
	protected IFigure contentPane;
52
53
	/**
54
	 * @generated
55
	 */
56
	protected IFigure primaryShape;
57
58
	/**
59
	 * @generated
60
	 */
61
	public ComponentEditPart(View view) {
62
		super(view);
63
	}
64
65
	/**
66
	 * @generated
67
	 */
68
	protected void createDefaultEditPolicies() {
69
		installEditPolicy(EditPolicyRoles.CREATION_ROLE, new CreationEditPolicy());
70
		super.createDefaultEditPolicies();
71
		installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE, new ComponentItemSemanticEditPolicy());
72
		installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE, new DragDropEditPolicy());
73
		installEditPolicy(EditPolicyRoles.CANONICAL_ROLE, new ComponentCanonicalEditPolicy());
74
		installEditPolicy(EditPolicy.LAYOUT_ROLE, createLayoutEditPolicy());
75
76
	}
77
78
	/**
79
	 * @generated
80
	 */
81
	protected LayoutEditPolicy createLayoutEditPolicy() {
82
		LayoutEditPolicy lep = new LayoutEditPolicy() {
83
84
			protected EditPolicy createChildEditPolicy(EditPart child) {
85
				EditPolicy result = child.getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);
86
				if (result == null) {
87
					result = new NonResizableEditPolicy();
88
				}
89
				return result;
90
			}
91
92
			protected Command getMoveChildrenCommand(Request request) {
93
				return null;
94
			}
95
96
			protected Command getCreateCommand(CreateRequest request) {
97
				return null;
98
			}
99
		};
100
		return lep;
101
	}
102
103
	/**
104
	 * @generated
105
	 */
106
	protected IFigure createNodeShape() {
107
		ComponentFigure figure = new ComponentFigure();
108
		return primaryShape = figure;
109
	}
110
111
	/**
112
	 * @generated
113
	 */
114
	public ComponentFigure getPrimaryShape() {
115
		return (ComponentFigure) primaryShape;
116
	}
117
118
	/**
119
	 * @generated 
120
	 */
121
	protected IFigure getContentPaneFor(IGraphicalEditPart editPart) {
122
		if (editPart instanceof ComponentContentsEditPart) {
123
			return getPrimaryShape().getFigureComponentFigure_Body();
124
		}
125
		if (editPart instanceof PortEditPart) {
126
			return getBorderedFigure().getBorderItemContainer();
127
		}
128
129
		return super.getContentPaneFor(editPart);
130
	}
131
132
	/**
133
	 * @generated
134
	 */
135
	protected boolean addFixedChild(EditPart childEditPart) {
136
		if (childEditPart instanceof ComponentName2EditPart) {
137
			((ComponentName2EditPart) childEditPart).setLabel(getPrimaryShape().getFigureComponentFigure_name());
138
			return true;
139
		}
140
		if (childEditPart instanceof ComponentContentsEditPart) {
141
			IFigure pane = getPrimaryShape().getFigureComponentFigure_Body();
142
			setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way 
143
			pane.add(((ComponentContentsEditPart) childEditPart).getFigure());
144
			return true;
145
		}
146
		if (childEditPart instanceof PortEditPart) {
147
			BorderItemLocator locator = new BorderItemLocator(getMainFigure(), PositionConstants.NONE);
148
			getBorderedFigure().getBorderItemContainer().add(((PortEditPart) childEditPart).getFigure(), locator);
149
			return true;
150
		}
151
		return false;
152
	}
153
154
	/**
155
	 * @generated
156
	 */
157
	protected boolean removeFixedChild(EditPart childEditPart) {
158
		if (childEditPart instanceof ComponentContentsEditPart) {
159
			IFigure pane = getPrimaryShape().getFigureComponentFigure_Body();
160
			pane.remove(((ComponentContentsEditPart) childEditPart).getFigure());
161
			return true;
162
		}
163
		if (childEditPart instanceof PortEditPart) {
164
			getBorderedFigure().getBorderItemContainer().remove(((PortEditPart) childEditPart).getFigure());
165
			return true;
166
		}
167
		return false;
168
	}
169
170
	/**
171
	 * @generated
172
	 */
173
	protected NodeFigure createNodePlate() {
174
		DefaultSizeNodeFigure result = new DefaultSizeNodeFigure(getMapMode().DPtoLP(100), getMapMode().DPtoLP(80));
175
		return result;
176
	}
177
178
	/**
179
	 * Creates figure for this edit part.
180
	 * 
181
	 * Body of this method does not depend on settings in generation model
182
	 * so you may safely remove <i>generated</i> tag and modify it.
183
	 * 
184
	 * @generated
185
	 */
186
	protected NodeFigure createMainFigure() {
187
		NodeFigure figure = createNodePlate();
188
		figure.setLayoutManager(new StackLayout());
189
		IFigure shape = createNodeShape();
190
		figure.add(shape);
191
		contentPane = setupContentPane(shape);
192
		return figure;
193
	}
194
195
	/**
196
	 * Default implementation treats passed figure as content pane.
197
	 * Respects layout one may have set for generated figure.
198
	 * @param nodeShape instance of generated figure class
199
	 * @generated
200
	 */
201
	protected IFigure setupContentPane(IFigure nodeShape) {
202
		if (nodeShape.getLayoutManager() == null) {
203
			ConstrainedToolbarLayout layout = new ConstrainedToolbarLayout();
204
			layout.setSpacing(getMapMode().DPtoLP(5));
205
			nodeShape.setLayoutManager(layout);
206
		}
207
		return nodeShape; // use nodeShape itself as contentPane
208
	}
209
210
	/**
211
	 * @generated
212
	 */
213
	public IFigure getContentPane() {
214
		if (contentPane != null) {
215
			return contentPane;
216
		}
217
		return super.getContentPane();
218
	}
219
220
	/**
221
	 * @generated
222
	 */
223
	public EditPart getPrimaryChildEditPart() {
224
		return getChildBySemanticHint(UMLVisualIDRegistry.getType(ComponentName2EditPart.VISUAL_ID));
225
	}
226
227
	/**
228
	 * @generated
229
	 */
230
	protected void addChildVisual(EditPart childEditPart, int index) {
231
		if (addFixedChild(childEditPart)) {
232
			return;
233
		}
234
		super.addChildVisual(childEditPart, -1);
235
	}
236
237
	/**
238
	 * @generated
239
	 */
240
	protected void removeChildVisual(EditPart childEditPart) {
241
		if (removeFixedChild(childEditPart)) {
242
			return;
243
		}
244
		super.removeChildVisual(childEditPart);
245
	}
246
247
	/**
248
	 * @generated
249
	 */
250
	public class ComponentFigure extends org.eclipse.draw2d.RectangleFigure {
251
252
		/**
253
		 * @generated
254
		 */
255
		public ComponentFigure() {
256
257
			org.eclipse.gmf.internal.codegen.draw2d.GridLayout myGenLayoutManager = new org.eclipse.gmf.internal.codegen.draw2d.GridLayout();
258
			myGenLayoutManager.numColumns = 1;
259
			myGenLayoutManager.makeColumnsEqualWidth = true;
260
			myGenLayoutManager.marginWidth = 0;
261
			myGenLayoutManager.marginHeight = 0;
262
			myGenLayoutManager.horizontalSpacing = 0;
263
			myGenLayoutManager.verticalSpacing = 0;
264
265
			this.setLayoutManager(myGenLayoutManager);
266
267
			this.setFill(false);
268
			this.setOutline(false);
269
			createContents();
270
		}
271
272
		/**
273
		 * @generated
274
		 */
275
		private void createContents() {
276
			org.eclipse.draw2d.RectangleFigure fig_0 = new org.eclipse.draw2d.RectangleFigure();
277
278
			fig_0.setMinimumSize(new org.eclipse.draw2d.geometry.Dimension(getMapMode().DPtoLP(0), getMapMode().DPtoLP(35)));
279
280
			org.eclipse.gmf.internal.codegen.draw2d.GridLayout layouter0 = new org.eclipse.gmf.internal.codegen.draw2d.GridLayout();
281
			layouter0.numColumns = 1;
282
			layouter0.makeColumnsEqualWidth = false;
283
284
			fig_0.setLayoutManager(layouter0);
285
286
			setFigureComponentFigure_LabelsContainer(fig_0);
287
			org.eclipse.gmf.internal.codegen.draw2d.GridLayoutData layData0 = new org.eclipse.gmf.internal.codegen.draw2d.GridLayoutData();
288
			layData0.verticalAlignment = org.eclipse.gmf.internal.codegen.draw2d.GridLayoutData.FILL;
289
			layData0.horizontalAlignment = org.eclipse.gmf.internal.codegen.draw2d.GridLayoutData.FILL;
290
			layData0.horizontalIndent = 0;
291
			layData0.horizontalSpan = 2;
292
			layData0.verticalSpan = 1;
293
			layData0.grabExcessHorizontalSpace = true;
294
			layData0.grabExcessVerticalSpace = false;
295
296
			this.add(fig_0, layData0);
297
			org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel fig_1 = new org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel();
298
			fig_1.setText("\u00ABcomponent\u00BB");
299
300
			org.eclipse.gmf.internal.codegen.draw2d.GridLayoutData layData1 = new org.eclipse.gmf.internal.codegen.draw2d.GridLayoutData();
301
			layData1.verticalAlignment = org.eclipse.gmf.internal.codegen.draw2d.GridLayoutData.CENTER;
302
			layData1.horizontalAlignment = org.eclipse.gmf.internal.codegen.draw2d.GridLayoutData.CENTER;
303
			layData1.horizontalIndent = 0;
304
			layData1.horizontalSpan = 1;
305
			layData1.verticalSpan = 1;
306
			layData1.grabExcessHorizontalSpace = true;
307
			layData1.grabExcessVerticalSpace = false;
308
309
			fig_0.add(fig_1, layData1);
310
			org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel fig_2 = new org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel();
311
312
			setFigureComponentFigure_name(fig_2);
313
			org.eclipse.gmf.internal.codegen.draw2d.GridLayoutData layData2 = new org.eclipse.gmf.internal.codegen.draw2d.GridLayoutData();
314
			layData2.verticalAlignment = org.eclipse.gmf.internal.codegen.draw2d.GridLayoutData.CENTER;
315
			layData2.horizontalAlignment = org.eclipse.gmf.internal.codegen.draw2d.GridLayoutData.CENTER;
316
			layData2.horizontalIndent = 0;
317
			layData2.horizontalSpan = 1;
318
			layData2.verticalSpan = 1;
319
			layData2.grabExcessHorizontalSpace = true;
320
			layData2.grabExcessVerticalSpace = false;
321
322
			fig_0.add(fig_2, layData2);
323
			org.eclipse.draw2d.RectangleFigure fig_3 = new org.eclipse.draw2d.RectangleFigure();
324
325
			fig_3.setMinimumSize(new org.eclipse.draw2d.geometry.Dimension(getMapMode().DPtoLP(0), getMapMode().DPtoLP(55)));
326
327
			setFigureComponentFigure_Body(fig_3);
328
			org.eclipse.gmf.internal.codegen.draw2d.GridLayoutData layData3 = new org.eclipse.gmf.internal.codegen.draw2d.GridLayoutData();
329
			layData3.verticalAlignment = org.eclipse.gmf.internal.codegen.draw2d.GridLayoutData.FILL;
330
			layData3.horizontalAlignment = org.eclipse.gmf.internal.codegen.draw2d.GridLayoutData.FILL;
331
			layData3.horizontalIndent = 0;
332
			layData3.horizontalSpan = 1;
333
			layData3.verticalSpan = 1;
334
			layData3.grabExcessHorizontalSpace = true;
335
			layData3.grabExcessVerticalSpace = true;
336
337
			this.add(fig_3, layData3);
338
		}
339
340
		/**
341
		 * @generated
342
		 */
343
		private org.eclipse.draw2d.RectangleFigure fComponentFigure_LabelsContainer;
344
345
		/**
346
		 * @generated
347
		 */
348
		public org.eclipse.draw2d.RectangleFigure getFigureComponentFigure_LabelsContainer() {
349
			return fComponentFigure_LabelsContainer;
350
		}
351
352
		/**
353
		 * @generated
354
		 */
355
		private void setFigureComponentFigure_LabelsContainer(org.eclipse.draw2d.RectangleFigure fig) {
356
			fComponentFigure_LabelsContainer = fig;
357
		}
358
359
		/**
360
		 * @generated
361
		 */
362
		private org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel fComponentFigure_name;
363
364
		/**
365
		 * @generated
366
		 */
367
		public org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel getFigureComponentFigure_name() {
368
			return fComponentFigure_name;
369
		}
370
371
		/**
372
		 * @generated
373
		 */
374
		private void setFigureComponentFigure_name(org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel fig) {
375
			fComponentFigure_name = fig;
376
		}
377
378
		/**
379
		 * @generated
380
		 */
381
		private org.eclipse.draw2d.RectangleFigure fComponentFigure_Body;
382
383
		/**
384
		 * @generated
385
		 */
386
		public org.eclipse.draw2d.RectangleFigure getFigureComponentFigure_Body() {
387
			return fComponentFigure_Body;
388
		}
389
390
		/**
391
		 * @generated
392
		 */
393
		private void setFigureComponentFigure_Body(org.eclipse.draw2d.RectangleFigure fig) {
394
			fComponentFigure_Body = fig;
395
		}
396
397
		/**
398
		 * @generated
399
		 */
400
		private boolean myUseLocalCoordinates = false;
401
402
		/**
403
		 * @generated
404
		 */
405
		protected boolean useLocalCoordinates() {
406
			return myUseLocalCoordinates;
407
		}
408
409
		/**
410
		 * @generated
411
		 */
412
		protected void setUseLocalCoordinates(boolean useLocalCoordinates) {
413
			myUseLocalCoordinates = useLocalCoordinates;
414
		}
415
416
	}
417
418
}
(-)src/org/eclipse/uml2/diagram/component/part/UMLDocumentProvider.java (+204 lines)
Added Link Here
1
package org.eclipse.uml2.diagram.component.part;
2
3
import java.io.IOException;
4
import java.util.ArrayList;
5
import java.util.Collection;
6
import java.util.Collections;
7
import java.util.Iterator;
8
import java.util.List;
9
10
import org.eclipse.core.resources.IFile;
11
import org.eclipse.core.resources.IResource;
12
import org.eclipse.core.resources.IStorage;
13
import org.eclipse.core.runtime.CoreException;
14
import org.eclipse.core.runtime.IProgressMonitor;
15
import org.eclipse.core.runtime.SubProgressMonitor;
16
import org.eclipse.core.runtime.jobs.ISchedulingRule;
17
import org.eclipse.core.runtime.jobs.MultiRule;
18
import org.eclipse.emf.common.notify.Notification;
19
import org.eclipse.emf.ecore.EObject;
20
import org.eclipse.emf.ecore.resource.Resource;
21
import org.eclipse.emf.transaction.DemultiplexingListener;
22
import org.eclipse.emf.transaction.NotificationFilter;
23
import org.eclipse.emf.transaction.TransactionalEditingDomain;
24
import org.eclipse.emf.workspace.util.WorkspaceSynchronizer;
25
import org.eclipse.gmf.runtime.diagram.ui.resources.editor.document.DiagramDocument;
26
import org.eclipse.gmf.runtime.diagram.ui.resources.editor.document.DiagramModificationListener;
27
import org.eclipse.gmf.runtime.diagram.ui.resources.editor.document.IDiagramDocument;
28
import org.eclipse.gmf.runtime.diagram.ui.resources.editor.document.IDocument;
29
import org.eclipse.gmf.runtime.diagram.ui.resources.editor.ide.document.FileDiagramDocumentProvider;
30
import org.eclipse.gmf.runtime.diagram.ui.resources.editor.ide.document.FileDiagramModificationListener;
31
import org.eclipse.gmf.runtime.notation.Diagram;
32
import org.eclipse.ui.IFileEditorInput;
33
34
/**
35
 * @generated
36
 */
37
public class UMLDocumentProvider extends FileDiagramDocumentProvider {
38
39
	/**
40
	 * @generated
41
	 */
42
	private final String contentObjectURI;
43
44
	/**
45
	 * @generated
46
	 */
47
	public UMLDocumentProvider() {
48
		this(null);
49
	}
50
51
	/**
52
	 * @generated
53
	 */
54
	public UMLDocumentProvider(String rootObjectURI) {
55
		this.contentObjectURI = rootObjectURI;
56
	}
57
58
	/**
59
	 * @generated
60
	 */
61
	protected void setDocumentContentFromStorage(IDocument document, IStorage storage) throws CoreException {
62
		super.setDocumentContentFromStorage(document, storage);
63
		if (contentObjectURI == null || false == document.getContent() instanceof EObject) {
64
			return;
65
		}
66
		EObject currentContent = (EObject) document.getContent();
67
		if (currentContent.eResource().getURIFragment(currentContent) == contentObjectURI) {
68
			return; // already there
69
		}
70
		EObject anotherContentObject = currentContent.eResource().getEObject(contentObjectURI);
71
		document.setContent(anotherContentObject);
72
	}
73
74
	/**
75
	 * @generated
76
	 */
77
	protected void saveDocumentToFile(IDocument document, IFile file, boolean overwrite, IProgressMonitor monitor) throws CoreException {
78
		Diagram diagram = (Diagram) document.getContent();
79
		Resource diagramResource = diagram.eResource();
80
		IDiagramDocument diagramDocument = (IDiagramDocument) document;
81
		TransactionalEditingDomain domain = diagramDocument.getEditingDomain();
82
		List resources = domain.getResourceSet().getResources();
83
84
		monitor.beginTask("Saving diagram", resources.size() + 1); //$NON-NLS-1$
85
		super.saveDocumentToFile(document, file, overwrite, new SubProgressMonitor(monitor, 1));
86
		for (Iterator it = resources.iterator(); it.hasNext();) {
87
			Resource nextResource = (Resource) it.next();
88
			monitor.setTaskName("Saving " + nextResource.getURI()); //$NON-NLS-1$
89
			if (nextResource != diagramResource && nextResource.isLoaded() && (!nextResource.isTrackingModification() || nextResource.isModified())) {
90
				try {
91
					nextResource.save(Collections.EMPTY_MAP);
92
				} catch (IOException e) {
93
					UMLDiagramEditorPlugin.getInstance().logError("Unable to save resource: " + nextResource.getURI(), e); //$NON-NLS-1$
94
				}
95
			}
96
			monitor.worked(1);
97
		}
98
		monitor.done();
99
	}
100
101
	/**
102
	 * @generated
103
	 */
104
	protected ISchedulingRule getSaveRule(Object element) {
105
		IDiagramDocument diagramDocument = getDiagramDocument(element);
106
		if (diagramDocument != null) {
107
			Diagram diagram = diagramDocument.getDiagram();
108
			if (diagram != null) {
109
				Collection rules = new ArrayList();
110
				for (Iterator it = diagramDocument.getEditingDomain().getResourceSet().getResources().iterator(); it.hasNext();) {
111
					IFile nextFile = WorkspaceSynchronizer.getFile((Resource) it.next());
112
					if (nextFile != null) {
113
						rules.add(computeSaveSchedulingRule(nextFile));
114
					}
115
				}
116
				return new MultiRule((ISchedulingRule[]) rules.toArray(new ISchedulingRule[rules.size()]));
117
			}
118
		}
119
		return super.getSaveRule(element);
120
	}
121
122
	/**
123
	 * @generated
124
	 */
125
	protected FileInfo createFileInfo(IDocument document, FileSynchronizer synchronizer, IFileEditorInput input) {
126
		assert document instanceof DiagramDocument;
127
128
		DiagramModificationListener diagramListener = new CustomModificationListener(this, (DiagramDocument) document, input);
129
		DiagramFileInfo info = new DiagramFileInfo(document, synchronizer, diagramListener);
130
131
		diagramListener.startListening();
132
		return info;
133
	}
134
135
	/**
136
	 * @generated
137
	 */
138
	private ISchedulingRule computeSaveSchedulingRule(IResource toCreateOrModify) {
139
		if (toCreateOrModify.exists() && toCreateOrModify.isSynchronized(IResource.DEPTH_ZERO))
140
			return fResourceRuleFactory.modifyRule(toCreateOrModify);
141
142
		IResource parent = toCreateOrModify;
143
		do {
144
			/*
145
			 * XXX This is a workaround for https://bugs.eclipse.org/bugs/show_bug.cgi?id=67601
146
			 * IResourceRuleFactory.createRule should iterate the hierarchy itself.
147
			 */
148
			toCreateOrModify = parent;
149
			parent = toCreateOrModify.getParent();
150
		} while (parent != null && !parent.exists() && !parent.isSynchronized(IResource.DEPTH_ZERO));
151
152
		return fResourceRuleFactory.createRule(toCreateOrModify);
153
	}
154
155
	/**
156
	 * @generated
157
	 */
158
	private class CustomModificationListener extends FileDiagramModificationListener {
159
160
		/**
161
		 * @generated
162
		 */
163
		private DemultiplexingListener myListener = null;
164
165
		/**
166
		 * @generated
167
		 */
168
		public CustomModificationListener(UMLDocumentProvider documentProviderParameter, DiagramDocument documentParameter, IFileEditorInput inputParameter) {
169
			super(documentProviderParameter, documentParameter, inputParameter);
170
			final DiagramDocument document = documentParameter;
171
			NotificationFilter diagramResourceModifiedFilter = NotificationFilter.createEventTypeFilter(Notification.SET);
172
			myListener = new DemultiplexingListener(diagramResourceModifiedFilter) {
173
174
				protected void handleNotification(TransactionalEditingDomain domain, Notification notification) {
175
					if (notification.getNotifier() instanceof EObject) {
176
						Resource modifiedResource = ((EObject) notification.getNotifier()).eResource();
177
						if (modifiedResource != document.getDiagram().eResource()) {
178
							document.setContent(document.getContent());
179
						}
180
					}
181
182
				}
183
			};
184
		}
185
186
		/**
187
		 * @generated
188
		 */
189
		public void startListening() {
190
			super.startListening();
191
			getEditingDomain().addResourceSetListener(myListener);
192
		}
193
194
		/**
195
		 * @generated
196
		 */
197
		public void stopListening() {
198
			getEditingDomain().removeResourceSetListener(myListener);
199
			super.stopListening();
200
		}
201
202
	}
203
204
}
(-)src/org/eclipse/uml2/diagram/component/edit/parts/ComponentNameEditPart.java (+574 lines)
Added Link Here
1
package org.eclipse.uml2.diagram.component.edit.parts;
2
3
import java.util.ArrayList;
4
import java.util.List;
5
import org.eclipse.gef.EditPolicy;
6
import org.eclipse.gef.GraphicalEditPart;
7
import org.eclipse.gef.Request;
8
import org.eclipse.gef.commands.Command;
9
import org.eclipse.gef.editpolicies.NonResizableEditPolicy;
10
import org.eclipse.gef.handles.NonResizableHandleKit;
11
import org.eclipse.gmf.runtime.diagram.ui.editparts.ITextAwareEditPart;
12
import org.eclipse.gmf.runtime.diagram.ui.editpolicies.LabelDirectEditPolicy;
13
import org.eclipse.gmf.runtime.notation.View;
14
import java.util.Collections;
15
16
import org.eclipse.draw2d.IFigure;
17
import org.eclipse.draw2d.Label;
18
19
import org.eclipse.draw2d.geometry.Point;
20
21
import org.eclipse.emf.common.notify.Notification;
22
23
import org.eclipse.emf.ecore.EObject;
24
25
import org.eclipse.emf.transaction.RunnableWithResult;
26
27
import org.eclipse.gef.AccessibleEditPart;
28
29
import org.eclipse.gef.requests.DirectEditRequest;
30
31
import org.eclipse.gef.tools.DirectEditManager;
32
33
import org.eclipse.gmf.runtime.common.ui.services.parser.IParser;
34
import org.eclipse.gmf.runtime.common.ui.services.parser.IParserEditStatus;
35
import org.eclipse.gmf.runtime.common.ui.services.parser.ParserEditStatus;
36
import org.eclipse.gmf.runtime.common.ui.services.parser.ParserOptions;
37
import org.eclipse.gmf.runtime.common.ui.services.parser.ParserService;
38
39
import org.eclipse.gmf.runtime.diagram.ui.editparts.CompartmentEditPart;
40
import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;
41
42
import org.eclipse.gmf.runtime.diagram.ui.l10n.DiagramColorRegistry;
43
44
import org.eclipse.gmf.runtime.diagram.ui.requests.RequestConstants;
45
46
import org.eclipse.gmf.runtime.diagram.ui.tools.TextDirectEditManager;
47
48
import org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel;
49
50
import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;
51
52
import org.eclipse.gmf.runtime.emf.type.core.IElementType;
53
54
import org.eclipse.gmf.runtime.emf.ui.services.parser.ISemanticParser;
55
import org.eclipse.gmf.runtime.emf.ui.services.parser.ParserHintAdapter;
56
57
import org.eclipse.gmf.runtime.notation.FontStyle;
58
import org.eclipse.gmf.runtime.notation.NotationPackage;
59
60
import org.eclipse.jface.resource.ImageDescriptor;
61
62
import org.eclipse.jface.text.contentassist.IContentAssistProcessor;
63
64
import org.eclipse.jface.viewers.ICellEditorValidator;
65
66
import org.eclipse.swt.SWT;
67
68
import org.eclipse.swt.accessibility.AccessibleEvent;
69
70
import org.eclipse.swt.graphics.Color;
71
import org.eclipse.swt.graphics.FontData;
72
import org.eclipse.swt.graphics.Image;
73
import org.eclipse.uml2.diagram.component.edit.policies.UMLTextSelectionEditPolicy;
74
import org.eclipse.uml2.diagram.component.part.UMLDiagramEditorPlugin;
75
import org.eclipse.uml2.diagram.component.providers.UMLElementTypes;
76
77
/**
78
 * @generated
79
 */
80
public class ComponentNameEditPart extends CompartmentEditPart implements ITextAwareEditPart {
81
82
	/**
83
	 * @generated
84
	 */
85
	public static final int VISUAL_ID = 5002;
86
87
	/**
88
	 * @generated
89
	 */
90
	private DirectEditManager manager;
91
92
	/**
93
	 * @generated
94
	 */
95
	private IParser parser;
96
97
	/**
98
	 * @generated
99
	 */
100
	private List parserElements;
101
102
	/**
103
	 * @generated
104
	 */
105
	private String defaultText;
106
107
	/**
108
	 * @generated
109
	 */
110
	public ComponentNameEditPart(View view) {
111
		super(view);
112
	}
113
114
	/**
115
	 * @generated
116
	 */
117
	protected void createDefaultEditPolicies() {
118
		super.createDefaultEditPolicies();
119
		installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE, new LabelDirectEditPolicy());
120
		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE, new NonResizableEditPolicy() {
121
122
			protected List createSelectionHandles() {
123
				List handles = new ArrayList();
124
				NonResizableHandleKit.addMoveHandle((GraphicalEditPart) getHost(), handles);
125
				return handles;
126
			}
127
128
			public Command getCommand(Request request) {
129
				return null;
130
			}
131
132
			public boolean understandsRequest(Request request) {
133
				return false;
134
			}
135
		});
136
137
	}
138
139
	/**
140
	 * @generated
141
	 */
142
	protected String getLabelTextHelper(IFigure figure) {
143
		if (figure instanceof WrapLabel) {
144
			return ((WrapLabel) figure).getText();
145
		} else {
146
			return ((Label) figure).getText();
147
		}
148
	}
149
150
	/**
151
	 * @generated
152
	 */
153
	protected void setLabelTextHelper(IFigure figure, String text) {
154
		if (figure instanceof WrapLabel) {
155
			((WrapLabel) figure).setText(text);
156
		} else {
157
			((Label) figure).setText(text);
158
		}
159
	}
160
161
	/**
162
	 * @generated
163
	 */
164
	protected Image getLabelIconHelper(IFigure figure) {
165
		if (figure instanceof WrapLabel) {
166
			return ((WrapLabel) figure).getIcon();
167
		} else {
168
			return ((Label) figure).getIcon();
169
		}
170
	}
171
172
	/**
173
	 * @generated
174
	 */
175
	protected void setLabelIconHelper(IFigure figure, Image icon) {
176
		if (figure instanceof WrapLabel) {
177
			((WrapLabel) figure).setIcon(icon);
178
		} else {
179
			((Label) figure).setIcon(icon);
180
		}
181
	}
182
183
	/**
184
	 * @generated
185
	 */
186
	public void setLabel(WrapLabel figure) {
187
		unregisterVisuals();
188
		setFigure(figure);
189
		defaultText = getLabelTextHelper(figure);
190
		registerVisuals();
191
		refreshVisuals();
192
	}
193
194
	/**
195
	 * @generated
196
	 */
197
	protected List getModelChildren() {
198
		return Collections.EMPTY_LIST;
199
	}
200
201
	/**
202
	 * @generated
203
	 */
204
	public IGraphicalEditPart getChildBySemanticHint(String semanticHint) {
205
		return null;
206
	}
207
208
	/**
209
	 * @generated
210
	 */
211
	protected EObject getParserElement() {
212
		EObject element = resolveSemanticElement();
213
		return element != null ? element : (View) getModel();
214
	}
215
216
	/**
217
	 * @generated
218
	 */
219
	protected Image getLabelIcon() {
220
		EObject parserElement = getParserElement();
221
		if (parserElement == null) {
222
			return null;
223
		}
224
		return UMLElementTypes.getImage(parserElement.eClass());
225
	}
226
227
	/**
228
	 * @generated
229
	 */
230
	protected String getLabelText() {
231
		String text = null;
232
		if (getParser() != null) {
233
			text = getParser().getPrintString(new EObjectAdapter(getParserElement()), getParserOptions().intValue());
234
		}
235
		if (text == null || text.length() == 0) {
236
			text = defaultText;
237
		}
238
		return text;
239
	}
240
241
	/**
242
	 * @generated
243
	 */
244
	public void setLabelText(String text) {
245
		setLabelTextHelper(getFigure(), text);
246
		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);
247
		if (pdEditPolicy instanceof UMLTextSelectionEditPolicy) {
248
			((UMLTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();
249
		}
250
	}
251
252
	/**
253
	 * @generated
254
	 */
255
	public String getEditText() {
256
		if (getParser() == null) {
257
			return ""; //$NON-NLS-1$
258
		}
259
		return getParser().getEditString(new EObjectAdapter(getParserElement()), getParserOptions().intValue());
260
	}
261
262
	/**
263
	 * @generated
264
	 */
265
	protected boolean isEditable() {
266
		return getEditText() != null;
267
	}
268
269
	/**
270
	 * @generated
271
	 */
272
	public ICellEditorValidator getEditTextValidator() {
273
		return new ICellEditorValidator() {
274
275
			public String isValid(final Object value) {
276
				if (value instanceof String) {
277
					final EObject element = getParserElement();
278
					final IParser parser = getParser();
279
					try {
280
						IParserEditStatus valid = (IParserEditStatus) getEditingDomain().runExclusive(new RunnableWithResult.Impl() {
281
282
							public void run() {
283
								setResult(parser.isValidEditString(new EObjectAdapter(element), (String) value));
284
							}
285
						});
286
						return valid.getCode() == ParserEditStatus.EDITABLE ? null : valid.getMessage();
287
					} catch (InterruptedException ie) {
288
						ie.printStackTrace();
289
					}
290
				}
291
292
				// shouldn't get here
293
				return null;
294
			}
295
		};
296
	}
297
298
	/**
299
	 * @generated
300
	 */
301
	public IContentAssistProcessor getCompletionProcessor() {
302
		if (getParser() == null) {
303
			return null;
304
		}
305
		return getParser().getCompletionProcessor(new EObjectAdapter(getParserElement()));
306
	}
307
308
	/**
309
	 * @generated
310
	 */
311
	public ParserOptions getParserOptions() {
312
		return ParserOptions.NONE;
313
	}
314
315
	/**
316
	 * @generated
317
	 */
318
	public IParser getParser() {
319
		if (parser == null) {
320
			String parserHint = ((View) getModel()).getType();
321
			ParserHintAdapter hintAdapter = new ParserHintAdapter(getParserElement(), parserHint) {
322
323
				public Object getAdapter(Class adapter) {
324
					if (IElementType.class.equals(adapter)) {
325
						return UMLElementTypes.Component_3001;
326
					}
327
					return super.getAdapter(adapter);
328
				}
329
			};
330
			parser = ParserService.getInstance().getParser(hintAdapter);
331
		}
332
		return parser;
333
	}
334
335
	/**
336
	 * @generated
337
	 */
338
	protected DirectEditManager getManager() {
339
		if (manager == null) {
340
			setManager(new TextDirectEditManager(this, TextDirectEditManager.getTextCellEditorClass(this), UMLEditPartFactory.getTextCellEditorLocator(this)));
341
		}
342
		return manager;
343
	}
344
345
	/**
346
	 * @generated
347
	 */
348
	protected void setManager(DirectEditManager manager) {
349
		this.manager = manager;
350
	}
351
352
	/**
353
	 * @generated
354
	 */
355
	protected void performDirectEdit() {
356
		getManager().show();
357
	}
358
359
	/**
360
	 * @generated
361
	 */
362
	protected void performDirectEdit(Point eventLocation) {
363
		if (getManager().getClass() == TextDirectEditManager.class) {
364
			((TextDirectEditManager) getManager()).show(eventLocation.getSWTPoint());
365
		}
366
	}
367
368
	/**
369
	 * @generated
370
	 */
371
	private void performDirectEdit(char initialCharacter) {
372
		if (getManager() instanceof TextDirectEditManager) {
373
			((TextDirectEditManager) getManager()).show(initialCharacter);
374
		} else {
375
			performDirectEdit();
376
		}
377
	}
378
379
	/**
380
	 * @generated
381
	 */
382
	protected void performDirectEditRequest(Request request) {
383
		final Request theRequest = request;
384
		try {
385
			getEditingDomain().runExclusive(new Runnable() {
386
387
				public void run() {
388
					if (isActive() && isEditable()) {
389
						if (theRequest.getExtendedData().get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR) instanceof Character) {
390
							Character initialChar = (Character) theRequest.getExtendedData().get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR);
391
							performDirectEdit(initialChar.charValue());
392
						} else if ((theRequest instanceof DirectEditRequest) && (getEditText().equals(getLabelText()))) {
393
							DirectEditRequest editRequest = (DirectEditRequest) theRequest;
394
							performDirectEdit(editRequest.getLocation());
395
						} else {
396
							performDirectEdit();
397
						}
398
					}
399
				}
400
			});
401
		} catch (InterruptedException e) {
402
			e.printStackTrace();
403
		}
404
	}
405
406
	/**
407
	 * @generated
408
	 */
409
	protected void refreshVisuals() {
410
		super.refreshVisuals();
411
		refreshLabel();
412
		refreshFont();
413
		refreshFontColor();
414
		refreshUnderline();
415
		refreshStrikeThrough();
416
	}
417
418
	/**
419
	 * @generated
420
	 */
421
	protected void refreshLabel() {
422
		setLabelTextHelper(getFigure(), getLabelText());
423
		setLabelIconHelper(getFigure(), getLabelIcon());
424
		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);
425
		if (pdEditPolicy instanceof UMLTextSelectionEditPolicy) {
426
			((UMLTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();
427
		}
428
	}
429
430
	/**
431
	 * @generated
432
	 */
433
	protected void refreshUnderline() {
434
		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle());
435
		if (style != null && getFigure() instanceof WrapLabel) {
436
			((WrapLabel) getFigure()).setTextUnderline(style.isUnderline());
437
		}
438
	}
439
440
	/**
441
	 * @generated
442
	 */
443
	protected void refreshStrikeThrough() {
444
		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle());
445
		if (style != null && getFigure() instanceof WrapLabel) {
446
			((WrapLabel) getFigure()).setTextStrikeThrough(style.isStrikeThrough());
447
		}
448
	}
449
450
	/**
451
	 * @generated
452
	 */
453
	protected void refreshFont() {
454
		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle());
455
		if (style != null) {
456
			FontData fontData = new FontData(style.getFontName(), style.getFontHeight(), (style.isBold() ? SWT.BOLD : SWT.NORMAL) | (style.isItalic() ? SWT.ITALIC : SWT.NORMAL));
457
			setFont(fontData);
458
		}
459
	}
460
461
	/**
462
	 * @generated
463
	 */
464
	protected void setFontColor(Color color) {
465
		getFigure().setForegroundColor(color);
466
	}
467
468
	/**
469
	 * @generated
470
	 */
471
	protected void addSemanticListeners() {
472
		if (getParser() instanceof ISemanticParser) {
473
			EObject element = resolveSemanticElement();
474
			parserElements = ((ISemanticParser) getParser()).getSemanticElementsBeingParsed(element);
475
			for (int i = 0; i < parserElements.size(); i++) {
476
				addListenerFilter("SemanticModel" + i, this, (EObject) parserElements.get(i)); //$NON-NLS-1$
477
			}
478
		} else {
479
			super.addSemanticListeners();
480
		}
481
	}
482
483
	/**
484
	 * @generated
485
	 */
486
	protected void removeSemanticListeners() {
487
		if (parserElements != null) {
488
			for (int i = 0; i < parserElements.size(); i++) {
489
				removeListenerFilter("SemanticModel" + i); //$NON-NLS-1$
490
			}
491
		} else {
492
			super.removeSemanticListeners();
493
		}
494
	}
495
496
	/**
497
	 * @generated
498
	 */
499
	protected AccessibleEditPart getAccessibleEditPart() {
500
		if (accessibleEP == null) {
501
			accessibleEP = new AccessibleGraphicalEditPart() {
502
503
				public void getName(AccessibleEvent e) {
504
					e.result = getLabelTextHelper(getFigure());
505
				}
506
			};
507
		}
508
		return accessibleEP;
509
	}
510
511
	/**
512
	 * @generated
513
	 */
514
	private View getFontStyleOwnerView() {
515
		return getPrimaryView();
516
	}
517
518
	/**
519
	 * @generated
520
	 */
521
	protected void addNotationalListeners() {
522
		super.addNotationalListeners();
523
		addListenerFilter("PrimaryView", this, getPrimaryView()); //$NON-NLS-1$
524
	}
525
526
	/**
527
	 * @generated
528
	 */
529
	protected void removeNotationalListeners() {
530
		super.removeNotationalListeners();
531
		removeListenerFilter("PrimaryView"); //$NON-NLS-1$
532
	}
533
534
	/**
535
	 * @generated
536
	 */
537
	protected void handleNotificationEvent(Notification event) {
538
		Object feature = event.getFeature();
539
		if (NotationPackage.eINSTANCE.getFontStyle_FontColor().equals(feature)) {
540
			Integer c = (Integer) event.getNewValue();
541
			setFontColor(DiagramColorRegistry.getInstance().getColor(c));
542
		} else if (NotationPackage.eINSTANCE.getFontStyle_Underline().equals(feature)) {
543
			refreshUnderline();
544
		} else if (NotationPackage.eINSTANCE.getFontStyle_StrikeThrough().equals(feature)) {
545
			refreshStrikeThrough();
546
		} else if (NotationPackage.eINSTANCE.getFontStyle_FontHeight().equals(feature) || NotationPackage.eINSTANCE.getFontStyle_FontName().equals(feature)
547
				|| NotationPackage.eINSTANCE.getFontStyle_Bold().equals(feature) || NotationPackage.eINSTANCE.getFontStyle_Italic().equals(feature)) {
548
			refreshFont();
549
		} else {
550
			if (getParser() != null && getParser().isAffectingEvent(event, getParserOptions().intValue())) {
551
				refreshLabel();
552
			}
553
			if (getParser() instanceof ISemanticParser) {
554
				ISemanticParser modelParser = (ISemanticParser) getParser();
555
				if (modelParser.areSemanticElementsAffected(null, event)) {
556
					removeSemanticListeners();
557
					if (resolveSemanticElement() != null) {
558
						addSemanticListeners();
559
					}
560
					refreshLabel();
561
				}
562
			}
563
		}
564
		super.handleNotificationEvent(event);
565
	}
566
567
	/**
568
	 * @generated
569
	 */
570
	protected IFigure createFigure() {
571
		// Parent should assign one using setLabel method
572
		return null;
573
	}
574
}
(-)src/org/eclipse/uml2/diagram/component/edit/parts/ClassNameEditPart.java (+567 lines)
Added Link Here
1
package org.eclipse.uml2.diagram.component.edit.parts;
2
3
import java.util.ArrayList;
4
import java.util.List;
5
import org.eclipse.gef.EditPolicy;
6
import org.eclipse.gef.GraphicalEditPart;
7
import org.eclipse.gef.Request;
8
import org.eclipse.gef.commands.Command;
9
import org.eclipse.gef.editpolicies.NonResizableEditPolicy;
10
import org.eclipse.gef.handles.NonResizableHandleKit;
11
import org.eclipse.gmf.runtime.diagram.ui.editparts.ITextAwareEditPart;
12
import org.eclipse.gmf.runtime.diagram.ui.editpolicies.LabelDirectEditPolicy;
13
import org.eclipse.gmf.runtime.notation.View;
14
import java.util.Collections;
15
16
import org.eclipse.draw2d.IFigure;
17
import org.eclipse.draw2d.Label;
18
19
import org.eclipse.draw2d.geometry.Point;
20
21
import org.eclipse.emf.common.notify.Notification;
22
23
import org.eclipse.emf.ecore.EObject;
24
25
import org.eclipse.emf.transaction.RunnableWithResult;
26
27
import org.eclipse.gef.AccessibleEditPart;
28
29
import org.eclipse.gef.requests.DirectEditRequest;
30
31
import org.eclipse.gef.tools.DirectEditManager;
32
33
import org.eclipse.gmf.runtime.common.ui.services.parser.IParser;
34
import org.eclipse.gmf.runtime.common.ui.services.parser.IParserEditStatus;
35
import org.eclipse.gmf.runtime.common.ui.services.parser.ParserEditStatus;
36
import org.eclipse.gmf.runtime.common.ui.services.parser.ParserOptions;
37
import org.eclipse.gmf.runtime.common.ui.services.parser.ParserService;
38
39
import org.eclipse.gmf.runtime.diagram.ui.editparts.CompartmentEditPart;
40
import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;
41
42
import org.eclipse.gmf.runtime.diagram.ui.l10n.DiagramColorRegistry;
43
44
import org.eclipse.gmf.runtime.diagram.ui.requests.RequestConstants;
45
46
import org.eclipse.gmf.runtime.diagram.ui.tools.TextDirectEditManager;
47
48
import org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel;
49
50
import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;
51
52
import org.eclipse.gmf.runtime.emf.type.core.IElementType;
53
54
import org.eclipse.gmf.runtime.emf.ui.services.parser.ISemanticParser;
55
import org.eclipse.gmf.runtime.emf.ui.services.parser.ParserHintAdapter;
56
57
import org.eclipse.gmf.runtime.notation.FontStyle;
58
import org.eclipse.gmf.runtime.notation.NotationPackage;
59
60
import org.eclipse.jface.text.contentassist.IContentAssistProcessor;
61
62
import org.eclipse.jface.viewers.ICellEditorValidator;
63
64
import org.eclipse.swt.SWT;
65
66
import org.eclipse.swt.accessibility.AccessibleEvent;
67
68
import org.eclipse.swt.graphics.Color;
69
import org.eclipse.swt.graphics.FontData;
70
import org.eclipse.swt.graphics.Image;
71
import org.eclipse.uml2.diagram.component.edit.policies.UMLTextSelectionEditPolicy;
72
import org.eclipse.uml2.diagram.component.providers.UMLElementTypes;
73
74
/**
75
 * @generated
76
 */
77
public class ClassNameEditPart extends CompartmentEditPart implements ITextAwareEditPart {
78
79
	/**
80
	 * @generated
81
	 */
82
	public static final int VISUAL_ID = 5007;
83
84
	/**
85
	 * @generated
86
	 */
87
	private DirectEditManager manager;
88
89
	/**
90
	 * @generated
91
	 */
92
	private IParser parser;
93
94
	/**
95
	 * @generated
96
	 */
97
	private List parserElements;
98
99
	/**
100
	 * @generated
101
	 */
102
	private String defaultText;
103
104
	/**
105
	 * @generated
106
	 */
107
	public ClassNameEditPart(View view) {
108
		super(view);
109
	}
110
111
	/**
112
	 * @generated
113
	 */
114
	protected void createDefaultEditPolicies() {
115
		super.createDefaultEditPolicies();
116
		installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE, new LabelDirectEditPolicy());
117
		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE, new NonResizableEditPolicy() {
118
119
			protected List createSelectionHandles() {
120
				List handles = new ArrayList();
121
				NonResizableHandleKit.addMoveHandle((GraphicalEditPart) getHost(), handles);
122
				return handles;
123
			}
124
125
			public Command getCommand(Request request) {
126
				return null;
127
			}
128
129
			public boolean understandsRequest(Request request) {
130
				return false;
131
			}
132
		});
133
134
	}
135
136
	/**
137
	 * @generated
138
	 */
139
	protected String getLabelTextHelper(IFigure figure) {
140
		if (figure instanceof WrapLabel) {
141
			return ((WrapLabel) figure).getText();
142
		} else {
143
			return ((Label) figure).getText();
144
		}
145
	}
146
147
	/**
148
	 * @generated
149
	 */
150
	protected void setLabelTextHelper(IFigure figure, String text) {
151
		if (figure instanceof WrapLabel) {
152
			((WrapLabel) figure).setText(text);
153
		} else {
154
			((Label) figure).setText(text);
155
		}
156
	}
157
158
	/**
159
	 * @generated
160
	 */
161
	protected Image getLabelIconHelper(IFigure figure) {
162
		if (figure instanceof WrapLabel) {
163
			return ((WrapLabel) figure).getIcon();
164
		} else {
165
			return ((Label) figure).getIcon();
166
		}
167
	}
168
169
	/**
170
	 * @generated
171
	 */
172
	protected void setLabelIconHelper(IFigure figure, Image icon) {
173
		if (figure instanceof WrapLabel) {
174
			((WrapLabel) figure).setIcon(icon);
175
		} else {
176
			((Label) figure).setIcon(icon);
177
		}
178
	}
179
180
	/**
181
	 * @generated
182
	 */
183
	public void setLabel(WrapLabel figure) {
184
		unregisterVisuals();
185
		setFigure(figure);
186
		defaultText = getLabelTextHelper(figure);
187
		registerVisuals();
188
		refreshVisuals();
189
	}
190
191
	/**
192
	 * @generated
193
	 */
194
	protected List getModelChildren() {
195
		return Collections.EMPTY_LIST;
196
	}
197
198
	/**
199
	 * @generated
200
	 */
201
	public IGraphicalEditPart getChildBySemanticHint(String semanticHint) {
202
		return null;
203
	}
204
205
	/**
206
	 * @generated
207
	 */
208
	protected EObject getParserElement() {
209
		EObject element = resolveSemanticElement();
210
		return element != null ? element : (View) getModel();
211
	}
212
213
	/**
214
	 * @generated
215
	 */
216
	protected Image getLabelIcon() {
217
		return null;
218
	}
219
220
	/**
221
	 * @generated
222
	 */
223
	protected String getLabelText() {
224
		String text = null;
225
		if (getParser() != null) {
226
			text = getParser().getPrintString(new EObjectAdapter(getParserElement()), getParserOptions().intValue());
227
		}
228
		if (text == null || text.length() == 0) {
229
			text = defaultText;
230
		}
231
		return text;
232
	}
233
234
	/**
235
	 * @generated
236
	 */
237
	public void setLabelText(String text) {
238
		setLabelTextHelper(getFigure(), text);
239
		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);
240
		if (pdEditPolicy instanceof UMLTextSelectionEditPolicy) {
241
			((UMLTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();
242
		}
243
	}
244
245
	/**
246
	 * @generated
247
	 */
248
	public String getEditText() {
249
		if (getParser() == null) {
250
			return ""; //$NON-NLS-1$
251
		}
252
		return getParser().getEditString(new EObjectAdapter(getParserElement()), getParserOptions().intValue());
253
	}
254
255
	/**
256
	 * @generated
257
	 */
258
	protected boolean isEditable() {
259
		return getEditText() != null;
260
	}
261
262
	/**
263
	 * @generated
264
	 */
265
	public ICellEditorValidator getEditTextValidator() {
266
		return new ICellEditorValidator() {
267
268
			public String isValid(final Object value) {
269
				if (value instanceof String) {
270
					final EObject element = getParserElement();
271
					final IParser parser = getParser();
272
					try {
273
						IParserEditStatus valid = (IParserEditStatus) getEditingDomain().runExclusive(new RunnableWithResult.Impl() {
274
275
							public void run() {
276
								setResult(parser.isValidEditString(new EObjectAdapter(element), (String) value));
277
							}
278
						});
279
						return valid.getCode() == ParserEditStatus.EDITABLE ? null : valid.getMessage();
280
					} catch (InterruptedException ie) {
281
						ie.printStackTrace();
282
					}
283
				}
284
285
				// shouldn't get here
286
				return null;
287
			}
288
		};
289
	}
290
291
	/**
292
	 * @generated
293
	 */
294
	public IContentAssistProcessor getCompletionProcessor() {
295
		if (getParser() == null) {
296
			return null;
297
		}
298
		return getParser().getCompletionProcessor(new EObjectAdapter(getParserElement()));
299
	}
300
301
	/**
302
	 * @generated
303
	 */
304
	public ParserOptions getParserOptions() {
305
		return ParserOptions.NONE;
306
	}
307
308
	/**
309
	 * @generated
310
	 */
311
	public IParser getParser() {
312
		if (parser == null) {
313
			String parserHint = ((View) getModel()).getType();
314
			ParserHintAdapter hintAdapter = new ParserHintAdapter(getParserElement(), parserHint) {
315
316
				public Object getAdapter(Class adapter) {
317
					if (IElementType.class.equals(adapter)) {
318
						return UMLElementTypes.Class_3004;
319
					}
320
					return super.getAdapter(adapter);
321
				}
322
			};
323
			parser = ParserService.getInstance().getParser(hintAdapter);
324
		}
325
		return parser;
326
	}
327
328
	/**
329
	 * @generated
330
	 */
331
	protected DirectEditManager getManager() {
332
		if (manager == null) {
333
			setManager(new TextDirectEditManager(this, TextDirectEditManager.getTextCellEditorClass(this), UMLEditPartFactory.getTextCellEditorLocator(this)));
334
		}
335
		return manager;
336
	}
337
338
	/**
339
	 * @generated
340
	 */
341
	protected void setManager(DirectEditManager manager) {
342
		this.manager = manager;
343
	}
344
345
	/**
346
	 * @generated
347
	 */
348
	protected void performDirectEdit() {
349
		getManager().show();
350
	}
351
352
	/**
353
	 * @generated
354
	 */
355
	protected void performDirectEdit(Point eventLocation) {
356
		if (getManager().getClass() == TextDirectEditManager.class) {
357
			((TextDirectEditManager) getManager()).show(eventLocation.getSWTPoint());
358
		}
359
	}
360
361
	/**
362
	 * @generated
363
	 */
364
	private void performDirectEdit(char initialCharacter) {
365
		if (getManager() instanceof TextDirectEditManager) {
366
			((TextDirectEditManager) getManager()).show(initialCharacter);
367
		} else {
368
			performDirectEdit();
369
		}
370
	}
371
372
	/**
373
	 * @generated
374
	 */
375
	protected void performDirectEditRequest(Request request) {
376
		final Request theRequest = request;
377
		try {
378
			getEditingDomain().runExclusive(new Runnable() {
379
380
				public void run() {
381
					if (isActive() && isEditable()) {
382
						if (theRequest.getExtendedData().get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR) instanceof Character) {
383
							Character initialChar = (Character) theRequest.getExtendedData().get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR);
384
							performDirectEdit(initialChar.charValue());
385
						} else if ((theRequest instanceof DirectEditRequest) && (getEditText().equals(getLabelText()))) {
386
							DirectEditRequest editRequest = (DirectEditRequest) theRequest;
387
							performDirectEdit(editRequest.getLocation());
388
						} else {
389
							performDirectEdit();
390
						}
391
					}
392
				}
393
			});
394
		} catch (InterruptedException e) {
395
			e.printStackTrace();
396
		}
397
	}
398
399
	/**
400
	 * @generated
401
	 */
402
	protected void refreshVisuals() {
403
		super.refreshVisuals();
404
		refreshLabel();
405
		refreshFont();
406
		refreshFontColor();
407
		refreshUnderline();
408
		refreshStrikeThrough();
409
	}
410
411
	/**
412
	 * @generated
413
	 */
414
	protected void refreshLabel() {
415
		setLabelTextHelper(getFigure(), getLabelText());
416
		setLabelIconHelper(getFigure(), getLabelIcon());
417
		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);
418
		if (pdEditPolicy instanceof UMLTextSelectionEditPolicy) {
419
			((UMLTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();
420
		}
421
	}
422
423
	/**
424
	 * @generated
425
	 */
426
	protected void refreshUnderline() {
427
		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle());
428
		if (style != null && getFigure() instanceof WrapLabel) {
429
			((WrapLabel) getFigure()).setTextUnderline(style.isUnderline());
430
		}
431
	}
432
433
	/**
434
	 * @generated
435
	 */
436
	protected void refreshStrikeThrough() {
437
		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle());
438
		if (style != null && getFigure() instanceof WrapLabel) {
439
			((WrapLabel) getFigure()).setTextStrikeThrough(style.isStrikeThrough());
440
		}
441
	}
442
443
	/**
444
	 * @generated
445
	 */
446
	protected void refreshFont() {
447
		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle());
448
		if (style != null) {
449
			FontData fontData = new FontData(style.getFontName(), style.getFontHeight(), (style.isBold() ? SWT.BOLD : SWT.NORMAL) | (style.isItalic() ? SWT.ITALIC : SWT.NORMAL));
450
			setFont(fontData);
451
		}
452
	}
453
454
	/**
455
	 * @generated
456
	 */
457
	protected void setFontColor(Color color) {
458
		getFigure().setForegroundColor(color);
459
	}
460
461
	/**
462
	 * @generated
463
	 */
464
	protected void addSemanticListeners() {
465
		if (getParser() instanceof ISemanticParser) {
466
			EObject element = resolveSemanticElement();
467
			parserElements = ((ISemanticParser) getParser()).getSemanticElementsBeingParsed(element);
468
			for (int i = 0; i < parserElements.size(); i++) {
469
				addListenerFilter("SemanticModel" + i, this, (EObject) parserElements.get(i)); //$NON-NLS-1$
470
			}
471
		} else {
472
			super.addSemanticListeners();
473
		}
474
	}
475
476
	/**
477
	 * @generated
478
	 */
479
	protected void removeSemanticListeners() {
480
		if (parserElements != null) {
481
			for (int i = 0; i < parserElements.size(); i++) {
482
				removeListenerFilter("SemanticModel" + i); //$NON-NLS-1$
483
			}
484
		} else {
485
			super.removeSemanticListeners();
486
		}
487
	}
488
489
	/**
490
	 * @generated
491
	 */
492
	protected AccessibleEditPart getAccessibleEditPart() {
493
		if (accessibleEP == null) {
494
			accessibleEP = new AccessibleGraphicalEditPart() {
495
496
				public void getName(AccessibleEvent e) {
497
					e.result = getLabelTextHelper(getFigure());
498
				}
499
			};
500
		}
501
		return accessibleEP;
502
	}
503
504
	/**
505
	 * @generated
506
	 */
507
	private View getFontStyleOwnerView() {
508
		return getPrimaryView();
509
	}
510
511
	/**
512
	 * @generated
513
	 */
514
	protected void addNotationalListeners() {
515
		super.addNotationalListeners();
516
		addListenerFilter("PrimaryView", this, getPrimaryView()); //$NON-NLS-1$
517
	}
518
519
	/**
520
	 * @generated
521
	 */
522
	protected void removeNotationalListeners() {
523
		super.removeNotationalListeners();
524
		removeListenerFilter("PrimaryView"); //$NON-NLS-1$
525
	}
526
527
	/**
528
	 * @generated
529
	 */
530
	protected void handleNotificationEvent(Notification event) {
531
		Object feature = event.getFeature();
532
		if (NotationPackage.eINSTANCE.getFontStyle_FontColor().equals(feature)) {
533
			Integer c = (Integer) event.getNewValue();
534
			setFontColor(DiagramColorRegistry.getInstance().getColor(c));
535
		} else if (NotationPackage.eINSTANCE.getFontStyle_Underline().equals(feature)) {
536
			refreshUnderline();
537
		} else if (NotationPackage.eINSTANCE.getFontStyle_StrikeThrough().equals(feature)) {
538
			refreshStrikeThrough();
539
		} else if (NotationPackage.eINSTANCE.getFontStyle_FontHeight().equals(feature) || NotationPackage.eINSTANCE.getFontStyle_FontName().equals(feature)
540
				|| NotationPackage.eINSTANCE.getFontStyle_Bold().equals(feature) || NotationPackage.eINSTANCE.getFontStyle_Italic().equals(feature)) {
541
			refreshFont();
542
		} else {
543
			if (getParser() != null && getParser().isAffectingEvent(event, getParserOptions().intValue())) {
544
				refreshLabel();
545
			}
546
			if (getParser() instanceof ISemanticParser) {
547
				ISemanticParser modelParser = (ISemanticParser) getParser();
548
				if (modelParser.areSemanticElementsAffected(null, event)) {
549
					removeSemanticListeners();
550
					if (resolveSemanticElement() != null) {
551
						addSemanticListeners();
552
					}
553
					refreshLabel();
554
				}
555
			}
556
		}
557
		super.handleNotificationEvent(event);
558
	}
559
560
	/**
561
	 * @generated
562
	 */
563
	protected IFigure createFigure() {
564
		// Parent should assign one using setLabel method
565
		return null;
566
	}
567
}
(-)src/org/eclipse/uml2/diagram/component/edit/policies/PortItemSemanticEditPolicy.java (+73 lines)
Added Link Here
1
package org.eclipse.uml2.diagram.component.edit.policies;
2
3
import org.eclipse.gef.commands.Command;
4
import org.eclipse.gmf.runtime.emf.type.core.commands.DestroyElementCommand;
5
import org.eclipse.gmf.runtime.emf.type.core.requests.CreateRelationshipRequest;
6
import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest;
7
import org.eclipse.emf.ecore.EObject;
8
import org.eclipse.emf.ecore.EAnnotation;
9
import org.eclipse.gmf.runtime.notation.View;
10
import org.eclipse.gef.commands.UnexecutableCommand;
11
12
import org.eclipse.uml2.diagram.component.providers.UMLElementTypes;
13
14
/**
15
 * @generated
16
 */
17
public class PortItemSemanticEditPolicy extends UMLBaseItemSemanticEditPolicy {
18
19
	/**
20
	 * @generated
21
	 */
22
	protected Command getDestroyElementCommand(DestroyElementRequest req) {
23
		return getMSLWrapper(new DestroyElementCommand(req) {
24
25
			protected EObject getElementToDestroy() {
26
				View view = (View) getHost().getModel();
27
				EAnnotation annotation = view.getEAnnotation("Shortcut"); //$NON-NLS-1$
28
				if (annotation != null) {
29
					return view;
30
				}
31
				return super.getElementToDestroy();
32
			}
33
34
		});
35
	}
36
37
	/**
38
	 * @generated
39
	 */
40
	protected Command getCreateRelationshipCommand(CreateRelationshipRequest req) {
41
		if (UMLElementTypes.PortProvided_4006 == req.getElementType()) {
42
			return req.getTarget() == null ? getCreateStartOutgoingPort_Provided4006Command(req) : null;
43
		}
44
		if (UMLElementTypes.PortRequired_4004 == req.getElementType()) {
45
			return req.getTarget() == null ? getCreateStartOutgoingPort_Required4004Command(req) : null;
46
		}
47
		return super.getCreateRelationshipCommand(req);
48
	}
49
50
	/**
51
	 * @generated
52
	 */
53
	protected Command getCreateStartOutgoingPort_Provided4006Command(CreateRelationshipRequest req) {
54
		if (!UMLBaseItemSemanticEditPolicy.LinkConstraints.PortProvided_4006.canCreateLink(req, false)) {
55
			return UnexecutableCommand.INSTANCE;
56
		}
57
58
		return new Command() {
59
		};
60
	}
61
62
	/**
63
	 * @generated
64
	 */
65
	protected Command getCreateStartOutgoingPort_Required4004Command(CreateRelationshipRequest req) {
66
		if (!UMLBaseItemSemanticEditPolicy.LinkConstraints.PortRequired_4004.canCreateLink(req, false)) {
67
			return UnexecutableCommand.INSTANCE;
68
		}
69
70
		return new Command() {
71
		};
72
	}
73
}
(-)src/org/eclipse/uml2/diagram/component/view/factories/InterfaceName2ViewFactory.java (+40 lines)
Added Link Here
1
package org.eclipse.uml2.diagram.component.view.factories;
2
3
import java.util.ArrayList;
4
import java.util.List;
5
import org.eclipse.core.runtime.IAdaptable;
6
import org.eclipse.gmf.runtime.diagram.core.preferences.PreferencesHint;
7
import org.eclipse.gmf.runtime.diagram.ui.view.factories.AbstractLabelViewFactory;
8
import org.eclipse.gmf.runtime.notation.Node;
9
import org.eclipse.gmf.runtime.notation.View;
10
import org.eclipse.gmf.runtime.diagram.ui.util.MeasurementUnitHelper;
11
12
import org.eclipse.gmf.runtime.draw2d.ui.mapmode.IMapMode;
13
14
import org.eclipse.gmf.runtime.notation.Location;
15
16
/**
17
 * @generated
18
 */
19
public class InterfaceName2ViewFactory extends AbstractLabelViewFactory {
20
21
	/**
22
	 * @generated
23
	 */
24
	public View createView(IAdaptable semanticAdapter, View containerView, String semanticHint, int index, boolean persisted, PreferencesHint preferencesHint) {
25
		Node view = (Node) super.createView(semanticAdapter, containerView, semanticHint, index, persisted, preferencesHint);
26
		Location location = (Location) view.getLayoutConstraint();
27
		IMapMode mapMode = MeasurementUnitHelper.getMapMode(containerView.getDiagram().getMeasurementUnit());
28
		location.setX(mapMode.DPtoLP(0));
29
		location.setY(mapMode.DPtoLP(5));
30
		return view;
31
	}
32
33
	/**
34
	 * @generated
35
	 */
36
	protected List createStyles(View view) {
37
		List styles = new ArrayList();
38
		return styles;
39
	}
40
}
(-)src/org/eclipse/uml2/diagram/component/part/UMLDiagramPreferenceInitializer.java (+17 lines)
Added Link Here
1
package org.eclipse.uml2.diagram.component.part;
2
3
import org.eclipse.gmf.runtime.diagram.ui.preferences.DiagramPreferenceInitializer;
4
import org.eclipse.jface.preference.IPreferenceStore;
5
6
/**
7
 * @generated
8
 */
9
public class UMLDiagramPreferenceInitializer extends DiagramPreferenceInitializer {
10
11
	/**
12
	 * @generated
13
	 */
14
	protected IPreferenceStore getPreferenceStore() {
15
		return org.eclipse.uml2.diagram.component.part.UMLDiagramEditorPlugin.getInstance().getPreferenceStore();
16
	}
17
}
(-)src/org/eclipse/uml2/diagram/component/navigator/UMLNavigatorGroup.java (+103 lines)
Added Link Here
1
package org.eclipse.uml2.diagram.component.navigator;
2
3
import java.util.Collection;
4
import java.util.LinkedList;
5
6
/**
7
 * @generated
8
 */
9
public class UMLNavigatorGroup extends UMLAbstractNavigatorItem {
10
11
	/**
12
	 * @generated
13
	 */
14
	private String myGroupName;
15
16
	/**
17
	 * @generated
18
	 */
19
	private String myIcon;
20
21
	/**
22
	 * @generated
23
	 */
24
	private String myModelID;
25
26
	/**
27
	 * @generated
28
	 */
29
	private Collection myChildren = new LinkedList();
30
31
	/**
32
	 * @generated
33
	 */
34
	UMLNavigatorGroup(String groupName, String icon, String modelID, Object parent) {
35
		super(parent);
36
		myGroupName = groupName;
37
		myIcon = icon;
38
		myModelID = modelID;
39
	}
40
41
	/**
42
	 * @generated
43
	 */
44
	public String getGroupName() {
45
		return myGroupName;
46
	}
47
48
	/**
49
	 * @generated
50
	 */
51
	public String getIcon() {
52
		return myIcon;
53
	}
54
55
	/**
56
	 * @generated
57
	 */
58
	public Object[] getChildren() {
59
		return myChildren.toArray();
60
	}
61
62
	/**
63
	 * @generated
64
	 */
65
	public void addChildren(Collection children) {
66
		myChildren.addAll(children);
67
	}
68
69
	/**
70
	 * @generated
71
	 */
72
	public void addChild(Object child) {
73
		myChildren.add(child);
74
	}
75
76
	/**
77
	 * @generated
78
	 */
79
	public boolean isEmpty() {
80
		return myChildren.size() == 0;
81
	}
82
83
	/**
84
	 * @generated
85
	 */
86
	public String getModelID() {
87
		return myModelID;
88
	}
89
90
	/**
91
	 * @generated
92
	 */
93
	public boolean equals(Object obj) {
94
		if (obj instanceof UMLNavigatorGroup) {
95
			UMLNavigatorGroup anotherGroup = (UMLNavigatorGroup) obj;
96
			if (getGroupName().equals(anotherGroup.getGroupName())) {
97
				return getParent().equals(anotherGroup.getParent());
98
			}
99
		}
100
		return super.equals(obj);
101
	}
102
103
}
(-)src/org/eclipse/uml2/diagram/component/edit/helpers/PackageEditHelper.java (+7 lines)
Added Link Here
1
package org.eclipse.uml2.diagram.component.edit.helpers;
2
3
/**
4
 * @generated
5
 */
6
public class PackageEditHelper extends UMLBaseEditHelper {
7
}
(-)src/org/eclipse/uml2/diagram/component/navigator/UMLNavigatorContentProvider.java (+409 lines)
Added Link Here
1
package org.eclipse.uml2.diagram.component.navigator;
2
3
import java.util.ArrayList;
4
import java.util.Collection;
5
import java.util.HashMap;
6
import java.util.HashSet;
7
import java.util.Iterator;
8
import java.util.List;
9
import java.util.Set;
10
11
import org.eclipse.core.resources.IFile;
12
13
import org.eclipse.emf.common.util.URI;
14
15
import org.eclipse.emf.ecore.resource.Resource;
16
import org.eclipse.emf.ecore.resource.ResourceSet;
17
18
import org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain;
19
20
import org.eclipse.gmf.runtime.emf.core.GMFEditingDomainFactory;
21
22
import org.eclipse.gmf.runtime.notation.Edge;
23
import org.eclipse.gmf.runtime.notation.Node;
24
import org.eclipse.gmf.runtime.notation.View;
25
26
import org.eclipse.jface.viewers.Viewer;
27
28
import org.eclipse.ui.IMemento;
29
30
import org.eclipse.ui.navigator.ICommonContentExtensionSite;
31
import org.eclipse.ui.navigator.ICommonContentProvider;
32
import org.eclipse.uml2.diagram.component.edit.parts.Artifact2EditPart;
33
import org.eclipse.uml2.diagram.component.edit.parts.ArtifactEditPart;
34
import org.eclipse.uml2.diagram.component.edit.parts.Class2EditPart;
35
import org.eclipse.uml2.diagram.component.edit.parts.ClassEditPart;
36
import org.eclipse.uml2.diagram.component.edit.parts.Component2EditPart;
37
import org.eclipse.uml2.diagram.component.edit.parts.ComponentEditPart;
38
import org.eclipse.uml2.diagram.component.edit.parts.Interface2EditPart;
39
import org.eclipse.uml2.diagram.component.edit.parts.InterfaceEditPart;
40
import org.eclipse.uml2.diagram.component.edit.parts.InterfaceRealizationEditPart;
41
import org.eclipse.uml2.diagram.component.edit.parts.PackageEditPart;
42
import org.eclipse.uml2.diagram.component.edit.parts.PortEditPart;
43
import org.eclipse.uml2.diagram.component.edit.parts.PortProvidedEditPart;
44
import org.eclipse.uml2.diagram.component.edit.parts.PortRequiredEditPart;
45
import org.eclipse.uml2.diagram.component.part.UMLVisualIDRegistry;
46
47
/**
48
 * @generated
49
 */
50
public class UMLNavigatorContentProvider implements ICommonContentProvider {
51
52
	/**
53
	 * @generated
54
	 */
55
	private static final Object[] EMPTY_ARRAY = new Object[0];
56
57
	/**
58
	 * @generated
59
	 */
60
	public void dispose() {
61
	}
62
63
	/**
64
	 * @generated
65
	 */
66
	public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
67
	}
68
69
	/**
70
	 * @generated
71
	 */
72
	public Object[] getElements(Object inputElement) {
73
		return getChildren(inputElement);
74
	}
75
76
	/**
77
	 * @generated
78
	 */
79
	public Object[] getChildren(Object parentElement) {
80
		if (parentElement instanceof UMLAbstractNavigatorItem) {
81
			UMLAbstractNavigatorItem abstractNavigatorItem = (UMLAbstractNavigatorItem) parentElement;
82
			if (!PackageEditPart.MODEL_ID.equals(abstractNavigatorItem.getModelID())) {
83
				return EMPTY_ARRAY;
84
			}
85
86
			if (abstractNavigatorItem instanceof UMLNavigatorItem) {
87
				UMLNavigatorItem navigatorItem = (UMLNavigatorItem) abstractNavigatorItem;
88
				switch (navigatorItem.getVisualID()) {
89
				case ComponentEditPart.VISUAL_ID: {
90
					Collection result = new ArrayList();
91
					result.addAll(getChildByType(navigatorItem.getView().getChildren(), UMLVisualIDRegistry.getType(Component2EditPart.VISUAL_ID), navigatorItem));
92
					result.addAll(getChildByType(navigatorItem.getView().getChildren(), UMLVisualIDRegistry.getType(PortEditPart.VISUAL_ID), navigatorItem));
93
					result.addAll(getChildByType(navigatorItem.getView().getChildren(), UMLVisualIDRegistry.getType(ArtifactEditPart.VISUAL_ID), navigatorItem));
94
					result.addAll(getChildByType(navigatorItem.getView().getChildren(), UMLVisualIDRegistry.getType(ClassEditPart.VISUAL_ID), navigatorItem));
95
					result.addAll(getChildByType(navigatorItem.getView().getChildren(), UMLVisualIDRegistry.getType(InterfaceEditPart.VISUAL_ID), navigatorItem));
96
					UMLNavigatorGroup outgoinglinks = new UMLNavigatorGroup("outgoing links", "icons/outgoingLinksNavigatorGroup.gif", PackageEditPart.MODEL_ID, navigatorItem);
97
					outgoinglinks.addChildren(getConnectedViews(navigatorItem.getView(), UMLVisualIDRegistry.getType(InterfaceRealizationEditPart.VISUAL_ID), true, outgoinglinks));
98
					if (!outgoinglinks.isEmpty()) {
99
						result.add(outgoinglinks);
100
					}
101
					return result.toArray();
102
				}
103
				case Interface2EditPart.VISUAL_ID: {
104
					Collection result = new ArrayList();
105
					UMLNavigatorGroup incominglinks = new UMLNavigatorGroup("incoming links", "icons/incomingLinksNavigatorGroup.gif", PackageEditPart.MODEL_ID, navigatorItem);
106
					incominglinks.addChildren(getConnectedViews(navigatorItem.getView(), UMLVisualIDRegistry.getType(InterfaceRealizationEditPart.VISUAL_ID), false, incominglinks));
107
					incominglinks.addChildren(getConnectedViews(navigatorItem.getView(), UMLVisualIDRegistry.getType(PortProvidedEditPart.VISUAL_ID), false, incominglinks));
108
					incominglinks.addChildren(getConnectedViews(navigatorItem.getView(), UMLVisualIDRegistry.getType(PortRequiredEditPart.VISUAL_ID), false, incominglinks));
109
					if (!incominglinks.isEmpty()) {
110
						result.add(incominglinks);
111
					}
112
					return result.toArray();
113
				}
114
				case Class2EditPart.VISUAL_ID: {
115
					Collection result = new ArrayList();
116
					result.addAll(getChildByType(navigatorItem.getView().getChildren(), UMLVisualIDRegistry.getType(PortEditPart.VISUAL_ID), navigatorItem));
117
					UMLNavigatorGroup outgoinglinks = new UMLNavigatorGroup("outgoing links", "icons/outgoingLinksNavigatorGroup.gif", PackageEditPart.MODEL_ID, navigatorItem);
118
					outgoinglinks.addChildren(getConnectedViews(navigatorItem.getView(), UMLVisualIDRegistry.getType(InterfaceRealizationEditPart.VISUAL_ID), true, outgoinglinks));
119
					if (!outgoinglinks.isEmpty()) {
120
						result.add(outgoinglinks);
121
					}
122
					return result.toArray();
123
				}
124
				case Component2EditPart.VISUAL_ID: {
125
					Collection result = new ArrayList();
126
					result.addAll(getChildByType(navigatorItem.getView().getChildren(), UMLVisualIDRegistry.getType(Component2EditPart.VISUAL_ID), navigatorItem));
127
					result.addAll(getChildByType(navigatorItem.getView().getChildren(), UMLVisualIDRegistry.getType(PortEditPart.VISUAL_ID), navigatorItem));
128
					result.addAll(getChildByType(navigatorItem.getView().getChildren(), UMLVisualIDRegistry.getType(ArtifactEditPart.VISUAL_ID), navigatorItem));
129
					result.addAll(getChildByType(navigatorItem.getView().getChildren(), UMLVisualIDRegistry.getType(ClassEditPart.VISUAL_ID), navigatorItem));
130
					result.addAll(getChildByType(navigatorItem.getView().getChildren(), UMLVisualIDRegistry.getType(InterfaceEditPart.VISUAL_ID), navigatorItem));
131
					UMLNavigatorGroup outgoinglinks = new UMLNavigatorGroup("outgoing links", "icons/outgoingLinksNavigatorGroup.gif", PackageEditPart.MODEL_ID, navigatorItem);
132
					outgoinglinks.addChildren(getConnectedViews(navigatorItem.getView(), UMLVisualIDRegistry.getType(InterfaceRealizationEditPart.VISUAL_ID), true, outgoinglinks));
133
					if (!outgoinglinks.isEmpty()) {
134
						result.add(outgoinglinks);
135
					}
136
					return result.toArray();
137
				}
138
				case PortEditPart.VISUAL_ID: {
139
					Collection result = new ArrayList();
140
					UMLNavigatorGroup outgoinglinks = new UMLNavigatorGroup("outgoing links", "icons/outgoingLinksNavigatorGroup.gif", PackageEditPart.MODEL_ID, navigatorItem);
141
					outgoinglinks.addChildren(getConnectedViews(navigatorItem.getView(), UMLVisualIDRegistry.getType(PortProvidedEditPart.VISUAL_ID), true, outgoinglinks));
142
					outgoinglinks.addChildren(getConnectedViews(navigatorItem.getView(), UMLVisualIDRegistry.getType(PortRequiredEditPart.VISUAL_ID), true, outgoinglinks));
143
					if (!outgoinglinks.isEmpty()) {
144
						result.add(outgoinglinks);
145
					}
146
					return result.toArray();
147
				}
148
				case ClassEditPart.VISUAL_ID: {
149
					Collection result = new ArrayList();
150
					result.addAll(getChildByType(navigatorItem.getView().getChildren(), UMLVisualIDRegistry.getType(PortEditPart.VISUAL_ID), navigatorItem));
151
					UMLNavigatorGroup outgoinglinks = new UMLNavigatorGroup("outgoing links", "icons/outgoingLinksNavigatorGroup.gif", PackageEditPart.MODEL_ID, navigatorItem);
152
					outgoinglinks.addChildren(getConnectedViews(navigatorItem.getView(), UMLVisualIDRegistry.getType(InterfaceRealizationEditPart.VISUAL_ID), true, outgoinglinks));
153
					if (!outgoinglinks.isEmpty()) {
154
						result.add(outgoinglinks);
155
					}
156
					return result.toArray();
157
				}
158
				case InterfaceEditPart.VISUAL_ID: {
159
					Collection result = new ArrayList();
160
					UMLNavigatorGroup incominglinks = new UMLNavigatorGroup("incoming links", "icons/incomingLinksNavigatorGroup.gif", PackageEditPart.MODEL_ID, navigatorItem);
161
					incominglinks.addChildren(getConnectedViews(navigatorItem.getView(), UMLVisualIDRegistry.getType(InterfaceRealizationEditPart.VISUAL_ID), false, incominglinks));
162
					incominglinks.addChildren(getConnectedViews(navigatorItem.getView(), UMLVisualIDRegistry.getType(PortProvidedEditPart.VISUAL_ID), false, incominglinks));
163
					incominglinks.addChildren(getConnectedViews(navigatorItem.getView(), UMLVisualIDRegistry.getType(PortRequiredEditPart.VISUAL_ID), false, incominglinks));
164
					if (!incominglinks.isEmpty()) {
165
						result.add(incominglinks);
166
					}
167
					return result.toArray();
168
				}
169
				case PackageEditPart.VISUAL_ID: {
170
					Collection result = new ArrayList();
171
					result.addAll(getChildByType(navigatorItem.getView().getChildren(), UMLVisualIDRegistry.getType(ComponentEditPart.VISUAL_ID), navigatorItem));
172
					result.addAll(getChildByType(navigatorItem.getView().getChildren(), UMLVisualIDRegistry.getType(Artifact2EditPart.VISUAL_ID), navigatorItem));
173
					result.addAll(getChildByType(navigatorItem.getView().getChildren(), UMLVisualIDRegistry.getType(Interface2EditPart.VISUAL_ID), navigatorItem));
174
					result.addAll(getChildByType(navigatorItem.getView().getChildren(), UMLVisualIDRegistry.getType(Class2EditPart.VISUAL_ID), navigatorItem));
175
					UMLNavigatorGroup links = new UMLNavigatorGroup("links", "icons/linksNavigatorGroup.gif", PackageEditPart.MODEL_ID, navigatorItem);
176
					links.addChildren(getViewByType(navigatorItem.getView().getDiagram().getEdges(), UMLVisualIDRegistry.getType(InterfaceRealizationEditPart.VISUAL_ID), links));
177
					links.addChildren(getViewByType(navigatorItem.getView().getDiagram().getEdges(), UMLVisualIDRegistry.getType(PortProvidedEditPart.VISUAL_ID), links));
178
					links.addChildren(getViewByType(navigatorItem.getView().getDiagram().getEdges(), UMLVisualIDRegistry.getType(PortRequiredEditPart.VISUAL_ID), links));
179
					if (!links.isEmpty()) {
180
						result.add(links);
181
					}
182
					return result.toArray();
183
				}
184
				case InterfaceRealizationEditPart.VISUAL_ID: {
185
					Collection result = new ArrayList();
186
					UMLNavigatorGroup target = new UMLNavigatorGroup("target", "icons/linkTargetNavigatorGroup.gif", PackageEditPart.MODEL_ID, navigatorItem);
187
					target.addChildren(getConnectedViews(navigatorItem.getView(), UMLVisualIDRegistry.getType(Interface2EditPart.VISUAL_ID), true, target));
188
					target.addChildren(getConnectedViews(navigatorItem.getView(), UMLVisualIDRegistry.getType(InterfaceEditPart.VISUAL_ID), true, target));
189
					UMLNavigatorGroup source = new UMLNavigatorGroup("source", "icons/linkSourceNavigatorGroup.gif", PackageEditPart.MODEL_ID, navigatorItem);
190
					source.addChildren(getConnectedViews(navigatorItem.getView(), UMLVisualIDRegistry.getType(ComponentEditPart.VISUAL_ID), false, source));
191
					source.addChildren(getConnectedViews(navigatorItem.getView(), UMLVisualIDRegistry.getType(Class2EditPart.VISUAL_ID), false, source));
192
					source.addChildren(getConnectedViews(navigatorItem.getView(), UMLVisualIDRegistry.getType(Component2EditPart.VISUAL_ID), false, source));
193
					source.addChildren(getConnectedViews(navigatorItem.getView(), UMLVisualIDRegistry.getType(ClassEditPart.VISUAL_ID), false, source));
194
					if (!target.isEmpty()) {
195
						result.add(target);
196
					}
197
					if (!source.isEmpty()) {
198
						result.add(source);
199
					}
200
					return result.toArray();
201
				}
202
				case PortProvidedEditPart.VISUAL_ID: {
203
					Collection result = new ArrayList();
204
					UMLNavigatorGroup target = new UMLNavigatorGroup("target", "icons/linkTargetNavigatorGroup.gif", PackageEditPart.MODEL_ID, navigatorItem);
205
					target.addChildren(getConnectedViews(navigatorItem.getView(), UMLVisualIDRegistry.getType(Interface2EditPart.VISUAL_ID), true, target));
206
					target.addChildren(getConnectedViews(navigatorItem.getView(), UMLVisualIDRegistry.getType(InterfaceEditPart.VISUAL_ID), true, target));
207
					UMLNavigatorGroup source = new UMLNavigatorGroup("source", "icons/linkSourceNavigatorGroup.gif", PackageEditPart.MODEL_ID, navigatorItem);
208
					source.addChildren(getConnectedViews(navigatorItem.getView(), UMLVisualIDRegistry.getType(PortEditPart.VISUAL_ID), false, source));
209
					if (!target.isEmpty()) {
210
						result.add(target);
211
					}
212
					if (!source.isEmpty()) {
213
						result.add(source);
214
					}
215
					return result.toArray();
216
				}
217
				case PortRequiredEditPart.VISUAL_ID: {
218
					Collection result = new ArrayList();
219
					UMLNavigatorGroup target = new UMLNavigatorGroup("target", "icons/linkTargetNavigatorGroup.gif", PackageEditPart.MODEL_ID, navigatorItem);
220
					target.addChildren(getConnectedViews(navigatorItem.getView(), UMLVisualIDRegistry.getType(Interface2EditPart.VISUAL_ID), true, target));
221
					target.addChildren(getConnectedViews(navigatorItem.getView(), UMLVisualIDRegistry.getType(InterfaceEditPart.VISUAL_ID), true, target));
222
					UMLNavigatorGroup source = new UMLNavigatorGroup("source", "icons/linkSourceNavigatorGroup.gif", PackageEditPart.MODEL_ID, navigatorItem);
223
					source.addChildren(getConnectedViews(navigatorItem.getView(), UMLVisualIDRegistry.getType(PortEditPart.VISUAL_ID), false, source));
224
					if (!target.isEmpty()) {
225
						result.add(target);
226
					}
227
					if (!source.isEmpty()) {
228
						result.add(source);
229
					}
230
					return result.toArray();
231
				}
232
				}
233
			} else if (abstractNavigatorItem instanceof UMLNavigatorGroup) {
234
				UMLNavigatorGroup group = (UMLNavigatorGroup) parentElement;
235
				return group.getChildren();
236
			}
237
		} else if (parentElement instanceof IFile) {
238
			IFile file = (IFile) parentElement;
239
			AdapterFactoryEditingDomain editingDomain = (AdapterFactoryEditingDomain) GMFEditingDomainFactory.INSTANCE.createEditingDomain();
240
			editingDomain.setResourceToReadOnlyMap(new HashMap() {
241
242
				public Object get(Object key) {
243
					if (!containsKey(key)) {
244
						put(key, Boolean.TRUE);
245
					}
246
					return super.get(key);
247
				}
248
			});
249
			ResourceSet resourceSet = editingDomain.getResourceSet();
250
251
			URI fileURI = URI.createPlatformResourceURI(file.getFullPath().toString());
252
			Resource resource = resourceSet.getResource(fileURI, true);
253
254
			Collection result = new ArrayList();
255
			result.addAll(getViewByType(resource.getContents(), PackageEditPart.MODEL_ID, file));
256
			return result.toArray();
257
		}
258
		return EMPTY_ARRAY;
259
	}
260
261
	/**
262
	 * @generated
263
	 */
264
	public Object getParent(Object element) {
265
		if (element instanceof UMLAbstractNavigatorItem) {
266
			UMLAbstractNavigatorItem abstractNavigatorItem = (UMLAbstractNavigatorItem) element;
267
			if (!PackageEditPart.MODEL_ID.equals(abstractNavigatorItem.getModelID())) {
268
				return null;
269
			}
270
			return abstractNavigatorItem.getParent();
271
		}
272
		return null;
273
	}
274
275
	/**
276
	 * @generated
277
	 */
278
	public boolean hasChildren(Object element) {
279
		return element instanceof IFile || getChildren(element).length > 0;
280
	}
281
282
	/**
283
	 * @generated
284
	 */
285
	public void init(ICommonContentExtensionSite aConfig) {
286
	}
287
288
	/**
289
	 * @generated
290
	 */
291
	public void restoreState(IMemento aMemento) {
292
	}
293
294
	/**
295
	 * @generated
296
	 */
297
	public void saveState(IMemento aMemento) {
298
	}
299
300
	/**
301
	 * @generated
302
	 */
303
	private Collection getViewByType(Collection childViews, String type, Object parent) {
304
		Collection result = new ArrayList();
305
		for (Iterator it = childViews.iterator(); it.hasNext();) {
306
			Object next = it.next();
307
			if (false == next instanceof View) {
308
				continue;
309
			}
310
			View nextView = (View) next;
311
			if (type.equals(nextView.getType())) {
312
				result.add(new UMLNavigatorItem(nextView, parent));
313
			}
314
		}
315
		return result;
316
	}
317
318
	/**
319
	 * @generated
320
	 */
321
	private Collection getChildByType(Collection childViews, String type, Object parent) {
322
		Collection result = new ArrayList();
323
		List children = new ArrayList(childViews);
324
		for (int i = 0; i < children.size(); i++) {
325
			if (false == children.get(i) instanceof View) {
326
				continue;
327
			}
328
			View nextChild = (View) children.get(i);
329
			if (type.equals(nextChild.getType())) {
330
				result.add(new UMLNavigatorItem(nextChild, parent));
331
			} else if (!stopGettingChildren(nextChild, type)) {
332
				children.addAll(nextChild.getChildren());
333
			}
334
		}
335
		return result;
336
	}
337
338
	/**
339
	 * @generated
340
	 */
341
	private boolean stopGettingChildren(View child, String type) {
342
		return false;
343
	}
344
345
	/**
346
	 * @generated
347
	 */
348
	private Collection getConnectedViews(View rootView, String type, boolean isOutTarget, Object parent) {
349
		Collection result = new ArrayList();
350
		List connectedViews = new ArrayList();
351
		connectedViews.add(rootView);
352
		Set visitedViews = new HashSet();
353
		for (int i = 0; i < connectedViews.size(); i++) {
354
			View nextView = (View) connectedViews.get(i);
355
			if (visitedViews.contains(nextView)) {
356
				continue;
357
			}
358
			visitedViews.add(nextView);
359
			if (type.equals(nextView.getType()) && nextView != rootView) {
360
				result.add(new UMLNavigatorItem(nextView, parent));
361
			} else {
362
				if (isOutTarget && !stopGettingOutTarget(nextView, rootView, type)) {
363
					connectedViews.addAll(nextView.getSourceEdges());
364
					if (nextView instanceof Edge) {
365
						connectedViews.add(((Edge) nextView).getTarget());
366
					}
367
				}
368
				if (!isOutTarget && !stopGettingInSource(nextView, rootView, type)) {
369
					connectedViews.addAll(nextView.getTargetEdges());
370
					if (nextView instanceof Edge) {
371
						connectedViews.add(((Edge) nextView).getSource());
372
					}
373
				}
374
			}
375
		}
376
		return result;
377
	}
378
379
	/**
380
	 * @generated
381
	 */
382
	private boolean stopGettingInSource(View nextView, View rootView, String type) {
383
		return !isOneHopConnection(nextView, rootView);
384
	}
385
386
	/**
387
	 * @generated
388
	 */
389
	private boolean stopGettingOutTarget(View nextView, View rootView, String type) {
390
		return !isOneHopConnection(nextView, rootView);
391
	}
392
393
	/**
394
	 * @generated
395
	 */
396
	private boolean isOneHopConnection(View targetView, View sourceView) {
397
		if (sourceView == targetView) {
398
			return true;
399
		}
400
		if (sourceView instanceof Node) {
401
			return targetView instanceof Edge;
402
		}
403
		if (sourceView instanceof Edge) {
404
			return targetView instanceof Node;
405
		}
406
		return false;
407
	}
408
409
}
(-)src/org/eclipse/uml2/diagram/component/edit/commands/UMLReorientConnectionViewCommand.java (+69 lines)
Added Link Here
1
package org.eclipse.uml2.diagram.component.edit.commands;
2
3
import java.util.List;
4
5
import org.eclipse.core.runtime.IAdaptable;
6
import org.eclipse.core.runtime.IProgressMonitor;
7
import org.eclipse.emf.transaction.TransactionalEditingDomain;
8
import org.eclipse.gmf.runtime.common.core.command.CommandResult;
9
import org.eclipse.gmf.runtime.emf.commands.core.command.AbstractTransactionalCommand;
10
import org.eclipse.gmf.runtime.notation.Edge;
11
import org.eclipse.gmf.runtime.notation.View;
12
13
/**
14
 * @generated
15
 */
16
public class UMLReorientConnectionViewCommand extends AbstractTransactionalCommand {
17
18
	/**
19
	 * @generated
20
	 */
21
	private IAdaptable edgeAdaptor;
22
23
	/**
24
	 * @generated
25
	 */
26
	public UMLReorientConnectionViewCommand(TransactionalEditingDomain editingDomain, String label) {
27
		super(editingDomain, label, null);
28
	}
29
30
	/**
31
	 * @generated
32
	 */
33
	public List getAffectedFiles() {
34
		View view = (View) edgeAdaptor.getAdapter(View.class);
35
		if (view != null) {
36
			return getWorkspaceFiles(view);
37
		}
38
		return super.getAffectedFiles();
39
	}
40
41
	/**
42
	 * @generated
43
	 */
44
	public IAdaptable getEdgeAdaptor() {
45
		return edgeAdaptor;
46
	}
47
48
	/**
49
	 * @generated
50
	 */
51
	public void setEdgeAdaptor(IAdaptable edgeAdaptor) {
52
		this.edgeAdaptor = edgeAdaptor;
53
	}
54
55
	/**
56
	 * @generated
57
	 */
58
	protected CommandResult doExecuteWithResult(IProgressMonitor progressMonitor, IAdaptable info) {
59
		assert null != edgeAdaptor : "Null child in UMLReorientConnectionViewCommand"; //$NON-NLS-1$
60
		Edge edge = (Edge) getEdgeAdaptor().getAdapter(Edge.class);
61
		assert null != edge : "Null edge in UMLReorientConnectionViewCommand"; //$NON-NLS-1$
62
63
		View tempView = edge.getSource();
64
		edge.setSource(edge.getTarget());
65
		edge.setTarget(tempView);
66
67
		return CommandResult.newOKCommandResult();
68
	}
69
}
(-)src/org/eclipse/uml2/diagram/component/view/factories/PortProvidedViewFactory.java (+52 lines)
Added Link Here
1
package org.eclipse.uml2.diagram.component.view.factories;
2
3
import java.util.ArrayList;
4
import java.util.List;
5
6
import org.eclipse.core.runtime.IAdaptable;
7
8
import org.eclipse.emf.ecore.EAnnotation;
9
import org.eclipse.emf.ecore.EcoreFactory;
10
11
import org.eclipse.gmf.runtime.diagram.ui.view.factories.ConnectionViewFactory;
12
13
import org.eclipse.gmf.runtime.notation.NotationFactory;
14
import org.eclipse.gmf.runtime.notation.View;
15
16
import org.eclipse.uml2.diagram.component.edit.parts.PackageEditPart;
17
import org.eclipse.uml2.diagram.component.part.UMLVisualIDRegistry;
18
19
/**
20
 * @generated
21
 */
22
public class PortProvidedViewFactory extends ConnectionViewFactory {
23
24
	/**
25
	 * @generated 
26
	 */
27
	protected List createStyles(View view) {
28
		List styles = new ArrayList();
29
		styles.add(NotationFactory.eINSTANCE.createRoutingStyle());
30
		styles.add(NotationFactory.eINSTANCE.createFontStyle());
31
		styles.add(NotationFactory.eINSTANCE.createLineStyle());
32
		return styles;
33
	}
34
35
	/**
36
	 * @generated
37
	 */
38
	protected void decorateView(View containerView, View view, IAdaptable semanticAdapter, String semanticHint, int index, boolean persisted) {
39
		if (semanticHint == null) {
40
			semanticHint = UMLVisualIDRegistry.getType(org.eclipse.uml2.diagram.component.edit.parts.PortProvidedEditPart.VISUAL_ID);
41
			view.setType(semanticHint);
42
		}
43
		super.decorateView(containerView, view, semanticAdapter, semanticHint, index, persisted);
44
		if (!PackageEditPart.MODEL_ID.equals(UMLVisualIDRegistry.getModelID(containerView))) {
45
			EAnnotation shortcutAnnotation = EcoreFactory.eINSTANCE.createEAnnotation();
46
			shortcutAnnotation.setSource("Shortcut"); //$NON-NLS-1$
47
			shortcutAnnotation.getDetails().put("modelID", PackageEditPart.MODEL_ID); //$NON-NLS-1$
48
			view.getEAnnotations().add(shortcutAnnotation);
49
		}
50
	}
51
52
}
(-)src/org/eclipse/uml2/diagram/component/edit/parts/Interface2EditPart.java (+312 lines)
Added Link Here
1
package org.eclipse.uml2.diagram.component.edit.parts;
2
3
import java.util.Iterator;
4
5
import org.eclipse.draw2d.IFigure;
6
import org.eclipse.draw2d.PositionConstants;
7
import org.eclipse.draw2d.StackLayout;
8
9
import org.eclipse.gef.EditPart;
10
import org.eclipse.gef.EditPolicy;
11
import org.eclipse.gef.GraphicalEditPart;
12
import org.eclipse.gef.Request;
13
14
import org.eclipse.gef.commands.Command;
15
16
import org.eclipse.gef.editparts.LayerManager;
17
18
import org.eclipse.gef.editpolicies.LayoutEditPolicy;
19
import org.eclipse.gef.editpolicies.NonResizableEditPolicy;
20
import org.eclipse.gef.editpolicies.ResizableEditPolicy;
21
22
import org.eclipse.gef.requests.CreateRequest;
23
24
import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;
25
import org.eclipse.gmf.runtime.diagram.ui.editparts.ShapeNodeEditPart;
26
27
import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;
28
29
import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout;
30
31
import org.eclipse.gmf.runtime.gef.ui.figures.DefaultSizeNodeFigure;
32
import org.eclipse.gmf.runtime.gef.ui.figures.NodeFigure;
33
34
import org.eclipse.gmf.runtime.notation.View;
35
36
import org.eclipse.uml2.diagram.component.edit.policies.Interface2ItemSemanticEditPolicy;
37
import org.eclipse.uml2.diagram.component.edit.policies.UMLExtNodeLabelHostLayoutEditPolicy;
38
import org.eclipse.uml2.diagram.component.part.UMLVisualIDRegistry;
39
40
/**
41
 * @generated
42
 */
43
public class Interface2EditPart extends ShapeNodeEditPart {
44
45
	/**
46
	 * @generated
47
	 */
48
	public static final int VISUAL_ID = 2003;
49
50
	/**
51
	 * @generated
52
	 */
53
	protected IFigure contentPane;
54
55
	/**
56
	 * @generated
57
	 */
58
	protected IFigure primaryShape;
59
60
	/**
61
	 * @generated
62
	 */
63
	public Interface2EditPart(View view) {
64
		super(view);
65
	}
66
67
	/**
68
	 * @generated
69
	 */
70
	protected void createDefaultEditPolicies() {
71
		super.createDefaultEditPolicies();
72
		installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE, new Interface2ItemSemanticEditPolicy());
73
		installEditPolicy(EditPolicy.LAYOUT_ROLE, createLayoutEditPolicy());
74
75
	}
76
77
	/**
78
	 * @generated
79
	 */
80
	protected LayoutEditPolicy createLayoutEditPolicy() {
81
		LayoutEditPolicy lep = new LayoutEditPolicy() {
82
83
			protected void decorateChild(EditPart child) {
84
				if (isExternalLabel(child)) {
85
					return;
86
				}
87
				super.decorateChild(child);
88
			}
89
90
			protected EditPolicy createChildEditPolicy(EditPart child) {
91
				EditPolicy result = child.getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);
92
				if (result == null) {
93
					result = new NonResizableEditPolicy();
94
				}
95
				return result;
96
			}
97
98
			protected Command getMoveChildrenCommand(Request request) {
99
				return null;
100
			}
101
102
			protected Command getCreateCommand(CreateRequest request) {
103
				return null;
104
			}
105
		};
106
		UMLExtNodeLabelHostLayoutEditPolicy xlep = new UMLExtNodeLabelHostLayoutEditPolicy() {
107
108
			protected boolean isExternalLabel(EditPart editPart) {
109
				return Interface2EditPart.this.isExternalLabel(editPart);
110
			}
111
		};
112
		xlep.setRealLayoutEditPolicy(lep);
113
		return xlep;
114
	}
115
116
	/**
117
	 * @generated
118
	 */
119
	protected IFigure createNodeShape() {
120
		ProvidedInterfaceCircleFigure figure = new ProvidedInterfaceCircleFigure();
121
		return primaryShape = figure;
122
	}
123
124
	/**
125
	 * @generated
126
	 */
127
	public ProvidedInterfaceCircleFigure getPrimaryShape() {
128
		return (ProvidedInterfaceCircleFigure) primaryShape;
129
	}
130
131
	/**
132
	 * @generated 
133
	 */
134
	protected IFigure getContentPaneFor(IGraphicalEditPart editPart) {
135
		if (isExternalLabel(editPart)) {
136
			return getExternalLabelsContainer();
137
		}
138
139
		return super.getContentPaneFor(editPart);
140
	}
141
142
	/**
143
	 * @generated
144
	 */
145
	protected NodeFigure createNodePlate() {
146
		DefaultSizeNodeFigure result = new DefaultSizeNodeFigure(getMapMode().DPtoLP(15), getMapMode().DPtoLP(15));
147
		return result;
148
	}
149
150
	/**
151
	 * @generated
152
	 */
153
	public EditPolicy getPrimaryDragEditPolicy() {
154
		EditPolicy result = super.getPrimaryDragEditPolicy();
155
		if (result instanceof ResizableEditPolicy) {
156
			ResizableEditPolicy ep = (ResizableEditPolicy) result;
157
158
			ep.setResizeDirections(PositionConstants.NONE);
159
160
		}
161
		return result;
162
	}
163
164
	/**
165
	 * Creates figure for this edit part.
166
	 * 
167
	 * Body of this method does not depend on settings in generation model
168
	 * so you may safely remove <i>generated</i> tag and modify it.
169
	 * 
170
	 * @generated
171
	 */
172
	protected NodeFigure createNodeFigure() {
173
		NodeFigure figure = createNodePlate();
174
		figure.setLayoutManager(new StackLayout());
175
		IFigure shape = createNodeShape();
176
		figure.add(shape);
177
		contentPane = setupContentPane(shape);
178
		return figure;
179
	}
180
181
	/**
182
	 * Default implementation treats passed figure as content pane.
183
	 * Respects layout one may have set for generated figure.
184
	 * @param nodeShape instance of generated figure class
185
	 * @generated
186
	 */
187
	protected IFigure setupContentPane(IFigure nodeShape) {
188
		if (nodeShape.getLayoutManager() == null) {
189
			ConstrainedToolbarLayout layout = new ConstrainedToolbarLayout();
190
			layout.setSpacing(getMapMode().DPtoLP(5));
191
			nodeShape.setLayoutManager(layout);
192
		}
193
		return nodeShape; // use nodeShape itself as contentPane
194
	}
195
196
	/**
197
	 * @generated
198
	 */
199
	public IFigure getContentPane() {
200
		if (contentPane != null) {
201
			return contentPane;
202
		}
203
		return super.getContentPane();
204
	}
205
206
	/**
207
	 * @generated
208
	 */
209
	public EditPart getPrimaryChildEditPart() {
210
		return getChildBySemanticHint(UMLVisualIDRegistry.getType(InterfaceName2EditPart.VISUAL_ID));
211
	}
212
213
	/**
214
	 * @generated
215
	 */
216
	protected boolean isExternalLabel(EditPart childEditPart) {
217
		if (childEditPart instanceof InterfaceName2EditPart) {
218
			return true;
219
		}
220
		return false;
221
	}
222
223
	/**
224
	 * @generated
225
	 */
226
	protected IFigure getExternalLabelsContainer() {
227
		LayerManager root = (LayerManager) getRoot();
228
		return root.getLayer(UMLEditPartFactory.EXTERNAL_NODE_LABELS_LAYER);
229
	}
230
231
	/**
232
	 * @generated
233
	 */
234
	protected void addChildVisual(EditPart childEditPart, int index) {
235
		if (isExternalLabel(childEditPart)) {
236
			IFigure labelFigure = ((GraphicalEditPart) childEditPart).getFigure();
237
			getExternalLabelsContainer().add(labelFigure);
238
			return;
239
		}
240
		super.addChildVisual(childEditPart, -1);
241
	}
242
243
	/**
244
	 * @generated
245
	 */
246
	protected void removeChildVisual(EditPart childEditPart) {
247
		if (isExternalLabel(childEditPart)) {
248
			IFigure labelFigure = ((GraphicalEditPart) childEditPart).getFigure();
249
			getExternalLabelsContainer().remove(labelFigure);
250
			return;
251
		}
252
		super.removeChildVisual(childEditPart);
253
	}
254
255
	/**
256
	 * @generated
257
	 */
258
	public void removeNotify() {
259
		for (Iterator it = getChildren().iterator(); it.hasNext();) {
260
			EditPart childEditPart = (EditPart) it.next();
261
			if (isExternalLabel(childEditPart)) {
262
				IFigure labelFigure = ((GraphicalEditPart) childEditPart).getFigure();
263
				getExternalLabelsContainer().remove(labelFigure);
264
			}
265
		}
266
		super.removeNotify();
267
	}
268
269
	/**
270
	 * @generated
271
	 */
272
	public class ProvidedInterfaceCircleFigure extends org.eclipse.draw2d.Ellipse {
273
274
		/**
275
		 * @generated
276
		 */
277
		public ProvidedInterfaceCircleFigure() {
278
279
			this.setPreferredSize(getMapMode().DPtoLP(15), getMapMode().DPtoLP(15));
280
			this.setMaximumSize(new org.eclipse.draw2d.geometry.Dimension(getMapMode().DPtoLP(15), getMapMode().DPtoLP(15)));
281
			this.setMinimumSize(new org.eclipse.draw2d.geometry.Dimension(getMapMode().DPtoLP(15), getMapMode().DPtoLP(15)));
282
			createContents();
283
		}
284
285
		/**
286
		 * @generated
287
		 */
288
		private void createContents() {
289
		}
290
291
		/**
292
		 * @generated
293
		 */
294
		private boolean myUseLocalCoordinates = false;
295
296
		/**
297
		 * @generated
298
		 */
299
		protected boolean useLocalCoordinates() {
300
			return myUseLocalCoordinates;
301
		}
302
303
		/**
304
		 * @generated
305
		 */
306
		protected void setUseLocalCoordinates(boolean useLocalCoordinates) {
307
			myUseLocalCoordinates = useLocalCoordinates;
308
		}
309
310
	}
311
312
}
(-)src/org/eclipse/uml2/diagram/component/providers/UMLElementTypes.java (+520 lines)
Added Link Here
1
package org.eclipse.uml2.diagram.component.providers;
2
3
import java.util.HashSet;
4
import java.util.IdentityHashMap;
5
import java.util.Map;
6
import java.util.Set;
7
import org.eclipse.core.runtime.IAdaptable;
8
import org.eclipse.emf.ecore.EClass;
9
import org.eclipse.emf.ecore.ENamedElement;
10
import org.eclipse.emf.ecore.EStructuralFeature;
11
import org.eclipse.gmf.runtime.emf.type.core.ElementTypeRegistry;
12
import org.eclipse.gmf.runtime.emf.type.core.IElementType;
13
import org.eclipse.jface.resource.ImageDescriptor;
14
import org.eclipse.jface.resource.ImageRegistry;
15
import org.eclipse.swt.graphics.Image;
16
import java.util.ArrayList;
17
import java.util.Collection;
18
import java.util.List;
19
20
import org.eclipse.emf.ecore.EObject;
21
22
import org.eclipse.uml2.diagram.component.expressions.UMLAbstractExpression;
23
import org.eclipse.uml2.diagram.component.expressions.UMLOCLFactory;
24
import org.eclipse.uml2.diagram.component.part.UMLDiagramEditorPlugin;
25
import org.eclipse.uml2.uml.UMLPackage;
26
27
/**
28
 * @generated
29
 */
30
public class UMLElementTypes {
31
32
	/**
33
	 * @generated
34
	 */
35
	private UMLElementTypes() {
36
	}
37
38
	/**
39
	 * @generated
40
	 */
41
	private static Map elements;
42
43
	/**
44
	 * @generated
45
	 */
46
	private static ImageRegistry imageRegistry;
47
48
	/**
49
	 * @generated
50
	 */
51
	private static ImageRegistry getImageRegistry() {
52
		if (imageRegistry == null) {
53
			imageRegistry = new ImageRegistry();
54
		}
55
		return imageRegistry;
56
	}
57
58
	/**
59
	 * @generated
60
	 */
61
	private static String getImageRegistryKey(ENamedElement element) {
62
		return element.getName();
63
	}
64
65
	/**
66
	 * @generated
67
	 */
68
	private static ImageDescriptor getProvidedImageDescriptor(ENamedElement element) {
69
		if (element instanceof EStructuralFeature) {
70
			element = ((EStructuralFeature) element).getEContainingClass();
71
		}
72
		if (element instanceof EClass) {
73
			EClass eClass = (EClass) element;
74
			if (!eClass.isAbstract()) {
75
				return UMLDiagramEditorPlugin.getInstance().getItemImageDescriptor(eClass.getEPackage().getEFactoryInstance().create(eClass));
76
			}
77
		}
78
		// TODO : support structural features
79
		return null;
80
	}
81
82
	/**
83
	 * @generated
84
	 */
85
	public static ImageDescriptor getImageDescriptor(ENamedElement element) {
86
		String key = getImageRegistryKey(element);
87
		ImageDescriptor imageDescriptor = getImageRegistry().getDescriptor(key);
88
		if (imageDescriptor == null) {
89
			imageDescriptor = getProvidedImageDescriptor(element);
90
			if (imageDescriptor == null) {
91
				imageDescriptor = ImageDescriptor.getMissingImageDescriptor();
92
			}
93
			getImageRegistry().put(key, imageDescriptor);
94
		}
95
		return imageDescriptor;
96
	}
97
98
	/**
99
	 * @generated
100
	 */
101
	public static Image getImage(ENamedElement element) {
102
		String key = getImageRegistryKey(element);
103
		Image image = getImageRegistry().get(key);
104
		if (image == null) {
105
			ImageDescriptor imageDescriptor = getProvidedImageDescriptor(element);
106
			if (imageDescriptor == null) {
107
				imageDescriptor = ImageDescriptor.getMissingImageDescriptor();
108
			}
109
			getImageRegistry().put(key, imageDescriptor);
110
			image = getImageRegistry().get(key);
111
		}
112
		return image;
113
	}
114
115
	/**
116
	 * @generated
117
	 */
118
	public static ImageDescriptor getImageDescriptor(IAdaptable hint) {
119
		ENamedElement element = getElement(hint);
120
		if (element == null) {
121
			return null;
122
		}
123
		return getImageDescriptor(element);
124
	}
125
126
	/**
127
	 * @generated
128
	 */
129
	public static Image getImage(IAdaptable hint) {
130
		ENamedElement element = getElement(hint);
131
		if (element == null) {
132
			return null;
133
		}
134
		return getImage(element);
135
	}
136
137
	/**
138
	 * Returns 'type' of the ecore object associated with the hint.
139
	 * 
140
	 * @generated
141
	 */
142
	public static ENamedElement getElement(IAdaptable hint) {
143
		Object type = hint.getAdapter(IElementType.class);
144
		if (elements == null) {
145
			elements = new IdentityHashMap();
146
			elements.put(Package_1000, UMLPackage.eINSTANCE.getPackage());
147
			elements.put(Component_3001, UMLPackage.eINSTANCE.getComponent());
148
			elements.put(Port_3002, UMLPackage.eINSTANCE.getPort());
149
			elements.put(Artifact_3003, UMLPackage.eINSTANCE.getArtifact());
150
			elements.put(Class_3004, UMLPackage.eINSTANCE.getClass_());
151
			elements.put(Interface_3005, UMLPackage.eINSTANCE.getInterface());
152
			elements.put(Component_2001, UMLPackage.eINSTANCE.getComponent());
153
			elements.put(Artifact_2002, UMLPackage.eINSTANCE.getArtifact());
154
			elements.put(Interface_2003, UMLPackage.eINSTANCE.getInterface());
155
			elements.put(Class_2004, UMLPackage.eINSTANCE.getClass_());
156
			elements.put(InterfaceRealization_4001, UMLPackage.eINSTANCE.getInterfaceRealization());
157
			elements.put(PortProvided_4006, UMLPackage.eINSTANCE.getPort_Provided());
158
			elements.put(PortRequired_4004, UMLPackage.eINSTANCE.getPort_Required());
159
		}
160
		return (ENamedElement) elements.get(type);
161
	}
162
163
	/**
164
	 * @generated
165
	 */
166
	public static final IElementType Package_1000 = getElementType("org.eclipse.uml2.diagram.component.Package_1000"); //$NON-NLS-1$
167
168
	/**
169
	 * @generated
170
	 */
171
	public static final IElementType Component_3001 = getElementType("org.eclipse.uml2.diagram.component.Component_3001"); //$NON-NLS-1$
172
173
	/**
174
	 * @generated
175
	 */
176
	public static final IElementType Port_3002 = getElementType("org.eclipse.uml2.diagram.component.Port_3002"); //$NON-NLS-1$
177
178
	/**
179
	 * @generated
180
	 */
181
	public static final IElementType Artifact_3003 = getElementType("org.eclipse.uml2.diagram.component.Artifact_3003"); //$NON-NLS-1$
182
183
	/**
184
	 * @generated
185
	 */
186
	public static final IElementType Class_3004 = getElementType("org.eclipse.uml2.diagram.component.Class_3004"); //$NON-NLS-1$
187
188
	/**
189
	 * @generated
190
	 */
191
	public static final IElementType Interface_3005 = getElementType("org.eclipse.uml2.diagram.component.Interface_3005"); //$NON-NLS-1$
192
193
	/**
194
	 * @generated
195
	 */
196
	public static final IElementType Component_2001 = getElementType("org.eclipse.uml2.diagram.component.Component_2001"); //$NON-NLS-1$
197
198
	/**
199
	 * @generated
200
	 */
201
	public static final IElementType Artifact_2002 = getElementType("org.eclipse.uml2.diagram.component.Artifact_2002"); //$NON-NLS-1$
202
203
	/**
204
	 * @generated
205
	 */
206
	public static final IElementType Interface_2003 = getElementType("org.eclipse.uml2.diagram.component.Interface_2003"); //$NON-NLS-1$
207
208
	/**
209
	 * @generated
210
	 */
211
	public static final IElementType Class_2004 = getElementType("org.eclipse.uml2.diagram.component.Class_2004"); //$NON-NLS-1$
212
213
	/**
214
	 * @generated
215
	 */
216
	public static final IElementType InterfaceRealization_4001 = getElementType("org.eclipse.uml2.diagram.component.InterfaceRealization_4001"); //$NON-NLS-1$
217
218
	/**
219
	 * @generated
220
	 */
221
	public static final IElementType PortProvided_4006 = getElementType("org.eclipse.uml2.diagram.component.PortProvided_4006"); //$NON-NLS-1$
222
223
	/**
224
	 * @generated
225
	 */
226
	public static final IElementType PortRequired_4004 = getElementType("org.eclipse.uml2.diagram.component.PortRequired_4004"); //$NON-NLS-1$
227
228
	/**
229
	 * @generated
230
	 */
231
	private static IElementType getElementType(String id) {
232
		return ElementTypeRegistry.getInstance().getType(id);
233
	}
234
235
	/**
236
	 * @generated
237
	 */
238
	private static Set KNOWN_ELEMENT_TYPES;
239
240
	/**
241
	 * @generated
242
	 */
243
	public static boolean isKnownElementType(IElementType elementType) {
244
		if (KNOWN_ELEMENT_TYPES == null) {
245
			KNOWN_ELEMENT_TYPES = new HashSet();
246
			KNOWN_ELEMENT_TYPES.add(Package_1000);
247
			KNOWN_ELEMENT_TYPES.add(Component_3001);
248
			KNOWN_ELEMENT_TYPES.add(Port_3002);
249
			KNOWN_ELEMENT_TYPES.add(Artifact_3003);
250
			KNOWN_ELEMENT_TYPES.add(Class_3004);
251
			KNOWN_ELEMENT_TYPES.add(Interface_3005);
252
			KNOWN_ELEMENT_TYPES.add(Component_2001);
253
			KNOWN_ELEMENT_TYPES.add(Artifact_2002);
254
			KNOWN_ELEMENT_TYPES.add(Interface_2003);
255
			KNOWN_ELEMENT_TYPES.add(Class_2004);
256
			KNOWN_ELEMENT_TYPES.add(InterfaceRealization_4001);
257
			KNOWN_ELEMENT_TYPES.add(PortProvided_4006);
258
			KNOWN_ELEMENT_TYPES.add(PortRequired_4004);
259
		}
260
		return KNOWN_ELEMENT_TYPES.contains(elementType);
261
	}
262
263
	/**
264
	 * @generated
265
	 */
266
	public static class Initializers {
267
268
		/**
269
		 * @generated
270
		 */
271
		public static final IObjectInitializer Component_2001 = new ObjectInitializer(org.eclipse.uml2.uml.UMLPackage.eINSTANCE.getComponent()) {
272
273
			protected void init() {
274
				add(createExpressionFeatureInitializer(
275
						UMLPackage.eINSTANCE.getNamedElement_Name(),
276
						UMLOCLFactory
277
								.getExpression(
278
										" let base : String = \'Component\' in  let suffixes : Sequence(String) = Sequence {\'\', \'1\', \'2\', \'3\', \'4\', \'5\', \'6\', \'7\', \'8\', \'9\', \'10\'} in  let space : Namespace = self.namespace in  let allMissed : Sequence(String) = suffixes-> \tselect(s : String | not space.member->exists(e : NamedElement | e.name = base.concat(s)) ) in  let firstMissed : String = allMissed->first() in  let noMisses : Boolean = firstMissed.oclIsUndefined() in  let allNames : Set(String) =  \tif noMisses \t\tthen \t\tspace.member->collect(e : NamedElement | \t\t\tif e = self or e.name.oclIsUndefined() or e.name.substring(1, e.name.size().min(base.size())) <> base \t\t\tthen \'\' else e.name \t\t\tendif \t\t)->asSet()->excluding(\'\') \t\telse Set{\'not in use\'} \t\tendif in  let longestName : String = \t\tif noMisses \t\tthen allNames->select(n : String | not allNames->exists(nn : String | nn.size() > n.size()))->asSequence()->first()\t\telse \'not in use\' \t\tendif \tin  if noMisses then \t\tif longestName.oclIsUndefined() \t\tthen base \t\telse longestName.concat(\'1\') \t\tendif  else base.concat(firstMissed)  endif ", //$NON-NLS-1$
279
										UMLPackage.eINSTANCE.getComponent())));
280
			}
281
		}; // Component_2001 ObjectInitializer		
282
283
		/**
284
		 * @generated
285
		 */
286
		public static final IObjectInitializer Artifact_2002 = new ObjectInitializer(org.eclipse.uml2.uml.UMLPackage.eINSTANCE.getArtifact()) {
287
288
			protected void init() {
289
				add(createExpressionFeatureInitializer(
290
						UMLPackage.eINSTANCE.getNamedElement_Name(),
291
						UMLOCLFactory
292
								.getExpression(
293
										" let base : String = \'Artifact\' in  let suffixes : Sequence(String) = Sequence {\'\', \'1\', \'2\', \'3\', \'4\', \'5\', \'6\', \'7\', \'8\', \'9\', \'10\'} in  let space : Namespace = self.namespace in  let allMissed : Sequence(String) = suffixes-> \tselect(s : String | not space.member->exists(e : NamedElement | e.name = base.concat(s)) ) in  let firstMissed : String = allMissed->first() in  let noMisses : Boolean = firstMissed.oclIsUndefined() in  let allNames : Set(String) =  \tif noMisses \t\tthen \t\tspace.member->collect(e : NamedElement | \t\t\tif e = self or e.name.oclIsUndefined() or e.name.substring(1, e.name.size().min(base.size())) <> base \t\t\tthen \'\' else e.name \t\t\tendif \t\t)->asSet()->excluding(\'\') \t\telse Set{\'not in use\'} \t\tendif in  let longestName : String = \t\tif noMisses \t\tthen allNames->select(n : String | not allNames->exists(nn : String | nn.size() > n.size()))->asSequence()->first()\t\telse \'not in use\' \t\tendif \tin  if noMisses then \t\tif longestName.oclIsUndefined() \t\tthen base \t\telse longestName.concat(\'1\') \t\tendif  else base.concat(firstMissed)  endif ", //$NON-NLS-1$
294
										UMLPackage.eINSTANCE.getArtifact())));
295
			}
296
		}; // Artifact_2002 ObjectInitializer		
297
298
		/**
299
		 * @generated
300
		 */
301
		public static final IObjectInitializer Interface_2003 = new ObjectInitializer(org.eclipse.uml2.uml.UMLPackage.eINSTANCE.getInterface()) {
302
303
			protected void init() {
304
				add(createExpressionFeatureInitializer(
305
						UMLPackage.eINSTANCE.getNamedElement_Name(),
306
						UMLOCLFactory
307
								.getExpression(
308
										" let base : String = \'Interface\' in  let suffixes : Sequence(String) = Sequence {\'\', \'1\', \'2\', \'3\', \'4\', \'5\', \'6\', \'7\', \'8\', \'9\', \'10\'} in  let space : Namespace = self.namespace in  let allMissed : Sequence(String) = suffixes-> \tselect(s : String | not space.member->exists(e : NamedElement | e.name = base.concat(s)) ) in  let firstMissed : String = allMissed->first() in  let noMisses : Boolean = firstMissed.oclIsUndefined() in  let allNames : Set(String) =  \tif noMisses \t\tthen \t\tspace.member->collect(e : NamedElement | \t\t\tif e = self or e.name.oclIsUndefined() or e.name.substring(1, e.name.size().min(base.size())) <> base \t\t\tthen \'\' else e.name \t\t\tendif \t\t)->asSet()->excluding(\'\') \t\telse Set{\'not in use\'} \t\tendif in  let longestName : String = \t\tif noMisses \t\tthen allNames->select(n : String | not allNames->exists(nn : String | nn.size() > n.size()))->asSequence()->first()\t\telse \'not in use\' \t\tendif \tin  if noMisses then \t\tif longestName.oclIsUndefined() \t\tthen base \t\telse longestName.concat(\'1\') \t\tendif  else base.concat(firstMissed)  endif ", //$NON-NLS-1$
309
										UMLPackage.eINSTANCE.getInterface())));
310
			}
311
		}; // Interface_2003 ObjectInitializer		
312
313
		/**
314
		 * @generated
315
		 */
316
		public static final IObjectInitializer Class_2004 = new ObjectInitializer(org.eclipse.uml2.uml.UMLPackage.eINSTANCE.getClass_()) {
317
318
			protected void init() {
319
				add(createExpressionFeatureInitializer(
320
						UMLPackage.eINSTANCE.getNamedElement_Name(),
321
						UMLOCLFactory
322
								.getExpression(
323
										" let base : String = \'Class\' in  let suffixes : Sequence(String) = Sequence {\'\', \'1\', \'2\', \'3\', \'4\', \'5\', \'6\', \'7\', \'8\', \'9\', \'10\'} in  let space : Namespace = self.namespace in  let allMissed : Sequence(String) = suffixes-> \tselect(s : String | not space.member->exists(e : NamedElement | e.name = base.concat(s)) ) in  let firstMissed : String = allMissed->first() in  let noMisses : Boolean = firstMissed.oclIsUndefined() in  let allNames : Set(String) =  \tif noMisses \t\tthen \t\tspace.member->collect(e : NamedElement | \t\t\tif e = self or e.name.oclIsUndefined() or e.name.substring(1, e.name.size().min(base.size())) <> base \t\t\tthen \'\' else e.name \t\t\tendif \t\t)->asSet()->excluding(\'\') \t\telse Set{\'not in use\'} \t\tendif in  let longestName : String = \t\tif noMisses \t\tthen allNames->select(n : String | not allNames->exists(nn : String | nn.size() > n.size()))->asSequence()->first()\t\telse \'not in use\' \t\tendif \tin  if noMisses then \t\tif longestName.oclIsUndefined() \t\tthen base \t\telse longestName.concat(\'1\') \t\tendif  else base.concat(firstMissed)  endif ", //$NON-NLS-1$
324
										UMLPackage.eINSTANCE.getClass_())));
325
			}
326
		}; // Class_2004 ObjectInitializer		
327
328
		/**
329
		 * @generated
330
		 */
331
		public static final IObjectInitializer Component_3001 = new ObjectInitializer(org.eclipse.uml2.uml.UMLPackage.eINSTANCE.getComponent()) {
332
333
			protected void init() {
334
				add(createExpressionFeatureInitializer(
335
						UMLPackage.eINSTANCE.getNamedElement_Name(),
336
						UMLOCLFactory
337
								.getExpression(
338
										" let base : String = \'Component\' in  let suffixes : Sequence(String) = Sequence {\'\', \'1\', \'2\', \'3\', \'4\', \'5\', \'6\', \'7\', \'8\', \'9\', \'10\'} in  let space : Namespace = self.namespace in  let allMissed : Sequence(String) = suffixes-> \tselect(s : String | not space.member->exists(e : NamedElement | e.name = base.concat(s)) ) in  let firstMissed : String = allMissed->first() in  let noMisses : Boolean = firstMissed.oclIsUndefined() in  let allNames : Set(String) =  \tif noMisses \t\tthen \t\tspace.member->collect(e : NamedElement | \t\t\tif e = self or e.name.oclIsUndefined() or e.name.substring(1, e.name.size().min(base.size())) <> base \t\t\tthen \'\' else e.name \t\t\tendif \t\t)->asSet()->excluding(\'\') \t\telse Set{\'not in use\'} \t\tendif in  let longestName : String = \t\tif noMisses \t\tthen allNames->select(n : String | not allNames->exists(nn : String | nn.size() > n.size()))->asSequence()->first()\t\telse \'not in use\' \t\tendif \tin  if noMisses then \t\tif longestName.oclIsUndefined() \t\tthen base \t\telse longestName.concat(\'1\') \t\tendif  else base.concat(firstMissed)  endif ", //$NON-NLS-1$
339
										UMLPackage.eINSTANCE.getComponent())));
340
			}
341
		}; // Component_3001 ObjectInitializer		
342
343
		/**
344
		 * @generated
345
		 */
346
		public static final IObjectInitializer Port_3002 = new ObjectInitializer(org.eclipse.uml2.uml.UMLPackage.eINSTANCE.getPort()) {
347
348
			protected void init() {
349
				add(createExpressionFeatureInitializer(UMLPackage.eINSTANCE.getProperty_Aggregation(), UMLOCLFactory.getExpression("AggregationKind::composite", //$NON-NLS-1$
350
						UMLPackage.eINSTANCE.getPort())));
351
				add(createExpressionFeatureInitializer(
352
						UMLPackage.eINSTANCE.getNamedElement_Name(),
353
						UMLOCLFactory
354
								.getExpression(
355
										" let base : String = \'port\' in  let suffixes : Sequence(String) = Sequence {\'\', \'1\', \'2\', \'3\', \'4\', \'5\', \'6\', \'7\', \'8\', \'9\', \'10\'} in  let space : Namespace = self.namespace in  let allMissed : Sequence(String) = suffixes-> \tselect(s : String | not space.member->exists(e : NamedElement | e.name = base.concat(s)) ) in  let firstMissed : String = allMissed->first() in  let noMisses : Boolean = firstMissed.oclIsUndefined() in  let allNames : Set(String) =  \tif noMisses \t\tthen \t\tspace.member->collect(e : NamedElement | \t\t\tif e = self or e.name.oclIsUndefined() or e.name.substring(1, e.name.size().min(base.size())) <> base \t\t\tthen \'\' else e.name \t\t\tendif \t\t)->asSet()->excluding(\'\') \t\telse Set{\'not in use\'} \t\tendif in  let longestName : String = \t\tif noMisses \t\tthen allNames->select(n : String | not allNames->exists(nn : String | nn.size() > n.size()))->asSequence()->first()\t\telse \'not in use\' \t\tendif \tin  if noMisses then \t\tif longestName.oclIsUndefined() \t\tthen base \t\telse longestName.concat(\'1\') \t\tendif  else base.concat(firstMissed)  endif ", //$NON-NLS-1$
356
										UMLPackage.eINSTANCE.getPort())));
357
			}
358
		}; // Port_3002 ObjectInitializer		
359
360
		/**
361
		 * @generated
362
		 */
363
		public static final IObjectInitializer Artifact_3003 = new ObjectInitializer(org.eclipse.uml2.uml.UMLPackage.eINSTANCE.getArtifact()) {
364
365
			protected void init() {
366
				add(createExpressionFeatureInitializer(
367
						UMLPackage.eINSTANCE.getNamedElement_Name(),
368
						UMLOCLFactory
369
								.getExpression(
370
										" let base : String = \'Artifact\' in  let suffixes : Sequence(String) = Sequence {\'\', \'1\', \'2\', \'3\', \'4\', \'5\', \'6\', \'7\', \'8\', \'9\', \'10\'} in  let space : Namespace = self.namespace in  let allMissed : Sequence(String) = suffixes-> \tselect(s : String | not space.member->exists(e : NamedElement | e.name = base.concat(s)) ) in  let firstMissed : String = allMissed->first() in  let noMisses : Boolean = firstMissed.oclIsUndefined() in  let allNames : Set(String) =  \tif noMisses \t\tthen \t\tspace.member->collect(e : NamedElement | \t\t\tif e = self or e.name.oclIsUndefined() or e.name.substring(1, e.name.size().min(base.size())) <> base \t\t\tthen \'\' else e.name \t\t\tendif \t\t)->asSet()->excluding(\'\') \t\telse Set{\'not in use\'} \t\tendif in  let longestName : String = \t\tif noMisses \t\tthen allNames->select(n : String | not allNames->exists(nn : String | nn.size() > n.size()))->asSequence()->first()\t\telse \'not in use\' \t\tendif \tin  if noMisses then \t\tif longestName.oclIsUndefined() \t\tthen base \t\telse longestName.concat(\'1\') \t\tendif  else base.concat(firstMissed)  endif ", //$NON-NLS-1$
371
										UMLPackage.eINSTANCE.getArtifact())));
372
			}
373
		}; // Artifact_3003 ObjectInitializer		
374
375
		/**
376
		 * @generated
377
		 */
378
		public static final IObjectInitializer Class_3004 = new ObjectInitializer(org.eclipse.uml2.uml.UMLPackage.eINSTANCE.getClass_()) {
379
380
			protected void init() {
381
				add(createExpressionFeatureInitializer(
382
						UMLPackage.eINSTANCE.getNamedElement_Name(),
383
						UMLOCLFactory
384
								.getExpression(
385
										" let base : String = \'Class\' in  let suffixes : Sequence(String) = Sequence {\'\', \'1\', \'2\', \'3\', \'4\', \'5\', \'6\', \'7\', \'8\', \'9\', \'10\'} in  let space : Namespace = self.namespace in  let allMissed : Sequence(String) = suffixes-> \tselect(s : String | not space.member->exists(e : NamedElement | e.name = base.concat(s)) ) in  let firstMissed : String = allMissed->first() in  let noMisses : Boolean = firstMissed.oclIsUndefined() in  let allNames : Set(String) =  \tif noMisses \t\tthen \t\tspace.member->collect(e : NamedElement | \t\t\tif e = self or e.name.oclIsUndefined() or e.name.substring(1, e.name.size().min(base.size())) <> base \t\t\tthen \'\' else e.name \t\t\tendif \t\t)->asSet()->excluding(\'\') \t\telse Set{\'not in use\'} \t\tendif in  let longestName : String = \t\tif noMisses \t\tthen allNames->select(n : String | not allNames->exists(nn : String | nn.size() > n.size()))->asSequence()->first()\t\telse \'not in use\' \t\tendif \tin  if noMisses then \t\tif longestName.oclIsUndefined() \t\tthen base \t\telse longestName.concat(\'1\') \t\tendif  else base.concat(firstMissed)  endif ", //$NON-NLS-1$
386
										UMLPackage.eINSTANCE.getClass_())));
387
			}
388
		}; // Class_3004 ObjectInitializer		
389
390
		/**
391
		 * @generated
392
		 */
393
		public static final IObjectInitializer Interface_3005 = new ObjectInitializer(org.eclipse.uml2.uml.UMLPackage.eINSTANCE.getInterface()) {
394
395
			protected void init() {
396
				add(createExpressionFeatureInitializer(
397
						UMLPackage.eINSTANCE.getNamedElement_Name(),
398
						UMLOCLFactory
399
								.getExpression(
400
										" let base : String = \'Interface\' in  let suffixes : Sequence(String) = Sequence {\'\', \'1\', \'2\', \'3\', \'4\', \'5\', \'6\', \'7\', \'8\', \'9\', \'10\'} in  let space : Namespace = self.namespace in  let allMissed : Sequence(String) = suffixes-> \tselect(s : String | not space.member->exists(e : NamedElement | e.name = base.concat(s)) ) in  let firstMissed : String = allMissed->first() in  let noMisses : Boolean = firstMissed.oclIsUndefined() in  let allNames : Set(String) =  \tif noMisses \t\tthen \t\tspace.member->collect(e : NamedElement | \t\t\tif e = self or e.name.oclIsUndefined() or e.name.substring(1, e.name.size().min(base.size())) <> base \t\t\tthen \'\' else e.name \t\t\tendif \t\t)->asSet()->excluding(\'\') \t\telse Set{\'not in use\'} \t\tendif in  let longestName : String = \t\tif noMisses \t\tthen allNames->select(n : String | not allNames->exists(nn : String | nn.size() > n.size()))->asSequence()->first()\t\telse \'not in use\' \t\tendif \tin  if noMisses then \t\tif longestName.oclIsUndefined() \t\tthen base \t\telse longestName.concat(\'1\') \t\tendif  else base.concat(firstMissed)  endif ", //$NON-NLS-1$
401
										UMLPackage.eINSTANCE.getInterface())));
402
			}
403
		}; // Interface_3005 ObjectInitializer
404
405
		/** 
406
		 * @generated
407
		 */
408
		private Initializers() {
409
		}
410
411
		/** 
412
		 * @generated
413
		 */
414
		public static interface IObjectInitializer {
415
416
			/** 
417
			 * @generated
418
			 */
419
			public void init(EObject instance);
420
		}
421
422
		/** 
423
		 * @generated
424
		 */
425
		public static abstract class ObjectInitializer implements IObjectInitializer {
426
427
			/** 
428
			 * @generated
429
			 */
430
			final EClass element;
431
432
			/** 
433
			 * @generated
434
			 */
435
			private List featureInitializers = new ArrayList();
436
437
			/** 
438
			 * @generated
439
			 */
440
			ObjectInitializer(EClass element) {
441
				this.element = element;
442
				init();
443
			}
444
445
			/**
446
			 * @generated
447
			 */
448
			protected abstract void init();
449
450
			/** 
451
			 * @generated
452
			 */
453
			protected final FeatureInitializer add(FeatureInitializer initializer) {
454
				featureInitializers.add(initializer);
455
				return initializer;
456
			}
457
458
			/** 
459
			 * @generated
460
			 */
461
			public void init(EObject instance) {
462
				for (java.util.Iterator it = featureInitializers.iterator(); it.hasNext();) {
463
					FeatureInitializer nextExpr = (FeatureInitializer) it.next();
464
					try {
465
						nextExpr.init(instance);
466
					} catch (RuntimeException e) {
467
						UMLDiagramEditorPlugin.getInstance().logError("Feature initialization failed", e); //$NON-NLS-1$						
468
					}
469
				}
470
			}
471
		} // end of ObjectInitializer
472
473
		/** 
474
		 * @generated
475
		 */
476
		interface FeatureInitializer {
477
478
			/**
479
			 * @generated
480
			 */
481
			void init(EObject contextInstance);
482
		}
483
484
		/**
485
		 * @generated
486
		 */
487
		static FeatureInitializer createNewElementFeatureInitializer(EStructuralFeature initFeature, ObjectInitializer[] newObjectInitializers) {
488
			final EStructuralFeature feature = initFeature;
489
			final ObjectInitializer[] initializers = newObjectInitializers;
490
			return new FeatureInitializer() {
491
492
				public void init(EObject contextInstance) {
493
					for (int i = 0; i < initializers.length; i++) {
494
						EObject newInstance = initializers[i].element.getEPackage().getEFactoryInstance().create(initializers[i].element);
495
						if (feature.isMany()) {
496
							((Collection) contextInstance.eGet(feature)).add(newInstance);
497
						} else {
498
							contextInstance.eSet(feature, newInstance);
499
						}
500
						initializers[i].init(newInstance);
501
					}
502
				}
503
			};
504
		}
505
506
		/**
507
		 * @generated
508
		 */
509
		static FeatureInitializer createExpressionFeatureInitializer(EStructuralFeature initFeature, UMLAbstractExpression valueExpression) {
510
			final EStructuralFeature feature = initFeature;
511
			final UMLAbstractExpression expression = valueExpression;
512
			return new FeatureInitializer() {
513
514
				public void init(EObject contextInstance) {
515
					expression.assignTo(feature, contextInstance);
516
				}
517
			};
518
		}
519
	} // end of Initializers
520
}
(-)src/org/eclipse/uml2/diagram/component/part/UMLDiagramActionBarContributor.java (+23 lines)
Added Link Here
1
package org.eclipse.uml2.diagram.component.part;
2
3
import org.eclipse.gmf.runtime.diagram.ui.parts.DiagramActionBarContributor;
4
5
/**
6
 * @generated
7
 */
8
public class UMLDiagramActionBarContributor extends DiagramActionBarContributor {
9
10
	/**
11
	 * @generated
12
	 */
13
	protected Class getEditorClass() {
14
		return UMLDiagramEditor.class;
15
	}
16
17
	/**
18
	 * @generated
19
	 */
20
	protected String getEditorId() {
21
		return UMLDiagramEditor.ID;
22
	}
23
}
(-)src/org/eclipse/uml2/diagram/component/view/factories/PortViewFactory.java (+57 lines)
Added Link Here
1
package org.eclipse.uml2.diagram.component.view.factories;
2
3
import java.util.ArrayList;
4
import java.util.List;
5
6
import org.eclipse.core.runtime.IAdaptable;
7
8
import org.eclipse.emf.ecore.EAnnotation;
9
import org.eclipse.emf.ecore.EcoreFactory;
10
11
import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil;
12
13
import org.eclipse.gmf.runtime.diagram.ui.view.factories.AbstractShapeViewFactory;
14
15
import org.eclipse.gmf.runtime.notation.NotationFactory;
16
import org.eclipse.gmf.runtime.notation.View;
17
18
import org.eclipse.uml2.diagram.component.edit.parts.PackageEditPart;
19
import org.eclipse.uml2.diagram.component.edit.parts.PortNameEditPart;
20
import org.eclipse.uml2.diagram.component.part.UMLVisualIDRegistry;
21
22
/**
23
 * @generated
24
 */
25
public class PortViewFactory extends AbstractShapeViewFactory {
26
27
	/**
28
	 * @generated 
29
	 */
30
	protected List createStyles(View view) {
31
		List styles = new ArrayList();
32
		styles.add(NotationFactory.eINSTANCE.createFontStyle());
33
		styles.add(NotationFactory.eINSTANCE.createDescriptionStyle());
34
		styles.add(NotationFactory.eINSTANCE.createFillStyle());
35
		styles.add(NotationFactory.eINSTANCE.createLineStyle());
36
		return styles;
37
	}
38
39
	/**
40
	 * @generated
41
	 */
42
	protected void decorateView(View containerView, View view, IAdaptable semanticAdapter, String semanticHint, int index, boolean persisted) {
43
		if (semanticHint == null) {
44
			semanticHint = UMLVisualIDRegistry.getType(org.eclipse.uml2.diagram.component.edit.parts.PortEditPart.VISUAL_ID);
45
			view.setType(semanticHint);
46
		}
47
		super.decorateView(containerView, view, semanticAdapter, semanticHint, index, persisted);
48
		if (!PackageEditPart.MODEL_ID.equals(UMLVisualIDRegistry.getModelID(containerView))) {
49
			EAnnotation shortcutAnnotation = EcoreFactory.eINSTANCE.createEAnnotation();
50
			shortcutAnnotation.setSource("Shortcut"); //$NON-NLS-1$
51
			shortcutAnnotation.getDetails().put("modelID", PackageEditPart.MODEL_ID); //$NON-NLS-1$
52
			view.getEAnnotations().add(shortcutAnnotation);
53
		}
54
		getViewService().createNode(semanticAdapter, view, UMLVisualIDRegistry.getType(PortNameEditPart.VISUAL_ID), ViewUtil.APPEND, true, getPreferencesHint());
55
	}
56
57
}
(-)icons/wizban/NewUMLWizard.gif (+8 lines)
Added Link Here
1
GIF89aKBçÿÿÿîñøîñ÷¸ÃÖËÓâËÓáäéòíñø;Z‹=[Œ=[‹Ò輲ٌ™Ìf€À@Ca?Ec’Da?Fc’Fc‘He“Mi–Ok˜Ok—Qm™Rm™TošWqœWq›ZtžZt?]w _y¢`y¢`y¡c{£f~¥i?§lƒ©o†«p†ªs‰­vŒ¯z?±}’³}‘²ƒ—·„—·Š?»‹?¼‘£À’£À’£¿•¦Â™©Ä™©Ãœ¬ÆŸ¯È ¯È ¯Ç¤²Êª¸Î®»Ð·ÃÖ¸Ä×ÂÌÜÈÑàÓÛèÔÛçÖÝéØßêÞäîÜâìæëóäéñ<\Œ>]?=\‹?^Ž?^?A`?Db?Ec‘Ge“Fd‘Jg”Li•Qn™Rn™TpšWrœWr›YtžYt?]wŸ`z¢_y¡`z¡c|£e~¥l„©k„¨sŠ­uŒ¯y?±€•µƒ˜·„˜·‡›¹Šž¼Šž»? ½Ž¡¾Ž¡½‘¤À’¤À‘£¿‘¤¿’¤¿•§Á™ªÄ °ÈŸ¯Ç °Ç£³Ê¦µÌ©¸Î­»Ð®¼Ð±¾Ò´ÁÔ»ÇØ¾ÉÚÁÌÜÇÑàËÔâÍÖäÐÙæÎ×äÓÛçÕÝéÝäîÛâìàæïÞäíìðö˜ªÃœ­ÅŸ°ÈŸ°Ç¦¶Ì­¼Ð·ÄÖ¾ÊÚÄÏÞÈÒàÊÔáÓÜèÐÙåÎ×ãÖÞéäêòâèðêïöèíôÇÒàÍ×ãÓÜçÕÞéØàêßæïÝäíÛâëëðöêïõèíóïóøîò÷æìóäêñèîôíò÷ô®_ôÛ²óáÆ×Ä¥µ³?—£—†›–|•’u‘?c?…ž±²¨·´¼Â¹¼Â¹ÆÇ¶¼¹¬¢›’½ÃÇßàÞÌÆÏÎÈÑÑÌÖÙØãÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ,KBþH° Áƒ*\h0R#Jœ8Ñ!©‹)jÜ(1–€‡/rI’`,‡ Cf,ɲãI”*1¶œ©ðd?)c®¤Éóf,ŸrêìÙӿɠBc?iôhPRIC.-Ù4R¤PuŠœºñ§×›W¡F•Š0—Ù³hÓªMû“áW¯WÃjÝzW2fÉòêÝË·o®[ºp-|û2îçsâjÖ·q¤d?G%£µR$]·#|{3€€?†'F¨K•iÓ­R·Š	’kH£hɞ-›YfÍ
2
;{ý+âÑu“©R­šukZ­]?ZNà̺Lr~ù9ôX™¤U'+¾šõìå±gþÃ?+pfÁ?uû<Y=®Ø¹;ê"n<™åH´c‡ëoù[»ä2ÝzõæÞu	Í·Ýc¬¹É~´@HËx°Ì"
3
`˜f”n/xàut4Ÿq$>H[sRË(·Ýa¶g|ñ¤K‰¬?òÀŽ(ʦ",’$ÓbfÇäÂa‡~_‚‘t÷àŽ4Ð?>þ8^?CBç’ìVRJ(q“9&ó€Q6À€”Tù£$’d˜å\Rçå{‰yÀ«ð9&i$ž‰¦”¬é@›oÂ	fºè2L0
4
ôrL2uv)zò¹Ê¦œ&¸ÚrPښT^	'œà’ËÉ,À0þÂLZi’Oeª)§›ò™?1£@2ٙ¡úÀ”²½"	?pÊäÊÞŀ1»PZi{¤`kŸØfûçAº0§#šÂËf•§Êb.?'Ér2ÑÎ
5
’˜¢ˆ²ç¼¸Ö›P´à	*å¾ãÒb®$æšËe?Ì´Ëå»a†)ïžØÞÊé¶#[lgòËo›þ0’7Á’Œ1Җ§³(ï¼~ÖÛ)B»ÐVñ¾…Ž«ñÆMý$Ë( ‹ŒÉ˜šŒ²Ã¸B\P˳½LèšÄÎ,Ç[J’óo˜’2KÉ¢(q2Ã)k»Ê½.§y4›J¼å[Å4“ÕÎRO?ðÕX«Ü'×E‹jñaËåteë4KþÚ
6
[M/иÂ-› ^Kyh؟iP1Ì@½7É%ûü·Öo³|"áû®tÅkžÙ–@yÇ´·ÚV³Í°ÊºZ~9á;ÖÍù”lX(gç™6Õ¥O¸Ð}"-;Ò]÷Iâzþy³ëÍ·äm»?Ð0¿ËV·Ø±?ª8gÃ4žÓã¤çŽ²Û•ýïÓ/}Ò¡4í¢/ïÂ)k*ÿÖ??[ùæWÿÀWêy5Œˆ	“µ~ö=‡9bSÜÔó𧱗 O=é±IözFÀï­Â¼ 1ÈÁ&„§JVØ:ô@¤ç&ÃXÆÂ q®	Œ¡Ã†`"¤žþ4£Cþ®A‚‡HD!:"	?xˏÄF(1ƒ¼%®àY1vèK‡ò“a #I£??22‘‰F@#3¨@„ôÂ\Â!°l²ÅrQÈc3ôx„fôñ?Íh†)H#ò\ÙAދýYъ?ÜߖzÁ¶à1?˜Ì¤&3Y„B"2?¹JH/ˆW=p™²‘±;á†&ù“Knò•˜ì¤Ùè0Q’Ò”§4UÉKa0–™E3„H#<	ÙÊUøâRZl_¨¤ä$;¥›ø’Í`6µÉMmf“ˆìÓü‡?fàx¦”P©Å±%΀•7¹™Ímb³˜Iþgւ–?f62…
7
h@Q‰Ë‚¾îLÁ`@7ªMbæógnKÝA~qtîò„?Ì(°¢Ô9CË`(=ý¨Oz%óa	ùÅOª¨Qx¨-ŋ¬–AӚzÓ?H°ÖµN§²”¶¥ }©OÎé¹|THUFH±y„œ&Œ€Ê¬WڑŽüãå[‚Œ¤z“Œ?H˜žà×<{$’XBUMجF°­œÈQCÈ$°0jb]Xâ꧂ ­Éè0KØÂö°ˆ=¬0î¹%”¢gy%ë>ÉÉÅX`°¨L^½p6/IÐc’1Ú$0洘4m$ö„¶î™î¤(å?H[‡Š$ÄèR!QÂEH÷>ˆ‚¯#u\åØj;#0¹~{•jBâúÖÊΊ:ЉnyûZÀµñ¬¹¹èKú7-Ü¢
8
rk“,ø¦jÇ]òo¸³ºÔ¤Æ·ª±-¹óŒ4ÍÛ?ÝvF¹½]xш̖­Ïe~U2ºÈ¹wr¿ÝŒI(¹Eô×»»?Zä¼×¶q  ;
(-)src/org/eclipse/uml2/diagram/component/edit/parts/Artifact2EditPart.java (+359 lines)
Added Link Here
1
package org.eclipse.uml2.diagram.component.edit.parts;
2
3
import org.eclipse.draw2d.IFigure;
4
import org.eclipse.draw2d.StackLayout;
5
6
import org.eclipse.gef.EditPart;
7
import org.eclipse.gef.EditPolicy;
8
import org.eclipse.gef.Request;
9
10
import org.eclipse.gef.commands.Command;
11
12
import org.eclipse.gef.editpolicies.LayoutEditPolicy;
13
import org.eclipse.gef.editpolicies.NonResizableEditPolicy;
14
15
import org.eclipse.gef.requests.CreateRequest;
16
17
import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;
18
import org.eclipse.gmf.runtime.diagram.ui.editparts.ShapeNodeEditPart;
19
20
import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;
21
22
import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout;
23
24
import org.eclipse.gmf.runtime.gef.ui.figures.DefaultSizeNodeFigure;
25
import org.eclipse.gmf.runtime.gef.ui.figures.NodeFigure;
26
27
import org.eclipse.gmf.runtime.notation.View;
28
29
import org.eclipse.uml2.diagram.component.edit.policies.Artifact2ItemSemanticEditPolicy;
30
import org.eclipse.uml2.diagram.component.part.UMLVisualIDRegistry;
31
32
/**
33
 * @generated
34
 */
35
public class Artifact2EditPart extends ShapeNodeEditPart {
36
37
	/**
38
	 * @generated
39
	 */
40
	public static final int VISUAL_ID = 2002;
41
42
	/**
43
	 * @generated
44
	 */
45
	protected IFigure contentPane;
46
47
	/**
48
	 * @generated
49
	 */
50
	protected IFigure primaryShape;
51
52
	/**
53
	 * @generated
54
	 */
55
	public Artifact2EditPart(View view) {
56
		super(view);
57
	}
58
59
	/**
60
	 * @generated
61
	 */
62
	protected void createDefaultEditPolicies() {
63
		super.createDefaultEditPolicies();
64
		installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE, new Artifact2ItemSemanticEditPolicy());
65
		installEditPolicy(EditPolicy.LAYOUT_ROLE, createLayoutEditPolicy());
66
67
	}
68
69
	/**
70
	 * @generated
71
	 */
72
	protected LayoutEditPolicy createLayoutEditPolicy() {
73
		LayoutEditPolicy lep = new LayoutEditPolicy() {
74
75
			protected EditPolicy createChildEditPolicy(EditPart child) {
76
				EditPolicy result = child.getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);
77
				if (result == null) {
78
					result = new NonResizableEditPolicy();
79
				}
80
				return result;
81
			}
82
83
			protected Command getMoveChildrenCommand(Request request) {
84
				return null;
85
			}
86
87
			protected Command getCreateCommand(CreateRequest request) {
88
				return null;
89
			}
90
		};
91
		return lep;
92
	}
93
94
	/**
95
	 * @generated
96
	 */
97
	protected IFigure createNodeShape() {
98
		ArtifactFigure figure = new ArtifactFigure();
99
		return primaryShape = figure;
100
	}
101
102
	/**
103
	 * @generated
104
	 */
105
	public ArtifactFigure getPrimaryShape() {
106
		return (ArtifactFigure) primaryShape;
107
	}
108
109
	/**
110
	 * @generated 
111
	 */
112
	protected IFigure getContentPaneFor(IGraphicalEditPart editPart) {
113
114
		return super.getContentPaneFor(editPart);
115
	}
116
117
	/**
118
	 * @generated
119
	 */
120
	protected boolean addFixedChild(EditPart childEditPart) {
121
		if (childEditPart instanceof ArtifactName2EditPart) {
122
			((ArtifactName2EditPart) childEditPart).setLabel(getPrimaryShape().getFigureArtifactFigure_name());
123
			return true;
124
		}
125
		return false;
126
	}
127
128
	/**
129
	 * @generated
130
	 */
131
	protected boolean removeFixedChild(EditPart childEditPart) {
132
		return false;
133
	}
134
135
	/**
136
	 * @generated
137
	 */
138
	protected NodeFigure createNodePlate() {
139
		DefaultSizeNodeFigure result = new DefaultSizeNodeFigure(getMapMode().DPtoLP(80), getMapMode().DPtoLP(60));
140
		return result;
141
	}
142
143
	/**
144
	 * Creates figure for this edit part.
145
	 * 
146
	 * Body of this method does not depend on settings in generation model
147
	 * so you may safely remove <i>generated</i> tag and modify it.
148
	 * 
149
	 * @generated
150
	 */
151
	protected NodeFigure createNodeFigure() {
152
		NodeFigure figure = createNodePlate();
153
		figure.setLayoutManager(new StackLayout());
154
		IFigure shape = createNodeShape();
155
		figure.add(shape);
156
		contentPane = setupContentPane(shape);
157
		return figure;
158
	}
159
160
	/**
161
	 * Default implementation treats passed figure as content pane.
162
	 * Respects layout one may have set for generated figure.
163
	 * @param nodeShape instance of generated figure class
164
	 * @generated
165
	 */
166
	protected IFigure setupContentPane(IFigure nodeShape) {
167
		if (nodeShape.getLayoutManager() == null) {
168
			ConstrainedToolbarLayout layout = new ConstrainedToolbarLayout();
169
			layout.setSpacing(getMapMode().DPtoLP(5));
170
			nodeShape.setLayoutManager(layout);
171
		}
172
		return nodeShape; // use nodeShape itself as contentPane
173
	}
174
175
	/**
176
	 * @generated
177
	 */
178
	public IFigure getContentPane() {
179
		if (contentPane != null) {
180
			return contentPane;
181
		}
182
		return super.getContentPane();
183
	}
184
185
	/**
186
	 * @generated
187
	 */
188
	public EditPart getPrimaryChildEditPart() {
189
		return getChildBySemanticHint(UMLVisualIDRegistry.getType(ArtifactName2EditPart.VISUAL_ID));
190
	}
191
192
	/**
193
	 * @generated
194
	 */
195
	protected void addChildVisual(EditPart childEditPart, int index) {
196
		if (addFixedChild(childEditPart)) {
197
			return;
198
		}
199
		super.addChildVisual(childEditPart, -1);
200
	}
201
202
	/**
203
	 * @generated
204
	 */
205
	protected void removeChildVisual(EditPart childEditPart) {
206
		if (removeFixedChild(childEditPart)) {
207
			return;
208
		}
209
		super.removeChildVisual(childEditPart);
210
	}
211
212
	/**
213
	 * @generated
214
	 */
215
	public class ArtifactFigure extends org.eclipse.draw2d.RectangleFigure {
216
217
		/**
218
		 * @generated
219
		 */
220
		public ArtifactFigure() {
221
222
			org.eclipse.gmf.internal.codegen.draw2d.GridLayout myGenLayoutManager = new org.eclipse.gmf.internal.codegen.draw2d.GridLayout();
223
			myGenLayoutManager.numColumns = 1;
224
			myGenLayoutManager.makeColumnsEqualWidth = true;
225
			myGenLayoutManager.marginWidth = 0;
226
			myGenLayoutManager.marginHeight = 0;
227
			myGenLayoutManager.horizontalSpacing = 0;
228
			myGenLayoutManager.verticalSpacing = 0;
229
230
			this.setLayoutManager(myGenLayoutManager);
231
232
			createContents();
233
		}
234
235
		/**
236
		 * @generated
237
		 */
238
		private void createContents() {
239
			org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel fig_0 = new org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel();
240
			fig_0.setText("\u00ABartifact\u00BB");
241
242
			setFigureArtifactFigure_fixed_artifact(fig_0);
243
			org.eclipse.gmf.internal.codegen.draw2d.GridLayoutData layData0 = new org.eclipse.gmf.internal.codegen.draw2d.GridLayoutData();
244
			layData0.verticalAlignment = org.eclipse.gmf.internal.codegen.draw2d.GridLayoutData.CENTER;
245
			layData0.horizontalAlignment = org.eclipse.gmf.internal.codegen.draw2d.GridLayoutData.CENTER;
246
			layData0.horizontalIndent = 0;
247
			layData0.horizontalSpan = 1;
248
			layData0.verticalSpan = 1;
249
			layData0.grabExcessHorizontalSpace = true;
250
			layData0.grabExcessVerticalSpace = false;
251
252
			this.add(fig_0, layData0);
253
			org.eclipse.draw2d.RectangleFigure fig_1 = new org.eclipse.draw2d.RectangleFigure();
254
			fig_1.setFill(false);
255
			fig_1.setOutline(false);
256
257
			org.eclipse.uml2.diagram.common.draw2d.CenterLayout layouter1 = new org.eclipse.uml2.diagram.common.draw2d.CenterLayout();
258
259
			fig_1.setLayoutManager(layouter1);
260
261
			setFigureArtifactFigure_NameContainer(fig_1);
262
			org.eclipse.gmf.internal.codegen.draw2d.GridLayoutData layData1 = new org.eclipse.gmf.internal.codegen.draw2d.GridLayoutData();
263
			layData1.verticalAlignment = org.eclipse.gmf.internal.codegen.draw2d.GridLayoutData.FILL;
264
			layData1.horizontalAlignment = org.eclipse.gmf.internal.codegen.draw2d.GridLayoutData.FILL;
265
			layData1.horizontalIndent = 0;
266
			layData1.horizontalSpan = 1;
267
			layData1.verticalSpan = 1;
268
			layData1.grabExcessHorizontalSpace = true;
269
			layData1.grabExcessVerticalSpace = true;
270
271
			this.add(fig_1, layData1);
272
			org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel fig_2 = new org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel();
273
274
			setFigureArtifactFigure_name(fig_2);
275
276
			Object layData2 = null;
277
278
			fig_1.add(fig_2, layData2);
279
		}
280
281
		/**
282
		 * @generated
283
		 */
284
		private org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel fArtifactFigure_fixed_artifact;
285
286
		/**
287
		 * @generated
288
		 */
289
		public org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel getFigureArtifactFigure_fixed_artifact() {
290
			return fArtifactFigure_fixed_artifact;
291
		}
292
293
		/**
294
		 * @generated
295
		 */
296
		private void setFigureArtifactFigure_fixed_artifact(org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel fig) {
297
			fArtifactFigure_fixed_artifact = fig;
298
		}
299
300
		/**
301
		 * @generated
302
		 */
303
		private org.eclipse.draw2d.RectangleFigure fArtifactFigure_NameContainer;
304
305
		/**
306
		 * @generated
307
		 */
308
		public org.eclipse.draw2d.RectangleFigure getFigureArtifactFigure_NameContainer() {
309
			return fArtifactFigure_NameContainer;
310
		}
311
312
		/**
313
		 * @generated
314
		 */
315
		private void setFigureArtifactFigure_NameContainer(org.eclipse.draw2d.RectangleFigure fig) {
316
			fArtifactFigure_NameContainer = fig;
317
		}
318
319
		/**
320
		 * @generated
321
		 */
322
		private org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel fArtifactFigure_name;
323
324
		/**
325
		 * @generated
326
		 */
327
		public org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel getFigureArtifactFigure_name() {
328
			return fArtifactFigure_name;
329
		}
330
331
		/**
332
		 * @generated
333
		 */
334
		private void setFigureArtifactFigure_name(org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel fig) {
335
			fArtifactFigure_name = fig;
336
		}
337
338
		/**
339
		 * @generated
340
		 */
341
		private boolean myUseLocalCoordinates = false;
342
343
		/**
344
		 * @generated
345
		 */
346
		protected boolean useLocalCoordinates() {
347
			return myUseLocalCoordinates;
348
		}
349
350
		/**
351
		 * @generated
352
		 */
353
		protected void setUseLocalCoordinates(boolean useLocalCoordinates) {
354
			myUseLocalCoordinates = useLocalCoordinates;
355
		}
356
357
	}
358
359
}
(-)src/org/eclipse/uml2/diagram/component/edit/parts/PortProvidedEditPart.java (+55 lines)
Added Link Here
1
package org.eclipse.uml2.diagram.component.edit.parts;
2
3
import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;
4
import org.eclipse.gmf.runtime.notation.View;
5
import org.eclipse.draw2d.Connection;
6
7
import org.eclipse.gef.EditPolicy;
8
9
import org.eclipse.gmf.runtime.diagram.ui.editparts.ConnectionNodeEditPart;
10
11
import org.eclipse.gmf.runtime.draw2d.ui.figures.PolylineConnectionEx;
12
13
import org.eclipse.uml2.diagram.component.edit.policies.PortProvidedItemSemanticEditPolicy;
14
import org.eclipse.uml2.diagram.component.edit.policies.UMLReferenceConnectionEditPolicy;
15
16
/**
17
 * @generated
18
 */
19
public class PortProvidedEditPart extends ConnectionNodeEditPart {
20
21
	/**
22
	 * @generated
23
	 */
24
	public static final int VISUAL_ID = 4006;
25
26
	/**
27
	 * @generated
28
	 */
29
	public PortProvidedEditPart(View view) {
30
		super(view);
31
	}
32
33
	/**
34
	 * @generated
35
	 */
36
	protected void createDefaultEditPolicies() {
37
		super.createDefaultEditPolicies();
38
		installEditPolicy(EditPolicy.CONNECTION_ROLE, new UMLReferenceConnectionEditPolicy());
39
		installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE, new PortProvidedItemSemanticEditPolicy());
40
41
	}
42
43
	/**
44
	 * Creates figure for this edit part.
45
	 * 
46
	 * Body of this method does not depend on settings in generation model
47
	 * so you may safely remove <i>generated</i> tag and modify it.
48
	 * 
49
	 * @generated
50
	 */
51
	protected Connection createConnectionFigure() {
52
		return new PolylineConnectionEx();
53
	}
54
55
}
(-)src/org/eclipse/uml2/diagram/component/edit/policies/ClassCanonicalEditPolicy.java (+53 lines)
Added Link Here
1
package org.eclipse.uml2.diagram.component.edit.policies;
2
3
import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy;
4
import org.eclipse.gmf.runtime.notation.View;
5
import java.util.Iterator;
6
import java.util.LinkedList;
7
import java.util.List;
8
9
import org.eclipse.emf.ecore.EObject;
10
11
import org.eclipse.uml2.diagram.component.edit.parts.PortEditPart;
12
import org.eclipse.uml2.diagram.component.part.UMLVisualIDRegistry;
13
import org.eclipse.uml2.uml.StructuredClassifier;
14
15
/**
16
 * @generated
17
 */
18
public class ClassCanonicalEditPolicy extends CanonicalEditPolicy {
19
20
	/**
21
	 * @generated
22
	 */
23
	protected List getSemanticChildrenList() {
24
		List result = new LinkedList();
25
		EObject modelObject = ((View) getHost().getModel()).getElement();
26
		View viewObject = (View) getHost().getModel();
27
		EObject nextValue;
28
		int nodeVID;
29
		for (Iterator values = ((StructuredClassifier) modelObject).getOwnedAttributes().iterator(); values.hasNext();) {
30
			nextValue = (EObject) values.next();
31
			nodeVID = UMLVisualIDRegistry.getNodeVisualID(viewObject, nextValue);
32
			if (PortEditPart.VISUAL_ID == nodeVID) {
33
				result.add(nextValue);
34
			}
35
		}
36
		return result;
37
	}
38
39
	/**
40
	 * @generated
41
	 */
42
	protected boolean shouldDeleteView(View view) {
43
		return view.isSetElement() && view.getElement() != null && view.getElement().eIsProxy();
44
	}
45
46
	/**
47
	 * @generated
48
	 */
49
	protected String getDefaultFactoryHint() {
50
		return null;
51
	}
52
53
}
(-)src/org/eclipse/uml2/diagram/component/edit/policies/Component2CanonicalEditPolicy.java (+53 lines)
Added Link Here
1
package org.eclipse.uml2.diagram.component.edit.policies;
2
3
import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy;
4
import org.eclipse.gmf.runtime.notation.View;
5
import java.util.Iterator;
6
import java.util.LinkedList;
7
import java.util.List;
8
9
import org.eclipse.emf.ecore.EObject;
10
11
import org.eclipse.uml2.diagram.component.edit.parts.PortEditPart;
12
import org.eclipse.uml2.diagram.component.part.UMLVisualIDRegistry;
13
import org.eclipse.uml2.uml.StructuredClassifier;
14
15
/**
16
 * @generated
17
 */
18
public class Component2CanonicalEditPolicy extends CanonicalEditPolicy {
19
20
	/**
21
	 * @generated
22
	 */
23
	protected List getSemanticChildrenList() {
24
		List result = new LinkedList();
25
		EObject modelObject = ((View) getHost().getModel()).getElement();
26
		View viewObject = (View) getHost().getModel();
27
		EObject nextValue;
28
		int nodeVID;
29
		for (Iterator values = ((StructuredClassifier) modelObject).getOwnedAttributes().iterator(); values.hasNext();) {
30
			nextValue = (EObject) values.next();
31
			nodeVID = UMLVisualIDRegistry.getNodeVisualID(viewObject, nextValue);
32
			if (PortEditPart.VISUAL_ID == nodeVID) {
33
				result.add(nextValue);
34
			}
35
		}
36
		return result;
37
	}
38
39
	/**
40
	 * @generated
41
	 */
42
	protected boolean shouldDeleteView(View view) {
43
		return view.isSetElement() && view.getElement() != null && view.getElement().eIsProxy();
44
	}
45
46
	/**
47
	 * @generated
48
	 */
49
	protected String getDefaultFactoryHint() {
50
		return null;
51
	}
52
53
}
(-)src/org/eclipse/uml2/diagram/component/edit/parts/InterfaceNameEditPart.java (+544 lines)
Added Link Here
1
package org.eclipse.uml2.diagram.component.edit.parts;
2
3
import org.eclipse.draw2d.Label;
4
import org.eclipse.draw2d.IFigure;
5
import org.eclipse.draw2d.geometry.Point;
6
import org.eclipse.gef.EditPolicy;
7
import org.eclipse.gmf.runtime.diagram.ui.editparts.ITextAwareEditPart;
8
import org.eclipse.gmf.runtime.diagram.ui.editpolicies.LabelDirectEditPolicy;
9
import org.eclipse.gmf.runtime.notation.View;
10
import java.util.Collections;
11
import java.util.List;
12
13
import org.eclipse.emf.common.notify.Notification;
14
15
import org.eclipse.emf.ecore.EObject;
16
17
import org.eclipse.emf.transaction.RunnableWithResult;
18
19
import org.eclipse.gef.AccessibleEditPart;
20
import org.eclipse.gef.Request;
21
22
import org.eclipse.gef.requests.DirectEditRequest;
23
24
import org.eclipse.gef.tools.DirectEditManager;
25
26
import org.eclipse.gmf.runtime.common.ui.services.parser.IParser;
27
import org.eclipse.gmf.runtime.common.ui.services.parser.IParserEditStatus;
28
import org.eclipse.gmf.runtime.common.ui.services.parser.ParserEditStatus;
29
import org.eclipse.gmf.runtime.common.ui.services.parser.ParserOptions;
30
import org.eclipse.gmf.runtime.common.ui.services.parser.ParserService;
31
32
import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;
33
34
import org.eclipse.gmf.runtime.diagram.ui.l10n.DiagramColorRegistry;
35
36
import org.eclipse.gmf.runtime.diagram.ui.requests.RequestConstants;
37
38
import org.eclipse.gmf.runtime.diagram.ui.tools.TextDirectEditManager;
39
40
import org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel;
41
42
import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;
43
44
import org.eclipse.gmf.runtime.emf.type.core.IElementType;
45
46
import org.eclipse.gmf.runtime.emf.ui.services.parser.ISemanticParser;
47
import org.eclipse.gmf.runtime.emf.ui.services.parser.ParserHintAdapter;
48
49
import org.eclipse.gmf.runtime.notation.FontStyle;
50
import org.eclipse.gmf.runtime.notation.NotationPackage;
51
52
import org.eclipse.jface.text.contentassist.IContentAssistProcessor;
53
54
import org.eclipse.jface.viewers.ICellEditorValidator;
55
56
import org.eclipse.swt.SWT;
57
58
import org.eclipse.swt.accessibility.AccessibleEvent;
59
60
import org.eclipse.swt.graphics.Color;
61
import org.eclipse.swt.graphics.FontData;
62
import org.eclipse.swt.graphics.Image;
63
import org.eclipse.uml2.diagram.component.edit.policies.UMLTextSelectionEditPolicy;
64
import org.eclipse.uml2.diagram.component.part.UMLVisualIDRegistry;
65
import org.eclipse.uml2.diagram.component.providers.UMLElementTypes;
66
67
/**
68
 * @generated
69
 */
70
public class InterfaceNameEditPart extends UMLExtNodeLabelEditPart implements ITextAwareEditPart {
71
72
	/**
73
	 * @generated
74
	 */
75
	public static final int VISUAL_ID = 5009;
76
77
	/**
78
	 * @generated
79
	 */
80
	private DirectEditManager manager;
81
82
	/**
83
	 * @generated
84
	 */
85
	private IParser parser;
86
87
	/**
88
	 * @generated
89
	 */
90
	private List parserElements;
91
92
	/**
93
	 * @generated
94
	 */
95
	private String defaultText;
96
97
	/**
98
	 * @generated
99
	 */
100
	static {
101
		registerSnapBackPosition(UMLVisualIDRegistry.getType(InterfaceNameEditPart.VISUAL_ID), new Point(0, 0));
102
	}
103
104
	/**
105
	 * @generated
106
	 */
107
	public InterfaceNameEditPart(View view) {
108
		super(view);
109
	}
110
111
	/**
112
	 * @generated
113
	 */
114
	protected void createDefaultEditPolicies() {
115
		super.createDefaultEditPolicies();
116
		installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE, new LabelDirectEditPolicy());
117
118
	}
119
120
	/**
121
	 * @generated
122
	 */
123
	protected String getLabelTextHelper(IFigure figure) {
124
		if (figure instanceof WrapLabel) {
125
			return ((WrapLabel) figure).getText();
126
		} else {
127
			return ((Label) figure).getText();
128
		}
129
	}
130
131
	/**
132
	 * @generated
133
	 */
134
	protected void setLabelTextHelper(IFigure figure, String text) {
135
		if (figure instanceof WrapLabel) {
136
			((WrapLabel) figure).setText(text);
137
		} else {
138
			((Label) figure).setText(text);
139
		}
140
	}
141
142
	/**
143
	 * @generated
144
	 */
145
	protected Image getLabelIconHelper(IFigure figure) {
146
		if (figure instanceof WrapLabel) {
147
			return ((WrapLabel) figure).getIcon();
148
		} else {
149
			return ((Label) figure).getIcon();
150
		}
151
	}
152
153
	/**
154
	 * @generated
155
	 */
156
	protected void setLabelIconHelper(IFigure figure, Image icon) {
157
		if (figure instanceof WrapLabel) {
158
			((WrapLabel) figure).setIcon(icon);
159
		} else {
160
			((Label) figure).setIcon(icon);
161
		}
162
	}
163
164
	/**
165
	 * @generated
166
	 */
167
	public void setLabel(IFigure figure) {
168
		unregisterVisuals();
169
		setFigure(figure);
170
		defaultText = getLabelTextHelper(figure);
171
		registerVisuals();
172
		refreshVisuals();
173
	}
174
175
	/**
176
	 * @generated
177
	 */
178
	protected List getModelChildren() {
179
		return Collections.EMPTY_LIST;
180
	}
181
182
	/**
183
	 * @generated
184
	 */
185
	public IGraphicalEditPart getChildBySemanticHint(String semanticHint) {
186
		return null;
187
	}
188
189
	/**
190
	 * @generated
191
	 */
192
	protected EObject getParserElement() {
193
		EObject element = resolveSemanticElement();
194
		return element != null ? element : (View) getModel();
195
	}
196
197
	/**
198
	 * @generated
199
	 */
200
	protected Image getLabelIcon() {
201
		return null;
202
	}
203
204
	/**
205
	 * @generated
206
	 */
207
	protected String getLabelText() {
208
		String text = null;
209
		if (getParser() != null) {
210
			text = getParser().getPrintString(new EObjectAdapter(getParserElement()), getParserOptions().intValue());
211
		}
212
		if (text == null || text.length() == 0) {
213
			text = defaultText;
214
		}
215
		return text;
216
	}
217
218
	/**
219
	 * @generated
220
	 */
221
	public void setLabelText(String text) {
222
		setLabelTextHelper(getFigure(), text);
223
		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);
224
		if (pdEditPolicy instanceof UMLTextSelectionEditPolicy) {
225
			((UMLTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();
226
		}
227
	}
228
229
	/**
230
	 * @generated
231
	 */
232
	public String getEditText() {
233
		if (getParser() == null) {
234
			return ""; //$NON-NLS-1$
235
		}
236
		return getParser().getEditString(new EObjectAdapter(getParserElement()), getParserOptions().intValue());
237
	}
238
239
	/**
240
	 * @generated
241
	 */
242
	protected boolean isEditable() {
243
		return getEditText() != null;
244
	}
245
246
	/**
247
	 * @generated
248
	 */
249
	public ICellEditorValidator getEditTextValidator() {
250
		return new ICellEditorValidator() {
251
252
			public String isValid(final Object value) {
253
				if (value instanceof String) {
254
					final EObject element = getParserElement();
255
					final IParser parser = getParser();
256
					try {
257
						IParserEditStatus valid = (IParserEditStatus) getEditingDomain().runExclusive(new RunnableWithResult.Impl() {
258
259
							public void run() {
260
								setResult(parser.isValidEditString(new EObjectAdapter(element), (String) value));
261
							}
262
						});
263
						return valid.getCode() == ParserEditStatus.EDITABLE ? null : valid.getMessage();
264
					} catch (InterruptedException ie) {
265
						ie.printStackTrace();
266
					}
267
				}
268
269
				// shouldn't get here
270
				return null;
271
			}
272
		};
273
	}
274
275
	/**
276
	 * @generated
277
	 */
278
	public IContentAssistProcessor getCompletionProcessor() {
279
		if (getParser() == null) {
280
			return null;
281
		}
282
		return getParser().getCompletionProcessor(new EObjectAdapter(getParserElement()));
283
	}
284
285
	/**
286
	 * @generated
287
	 */
288
	public ParserOptions getParserOptions() {
289
		return ParserOptions.NONE;
290
	}
291
292
	/**
293
	 * @generated
294
	 */
295
	public IParser getParser() {
296
		if (parser == null) {
297
			String parserHint = ((View) getModel()).getType();
298
			ParserHintAdapter hintAdapter = new ParserHintAdapter(getParserElement(), parserHint) {
299
300
				public Object getAdapter(Class adapter) {
301
					if (IElementType.class.equals(adapter)) {
302
						return UMLElementTypes.Interface_3005;
303
					}
304
					return super.getAdapter(adapter);
305
				}
306
			};
307
			parser = ParserService.getInstance().getParser(hintAdapter);
308
		}
309
		return parser;
310
	}
311
312
	/**
313
	 * @generated
314
	 */
315
	protected DirectEditManager getManager() {
316
		if (manager == null) {
317
			setManager(new TextDirectEditManager(this, TextDirectEditManager.getTextCellEditorClass(this), UMLEditPartFactory.getTextCellEditorLocator(this)));
318
		}
319
		return manager;
320
	}
321
322
	/**
323
	 * @generated
324
	 */
325
	protected void setManager(DirectEditManager manager) {
326
		this.manager = manager;
327
	}
328
329
	/**
330
	 * @generated
331
	 */
332
	protected void performDirectEdit() {
333
		getManager().show();
334
	}
335
336
	/**
337
	 * @generated
338
	 */
339
	protected void performDirectEdit(Point eventLocation) {
340
		if (getManager().getClass() == TextDirectEditManager.class) {
341
			((TextDirectEditManager) getManager()).show(eventLocation.getSWTPoint());
342
		}
343
	}
344
345
	/**
346
	 * @generated
347
	 */
348
	private void performDirectEdit(char initialCharacter) {
349
		if (getManager() instanceof TextDirectEditManager) {
350
			((TextDirectEditManager) getManager()).show(initialCharacter);
351
		} else {
352
			performDirectEdit();
353
		}
354
	}
355
356
	/**
357
	 * @generated
358
	 */
359
	protected void performDirectEditRequest(Request request) {
360
		final Request theRequest = request;
361
		try {
362
			getEditingDomain().runExclusive(new Runnable() {
363
364
				public void run() {
365
					if (isActive() && isEditable()) {
366
						if (theRequest.getExtendedData().get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR) instanceof Character) {
367
							Character initialChar = (Character) theRequest.getExtendedData().get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR);
368
							performDirectEdit(initialChar.charValue());
369
						} else if ((theRequest instanceof DirectEditRequest) && (getEditText().equals(getLabelText()))) {
370
							DirectEditRequest editRequest = (DirectEditRequest) theRequest;
371
							performDirectEdit(editRequest.getLocation());
372
						} else {
373
							performDirectEdit();
374
						}
375
					}
376
				}
377
			});
378
		} catch (InterruptedException e) {
379
			e.printStackTrace();
380
		}
381
	}
382
383
	/**
384
	 * @generated
385
	 */
386
	protected void refreshVisuals() {
387
		super.refreshVisuals();
388
		refreshLabel();
389
		refreshFont();
390
		refreshFontColor();
391
		refreshUnderline();
392
		refreshStrikeThrough();
393
	}
394
395
	/**
396
	 * @generated
397
	 */
398
	protected void refreshLabel() {
399
		setLabelTextHelper(getFigure(), getLabelText());
400
		setLabelIconHelper(getFigure(), getLabelIcon());
401
		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);
402
		if (pdEditPolicy instanceof UMLTextSelectionEditPolicy) {
403
			((UMLTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();
404
		}
405
	}
406
407
	/**
408
	 * @generated
409
	 */
410
	protected void refreshUnderline() {
411
		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle());
412
		if (style != null && getFigure() instanceof WrapLabel) {
413
			((WrapLabel) getFigure()).setTextUnderline(style.isUnderline());
414
		}
415
	}
416
417
	/**
418
	 * @generated
419
	 */
420
	protected void refreshStrikeThrough() {
421
		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle());
422
		if (style != null && getFigure() instanceof WrapLabel) {
423
			((WrapLabel) getFigure()).setTextStrikeThrough(style.isStrikeThrough());
424
		}
425
	}
426
427
	/**
428
	 * @generated
429
	 */
430
	protected void refreshFont() {
431
		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle());
432
		if (style != null) {
433
			FontData fontData = new FontData(style.getFontName(), style.getFontHeight(), (style.isBold() ? SWT.BOLD : SWT.NORMAL) | (style.isItalic() ? SWT.ITALIC : SWT.NORMAL));
434
			setFont(fontData);
435
		}
436
	}
437
438
	/**
439
	 * @generated
440
	 */
441
	protected void setFontColor(Color color) {
442
		getFigure().setForegroundColor(color);
443
	}
444
445
	/**
446
	 * @generated
447
	 */
448
	protected void addSemanticListeners() {
449
		if (getParser() instanceof ISemanticParser) {
450
			EObject element = resolveSemanticElement();
451
			parserElements = ((ISemanticParser) getParser()).getSemanticElementsBeingParsed(element);
452
			for (int i = 0; i < parserElements.size(); i++) {
453
				addListenerFilter("SemanticModel" + i, this, (EObject) parserElements.get(i)); //$NON-NLS-1$
454
			}
455
		} else {
456
			super.addSemanticListeners();
457
		}
458
	}
459
460
	/**
461
	 * @generated
462
	 */
463
	protected void removeSemanticListeners() {
464
		if (parserElements != null) {
465
			for (int i = 0; i < parserElements.size(); i++) {
466
				removeListenerFilter("SemanticModel" + i); //$NON-NLS-1$
467
			}
468
		} else {
469
			super.removeSemanticListeners();
470
		}
471
	}
472
473
	/**
474
	 * @generated
475
	 */
476
	protected AccessibleEditPart getAccessibleEditPart() {
477
		if (accessibleEP == null) {
478
			accessibleEP = new AccessibleGraphicalEditPart() {
479
480
				public void getName(AccessibleEvent e) {
481
					e.result = getLabelTextHelper(getFigure());
482
				}
483
			};
484
		}
485
		return accessibleEP;
486
	}
487
488
	/**
489
	 * @generated
490
	 */
491
	private View getFontStyleOwnerView() {
492
		return getPrimaryView();
493
	}
494
495
	/**
496
	 * @generated
497
	 */
498
	protected void handleNotificationEvent(Notification event) {
499
		Object feature = event.getFeature();
500
		if (NotationPackage.eINSTANCE.getFontStyle_FontColor().equals(feature)) {
501
			Integer c = (Integer) event.getNewValue();
502
			setFontColor(DiagramColorRegistry.getInstance().getColor(c));
503
		} else if (NotationPackage.eINSTANCE.getFontStyle_Underline().equals(feature)) {
504
			refreshUnderline();
505
		} else if (NotationPackage.eINSTANCE.getFontStyle_StrikeThrough().equals(feature)) {
506
			refreshStrikeThrough();
507
		} else if (NotationPackage.eINSTANCE.getFontStyle_FontHeight().equals(feature) || NotationPackage.eINSTANCE.getFontStyle_FontName().equals(feature)
508
				|| NotationPackage.eINSTANCE.getFontStyle_Bold().equals(feature) || NotationPackage.eINSTANCE.getFontStyle_Italic().equals(feature)) {
509
			refreshFont();
510
		} else {
511
			if (getParser() != null && getParser().isAffectingEvent(event, getParserOptions().intValue())) {
512
				refreshLabel();
513
			}
514
			if (getParser() instanceof ISemanticParser) {
515
				ISemanticParser modelParser = (ISemanticParser) getParser();
516
				if (modelParser.areSemanticElementsAffected(null, event)) {
517
					removeSemanticListeners();
518
					if (resolveSemanticElement() != null) {
519
						addSemanticListeners();
520
					}
521
					refreshLabel();
522
				}
523
			}
524
		}
525
		super.handleNotificationEvent(event);
526
	}
527
528
	/**
529
	 * @generated
530
	 */
531
	protected IFigure createFigure() {
532
		IFigure label = createFigurePrim();
533
		defaultText = getLabelTextHelper(label);
534
		return label;
535
	}
536
537
	/**
538
	 * @generated
539
	 */
540
	protected IFigure createFigurePrim() {
541
		return new WrapLabel();
542
	}
543
544
}
(-)src/org/eclipse/uml2/diagram/component/providers/UMLAbstractParser.java (+377 lines)
Added Link Here
1
package org.eclipse.uml2.diagram.component.providers;
2
3
import java.text.MessageFormat;
4
import java.text.ParsePosition;
5
6
import org.eclipse.core.runtime.IAdaptable;
7
import org.eclipse.emf.ecore.EClassifier;
8
import org.eclipse.emf.ecore.EDataType;
9
import org.eclipse.emf.ecore.EEnum;
10
import org.eclipse.emf.ecore.EEnumLiteral;
11
import org.eclipse.emf.ecore.EObject;
12
import org.eclipse.emf.ecore.EStructuralFeature;
13
import org.eclipse.gmf.runtime.common.core.command.ICommand;
14
import org.eclipse.gmf.runtime.common.core.command.UnexecutableCommand;
15
import org.eclipse.gmf.runtime.common.ui.services.parser.IParser;
16
import org.eclipse.gmf.runtime.common.ui.services.parser.IParserEditStatus;
17
import org.eclipse.gmf.runtime.common.ui.services.parser.ParserEditStatus;
18
import org.eclipse.gmf.runtime.emf.type.core.commands.SetValueCommand;
19
import org.eclipse.gmf.runtime.emf.type.core.requests.SetRequest;
20
import org.eclipse.jface.text.contentassist.IContentAssistProcessor;
21
import org.eclipse.uml2.diagram.component.part.UMLDiagramEditorPlugin;
22
23
/**
24
 * @generated
25
 */
26
public abstract class UMLAbstractParser implements IParser {
27
28
	/**
29
	 * @generated
30
	 */
31
	private String viewPattern;
32
33
	/**
34
	 * @generated
35
	 */
36
	private MessageFormat viewProcessor;
37
38
	/**
39
	 * @generated
40
	 */
41
	private String editPattern;
42
43
	/**
44
	 * @generated
45
	 */
46
	private MessageFormat editProcessor;
47
48
	/**
49
	 * @generated
50
	 */
51
	public String getViewPattern() {
52
		return viewPattern;
53
	}
54
55
	/**
56
	 * @generated
57
	 */
58
	protected MessageFormat getViewProcessor() {
59
		return viewProcessor;
60
	}
61
62
	/**
63
	 * @generated
64
	 */
65
	public void setViewPattern(String viewPattern) {
66
		this.viewPattern = viewPattern;
67
		viewProcessor = createViewProcessor(viewPattern);
68
	}
69
70
	/**
71
	 * @generated
72
	 */
73
	protected MessageFormat createViewProcessor(String viewPattern) {
74
		return new MessageFormat(viewPattern);
75
	}
76
77
	/**
78
	 * @generated
79
	 */
80
	public String getEditPattern() {
81
		return editPattern;
82
	}
83
84
	/**
85
	 * @generated
86
	 */
87
	protected MessageFormat getEditProcessor() {
88
		return editProcessor;
89
	}
90
91
	/**
92
	 * @generated
93
	 */
94
	public void setEditPattern(String editPattern) {
95
		this.editPattern = editPattern;
96
		editProcessor = createEditProcessor(editPattern);
97
	}
98
99
	/**
100
	 * @generated
101
	 */
102
	protected MessageFormat createEditProcessor(String editPattern) {
103
		return new MessageFormat(editPattern);
104
	}
105
106
	/**
107
	 * @generated
108
	 */
109
	public String getPrintString(IAdaptable adapter, int flags) {
110
		return getStringByPattern(adapter, flags, getViewPattern(), getViewProcessor());
111
	}
112
113
	/**
114
	 * @generated
115
	 */
116
	public String getEditString(IAdaptable adapter, int flags) {
117
		return getStringByPattern(adapter, flags, getEditPattern(), getEditProcessor());
118
	}
119
120
	/**
121
	 * @generated
122
	 */
123
	protected abstract String getStringByPattern(IAdaptable adapter, int flags, String pattern, MessageFormat processor);
124
125
	/**
126
	 * @generated
127
	 */
128
	public IParserEditStatus isValidEditString(IAdaptable element, String editString) {
129
		ParsePosition pos = new ParsePosition(0);
130
		Object[] values = getEditProcessor().parse(editString, pos);
131
		if (values == null) {
132
			return new ParserEditStatus(UMLDiagramEditorPlugin.ID, IParserEditStatus.UNEDITABLE, "Invalid input at " + pos.getErrorIndex());
133
		}
134
		return validateNewValues(values);
135
	}
136
137
	/**
138
	 * @generated
139
	 */
140
	protected IParserEditStatus validateNewValues(Object[] values) {
141
		return ParserEditStatus.EDITABLE_STATUS;
142
	}
143
144
	/**
145
	 * @generated
146
	 */
147
	public ICommand getParseCommand(IAdaptable adapter, String newString, int flags) {
148
		Object[] values = getEditProcessor().parse(newString, new ParsePosition(0));
149
		if (values == null || validateNewValues(values).getCode() != IParserEditStatus.EDITABLE) {
150
			return UnexecutableCommand.INSTANCE;
151
		}
152
		return getParseCommand(adapter, values);
153
	}
154
155
	/**
156
	 * @generated
157
	 */
158
	protected abstract ICommand getParseCommand(IAdaptable adapter, Object[] values);
159
160
	/**
161
	 * @generated
162
	 */
163
	public IContentAssistProcessor getCompletionProcessor(IAdaptable element) {
164
		return null;
165
	}
166
167
	/**
168
	 * @generated
169
	 */
170
	protected ICommand getModificationCommand(EObject element, EStructuralFeature feature, Object value) {
171
		value = getValidNewValue(feature, value);
172
		if (value instanceof InvalidValue) {
173
			return UnexecutableCommand.INSTANCE;
174
		}
175
		SetRequest request = new SetRequest(element, feature, value);
176
		return new SetValueCommand(request);
177
	}
178
179
	/**
180
	 * @generated
181
	 */
182
	protected Object getValidValue(EStructuralFeature feature, Object value) {
183
		EClassifier type = feature.getEType();
184
		if (type instanceof EDataType) {
185
			Class iClass = type.getInstanceClass();
186
			if (String.class.equals(iClass)) {
187
				if (value == null) {
188
					value = ""; //$NON-NLS-1$
189
				}
190
			}
191
		}
192
		return value;
193
	}
194
195
	/**
196
	 * @generated
197
	 */
198
	protected Object getValidNewValue(EStructuralFeature feature, Object value) {
199
		EClassifier type = feature.getEType();
200
		if (type instanceof EDataType) {
201
			Class iClass = type.getInstanceClass();
202
			if (Boolean.TYPE.equals(iClass)) {
203
				if (value instanceof Boolean) {
204
					// ok
205
				} else if (value instanceof String) {
206
					value = Boolean.valueOf((String) value);
207
				} else {
208
					value = new InvalidValue("Value of type Boolean is expected");
209
				}
210
			} else if (Character.TYPE.equals(iClass)) {
211
				if (value instanceof Character) {
212
					// ok
213
				} else if (value instanceof String) {
214
					String s = (String) value;
215
					if (s.length() == 0) {
216
						value = null;
217
					} else {
218
						value = new Character(s.charAt(0));
219
					}
220
				} else {
221
					value = new InvalidValue("Value of type Character is expected");
222
				}
223
			} else if (Byte.TYPE.equals(iClass)) {
224
				if (value instanceof Byte) {
225
					// ok
226
				} else if (value instanceof Number) {
227
					value = new Byte(((Number) value).byteValue());
228
				} else if (value instanceof String) {
229
					String s = (String) value;
230
					if (s.length() == 0) {
231
						value = null;
232
					} else {
233
						try {
234
							value = Byte.valueOf(s);
235
						} catch (NumberFormatException nfe) {
236
							value = new InvalidValue("String value does not convert to Byte value");
237
						}
238
					}
239
				} else {
240
					value = new InvalidValue("Value of type Byte is expected");
241
				}
242
			} else if (Short.TYPE.equals(iClass)) {
243
				if (value instanceof Short) {
244
					// ok
245
				} else if (value instanceof Number) {
246
					value = new Short(((Number) value).shortValue());
247
				} else if (value instanceof String) {
248
					String s = (String) value;
249
					if (s.length() == 0) {
250
						value = null;
251
					} else {
252
						try {
253
							value = Short.valueOf(s);
254
						} catch (NumberFormatException nfe) {
255
							value = new InvalidValue("String value does not convert to Short value");
256
						}
257
					}
258
				} else {
259
					value = new InvalidValue("Value of type Short is expected");
260
				}
261
			} else if (Integer.TYPE.equals(iClass)) {
262
				if (value instanceof Integer) {
263
					// ok
264
				} else if (value instanceof Number) {
265
					value = new Integer(((Number) value).intValue());
266
				} else if (value instanceof String) {
267
					String s = (String) value;
268
					if (s.length() == 0) {
269
						value = null;
270
					} else {
271
						try {
272
							value = Integer.valueOf(s);
273
						} catch (NumberFormatException nfe) {
274
							value = new InvalidValue("String value does not convert to Integer value");
275
						}
276
					}
277
				} else {
278
					value = new InvalidValue("Value of type Integer is expected");
279
				}
280
			} else if (Long.TYPE.equals(iClass)) {
281
				if (value instanceof Long) {
282
					// ok
283
				} else if (value instanceof Number) {
284
					value = new Long(((Number) value).longValue());
285
				} else if (value instanceof String) {
286
					String s = (String) value;
287
					if (s.length() == 0) {
288
						value = null;
289
					} else {
290
						try {
291
							value = Long.valueOf(s);
292
						} catch (NumberFormatException nfe) {
293
							value = new InvalidValue("String value does not convert to Long value");
294
						}
295
					}
296
				} else {
297
					value = new InvalidValue("Value of type Long is expected");
298
				}
299
			} else if (Float.TYPE.equals(iClass)) {
300
				if (value instanceof Float) {
301
					// ok
302
				} else if (value instanceof Number) {
303
					value = new Float(((Number) value).floatValue());
304
				} else if (value instanceof String) {
305
					String s = (String) value;
306
					if (s.length() == 0) {
307
						value = null;
308
					} else {
309
						try {
310
							value = Float.valueOf(s);
311
						} catch (NumberFormatException nfe) {
312
							value = new InvalidValue("String value does not convert to Float value");
313
						}
314
					}
315
				} else {
316
					value = new InvalidValue("Value of type Float is expected");
317
				}
318
			} else if (Double.TYPE.equals(iClass)) {
319
				if (value instanceof Double) {
320
					// ok
321
				} else if (value instanceof Number) {
322
					value = new Double(((Number) value).doubleValue());
323
				} else if (value instanceof String) {
324
					String s = (String) value;
325
					if (s.length() == 0) {
326
						value = null;
327
					} else {
328
						try {
329
							value = Double.valueOf(s);
330
						} catch (NumberFormatException nfe) {
331
							value = new InvalidValue("String value does not convert to Double value");
332
						}
333
					}
334
				} else {
335
					value = new InvalidValue("Value of type Double is expected");
336
				}
337
			} else if (type instanceof EEnum) {
338
				if (value instanceof String) {
339
					EEnumLiteral literal = ((EEnum) type).getEEnumLiteralByLiteral((String) value);
340
					if (literal == null) {
341
						value = new InvalidValue("Unknown literal: " + value);
342
					} else {
343
						value = literal.getInstance();
344
					}
345
				} else {
346
					value = new InvalidValue("Value of type String is expected");
347
				}
348
			}
349
		}
350
		return value;
351
	}
352
353
	/**
354
	 * @generated
355
	 */
356
	protected class InvalidValue {
357
358
		/**
359
		 * @generated
360
		 */
361
		private String description;
362
363
		/**
364
		 * @generated
365
		 */
366
		public InvalidValue(String description) {
367
			this.description = description;
368
		}
369
370
		/**
371
		 * @generated
372
		 */
373
		public String toString() {
374
			return description;
375
		}
376
	}
377
}
(-)src/org/eclipse/uml2/diagram/component/view/factories/PortRequiredViewFactory.java (+52 lines)
Added Link Here
1
package org.eclipse.uml2.diagram.component.view.factories;
2
3
import java.util.ArrayList;
4
import java.util.List;
5
6
import org.eclipse.core.runtime.IAdaptable;
7
8
import org.eclipse.emf.ecore.EAnnotation;
9
import org.eclipse.emf.ecore.EcoreFactory;
10
11
import org.eclipse.gmf.runtime.diagram.ui.view.factories.ConnectionViewFactory;
12
13
import org.eclipse.gmf.runtime.notation.NotationFactory;
14
import org.eclipse.gmf.runtime.notation.View;
15
16
import org.eclipse.uml2.diagram.component.edit.parts.PackageEditPart;
17
import org.eclipse.uml2.diagram.component.part.UMLVisualIDRegistry;
18
19
/**
20
 * @generated
21
 */
22
public class PortRequiredViewFactory extends ConnectionViewFactory {
23
24
	/**
25
	 * @generated 
26
	 */
27
	protected List createStyles(View view) {
28
		List styles = new ArrayList();
29
		styles.add(NotationFactory.eINSTANCE.createRoutingStyle());
30
		styles.add(NotationFactory.eINSTANCE.createFontStyle());
31
		styles.add(NotationFactory.eINSTANCE.createLineStyle());
32
		return styles;
33
	}
34
35
	/**
36
	 * @generated
37
	 */
38
	protected void decorateView(View containerView, View view, IAdaptable semanticAdapter, String semanticHint, int index, boolean persisted) {
39
		if (semanticHint == null) {
40
			semanticHint = UMLVisualIDRegistry.getType(org.eclipse.uml2.diagram.component.edit.parts.PortRequiredEditPart.VISUAL_ID);
41
			view.setType(semanticHint);
42
		}
43
		super.decorateView(containerView, view, semanticAdapter, semanticHint, index, persisted);
44
		if (!PackageEditPart.MODEL_ID.equals(UMLVisualIDRegistry.getModelID(containerView))) {
45
			EAnnotation shortcutAnnotation = EcoreFactory.eINSTANCE.createEAnnotation();
46
			shortcutAnnotation.setSource("Shortcut"); //$NON-NLS-1$
47
			shortcutAnnotation.getDetails().put("modelID", PackageEditPart.MODEL_ID); //$NON-NLS-1$
48
			view.getEAnnotations().add(shortcutAnnotation);
49
		}
50
	}
51
52
}
(-)src/org/eclipse/uml2/diagram/component/edit/policies/Component2ItemSemanticEditPolicy.java (+120 lines)
Added Link Here
1
package org.eclipse.uml2.diagram.component.edit.policies;
2
3
import org.eclipse.gef.commands.Command;
4
import org.eclipse.gmf.runtime.emf.type.core.commands.DestroyElementCommand;
5
import org.eclipse.gmf.runtime.emf.type.core.requests.CreateRelationshipRequest;
6
import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest;
7
import org.eclipse.emf.ecore.EObject;
8
import org.eclipse.emf.ecore.EAnnotation;
9
import org.eclipse.gmf.runtime.notation.View;
10
import org.eclipse.emf.ecore.EClass;
11
12
import org.eclipse.gef.commands.UnexecutableCommand;
13
14
import org.eclipse.gmf.runtime.emf.type.core.commands.CreateElementCommand;
15
16
import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;
17
18
import org.eclipse.uml2.diagram.component.providers.UMLElementTypes;
19
import org.eclipse.uml2.uml.Port;
20
import org.eclipse.uml2.uml.UMLPackage;
21
22
/**
23
 * @generated
24
 */
25
public class Component2ItemSemanticEditPolicy extends UMLBaseItemSemanticEditPolicy {
26
27
	/**
28
	 * @generated
29
	 */
30
	protected Command getCreateCommand(CreateElementRequest req) {
31
		if (UMLElementTypes.Port_3002 == req.getElementType()) {
32
			if (req.getContainmentFeature() == null) {
33
				req.setContainmentFeature(UMLPackage.eINSTANCE.getStructuredClassifier_OwnedAttribute());
34
			}
35
			return getMSLWrapper(new CreatePort_3002Command(req));
36
		}
37
		return super.getCreateCommand(req);
38
	}
39
40
	/**
41
	 * @generated
42
	 */
43
	private static class CreatePort_3002Command extends CreateElementCommand {
44
45
		/**
46
		 * @generated
47
		 */
48
		public CreatePort_3002Command(CreateElementRequest req) {
49
			super(req);
50
		}
51
52
		/**
53
		 * @generated
54
		 */
55
		protected EClass getEClassToEdit() {
56
			return UMLPackage.eINSTANCE.getComponent();
57
		};
58
59
		/**
60
		 * @generated
61
		 */
62
		protected EObject getElementToEdit() {
63
			EObject container = ((CreateElementRequest) getRequest()).getContainer();
64
			if (container instanceof View) {
65
				container = ((View) container).getElement();
66
			}
67
			return container;
68
		}
69
70
		/**
71
		 * @generated
72
		 */
73
		protected EObject doDefaultElementCreation() {
74
			Port newElement = (Port) super.doDefaultElementCreation();
75
			if (newElement != null) {
76
				UMLElementTypes.Initializers.Port_3002.init(newElement);
77
			}
78
			return newElement;
79
		}
80
	}
81
82
	/**
83
	 * @generated
84
	 */
85
	protected Command getDestroyElementCommand(DestroyElementRequest req) {
86
		return getMSLWrapper(new DestroyElementCommand(req) {
87
88
			protected EObject getElementToDestroy() {
89
				View view = (View) getHost().getModel();
90
				EAnnotation annotation = view.getEAnnotation("Shortcut"); //$NON-NLS-1$
91
				if (annotation != null) {
92
					return view;
93
				}
94
				return super.getElementToDestroy();
95
			}
96
97
		});
98
	}
99
100
	/**
101
	 * @generated
102
	 */
103
	protected Command getCreateRelationshipCommand(CreateRelationshipRequest req) {
104
		if (UMLElementTypes.InterfaceRealization_4001 == req.getElementType()) {
105
			return req.getTarget() == null ? getCreateStartOutgoingInterfaceRealization4001Command(req) : null;
106
		}
107
		return super.getCreateRelationshipCommand(req);
108
	}
109
110
	/**
111
	 * @generated
112
	 */
113
	protected Command getCreateStartOutgoingInterfaceRealization4001Command(CreateRelationshipRequest req) {
114
		if (!UMLBaseItemSemanticEditPolicy.LinkConstraints.InterfaceRealization_4001.canCreateLink(req, false)) {
115
			return UnexecutableCommand.INSTANCE;
116
		}
117
		return new Command() {
118
		};
119
	}
120
}
(-).project (+28 lines)
Added Link Here
1
<?xml version="1.0" encoding="UTF-8"?>
2
<projectDescription>
3
	<name>org.eclipse.uml2.diagram.component</name>
4
	<comment></comment>
5
	<projects>
6
	</projects>
7
	<buildSpec>
8
		<buildCommand>
9
			<name>org.eclipse.jdt.core.javabuilder</name>
10
			<arguments>
11
			</arguments>
12
		</buildCommand>
13
		<buildCommand>
14
			<name>org.eclipse.pde.ManifestBuilder</name>
15
			<arguments>
16
			</arguments>
17
		</buildCommand>
18
		<buildCommand>
19
			<name>org.eclipse.pde.SchemaBuilder</name>
20
			<arguments>
21
			</arguments>
22
		</buildCommand>
23
	</buildSpec>
24
	<natures>
25
		<nature>org.eclipse.jdt.core.javanature</nature>
26
		<nature>org.eclipse.pde.PluginNature</nature>
27
	</natures>
28
</projectDescription>
(-)src/org/eclipse/uml2/diagram/component/edit/policies/ComponentCanonicalEditPolicy.java (+53 lines)
Added Link Here
1
package org.eclipse.uml2.diagram.component.edit.policies;
2
3
import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy;
4
import org.eclipse.gmf.runtime.notation.View;
5
import java.util.Iterator;
6
import java.util.LinkedList;
7
import java.util.List;
8
9
import org.eclipse.emf.ecore.EObject;
10
11
import org.eclipse.uml2.diagram.component.edit.parts.PortEditPart;
12
import org.eclipse.uml2.diagram.component.part.UMLVisualIDRegistry;
13
import org.eclipse.uml2.uml.StructuredClassifier;
14
15
/**
16
 * @generated
17
 */
18
public class ComponentCanonicalEditPolicy extends CanonicalEditPolicy {
19
20
	/**
21
	 * @generated
22
	 */
23
	protected List getSemanticChildrenList() {
24
		List result = new LinkedList();
25
		EObject modelObject = ((View) getHost().getModel()).getElement();
26
		View viewObject = (View) getHost().getModel();
27
		EObject nextValue;
28
		int nodeVID;
29
		for (Iterator values = ((StructuredClassifier) modelObject).getOwnedAttributes().iterator(); values.hasNext();) {
30
			nextValue = (EObject) values.next();
31
			nodeVID = UMLVisualIDRegistry.getNodeVisualID(viewObject, nextValue);
32
			if (PortEditPart.VISUAL_ID == nodeVID) {
33
				result.add(nextValue);
34
			}
35
		}
36
		return result;
37
	}
38
39
	/**
40
	 * @generated
41
	 */
42
	protected boolean shouldDeleteView(View view) {
43
		return view.isSetElement() && view.getElement() != null && view.getElement().eIsProxy();
44
	}
45
46
	/**
47
	 * @generated
48
	 */
49
	protected String getDefaultFactoryHint() {
50
		return null;
51
	}
52
53
}
(-)src/org/eclipse/uml2/diagram/component/edit/parts/ClassName2EditPart.java (+567 lines)
Added Link Here
1
package org.eclipse.uml2.diagram.component.edit.parts;
2
3
import java.util.ArrayList;
4
import java.util.List;
5
import org.eclipse.gef.EditPolicy;
6
import org.eclipse.gef.GraphicalEditPart;
7
import org.eclipse.gef.Request;
8
import org.eclipse.gef.commands.Command;
9
import org.eclipse.gef.editpolicies.NonResizableEditPolicy;
10
import org.eclipse.gef.handles.NonResizableHandleKit;
11
import org.eclipse.gmf.runtime.diagram.ui.editparts.ITextAwareEditPart;
12
import org.eclipse.gmf.runtime.diagram.ui.editpolicies.LabelDirectEditPolicy;
13
import org.eclipse.gmf.runtime.notation.View;
14
import java.util.Collections;
15
16
import org.eclipse.draw2d.IFigure;
17
import org.eclipse.draw2d.Label;
18
19
import org.eclipse.draw2d.geometry.Point;
20
21
import org.eclipse.emf.common.notify.Notification;
22
23
import org.eclipse.emf.ecore.EObject;
24
25
import org.eclipse.emf.transaction.RunnableWithResult;
26
27
import org.eclipse.gef.AccessibleEditPart;
28
29
import org.eclipse.gef.requests.DirectEditRequest;
30
31
import org.eclipse.gef.tools.DirectEditManager;
32
33
import org.eclipse.gmf.runtime.common.ui.services.parser.IParser;
34
import org.eclipse.gmf.runtime.common.ui.services.parser.IParserEditStatus;
35
import org.eclipse.gmf.runtime.common.ui.services.parser.ParserEditStatus;
36
import org.eclipse.gmf.runtime.common.ui.services.parser.ParserOptions;
37
import org.eclipse.gmf.runtime.common.ui.services.parser.ParserService;
38
39
import org.eclipse.gmf.runtime.diagram.ui.editparts.CompartmentEditPart;
40
import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;
41
42
import org.eclipse.gmf.runtime.diagram.ui.l10n.DiagramColorRegistry;
43
44
import org.eclipse.gmf.runtime.diagram.ui.requests.RequestConstants;
45
46
import org.eclipse.gmf.runtime.diagram.ui.tools.TextDirectEditManager;
47
48
import org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel;
49
50
import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;
51
52
import org.eclipse.gmf.runtime.emf.type.core.IElementType;
53
54
import org.eclipse.gmf.runtime.emf.ui.services.parser.ISemanticParser;
55
import org.eclipse.gmf.runtime.emf.ui.services.parser.ParserHintAdapter;
56
57
import org.eclipse.gmf.runtime.notation.FontStyle;
58
import org.eclipse.gmf.runtime.notation.NotationPackage;
59
60
import org.eclipse.jface.text.contentassist.IContentAssistProcessor;
61
62
import org.eclipse.jface.viewers.ICellEditorValidator;
63
64
import org.eclipse.swt.SWT;
65
66
import org.eclipse.swt.accessibility.AccessibleEvent;
67
68
import org.eclipse.swt.graphics.Color;
69
import org.eclipse.swt.graphics.FontData;
70
import org.eclipse.swt.graphics.Image;
71
import org.eclipse.uml2.diagram.component.edit.policies.UMLTextSelectionEditPolicy;
72
import org.eclipse.uml2.diagram.component.providers.UMLElementTypes;
73
74
/**
75
 * @generated
76
 */
77
public class ClassName2EditPart extends CompartmentEditPart implements ITextAwareEditPart {
78
79
	/**
80
	 * @generated
81
	 */
82
	public static final int VISUAL_ID = 5008;
83
84
	/**
85
	 * @generated
86
	 */
87
	private DirectEditManager manager;
88
89
	/**
90
	 * @generated
91
	 */
92
	private IParser parser;
93
94
	/**
95
	 * @generated
96
	 */
97
	private List parserElements;
98
99
	/**
100
	 * @generated
101
	 */
102
	private String defaultText;
103
104
	/**
105
	 * @generated
106
	 */
107
	public ClassName2EditPart(View view) {
108
		super(view);
109
	}
110
111
	/**
112
	 * @generated
113
	 */
114
	protected void createDefaultEditPolicies() {
115
		super.createDefaultEditPolicies();
116
		installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE, new LabelDirectEditPolicy());
117
		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE, new NonResizableEditPolicy() {
118
119
			protected List createSelectionHandles() {
120
				List handles = new ArrayList();
121
				NonResizableHandleKit.addMoveHandle((GraphicalEditPart) getHost(), handles);
122
				return handles;
123
			}
124
125
			public Command getCommand(Request request) {
126
				return null;
127
			}
128
129
			public boolean understandsRequest(Request request) {
130
				return false;
131
			}
132
		});
133
134
	}
135
136
	/**
137
	 * @generated
138
	 */
139
	protected String getLabelTextHelper(IFigure figure) {
140
		if (figure instanceof WrapLabel) {
141
			return ((WrapLabel) figure).getText();
142
		} else {
143
			return ((Label) figure).getText();
144
		}
145
	}
146
147
	/**
148
	 * @generated
149
	 */
150
	protected void setLabelTextHelper(IFigure figure, String text) {
151
		if (figure instanceof WrapLabel) {
152
			((WrapLabel) figure).setText(text);
153
		} else {
154
			((Label) figure).setText(text);
155
		}
156
	}
157
158
	/**
159
	 * @generated
160
	 */
161
	protected Image getLabelIconHelper(IFigure figure) {
162
		if (figure instanceof WrapLabel) {
163
			return ((WrapLabel) figure).getIcon();
164
		} else {
165
			return ((Label) figure).getIcon();
166
		}
167
	}
168
169
	/**
170
	 * @generated
171
	 */
172
	protected void setLabelIconHelper(IFigure figure, Image icon) {
173
		if (figure instanceof WrapLabel) {
174
			((WrapLabel) figure).setIcon(icon);
175
		} else {
176
			((Label) figure).setIcon(icon);
177
		}
178
	}
179
180
	/**
181
	 * @generated
182
	 */
183
	public void setLabel(WrapLabel figure) {
184
		unregisterVisuals();
185
		setFigure(figure);
186
		defaultText = getLabelTextHelper(figure);
187
		registerVisuals();
188
		refreshVisuals();
189
	}
190
191
	/**
192
	 * @generated
193
	 */
194
	protected List getModelChildren() {
195
		return Collections.EMPTY_LIST;
196
	}
197
198
	/**
199
	 * @generated
200
	 */
201
	public IGraphicalEditPart getChildBySemanticHint(String semanticHint) {
202
		return null;
203
	}
204
205
	/**
206
	 * @generated
207
	 */
208
	protected EObject getParserElement() {
209
		EObject element = resolveSemanticElement();
210
		return element != null ? element : (View) getModel();
211
	}
212
213
	/**
214
	 * @generated
215
	 */
216
	protected Image getLabelIcon() {
217
		return null;
218
	}
219
220
	/**
221
	 * @generated
222
	 */
223
	protected String getLabelText() {
224
		String text = null;
225
		if (getParser() != null) {
226
			text = getParser().getPrintString(new EObjectAdapter(getParserElement()), getParserOptions().intValue());
227
		}
228
		if (text == null || text.length() == 0) {
229
			text = defaultText;
230
		}
231
		return text;
232
	}
233
234
	/**
235
	 * @generated
236
	 */
237
	public void setLabelText(String text) {
238
		setLabelTextHelper(getFigure(), text);
239
		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);
240
		if (pdEditPolicy instanceof UMLTextSelectionEditPolicy) {
241
			((UMLTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();
242
		}
243
	}
244
245
	/**
246
	 * @generated
247
	 */
248
	public String getEditText() {
249
		if (getParser() == null) {
250
			return ""; //$NON-NLS-1$
251
		}
252
		return getParser().getEditString(new EObjectAdapter(getParserElement()), getParserOptions().intValue());
253
	}
254
255
	/**
256
	 * @generated
257
	 */
258
	protected boolean isEditable() {
259
		return getEditText() != null;
260
	}
261
262
	/**
263
	 * @generated
264
	 */
265
	public ICellEditorValidator getEditTextValidator() {
266
		return new ICellEditorValidator() {
267
268
			public String isValid(final Object value) {
269
				if (value instanceof String) {
270
					final EObject element = getParserElement();
271
					final IParser parser = getParser();
272
					try {
273
						IParserEditStatus valid = (IParserEditStatus) getEditingDomain().runExclusive(new RunnableWithResult.Impl() {
274
275
							public void run() {
276
								setResult(parser.isValidEditString(new EObjectAdapter(element), (String) value));
277
							}
278
						});
279
						return valid.getCode() == ParserEditStatus.EDITABLE ? null : valid.getMessage();
280
					} catch (InterruptedException ie) {
281
						ie.printStackTrace();
282
					}
283
				}
284
285
				// shouldn't get here
286
				return null;
287
			}
288
		};
289
	}
290
291
	/**
292
	 * @generated
293
	 */
294
	public IContentAssistProcessor getCompletionProcessor() {
295
		if (getParser() == null) {
296
			return null;
297
		}
298
		return getParser().getCompletionProcessor(new EObjectAdapter(getParserElement()));
299
	}
300
301
	/**
302
	 * @generated
303
	 */
304
	public ParserOptions getParserOptions() {
305
		return ParserOptions.NONE;
306
	}
307
308
	/**
309
	 * @generated
310
	 */
311
	public IParser getParser() {
312
		if (parser == null) {
313
			String parserHint = ((View) getModel()).getType();
314
			ParserHintAdapter hintAdapter = new ParserHintAdapter(getParserElement(), parserHint) {
315
316
				public Object getAdapter(Class adapter) {
317
					if (IElementType.class.equals(adapter)) {
318
						return UMLElementTypes.Class_2004;
319
					}
320
					return super.getAdapter(adapter);
321
				}
322
			};
323
			parser = ParserService.getInstance().getParser(hintAdapter);
324
		}
325
		return parser;
326
	}
327
328
	/**
329
	 * @generated
330
	 */
331
	protected DirectEditManager getManager() {
332
		if (manager == null) {
333
			setManager(new TextDirectEditManager(this, TextDirectEditManager.getTextCellEditorClass(this), UMLEditPartFactory.getTextCellEditorLocator(this)));
334
		}
335
		return manager;
336
	}
337
338
	/**
339
	 * @generated
340
	 */
341
	protected void setManager(DirectEditManager manager) {
342
		this.manager = manager;
343
	}
344
345
	/**
346
	 * @generated
347
	 */
348
	protected void performDirectEdit() {
349
		getManager().show();
350
	}
351
352
	/**
353
	 * @generated
354
	 */
355
	protected void performDirectEdit(Point eventLocation) {
356
		if (getManager().getClass() == TextDirectEditManager.class) {
357
			((TextDirectEditManager) getManager()).show(eventLocation.getSWTPoint());
358
		}
359
	}
360
361
	/**
362
	 * @generated
363
	 */
364
	private void performDirectEdit(char initialCharacter) {
365
		if (getManager() instanceof TextDirectEditManager) {
366
			((TextDirectEditManager) getManager()).show(initialCharacter);
367
		} else {
368
			performDirectEdit();
369
		}
370
	}
371
372
	/**
373
	 * @generated
374
	 */
375
	protected void performDirectEditRequest(Request request) {
376
		final Request theRequest = request;
377
		try {
378
			getEditingDomain().runExclusive(new Runnable() {
379
380
				public void run() {
381
					if (isActive() && isEditable()) {
382
						if (theRequest.getExtendedData().get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR) instanceof Character) {
383
							Character initialChar = (Character) theRequest.getExtendedData().get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR);
384
							performDirectEdit(initialChar.charValue());
385
						} else if ((theRequest instanceof DirectEditRequest) && (getEditText().equals(getLabelText()))) {
386
							DirectEditRequest editRequest = (DirectEditRequest) theRequest;
387
							performDirectEdit(editRequest.getLocation());
388
						} else {
389
							performDirectEdit();
390
						}
391
					}
392
				}
393
			});
394
		} catch (InterruptedException e) {
395
			e.printStackTrace();
396
		}
397
	}
398
399
	/**
400
	 * @generated
401
	 */
402
	protected void refreshVisuals() {
403
		super.refreshVisuals();
404
		refreshLabel();
405
		refreshFont();
406
		refreshFontColor();
407
		refreshUnderline();
408
		refreshStrikeThrough();
409
	}
410
411
	/**
412
	 * @generated
413
	 */
414
	protected void refreshLabel() {
415
		setLabelTextHelper(getFigure(), getLabelText());
416
		setLabelIconHelper(getFigure(), getLabelIcon());
417
		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);
418
		if (pdEditPolicy instanceof UMLTextSelectionEditPolicy) {
419
			((UMLTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();
420
		}
421
	}
422
423
	/**
424
	 * @generated
425
	 */
426
	protected void refreshUnderline() {
427
		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle());
428
		if (style != null && getFigure() instanceof WrapLabel) {
429
			((WrapLabel) getFigure()).setTextUnderline(style.isUnderline());
430
		}
431
	}
432
433
	/**
434
	 * @generated
435
	 */
436
	protected void refreshStrikeThrough() {
437
		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle());
438
		if (style != null && getFigure() instanceof WrapLabel) {
439
			((WrapLabel) getFigure()).setTextStrikeThrough(style.isStrikeThrough());
440
		}
441
	}
442
443
	/**
444
	 * @generated
445
	 */
446
	protected void refreshFont() {
447
		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle());
448
		if (style != null) {
449
			FontData fontData = new FontData(style.getFontName(), style.getFontHeight(), (style.isBold() ? SWT.BOLD : SWT.NORMAL) | (style.isItalic() ? SWT.ITALIC : SWT.NORMAL));
450
			setFont(fontData);
451
		}
452
	}
453
454
	/**
455
	 * @generated
456
	 */
457
	protected void setFontColor(Color color) {
458
		getFigure().setForegroundColor(color);
459
	}
460
461
	/**
462
	 * @generated
463
	 */
464
	protected void addSemanticListeners() {
465
		if (getParser() instanceof ISemanticParser) {
466
			EObject element = resolveSemanticElement();
467
			parserElements = ((ISemanticParser) getParser()).getSemanticElementsBeingParsed(element);
468
			for (int i = 0; i < parserElements.size(); i++) {
469
				addListenerFilter("SemanticModel" + i, this, (EObject) parserElements.get(i)); //$NON-NLS-1$
470
			}
471
		} else {
472
			super.addSemanticListeners();
473
		}
474
	}
475
476
	/**
477
	 * @generated
478
	 */
479
	protected void removeSemanticListeners() {
480
		if (parserElements != null) {
481
			for (int i = 0; i < parserElements.size(); i++) {
482
				removeListenerFilter("SemanticModel" + i); //$NON-NLS-1$
483
			}
484
		} else {
485
			super.removeSemanticListeners();
486
		}
487
	}
488
489
	/**
490
	 * @generated
491
	 */
492
	protected AccessibleEditPart getAccessibleEditPart() {
493
		if (accessibleEP == null) {
494
			accessibleEP = new AccessibleGraphicalEditPart() {
495
496
				public void getName(AccessibleEvent e) {
497
					e.result = getLabelTextHelper(getFigure());
498
				}
499
			};
500
		}
501
		return accessibleEP;
502
	}
503
504
	/**
505
	 * @generated
506
	 */
507
	private View getFontStyleOwnerView() {
508
		return getPrimaryView();
509
	}
510
511
	/**
512
	 * @generated
513
	 */
514
	protected void addNotationalListeners() {
515
		super.addNotationalListeners();
516
		addListenerFilter("PrimaryView", this, getPrimaryView()); //$NON-NLS-1$
517
	}
518
519
	/**
520
	 * @generated
521
	 */
522
	protected void removeNotationalListeners() {
523
		super.removeNotationalListeners();
524
		removeListenerFilter("PrimaryView"); //$NON-NLS-1$
525
	}
526
527
	/**
528
	 * @generated
529
	 */
530
	protected void handleNotificationEvent(Notification event) {
531
		Object feature = event.getFeature();
532
		if (NotationPackage.eINSTANCE.getFontStyle_FontColor().equals(feature)) {
533
			Integer c = (Integer) event.getNewValue();
534
			setFontColor(DiagramColorRegistry.getInstance().getColor(c));
535
		} else if (NotationPackage.eINSTANCE.getFontStyle_Underline().equals(feature)) {
536
			refreshUnderline();
537
		} else if (NotationPackage.eINSTANCE.getFontStyle_StrikeThrough().equals(feature)) {
538
			refreshStrikeThrough();
539
		} else if (NotationPackage.eINSTANCE.getFontStyle_FontHeight().equals(feature) || NotationPackage.eINSTANCE.getFontStyle_FontName().equals(feature)
540
				|| NotationPackage.eINSTANCE.getFontStyle_Bold().equals(feature) || NotationPackage.eINSTANCE.getFontStyle_Italic().equals(feature)) {
541
			refreshFont();
542
		} else {
543
			if (getParser() != null && getParser().isAffectingEvent(event, getParserOptions().intValue())) {
544
				refreshLabel();
545
			}
546
			if (getParser() instanceof ISemanticParser) {
547
				ISemanticParser modelParser = (ISemanticParser) getParser();
548
				if (modelParser.areSemanticElementsAffected(null, event)) {
549
					removeSemanticListeners();
550
					if (resolveSemanticElement() != null) {
551
						addSemanticListeners();
552
					}
553
					refreshLabel();
554
				}
555
			}
556
		}
557
		super.handleNotificationEvent(event);
558
	}
559
560
	/**
561
	 * @generated
562
	 */
563
	protected IFigure createFigure() {
564
		// Parent should assign one using setLabel method
565
		return null;
566
	}
567
}
(-)src/org/eclipse/uml2/diagram/component/navigator/UMLNavigatorItem.java (+75 lines)
Added Link Here
1
package org.eclipse.uml2.diagram.component.navigator;
2
3
import org.eclipse.emf.ecore.EObject;
4
5
import org.eclipse.gmf.runtime.notation.View;
6
7
import org.eclipse.uml2.diagram.component.part.UMLVisualIDRegistry;
8
9
/**
10
 * @generated
11
 */
12
public class UMLNavigatorItem extends UMLAbstractNavigatorItem {
13
14
	/**
15
	 * @generated
16
	 */
17
	private View myView;
18
19
	/**
20
	 * @generated
21
	 */
22
	public UMLNavigatorItem(View view, Object parent) {
23
		super(parent);
24
		myView = view;
25
	}
26
27
	/**
28
	 * @generated
29
	 */
30
	public View getView() {
31
		return myView;
32
	}
33
34
	/**
35
	 * @generated
36
	 */
37
	public String getModelID() {
38
		return UMLVisualIDRegistry.getModelID(myView);
39
	}
40
41
	/**
42
	 * @generated
43
	 */
44
	public int getVisualID() {
45
		return UMLVisualIDRegistry.getVisualID(myView);
46
	}
47
48
	/**
49
	 * @generated
50
	 */
51
	public Object getAdapter(Class adapter) {
52
		if (View.class.isAssignableFrom(adapter) || EObject.class.isAssignableFrom(adapter)) {
53
			return myView;
54
		}
55
		return super.getAdapter(adapter);
56
	}
57
58
	/**
59
	 * @generated
60
	 */
61
	public boolean equals(Object obj) {
62
		if (obj instanceof UMLNavigatorItem) {
63
			EObject eObject = getView().getElement();
64
			EObject anotherEObject = ((UMLNavigatorItem) obj).getView().getElement();
65
			if (eObject == null) {
66
				return anotherEObject == null;
67
			} else if (anotherEObject == null) {
68
				return false;
69
			}
70
			return eObject.eResource().getURIFragment(eObject).equals(anotherEObject.eResource().getURIFragment(anotherEObject));
71
		}
72
		return super.equals(obj);
73
	}
74
75
}
(-)src/org/eclipse/uml2/diagram/component/view/factories/ComponentContentsViewFactory.java (+77 lines)
Added Link Here
1
package org.eclipse.uml2.diagram.component.view.factories;
2
3
import java.util.ArrayList;
4
import java.util.List;
5
6
import org.eclipse.core.runtime.IAdaptable;
7
8
import org.eclipse.emf.ecore.EAnnotation;
9
import org.eclipse.emf.ecore.EcoreFactory;
10
11
import org.eclipse.gmf.runtime.diagram.ui.view.factories.ListCompartmentViewFactory;
12
13
import org.eclipse.gmf.runtime.notation.DrawerStyle;
14
import org.eclipse.gmf.runtime.notation.NotationFactory;
15
import org.eclipse.gmf.runtime.notation.NotationPackage;
16
import org.eclipse.gmf.runtime.notation.TitleStyle;
17
import org.eclipse.gmf.runtime.notation.View;
18
19
import org.eclipse.uml2.diagram.component.edit.parts.PackageEditPart;
20
import org.eclipse.uml2.diagram.component.part.UMLVisualIDRegistry;
21
22
/**
23
 * @generated
24
 */
25
public class ComponentContentsViewFactory extends ListCompartmentViewFactory {
26
27
	/**
28
	 * @generated 
29
	 */
30
	protected List createStyles(View view) {
31
		List styles = new ArrayList();
32
		styles.add(NotationFactory.eINSTANCE.createDrawerStyle());
33
		styles.add(NotationFactory.eINSTANCE.createSortingStyle());
34
		styles.add(NotationFactory.eINSTANCE.createFilteringStyle());
35
		return styles;
36
	}
37
38
	/**
39
	 * @generated
40
	 */
41
	protected void decorateView(View containerView, View view, IAdaptable semanticAdapter, String semanticHint, int index, boolean persisted) {
42
		if (semanticHint == null) {
43
			semanticHint = UMLVisualIDRegistry.getType(org.eclipse.uml2.diagram.component.edit.parts.ComponentContentsEditPart.VISUAL_ID);
44
			view.setType(semanticHint);
45
		}
46
		super.decorateView(containerView, view, semanticAdapter, semanticHint, index, persisted);
47
		setupCompartmentTitle(view);
48
		setupCompartmentCollapsed(view);
49
		if (!PackageEditPart.MODEL_ID.equals(UMLVisualIDRegistry.getModelID(containerView))) {
50
			EAnnotation shortcutAnnotation = EcoreFactory.eINSTANCE.createEAnnotation();
51
			shortcutAnnotation.setSource("Shortcut"); //$NON-NLS-1$
52
			shortcutAnnotation.getDetails().put("modelID", PackageEditPart.MODEL_ID); //$NON-NLS-1$
53
			view.getEAnnotations().add(shortcutAnnotation);
54
		}
55
	}
56
57
	/**
58
	 * @generated
59
	 */
60
	protected void setupCompartmentTitle(View view) {
61
		TitleStyle titleStyle = (TitleStyle) view.getStyle(NotationPackage.eINSTANCE.getTitleStyle());
62
		if (titleStyle != null) {
63
			titleStyle.setShowTitle(true);
64
		}
65
	}
66
67
	/**
68
	 * @generated
69
	 */
70
	protected void setupCompartmentCollapsed(View view) {
71
		DrawerStyle drawerStyle = (DrawerStyle) view.getStyle(NotationPackage.eINSTANCE.getDrawerStyle());
72
		if (drawerStyle != null) {
73
			drawerStyle.setCollapsed(false);
74
		}
75
	}
76
77
}
(-)src/org/eclipse/uml2/diagram/component/edit/policies/ComponentContents2ItemSemanticEditPolicy.java (+224 lines)
Added Link Here
1
package org.eclipse.uml2.diagram.component.edit.policies;
2
3
import org.eclipse.emf.ecore.EClass;
4
import org.eclipse.emf.ecore.EObject;
5
6
import org.eclipse.gef.commands.Command;
7
8
import org.eclipse.gmf.runtime.emf.type.core.commands.CreateElementCommand;
9
10
import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;
11
12
import org.eclipse.gmf.runtime.notation.View;
13
14
import org.eclipse.uml2.diagram.component.providers.UMLElementTypes;
15
import org.eclipse.uml2.uml.Artifact;
16
import org.eclipse.uml2.uml.Component;
17
import org.eclipse.uml2.uml.Interface;
18
import org.eclipse.uml2.uml.UMLPackage;
19
20
/**
21
 * @generated
22
 */
23
public class ComponentContents2ItemSemanticEditPolicy extends UMLBaseItemSemanticEditPolicy {
24
25
	/**
26
	 * @generated
27
	 */
28
	protected Command getCreateCommand(CreateElementRequest req) {
29
		if (UMLElementTypes.Component_3001 == req.getElementType()) {
30
			if (req.getContainmentFeature() == null) {
31
				req.setContainmentFeature(UMLPackage.eINSTANCE.getComponent_PackagedElement());
32
			}
33
			return getMSLWrapper(new CreateComponent_3001Command(req));
34
		}
35
		if (UMLElementTypes.Artifact_3003 == req.getElementType()) {
36
			if (req.getContainmentFeature() == null) {
37
				req.setContainmentFeature(UMLPackage.eINSTANCE.getComponent_PackagedElement());
38
			}
39
			return getMSLWrapper(new CreateArtifact_3003Command(req));
40
		}
41
		if (UMLElementTypes.Class_3004 == req.getElementType()) {
42
			if (req.getContainmentFeature() == null) {
43
				req.setContainmentFeature(UMLPackage.eINSTANCE.getComponent_PackagedElement());
44
			}
45
			return getMSLWrapper(new CreateClass_3004Command(req));
46
		}
47
		if (UMLElementTypes.Interface_3005 == req.getElementType()) {
48
			if (req.getContainmentFeature() == null) {
49
				req.setContainmentFeature(UMLPackage.eINSTANCE.getComponent_PackagedElement());
50
			}
51
			return getMSLWrapper(new CreateInterface_3005Command(req));
52
		}
53
		return super.getCreateCommand(req);
54
	}
55
56
	/**
57
	 * @generated
58
	 */
59
	private static class CreateComponent_3001Command extends CreateElementCommand {
60
61
		/**
62
		 * @generated
63
		 */
64
		public CreateComponent_3001Command(CreateElementRequest req) {
65
			super(req);
66
		}
67
68
		/**
69
		 * @generated
70
		 */
71
		protected EClass getEClassToEdit() {
72
			return UMLPackage.eINSTANCE.getComponent();
73
		};
74
75
		/**
76
		 * @generated
77
		 */
78
		protected EObject getElementToEdit() {
79
			EObject container = ((CreateElementRequest) getRequest()).getContainer();
80
			if (container instanceof View) {
81
				container = ((View) container).getElement();
82
			}
83
			return container;
84
		}
85
86
		/**
87
		 * @generated
88
		 */
89
		protected EObject doDefaultElementCreation() {
90
			Component newElement = (Component) super.doDefaultElementCreation();
91
			if (newElement != null) {
92
				UMLElementTypes.Initializers.Component_3001.init(newElement);
93
			}
94
			return newElement;
95
		}
96
	}
97
98
	/**
99
	 * @generated
100
	 */
101
	private static class CreateArtifact_3003Command extends CreateElementCommand {
102
103
		/**
104
		 * @generated
105
		 */
106
		public CreateArtifact_3003Command(CreateElementRequest req) {
107
			super(req);
108
		}
109
110
		/**
111
		 * @generated
112
		 */
113
		protected EClass getEClassToEdit() {
114
			return UMLPackage.eINSTANCE.getComponent();
115
		};
116
117
		/**
118
		 * @generated
119
		 */
120
		protected EObject getElementToEdit() {
121
			EObject container = ((CreateElementRequest) getRequest()).getContainer();
122
			if (container instanceof View) {
123
				container = ((View) container).getElement();
124
			}
125
			return container;
126
		}
127
128
		/**
129
		 * @generated
130
		 */
131
		protected EObject doDefaultElementCreation() {
132
			Artifact newElement = (Artifact) super.doDefaultElementCreation();
133
			if (newElement != null) {
134
				UMLElementTypes.Initializers.Artifact_3003.init(newElement);
135
			}
136
			return newElement;
137
		}
138
	}
139
140
	/**
141
	 * @generated
142
	 */
143
	private static class CreateClass_3004Command extends CreateElementCommand {
144
145
		/**
146
		 * @generated
147
		 */
148
		public CreateClass_3004Command(CreateElementRequest req) {
149
			super(req);
150
		}
151
152
		/**
153
		 * @generated
154
		 */
155
		protected EClass getEClassToEdit() {
156
			return UMLPackage.eINSTANCE.getComponent();
157
		};
158
159
		/**
160
		 * @generated
161
		 */
162
		protected EObject getElementToEdit() {
163
			EObject container = ((CreateElementRequest) getRequest()).getContainer();
164
			if (container instanceof View) {
165
				container = ((View) container).getElement();
166
			}
167
			return container;
168
		}
169
170
		/**
171
		 * @generated
172
		 */
173
		protected EObject doDefaultElementCreation() {
174
			org.eclipse.uml2.uml.Class newElement = (org.eclipse.uml2.uml.Class) super.doDefaultElementCreation();
175
			if (newElement != null) {
176
				UMLElementTypes.Initializers.Class_3004.init(newElement);
177
			}
178
			return newElement;
179
		}
180
	}
181
182
	/**
183
	 * @generated
184
	 */
185
	private static class CreateInterface_3005Command extends CreateElementCommand {
186
187
		/**
188
		 * @generated
189
		 */
190
		public CreateInterface_3005Command(CreateElementRequest req) {
191
			super(req);
192
		}
193
194
		/**
195
		 * @generated
196
		 */
197
		protected EClass getEClassToEdit() {
198
			return UMLPackage.eINSTANCE.getComponent();
199
		};
200
201
		/**
202
		 * @generated
203
		 */
204
		protected EObject getElementToEdit() {
205
			EObject container = ((CreateElementRequest) getRequest()).getContainer();
206
			if (container instanceof View) {
207
				container = ((View) container).getElement();
208
			}
209
			return container;
210
		}
211
212
		/**
213
		 * @generated
214
		 */
215
		protected EObject doDefaultElementCreation() {
216
			Interface newElement = (Interface) super.doDefaultElementCreation();
217
			if (newElement != null) {
218
				UMLElementTypes.Initializers.Interface_3005.init(newElement);
219
			}
220
			return newElement;
221
		}
222
	}
223
224
}
(-)src/org/eclipse/uml2/diagram/component/edit/helpers/PortProvidedEditHelperAdvice.java (+9 lines)
Added Link Here
1
package org.eclipse.uml2.diagram.component.edit.helpers;
2
3
import org.eclipse.gmf.runtime.emf.type.core.edithelper.AbstractEditHelperAdvice;
4
5
/**
6
 * @generated
7
 */
8
public class PortProvidedEditHelperAdvice extends AbstractEditHelperAdvice {
9
}
(-)src/org/eclipse/uml2/diagram/component/providers/UMLIconProvider.java (+31 lines)
Added Link Here
1
package org.eclipse.uml2.diagram.component.providers;
2
3
import org.eclipse.core.runtime.IAdaptable;
4
import org.eclipse.gmf.runtime.common.core.service.AbstractProvider;
5
import org.eclipse.gmf.runtime.common.core.service.IOperation;
6
import org.eclipse.gmf.runtime.common.ui.services.icon.GetIconOperation;
7
import org.eclipse.gmf.runtime.common.ui.services.icon.IIconProvider;
8
import org.eclipse.swt.graphics.Image;
9
10
/**
11
 * @generated
12
 */
13
public class UMLIconProvider extends AbstractProvider implements IIconProvider {
14
15
	/**
16
	 * @generated
17
	 */
18
	public Image getIcon(IAdaptable hint, int flags) {
19
		return UMLElementTypes.getImage(hint);
20
	}
21
22
	/**
23
	 * @generated
24
	 */
25
	public boolean provides(IOperation operation) {
26
		if (operation instanceof GetIconOperation) {
27
			return ((GetIconOperation) operation).execute(this) != null;
28
		}
29
		return false;
30
	}
31
}
(-)src/org/eclipse/uml2/diagram/component/edit/policies/PortProvidedItemSemanticEditPolicy.java (+20 lines)
Added Link Here
1
package org.eclipse.uml2.diagram.component.edit.policies;
2
3
import org.eclipse.gef.commands.Command;
4
5
import org.eclipse.gmf.runtime.emf.type.core.commands.DestroyReferenceCommand;
6
7
import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyReferenceRequest;
8
9
/**
10
 * @generated
11
 */
12
public class PortProvidedItemSemanticEditPolicy extends UMLBaseItemSemanticEditPolicy {
13
14
	/**
15
	 * @generated
16
	 */
17
	protected Command getDestroyReferenceCommand(DestroyReferenceRequest req) {
18
		return getMSLWrapper(new DestroyReferenceCommand(req));
19
	}
20
}
(-)src/org/eclipse/uml2/diagram/component/edit/helpers/UMLBaseEditHelper.java (+68 lines)
Added Link Here
1
package org.eclipse.uml2.diagram.component.edit.helpers;
2
3
import org.eclipse.gmf.runtime.common.core.command.CompositeCommand;
4
import org.eclipse.gmf.runtime.common.core.command.ICommand;
5
import org.eclipse.gmf.runtime.emf.type.core.edithelper.AbstractEditHelper;
6
import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;
7
import org.eclipse.gmf.runtime.emf.type.core.requests.CreateRelationshipRequest;
8
import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest;
9
import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyReferenceRequest;
10
import org.eclipse.gmf.runtime.emf.type.core.requests.IEditCommandRequest;
11
12
/**
13
 * @generated
14
 */
15
public class UMLBaseEditHelper extends AbstractEditHelper {
16
17
	/**
18
	 * @generated
19
	 */
20
	public static final String EDIT_POLICY_COMMAND = "edit policy command"; //$NON-NLS-1$
21
22
	/**
23
	 * @generated
24
	 */
25
	protected ICommand getInsteadCommand(IEditCommandRequest req) {
26
		ICommand epCommand = (ICommand) req.getParameter(EDIT_POLICY_COMMAND);
27
		req.setParameter(EDIT_POLICY_COMMAND, null);
28
		ICommand ehCommand = super.getInsteadCommand(req);
29
		if (epCommand == null) {
30
			return ehCommand;
31
		}
32
		if (ehCommand == null) {
33
			return epCommand;
34
		}
35
		CompositeCommand command = new CompositeCommand(null);
36
		command.add(epCommand);
37
		command.add(ehCommand);
38
		return command;
39
	}
40
41
	/**
42
	 * @generated
43
	 */
44
	protected ICommand getCreateCommand(CreateElementRequest req) {
45
		return null;
46
	}
47
48
	/**
49
	 * @generated
50
	 */
51
	protected ICommand getCreateRelationshipCommand(CreateRelationshipRequest req) {
52
		return null;
53
	}
54
55
	/**
56
	 * @generated
57
	 */
58
	protected ICommand getDestroyElementCommand(DestroyElementRequest req) {
59
		return null;
60
	}
61
62
	/**
63
	 * @generated
64
	 */
65
	protected ICommand getDestroyReferenceCommand(DestroyReferenceRequest req) {
66
		return null;
67
	}
68
}
(-)src/org/eclipse/uml2/diagram/component/edit/parts/PortRequiredEditPart.java (+79 lines)
Added Link Here
1
package org.eclipse.uml2.diagram.component.edit.parts;
2
3
import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;
4
import org.eclipse.gmf.runtime.notation.View;
5
import org.eclipse.draw2d.Connection;
6
7
import org.eclipse.gef.EditPolicy;
8
9
import org.eclipse.gmf.runtime.diagram.ui.editparts.ConnectionNodeEditPart;
10
11
import org.eclipse.uml2.diagram.component.edit.policies.PortRequiredItemSemanticEditPolicy;
12
import org.eclipse.uml2.diagram.component.edit.policies.UMLReferenceConnectionEditPolicy;
13
14
/**
15
 * @generated
16
 */
17
public class PortRequiredEditPart extends ConnectionNodeEditPart {
18
19
	/**
20
	 * @generated
21
	 */
22
	public static final int VISUAL_ID = 4004;
23
24
	/**
25
	 * @generated
26
	 */
27
	public PortRequiredEditPart(View view) {
28
		super(view);
29
	}
30
31
	/**
32
	 * @generated
33
	 */
34
	protected void createDefaultEditPolicies() {
35
		super.createDefaultEditPolicies();
36
		installEditPolicy(EditPolicy.CONNECTION_ROLE, new UMLReferenceConnectionEditPolicy());
37
		installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE, new PortRequiredItemSemanticEditPolicy());
38
39
	}
40
41
	/**
42
	 * Creates figure for this edit part.
43
	 * 
44
	 * Body of this method does not depend on settings in generation model
45
	 * so you may safely remove <i>generated</i> tag and modify it.
46
	 * 
47
	 * @generated
48
	 */
49
	protected Connection createConnectionFigure() {
50
		return new RequiredInterfaceConnectionFigure();
51
	}
52
53
	/**
54
	 * @generated
55
	 */
56
	public class RequiredInterfaceConnectionFigure extends org.eclipse.gmf.runtime.draw2d.ui.figures.PolylineConnectionEx {
57
58
		/**
59
		 * @generated
60
		 */
61
		public RequiredInterfaceConnectionFigure() {
62
63
			setTargetDecoration(createTargetDecoration());
64
		}
65
66
		/**
67
		 * @generated
68
		 */
69
		private org.eclipse.uml2.diagram.common.draw2d.RequiredInterfaceDecoration createTargetDecoration() {
70
			org.eclipse.uml2.diagram.common.draw2d.RequiredInterfaceDecoration df = new org.eclipse.uml2.diagram.common.draw2d.RequiredInterfaceDecoration();
71
72
			df.setRadius(10);
73
74
			return df;
75
		}
76
77
	}
78
79
}
(-)src/org/eclipse/uml2/diagram/component/edit/policies/ComponentContentsCanonicalEditPolicy.java (+71 lines)
Added Link Here
1
package org.eclipse.uml2.diagram.component.edit.policies;
2
3
import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy;
4
import org.eclipse.gmf.runtime.notation.View;
5
import java.util.Iterator;
6
import java.util.LinkedList;
7
import java.util.List;
8
9
import org.eclipse.emf.ecore.EObject;
10
11
import org.eclipse.uml2.diagram.component.edit.parts.ArtifactEditPart;
12
import org.eclipse.uml2.diagram.component.edit.parts.ClassEditPart;
13
import org.eclipse.uml2.diagram.component.edit.parts.Component2EditPart;
14
import org.eclipse.uml2.diagram.component.edit.parts.InterfaceEditPart;
15
import org.eclipse.uml2.diagram.component.part.UMLVisualIDRegistry;
16
import org.eclipse.uml2.uml.Component;
17
18
/**
19
 * @generated
20
 */
21
public class ComponentContentsCanonicalEditPolicy extends CanonicalEditPolicy {
22
23
	/**
24
	 * @generated
25
	 */
26
	protected List getSemanticChildrenList() {
27
		List result = new LinkedList();
28
		EObject modelObject = ((View) getHost().getModel()).getElement();
29
		View viewObject = (View) getHost().getModel();
30
		EObject nextValue;
31
		int nodeVID;
32
		for (Iterator values = ((Component) modelObject).getPackagedElements().iterator(); values.hasNext();) {
33
			nextValue = (EObject) values.next();
34
			nodeVID = UMLVisualIDRegistry.getNodeVisualID(viewObject, nextValue);
35
			switch (nodeVID) {
36
			case Component2EditPart.VISUAL_ID: {
37
				result.add(nextValue);
38
				break;
39
			}
40
			case ArtifactEditPart.VISUAL_ID: {
41
				result.add(nextValue);
42
				break;
43
			}
44
			case ClassEditPart.VISUAL_ID: {
45
				result.add(nextValue);
46
				break;
47
			}
48
			case InterfaceEditPart.VISUAL_ID: {
49
				result.add(nextValue);
50
				break;
51
			}
52
			}
53
		}
54
		return result;
55
	}
56
57
	/**
58
	 * @generated
59
	 */
60
	protected boolean shouldDeleteView(View view) {
61
		return view.isSetElement() && view.getElement() != null && view.getElement().eIsProxy();
62
	}
63
64
	/**
65
	 * @generated
66
	 */
67
	protected String getDefaultFactoryHint() {
68
		return null;
69
	}
70
71
}
(-)src/org/eclipse/uml2/diagram/component/edit/parts/InterfaceRealizationEditPart.java (+51 lines)
Added Link Here
1
package org.eclipse.uml2.diagram.component.edit.parts;
2
3
import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;
4
import org.eclipse.gmf.runtime.notation.View;
5
import org.eclipse.draw2d.Connection;
6
7
import org.eclipse.gmf.runtime.diagram.ui.editparts.ConnectionNodeEditPart;
8
9
import org.eclipse.gmf.runtime.draw2d.ui.figures.PolylineConnectionEx;
10
11
import org.eclipse.uml2.diagram.component.edit.policies.InterfaceRealizationItemSemanticEditPolicy;
12
13
/**
14
 * @generated
15
 */
16
public class InterfaceRealizationEditPart extends ConnectionNodeEditPart {
17
18
	/**
19
	 * @generated
20
	 */
21
	public static final int VISUAL_ID = 4001;
22
23
	/**
24
	 * @generated
25
	 */
26
	public InterfaceRealizationEditPart(View view) {
27
		super(view);
28
	}
29
30
	/**
31
	 * @generated
32
	 */
33
	protected void createDefaultEditPolicies() {
34
		super.createDefaultEditPolicies();
35
		installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE, new InterfaceRealizationItemSemanticEditPolicy());
36
37
	}
38
39
	/**
40
	 * Creates figure for this edit part.
41
	 * 
42
	 * Body of this method does not depend on settings in generation model
43
	 * so you may safely remove <i>generated</i> tag and modify it.
44
	 * 
45
	 * @generated
46
	 */
47
	protected Connection createConnectionFigure() {
48
		return new PolylineConnectionEx();
49
	}
50
51
}
(-)src/org/eclipse/uml2/diagram/component/part/UMLLoadResourceAction.java (+63 lines)
Added Link Here
1
package org.eclipse.uml2.diagram.component.part;
2
3
import org.eclipse.emf.edit.ui.action.LoadResourceAction.LoadResourceDialog;
4
import org.eclipse.jface.action.IAction;
5
import org.eclipse.jface.viewers.ISelection;
6
import org.eclipse.jface.viewers.IStructuredSelection;
7
import org.eclipse.swt.widgets.Shell;
8
import org.eclipse.ui.IObjectActionDelegate;
9
import org.eclipse.ui.IWorkbenchPart;
10
import org.eclipse.uml2.diagram.component.edit.parts.PackageEditPart;
11
12
/**
13
 * @generated
14
 */
15
public class UMLLoadResourceAction implements IObjectActionDelegate {
16
17
	/**
18
	 * @generated
19
	 */
20
	private PackageEditPart mySelectedElement;
21
22
	/**
23
	 * @generated
24
	 */
25
	private Shell myShell;
26
27
	/**
28
	 * @generated
29
	 */
30
	public void setActivePart(IAction action, IWorkbenchPart targetPart) {
31
		myShell = targetPart.getSite().getShell();
32
	}
33
34
	/**
35
	 * @generated
36
	 */
37
	public void run(IAction action) {
38
		LoadResourceDialog loadResourceDialog = new LoadResourceDialog(myShell, mySelectedElement.getEditingDomain());
39
		loadResourceDialog.open();
40
	}
41
42
	/**
43
	 * @generated
44
	 */
45
	public void selectionChanged(IAction action, ISelection selection) {
46
		mySelectedElement = null;
47
		if (selection instanceof IStructuredSelection) {
48
			IStructuredSelection structuredSelection = (IStructuredSelection) selection;
49
			if (structuredSelection.size() == 1 && structuredSelection.getFirstElement() instanceof PackageEditPart) {
50
				mySelectedElement = (PackageEditPart) structuredSelection.getFirstElement();
51
			}
52
		}
53
		action.setEnabled(isEnabled());
54
	}
55
56
	/**
57
	 * @generated
58
	 */
59
	private boolean isEnabled() {
60
		return mySelectedElement != null;
61
	}
62
63
}
(-)src/org/eclipse/uml2/diagram/component/edit/parts/Component2EditPart.java (+418 lines)
Added Link Here
1
package org.eclipse.uml2.diagram.component.edit.parts;
2
3
import org.eclipse.draw2d.IFigure;
4
import org.eclipse.draw2d.PositionConstants;
5
import org.eclipse.draw2d.StackLayout;
6
7
import org.eclipse.gef.EditPart;
8
import org.eclipse.gef.EditPolicy;
9
import org.eclipse.gef.Request;
10
11
import org.eclipse.gef.commands.Command;
12
13
import org.eclipse.gef.editpolicies.LayoutEditPolicy;
14
import org.eclipse.gef.editpolicies.NonResizableEditPolicy;
15
16
import org.eclipse.gef.requests.CreateRequest;
17
18
import org.eclipse.gmf.runtime.diagram.ui.editparts.AbstractBorderedShapeEditPart;
19
import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;
20
21
import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy;
22
import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy;
23
import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;
24
25
import org.eclipse.gmf.runtime.diagram.ui.figures.BorderItemLocator;
26
27
import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout;
28
29
import org.eclipse.gmf.runtime.gef.ui.figures.DefaultSizeNodeFigure;
30
import org.eclipse.gmf.runtime.gef.ui.figures.NodeFigure;
31
32
import org.eclipse.gmf.runtime.notation.View;
33
34
import org.eclipse.uml2.diagram.component.edit.policies.Component2CanonicalEditPolicy;
35
import org.eclipse.uml2.diagram.component.edit.policies.Component2ItemSemanticEditPolicy;
36
import org.eclipse.uml2.diagram.component.part.UMLVisualIDRegistry;
37
38
/**
39
 * @generated
40
 */
41
public class Component2EditPart extends AbstractBorderedShapeEditPart {
42
43
	/**
44
	 * @generated
45
	 */
46
	public static final int VISUAL_ID = 3001;
47
48
	/**
49
	 * @generated
50
	 */
51
	protected IFigure contentPane;
52
53
	/**
54
	 * @generated
55
	 */
56
	protected IFigure primaryShape;
57
58
	/**
59
	 * @generated
60
	 */
61
	public Component2EditPart(View view) {
62
		super(view);
63
	}
64
65
	/**
66
	 * @generated
67
	 */
68
	protected void createDefaultEditPolicies() {
69
		installEditPolicy(EditPolicyRoles.CREATION_ROLE, new CreationEditPolicy());
70
		super.createDefaultEditPolicies();
71
		installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE, new Component2ItemSemanticEditPolicy());
72
		installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE, new DragDropEditPolicy());
73
		installEditPolicy(EditPolicyRoles.CANONICAL_ROLE, new Component2CanonicalEditPolicy());
74
		installEditPolicy(EditPolicy.LAYOUT_ROLE, createLayoutEditPolicy());
75
76
	}
77
78
	/**
79
	 * @generated
80
	 */
81
	protected LayoutEditPolicy createLayoutEditPolicy() {
82
		LayoutEditPolicy lep = new LayoutEditPolicy() {
83
84
			protected EditPolicy createChildEditPolicy(EditPart child) {
85
				EditPolicy result = child.getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);
86
				if (result == null) {
87
					result = new NonResizableEditPolicy();
88
				}
89
				return result;
90
			}
91
92
			protected Command getMoveChildrenCommand(Request request) {
93
				return null;
94
			}
95
96
			protected Command getCreateCommand(CreateRequest request) {
97
				return null;
98
			}
99
		};
100
		return lep;
101
	}
102
103
	/**
104
	 * @generated
105
	 */
106
	protected IFigure createNodeShape() {
107
		ComponentFigure figure = new ComponentFigure();
108
		return primaryShape = figure;
109
	}
110
111
	/**
112
	 * @generated
113
	 */
114
	public ComponentFigure getPrimaryShape() {
115
		return (ComponentFigure) primaryShape;
116
	}
117
118
	/**
119
	 * @generated 
120
	 */
121
	protected IFigure getContentPaneFor(IGraphicalEditPart editPart) {
122
		if (editPart instanceof ComponentContents2EditPart) {
123
			return getPrimaryShape().getFigureComponentFigure_Body();
124
		}
125
		if (editPart instanceof PortEditPart) {
126
			return getBorderedFigure().getBorderItemContainer();
127
		}
128
129
		return super.getContentPaneFor(editPart);
130
	}
131
132
	/**
133
	 * @generated
134
	 */
135
	protected boolean addFixedChild(EditPart childEditPart) {
136
		if (childEditPart instanceof ComponentNameEditPart) {
137
			((ComponentNameEditPart) childEditPart).setLabel(getPrimaryShape().getFigureComponentFigure_name());
138
			return true;
139
		}
140
		if (childEditPart instanceof ComponentContents2EditPart) {
141
			IFigure pane = getPrimaryShape().getFigureComponentFigure_Body();
142
			setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way 
143
			pane.add(((ComponentContents2EditPart) childEditPart).getFigure());
144
			return true;
145
		}
146
		if (childEditPart instanceof PortEditPart) {
147
			BorderItemLocator locator = new BorderItemLocator(getMainFigure(), PositionConstants.NONE);
148
			getBorderedFigure().getBorderItemContainer().add(((PortEditPart) childEditPart).getFigure(), locator);
149
			return true;
150
		}
151
		return false;
152
	}
153
154
	/**
155
	 * @generated
156
	 */
157
	protected boolean removeFixedChild(EditPart childEditPart) {
158
		if (childEditPart instanceof ComponentContents2EditPart) {
159
			IFigure pane = getPrimaryShape().getFigureComponentFigure_Body();
160
			pane.remove(((ComponentContents2EditPart) childEditPart).getFigure());
161
			return true;
162
		}
163
		if (childEditPart instanceof PortEditPart) {
164
			getBorderedFigure().getBorderItemContainer().remove(((PortEditPart) childEditPart).getFigure());
165
			return true;
166
		}
167
		return false;
168
	}
169
170
	/**
171
	 * @generated
172
	 */
173
	protected NodeFigure createNodePlate() {
174
		DefaultSizeNodeFigure result = new DefaultSizeNodeFigure(getMapMode().DPtoLP(100), getMapMode().DPtoLP(80));
175
		return result;
176
	}
177
178
	/**
179
	 * Creates figure for this edit part.
180
	 * 
181
	 * Body of this method does not depend on settings in generation model
182
	 * so you may safely remove <i>generated</i> tag and modify it.
183
	 * 
184
	 * @generated
185
	 */
186
	protected NodeFigure createMainFigure() {
187
		NodeFigure figure = createNodePlate();
188
		figure.setLayoutManager(new StackLayout());
189
		IFigure shape = createNodeShape();
190
		figure.add(shape);
191
		contentPane = setupContentPane(shape);
192
		return figure;
193
	}
194
195
	/**
196
	 * Default implementation treats passed figure as content pane.
197
	 * Respects layout one may have set for generated figure.
198
	 * @param nodeShape instance of generated figure class
199
	 * @generated
200
	 */
201
	protected IFigure setupContentPane(IFigure nodeShape) {
202
		if (nodeShape.getLayoutManager() == null) {
203
			ConstrainedToolbarLayout layout = new ConstrainedToolbarLayout();
204
			layout.setSpacing(getMapMode().DPtoLP(5));
205
			nodeShape.setLayoutManager(layout);
206
		}
207
		return nodeShape; // use nodeShape itself as contentPane
208
	}
209
210
	/**
211
	 * @generated
212
	 */
213
	public IFigure getContentPane() {
214
		if (contentPane != null) {
215
			return contentPane;
216
		}
217
		return super.getContentPane();
218
	}
219
220
	/**
221
	 * @generated
222
	 */
223
	public EditPart getPrimaryChildEditPart() {
224
		return getChildBySemanticHint(UMLVisualIDRegistry.getType(ComponentNameEditPart.VISUAL_ID));
225
	}
226
227
	/**
228
	 * @generated
229
	 */
230
	protected void addChildVisual(EditPart childEditPart, int index) {
231
		if (addFixedChild(childEditPart)) {
232
			return;
233
		}
234
		super.addChildVisual(childEditPart, -1);
235
	}
236
237
	/**
238
	 * @generated
239
	 */
240
	protected void removeChildVisual(EditPart childEditPart) {
241
		if (removeFixedChild(childEditPart)) {
242
			return;
243
		}
244
		super.removeChildVisual(childEditPart);
245
	}
246
247
	/**
248
	 * @generated
249
	 */
250
	public class ComponentFigure extends org.eclipse.draw2d.RectangleFigure {
251
252
		/**
253
		 * @generated
254
		 */
255
		public ComponentFigure() {
256
257
			org.eclipse.gmf.internal.codegen.draw2d.GridLayout myGenLayoutManager = new org.eclipse.gmf.internal.codegen.draw2d.GridLayout();
258
			myGenLayoutManager.numColumns = 1;
259
			myGenLayoutManager.makeColumnsEqualWidth = true;
260
			myGenLayoutManager.marginWidth = 0;
261
			myGenLayoutManager.marginHeight = 0;
262
			myGenLayoutManager.horizontalSpacing = 0;
263
			myGenLayoutManager.verticalSpacing = 0;
264
265
			this.setLayoutManager(myGenLayoutManager);
266
267
			this.setFill(false);
268
			this.setOutline(false);
269
			createContents();
270
		}
271
272
		/**
273
		 * @generated
274
		 */
275
		private void createContents() {
276
			org.eclipse.draw2d.RectangleFigure fig_0 = new org.eclipse.draw2d.RectangleFigure();
277
278
			fig_0.setMinimumSize(new org.eclipse.draw2d.geometry.Dimension(getMapMode().DPtoLP(0), getMapMode().DPtoLP(35)));
279
280
			org.eclipse.gmf.internal.codegen.draw2d.GridLayout layouter0 = new org.eclipse.gmf.internal.codegen.draw2d.GridLayout();
281
			layouter0.numColumns = 1;
282
			layouter0.makeColumnsEqualWidth = false;
283
284
			fig_0.setLayoutManager(layouter0);
285
286
			setFigureComponentFigure_LabelsContainer(fig_0);
287
			org.eclipse.gmf.internal.codegen.draw2d.GridLayoutData layData0 = new org.eclipse.gmf.internal.codegen.draw2d.GridLayoutData();
288
			layData0.verticalAlignment = org.eclipse.gmf.internal.codegen.draw2d.GridLayoutData.FILL;
289
			layData0.horizontalAlignment = org.eclipse.gmf.internal.codegen.draw2d.GridLayoutData.FILL;
290
			layData0.horizontalIndent = 0;
291
			layData0.horizontalSpan = 2;
292
			layData0.verticalSpan = 1;
293
			layData0.grabExcessHorizontalSpace = true;
294
			layData0.grabExcessVerticalSpace = false;
295
296
			this.add(fig_0, layData0);
297
			org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel fig_1 = new org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel();
298
			fig_1.setText("\u00ABcomponent\u00BB");
299
300
			org.eclipse.gmf.internal.codegen.draw2d.GridLayoutData layData1 = new org.eclipse.gmf.internal.codegen.draw2d.GridLayoutData();
301
			layData1.verticalAlignment = org.eclipse.gmf.internal.codegen.draw2d.GridLayoutData.CENTER;
302
			layData1.horizontalAlignment = org.eclipse.gmf.internal.codegen.draw2d.GridLayoutData.CENTER;
303
			layData1.horizontalIndent = 0;
304
			layData1.horizontalSpan = 1;
305
			layData1.verticalSpan = 1;
306
			layData1.grabExcessHorizontalSpace = true;
307
			layData1.grabExcessVerticalSpace = false;
308
309
			fig_0.add(fig_1, layData1);
310
			org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel fig_2 = new org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel();
311
312
			setFigureComponentFigure_name(fig_2);
313
			org.eclipse.gmf.internal.codegen.draw2d.GridLayoutData layData2 = new org.eclipse.gmf.internal.codegen.draw2d.GridLayoutData();
314
			layData2.verticalAlignment = org.eclipse.gmf.internal.codegen.draw2d.GridLayoutData.CENTER;
315
			layData2.horizontalAlignment = org.eclipse.gmf.internal.codegen.draw2d.GridLayoutData.CENTER;
316
			layData2.horizontalIndent = 0;
317
			layData2.horizontalSpan = 1;
318
			layData2.verticalSpan = 1;
319
			layData2.grabExcessHorizontalSpace = true;
320
			layData2.grabExcessVerticalSpace = false;
321
322
			fig_0.add(fig_2, layData2);
323
			org.eclipse.draw2d.RectangleFigure fig_3 = new org.eclipse.draw2d.RectangleFigure();
324
325
			fig_3.setMinimumSize(new org.eclipse.draw2d.geometry.Dimension(getMapMode().DPtoLP(0), getMapMode().DPtoLP(55)));
326
327
			setFigureComponentFigure_Body(fig_3);
328
			org.eclipse.gmf.internal.codegen.draw2d.GridLayoutData layData3 = new org.eclipse.gmf.internal.codegen.draw2d.GridLayoutData();
329
			layData3.verticalAlignment = org.eclipse.gmf.internal.codegen.draw2d.GridLayoutData.FILL;
330
			layData3.horizontalAlignment = org.eclipse.gmf.internal.codegen.draw2d.GridLayoutData.FILL;
331
			layData3.horizontalIndent = 0;
332
			layData3.horizontalSpan = 1;
333
			layData3.verticalSpan = 1;
334
			layData3.grabExcessHorizontalSpace = true;
335
			layData3.grabExcessVerticalSpace = true;
336
337
			this.add(fig_3, layData3);
338
		}
339
340
		/**
341
		 * @generated
342
		 */
343
		private org.eclipse.draw2d.RectangleFigure fComponentFigure_LabelsContainer;
344
345
		/**
346
		 * @generated
347
		 */
348
		public org.eclipse.draw2d.RectangleFigure getFigureComponentFigure_LabelsContainer() {
349
			return fComponentFigure_LabelsContainer;
350
		}
351
352
		/**
353
		 * @generated
354
		 */
355
		private void setFigureComponentFigure_LabelsContainer(org.eclipse.draw2d.RectangleFigure fig) {
356
			fComponentFigure_LabelsContainer = fig;
357
		}
358
359
		/**
360
		 * @generated
361
		 */
362
		private org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel fComponentFigure_name;
363
364
		/**
365
		 * @generated
366
		 */
367
		public org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel getFigureComponentFigure_name() {
368
			return fComponentFigure_name;
369
		}
370
371
		/**
372
		 * @generated
373
		 */
374
		private void setFigureComponentFigure_name(org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel fig) {
375
			fComponentFigure_name = fig;
376
		}
377
378
		/**
379
		 * @generated
380
		 */
381
		private org.eclipse.draw2d.RectangleFigure fComponentFigure_Body;
382
383
		/**
384
		 * @generated
385
		 */
386
		public org.eclipse.draw2d.RectangleFigure getFigureComponentFigure_Body() {
387
			return fComponentFigure_Body;
388
		}
389
390
		/**
391
		 * @generated
392
		 */
393
		private void setFigureComponentFigure_Body(org.eclipse.draw2d.RectangleFigure fig) {
394
			fComponentFigure_Body = fig;
395
		}
396
397
		/**
398
		 * @generated
399
		 */
400
		private boolean myUseLocalCoordinates = false;
401
402
		/**
403
		 * @generated
404
		 */
405
		protected boolean useLocalCoordinates() {
406
			return myUseLocalCoordinates;
407
		}
408
409
		/**
410
		 * @generated
411
		 */
412
		protected void setUseLocalCoordinates(boolean useLocalCoordinates) {
413
			myUseLocalCoordinates = useLocalCoordinates;
414
		}
415
416
	}
417
418
}
(-)src/org/eclipse/uml2/diagram/component/edit/parts/InterfaceName2EditPart.java (+544 lines)
Added Link Here
1
package org.eclipse.uml2.diagram.component.edit.parts;
2
3
import org.eclipse.draw2d.Label;
4
import org.eclipse.draw2d.IFigure;
5
import org.eclipse.draw2d.geometry.Point;
6
import org.eclipse.gef.EditPolicy;
7
import org.eclipse.gmf.runtime.diagram.ui.editparts.ITextAwareEditPart;
8
import org.eclipse.gmf.runtime.diagram.ui.editpolicies.LabelDirectEditPolicy;
9
import org.eclipse.gmf.runtime.notation.View;
10
import java.util.Collections;
11
import java.util.List;
12
13
import org.eclipse.emf.common.notify.Notification;
14
15
import org.eclipse.emf.ecore.EObject;
16
17
import org.eclipse.emf.transaction.RunnableWithResult;
18
19
import org.eclipse.gef.AccessibleEditPart;
20
import org.eclipse.gef.Request;
21
22
import org.eclipse.gef.requests.DirectEditRequest;
23
24
import org.eclipse.gef.tools.DirectEditManager;
25
26
import org.eclipse.gmf.runtime.common.ui.services.parser.IParser;
27
import org.eclipse.gmf.runtime.common.ui.services.parser.IParserEditStatus;
28
import org.eclipse.gmf.runtime.common.ui.services.parser.ParserEditStatus;
29
import org.eclipse.gmf.runtime.common.ui.services.parser.ParserOptions;
30
import org.eclipse.gmf.runtime.common.ui.services.parser.ParserService;
31
32
import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;
33
34
import org.eclipse.gmf.runtime.diagram.ui.l10n.DiagramColorRegistry;
35
36
import org.eclipse.gmf.runtime.diagram.ui.requests.RequestConstants;
37
38
import org.eclipse.gmf.runtime.diagram.ui.tools.TextDirectEditManager;
39
40
import org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel;
41
42
import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;
43
44
import org.eclipse.gmf.runtime.emf.type.core.IElementType;
45
46
import org.eclipse.gmf.runtime.emf.ui.services.parser.ISemanticParser;
47
import org.eclipse.gmf.runtime.emf.ui.services.parser.ParserHintAdapter;
48
49
import org.eclipse.gmf.runtime.notation.FontStyle;
50
import org.eclipse.gmf.runtime.notation.NotationPackage;
51
52
import org.eclipse.jface.text.contentassist.IContentAssistProcessor;
53
54
import org.eclipse.jface.viewers.ICellEditorValidator;
55
56
import org.eclipse.swt.SWT;
57
58
import org.eclipse.swt.accessibility.AccessibleEvent;
59
60
import org.eclipse.swt.graphics.Color;
61
import org.eclipse.swt.graphics.FontData;
62
import org.eclipse.swt.graphics.Image;
63
import org.eclipse.uml2.diagram.component.edit.policies.UMLTextSelectionEditPolicy;
64
import org.eclipse.uml2.diagram.component.part.UMLVisualIDRegistry;
65
import org.eclipse.uml2.diagram.component.providers.UMLElementTypes;
66
67
/**
68
 * @generated
69
 */
70
public class InterfaceName2EditPart extends UMLExtNodeLabelEditPart implements ITextAwareEditPart {
71
72
	/**
73
	 * @generated
74
	 */
75
	public static final int VISUAL_ID = 5005;
76
77
	/**
78
	 * @generated
79
	 */
80
	private DirectEditManager manager;
81
82
	/**
83
	 * @generated
84
	 */
85
	private IParser parser;
86
87
	/**
88
	 * @generated
89
	 */
90
	private List parserElements;
91
92
	/**
93
	 * @generated
94
	 */
95
	private String defaultText;
96
97
	/**
98
	 * @generated
99
	 */
100
	static {
101
		registerSnapBackPosition(UMLVisualIDRegistry.getType(InterfaceName2EditPart.VISUAL_ID), new Point(0, 0));
102
	}
103
104
	/**
105
	 * @generated
106
	 */
107
	public InterfaceName2EditPart(View view) {
108
		super(view);
109
	}
110
111
	/**
112
	 * @generated
113
	 */
114
	protected void createDefaultEditPolicies() {
115
		super.createDefaultEditPolicies();
116
		installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE, new LabelDirectEditPolicy());
117
118
	}
119
120
	/**
121
	 * @generated
122
	 */
123
	protected String getLabelTextHelper(IFigure figure) {
124
		if (figure instanceof WrapLabel) {
125
			return ((WrapLabel) figure).getText();
126
		} else {
127
			return ((Label) figure).getText();
128
		}
129
	}
130
131
	/**
132
	 * @generated
133
	 */
134
	protected void setLabelTextHelper(IFigure figure, String text) {
135
		if (figure instanceof WrapLabel) {
136
			((WrapLabel) figure).setText(text);
137
		} else {
138
			((Label) figure).setText(text);
139
		}
140
	}
141
142
	/**
143
	 * @generated
144
	 */
145
	protected Image getLabelIconHelper(IFigure figure) {
146
		if (figure instanceof WrapLabel) {
147
			return ((WrapLabel) figure).getIcon();
148
		} else {
149
			return ((Label) figure).getIcon();
150
		}
151
	}
152
153
	/**
154
	 * @generated
155
	 */
156
	protected void setLabelIconHelper(IFigure figure, Image icon) {
157
		if (figure instanceof WrapLabel) {
158
			((WrapLabel) figure).setIcon(icon);
159
		} else {
160
			((Label) figure).setIcon(icon);
161
		}
162
	}
163
164
	/**
165
	 * @generated
166
	 */
167
	public void setLabel(IFigure figure) {
168
		unregisterVisuals();
169
		setFigure(figure);
170
		defaultText = getLabelTextHelper(figure);
171
		registerVisuals();
172
		refreshVisuals();
173
	}
174
175
	/**
176
	 * @generated
177
	 */
178
	protected List getModelChildren() {
179
		return Collections.EMPTY_LIST;
180
	}
181
182
	/**
183
	 * @generated
184
	 */
185
	public IGraphicalEditPart getChildBySemanticHint(String semanticHint) {
186
		return null;
187
	}
188
189
	/**
190
	 * @generated
191
	 */
192
	protected EObject getParserElement() {
193
		EObject element = resolveSemanticElement();
194
		return element != null ? element : (View) getModel();
195
	}
196
197
	/**
198
	 * @generated
199
	 */
200
	protected Image getLabelIcon() {
201
		return null;
202
	}
203
204
	/**
205
	 * @generated
206
	 */
207
	protected String getLabelText() {
208
		String text = null;
209
		if (getParser() != null) {
210
			text = getParser().getPrintString(new EObjectAdapter(getParserElement()), getParserOptions().intValue());
211
		}
212
		if (text == null || text.length() == 0) {
213
			text = defaultText;
214
		}
215
		return text;
216
	}
217
218
	/**
219
	 * @generated
220
	 */
221
	public void setLabelText(String text) {
222
		setLabelTextHelper(getFigure(), text);
223
		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);
224
		if (pdEditPolicy instanceof UMLTextSelectionEditPolicy) {
225
			((UMLTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();
226
		}
227
	}
228
229
	/**
230
	 * @generated
231
	 */
232
	public String getEditText() {
233
		if (getParser() == null) {
234
			return ""; //$NON-NLS-1$
235
		}
236
		return getParser().getEditString(new EObjectAdapter(getParserElement()), getParserOptions().intValue());
237
	}
238
239
	/**
240
	 * @generated
241
	 */
242
	protected boolean isEditable() {
243
		return getEditText() != null;
244
	}
245
246
	/**
247
	 * @generated
248
	 */
249
	public ICellEditorValidator getEditTextValidator() {
250
		return new ICellEditorValidator() {
251
252
			public String isValid(final Object value) {
253
				if (value instanceof String) {
254
					final EObject element = getParserElement();
255
					final IParser parser = getParser();
256
					try {
257
						IParserEditStatus valid = (IParserEditStatus) getEditingDomain().runExclusive(new RunnableWithResult.Impl() {
258
259
							public void run() {
260
								setResult(parser.isValidEditString(new EObjectAdapter(element), (String) value));
261
							}
262
						});
263
						return valid.getCode() == ParserEditStatus.EDITABLE ? null : valid.getMessage();
264
					} catch (InterruptedException ie) {
265
						ie.printStackTrace();
266
					}
267
				}
268
269
				// shouldn't get here
270
				return null;
271
			}
272
		};
273
	}
274
275
	/**
276
	 * @generated
277
	 */
278
	public IContentAssistProcessor getCompletionProcessor() {
279
		if (getParser() == null) {
280
			return null;
281
		}
282
		return getParser().getCompletionProcessor(new EObjectAdapter(getParserElement()));
283
	}
284
285
	/**
286
	 * @generated
287
	 */
288
	public ParserOptions getParserOptions() {
289
		return ParserOptions.NONE;
290
	}
291
292
	/**
293
	 * @generated
294
	 */
295
	public IParser getParser() {
296
		if (parser == null) {
297
			String parserHint = ((View) getModel()).getType();
298
			ParserHintAdapter hintAdapter = new ParserHintAdapter(getParserElement(), parserHint) {
299
300
				public Object getAdapter(Class adapter) {
301
					if (IElementType.class.equals(adapter)) {
302
						return UMLElementTypes.Interface_2003;
303
					}
304
					return super.getAdapter(adapter);
305
				}
306
			};
307
			parser = ParserService.getInstance().getParser(hintAdapter);
308
		}
309
		return parser;
310
	}
311
312
	/**
313
	 * @generated
314
	 */
315
	protected DirectEditManager getManager() {
316
		if (manager == null) {
317
			setManager(new TextDirectEditManager(this, TextDirectEditManager.getTextCellEditorClass(this), UMLEditPartFactory.getTextCellEditorLocator(this)));
318
		}
319
		return manager;
320
	}
321
322
	/**
323
	 * @generated
324
	 */
325
	protected void setManager(DirectEditManager manager) {
326
		this.manager = manager;
327
	}
328
329
	/**
330
	 * @generated
331
	 */
332
	protected void performDirectEdit() {
333
		getManager().show();
334
	}
335
336
	/**
337
	 * @generated
338
	 */
339
	protected void performDirectEdit(Point eventLocation) {
340
		if (getManager().getClass() == TextDirectEditManager.class) {
341
			((TextDirectEditManager) getManager()).show(eventLocation.getSWTPoint());
342
		}
343
	}
344
345
	/**
346
	 * @generated
347
	 */
348
	private void performDirectEdit(char initialCharacter) {
349
		if (getManager() instanceof TextDirectEditManager) {
350
			((TextDirectEditManager) getManager()).show(initialCharacter);
351
		} else {
352
			performDirectEdit();
353
		}
354
	}
355
356
	/**
357
	 * @generated
358
	 */
359
	protected void performDirectEditRequest(Request request) {
360
		final Request theRequest = request;
361
		try {
362
			getEditingDomain().runExclusive(new Runnable() {
363
364
				public void run() {
365
					if (isActive() && isEditable()) {
366
						if (theRequest.getExtendedData().get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR) instanceof Character) {
367
							Character initialChar = (Character) theRequest.getExtendedData().get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR);
368
							performDirectEdit(initialChar.charValue());
369
						} else if ((theRequest instanceof DirectEditRequest) && (getEditText().equals(getLabelText()))) {
370
							DirectEditRequest editRequest = (DirectEditRequest) theRequest;
371
							performDirectEdit(editRequest.getLocation());
372
						} else {
373
							performDirectEdit();
374
						}
375
					}
376
				}
377
			});
378
		} catch (InterruptedException e) {
379
			e.printStackTrace();
380
		}
381
	}
382
383
	/**
384
	 * @generated
385
	 */
386
	protected void refreshVisuals() {
387
		super.refreshVisuals();
388
		refreshLabel();
389
		refreshFont();
390
		refreshFontColor();
391
		refreshUnderline();
392
		refreshStrikeThrough();
393
	}
394
395
	/**
396
	 * @generated
397
	 */
398
	protected void refreshLabel() {
399
		setLabelTextHelper(getFigure(), getLabelText());
400
		setLabelIconHelper(getFigure(), getLabelIcon());
401
		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);
402
		if (pdEditPolicy instanceof UMLTextSelectionEditPolicy) {
403
			((UMLTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();
404
		}
405
	}
406
407
	/**
408
	 * @generated
409
	 */
410
	protected void refreshUnderline() {
411
		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle());
412
		if (style != null && getFigure() instanceof WrapLabel) {
413
			((WrapLabel) getFigure()).setTextUnderline(style.isUnderline());
414
		}
415
	}
416
417
	/**
418
	 * @generated
419
	 */
420
	protected void refreshStrikeThrough() {
421
		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle());
422
		if (style != null && getFigure() instanceof WrapLabel) {
423
			((WrapLabel) getFigure()).setTextStrikeThrough(style.isStrikeThrough());
424
		}
425
	}
426
427
	/**
428
	 * @generated
429
	 */
430
	protected void refreshFont() {
431
		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle());
432
		if (style != null) {
433
			FontData fontData = new FontData(style.getFontName(), style.getFontHeight(), (style.isBold() ? SWT.BOLD : SWT.NORMAL) | (style.isItalic() ? SWT.ITALIC : SWT.NORMAL));
434
			setFont(fontData);
435
		}
436
	}
437
438
	/**
439
	 * @generated
440
	 */
441
	protected void setFontColor(Color color) {
442
		getFigure().setForegroundColor(color);
443
	}
444
445
	/**
446
	 * @generated
447
	 */
448
	protected void addSemanticListeners() {
449
		if (getParser() instanceof ISemanticParser) {
450
			EObject element = resolveSemanticElement();
451
			parserElements = ((ISemanticParser) getParser()).getSemanticElementsBeingParsed(element);
452
			for (int i = 0; i < parserElements.size(); i++) {
453
				addListenerFilter("SemanticModel" + i, this, (EObject) parserElements.get(i)); //$NON-NLS-1$
454
			}
455
		} else {
456
			super.addSemanticListeners();
457
		}
458
	}
459
460
	/**
461
	 * @generated
462
	 */
463
	protected void removeSemanticListeners() {
464
		if (parserElements != null) {
465
			for (int i = 0; i < parserElements.size(); i++) {
466
				removeListenerFilter("SemanticModel" + i); //$NON-NLS-1$
467
			}
468
		} else {
469
			super.removeSemanticListeners();
470
		}
471
	}
472
473
	/**
474
	 * @generated
475
	 */
476
	protected AccessibleEditPart getAccessibleEditPart() {
477
		if (accessibleEP == null) {
478
			accessibleEP = new AccessibleGraphicalEditPart() {
479
480
				public void getName(AccessibleEvent e) {
481
					e.result = getLabelTextHelper(getFigure());
482
				}
483
			};
484
		}
485
		return accessibleEP;
486
	}
487
488
	/**
489
	 * @generated
490
	 */
491
	private View getFontStyleOwnerView() {
492
		return getPrimaryView();
493
	}
494
495
	/**
496
	 * @generated
497
	 */
498
	protected void handleNotificationEvent(Notification event) {
499
		Object feature = event.getFeature();
500
		if (NotationPackage.eINSTANCE.getFontStyle_FontColor().equals(feature)) {
501
			Integer c = (Integer) event.getNewValue();
502
			setFontColor(DiagramColorRegistry.getInstance().getColor(c));
503
		} else if (NotationPackage.eINSTANCE.getFontStyle_Underline().equals(feature)) {
504
			refreshUnderline();
505
		} else if (NotationPackage.eINSTANCE.getFontStyle_StrikeThrough().equals(feature)) {
506
			refreshStrikeThrough();
507
		} else if (NotationPackage.eINSTANCE.getFontStyle_FontHeight().equals(feature) || NotationPackage.eINSTANCE.getFontStyle_FontName().equals(feature)
508
				|| NotationPackage.eINSTANCE.getFontStyle_Bold().equals(feature) || NotationPackage.eINSTANCE.getFontStyle_Italic().equals(feature)) {
509
			refreshFont();
510
		} else {
511
			if (getParser() != null && getParser().isAffectingEvent(event, getParserOptions().intValue())) {
512
				refreshLabel();
513
			}
514
			if (getParser() instanceof ISemanticParser) {
515
				ISemanticParser modelParser = (ISemanticParser) getParser();
516
				if (modelParser.areSemanticElementsAffected(null, event)) {
517
					removeSemanticListeners();
518
					if (resolveSemanticElement() != null) {
519
						addSemanticListeners();
520
					}
521
					refreshLabel();
522
				}
523
			}
524
		}
525
		super.handleNotificationEvent(event);
526
	}
527
528
	/**
529
	 * @generated
530
	 */
531
	protected IFigure createFigure() {
532
		IFigure label = createFigurePrim();
533
		defaultText = getLabelTextHelper(label);
534
		return label;
535
	}
536
537
	/**
538
	 * @generated
539
	 */
540
	protected IFigure createFigurePrim() {
541
		return new WrapLabel();
542
	}
543
544
}
(-)src/org/eclipse/uml2/diagram/component/edit/helpers/InterfaceEditHelper.java (+7 lines)
Added Link Here
1
package org.eclipse.uml2.diagram.component.edit.helpers;
2
3
/**
4
 * @generated
5
 */
6
public class InterfaceEditHelper extends UMLBaseEditHelper {
7
}
(-)src/org/eclipse/uml2/diagram/component/view/factories/PackageViewFactory.java (+44 lines)
Added Link Here
1
package org.eclipse.uml2.diagram.component.view.factories;
2
3
import java.util.ArrayList;
4
import java.util.List;
5
6
import org.eclipse.core.runtime.IAdaptable;
7
8
import org.eclipse.gmf.runtime.diagram.ui.view.factories.DiagramViewFactory;
9
10
import org.eclipse.gmf.runtime.notation.MeasurementUnit;
11
import org.eclipse.gmf.runtime.notation.NotationFactory;
12
import org.eclipse.gmf.runtime.notation.View;
13
14
/**
15
 * @generated
16
 */
17
public class PackageViewFactory extends DiagramViewFactory {
18
19
	/**
20
	 * @generated 
21
	 */
22
	protected List createStyles(View view) {
23
		List styles = new ArrayList();
24
		styles.add(NotationFactory.eINSTANCE.createPageStyle());
25
		styles.add(NotationFactory.eINSTANCE.createGuideStyle());
26
		styles.add(NotationFactory.eINSTANCE.createDescriptionStyle());
27
		return styles;
28
	}
29
30
	/**
31
	 * @generated
32
	 */
33
	protected void decorateView(View view, IAdaptable semanticAdapter, String diagramKind) {
34
		super.decorateView(view, semanticAdapter, diagramKind);
35
	}
36
37
	/**
38
	 * @generated
39
	 */
40
	protected MeasurementUnit getMeasurementUnit() {
41
		return MeasurementUnit.PIXEL_LITERAL;
42
	}
43
44
}
(-)src/org/eclipse/uml2/diagram/component/expressions/UMLOCLFactory.java (+202 lines)
Added Link Here
1
package org.eclipse.uml2.diagram.component.expressions;
2
3
import java.util.Collections;
4
import java.util.Iterator;
5
import java.util.Map;
6
7
import org.eclipse.core.runtime.IStatus;
8
9
import org.eclipse.emf.ecore.EClassifier;
10
import org.eclipse.emf.ecore.EEnum;
11
import org.eclipse.emf.ecore.EEnumLiteral;
12
import org.eclipse.emf.ecore.ETypedElement;
13
14
import org.eclipse.emf.ocl.expressions.ExpressionsFactory;
15
import org.eclipse.emf.ocl.expressions.OCLExpression;
16
import org.eclipse.emf.ocl.expressions.OperationCallExp;
17
import org.eclipse.emf.ocl.expressions.Variable;
18
19
import org.eclipse.emf.ocl.expressions.util.AbstractVisitor;
20
21
import org.eclipse.emf.ocl.helper.HelperUtil;
22
import org.eclipse.emf.ocl.helper.IOCLHelper;
23
import org.eclipse.emf.ocl.helper.OCLParsingException;
24
25
import org.eclipse.emf.ocl.parser.EcoreEnvironment;
26
import org.eclipse.emf.ocl.parser.EcoreEnvironmentFactory;
27
import org.eclipse.emf.ocl.parser.Environment;
28
import org.eclipse.emf.ocl.parser.EvaluationEnvironment;
29
30
import org.eclipse.emf.ocl.query.Query;
31
import org.eclipse.emf.ocl.query.QueryFactory;
32
33
import org.eclipse.emf.ocl.types.util.Types;
34
35
import org.eclipse.emf.ocl.utilities.PredefinedType;
36
37
import org.eclipse.uml2.diagram.parser.lookup.OCLLookup;
38
39
/**
40
 * @generated 
41
 */
42
public class UMLOCLFactory {
43
44
	/**
45
	 * @generated
46
	 */
47
	public static OCLLookup.Expression getOCLLookupExpression(String body, EClassifier context) {
48
		final UMLAbstractExpression expression = getExpression(body, context);
49
		if (!expression.getStatus().isOK()) {
50
			throw new IllegalArgumentException("Bad OCL:" + body);
51
		}
52
		return new OCLLookup.Expression() {
53
54
			public Object evaluate(Object context) {
55
				return expression.evaluate(context);
56
			}
57
		};
58
	}
59
60
	/**
61
	 * @generated 
62
	 */
63
	private UMLOCLFactory() {
64
	}
65
66
	/**
67
	 * @generated 
68
	 */
69
	public static UMLAbstractExpression getExpression(String body, EClassifier context, Map environment) {
70
		return new Expression(body, context, environment);
71
	}
72
73
	/**
74
	 * @generated 
75
	 */
76
	public static UMLAbstractExpression getExpression(String body, EClassifier context) {
77
		return getExpression(body, context, Collections.EMPTY_MAP);
78
	}
79
80
	/**
81
	 * @generated 
82
	 */
83
	private static class Expression extends UMLAbstractExpression {
84
85
		/**
86
		 * @generated 
87
		 */
88
		private Query query;
89
90
		/**
91
		 * @generated 
92
		 */
93
		public Expression(String body, EClassifier context, Map environment) {
94
			super(body, context, environment);
95
96
			IOCLHelper oclHelper = (environment.isEmpty()) ? HelperUtil.createOCLHelper() : HelperUtil.createOCLHelper(createCustomEnv(environment));
97
			oclHelper.setContext(context());
98
			try {
99
				OCLExpression oclExpression = oclHelper.createQuery(body);
100
				this.query = QueryFactory.eINSTANCE.createQuery(oclExpression);
101
			} catch (OCLParsingException e) {
102
				setStatus(IStatus.ERROR, e.getMessage(), e);
103
			}
104
		}
105
106
		/**
107
		 * @generated 
108
		 */
109
		protected Object doEvaluate(Object context, Map env) {
110
			if (query == null) {
111
				return null;
112
			}
113
			EvaluationEnvironment evalEnv = query.getEvaluationEnvironment();
114
			// init environment
115
			for (Iterator it = env.entrySet().iterator(); it.hasNext();) {
116
				Map.Entry nextEntry = (Map.Entry) it.next();
117
				evalEnv.replace((String) nextEntry.getKey(), nextEntry.getValue());
118
			}
119
120
			try {
121
				initExtentMap(context);
122
				Object result = query.evaluate(context);
123
				return (result != Types.OCL_INVALID) ? result : null;
124
			} finally {
125
				evalEnv.clear();
126
				query.setExtentMap(Collections.EMPTY_MAP);
127
			}
128
		}
129
130
		/**
131
		 * @generated
132
		 */
133
		protected Object performCast(Object value, ETypedElement targetType) {
134
			if (targetType.getEType() instanceof EEnum) {
135
				if (value instanceof EEnumLiteral) {
136
					EEnumLiteral literal = (EEnumLiteral) value;
137
					return (literal.getInstance() != null) ? literal.getInstance() : literal;
138
				}
139
			}
140
			return super.performCast(value, targetType);
141
		}
142
143
		/**
144
		 * @generated
145
		 */
146
		private void initExtentMap(Object context) {
147
			if (query == null || context == null) {
148
				return;
149
			}
150
			final Query queryToInit = query;
151
			final Object extentContext = context;
152
153
			queryToInit.setExtentMap(Collections.EMPTY_MAP);
154
			if (queryToInit.queryText() != null && queryToInit.queryText().indexOf("allInstances") >= 0) {
155
				AbstractVisitor visitior = new AbstractVisitor() {
156
157
					private boolean usesAllInstances = false;
158
159
					public Object visitOperationCallExp(OperationCallExp oc) {
160
						if (!usesAllInstances) {
161
							usesAllInstances = PredefinedType.ALL_INSTANCES == oc.getOperationCode();
162
							if (usesAllInstances) {
163
								queryToInit.setExtentMap(EcoreEnvironmentFactory.ECORE_INSTANCE.createExtentMap(extentContext));
164
							}
165
						}
166
						return super.visitOperationCallExp(oc);
167
					}
168
				};
169
				queryToInit.getExpression().accept(visitior);
170
			}
171
		}
172
173
		/**
174
		 * @generated 
175
		 */
176
		private static EcoreEnvironmentFactory createCustomEnv(Map environment) {
177
			final Map env = environment;
178
			return new EcoreEnvironmentFactory() {
179
180
				public Environment createClassifierContext(Object context) {
181
					Environment ecoreEnv = super.createClassifierContext(context);
182
					for (Iterator it = env.keySet().iterator(); it.hasNext();) {
183
						String varName = (String) it.next();
184
						EClassifier varType = (EClassifier) env.get(varName);
185
						ecoreEnv.addElement(varName, createVar(varName, varType), false);
186
					}
187
					return ecoreEnv;
188
				}
189
			};
190
		}
191
192
		/**
193
		 * @generated 
194
		 */
195
		private static Variable createVar(String name, EClassifier type) {
196
			Variable var = ExpressionsFactory.eINSTANCE.createVariable();
197
			var.setName(name);
198
			var.setType(EcoreEnvironment.getOCLType(type));
199
			return var;
200
		}
201
	}
202
}
(-)src/org/eclipse/uml2/diagram/component/navigator/UMLAbstractNavigatorItem.java (+53 lines)
Added Link Here
1
package org.eclipse.uml2.diagram.component.navigator;
2
3
import org.eclipse.core.runtime.IAdaptable;
4
5
import org.eclipse.gmf.runtime.diagram.ui.properties.views.IReadOnlyDiagramPropertySheetPageContributor;
6
7
import org.eclipse.ui.views.properties.tabbed.ITabbedPropertySheetPageContributor;
8
9
/**
10
 * @generated
11
 */
12
public abstract class UMLAbstractNavigatorItem implements IAdaptable {
13
14
	/**
15
	 * @generated
16
	 */
17
	private Object myParent;
18
19
	/**
20
	 * @generated
21
	 */
22
	protected UMLAbstractNavigatorItem(Object parent) {
23
		myParent = parent;
24
	}
25
26
	/**
27
	 * @generated
28
	 */
29
	abstract public String getModelID();
30
31
	/**
32
	 * @generated
33
	 */
34
	public Object getParent() {
35
		return myParent;
36
	}
37
38
	/**
39
	 * @generated
40
	 */
41
	public Object getAdapter(Class adapter) {
42
		if (ITabbedPropertySheetPageContributor.class.isAssignableFrom(adapter)) {
43
			return new ITabbedPropertySheetPageContributor() {
44
45
				public String getContributorId() {
46
					return "org.eclipse.uml2.diagram.component";
47
				}
48
			};
49
		}
50
		return null;
51
	}
52
53
}
(-)src/org/eclipse/uml2/diagram/component/part/UMLDiagramEditorUtil.java (+213 lines)
Added Link Here
1
package org.eclipse.uml2.diagram.component.part;
2
3
import java.io.IOException;
4
import java.io.InputStream;
5
import java.lang.reflect.InvocationTargetException;
6
import java.util.ArrayList;
7
import java.util.Collections;
8
import java.util.List;
9
10
import org.eclipse.core.commands.ExecutionException;
11
import org.eclipse.core.commands.operations.OperationHistoryFactory;
12
import org.eclipse.core.resources.IFile;
13
import org.eclipse.core.resources.IResource;
14
import org.eclipse.core.runtime.IAdaptable;
15
import org.eclipse.core.runtime.IPath;
16
import org.eclipse.core.runtime.IProgressMonitor;
17
import org.eclipse.core.runtime.SubProgressMonitor;
18
import org.eclipse.emf.common.util.URI;
19
import org.eclipse.emf.ecore.resource.Resource;
20
import org.eclipse.emf.ecore.resource.ResourceSet;
21
import org.eclipse.gmf.runtime.common.core.command.CommandResult;
22
import org.eclipse.gmf.runtime.diagram.core.services.ViewService;
23
import org.eclipse.gmf.runtime.diagram.ui.resources.editor.util.DiagramFileCreator;
24
import org.eclipse.gmf.runtime.emf.commands.core.command.AbstractTransactionalCommand;
25
import org.eclipse.gmf.runtime.emf.core.GMFEditingDomainFactory;
26
import org.eclipse.gmf.runtime.notation.Diagram;
27
import org.eclipse.jface.operation.IRunnableContext;
28
import org.eclipse.jface.operation.IRunnableWithProgress;
29
import org.eclipse.swt.widgets.Shell;
30
import org.eclipse.ui.IEditorPart;
31
import org.eclipse.ui.IWorkbenchPage;
32
import org.eclipse.ui.IWorkbenchWindow;
33
import org.eclipse.ui.PartInitException;
34
import org.eclipse.emf.transaction.TransactionalEditingDomain;
35
import java.io.ByteArrayInputStream;
36
37
import java.util.HashMap;
38
import java.util.Map;
39
40
import org.eclipse.core.resources.IResourceStatus;
41
import org.eclipse.core.resources.ResourcesPlugin;
42
43
import org.eclipse.core.runtime.CoreException;
44
import org.eclipse.core.runtime.NullProgressMonitor;
45
import org.eclipse.core.runtime.Path;
46
47
import org.eclipse.emf.ecore.EObject;
48
49
import org.eclipse.emf.ecore.xmi.XMIResource;
50
51
import org.eclipse.jface.dialogs.ErrorDialog;
52
53
import org.eclipse.ui.ide.IDE;
54
55
import org.eclipse.uml2.diagram.component.edit.parts.PackageEditPart;
56
57
import org.eclipse.uml2.uml.UMLFactory;
58
59
/**
60
 * @generated
61
 */
62
public class UMLDiagramEditorUtil {
63
64
	/**
65
	 * @generated
66
	 */
67
	public static final URI createAndOpenDiagram(IPath containerPath, String fileName, IWorkbenchWindow window, IProgressMonitor progressMonitor, boolean openEditor, boolean saveDiagram) {
68
		IFile diagramFile = createNewDiagramFile(containerPath, fileName, window.getShell(), progressMonitor);
69
		if (diagramFile != null && openEditor) {
70
			openDiagramEditor(window, diagramFile, saveDiagram, progressMonitor);
71
		}
72
		return URI.createPlatformResourceURI(diagramFile.getFullPath().toString());
73
	}
74
75
	/**
76
	 * @generated
77
	 */
78
	public static final IEditorPart openDiagramEditor(IWorkbenchWindow window, IFile file, boolean saveDiagram, IProgressMonitor progressMonitor) {
79
		IEditorPart editorPart = null;
80
		try {
81
			IWorkbenchPage page = window.getActivePage();
82
			if (page != null) {
83
				editorPart = openDiagramEditor(page, file);
84
				if (saveDiagram) {
85
					editorPart.doSave(progressMonitor);
86
				}
87
			}
88
			file.refreshLocal(IResource.DEPTH_ZERO, null);
89
			return editorPart;
90
		} catch (Exception e) {
91
			UMLDiagramEditorPlugin.getInstance().logError("Error opening diagram", e);
92
		}
93
		return null;
94
	}
95
96
	/**
97
	 * @generated
98
	 */
99
	public static final IEditorPart openDiagramEditor(IWorkbenchPage page, IFile file) throws PartInitException {
100
		return IDE.openEditor(page, file);
101
	}
102
103
	/**
104
	 * <p>
105
	 * This method should be called within a workspace modify operation since it creates resources.
106
	 * </p>
107
	 * @generated
108
	 * @return the created file resource, or <code>null</code> if the file was not created
109
	 */
110
	public static final IFile createNewDiagramFile(IPath containerFullPath, String fileName, Shell shell, IProgressMonitor progressMonitor) {
111
		TransactionalEditingDomain editingDomain = GMFEditingDomainFactory.INSTANCE.createEditingDomain();
112
		ResourceSet resourceSet = editingDomain.getResourceSet();
113
		progressMonitor.beginTask("Creating diagram and model files", 3); //$NON-NLS-1$
114
		final IFile diagramFile = createNewFile(containerFullPath, fileName, shell);
115
		final Resource diagramResource = resourceSet.createResource(URI.createPlatformResourceURI(diagramFile.getFullPath().toString()));
116
		List affectedFiles = new ArrayList();
117
		affectedFiles.add(diagramFile);
118
		IPath modelFileRelativePath = diagramFile.getFullPath().removeFileExtension().addFileExtension("uml"); //$NON-NLS-1$
119
		IFile modelFile = diagramFile.getParent().getFile(new Path(modelFileRelativePath.lastSegment()));
120
		final Resource modelResource = resourceSet.createResource(URI.createPlatformResourceURI(modelFile.getFullPath().toString()));
121
		affectedFiles.add(modelFile);
122
		AbstractTransactionalCommand command = new AbstractTransactionalCommand(editingDomain, "Creating diagram and model", affectedFiles) { //$NON-NLS-1$
123
124
			protected CommandResult doExecuteWithResult(IProgressMonitor monitor, IAdaptable info) throws ExecutionException {
125
				org.eclipse.uml2.uml.Package model = createInitialModel();
126
				modelResource.getContents().add(createInitialRoot(model));
127
				Diagram diagram = ViewService.createDiagram(model, PackageEditPart.MODEL_ID, UMLDiagramEditorPlugin.DIAGRAM_PREFERENCES_HINT);
128
				if (diagram != null) {
129
					diagramResource.getContents().add(diagram);
130
					diagram.setName(diagramFile.getName());
131
					diagram.setElement(model);
132
				}
133
				try {
134
					Map options = new HashMap();
135
					options.put(XMIResource.OPTION_ENCODING, "UTF-8"); //$NON-NLS-1$
136
					modelResource.save(options);
137
					diagramResource.save(Collections.EMPTY_MAP);
138
				} catch (IOException e) {
139
140
					UMLDiagramEditorPlugin.getInstance().logError("Unable to store model and diagram resources", e); //$NON-NLS-1$
141
				}
142
				return CommandResult.newOKCommandResult();
143
			}
144
		};
145
146
		try {
147
			OperationHistoryFactory.getOperationHistory().execute(command, new SubProgressMonitor(progressMonitor, 1), null);
148
		} catch (ExecutionException e) {
149
			UMLDiagramEditorPlugin.getInstance().logError("Unable to create model and diagram", e); //$NON-NLS-1$
150
		}
151
152
		try {
153
			modelFile.setCharset("UTF-8", new SubProgressMonitor(progressMonitor, 1)); //$NON-NLS-1$
154
		} catch (CoreException e) {
155
			UMLDiagramEditorPlugin.getInstance().logError("Unable to set charset for model file", e); //$NON-NLS-1$
156
		}
157
		try {
158
			diagramFile.setCharset("UTF-8", new SubProgressMonitor(progressMonitor, 1)); //$NON-NLS-1$
159
		} catch (CoreException e) {
160
			UMLDiagramEditorPlugin.getInstance().logError("Unable to set charset for diagram file", e); //$NON-NLS-1$
161
		}
162
163
		return diagramFile;
164
	}
165
166
	/**
167
	 * Create a new instance of domain element associated with canvas.
168
	 * <!-- begin-user-doc -->
169
	 * <!-- end-user-doc -->
170
	 * @generated
171
	 */
172
	private static org.eclipse.uml2.uml.Package createInitialModel() {
173
		return UMLFactory.eINSTANCE.createPackage();
174
	}
175
176
	/**
177
	 * @generated
178
	 */
179
	private static EObject createInitialRoot(org.eclipse.uml2.uml.Package model) {
180
		return model;
181
	}
182
183
	/**
184
	 * @generated
185
	 */
186
	public static IFile createNewFile(IPath containerPath, String fileName, Shell shell) {
187
		IPath newFilePath = containerPath.append(fileName);
188
		IFile newFileHandle = ResourcesPlugin.getWorkspace().getRoot().getFile(newFilePath);
189
		try {
190
			createFile(newFileHandle);
191
		} catch (CoreException e) {
192
			ErrorDialog.openError(shell, "Creation Problems", null, e.getStatus());
193
			return null;
194
		}
195
		return newFileHandle;
196
	}
197
198
	/**
199
	 * @generated
200
	 */
201
	protected static void createFile(IFile fileHandle) throws CoreException {
202
		try {
203
			fileHandle.create(new ByteArrayInputStream(new byte[0]), false, new NullProgressMonitor());
204
		} catch (CoreException e) {
205
			// If the file already existed locally, just refresh to get contents
206
			if (e.getStatus().getCode() == IResourceStatus.PATH_OCCUPIED) {
207
				fileHandle.refreshLocal(IResource.DEPTH_ZERO, null);
208
			} else {
209
				throw e;
210
			}
211
		}
212
	}
213
}
(-)src/org/eclipse/uml2/diagram/component/edit/helpers/ComponentEditHelperAdvice.java (+9 lines)
Added Link Here
1
package org.eclipse.uml2.diagram.component.edit.helpers;
2
3
import org.eclipse.gmf.runtime.emf.type.core.edithelper.AbstractEditHelperAdvice;
4
5
/**
6
 * @generated
7
 */
8
public class ComponentEditHelperAdvice extends AbstractEditHelperAdvice {
9
}
(-)src/org/eclipse/uml2/diagram/component/providers/UMLModelingAssistantProvider.java (+269 lines)
Added Link Here
1
package org.eclipse.uml2.diagram.component.providers;
2
3
import java.util.ArrayList;
4
import java.util.Collection;
5
import java.util.Collections;
6
import java.util.HashSet;
7
import java.util.Iterator;
8
import java.util.List;
9
10
import org.eclipse.core.runtime.IAdaptable;
11
import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;
12
import org.eclipse.gmf.runtime.emf.type.core.ElementTypeRegistry;
13
import org.eclipse.gmf.runtime.emf.type.core.IElementType;
14
import org.eclipse.gmf.runtime.emf.ui.services.modelingassistant.ModelingAssistantProvider;
15
import org.eclipse.gmf.runtime.notation.Diagram;
16
import org.eclipse.jface.viewers.ILabelProvider;
17
import org.eclipse.jface.window.Window;
18
import org.eclipse.swt.widgets.Display;
19
import org.eclipse.swt.widgets.Shell;
20
import org.eclipse.ui.dialogs.ElementListSelectionDialog;
21
import org.eclipse.uml2.diagram.component.edit.parts.Class2EditPart;
22
import org.eclipse.uml2.diagram.component.edit.parts.ClassEditPart;
23
import org.eclipse.uml2.diagram.component.edit.parts.Component2EditPart;
24
import org.eclipse.uml2.diagram.component.edit.parts.ComponentContents2EditPart;
25
import org.eclipse.uml2.diagram.component.edit.parts.ComponentContentsEditPart;
26
import org.eclipse.uml2.diagram.component.edit.parts.ComponentEditPart;
27
import org.eclipse.uml2.diagram.component.edit.parts.Interface2EditPart;
28
import org.eclipse.uml2.diagram.component.edit.parts.InterfaceEditPart;
29
import org.eclipse.uml2.diagram.component.edit.parts.PackageEditPart;
30
import org.eclipse.uml2.diagram.component.edit.parts.PortEditPart;
31
import org.eclipse.uml2.diagram.component.part.UMLDiagramEditorPlugin;
32
import org.eclipse.emf.ecore.EObject;
33
import org.eclipse.emf.edit.ui.provider.AdapterFactoryLabelProvider;
34
35
/**
36
 * @generated
37
 */
38
public class UMLModelingAssistantProvider extends ModelingAssistantProvider {
39
40
	/**
41
	 * @generated
42
	 */
43
	public List getTypesForPopupBar(IAdaptable host) {
44
		IGraphicalEditPart editPart = (IGraphicalEditPart) host.getAdapter(IGraphicalEditPart.class);
45
		if (editPart instanceof ComponentEditPart) {
46
			List types = new ArrayList();
47
			types.add(UMLElementTypes.Port_3002);
48
			return types;
49
		}
50
		if (editPart instanceof Class2EditPart) {
51
			List types = new ArrayList();
52
			types.add(UMLElementTypes.Port_3002);
53
			return types;
54
		}
55
		if (editPart instanceof Component2EditPart) {
56
			List types = new ArrayList();
57
			types.add(UMLElementTypes.Port_3002);
58
			return types;
59
		}
60
		if (editPart instanceof ClassEditPart) {
61
			List types = new ArrayList();
62
			types.add(UMLElementTypes.Port_3002);
63
			return types;
64
		}
65
		if (editPart instanceof ComponentContentsEditPart) {
66
			List types = new ArrayList();
67
			types.add(UMLElementTypes.Component_3001);
68
			types.add(UMLElementTypes.Artifact_3003);
69
			types.add(UMLElementTypes.Class_3004);
70
			types.add(UMLElementTypes.Interface_3005);
71
			return types;
72
		}
73
		if (editPart instanceof ComponentContents2EditPart) {
74
			List types = new ArrayList();
75
			types.add(UMLElementTypes.Component_3001);
76
			types.add(UMLElementTypes.Artifact_3003);
77
			types.add(UMLElementTypes.Class_3004);
78
			types.add(UMLElementTypes.Interface_3005);
79
			return types;
80
		}
81
		if (editPart instanceof PackageEditPart) {
82
			List types = new ArrayList();
83
			types.add(UMLElementTypes.Component_2001);
84
			types.add(UMLElementTypes.Artifact_2002);
85
			types.add(UMLElementTypes.Interface_2003);
86
			types.add(UMLElementTypes.Class_2004);
87
			return types;
88
		}
89
		return Collections.EMPTY_LIST;
90
	}
91
92
	/**
93
	 * @generated
94
	 */
95
	public List getRelTypesOnSource(IAdaptable source) {
96
		IGraphicalEditPart sourceEditPart = (IGraphicalEditPart) source.getAdapter(IGraphicalEditPart.class);
97
		if (sourceEditPart instanceof PortEditPart) {
98
			List types = new ArrayList();
99
			types.add(UMLElementTypes.PortProvided_4006);
100
			types.add(UMLElementTypes.PortRequired_4004);
101
			return types;
102
		}
103
		return Collections.EMPTY_LIST;
104
	}
105
106
	/**
107
	 * @generated
108
	 */
109
	public List getRelTypesOnTarget(IAdaptable target) {
110
		IGraphicalEditPart targetEditPart = (IGraphicalEditPart) target.getAdapter(IGraphicalEditPart.class);
111
		if (targetEditPart instanceof Interface2EditPart) {
112
			List types = new ArrayList();
113
			types.add(UMLElementTypes.InterfaceRealization_4001);
114
			types.add(UMLElementTypes.PortProvided_4006);
115
			types.add(UMLElementTypes.PortRequired_4004);
116
			return types;
117
		}
118
		if (targetEditPart instanceof InterfaceEditPart) {
119
			List types = new ArrayList();
120
			types.add(UMLElementTypes.InterfaceRealization_4001);
121
			types.add(UMLElementTypes.PortProvided_4006);
122
			types.add(UMLElementTypes.PortRequired_4004);
123
			return types;
124
		}
125
		return Collections.EMPTY_LIST;
126
	}
127
128
	/**
129
	 * @generated
130
	 */
131
	public List getRelTypesOnSourceAndTarget(IAdaptable source, IAdaptable target) {
132
		IGraphicalEditPart sourceEditPart = (IGraphicalEditPart) source.getAdapter(IGraphicalEditPart.class);
133
		IGraphicalEditPart targetEditPart = (IGraphicalEditPart) target.getAdapter(IGraphicalEditPart.class);
134
		if (sourceEditPart instanceof PortEditPart) {
135
			List types = new ArrayList();
136
			if (targetEditPart instanceof Interface2EditPart) {
137
				types.add(UMLElementTypes.PortProvided_4006);
138
			}
139
			if (targetEditPart instanceof InterfaceEditPart) {
140
				types.add(UMLElementTypes.PortProvided_4006);
141
			}
142
			if (targetEditPart instanceof Interface2EditPart) {
143
				types.add(UMLElementTypes.PortRequired_4004);
144
			}
145
			if (targetEditPart instanceof InterfaceEditPart) {
146
				types.add(UMLElementTypes.PortRequired_4004);
147
			}
148
			return types;
149
		}
150
		return Collections.EMPTY_LIST;
151
	}
152
153
	/**
154
	 * @generated
155
	 */
156
	public List getTypesForSource(IAdaptable target, IElementType relationshipType) {
157
		IGraphicalEditPart targetEditPart = (IGraphicalEditPart) target.getAdapter(IGraphicalEditPart.class);
158
		if (targetEditPart instanceof Interface2EditPart) {
159
			List types = new ArrayList();
160
			if (relationshipType == UMLElementTypes.PortProvided_4006) {
161
				types.add(UMLElementTypes.Port_3002);
162
			}
163
			if (relationshipType == UMLElementTypes.PortRequired_4004) {
164
				types.add(UMLElementTypes.Port_3002);
165
			}
166
			return types;
167
		}
168
		if (targetEditPart instanceof InterfaceEditPart) {
169
			List types = new ArrayList();
170
			if (relationshipType == UMLElementTypes.PortProvided_4006) {
171
				types.add(UMLElementTypes.Port_3002);
172
			}
173
			if (relationshipType == UMLElementTypes.PortRequired_4004) {
174
				types.add(UMLElementTypes.Port_3002);
175
			}
176
			return types;
177
		}
178
		return Collections.EMPTY_LIST;
179
	}
180
181
	/**
182
	 * @generated
183
	 */
184
	public List getTypesForTarget(IAdaptable source, IElementType relationshipType) {
185
		IGraphicalEditPart sourceEditPart = (IGraphicalEditPart) source.getAdapter(IGraphicalEditPart.class);
186
		if (sourceEditPart instanceof PortEditPart) {
187
			List types = new ArrayList();
188
			if (relationshipType == UMLElementTypes.PortProvided_4006) {
189
				types.add(UMLElementTypes.Interface_2003);
190
			}
191
			if (relationshipType == UMLElementTypes.PortProvided_4006) {
192
				types.add(UMLElementTypes.Interface_3005);
193
			}
194
			if (relationshipType == UMLElementTypes.PortRequired_4004) {
195
				types.add(UMLElementTypes.Interface_2003);
196
			}
197
			if (relationshipType == UMLElementTypes.PortRequired_4004) {
198
				types.add(UMLElementTypes.Interface_3005);
199
			}
200
			return types;
201
		}
202
		return Collections.EMPTY_LIST;
203
	}
204
205
	/**
206
	 * @generated
207
	 */
208
	public EObject selectExistingElementForSource(IAdaptable target, IElementType relationshipType) {
209
		return selectExistingElement(target, getTypesForSource(target, relationshipType));
210
	}
211
212
	/**
213
	 * @generated
214
	 */
215
	public EObject selectExistingElementForTarget(IAdaptable source, IElementType relationshipType) {
216
		return selectExistingElement(source, getTypesForTarget(source, relationshipType));
217
	}
218
219
	/**
220
	 * @generated
221
	 */
222
	protected EObject selectExistingElement(IAdaptable host, Collection types) {
223
		if (types.isEmpty()) {
224
			return null;
225
		}
226
		IGraphicalEditPart editPart = (IGraphicalEditPart) host.getAdapter(IGraphicalEditPart.class);
227
		if (editPart == null) {
228
			return null;
229
		}
230
		Diagram diagram = (Diagram) editPart.getRoot().getContents().getModel();
231
		Collection elements = new HashSet();
232
		for (Iterator it = diagram.getElement().eAllContents(); it.hasNext();) {
233
			EObject element = (EObject) it.next();
234
			if (isApplicableElement(element, types)) {
235
				elements.add(element);
236
			}
237
		}
238
		if (elements.isEmpty()) {
239
			return null;
240
		}
241
		return selectElement((EObject[]) elements.toArray(new EObject[elements.size()]));
242
	}
243
244
	/**
245
	 * @generated
246
	 */
247
	protected boolean isApplicableElement(EObject element, Collection types) {
248
		IElementType type = ElementTypeRegistry.getInstance().getElementType(element);
249
		return types.contains(type);
250
	}
251
252
	/**
253
	 * @generated
254
	 */
255
	protected EObject selectElement(EObject[] elements) {
256
		Shell shell = Display.getCurrent().getActiveShell();
257
		ILabelProvider labelProvider = new AdapterFactoryLabelProvider(UMLDiagramEditorPlugin.getInstance().getItemProvidersAdapterFactory());
258
		ElementListSelectionDialog dialog = new ElementListSelectionDialog(shell, labelProvider);
259
		dialog.setMessage("Available domain model elements:");
260
		dialog.setTitle("Select domain model element");
261
		dialog.setMultipleSelection(false);
262
		dialog.setElements(elements);
263
		EObject selected = null;
264
		if (dialog.open() == Window.OK) {
265
			selected = (EObject) dialog.getFirstResult();
266
		}
267
		return selected;
268
	}
269
}
(-)src/org/eclipse/uml2/diagram/component/edit/helpers/ComponentEditHelper.java (+7 lines)
Added Link Here
1
package org.eclipse.uml2.diagram.component.edit.helpers;
2
3
/**
4
 * @generated
5
 */
6
public class ComponentEditHelper extends UMLBaseEditHelper {
7
}
(-)src/org/eclipse/uml2/diagram/component/edit/policies/UMLTextSelectionEditPolicy.java (+192 lines)
Added Link Here
1
package org.eclipse.uml2.diagram.component.edit.policies;
2
3
import org.eclipse.draw2d.ColorConstants;
4
import org.eclipse.draw2d.Figure;
5
import org.eclipse.draw2d.Graphics;
6
import org.eclipse.draw2d.IFigure;
7
import org.eclipse.draw2d.Label;
8
import org.eclipse.draw2d.RectangleFigure;
9
import org.eclipse.draw2d.geometry.Rectangle;
10
import org.eclipse.gef.LayerConstants;
11
import org.eclipse.gef.editpolicies.SelectionEditPolicy;
12
import org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel;
13
14
/**
15
 * @generated
16
 */
17
public class UMLTextSelectionEditPolicy extends SelectionEditPolicy {
18
19
	/**
20
	 * @generated
21
	 */
22
	private IFigure selectionFeedbackFigure;
23
24
	/**
25
	 * @generated
26
	 */
27
	private IFigure focusFeedbackFigure;
28
29
	/**
30
	 * @generated
31
	 */
32
	protected void showPrimarySelection() {
33
		if (getHostFigure() instanceof WrapLabel) {
34
			((WrapLabel) getHostFigure()).setSelected(true);
35
			((WrapLabel) getHostFigure()).setFocus(true);
36
		} else {
37
			showSelection();
38
			showFocus();
39
		}
40
	}
41
42
	/**
43
	 * @generated
44
	 */
45
	protected void showSelection() {
46
		if (getHostFigure() instanceof WrapLabel) {
47
			((WrapLabel) getHostFigure()).setSelected(true);
48
			((WrapLabel) getHostFigure()).setFocus(false);
49
		} else {
50
			hideSelection();
51
			addFeedback(selectionFeedbackFigure = createSelectionFeedbackFigure());
52
			refreshSelectionFeedback();
53
			hideFocus();
54
		}
55
	}
56
57
	/**
58
	 * @generated
59
	 */
60
	protected void hideSelection() {
61
		if (getHostFigure() instanceof WrapLabel) {
62
			((WrapLabel) getHostFigure()).setSelected(false);
63
			((WrapLabel) getHostFigure()).setFocus(false);
64
		} else {
65
			if (selectionFeedbackFigure != null) {
66
				removeFeedback(selectionFeedbackFigure);
67
				selectionFeedbackFigure = null;
68
			}
69
			hideFocus();
70
		}
71
	}
72
73
	/**
74
	 * @generated
75
	 */
76
	protected void showFocus() {
77
		if (getHostFigure() instanceof WrapLabel) {
78
			((WrapLabel) getHostFigure()).setFocus(true);
79
		} else {
80
			hideFocus();
81
			addFeedback(focusFeedbackFigure = createFocusFeedbackFigure());
82
			refreshFocusFeedback();
83
		}
84
	}
85
86
	/**
87
	 * @generated
88
	 */
89
	protected void hideFocus() {
90
		if (getHostFigure() instanceof WrapLabel) {
91
			((WrapLabel) getHostFigure()).setFocus(false);
92
		} else {
93
			if (focusFeedbackFigure != null) {
94
				removeFeedback(focusFeedbackFigure);
95
				focusFeedbackFigure = null;
96
			}
97
		}
98
	}
99
100
	/**
101
	 * @generated
102
	 */
103
	protected IFigure getFeedbackLayer() {
104
		return getLayer(LayerConstants.SCALED_FEEDBACK_LAYER);
105
	}
106
107
	/**
108
	 * @generated
109
	 */
110
	protected Rectangle getFeedbackBounds() {
111
		Rectangle bounds;
112
		if (getHostFigure() instanceof Label) {
113
			bounds = ((Label) getHostFigure()).getTextBounds();
114
			bounds.intersect(getHostFigure().getBounds());
115
		} else {
116
			bounds = getHostFigure().getBounds().getCopy();
117
		}
118
		getHostFigure().getParent().translateToAbsolute(bounds);
119
		getFeedbackLayer().translateToRelative(bounds);
120
		return bounds;
121
	}
122
123
	/**
124
	 * @generated
125
	 */
126
	protected IFigure createSelectionFeedbackFigure() {
127
		if (getHostFigure() instanceof Label) {
128
			Label feedbackFigure = new Label();
129
			feedbackFigure.setOpaque(true);
130
			feedbackFigure.setBackgroundColor(ColorConstants.menuBackgroundSelected);
131
			feedbackFigure.setForegroundColor(ColorConstants.menuForegroundSelected);
132
			return feedbackFigure;
133
		} else {
134
			RectangleFigure feedbackFigure = new RectangleFigure();
135
			feedbackFigure.setFill(false);
136
			return feedbackFigure;
137
		}
138
	}
139
140
	/**
141
	 * @generated
142
	 */
143
	protected IFigure createFocusFeedbackFigure() {
144
		return new Figure() {
145
146
			protected void paintFigure(Graphics graphics) {
147
				graphics.drawFocus(getBounds().getResized(-1, -1));
148
			}
149
		};
150
	}
151
152
	/**
153
	 * @generated
154
	 */
155
	protected void updateLabel(Label target) {
156
		Label source = (Label) getHostFigure();
157
		target.setText(source.getText());
158
		target.setTextAlignment(source.getTextAlignment());
159
		target.setFont(source.getFont());
160
	}
161
162
	/**
163
	 * @generated
164
	 */
165
	protected void refreshSelectionFeedback() {
166
		if (selectionFeedbackFigure != null) {
167
			if (selectionFeedbackFigure instanceof Label) {
168
				updateLabel((Label) selectionFeedbackFigure);
169
				selectionFeedbackFigure.setBounds(getFeedbackBounds());
170
			} else {
171
				selectionFeedbackFigure.setBounds(getFeedbackBounds().expand(5, 5));
172
			}
173
		}
174
	}
175
176
	/**
177
	 * @generated
178
	 */
179
	protected void refreshFocusFeedback() {
180
		if (focusFeedbackFigure != null) {
181
			focusFeedbackFigure.setBounds(getFeedbackBounds());
182
		}
183
	}
184
185
	/**
186
	 * @generated
187
	 */
188
	public void refreshFeedback() {
189
		refreshSelectionFeedback();
190
		refreshFocusFeedback();
191
	}
192
}
(-)icons/linksNavigatorGroup.gif (+5 lines)
Added Link Here
1
GIF89aÕÿÿ­r/‚GøØˆžf'øÐxøà˜øÐ€f>2èÆ”øè°èЈøðÈÿÿÿË6úöºøà øØ?Œ]Føè˜Ò«€üößãϹ´2àÀx­r+ðØ?¥l$yO@ž_­l$?R¼2ï߯¼…2Å6!ù,s@€pH,?È#âèh:‚¨T0ô4®
2
‹à‘?p©€Ñd¢Y`B‚¡‹p8G AØ%‚%HÁçW¶	_B†‰Š‹?’“’š??–B¥¦¥ B­®­©C³´µI·¸FA;Content-Type: image/gif
3
4
GIF89aÕÿÿ­r/‚GøØˆžf'øÐxøà˜øÐ€f>2èÆ”øè°èЈøðÈÿÿÿË6úöºøà øØ?Œ]Føè˜Ò«€üößãϹ´2àÀx­r+ðØ?¥l$yO@ž_­l$?R¼2ï߯¼…2Å6!ù,s@€pH,?È#âèh:‚¨T0ô4®
5
‹à‘?p©€Ñd¢Y`B‚¡‹p8G AØ%‚%HÁçW¶	_B†‰Š‹?’“’š??–B¥¦¥ B­®­©C³´µI·¸FA;
(-)src/org/eclipse/uml2/diagram/component/edit/parts/PortEditPart.java (+300 lines)
Added Link Here
1
package org.eclipse.uml2.diagram.component.edit.parts;
2
3
import java.util.Iterator;
4
5
import org.eclipse.draw2d.IFigure;
6
import org.eclipse.draw2d.StackLayout;
7
8
import org.eclipse.gef.EditPart;
9
import org.eclipse.gef.EditPolicy;
10
import org.eclipse.gef.GraphicalEditPart;
11
import org.eclipse.gef.Request;
12
13
import org.eclipse.gef.commands.Command;
14
15
import org.eclipse.gef.editparts.LayerManager;
16
17
import org.eclipse.gef.editpolicies.LayoutEditPolicy;
18
import org.eclipse.gef.editpolicies.NonResizableEditPolicy;
19
20
import org.eclipse.gef.requests.CreateRequest;
21
22
import org.eclipse.gmf.runtime.diagram.ui.editparts.AbstractBorderItemEditPart;
23
import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;
24
25
import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;
26
27
import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout;
28
29
import org.eclipse.gmf.runtime.gef.ui.figures.DefaultSizeNodeFigure;
30
import org.eclipse.gmf.runtime.gef.ui.figures.NodeFigure;
31
32
import org.eclipse.gmf.runtime.notation.View;
33
34
import org.eclipse.uml2.diagram.component.edit.policies.PortItemSemanticEditPolicy;
35
import org.eclipse.uml2.diagram.component.edit.policies.UMLExtNodeLabelHostLayoutEditPolicy;
36
import org.eclipse.uml2.diagram.component.part.UMLVisualIDRegistry;
37
38
/**
39
 * @generated
40
 */
41
public class PortEditPart extends AbstractBorderItemEditPart {
42
43
	/**
44
	 * @generated
45
	 */
46
	public static final int VISUAL_ID = 3002;
47
48
	/**
49
	 * @generated
50
	 */
51
	protected IFigure contentPane;
52
53
	/**
54
	 * @generated
55
	 */
56
	protected IFigure primaryShape;
57
58
	/**
59
	 * @generated
60
	 */
61
	public PortEditPart(View view) {
62
		super(view);
63
	}
64
65
	/**
66
	 * @generated
67
	 */
68
	protected void createDefaultEditPolicies() {
69
		super.createDefaultEditPolicies();
70
		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE, getPrimaryDragEditPolicy());
71
		installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE, new PortItemSemanticEditPolicy());
72
		installEditPolicy(EditPolicy.LAYOUT_ROLE, createLayoutEditPolicy());
73
74
	}
75
76
	/**
77
	 * @generated
78
	 */
79
	protected LayoutEditPolicy createLayoutEditPolicy() {
80
		LayoutEditPolicy lep = new LayoutEditPolicy() {
81
82
			protected void decorateChild(EditPart child) {
83
				if (isExternalLabel(child)) {
84
					return;
85
				}
86
				super.decorateChild(child);
87
			}
88
89
			protected EditPolicy createChildEditPolicy(EditPart child) {
90
				EditPolicy result = child.getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);
91
				if (result == null) {
92
					result = new NonResizableEditPolicy();
93
				}
94
				return result;
95
			}
96
97
			protected Command getMoveChildrenCommand(Request request) {
98
				return null;
99
			}
100
101
			protected Command getCreateCommand(CreateRequest request) {
102
				return null;
103
			}
104
		};
105
		UMLExtNodeLabelHostLayoutEditPolicy xlep = new UMLExtNodeLabelHostLayoutEditPolicy() {
106
107
			protected boolean isExternalLabel(EditPart editPart) {
108
				return PortEditPart.this.isExternalLabel(editPart);
109
			}
110
		};
111
		xlep.setRealLayoutEditPolicy(lep);
112
		return xlep;
113
	}
114
115
	/**
116
	 * @generated
117
	 */
118
	protected IFigure createNodeShape() {
119
		PortFigure figure = new PortFigure();
120
		return primaryShape = figure;
121
	}
122
123
	/**
124
	 * @generated
125
	 */
126
	public PortFigure getPrimaryShape() {
127
		return (PortFigure) primaryShape;
128
	}
129
130
	/**
131
	 * @generated 
132
	 */
133
	protected IFigure getContentPaneFor(IGraphicalEditPart editPart) {
134
		if (isExternalLabel(editPart)) {
135
			return getExternalLabelsContainer();
136
		}
137
138
		return super.getContentPaneFor(editPart);
139
	}
140
141
	/**
142
	 * @generated
143
	 */
144
	protected NodeFigure createNodePlate() {
145
		DefaultSizeNodeFigure result = new DefaultSizeNodeFigure(getMapMode().DPtoLP(15), getMapMode().DPtoLP(15));
146
		//FIXME: workaround for #154536
147
		result.getBounds().setSize(result.getPreferredSize());
148
		return result;
149
	}
150
151
	/**
152
	 * Creates figure for this edit part.
153
	 * 
154
	 * Body of this method does not depend on settings in generation model
155
	 * so you may safely remove <i>generated</i> tag and modify it.
156
	 * 
157
	 * @generated
158
	 */
159
	protected NodeFigure createNodeFigure() {
160
		NodeFigure figure = createNodePlate();
161
		figure.setLayoutManager(new StackLayout());
162
		IFigure shape = createNodeShape();
163
		figure.add(shape);
164
		contentPane = setupContentPane(shape);
165
		return figure;
166
	}
167
168
	/**
169
	 * Default implementation treats passed figure as content pane.
170
	 * Respects layout one may have set for generated figure.
171
	 * @param nodeShape instance of generated figure class
172
	 * @generated
173
	 */
174
	protected IFigure setupContentPane(IFigure nodeShape) {
175
		if (nodeShape.getLayoutManager() == null) {
176
			ConstrainedToolbarLayout layout = new ConstrainedToolbarLayout();
177
			layout.setSpacing(getMapMode().DPtoLP(5));
178
			nodeShape.setLayoutManager(layout);
179
		}
180
		return nodeShape; // use nodeShape itself as contentPane
181
	}
182
183
	/**
184
	 * @generated
185
	 */
186
	public IFigure getContentPane() {
187
		if (contentPane != null) {
188
			return contentPane;
189
		}
190
		return super.getContentPane();
191
	}
192
193
	/**
194
	 * @generated
195
	 */
196
	public EditPart getPrimaryChildEditPart() {
197
		return getChildBySemanticHint(UMLVisualIDRegistry.getType(PortNameEditPart.VISUAL_ID));
198
	}
199
200
	/**
201
	 * @generated
202
	 */
203
	protected boolean isExternalLabel(EditPart childEditPart) {
204
		if (childEditPart instanceof PortNameEditPart) {
205
			return true;
206
		}
207
		return false;
208
	}
209
210
	/**
211
	 * @generated
212
	 */
213
	protected IFigure getExternalLabelsContainer() {
214
		LayerManager root = (LayerManager) getRoot();
215
		return root.getLayer(UMLEditPartFactory.EXTERNAL_NODE_LABELS_LAYER);
216
	}
217
218
	/**
219
	 * @generated
220
	 */
221
	protected void addChildVisual(EditPart childEditPart, int index) {
222
		if (isExternalLabel(childEditPart)) {
223
			IFigure labelFigure = ((GraphicalEditPart) childEditPart).getFigure();
224
			getExternalLabelsContainer().add(labelFigure);
225
			return;
226
		}
227
		super.addChildVisual(childEditPart, -1);
228
	}
229
230
	/**
231
	 * @generated
232
	 */
233
	protected void removeChildVisual(EditPart childEditPart) {
234
		if (isExternalLabel(childEditPart)) {
235
			IFigure labelFigure = ((GraphicalEditPart) childEditPart).getFigure();
236
			getExternalLabelsContainer().remove(labelFigure);
237
			return;
238
		}
239
		super.removeChildVisual(childEditPart);
240
	}
241
242
	/**
243
	 * @generated
244
	 */
245
	public void removeNotify() {
246
		for (Iterator it = getChildren().iterator(); it.hasNext();) {
247
			EditPart childEditPart = (EditPart) it.next();
248
			if (isExternalLabel(childEditPart)) {
249
				IFigure labelFigure = ((GraphicalEditPart) childEditPart).getFigure();
250
				getExternalLabelsContainer().remove(labelFigure);
251
			}
252
		}
253
		super.removeNotify();
254
	}
255
256
	/**
257
	 * @generated
258
	 */
259
	public class PortFigure extends org.eclipse.draw2d.RectangleFigure {
260
261
		/**
262
		 * @generated
263
		 */
264
		public PortFigure() {
265
266
			this.setForegroundColor(org.eclipse.draw2d.ColorConstants.gray);
267
			this.setPreferredSize(getMapMode().DPtoLP(15), getMapMode().DPtoLP(15));
268
			this.setMaximumSize(new org.eclipse.draw2d.geometry.Dimension(getMapMode().DPtoLP(15), getMapMode().DPtoLP(15)));
269
			this.setMinimumSize(new org.eclipse.draw2d.geometry.Dimension(getMapMode().DPtoLP(15), getMapMode().DPtoLP(15)));
270
			createContents();
271
		}
272
273
		/**
274
		 * @generated
275
		 */
276
		private void createContents() {
277
		}
278
279
		/**
280
		 * @generated
281
		 */
282
		private boolean myUseLocalCoordinates = false;
283
284
		/**
285
		 * @generated
286
		 */
287
		protected boolean useLocalCoordinates() {
288
			return myUseLocalCoordinates;
289
		}
290
291
		/**
292
		 * @generated
293
		 */
294
		protected void setUseLocalCoordinates(boolean useLocalCoordinates) {
295
			myUseLocalCoordinates = useLocalCoordinates;
296
		}
297
298
	}
299
300
}
(-)src/org/eclipse/uml2/diagram/component/edit/parts/ComponentName2EditPart.java (+574 lines)
Added Link Here
1
package org.eclipse.uml2.diagram.component.edit.parts;
2
3
import java.util.ArrayList;
4
import java.util.List;
5
import org.eclipse.gef.EditPolicy;
6
import org.eclipse.gef.GraphicalEditPart;
7
import org.eclipse.gef.Request;
8
import org.eclipse.gef.commands.Command;
9
import org.eclipse.gef.editpolicies.NonResizableEditPolicy;
10
import org.eclipse.gef.handles.NonResizableHandleKit;
11
import org.eclipse.gmf.runtime.diagram.ui.editparts.ITextAwareEditPart;
12
import org.eclipse.gmf.runtime.diagram.ui.editpolicies.LabelDirectEditPolicy;
13
import org.eclipse.gmf.runtime.notation.View;
14
import java.util.Collections;
15
16
import org.eclipse.draw2d.IFigure;
17
import org.eclipse.draw2d.Label;
18
19
import org.eclipse.draw2d.geometry.Point;
20
21
import org.eclipse.emf.common.notify.Notification;
22
23
import org.eclipse.emf.ecore.EObject;
24
25
import org.eclipse.emf.transaction.RunnableWithResult;
26
27
import org.eclipse.gef.AccessibleEditPart;
28
29
import org.eclipse.gef.requests.DirectEditRequest;
30
31
import org.eclipse.gef.tools.DirectEditManager;
32
33
import org.eclipse.gmf.runtime.common.ui.services.parser.IParser;
34
import org.eclipse.gmf.runtime.common.ui.services.parser.IParserEditStatus;
35
import org.eclipse.gmf.runtime.common.ui.services.parser.ParserEditStatus;
36
import org.eclipse.gmf.runtime.common.ui.services.parser.ParserOptions;
37
import org.eclipse.gmf.runtime.common.ui.services.parser.ParserService;
38
39
import org.eclipse.gmf.runtime.diagram.ui.editparts.CompartmentEditPart;
40
import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;
41
42
import org.eclipse.gmf.runtime.diagram.ui.l10n.DiagramColorRegistry;
43
44
import org.eclipse.gmf.runtime.diagram.ui.requests.RequestConstants;
45
46
import org.eclipse.gmf.runtime.diagram.ui.tools.TextDirectEditManager;
47
48
import org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel;
49
50
import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;
51
52
import org.eclipse.gmf.runtime.emf.type.core.IElementType;
53
54
import org.eclipse.gmf.runtime.emf.ui.services.parser.ISemanticParser;
55
import org.eclipse.gmf.runtime.emf.ui.services.parser.ParserHintAdapter;
56
57
import org.eclipse.gmf.runtime.notation.FontStyle;
58
import org.eclipse.gmf.runtime.notation.NotationPackage;
59
60
import org.eclipse.jface.resource.ImageDescriptor;
61
62
import org.eclipse.jface.text.contentassist.IContentAssistProcessor;
63
64
import org.eclipse.jface.viewers.ICellEditorValidator;
65
66
import org.eclipse.swt.SWT;
67
68
import org.eclipse.swt.accessibility.AccessibleEvent;
69
70
import org.eclipse.swt.graphics.Color;
71
import org.eclipse.swt.graphics.FontData;
72
import org.eclipse.swt.graphics.Image;
73
import org.eclipse.uml2.diagram.component.edit.policies.UMLTextSelectionEditPolicy;
74
import org.eclipse.uml2.diagram.component.part.UMLDiagramEditorPlugin;
75
import org.eclipse.uml2.diagram.component.providers.UMLElementTypes;
76
77
/**
78
 * @generated
79
 */
80
public class ComponentName2EditPart extends CompartmentEditPart implements ITextAwareEditPart {
81
82
	/**
83
	 * @generated
84
	 */
85
	public static final int VISUAL_ID = 5001;
86
87
	/**
88
	 * @generated
89
	 */
90
	private DirectEditManager manager;
91
92
	/**
93
	 * @generated
94
	 */
95
	private IParser parser;
96
97
	/**
98
	 * @generated
99
	 */
100
	private List parserElements;
101
102
	/**
103
	 * @generated
104
	 */
105
	private String defaultText;
106
107
	/**
108
	 * @generated
109
	 */
110
	public ComponentName2EditPart(View view) {
111
		super(view);
112
	}
113
114
	/**
115
	 * @generated
116
	 */
117
	protected void createDefaultEditPolicies() {
118
		super.createDefaultEditPolicies();
119
		installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE, new LabelDirectEditPolicy());
120
		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE, new NonResizableEditPolicy() {
121
122
			protected List createSelectionHandles() {
123
				List handles = new ArrayList();
124
				NonResizableHandleKit.addMoveHandle((GraphicalEditPart) getHost(), handles);
125
				return handles;
126
			}
127
128
			public Command getCommand(Request request) {
129
				return null;
130
			}
131
132
			public boolean understandsRequest(Request request) {
133
				return false;
134
			}
135
		});
136
137
	}
138
139
	/**
140
	 * @generated
141
	 */
142
	protected String getLabelTextHelper(IFigure figure) {
143
		if (figure instanceof WrapLabel) {
144
			return ((WrapLabel) figure).getText();
145
		} else {
146
			return ((Label) figure).getText();
147
		}
148
	}
149
150
	/**
151
	 * @generated
152
	 */
153
	protected void setLabelTextHelper(IFigure figure, String text) {
154
		if (figure instanceof WrapLabel) {
155
			((WrapLabel) figure).setText(text);
156
		} else {
157
			((Label) figure).setText(text);
158
		}
159
	}
160
161
	/**
162
	 * @generated
163
	 */
164
	protected Image getLabelIconHelper(IFigure figure) {
165
		if (figure instanceof WrapLabel) {
166
			return ((WrapLabel) figure).getIcon();
167
		} else {
168
			return ((Label) figure).getIcon();
169
		}
170
	}
171
172
	/**
173
	 * @generated
174
	 */
175
	protected void setLabelIconHelper(IFigure figure, Image icon) {
176
		if (figure instanceof WrapLabel) {
177
			((WrapLabel) figure).setIcon(icon);
178
		} else {
179
			((Label) figure).setIcon(icon);
180
		}
181
	}
182
183
	/**
184
	 * @generated
185
	 */
186
	public void setLabel(WrapLabel figure) {
187
		unregisterVisuals();
188
		setFigure(figure);
189
		defaultText = getLabelTextHelper(figure);
190
		registerVisuals();
191
		refreshVisuals();
192
	}
193
194
	/**
195
	 * @generated
196
	 */
197
	protected List getModelChildren() {
198
		return Collections.EMPTY_LIST;
199
	}
200
201
	/**
202
	 * @generated
203
	 */
204
	public IGraphicalEditPart getChildBySemanticHint(String semanticHint) {
205
		return null;
206
	}
207
208
	/**
209
	 * @generated
210
	 */
211
	protected EObject getParserElement() {
212
		EObject element = resolveSemanticElement();
213
		return element != null ? element : (View) getModel();
214
	}
215
216
	/**
217
	 * @generated
218
	 */
219
	protected Image getLabelIcon() {
220
		EObject parserElement = getParserElement();
221
		if (parserElement == null) {
222
			return null;
223
		}
224
		return UMLElementTypes.getImage(parserElement.eClass());
225
	}
226
227
	/**
228
	 * @generated
229
	 */
230
	protected String getLabelText() {
231
		String text = null;
232
		if (getParser() != null) {
233
			text = getParser().getPrintString(new EObjectAdapter(getParserElement()), getParserOptions().intValue());
234
		}
235
		if (text == null || text.length() == 0) {
236
			text = defaultText;
237
		}
238
		return text;
239
	}
240
241
	/**
242
	 * @generated
243
	 */
244
	public void setLabelText(String text) {
245
		setLabelTextHelper(getFigure(), text);
246
		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);
247
		if (pdEditPolicy instanceof UMLTextSelectionEditPolicy) {
248
			((UMLTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();
249
		}
250
	}
251
252
	/**
253
	 * @generated
254
	 */
255
	public String getEditText() {
256
		if (getParser() == null) {
257
			return ""; //$NON-NLS-1$
258
		}
259
		return getParser().getEditString(new EObjectAdapter(getParserElement()), getParserOptions().intValue());
260
	}
261
262
	/**
263
	 * @generated
264
	 */
265
	protected boolean isEditable() {
266
		return getEditText() != null;
267
	}
268
269
	/**
270
	 * @generated
271
	 */
272
	public ICellEditorValidator getEditTextValidator() {
273
		return new ICellEditorValidator() {
274
275
			public String isValid(final Object value) {
276
				if (value instanceof String) {
277
					final EObject element = getParserElement();
278
					final IParser parser = getParser();
279
					try {
280
						IParserEditStatus valid = (IParserEditStatus) getEditingDomain().runExclusive(new RunnableWithResult.Impl() {
281
282
							public void run() {
283
								setResult(parser.isValidEditString(new EObjectAdapter(element), (String) value));
284
							}
285
						});
286
						return valid.getCode() == ParserEditStatus.EDITABLE ? null : valid.getMessage();
287
					} catch (InterruptedException ie) {
288
						ie.printStackTrace();
289
					}
290
				}
291
292
				// shouldn't get here
293
				return null;
294
			}
295
		};
296
	}
297
298
	/**
299
	 * @generated
300
	 */
301
	public IContentAssistProcessor getCompletionProcessor() {
302
		if (getParser() == null) {
303
			return null;
304
		}
305
		return getParser().getCompletionProcessor(new EObjectAdapter(getParserElement()));
306
	}
307
308
	/**
309
	 * @generated
310
	 */
311
	public ParserOptions getParserOptions() {
312
		return ParserOptions.NONE;
313
	}
314
315
	/**
316
	 * @generated
317
	 */
318
	public IParser getParser() {
319
		if (parser == null) {
320
			String parserHint = ((View) getModel()).getType();
321
			ParserHintAdapter hintAdapter = new ParserHintAdapter(getParserElement(), parserHint) {
322
323
				public Object getAdapter(Class adapter) {
324
					if (IElementType.class.equals(adapter)) {
325
						return UMLElementTypes.Component_2001;
326
					}
327
					return super.getAdapter(adapter);
328
				}
329
			};
330
			parser = ParserService.getInstance().getParser(hintAdapter);
331
		}
332
		return parser;
333
	}
334
335
	/**
336
	 * @generated
337
	 */
338
	protected DirectEditManager getManager() {
339
		if (manager == null) {
340
			setManager(new TextDirectEditManager(this, TextDirectEditManager.getTextCellEditorClass(this), UMLEditPartFactory.getTextCellEditorLocator(this)));
341
		}
342
		return manager;
343
	}
344
345
	/**
346
	 * @generated
347
	 */
348
	protected void setManager(DirectEditManager manager) {
349
		this.manager = manager;
350
	}
351
352
	/**
353
	 * @generated
354
	 */
355
	protected void performDirectEdit() {
356
		getManager().show();
357
	}
358
359
	/**
360
	 * @generated
361
	 */
362
	protected void performDirectEdit(Point eventLocation) {
363
		if (getManager().getClass() == TextDirectEditManager.class) {
364
			((TextDirectEditManager) getManager()).show(eventLocation.getSWTPoint());
365
		}
366
	}
367
368
	/**
369
	 * @generated
370
	 */
371
	private void performDirectEdit(char initialCharacter) {
372
		if (getManager() instanceof TextDirectEditManager) {
373
			((TextDirectEditManager) getManager()).show(initialCharacter);
374
		} else {
375
			performDirectEdit();
376
		}
377
	}
378
379
	/**
380
	 * @generated
381
	 */
382
	protected void performDirectEditRequest(Request request) {
383
		final Request theRequest = request;
384
		try {
385
			getEditingDomain().runExclusive(new Runnable() {
386
387
				public void run() {
388
					if (isActive() && isEditable()) {
389
						if (theRequest.getExtendedData().get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR) instanceof Character) {
390
							Character initialChar = (Character) theRequest.getExtendedData().get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR);
391
							performDirectEdit(initialChar.charValue());
392
						} else if ((theRequest instanceof DirectEditRequest) && (getEditText().equals(getLabelText()))) {
393
							DirectEditRequest editRequest = (DirectEditRequest) theRequest;
394
							performDirectEdit(editRequest.getLocation());
395
						} else {
396
							performDirectEdit();
397
						}
398
					}
399
				}
400
			});
401
		} catch (InterruptedException e) {
402
			e.printStackTrace();
403
		}
404
	}
405
406
	/**
407
	 * @generated
408
	 */
409
	protected void refreshVisuals() {
410
		super.refreshVisuals();
411
		refreshLabel();
412
		refreshFont();
413
		refreshFontColor();
414
		refreshUnderline();
415
		refreshStrikeThrough();
416
	}
417
418
	/**
419
	 * @generated
420
	 */
421
	protected void refreshLabel() {
422
		setLabelTextHelper(getFigure(), getLabelText());
423
		setLabelIconHelper(getFigure(), getLabelIcon());
424
		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);
425
		if (pdEditPolicy instanceof UMLTextSelectionEditPolicy) {
426
			((UMLTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();
427
		}
428
	}
429
430
	/**
431
	 * @generated
432
	 */
433
	protected void refreshUnderline() {
434
		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle());
435
		if (style != null && getFigure() instanceof WrapLabel) {
436
			((WrapLabel) getFigure()).setTextUnderline(style.isUnderline());
437
		}
438
	}
439
440
	/**
441
	 * @generated
442
	 */
443
	protected void refreshStrikeThrough() {
444
		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle());
445
		if (style != null && getFigure() instanceof WrapLabel) {
446
			((WrapLabel) getFigure()).setTextStrikeThrough(style.isStrikeThrough());
447
		}
448
	}
449
450
	/**
451
	 * @generated
452
	 */
453
	protected void refreshFont() {
454
		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle());
455
		if (style != null) {
456
			FontData fontData = new FontData(style.getFontName(), style.getFontHeight(), (style.isBold() ? SWT.BOLD : SWT.NORMAL) | (style.isItalic() ? SWT.ITALIC : SWT.NORMAL));
457
			setFont(fontData);
458
		}
459
	}
460
461
	/**
462
	 * @generated
463
	 */
464
	protected void setFontColor(Color color) {
465
		getFigure().setForegroundColor(color);
466
	}
467
468
	/**
469
	 * @generated
470
	 */
471
	protected void addSemanticListeners() {
472
		if (getParser() instanceof ISemanticParser) {
473
			EObject element = resolveSemanticElement();
474
			parserElements = ((ISemanticParser) getParser()).getSemanticElementsBeingParsed(element);
475
			for (int i = 0; i < parserElements.size(); i++) {
476
				addListenerFilter("SemanticModel" + i, this, (EObject) parserElements.get(i)); //$NON-NLS-1$
477
			}
478
		} else {
479
			super.addSemanticListeners();
480
		}
481
	}
482
483
	/**
484
	 * @generated
485
	 */
486
	protected void removeSemanticListeners() {
487
		if (parserElements != null) {
488
			for (int i = 0; i < parserElements.size(); i++) {
489
				removeListenerFilter("SemanticModel" + i); //$NON-NLS-1$
490
			}
491
		} else {
492
			super.removeSemanticListeners();
493
		}
494
	}
495
496
	/**
497
	 * @generated
498
	 */
499
	protected AccessibleEditPart getAccessibleEditPart() {
500
		if (accessibleEP == null) {
501
			accessibleEP = new AccessibleGraphicalEditPart() {
502
503
				public void getName(AccessibleEvent e) {
504
					e.result = getLabelTextHelper(getFigure());
505
				}
506
			};
507
		}
508
		return accessibleEP;
509
	}
510
511
	/**
512
	 * @generated
513
	 */
514
	private View getFontStyleOwnerView() {
515
		return getPrimaryView();
516
	}
517
518
	/**
519
	 * @generated
520
	 */
521
	protected void addNotationalListeners() {
522
		super.addNotationalListeners();
523
		addListenerFilter("PrimaryView", this, getPrimaryView()); //$NON-NLS-1$
524
	}
525
526
	/**
527
	 * @generated
528
	 */
529
	protected void removeNotationalListeners() {
530
		super.removeNotationalListeners();
531
		removeListenerFilter("PrimaryView"); //$NON-NLS-1$
532
	}
533
534
	/**
535
	 * @generated
536
	 */
537
	protected void handleNotificationEvent(Notification event) {
538
		Object feature = event.getFeature();
539
		if (NotationPackage.eINSTANCE.getFontStyle_FontColor().equals(feature)) {
540
			Integer c = (Integer) event.getNewValue();
541
			setFontColor(DiagramColorRegistry.getInstance().getColor(c));
542
		} else if (NotationPackage.eINSTANCE.getFontStyle_Underline().equals(feature)) {
543
			refreshUnderline();
544
		} else if (NotationPackage.eINSTANCE.getFontStyle_StrikeThrough().equals(feature)) {
545
			refreshStrikeThrough();
546
		} else if (NotationPackage.eINSTANCE.getFontStyle_FontHeight().equals(feature) || NotationPackage.eINSTANCE.getFontStyle_FontName().equals(feature)
547
				|| NotationPackage.eINSTANCE.getFontStyle_Bold().equals(feature) || NotationPackage.eINSTANCE.getFontStyle_Italic().equals(feature)) {
548
			refreshFont();
549
		} else {
550
			if (getParser() != null && getParser().isAffectingEvent(event, getParserOptions().intValue())) {
551
				refreshLabel();
552
			}
553
			if (getParser() instanceof ISemanticParser) {
554
				ISemanticParser modelParser = (ISemanticParser) getParser();
555
				if (modelParser.areSemanticElementsAffected(null, event)) {
556
					removeSemanticListeners();
557
					if (resolveSemanticElement() != null) {
558
						addSemanticListeners();
559
					}
560
					refreshLabel();
561
				}
562
			}
563
		}
564
		super.handleNotificationEvent(event);
565
	}
566
567
	/**
568
	 * @generated
569
	 */
570
	protected IFigure createFigure() {
571
		// Parent should assign one using setLabel method
572
		return null;
573
	}
574
}
(-)src/org/eclipse/uml2/diagram/component/edit/policies/UMLReferenceConnectionEditPolicy.java (+150 lines)
Added Link Here
1
package org.eclipse.uml2.diagram.component.edit.policies;
2
3
import org.eclipse.emf.transaction.TransactionalEditingDomain;
4
import org.eclipse.gef.EditPart;
5
import org.eclipse.gef.Request;
6
import org.eclipse.gef.commands.Command;
7
import org.eclipse.gef.commands.CompoundCommand;
8
import org.eclipse.gef.commands.UnexecutableCommand;
9
import org.eclipse.gef.editparts.AbstractConnectionEditPart;
10
import org.eclipse.gef.editpolicies.ConnectionEditPolicy;
11
import org.eclipse.gef.requests.GroupRequest;
12
import org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand;
13
import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy;
14
import org.eclipse.gmf.runtime.diagram.ui.editparts.GraphicalEditPart;
15
import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;
16
import org.eclipse.gmf.runtime.diagram.ui.l10n.DiagramUIMessages;
17
import org.eclipse.gmf.runtime.diagram.ui.preferences.IPreferenceConstants;
18
import org.eclipse.gmf.runtime.diagram.ui.requests.EditCommandRequestWrapper;
19
import org.eclipse.gmf.runtime.diagram.ui.requests.GroupRequestViaKeyboard;
20
import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest;
21
import org.eclipse.gmf.runtime.notation.View;
22
import org.eclipse.jface.dialogs.IDialogConstants;
23
import org.eclipse.jface.dialogs.MessageDialogWithToggle;
24
import org.eclipse.jface.preference.IPreferenceStore;
25
import org.eclipse.jface.util.Assert;
26
import org.eclipse.swt.widgets.Display;
27
28
/**
29
 * @generated
30
 */
31
public class UMLReferenceConnectionEditPolicy extends ConnectionEditPolicy {
32
33
	/**
34
	 * @generated
35
	 */
36
	private static final String DELETE_FROM_DIAGRAM_DLG_TITLE = DiagramUIMessages.PromptingDeleteAction_DeleteFromDiagramDialog_Title;
37
38
	/**
39
	 * @generated
40
	 */
41
	private static final String DELETE_FROM_DIAGRAM_DLG_MESSAGE = DiagramUIMessages.PromptingDeleteAction_DeleteFromDiagramDialog_Message;
42
43
	/**
44
	 * @generated
45
	 */
46
	private static final String DELETE_FROM_MODEL_DLG_TOGGLE_LABEL = DiagramUIMessages.MessageDialogWithToggle_DoNotPromptAgainToggle_label;
47
48
	/**
49
	 * @generated
50
	 */
51
	protected final Command getDeleteCommand(GroupRequest deleteRequest) {
52
		boolean isDeleteFromKeyBoard = deleteRequest instanceof GroupRequestViaKeyboard;
53
		if (shouldDeleteSemantic()) {
54
			return createDeleteSemanticCommand(deleteRequest);
55
		} else {
56
			boolean proceedToDeleteView = true;
57
			if (isDeleteFromKeyBoard) {
58
				GroupRequestViaKeyboard groupRequestViaKeyboard = (GroupRequestViaKeyboard) deleteRequest;
59
				if (groupRequestViaKeyboard.isShowInformationDialog()) {
60
					proceedToDeleteView = showPrompt();
61
					groupRequestViaKeyboard.setShowInformationDialog(false);
62
					if (!(proceedToDeleteView))
63
						return UnexecutableCommand.INSTANCE;
64
				}
65
			}
66
			return createDeleteViewCommand(deleteRequest);
67
		}
68
	}
69
70
	/**
71
	 * @generated
72
	 */
73
	protected boolean shouldDeleteSemantic() {
74
		Assert.isTrue(getHost() instanceof AbstractConnectionEditPart);
75
		AbstractConnectionEditPart cep = (AbstractConnectionEditPart) getHost();
76
		boolean isCanonical = false;
77
		if (cep.getSource() != null)
78
			isCanonical = IsCanonical(cep.getSource());
79
		if (cep.getTarget() != null)
80
			return isCanonical ? isCanonical : IsCanonical(cep.getTarget());
81
		return isCanonical;
82
	}
83
84
	/**
85
	 * @generated
86
	 */
87
	private boolean IsCanonical(EditPart ep) {
88
		EditPart parent = ep.getParent();
89
		return parent instanceof GraphicalEditPart ? ((GraphicalEditPart) parent).isCanonical() : false;
90
	}
91
92
	/**
93
	 * @generated
94
	 */
95
	protected Command createDeleteViewCommand(GroupRequest deleteRequest) {
96
		TransactionalEditingDomain editingDomain = ((IGraphicalEditPart) getHost()).getEditingDomain();
97
		return new ICommandProxy(new DeleteCommand(editingDomain, (View) getHost().getModel()));
98
	}
99
100
	/**
101
	 * @generated
102
	 */
103
	protected Command createDeleteSemanticCommand(GroupRequest deleteRequest) {
104
		TransactionalEditingDomain editingDomain = ((IGraphicalEditPart) getHost()).getEditingDomain();
105
		EditCommandRequestWrapper semReq = new EditCommandRequestWrapper(new DestroyElementRequest(editingDomain, false), deleteRequest.getExtendedData());
106
		Command semanticCmd = getHost().getCommand(semReq);
107
		if (semanticCmd != null && semanticCmd.canExecute()) {
108
			CompoundCommand cc = new CompoundCommand();
109
			cc.add(semanticCmd);
110
			return cc;
111
		}
112
		return null;
113
	}
114
115
	/**
116
	 * @generated
117
	 */
118
	private boolean showPrompt() {
119
		boolean prompt = ((IPreferenceStore) ((IGraphicalEditPart) getHost()).getDiagramPreferencesHint().getPreferenceStore()).getBoolean(IPreferenceConstants.PREF_PROMPT_ON_DEL_FROM_DIAGRAM);
120
		if (prompt)
121
			if (showMessageDialog())
122
				return true;
123
			else
124
				return false;
125
		return true;
126
	}
127
128
	/**
129
	 * @generated
130
	 */
131
	private boolean showMessageDialog() {
132
		MessageDialogWithToggle dialog = MessageDialogWithToggle.openYesNoQuestion(Display.getCurrent().getActiveShell(), DELETE_FROM_DIAGRAM_DLG_TITLE, DELETE_FROM_DIAGRAM_DLG_MESSAGE,
133
				DELETE_FROM_MODEL_DLG_TOGGLE_LABEL, false, (IPreferenceStore) ((IGraphicalEditPart) getHost()).getDiagramPreferencesHint().getPreferenceStore(),
134
				IPreferenceConstants.PREF_PROMPT_ON_DEL_FROM_DIAGRAM);
135
		if (dialog.getReturnCode() == IDialogConstants.YES_ID)
136
			return true;
137
		else
138
			return false;
139
	}
140
141
	/**
142
	 * @generated
143
	 */
144
	public Command getCommand(Request request) {
145
		if (request instanceof GroupRequestViaKeyboard) {
146
			return getDeleteCommand((GroupRequest) request);
147
		}
148
		return super.getCommand(request);
149
	}
150
}
(-)src/org/eclipse/uml2/diagram/component/part/UMLDiagramFileCreator.java (+70 lines)
Added Link Here
1
package org.eclipse.uml2.diagram.component.part;
2
3
import org.eclipse.gmf.runtime.diagram.ui.resources.editor.util.DiagramFileCreator;
4
import org.eclipse.core.resources.IWorkspaceRoot;
5
import org.eclipse.core.resources.ResourcesPlugin;
6
7
import org.eclipse.core.runtime.IPath;
8
9
/**
10
 * @generated
11
 */
12
public class UMLDiagramFileCreator extends DiagramFileCreator {
13
14
	/**
15
	 * @generated
16
	 */
17
	private static UMLDiagramFileCreator INSTANCE = new UMLDiagramFileCreator();
18
19
	/**
20
	 * @generated
21
	 */
22
	public static DiagramFileCreator getInstance() {
23
		return INSTANCE;
24
	}
25
26
	/**
27
	 * @generated
28
	 */
29
	public String getExtension() {
30
		return ".umlcomponent_diagram"; //$NON-NLS-1$
31
	}
32
33
	/**
34
	 * @generated
35
	 */
36
	public String getUniqueFileName(IPath containerPath, String fileName) {
37
		int nFileNumber = 1;
38
		fileName = removeExtensionFromFileName(fileName);
39
		String newFileName = fileName;
40
41
		IPath diagramFilePath = containerPath.append(appendExtensionToFileName(newFileName));
42
		IPath modelFilePath = containerPath.append(appendExtensionToModelFileName(newFileName));
43
		IWorkspaceRoot workspaceRoot = ResourcesPlugin.getWorkspace().getRoot();
44
45
		while (workspaceRoot.exists(diagramFilePath) || workspaceRoot.exists(modelFilePath)) {
46
			nFileNumber++;
47
			newFileName = fileName + nFileNumber;
48
			diagramFilePath = containerPath.append(appendExtensionToFileName(newFileName));
49
			modelFilePath = containerPath.append(appendExtensionToModelFileName(newFileName));
50
		}
51
		return newFileName;
52
	}
53
54
	/**
55
	 * @generated
56
	 */
57
	private String removeExtensionFromFileName(String fileName) {
58
		if (fileName.endsWith(getExtension())) {
59
			return fileName.substring(0, fileName.length() - getExtension().length());
60
		}
61
		return fileName;
62
	}
63
64
	/**
65
	 * @generated
66
	 */
67
	private String appendExtensionToModelFileName(String fileName) {
68
		return fileName + ".uml"; //$NON-NLS-1$
69
	}
70
}
(-)src/org/eclipse/uml2/diagram/component/edit/policies/Class2CanonicalEditPolicy.java (+53 lines)
Added Link Here
1
package org.eclipse.uml2.diagram.component.edit.policies;
2
3
import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy;
4
import org.eclipse.gmf.runtime.notation.View;
5
import java.util.Iterator;
6
import java.util.LinkedList;
7
import java.util.List;
8
9
import org.eclipse.emf.ecore.EObject;
10
11
import org.eclipse.uml2.diagram.component.edit.parts.PortEditPart;
12
import org.eclipse.uml2.diagram.component.part.UMLVisualIDRegistry;
13
import org.eclipse.uml2.uml.StructuredClassifier;
14
15
/**
16
 * @generated
17
 */
18
public class Class2CanonicalEditPolicy extends CanonicalEditPolicy {
19
20
	/**
21
	 * @generated
22
	 */
23
	protected List getSemanticChildrenList() {
24
		List result = new LinkedList();
25
		EObject modelObject = ((View) getHost().getModel()).getElement();
26
		View viewObject = (View) getHost().getModel();
27
		EObject nextValue;
28
		int nodeVID;
29
		for (Iterator values = ((StructuredClassifier) modelObject).getOwnedAttributes().iterator(); values.hasNext();) {
30
			nextValue = (EObject) values.next();
31
			nodeVID = UMLVisualIDRegistry.getNodeVisualID(viewObject, nextValue);
32
			if (PortEditPart.VISUAL_ID == nodeVID) {
33
				result.add(nextValue);
34
			}
35
		}
36
		return result;
37
	}
38
39
	/**
40
	 * @generated
41
	 */
42
	protected boolean shouldDeleteView(View view) {
43
		return view.isSetElement() && view.getElement() != null && view.getElement().eIsProxy();
44
	}
45
46
	/**
47
	 * @generated
48
	 */
49
	protected String getDefaultFactoryHint() {
50
		return null;
51
	}
52
53
}
(-)src/org/eclipse/uml2/diagram/component/view/factories/ArtifactNameViewFactory.java (+29 lines)
Added Link Here
1
package org.eclipse.uml2.diagram.component.view.factories;
2
3
import org.eclipse.core.runtime.IAdaptable;
4
import org.eclipse.gmf.runtime.notation.View;
5
import java.util.ArrayList;
6
import java.util.List;
7
8
import org.eclipse.gmf.runtime.diagram.ui.view.factories.BasicNodeViewFactory;
9
10
/**
11
 * @generated
12
 */
13
public class ArtifactNameViewFactory extends BasicNodeViewFactory {
14
15
	/**
16
	 * @generated
17
	 */
18
	protected void decorateView(View containerView, View view, IAdaptable semanticAdapter, String semanticHint, int index, boolean persisted) {
19
		super.decorateView(containerView, view, semanticAdapter, semanticHint, index, persisted);
20
	}
21
22
	/**
23
	 * @generated
24
	 */
25
	protected List createStyles(View view) {
26
		List styles = new ArrayList();
27
		return styles;
28
	}
29
}
(-)src/org/eclipse/uml2/diagram/component/view/factories/ArtifactName2ViewFactory.java (+29 lines)
Added Link Here
1
package org.eclipse.uml2.diagram.component.view.factories;
2
3
import org.eclipse.core.runtime.IAdaptable;
4
import org.eclipse.gmf.runtime.notation.View;
5
import java.util.ArrayList;
6
import java.util.List;
7
8
import org.eclipse.gmf.runtime.diagram.ui.view.factories.BasicNodeViewFactory;
9
10
/**
11
 * @generated
12
 */
13
public class ArtifactName2ViewFactory extends BasicNodeViewFactory {
14
15
	/**
16
	 * @generated
17
	 */
18
	protected void decorateView(View containerView, View view, IAdaptable semanticAdapter, String semanticHint, int index, boolean persisted) {
19
		super.decorateView(containerView, view, semanticAdapter, semanticHint, index, persisted);
20
	}
21
22
	/**
23
	 * @generated
24
	 */
25
	protected List createStyles(View view) {
26
		List styles = new ArrayList();
27
		return styles;
28
	}
29
}
(-)src/org/eclipse/uml2/diagram/component/part/UMLCreationWizardPage.java (+111 lines)
Added Link Here
1
package org.eclipse.uml2.diagram.component.part;
2
3
import java.io.ByteArrayInputStream;
4
import java.io.InputStream;
5
6
import org.eclipse.core.resources.ResourcesPlugin;
7
import org.eclipse.core.runtime.IPath;
8
import org.eclipse.gmf.runtime.diagram.ui.resources.editor.util.DiagramFileCreator;
9
import org.eclipse.jface.viewers.IStructuredSelection;
10
import org.eclipse.swt.widgets.Composite;
11
import org.eclipse.ui.dialogs.WizardNewFileCreationPage;
12
13
/**
14
 * @generated
15
 */
16
public class UMLCreationWizardPage extends WizardNewFileCreationPage {
17
18
	/**
19
	 * @generated
20
	 */
21
	private static final String DOMAIN_EXT = ".uml"; //$NON-NLS-1$
22
23
	/**
24
	 * @generated
25
	 */
26
	private static final String DIAGRAM_EXT = ".umlcomponent_diagram"; //$NON-NLS-1$
27
28
	/**
29
	 * @generated
30
	 */
31
	public UMLCreationWizardPage(String pageName, IStructuredSelection selection) {
32
		super(pageName, selection);
33
	}
34
35
	/**
36
	 * @generated
37
	 */
38
	protected String getDefaultFileName() {
39
		return "default"; //$NON-NLS-1$
40
	}
41
42
	/**
43
	 * @generated
44
	 */
45
	public String getFileName() {
46
		String fileName = super.getFileName();
47
		if (fileName != null && !fileName.endsWith(DIAGRAM_EXT)) {
48
			fileName += DIAGRAM_EXT;
49
		}
50
		return fileName;
51
	}
52
53
	/**
54
	 * @generated
55
	 */
56
	private String getUniqueFileName(IPath containerPath, String fileName) {
57
		String newFileName = fileName;
58
		IPath diagramFilePath = containerPath.append(newFileName + DIAGRAM_EXT);
59
		IPath modelFilePath = containerPath.append(newFileName + DOMAIN_EXT);
60
		int i = 1;
61
		while (exists(diagramFilePath) || exists(modelFilePath)) {
62
			i++;
63
			newFileName = fileName + i;
64
			diagramFilePath = containerPath.append(newFileName + DIAGRAM_EXT);
65
			modelFilePath = containerPath.append(newFileName + DOMAIN_EXT);
66
		}
67
		return newFileName;
68
	}
69
70
	/**
71
	 * @generated
72
	 */
73
	public void createControl(Composite parent) {
74
		super.createControl(parent);
75
		IPath path = getContainerFullPath();
76
		if (path != null) {
77
			String fileName = getUniqueFileName(path, getDefaultFileName());
78
			setFileName(fileName);
79
		} else {
80
			setFileName(getDefaultFileName());
81
		}
82
		setPageComplete(validatePage());
83
	}
84
85
	/**
86
	 * @generated
87
	 */
88
	protected boolean validatePage() {
89
		if (super.validatePage()) {
90
			String fileName = getFileName();
91
			if (fileName == null) {
92
				return false;
93
			}
94
			fileName = fileName.substring(0, fileName.length() - DIAGRAM_EXT.length()) + DOMAIN_EXT;
95
			IPath path = getContainerFullPath().append(fileName);
96
			if (exists(path)) {
97
				setErrorMessage("Model file already exists: " + path.lastSegment());
98
				return false;
99
			}
100
			return true;
101
		}
102
		return false;
103
	}
104
105
	/**
106
	 * @generated
107
	 */
108
	public static boolean exists(IPath path) {
109
		return ResourcesPlugin.getWorkspace().getRoot().exists(path);
110
	}
111
}
(-)src/org/eclipse/uml2/diagram/component/expressions/UMLAbstractExpression.java (+214 lines)
Added Link Here
1
package org.eclipse.uml2.diagram.component.expressions;
2
3
import java.math.BigDecimal;
4
import java.math.BigInteger;
5
6
import java.util.Collection;
7
import java.util.Collections;
8
import java.util.Iterator;
9
import java.util.Map;
10
11
import org.eclipse.core.runtime.IStatus;
12
import org.eclipse.core.runtime.Platform;
13
import org.eclipse.core.runtime.Status;
14
15
import org.eclipse.emf.ecore.EClassifier;
16
import org.eclipse.emf.ecore.EObject;
17
import org.eclipse.emf.ecore.EStructuralFeature;
18
import org.eclipse.emf.ecore.ETypedElement;
19
20
import org.eclipse.emf.ecore.util.EcoreUtil;
21
22
import org.eclipse.uml2.diagram.component.part.UMLDiagramEditorPlugin;
23
24
/**
25
 * @generated
26
 */
27
public abstract class UMLAbstractExpression {
28
29
	/**
30
	 * @generated
31
	 */
32
	private static final boolean DISABLED_NO_IMPL_EXCEPTION_LOG = Boolean.valueOf(
33
			Platform.getDebugOption(UMLDiagramEditorPlugin.getInstance().getBundle().getSymbolicName() + "/debug/disableNoExprImplExceptionLog")).booleanValue();
34
35
	/**
36
	 * @generated
37
	 */
38
	private String body;
39
40
	/**
41
	 * @generated
42
	 */
43
	private EClassifier context;
44
45
	/**
46
	 * @generated
47
	 */
48
	private IStatus status = Status.OK_STATUS;
49
50
	/**
51
	 * @generated
52
	 */
53
	protected UMLAbstractExpression(EClassifier context) {
54
		this.context = context;
55
	}
56
57
	/**
58
	 * @generated
59
	 */
60
	protected UMLAbstractExpression(String body, EClassifier context, Map env) {
61
		this.body = body;
62
		this.context = context;
63
	}
64
65
	/**
66
	 * @generated
67
	 */
68
	protected void setStatus(int severity, String message, Throwable throwable) {
69
		String pluginID = UMLDiagramEditorPlugin.ID;
70
		this.status = new Status(severity, pluginID, -1, (message != null) ? message : "", throwable); //$NON-NLS-1$
71
		if (!this.status.isOK()) {
72
			UMLDiagramEditorPlugin.getInstance().logError("Expression problem:" + message + "body:" + body, throwable); //$NON-NLS-1$ //$NON-NLS-2$
73
74
		}
75
	}
76
77
	/**
78
	 * @generated
79
	 */
80
	protected abstract Object doEvaluate(Object context, Map env);
81
82
	/**
83
	 * @generated
84
	 */
85
	public Object evaluate(Object context) {
86
		return evaluate(context, Collections.EMPTY_MAP);
87
	}
88
89
	/**
90
	 * @generated
91
	 */
92
	public Object evaluate(Object context, Map env) {
93
		if (context().isInstance(context)) {
94
			try {
95
				return doEvaluate(context, env);
96
			} catch (Exception e) {
97
				if (DISABLED_NO_IMPL_EXCEPTION_LOG && e instanceof NoImplException) {
98
					return null;
99
				}
100
				UMLDiagramEditorPlugin.getInstance().logError("Expression evaluation failure: " + body, e);
101
			}
102
		}
103
		return null;
104
	}
105
106
	/**
107
	 * @generated
108
	 */
109
	public IStatus getStatus() {
110
		return status;
111
	}
112
113
	/**
114
	 * @generated
115
	 */
116
	public String body() {
117
		return body;
118
	}
119
120
	/**
121
	 * @generated
122
	 */
123
	public EClassifier context() {
124
		return context;
125
	}
126
127
	/**
128
	 * @generated
129
	 */
130
	public void assignTo(EStructuralFeature feature, EObject target) {
131
		Object value = evaluate(target);
132
		value = (value != null) ? performCast(value, feature) : null;
133
		if (feature.isMany()) {
134
			Collection destCollection = (Collection) target.eGet(feature);
135
			destCollection.clear();
136
			if (value instanceof Collection) {
137
				Collection valueCollection = (Collection) value;
138
				for (Iterator it = valueCollection.iterator(); it.hasNext();) {
139
					destCollection.add(performCast(it.next(), feature));
140
				}
141
			} else {
142
				destCollection.add(value);
143
			}
144
			return;
145
		}
146
		target.eSet(feature, value);
147
	}
148
149
	/**
150
	 * @generated
151
	 */
152
	protected Object performCast(Object value, ETypedElement targetType) {
153
		if (targetType.getEType() == null || targetType.getEType().getInstanceClass() == null) {
154
			return value;
155
		}
156
		Class targetClass = targetType.getEType().getInstanceClass();
157
		if (value != null && value instanceof Number) {
158
			Number num = (Number) value;
159
			Class valClass = value.getClass();
160
			Class targetWrapperClass = targetClass;
161
			if (targetClass.isPrimitive()) {
162
				targetWrapperClass = EcoreUtil.wrapperClassFor(targetClass);
163
			}
164
			if (valClass.equals(targetWrapperClass)) {
165
				return value;
166
			}
167
			if (Number.class.isAssignableFrom(targetWrapperClass)) {
168
				if (targetWrapperClass.equals(Byte.class))
169
					return new Byte(num.byteValue());
170
				if (targetWrapperClass.equals(Integer.class))
171
					return new Integer(num.intValue());
172
				if (targetWrapperClass.equals(Short.class))
173
					return new Short(num.shortValue());
174
				if (targetWrapperClass.equals(Long.class))
175
					return new Long(num.longValue());
176
				if (targetWrapperClass.equals(BigInteger.class))
177
					return BigInteger.valueOf(num.longValue());
178
				if (targetWrapperClass.equals(Float.class))
179
					return new Float(num.floatValue());
180
				if (targetWrapperClass.equals(Double.class))
181
					return new Double(num.doubleValue());
182
				if (targetWrapperClass.equals(BigDecimal.class))
183
					return new BigDecimal(num.doubleValue());
184
			}
185
		}
186
		return value;
187
	}
188
189
	/**
190
	 * @generated
191
	 */
192
	public static final UMLAbstractExpression createNullExpression(EClassifier context) {
193
		return new UMLAbstractExpression(context) {
194
195
			protected Object doEvaluate(Object context, Map env) {
196
				// TODO - log entry about not provider available for this expression
197
				return null;
198
			}
199
		};
200
	}
201
202
	/**
203
	 * @generated
204
	 */
205
	public static class NoImplException extends RuntimeException {
206
207
		/**
208
		 * @generated
209
		 */
210
		public NoImplException(String message) {
211
			super(message);
212
		}
213
	}
214
}
(-)src/org/eclipse/uml2/diagram/component/edit/policies/UMLBaseItemSemanticEditPolicy.java (+346 lines)
Added Link Here
1
package org.eclipse.uml2.diagram.component.edit.policies;
2
3
import org.eclipse.emf.ecore.EClass;
4
import org.eclipse.emf.ecore.EObject;
5
import org.eclipse.emf.transaction.TransactionalEditingDomain;
6
import org.eclipse.gef.commands.Command;
7
import org.eclipse.gef.commands.UnexecutableCommand;
8
import org.eclipse.gmf.runtime.common.core.command.ICommand;
9
import org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand;
10
import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil;
11
import org.eclipse.gmf.runtime.diagram.ui.commands.CommandProxy;
12
import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy;
13
import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;
14
import org.eclipse.gmf.runtime.diagram.ui.editpolicies.SemanticEditPolicy;
15
import org.eclipse.gmf.runtime.emf.commands.core.command.CompositeTransactionalCommand;
16
import org.eclipse.gmf.runtime.emf.type.core.ElementTypeRegistry;
17
import org.eclipse.gmf.runtime.emf.type.core.IEditHelperContext;
18
import org.eclipse.gmf.runtime.emf.type.core.IElementType;
19
import org.eclipse.gmf.runtime.emf.type.core.requests.ConfigureRequest;
20
import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;
21
import org.eclipse.gmf.runtime.emf.type.core.requests.CreateRelationshipRequest;
22
import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest;
23
import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyReferenceRequest;
24
import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyRequest;
25
import org.eclipse.gmf.runtime.emf.type.core.requests.DuplicateElementsRequest;
26
import org.eclipse.gmf.runtime.emf.type.core.requests.GetEditContextRequest;
27
import org.eclipse.gmf.runtime.emf.type.core.requests.IEditCommandRequest;
28
import org.eclipse.gmf.runtime.emf.type.core.requests.MoveRequest;
29
import org.eclipse.gmf.runtime.emf.type.core.requests.ReorientReferenceRelationshipRequest;
30
import org.eclipse.gmf.runtime.emf.type.core.requests.ReorientRelationshipRequest;
31
import org.eclipse.gmf.runtime.emf.type.core.requests.SetRequest;
32
import org.eclipse.gmf.runtime.notation.View;
33
import java.util.Collections;
34
import java.util.HashMap;
35
import java.util.Map;
36
37
import org.eclipse.uml2.diagram.component.edit.helpers.UMLBaseEditHelper;
38
import org.eclipse.uml2.diagram.component.expressions.UMLAbstractExpression;
39
import org.eclipse.uml2.diagram.component.expressions.UMLOCLFactory;
40
import org.eclipse.uml2.diagram.component.part.UMLDiagramEditorPlugin;
41
import org.eclipse.uml2.uml.UMLPackage;
42
43
/**
44
 * @generated
45
 */
46
public class UMLBaseItemSemanticEditPolicy extends SemanticEditPolicy {
47
48
	/**
49
	 * @generated
50
	 */
51
	protected Command getSemanticCommand(IEditCommandRequest request) {
52
		IEditCommandRequest completedRequest = completeRequest(request);
53
		Object editHelperContext = completedRequest.getEditHelperContext();
54
		if (editHelperContext instanceof View || (editHelperContext instanceof IEditHelperContext && ((IEditHelperContext) editHelperContext).getEObject() instanceof View)) {
55
			// no semantic commands are provided for pure design elements
56
			return null;
57
		}
58
		if (editHelperContext == null) {
59
			editHelperContext = ViewUtil.resolveSemanticElement((View) getHost().getModel());
60
		}
61
		IElementType elementType = ElementTypeRegistry.getInstance().getElementType(editHelperContext);
62
		if (elementType == ElementTypeRegistry.getInstance().getType("org.eclipse.gmf.runtime.emf.type.core.default")) { //$NON-NLS-1$ 
63
			elementType = null;
64
		}
65
		Command epCommand = getSemanticCommandSwitch(completedRequest);
66
		if (epCommand != null) {
67
			ICommand command = epCommand instanceof ICommandProxy ? ((ICommandProxy) epCommand).getICommand() : new CommandProxy(epCommand);
68
			completedRequest.setParameter(UMLBaseEditHelper.EDIT_POLICY_COMMAND, command);
69
		}
70
		Command ehCommand = null;
71
		if (elementType != null) {
72
			ICommand command = elementType.getEditCommand(completedRequest);
73
			if (command != null) {
74
				if (!(command instanceof CompositeTransactionalCommand)) {
75
					TransactionalEditingDomain editingDomain = ((IGraphicalEditPart) getHost()).getEditingDomain();
76
					command = new CompositeTransactionalCommand(editingDomain, null).compose(command);
77
				}
78
				ehCommand = new ICommandProxy(command);
79
			}
80
		}
81
		boolean shouldProceed = true;
82
		if (completedRequest instanceof DestroyRequest) {
83
			shouldProceed = shouldProceed((DestroyRequest) completedRequest);
84
		}
85
		if (shouldProceed) {
86
			if (completedRequest instanceof DestroyRequest) {
87
				TransactionalEditingDomain editingDomain = ((IGraphicalEditPart) getHost()).getEditingDomain();
88
				Command deleteViewCommand = new ICommandProxy(new DeleteCommand(editingDomain, (View) getHost().getModel()));
89
				ehCommand = ehCommand == null ? deleteViewCommand : ehCommand.chain(deleteViewCommand);
90
			}
91
			return ehCommand;
92
		}
93
		return null;
94
	}
95
96
	/**
97
	 * @generated
98
	 */
99
	protected Command getSemanticCommandSwitch(IEditCommandRequest req) {
100
		if (req instanceof CreateRelationshipRequest) {
101
			return getCreateRelationshipCommand((CreateRelationshipRequest) req);
102
		} else if (req instanceof CreateElementRequest) {
103
			return getCreateCommand((CreateElementRequest) req);
104
		} else if (req instanceof ConfigureRequest) {
105
			return getConfigureCommand((ConfigureRequest) req);
106
		} else if (req instanceof DestroyElementRequest) {
107
			return getDestroyElementCommand((DestroyElementRequest) req);
108
		} else if (req instanceof DestroyReferenceRequest) {
109
			return getDestroyReferenceCommand((DestroyReferenceRequest) req);
110
		} else if (req instanceof DuplicateElementsRequest) {
111
			return getDuplicateCommand((DuplicateElementsRequest) req);
112
		} else if (req instanceof GetEditContextRequest) {
113
			return getEditContextCommand((GetEditContextRequest) req);
114
		} else if (req instanceof MoveRequest) {
115
			return getMoveCommand((MoveRequest) req);
116
		} else if (req instanceof ReorientReferenceRelationshipRequest) {
117
			return getReorientReferenceRelationshipCommand((ReorientReferenceRelationshipRequest) req);
118
		} else if (req instanceof ReorientRelationshipRequest) {
119
			return getReorientRelationshipCommand((ReorientRelationshipRequest) req);
120
		} else if (req instanceof SetRequest) {
121
			return getSetCommand((SetRequest) req);
122
		}
123
		return null;
124
	}
125
126
	/**
127
	 * @generated
128
	 */
129
	protected Command getConfigureCommand(ConfigureRequest req) {
130
		return null;
131
	}
132
133
	/**
134
	 * @generated
135
	 */
136
	protected Command getCreateRelationshipCommand(CreateRelationshipRequest req) {
137
		return null;
138
	}
139
140
	/**
141
	 * @generated
142
	 */
143
	protected Command getCreateCommand(CreateElementRequest req) {
144
		return null;
145
	}
146
147
	/**
148
	 * @generated
149
	 */
150
	protected Command getSetCommand(SetRequest req) {
151
		return null;
152
	}
153
154
	/**
155
	 * @generated
156
	 */
157
	protected Command getEditContextCommand(GetEditContextRequest req) {
158
		return null;
159
	}
160
161
	/**
162
	 * @generated
163
	 */
164
	protected Command getDestroyElementCommand(DestroyElementRequest req) {
165
		return null;
166
	}
167
168
	/**
169
	 * @generated
170
	 */
171
	protected Command getDestroyReferenceCommand(DestroyReferenceRequest req) {
172
		return null;
173
	}
174
175
	/**
176
	 * @generated
177
	 */
178
	protected Command getDuplicateCommand(DuplicateElementsRequest req) {
179
		return null;
180
	}
181
182
	/**
183
	 * @generated
184
	 */
185
	protected Command getMoveCommand(MoveRequest req) {
186
		return null;
187
	}
188
189
	/**
190
	 * @generated
191
	 */
192
	protected Command getReorientReferenceRelationshipCommand(ReorientReferenceRelationshipRequest req) {
193
		return UnexecutableCommand.INSTANCE;
194
	}
195
196
	/**
197
	 * @generated
198
	 */
199
	protected Command getReorientRelationshipCommand(ReorientRelationshipRequest req) {
200
		return UnexecutableCommand.INSTANCE;
201
	}
202
203
	/**
204
	 * @generated
205
	 */
206
	protected Command getMSLWrapper(ICommand cmd) {
207
		return new ICommandProxy(cmd);
208
	}
209
210
	/**
211
	 * @generated
212
	 */
213
	protected EObject getSemanticElement() {
214
		return ViewUtil.resolveSemanticElement((View) getHost().getModel());
215
	}
216
217
	/**
218
	 * Finds container element for the new relationship of the specified type.
219
	 * Default implementation goes up by containment hierarchy starting from
220
	 * the specified element and returns the first element that is instance of
221
	 * the specified container class.
222
	 * 
223
	 * @generated
224
	 */
225
	protected EObject getRelationshipContainer(EObject element, EClass containerClass, IElementType relationshipType) {
226
		for (; element != null; element = element.eContainer()) {
227
			if (containerClass.isSuperTypeOf(element.eClass())) {
228
				return element;
229
			}
230
		}
231
		return null;
232
	}
233
234
	/**
235
	 * @generated 
236
	 */
237
	protected static class LinkConstraints {
238
239
		/**
240
		 * @generated 
241
		 */
242
		public static final LinkConstraints InterfaceRealization_4001 = createInterfaceRealization_4001();
243
244
		/**
245
		 * @generated 
246
		 */
247
		public static final LinkConstraints PortProvided_4006 = createPortProvided_4006();
248
249
		/**
250
		 * @generated 
251
		 */
252
		public static final LinkConstraints PortRequired_4004 = createPortRequired_4004();
253
254
		/**
255
		 * @generated 
256
		 */
257
		private static LinkConstraints createInterfaceRealization_4001() {
258
			Map sourceEnv = new HashMap(3);
259
			sourceEnv.put("oppositeEnd", org.eclipse.uml2.uml.UMLPackage.eINSTANCE.getInterface()); //$NON-NLS-1$				
260
			UMLAbstractExpression sourceExpression = UMLOCLFactory.getExpression("self.oclIsKindOf(uml::Component)", //$NON-NLS-1$
261
					UMLPackage.eINSTANCE.getBehavioredClassifier(), sourceEnv);
262
			UMLAbstractExpression targetExpression = null;
263
			return new LinkConstraints(sourceExpression, targetExpression);
264
		}
265
266
		/**
267
		 * @generated 
268
		 */
269
		private static LinkConstraints createPortProvided_4006() {
270
			Map sourceEnv = new HashMap(3);
271
			sourceEnv.put("oppositeEnd", org.eclipse.uml2.uml.UMLPackage.eINSTANCE.getInterface()); //$NON-NLS-1$				
272
			UMLAbstractExpression sourceExpression = UMLOCLFactory.getExpression("self.oclIsKindOf(uml::Port)", //$NON-NLS-1$
273
					UMLPackage.eINSTANCE.getPort(), sourceEnv);
274
			UMLAbstractExpression targetExpression = null;
275
			return new LinkConstraints(sourceExpression, targetExpression);
276
		}
277
278
		/**
279
		 * @generated 
280
		 */
281
		private static LinkConstraints createPortRequired_4004() {
282
			Map sourceEnv = new HashMap(3);
283
			sourceEnv.put("oppositeEnd", org.eclipse.uml2.uml.UMLPackage.eINSTANCE.getInterface()); //$NON-NLS-1$				
284
			UMLAbstractExpression sourceExpression = UMLOCLFactory.getExpression("self.oclIsKindOf(uml::Port)", //$NON-NLS-1$
285
					UMLPackage.eINSTANCE.getPort(), sourceEnv);
286
			UMLAbstractExpression targetExpression = null;
287
			return new LinkConstraints(sourceExpression, targetExpression);
288
		}
289
290
		/**
291
		 * @generated 
292
		 */
293
		private static final String OPPOSITE_END_VAR = "oppositeEnd"; //$NON-NLS-1$
294
295
		/**
296
		 * @generated 
297
		 */
298
		private UMLAbstractExpression srcEndInv;
299
300
		/**
301
		 * @generated 
302
		 */
303
		private UMLAbstractExpression targetEndInv;
304
305
		/**
306
		 * @generated 
307
		 */
308
		public LinkConstraints(UMLAbstractExpression sourceEnd, UMLAbstractExpression targetEnd) {
309
			this.srcEndInv = sourceEnd;
310
			this.targetEndInv = targetEnd;
311
		}
312
313
		/**
314
		 * @generated 
315
		 */
316
		public boolean canCreateLink(CreateRelationshipRequest req, boolean isBackDirected) {
317
			Object source = req.getSource();
318
			Object target = req.getTarget();
319
320
			UMLAbstractExpression sourceConstraint = isBackDirected ? targetEndInv : srcEndInv;
321
			UMLAbstractExpression targetConstraint = null;
322
			if (req.getTarget() != null) {
323
				targetConstraint = isBackDirected ? srcEndInv : targetEndInv;
324
			}
325
			boolean isSourceAccepted = sourceConstraint != null ? evaluate(sourceConstraint, source, target, false) : true;
326
			if (isSourceAccepted && targetConstraint != null) {
327
				return evaluate(targetConstraint, target, source, true);
328
			}
329
			return isSourceAccepted;
330
		}
331
332
		/**
333
		 * @generated 
334
		 */
335
		private static boolean evaluate(UMLAbstractExpression constraint, Object sourceEnd, Object oppositeEnd, boolean clearEnv) {
336
			Map evalEnv = Collections.singletonMap(OPPOSITE_END_VAR, oppositeEnd);
337
			try {
338
				Object val = constraint.evaluate(sourceEnd, evalEnv);
339
				return (val instanceof Boolean) ? ((Boolean) val).booleanValue() : false;
340
			} catch (Exception e) {
341
				UMLDiagramEditorPlugin.getInstance().logError("Link constraint evaluation error", e); //$NON-NLS-1$
342
				return false;
343
			}
344
		}
345
	}
346
}
(-)src/org/eclipse/uml2/diagram/component/edit/policies/ComponentContentsItemSemanticEditPolicy.java (+224 lines)
Added Link Here
1
package org.eclipse.uml2.diagram.component.edit.policies;
2
3
import org.eclipse.emf.ecore.EClass;
4
import org.eclipse.emf.ecore.EObject;
5
6
import org.eclipse.gef.commands.Command;
7
8
import org.eclipse.gmf.runtime.emf.type.core.commands.CreateElementCommand;
9
10
import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;
11
12
import org.eclipse.gmf.runtime.notation.View;
13
14
import org.eclipse.uml2.diagram.component.providers.UMLElementTypes;
15
import org.eclipse.uml2.uml.Artifact;
16
import org.eclipse.uml2.uml.Component;
17
import org.eclipse.uml2.uml.Interface;
18
import org.eclipse.uml2.uml.UMLPackage;
19
20
/**
21
 * @generated
22
 */
23
public class ComponentContentsItemSemanticEditPolicy extends UMLBaseItemSemanticEditPolicy {
24
25
	/**
26
	 * @generated
27
	 */
28
	protected Command getCreateCommand(CreateElementRequest req) {
29
		if (UMLElementTypes.Component_3001 == req.getElementType()) {
30
			if (req.getContainmentFeature() == null) {
31
				req.setContainmentFeature(UMLPackage.eINSTANCE.getComponent_PackagedElement());
32
			}
33
			return getMSLWrapper(new CreateComponent_3001Command(req));
34
		}
35
		if (UMLElementTypes.Artifact_3003 == req.getElementType()) {
36
			if (req.getContainmentFeature() == null) {
37
				req.setContainmentFeature(UMLPackage.eINSTANCE.getComponent_PackagedElement());
38
			}
39
			return getMSLWrapper(new CreateArtifact_3003Command(req));
40
		}
41
		if (UMLElementTypes.Class_3004 == req.getElementType()) {
42
			if (req.getContainmentFeature() == null) {
43
				req.setContainmentFeature(UMLPackage.eINSTANCE.getComponent_PackagedElement());
44
			}
45
			return getMSLWrapper(new CreateClass_3004Command(req));
46
		}
47
		if (UMLElementTypes.Interface_3005 == req.getElementType()) {
48
			if (req.getContainmentFeature() == null) {
49
				req.setContainmentFeature(UMLPackage.eINSTANCE.getComponent_PackagedElement());
50
			}
51
			return getMSLWrapper(new CreateInterface_3005Command(req));
52
		}
53
		return super.getCreateCommand(req);
54
	}
55
56
	/**
57
	 * @generated
58
	 */
59
	private static class CreateComponent_3001Command extends CreateElementCommand {
60
61
		/**
62
		 * @generated
63
		 */
64
		public CreateComponent_3001Command(CreateElementRequest req) {
65
			super(req);
66
		}
67
68
		/**
69
		 * @generated
70
		 */
71
		protected EClass getEClassToEdit() {
72
			return UMLPackage.eINSTANCE.getComponent();
73
		};
74
75
		/**
76
		 * @generated
77
		 */
78
		protected EObject getElementToEdit() {
79
			EObject container = ((CreateElementRequest) getRequest()).getContainer();
80
			if (container instanceof View) {
81
				container = ((View) container).getElement();
82
			}
83
			return container;
84
		}
85
86
		/**
87
		 * @generated
88
		 */
89
		protected EObject doDefaultElementCreation() {
90
			Component newElement = (Component) super.doDefaultElementCreation();
91
			if (newElement != null) {
92
				UMLElementTypes.Initializers.Component_3001.init(newElement);
93
			}
94
			return newElement;
95
		}
96
	}
97
98
	/**
99
	 * @generated
100
	 */
101
	private static class CreateArtifact_3003Command extends CreateElementCommand {
102
103
		/**
104
		 * @generated
105
		 */
106
		public CreateArtifact_3003Command(CreateElementRequest req) {
107
			super(req);
108
		}
109
110
		/**
111
		 * @generated
112
		 */
113
		protected EClass getEClassToEdit() {
114
			return UMLPackage.eINSTANCE.getComponent();
115
		};
116
117
		/**
118
		 * @generated
119
		 */
120
		protected EObject getElementToEdit() {
121
			EObject container = ((CreateElementRequest) getRequest()).getContainer();
122
			if (container instanceof View) {
123
				container = ((View) container).getElement();
124
			}
125
			return container;
126
		}
127
128
		/**
129
		 * @generated
130
		 */
131
		protected EObject doDefaultElementCreation() {
132
			Artifact newElement = (Artifact) super.doDefaultElementCreation();
133
			if (newElement != null) {
134
				UMLElementTypes.Initializers.Artifact_3003.init(newElement);
135
			}
136
			return newElement;
137
		}
138
	}
139
140
	/**
141
	 * @generated
142
	 */
143
	private static class CreateClass_3004Command extends CreateElementCommand {
144
145
		/**
146
		 * @generated
147
		 */
148
		public CreateClass_3004Command(CreateElementRequest req) {
149
			super(req);
150
		}
151
152
		/**
153
		 * @generated
154
		 */
155
		protected EClass getEClassToEdit() {
156
			return UMLPackage.eINSTANCE.getComponent();
157
		};
158
159
		/**
160
		 * @generated
161
		 */
162
		protected EObject getElementToEdit() {
163
			EObject container = ((CreateElementRequest) getRequest()).getContainer();
164
			if (container instanceof View) {
165
				container = ((View) container).getElement();
166
			}
167
			return container;
168
		}
169
170
		/**
171
		 * @generated
172
		 */
173
		protected EObject doDefaultElementCreation() {
174
			org.eclipse.uml2.uml.Class newElement = (org.eclipse.uml2.uml.Class) super.doDefaultElementCreation();
175
			if (newElement != null) {
176
				UMLElementTypes.Initializers.Class_3004.init(newElement);
177
			}
178
			return newElement;
179
		}
180
	}
181
182
	/**
183
	 * @generated
184
	 */
185
	private static class CreateInterface_3005Command extends CreateElementCommand {
186
187
		/**
188
		 * @generated
189
		 */
190
		public CreateInterface_3005Command(CreateElementRequest req) {
191
			super(req);
192
		}
193
194
		/**
195
		 * @generated
196
		 */
197
		protected EClass getEClassToEdit() {
198
			return UMLPackage.eINSTANCE.getComponent();
199
		};
200
201
		/**
202
		 * @generated
203
		 */
204
		protected EObject getElementToEdit() {
205
			EObject container = ((CreateElementRequest) getRequest()).getContainer();
206
			if (container instanceof View) {
207
				container = ((View) container).getElement();
208
			}
209
			return container;
210
		}
211
212
		/**
213
		 * @generated
214
		 */
215
		protected EObject doDefaultElementCreation() {
216
			Interface newElement = (Interface) super.doDefaultElementCreation();
217
			if (newElement != null) {
218
				UMLElementTypes.Initializers.Interface_3005.init(newElement);
219
			}
220
			return newElement;
221
		}
222
	}
223
224
}
(-)src/org/eclipse/uml2/diagram/component/edit/policies/UMLExtNodeLabelHostLayoutEditPolicy.java (+211 lines)
Added Link Here
1
package org.eclipse.uml2.diagram.component.edit.policies;
2
3
import java.util.ArrayList;
4
import java.util.Iterator;
5
import java.util.List;
6
7
import org.eclipse.draw2d.geometry.Rectangle;
8
import org.eclipse.gef.EditPart;
9
import org.eclipse.gef.GraphicalEditPart;
10
import org.eclipse.gef.Request;
11
import org.eclipse.gef.commands.Command;
12
import org.eclipse.gef.editpolicies.LayoutEditPolicy;
13
import org.eclipse.gef.requests.ChangeBoundsRequest;
14
import org.eclipse.gef.requests.GroupRequest;
15
import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil;
16
import org.eclipse.gmf.runtime.diagram.ui.editpolicies.XYLayoutEditPolicy;
17
import org.eclipse.gmf.runtime.notation.NotationPackage;
18
import org.eclipse.gmf.runtime.notation.View;
19
20
/**
21
 * @generated
22
 */
23
public class UMLExtNodeLabelHostLayoutEditPolicy extends XYLayoutEditPolicy {
24
25
	/**
26
	 * @generated
27
	 */
28
	private LayoutEditPolicy realLayoutEditPolicy;
29
30
	/**
31
	 * @generated
32
	 */
33
	public LayoutEditPolicy getRealLayoutEditPolicy() {
34
		return realLayoutEditPolicy;
35
	}
36
37
	/**
38
	 * @generated
39
	 */
40
	public void setRealLayoutEditPolicy(LayoutEditPolicy realLayoutEditPolicy) {
41
		this.realLayoutEditPolicy = realLayoutEditPolicy;
42
	}
43
44
	/**
45
	 * @generated
46
	 */
47
	protected boolean isExternalLabel(EditPart editPart) {
48
		return false;
49
	}
50
51
	/**
52
	 * @generated
53
	 */
54
	protected final List getExternalLabels(GroupRequest request) {
55
		List editParts = new ArrayList();
56
		if (request.getEditParts() != null) {
57
			for (Iterator it = request.getEditParts().iterator(); it.hasNext();) {
58
				EditPart editPart = (EditPart) it.next();
59
				if (isExternalLabel(editPart)) {
60
					editParts.add(editPart);
61
				}
62
			}
63
		}
64
		return editParts;
65
	}
66
67
	/**
68
	 * @generated
69
	 */
70
	public Command getCommand(Request request) {
71
		if (REQ_MOVE_CHILDREN.equals(request.getType())) {
72
			ChangeBoundsRequest cbRequest = (ChangeBoundsRequest) request;
73
			List extLabels = getExternalLabels(cbRequest);
74
			if (!extLabels.isEmpty()) {
75
				List editParts = cbRequest.getEditParts();
76
				Command cmd = null;
77
				if (realLayoutEditPolicy != null && editParts.size() > extLabels.size()) {
78
					List other = new ArrayList(editParts);
79
					other.removeAll(extLabels);
80
					cbRequest.setEditParts(other);
81
					cmd = realLayoutEditPolicy.getCommand(request);
82
				}
83
				cbRequest.setEditParts(extLabels);
84
				Command extLabelsCmd = getMoveChildrenCommand(request);
85
				cbRequest.setEditParts(editParts);
86
				return cmd == null ? extLabelsCmd : cmd.chain(extLabelsCmd);
87
			}
88
		}
89
		if (request instanceof GroupRequest) {
90
			List extLabels = getExternalLabels((GroupRequest) request);
91
			if (!extLabels.isEmpty()) {
92
				return null;
93
			}
94
		}
95
		return realLayoutEditPolicy == null ? null : realLayoutEditPolicy.getCommand(request);
96
	}
97
98
	/**
99
	 * @generated
100
	 */
101
	protected Object getConstraintFor(ChangeBoundsRequest request, GraphicalEditPart child) {
102
		int dx = ((Integer) ViewUtil.getStructuralFeatureValue((View) child.getModel(), NotationPackage.eINSTANCE.getLocation_X())).intValue();
103
		int dy = ((Integer) ViewUtil.getStructuralFeatureValue((View) child.getModel(), NotationPackage.eINSTANCE.getLocation_Y())).intValue();
104
		Rectangle r = new Rectangle(dx, dy, 0, 0);
105
		child.getFigure().translateToAbsolute(r);
106
		r.translate(request.getMoveDelta());
107
		child.getFigure().translateToRelative(r);
108
		return r;
109
	}
110
111
	/**
112
	 * @generated
113
	 */
114
	public boolean understandsRequest(Request req) {
115
		if (realLayoutEditPolicy != null && realLayoutEditPolicy.understandsRequest(req)) {
116
			return true;
117
		}
118
		return super.understandsRequest(req);
119
	}
120
121
	/**
122
	 * @generated
123
	 */
124
	protected void decorateChild(EditPart child) {
125
	}
126
127
	/**
128
	 * @generated
129
	 */
130
	public void setHost(EditPart host) {
131
		super.setHost(host);
132
		if (realLayoutEditPolicy != null) {
133
			realLayoutEditPolicy.setHost(host);
134
		}
135
	}
136
137
	/**
138
	 * @generated
139
	 */
140
	public void activate() {
141
		super.activate();
142
		if (realLayoutEditPolicy != null) {
143
			realLayoutEditPolicy.activate();
144
		}
145
	}
146
147
	/**
148
	 * @generated
149
	 */
150
	public void deactivate() {
151
		super.deactivate();
152
		if (realLayoutEditPolicy != null) {
153
			realLayoutEditPolicy.deactivate();
154
		}
155
	}
156
157
	/**
158
	 * @generated
159
	 */
160
	public EditPart getTargetEditPart(Request request) {
161
		if (realLayoutEditPolicy != null) {
162
			return realLayoutEditPolicy.getTargetEditPart(request);
163
		} else {
164
			return super.getTargetEditPart(request);
165
		}
166
	}
167
168
	/**
169
	 * @generated
170
	 */
171
	public void showSourceFeedback(Request request) {
172
		if (realLayoutEditPolicy != null) {
173
			realLayoutEditPolicy.showSourceFeedback(request);
174
		} else {
175
			super.showSourceFeedback(request);
176
		}
177
	}
178
179
	/**
180
	 * @generated
181
	 */
182
	public void eraseSourceFeedback(Request request) {
183
		if (realLayoutEditPolicy != null) {
184
			realLayoutEditPolicy.eraseSourceFeedback(request);
185
		} else {
186
			super.eraseSourceFeedback(request);
187
		}
188
	}
189
190
	/**
191
	 * @generated
192
	 */
193
	public void showTargetFeedback(Request request) {
194
		if (realLayoutEditPolicy != null) {
195
			realLayoutEditPolicy.showTargetFeedback(request);
196
		} else {
197
			super.showTargetFeedback(request);
198
		}
199
	}
200
201
	/**
202
	 * @generated
203
	 */
204
	public void eraseTargetFeedback(Request request) {
205
		if (realLayoutEditPolicy != null) {
206
			realLayoutEditPolicy.eraseTargetFeedback(request);
207
		} else {
208
			super.eraseTargetFeedback(request);
209
		}
210
	}
211
}
(-)src/org/eclipse/uml2/diagram/component/edit/parts/ComponentContents2EditPart.java (+76 lines)
Added Link Here
1
package org.eclipse.uml2.diagram.component.edit.parts;
2
3
import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;
4
import org.eclipse.gmf.runtime.notation.View;
5
import org.eclipse.draw2d.IFigure;
6
7
import org.eclipse.gef.EditPolicy;
8
9
import org.eclipse.gmf.runtime.diagram.ui.editparts.ShapeCompartmentEditPart;
10
11
import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy;
12
import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy;
13
import org.eclipse.gmf.runtime.diagram.ui.editpolicies.ResizableCompartmentEditPolicy;
14
15
import org.eclipse.gmf.runtime.diagram.ui.figures.ResizableCompartmentFigure;
16
17
import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout;
18
19
import org.eclipse.uml2.diagram.component.edit.policies.ComponentContents2CanonicalEditPolicy;
20
import org.eclipse.uml2.diagram.component.edit.policies.ComponentContents2ItemSemanticEditPolicy;
21
22
/**
23
 * @generated
24
 */
25
public class ComponentContents2EditPart extends ShapeCompartmentEditPart {
26
27
	/**
28
	 * @generated
29
	 */
30
	public static final int VISUAL_ID = 7002;
31
32
	/**
33
	 * @generated
34
	 */
35
	public ComponentContents2EditPart(View view) {
36
		super(view);
37
	}
38
39
	/**
40
	 * @generated
41
	 */
42
	public String getCompartmentName() {
43
		return "contents";
44
	}
45
46
	/**
47
	 * @generated
48
	 */
49
	public IFigure createFigure() {
50
		ResizableCompartmentFigure result = (ResizableCompartmentFigure) super.createFigure();
51
		result.setTitleVisibility(false);
52
		return result;
53
	}
54
55
	/**
56
	 * @generated
57
	 */
58
	protected void createDefaultEditPolicies() {
59
		super.createDefaultEditPolicies();
60
		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE, new ResizableCompartmentEditPolicy());
61
		installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE, new ComponentContents2ItemSemanticEditPolicy());
62
		installEditPolicy(EditPolicyRoles.CREATION_ROLE, new CreationEditPolicy());
63
		installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE, new DragDropEditPolicy());
64
		installEditPolicy(EditPolicyRoles.CANONICAL_ROLE, new ComponentContents2CanonicalEditPolicy());
65
66
	}
67
68
	/**
69
	 * @generated
70
	 */
71
	protected void setRatio(Double ratio) {
72
		if (getFigure().getParent().getLayoutManager() instanceof ConstrainedToolbarLayout) {
73
			super.setRatio(ratio);
74
		}
75
	}
76
}
(-)src/org/eclipse/uml2/diagram/component/edit/parts/ArtifactNameEditPart.java (+574 lines)
Added Link Here
1
package org.eclipse.uml2.diagram.component.edit.parts;
2
3
import java.util.ArrayList;
4
import java.util.List;
5
import org.eclipse.gef.EditPolicy;
6
import org.eclipse.gef.GraphicalEditPart;
7
import org.eclipse.gef.Request;
8
import org.eclipse.gef.commands.Command;
9
import org.eclipse.gef.editpolicies.NonResizableEditPolicy;
10
import org.eclipse.gef.handles.NonResizableHandleKit;
11
import org.eclipse.gmf.runtime.diagram.ui.editparts.ITextAwareEditPart;
12
import org.eclipse.gmf.runtime.diagram.ui.editpolicies.LabelDirectEditPolicy;
13
import org.eclipse.gmf.runtime.notation.View;
14
import java.util.Collections;
15
16
import org.eclipse.draw2d.IFigure;
17
import org.eclipse.draw2d.Label;
18
19
import org.eclipse.draw2d.geometry.Point;
20
21
import org.eclipse.emf.common.notify.Notification;
22
23
import org.eclipse.emf.ecore.EObject;
24
25
import org.eclipse.emf.transaction.RunnableWithResult;
26
27
import org.eclipse.gef.AccessibleEditPart;
28
29
import org.eclipse.gef.requests.DirectEditRequest;
30
31
import org.eclipse.gef.tools.DirectEditManager;
32
33
import org.eclipse.gmf.runtime.common.ui.services.parser.IParser;
34
import org.eclipse.gmf.runtime.common.ui.services.parser.IParserEditStatus;
35
import org.eclipse.gmf.runtime.common.ui.services.parser.ParserEditStatus;
36
import org.eclipse.gmf.runtime.common.ui.services.parser.ParserOptions;
37
import org.eclipse.gmf.runtime.common.ui.services.parser.ParserService;
38
39
import org.eclipse.gmf.runtime.diagram.ui.editparts.CompartmentEditPart;
40
import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;
41
42
import org.eclipse.gmf.runtime.diagram.ui.l10n.DiagramColorRegistry;
43
44
import org.eclipse.gmf.runtime.diagram.ui.requests.RequestConstants;
45
46
import org.eclipse.gmf.runtime.diagram.ui.tools.TextDirectEditManager;
47
48
import org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel;
49
50
import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;
51
52
import org.eclipse.gmf.runtime.emf.type.core.IElementType;
53
54
import org.eclipse.gmf.runtime.emf.ui.services.parser.ISemanticParser;
55
import org.eclipse.gmf.runtime.emf.ui.services.parser.ParserHintAdapter;
56
57
import org.eclipse.gmf.runtime.notation.FontStyle;
58
import org.eclipse.gmf.runtime.notation.NotationPackage;
59
60
import org.eclipse.jface.resource.ImageDescriptor;
61
62
import org.eclipse.jface.text.contentassist.IContentAssistProcessor;
63
64
import org.eclipse.jface.viewers.ICellEditorValidator;
65
66
import org.eclipse.swt.SWT;
67
68
import org.eclipse.swt.accessibility.AccessibleEvent;
69
70
import org.eclipse.swt.graphics.Color;
71
import org.eclipse.swt.graphics.FontData;
72
import org.eclipse.swt.graphics.Image;
73
import org.eclipse.uml2.diagram.component.edit.policies.UMLTextSelectionEditPolicy;
74
import org.eclipse.uml2.diagram.component.part.UMLDiagramEditorPlugin;
75
import org.eclipse.uml2.diagram.component.providers.UMLElementTypes;
76
77
/**
78
 * @generated
79
 */
80
public class ArtifactNameEditPart extends CompartmentEditPart implements ITextAwareEditPart {
81
82
	/**
83
	 * @generated
84
	 */
85
	public static final int VISUAL_ID = 5006;
86
87
	/**
88
	 * @generated
89
	 */
90
	private DirectEditManager manager;
91
92
	/**
93
	 * @generated
94
	 */
95
	private IParser parser;
96
97
	/**
98
	 * @generated
99
	 */
100
	private List parserElements;
101
102
	/**
103
	 * @generated
104
	 */
105
	private String defaultText;
106
107
	/**
108
	 * @generated
109
	 */
110
	public ArtifactNameEditPart(View view) {
111
		super(view);
112
	}
113
114
	/**
115
	 * @generated
116
	 */
117
	protected void createDefaultEditPolicies() {
118
		super.createDefaultEditPolicies();
119
		installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE, new LabelDirectEditPolicy());
120
		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE, new NonResizableEditPolicy() {
121
122
			protected List createSelectionHandles() {
123
				List handles = new ArrayList();
124
				NonResizableHandleKit.addMoveHandle((GraphicalEditPart) getHost(), handles);
125
				return handles;
126
			}
127
128
			public Command getCommand(Request request) {
129
				return null;
130
			}
131
132
			public boolean understandsRequest(Request request) {
133
				return false;
134
			}
135
		});
136
137
	}
138
139
	/**
140
	 * @generated
141
	 */
142
	protected String getLabelTextHelper(IFigure figure) {
143
		if (figure instanceof WrapLabel) {
144
			return ((WrapLabel) figure).getText();
145
		} else {
146
			return ((Label) figure).getText();
147
		}
148
	}
149
150
	/**
151
	 * @generated
152
	 */
153
	protected void setLabelTextHelper(IFigure figure, String text) {
154
		if (figure instanceof WrapLabel) {
155
			((WrapLabel) figure).setText(text);
156
		} else {
157
			((Label) figure).setText(text);
158
		}
159
	}
160
161
	/**
162
	 * @generated
163
	 */
164
	protected Image getLabelIconHelper(IFigure figure) {
165
		if (figure instanceof WrapLabel) {
166
			return ((WrapLabel) figure).getIcon();
167
		} else {
168
			return ((Label) figure).getIcon();
169
		}
170
	}
171
172
	/**
173
	 * @generated
174
	 */
175
	protected void setLabelIconHelper(IFigure figure, Image icon) {
176
		if (figure instanceof WrapLabel) {
177
			((WrapLabel) figure).setIcon(icon);
178
		} else {
179
			((Label) figure).setIcon(icon);
180
		}
181
	}
182
183
	/**
184
	 * @generated
185
	 */
186
	public void setLabel(WrapLabel figure) {
187
		unregisterVisuals();
188
		setFigure(figure);
189
		defaultText = getLabelTextHelper(figure);
190
		registerVisuals();
191
		refreshVisuals();
192
	}
193
194
	/**
195
	 * @generated
196
	 */
197
	protected List getModelChildren() {
198
		return Collections.EMPTY_LIST;
199
	}
200
201
	/**
202
	 * @generated
203
	 */
204
	public IGraphicalEditPart getChildBySemanticHint(String semanticHint) {
205
		return null;
206
	}
207
208
	/**
209
	 * @generated
210
	 */
211
	protected EObject getParserElement() {
212
		EObject element = resolveSemanticElement();
213
		return element != null ? element : (View) getModel();
214
	}
215
216
	/**
217
	 * @generated
218
	 */
219
	protected Image getLabelIcon() {
220
		EObject parserElement = getParserElement();
221
		if (parserElement == null) {
222
			return null;
223
		}
224
		return UMLElementTypes.getImage(parserElement.eClass());
225
	}
226
227
	/**
228
	 * @generated
229
	 */
230
	protected String getLabelText() {
231
		String text = null;
232
		if (getParser() != null) {
233
			text = getParser().getPrintString(new EObjectAdapter(getParserElement()), getParserOptions().intValue());
234
		}
235
		if (text == null || text.length() == 0) {
236
			text = defaultText;
237
		}
238
		return text;
239
	}
240
241
	/**
242
	 * @generated
243
	 */
244
	public void setLabelText(String text) {
245
		setLabelTextHelper(getFigure(), text);
246
		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);
247
		if (pdEditPolicy instanceof UMLTextSelectionEditPolicy) {
248
			((UMLTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();
249
		}
250
	}
251
252
	/**
253
	 * @generated
254
	 */
255
	public String getEditText() {
256
		if (getParser() == null) {
257
			return ""; //$NON-NLS-1$
258
		}
259
		return getParser().getEditString(new EObjectAdapter(getParserElement()), getParserOptions().intValue());
260
	}
261
262
	/**
263
	 * @generated
264
	 */
265
	protected boolean isEditable() {
266
		return getEditText() != null;
267
	}
268
269
	/**
270
	 * @generated
271
	 */
272
	public ICellEditorValidator getEditTextValidator() {
273
		return new ICellEditorValidator() {
274
275
			public String isValid(final Object value) {
276
				if (value instanceof String) {
277
					final EObject element = getParserElement();
278
					final IParser parser = getParser();
279
					try {
280
						IParserEditStatus valid = (IParserEditStatus) getEditingDomain().runExclusive(new RunnableWithResult.Impl() {
281
282
							public void run() {
283
								setResult(parser.isValidEditString(new EObjectAdapter(element), (String) value));
284
							}
285
						});
286
						return valid.getCode() == ParserEditStatus.EDITABLE ? null : valid.getMessage();
287
					} catch (InterruptedException ie) {
288
						ie.printStackTrace();
289
					}
290
				}
291
292
				// shouldn't get here
293
				return null;
294
			}
295
		};
296
	}
297
298
	/**
299
	 * @generated
300
	 */
301
	public IContentAssistProcessor getCompletionProcessor() {
302
		if (getParser() == null) {
303
			return null;
304
		}
305
		return getParser().getCompletionProcessor(new EObjectAdapter(getParserElement()));
306
	}
307
308
	/**
309
	 * @generated
310
	 */
311
	public ParserOptions getParserOptions() {
312
		return ParserOptions.NONE;
313
	}
314
315
	/**
316
	 * @generated
317
	 */
318
	public IParser getParser() {
319
		if (parser == null) {
320
			String parserHint = ((View) getModel()).getType();
321
			ParserHintAdapter hintAdapter = new ParserHintAdapter(getParserElement(), parserHint) {
322
323
				public Object getAdapter(Class adapter) {
324
					if (IElementType.class.equals(adapter)) {
325
						return UMLElementTypes.Artifact_3003;
326
					}
327
					return super.getAdapter(adapter);
328
				}
329
			};
330
			parser = ParserService.getInstance().getParser(hintAdapter);
331
		}
332
		return parser;
333
	}
334
335
	/**
336
	 * @generated
337
	 */
338
	protected DirectEditManager getManager() {
339
		if (manager == null) {
340
			setManager(new TextDirectEditManager(this, TextDirectEditManager.getTextCellEditorClass(this), UMLEditPartFactory.getTextCellEditorLocator(this)));
341
		}
342
		return manager;
343
	}
344
345
	/**
346
	 * @generated
347
	 */
348
	protected void setManager(DirectEditManager manager) {
349
		this.manager = manager;
350
	}
351
352
	/**
353
	 * @generated
354
	 */
355
	protected void performDirectEdit() {
356
		getManager().show();
357
	}
358
359
	/**
360
	 * @generated
361
	 */
362
	protected void performDirectEdit(Point eventLocation) {
363
		if (getManager().getClass() == TextDirectEditManager.class) {
364
			((TextDirectEditManager) getManager()).show(eventLocation.getSWTPoint());
365
		}
366
	}
367
368
	/**
369
	 * @generated
370
	 */
371
	private void performDirectEdit(char initialCharacter) {
372
		if (getManager() instanceof TextDirectEditManager) {
373
			((TextDirectEditManager) getManager()).show(initialCharacter);
374
		} else {
375
			performDirectEdit();
376
		}
377
	}
378
379
	/**
380
	 * @generated
381
	 */
382
	protected void performDirectEditRequest(Request request) {
383
		final Request theRequest = request;
384
		try {
385
			getEditingDomain().runExclusive(new Runnable() {
386
387
				public void run() {
388
					if (isActive() && isEditable()) {
389
						if (theRequest.getExtendedData().get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR) instanceof Character) {
390
							Character initialChar = (Character) theRequest.getExtendedData().get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR);
391
							performDirectEdit(initialChar.charValue());
392
						} else if ((theRequest instanceof DirectEditRequest) && (getEditText().equals(getLabelText()))) {
393
							DirectEditRequest editRequest = (DirectEditRequest) theRequest;
394
							performDirectEdit(editRequest.getLocation());
395
						} else {
396
							performDirectEdit();
397
						}
398
					}
399
				}
400
			});
401
		} catch (InterruptedException e) {
402
			e.printStackTrace();
403
		}
404
	}
405
406
	/**
407
	 * @generated
408
	 */
409
	protected void refreshVisuals() {
410
		super.refreshVisuals();
411
		refreshLabel();
412
		refreshFont();
413
		refreshFontColor();
414
		refreshUnderline();
415
		refreshStrikeThrough();
416
	}
417
418
	/**
419
	 * @generated
420
	 */
421
	protected void refreshLabel() {
422
		setLabelTextHelper(getFigure(), getLabelText());
423
		setLabelIconHelper(getFigure(), getLabelIcon());
424
		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);
425
		if (pdEditPolicy instanceof UMLTextSelectionEditPolicy) {
426
			((UMLTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();
427
		}
428
	}
429
430
	/**
431
	 * @generated
432
	 */
433
	protected void refreshUnderline() {
434
		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle());
435
		if (style != null && getFigure() instanceof WrapLabel) {
436
			((WrapLabel) getFigure()).setTextUnderline(style.isUnderline());
437
		}
438
	}
439
440
	/**
441
	 * @generated
442
	 */
443
	protected void refreshStrikeThrough() {
444
		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle());
445
		if (style != null && getFigure() instanceof WrapLabel) {
446
			((WrapLabel) getFigure()).setTextStrikeThrough(style.isStrikeThrough());
447
		}
448
	}
449
450
	/**
451
	 * @generated
452
	 */
453
	protected void refreshFont() {
454
		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle());
455
		if (style != null) {
456
			FontData fontData = new FontData(style.getFontName(), style.getFontHeight(), (style.isBold() ? SWT.BOLD : SWT.NORMAL) | (style.isItalic() ? SWT.ITALIC : SWT.NORMAL));
457
			setFont(fontData);
458
		}
459
	}
460
461
	/**
462
	 * @generated
463
	 */
464
	protected void setFontColor(Color color) {
465
		getFigure().setForegroundColor(color);
466
	}
467
468
	/**
469
	 * @generated
470
	 */
471
	protected void addSemanticListeners() {
472
		if (getParser() instanceof ISemanticParser) {
473
			EObject element = resolveSemanticElement();
474
			parserElements = ((ISemanticParser) getParser()).getSemanticElementsBeingParsed(element);
475
			for (int i = 0; i < parserElements.size(); i++) {
476
				addListenerFilter("SemanticModel" + i, this, (EObject) parserElements.get(i)); //$NON-NLS-1$
477
			}
478
		} else {
479
			super.addSemanticListeners();
480
		}
481
	}
482
483
	/**
484
	 * @generated
485
	 */
486
	protected void removeSemanticListeners() {
487
		if (parserElements != null) {
488
			for (int i = 0; i < parserElements.size(); i++) {
489
				removeListenerFilter("SemanticModel" + i); //$NON-NLS-1$
490
			}
491
		} else {
492
			super.removeSemanticListeners();
493
		}
494
	}
495
496
	/**
497
	 * @generated
498
	 */
499
	protected AccessibleEditPart getAccessibleEditPart() {
500
		if (accessibleEP == null) {
501
			accessibleEP = new AccessibleGraphicalEditPart() {
502
503
				public void getName(AccessibleEvent e) {
504
					e.result = getLabelTextHelper(getFigure());
505
				}
506
			};
507
		}
508
		return accessibleEP;
509
	}
510
511
	/**
512
	 * @generated
513
	 */
514
	private View getFontStyleOwnerView() {
515
		return getPrimaryView();
516
	}
517
518
	/**
519
	 * @generated
520
	 */
521
	protected void addNotationalListeners() {
522
		super.addNotationalListeners();
523
		addListenerFilter("PrimaryView", this, getPrimaryView()); //$NON-NLS-1$
524
	}
525
526
	/**
527
	 * @generated
528
	 */
529
	protected void removeNotationalListeners() {
530
		super.removeNotationalListeners();
531
		removeListenerFilter("PrimaryView"); //$NON-NLS-1$
532
	}
533
534
	/**
535
	 * @generated
536
	 */
537
	protected void handleNotificationEvent(Notification event) {
538
		Object feature = event.getFeature();
539
		if (NotationPackage.eINSTANCE.getFontStyle_FontColor().equals(feature)) {
540
			Integer c = (Integer) event.getNewValue();
541
			setFontColor(DiagramColorRegistry.getInstance().getColor(c));
542
		} else if (NotationPackage.eINSTANCE.getFontStyle_Underline().equals(feature)) {
543
			refreshUnderline();
544
		} else if (NotationPackage.eINSTANCE.getFontStyle_StrikeThrough().equals(feature)) {
545
			refreshStrikeThrough();
546
		} else if (NotationPackage.eINSTANCE.getFontStyle_FontHeight().equals(feature) || NotationPackage.eINSTANCE.getFontStyle_FontName().equals(feature)
547
				|| NotationPackage.eINSTANCE.getFontStyle_Bold().equals(feature) || NotationPackage.eINSTANCE.getFontStyle_Italic().equals(feature)) {
548
			refreshFont();
549
		} else {
550
			if (getParser() != null && getParser().isAffectingEvent(event, getParserOptions().intValue())) {
551
				refreshLabel();
552
			}
553
			if (getParser() instanceof ISemanticParser) {
554
				ISemanticParser modelParser = (ISemanticParser) getParser();
555
				if (modelParser.areSemanticElementsAffected(null, event)) {
556
					removeSemanticListeners();
557
					if (resolveSemanticElement() != null) {
558
						addSemanticListeners();
559
					}
560
					refreshLabel();
561
				}
562
			}
563
		}
564
		super.handleNotificationEvent(event);
565
	}
566
567
	/**
568
	 * @generated
569
	 */
570
	protected IFigure createFigure() {
571
		// Parent should assign one using setLabel method
572
		return null;
573
	}
574
}
(-)src/org/eclipse/uml2/diagram/component/providers/UMLPaletteProvider.java (+38 lines)
Added Link Here
1
package org.eclipse.uml2.diagram.component.providers;
2
3
import java.util.Map;
4
import org.eclipse.core.runtime.IConfigurationElement;
5
import org.eclipse.gef.palette.PaletteRoot;
6
import org.eclipse.gmf.runtime.common.core.service.AbstractProvider;
7
import org.eclipse.gmf.runtime.common.core.service.IOperation;
8
import org.eclipse.gmf.runtime.diagram.ui.services.palette.IPaletteProvider;
9
import org.eclipse.ui.IEditorPart;
10
import org.eclipse.uml2.diagram.component.part.UMLPaletteFactory;
11
12
/**
13
 * @generated
14
 */
15
public class UMLPaletteProvider extends AbstractProvider implements IPaletteProvider {
16
17
	/**
18
	 * @generated
19
	 */
20
	public void contributeToPalette(IEditorPart editor, Object content, PaletteRoot root, Map predefinedEntries) {
21
		UMLPaletteFactory factory = new UMLPaletteFactory();
22
		factory.fillPalette(root);
23
	}
24
25
	/**
26
	 * @generated
27
	 */
28
	public void setContributions(IConfigurationElement configElement) {
29
		// no configuration
30
	}
31
32
	/**
33
	 * @generated
34
	 */
35
	public boolean provides(IOperation operation) {
36
		return false; // all logic is done in the service
37
	}
38
}
(-)src/org/eclipse/uml2/diagram/component/edit/parts/UMLEditPartFactory.java (+195 lines)
Added Link Here
1
package org.eclipse.uml2.diagram.component.edit.parts;
2
3
import org.eclipse.draw2d.FigureUtilities;
4
import org.eclipse.draw2d.IFigure;
5
import org.eclipse.draw2d.Label;
6
import org.eclipse.draw2d.geometry.Dimension;
7
import org.eclipse.draw2d.geometry.Rectangle;
8
import org.eclipse.gef.EditPart;
9
import org.eclipse.gef.EditPartFactory;
10
import org.eclipse.gef.tools.CellEditorLocator;
11
import org.eclipse.gmf.runtime.diagram.ui.editparts.ITextAwareEditPart;
12
import org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel;
13
import org.eclipse.gmf.runtime.notation.View;
14
import org.eclipse.jface.viewers.CellEditor;
15
import org.eclipse.swt.SWT;
16
import org.eclipse.swt.widgets.Text;
17
import org.eclipse.uml2.diagram.component.part.UMLVisualIDRegistry;
18
19
/**
20
 * @generated
21
 */
22
public class UMLEditPartFactory implements EditPartFactory {
23
24
	/**
25
	 * @generated
26
	 */
27
	public static final String EXTERNAL_NODE_LABELS_LAYER = "External Node Labels"; //$NON-NLS-1$
28
29
	/**
30
	 * @generated
31
	 */
32
	public EditPart createEditPart(EditPart context, Object model) {
33
		if (model instanceof View) {
34
			View view = (View) model;
35
			int viewVisualID = UMLVisualIDRegistry.getVisualID(view);
36
			switch (viewVisualID) {
37
			case ComponentEditPart.VISUAL_ID:
38
				return new ComponentEditPart(view);
39
			case ComponentName2EditPart.VISUAL_ID:
40
				return new ComponentName2EditPart(view);
41
			case Artifact2EditPart.VISUAL_ID:
42
				return new Artifact2EditPart(view);
43
			case ArtifactName2EditPart.VISUAL_ID:
44
				return new ArtifactName2EditPart(view);
45
			case Interface2EditPart.VISUAL_ID:
46
				return new Interface2EditPart(view);
47
			case InterfaceName2EditPart.VISUAL_ID:
48
				return new InterfaceName2EditPart(view);
49
			case Class2EditPart.VISUAL_ID:
50
				return new Class2EditPart(view);
51
			case ClassName2EditPart.VISUAL_ID:
52
				return new ClassName2EditPart(view);
53
			case Component2EditPart.VISUAL_ID:
54
				return new Component2EditPart(view);
55
			case ComponentNameEditPart.VISUAL_ID:
56
				return new ComponentNameEditPart(view);
57
			case PortEditPart.VISUAL_ID:
58
				return new PortEditPart(view);
59
			case PortNameEditPart.VISUAL_ID:
60
				return new PortNameEditPart(view);
61
			case ArtifactEditPart.VISUAL_ID:
62
				return new ArtifactEditPart(view);
63
			case ArtifactNameEditPart.VISUAL_ID:
64
				return new ArtifactNameEditPart(view);
65
			case ClassEditPart.VISUAL_ID:
66
				return new ClassEditPart(view);
67
			case ClassNameEditPart.VISUAL_ID:
68
				return new ClassNameEditPart(view);
69
			case InterfaceEditPart.VISUAL_ID:
70
				return new InterfaceEditPart(view);
71
			case InterfaceNameEditPart.VISUAL_ID:
72
				return new InterfaceNameEditPart(view);
73
			case ComponentContentsEditPart.VISUAL_ID:
74
				return new ComponentContentsEditPart(view);
75
			case ComponentContents2EditPart.VISUAL_ID:
76
				return new ComponentContents2EditPart(view);
77
			case PackageEditPart.VISUAL_ID:
78
				return new PackageEditPart(view);
79
			case InterfaceRealizationEditPart.VISUAL_ID:
80
				return new InterfaceRealizationEditPart(view);
81
			case PortProvidedEditPart.VISUAL_ID:
82
				return new PortProvidedEditPart(view);
83
			case PortRequiredEditPart.VISUAL_ID:
84
				return new PortRequiredEditPart(view);
85
			}
86
		}
87
		return createUnrecognizedEditPart(context, model);
88
	}
89
90
	/**
91
	 * @generated
92
	 */
93
	private EditPart createUnrecognizedEditPart(EditPart context, Object model) {
94
		// Handle creation of unrecognized child node EditParts here
95
		return null;
96
	}
97
98
	/**
99
	 * @generated
100
	 */
101
	public static CellEditorLocator getTextCellEditorLocator(ITextAwareEditPart source) {
102
		if (source.getFigure() instanceof WrapLabel)
103
			return new TextCellEditorLocator((WrapLabel) source.getFigure());
104
		else {
105
			IFigure figure = source.getFigure();
106
			return new LabelCellEditorLocator((Label) figure);
107
		}
108
	}
109
110
	/**
111
	 * @generated
112
	 */
113
	static private class TextCellEditorLocator implements CellEditorLocator {
114
115
		/**
116
		 * @generated
117
		 */
118
		private WrapLabel wrapLabel;
119
120
		/**
121
		 * @generated
122
		 */
123
		public TextCellEditorLocator(WrapLabel wrapLabel) {
124
			super();
125
			this.wrapLabel = wrapLabel;
126
		}
127
128
		/**
129
		 * @generated
130
		 */
131
		public WrapLabel getWrapLabel() {
132
			return wrapLabel;
133
		}
134
135
		/**
136
		 * @generated
137
		 */
138
		public void relocate(CellEditor celleditor) {
139
			Text text = (Text) celleditor.getControl();
140
			Rectangle rect = getWrapLabel().getTextBounds().getCopy();
141
			getWrapLabel().translateToAbsolute(rect);
142
143
			if (getWrapLabel().isTextWrapped() && getWrapLabel().getText().length() > 0)
144
				rect.setSize(new Dimension(text.computeSize(rect.width, SWT.DEFAULT)));
145
			else {
146
				int avr = FigureUtilities.getFontMetrics(text.getFont()).getAverageCharWidth();
147
				rect.setSize(new Dimension(text.computeSize(SWT.DEFAULT, SWT.DEFAULT)).expand(avr * 2, 0));
148
			}
149
150
			if (!rect.equals(new Rectangle(text.getBounds())))
151
				text.setBounds(rect.x, rect.y, rect.width, rect.height);
152
		}
153
154
	}
155
156
	/**
157
	 * @generated
158
	 */
159
	private static class LabelCellEditorLocator implements CellEditorLocator {
160
161
		/**
162
		 * @generated
163
		 */
164
		private Label label;
165
166
		/**
167
		 * @generated
168
		 */
169
		public LabelCellEditorLocator(Label label) {
170
			this.label = label;
171
		}
172
173
		/**
174
		 * @generated
175
		 */
176
		public Label getLabel() {
177
			return label;
178
		}
179
180
		/**
181
		 * @generated
182
		 */
183
		public void relocate(CellEditor celleditor) {
184
			Text text = (Text) celleditor.getControl();
185
			Rectangle rect = getLabel().getTextBounds().getCopy();
186
			getLabel().translateToAbsolute(rect);
187
188
			int avr = FigureUtilities.getFontMetrics(text.getFont()).getAverageCharWidth();
189
			rect.setSize(new Dimension(text.computeSize(SWT.DEFAULT, SWT.DEFAULT)).expand(avr * 2, 0));
190
191
			if (!rect.equals(new Rectangle(text.getBounds())))
192
				text.setBounds(rect.x, rect.y, rect.width, rect.height);
193
		}
194
	}
195
}
(-)src/org/eclipse/uml2/diagram/component/edit/helpers/ArtifactEditHelperAdvice.java (+9 lines)
Added Link Here
1
package org.eclipse.uml2.diagram.component.edit.helpers;
2
3
import org.eclipse.gmf.runtime.emf.type.core.edithelper.AbstractEditHelperAdvice;
4
5
/**
6
 * @generated
7
 */
8
public class ArtifactEditHelperAdvice extends AbstractEditHelperAdvice {
9
}
(-)src/org/eclipse/uml2/diagram/component/edit/parts/ArtifactEditPart.java (+359 lines)
Added Link Here
1
package org.eclipse.uml2.diagram.component.edit.parts;
2
3
import org.eclipse.draw2d.IFigure;
4
import org.eclipse.draw2d.StackLayout;
5
6
import org.eclipse.gef.EditPart;
7
import org.eclipse.gef.EditPolicy;
8
import org.eclipse.gef.Request;
9
10
import org.eclipse.gef.commands.Command;
11
12
import org.eclipse.gef.editpolicies.LayoutEditPolicy;
13
import org.eclipse.gef.editpolicies.NonResizableEditPolicy;
14
15
import org.eclipse.gef.requests.CreateRequest;
16
17
import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;
18
import org.eclipse.gmf.runtime.diagram.ui.editparts.ShapeNodeEditPart;
19
20
import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;
21
22
import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout;
23
24
import org.eclipse.gmf.runtime.gef.ui.figures.DefaultSizeNodeFigure;
25
import org.eclipse.gmf.runtime.gef.ui.figures.NodeFigure;
26
27
import org.eclipse.gmf.runtime.notation.View;
28
29
import org.eclipse.uml2.diagram.component.edit.policies.ArtifactItemSemanticEditPolicy;
30
import org.eclipse.uml2.diagram.component.part.UMLVisualIDRegistry;
31
32
/**
33
 * @generated
34
 */
35
public class ArtifactEditPart extends ShapeNodeEditPart {
36
37
	/**
38
	 * @generated
39
	 */
40
	public static final int VISUAL_ID = 3003;
41
42
	/**
43
	 * @generated
44
	 */
45
	protected IFigure contentPane;
46
47
	/**
48
	 * @generated
49
	 */
50
	protected IFigure primaryShape;
51
52
	/**
53
	 * @generated
54
	 */
55
	public ArtifactEditPart(View view) {
56
		super(view);
57
	}
58
59
	/**
60
	 * @generated
61
	 */
62
	protected void createDefaultEditPolicies() {
63
		super.createDefaultEditPolicies();
64
		installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE, new ArtifactItemSemanticEditPolicy());
65
		installEditPolicy(EditPolicy.LAYOUT_ROLE, createLayoutEditPolicy());
66
67
	}
68
69
	/**
70
	 * @generated
71
	 */
72
	protected LayoutEditPolicy createLayoutEditPolicy() {
73
		LayoutEditPolicy lep = new LayoutEditPolicy() {
74
75
			protected EditPolicy createChildEditPolicy(EditPart child) {
76
				EditPolicy result = child.getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);
77
				if (result == null) {
78
					result = new NonResizableEditPolicy();
79
				}
80
				return result;
81
			}
82
83
			protected Command getMoveChildrenCommand(Request request) {
84
				return null;
85
			}
86
87
			protected Command getCreateCommand(CreateRequest request) {
88
				return null;
89
			}
90
		};
91
		return lep;
92
	}
93
94
	/**
95
	 * @generated
96
	 */
97
	protected IFigure createNodeShape() {
98
		ArtifactFigure figure = new ArtifactFigure();
99
		return primaryShape = figure;
100
	}
101
102
	/**
103
	 * @generated
104
	 */
105
	public ArtifactFigure getPrimaryShape() {
106
		return (ArtifactFigure) primaryShape;
107
	}
108
109
	/**
110
	 * @generated 
111
	 */
112
	protected IFigure getContentPaneFor(IGraphicalEditPart editPart) {
113
114
		return super.getContentPaneFor(editPart);
115
	}
116
117
	/**
118
	 * @generated
119
	 */
120
	protected boolean addFixedChild(EditPart childEditPart) {
121
		if (childEditPart instanceof ArtifactNameEditPart) {
122
			((ArtifactNameEditPart) childEditPart).setLabel(getPrimaryShape().getFigureArtifactFigure_name());
123
			return true;
124
		}
125
		return false;
126
	}
127
128
	/**
129
	 * @generated
130
	 */
131
	protected boolean removeFixedChild(EditPart childEditPart) {
132
		return false;
133
	}
134
135
	/**
136
	 * @generated
137
	 */
138
	protected NodeFigure createNodePlate() {
139
		DefaultSizeNodeFigure result = new DefaultSizeNodeFigure(getMapMode().DPtoLP(80), getMapMode().DPtoLP(60));
140
		return result;
141
	}
142
143
	/**
144
	 * Creates figure for this edit part.
145
	 * 
146
	 * Body of this method does not depend on settings in generation model
147
	 * so you may safely remove <i>generated</i> tag and modify it.
148
	 * 
149
	 * @generated
150
	 */
151
	protected NodeFigure createNodeFigure() {
152
		NodeFigure figure = createNodePlate();
153
		figure.setLayoutManager(new StackLayout());
154
		IFigure shape = createNodeShape();
155
		figure.add(shape);
156
		contentPane = setupContentPane(shape);
157
		return figure;
158
	}
159
160
	/**
161
	 * Default implementation treats passed figure as content pane.
162
	 * Respects layout one may have set for generated figure.
163
	 * @param nodeShape instance of generated figure class
164
	 * @generated
165
	 */
166
	protected IFigure setupContentPane(IFigure nodeShape) {
167
		if (nodeShape.getLayoutManager() == null) {
168
			ConstrainedToolbarLayout layout = new ConstrainedToolbarLayout();
169
			layout.setSpacing(getMapMode().DPtoLP(5));
170
			nodeShape.setLayoutManager(layout);
171
		}
172
		return nodeShape; // use nodeShape itself as contentPane
173
	}
174
175
	/**
176
	 * @generated
177
	 */
178
	public IFigure getContentPane() {
179
		if (contentPane != null) {
180
			return contentPane;
181
		}
182
		return super.getContentPane();
183
	}
184
185
	/**
186
	 * @generated
187
	 */
188
	public EditPart getPrimaryChildEditPart() {
189
		return getChildBySemanticHint(UMLVisualIDRegistry.getType(ArtifactNameEditPart.VISUAL_ID));
190
	}
191
192
	/**
193
	 * @generated
194
	 */
195
	protected void addChildVisual(EditPart childEditPart, int index) {
196
		if (addFixedChild(childEditPart)) {
197
			return;
198
		}
199
		super.addChildVisual(childEditPart, -1);
200
	}
201
202
	/**
203
	 * @generated
204
	 */
205
	protected void removeChildVisual(EditPart childEditPart) {
206
		if (removeFixedChild(childEditPart)) {
207
			return;
208
		}
209
		super.removeChildVisual(childEditPart);
210
	}
211
212
	/**
213
	 * @generated
214
	 */
215
	public class ArtifactFigure extends org.eclipse.draw2d.RectangleFigure {
216
217
		/**
218
		 * @generated
219
		 */
220
		public ArtifactFigure() {
221
222
			org.eclipse.gmf.internal.codegen.draw2d.GridLayout myGenLayoutManager = new org.eclipse.gmf.internal.codegen.draw2d.GridLayout();
223
			myGenLayoutManager.numColumns = 1;
224
			myGenLayoutManager.makeColumnsEqualWidth = true;
225
			myGenLayoutManager.marginWidth = 0;
226
			myGenLayoutManager.marginHeight = 0;
227
			myGenLayoutManager.horizontalSpacing = 0;
228
			myGenLayoutManager.verticalSpacing = 0;
229
230
			this.setLayoutManager(myGenLayoutManager);
231
232
			createContents();
233
		}
234
235
		/**
236
		 * @generated
237
		 */
238
		private void createContents() {
239
			org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel fig_0 = new org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel();
240
			fig_0.setText("\u00ABartifact\u00BB");
241
242
			setFigureArtifactFigure_fixed_artifact(fig_0);
243
			org.eclipse.gmf.internal.codegen.draw2d.GridLayoutData layData0 = new org.eclipse.gmf.internal.codegen.draw2d.GridLayoutData();
244
			layData0.verticalAlignment = org.eclipse.gmf.internal.codegen.draw2d.GridLayoutData.CENTER;
245
			layData0.horizontalAlignment = org.eclipse.gmf.internal.codegen.draw2d.GridLayoutData.CENTER;
246
			layData0.horizontalIndent = 0;
247
			layData0.horizontalSpan = 1;
248
			layData0.verticalSpan = 1;
249
			layData0.grabExcessHorizontalSpace = true;
250
			layData0.grabExcessVerticalSpace = false;
251
252
			this.add(fig_0, layData0);
253
			org.eclipse.draw2d.RectangleFigure fig_1 = new org.eclipse.draw2d.RectangleFigure();
254
			fig_1.setFill(false);
255
			fig_1.setOutline(false);
256
257
			org.eclipse.uml2.diagram.common.draw2d.CenterLayout layouter1 = new org.eclipse.uml2.diagram.common.draw2d.CenterLayout();
258
259
			fig_1.setLayoutManager(layouter1);
260
261
			setFigureArtifactFigure_NameContainer(fig_1);
262
			org.eclipse.gmf.internal.codegen.draw2d.GridLayoutData layData1 = new org.eclipse.gmf.internal.codegen.draw2d.GridLayoutData();
263
			layData1.verticalAlignment = org.eclipse.gmf.internal.codegen.draw2d.GridLayoutData.FILL;
264
			layData1.horizontalAlignment = org.eclipse.gmf.internal.codegen.draw2d.GridLayoutData.FILL;
265
			layData1.horizontalIndent = 0;
266
			layData1.horizontalSpan = 1;
267
			layData1.verticalSpan = 1;
268
			layData1.grabExcessHorizontalSpace = true;
269
			layData1.grabExcessVerticalSpace = true;
270
271
			this.add(fig_1, layData1);
272
			org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel fig_2 = new org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel();
273
274
			setFigureArtifactFigure_name(fig_2);
275
276
			Object layData2 = null;
277
278
			fig_1.add(fig_2, layData2);
279
		}
280
281
		/**
282
		 * @generated
283
		 */
284
		private org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel fArtifactFigure_fixed_artifact;
285
286
		/**
287
		 * @generated
288
		 */
289
		public org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel getFigureArtifactFigure_fixed_artifact() {
290
			return fArtifactFigure_fixed_artifact;
291
		}
292
293
		/**
294
		 * @generated
295
		 */
296
		private void setFigureArtifactFigure_fixed_artifact(org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel fig) {
297
			fArtifactFigure_fixed_artifact = fig;
298
		}
299
300
		/**
301
		 * @generated
302
		 */
303
		private org.eclipse.draw2d.RectangleFigure fArtifactFigure_NameContainer;
304
305
		/**
306
		 * @generated
307
		 */
308
		public org.eclipse.draw2d.RectangleFigure getFigureArtifactFigure_NameContainer() {
309
			return fArtifactFigure_NameContainer;
310
		}
311
312
		/**
313
		 * @generated
314
		 */
315
		private void setFigureArtifactFigure_NameContainer(org.eclipse.draw2d.RectangleFigure fig) {
316
			fArtifactFigure_NameContainer = fig;
317
		}
318
319
		/**
320
		 * @generated
321
		 */
322
		private org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel fArtifactFigure_name;
323
324
		/**
325
		 * @generated
326
		 */
327
		public org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel getFigureArtifactFigure_name() {
328
			return fArtifactFigure_name;
329
		}
330
331
		/**
332
		 * @generated
333
		 */
334
		private void setFigureArtifactFigure_name(org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel fig) {
335
			fArtifactFigure_name = fig;
336
		}
337
338
		/**
339
		 * @generated
340
		 */
341
		private boolean myUseLocalCoordinates = false;
342
343
		/**
344
		 * @generated
345
		 */
346
		protected boolean useLocalCoordinates() {
347
			return myUseLocalCoordinates;
348
		}
349
350
		/**
351
		 * @generated
352
		 */
353
		protected void setUseLocalCoordinates(boolean useLocalCoordinates) {
354
			myUseLocalCoordinates = useLocalCoordinates;
355
		}
356
357
	}
358
359
}
(-)src/org/eclipse/uml2/diagram/component/edit/policies/PackageCanonicalEditPolicy.java (+445 lines)
Added Link Here
1
package org.eclipse.uml2.diagram.component.edit.policies;
2
3
import java.util.List;
4
import java.util.Collection;
5
import org.eclipse.gmf.runtime.notation.Edge;
6
import org.eclipse.emf.ecore.EObject;
7
import java.util.Collections;
8
import java.util.HashMap;
9
import java.util.Iterator;
10
import java.util.LinkedList;
11
import java.util.Map;
12
13
import org.eclipse.core.runtime.IAdaptable;
14
15
import org.eclipse.emf.ecore.EClass;
16
17
import org.eclipse.gef.EditPart;
18
19
import org.eclipse.gef.commands.Command;
20
21
import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil;
22
23
import org.eclipse.gmf.runtime.diagram.ui.commands.DeferredLayoutCommand;
24
import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy;
25
26
import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;
27
28
import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalConnectionEditPolicy;
29
30
import org.eclipse.gmf.runtime.diagram.ui.requests.CreateConnectionViewRequest;
31
import org.eclipse.gmf.runtime.diagram.ui.requests.RequestConstants;
32
33
import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;
34
35
import org.eclipse.gmf.runtime.emf.type.core.IElementType;
36
37
import org.eclipse.gmf.runtime.notation.Diagram;
38
import org.eclipse.gmf.runtime.notation.View;
39
40
import org.eclipse.uml2.diagram.component.edit.parts.Artifact2EditPart;
41
import org.eclipse.uml2.diagram.component.edit.parts.ArtifactEditPart;
42
import org.eclipse.uml2.diagram.component.edit.parts.Class2EditPart;
43
import org.eclipse.uml2.diagram.component.edit.parts.ClassEditPart;
44
import org.eclipse.uml2.diagram.component.edit.parts.Component2EditPart;
45
import org.eclipse.uml2.diagram.component.edit.parts.ComponentEditPart;
46
import org.eclipse.uml2.diagram.component.edit.parts.Interface2EditPart;
47
import org.eclipse.uml2.diagram.component.edit.parts.InterfaceEditPart;
48
import org.eclipse.uml2.diagram.component.edit.parts.InterfaceRealizationEditPart;
49
import org.eclipse.uml2.diagram.component.edit.parts.PackageEditPart;
50
import org.eclipse.uml2.diagram.component.edit.parts.PortEditPart;
51
import org.eclipse.uml2.diagram.component.edit.parts.PortProvidedEditPart;
52
import org.eclipse.uml2.diagram.component.edit.parts.PortRequiredEditPart;
53
import org.eclipse.uml2.diagram.component.part.UMLVisualIDRegistry;
54
import org.eclipse.uml2.diagram.component.providers.UMLElementTypes;
55
import org.eclipse.uml2.uml.BehavioredClassifier;
56
import org.eclipse.uml2.uml.InterfaceRealization;
57
import org.eclipse.uml2.uml.Port;
58
import org.eclipse.uml2.uml.UMLPackage;
59
60
/**
61
 * @generated
62
 */
63
public class PackageCanonicalEditPolicy extends CanonicalConnectionEditPolicy {
64
65
	/**
66
	 * @generated
67
	 */
68
	protected List getSemanticChildrenList() {
69
		List result = new LinkedList();
70
		EObject modelObject = ((View) getHost().getModel()).getElement();
71
		View viewObject = (View) getHost().getModel();
72
		EObject nextValue;
73
		int nodeVID;
74
		for (Iterator values = ((org.eclipse.uml2.uml.Package) modelObject).getOwnedTypes().iterator(); values.hasNext();) {
75
			nextValue = (EObject) values.next();
76
			nodeVID = UMLVisualIDRegistry.getNodeVisualID(viewObject, nextValue);
77
			switch (nodeVID) {
78
			case ComponentEditPart.VISUAL_ID: {
79
				result.add(nextValue);
80
				break;
81
			}
82
			case Artifact2EditPart.VISUAL_ID: {
83
				result.add(nextValue);
84
				break;
85
			}
86
			case Interface2EditPart.VISUAL_ID: {
87
				result.add(nextValue);
88
				break;
89
			}
90
			case Class2EditPart.VISUAL_ID: {
91
				result.add(nextValue);
92
				break;
93
			}
94
			}
95
		}
96
		return result;
97
	}
98
99
	/**
100
	 * @generated
101
	 */
102
	protected boolean shouldDeleteView(View view) {
103
		return view.isSetElement() && view.getElement() != null && view.getElement().eIsProxy();
104
	}
105
106
	/**
107
	 * @generated
108
	 */
109
	protected String getDefaultFactoryHint() {
110
		return null;
111
	}
112
113
	/**
114
	 * @generated
115
	 */
116
	protected List getSemanticConnectionsList() {
117
		return Collections.EMPTY_LIST;
118
	}
119
120
	/**
121
	 * @generated
122
	 */
123
	protected EObject getSourceElement(EObject relationship) {
124
		return null;
125
	}
126
127
	/**
128
	 * @generated
129
	 */
130
	protected EObject getTargetElement(EObject relationship) {
131
		return null;
132
	}
133
134
	/**
135
	 * @generated
136
	 */
137
	protected boolean shouldIncludeConnection(Edge connector, Collection children) {
138
		return false;
139
	}
140
141
	/**
142
	 * @generated
143
	 */
144
	protected void refreshSemantic() {
145
		List createdViews = new LinkedList();
146
		createdViews.addAll(refreshSemanticChildren());
147
		List createdConnectionViews = new LinkedList();
148
		createdConnectionViews.addAll(refreshSemanticConnections());
149
		createdConnectionViews.addAll(refreshConnections());
150
151
		if (createdViews.size() > 1) {
152
			// perform a layout of the container
153
			DeferredLayoutCommand layoutCmd = new DeferredLayoutCommand(host().getEditingDomain(), createdViews, host());
154
			executeCommand(new ICommandProxy(layoutCmd));
155
		}
156
157
		createdViews.addAll(createdConnectionViews);
158
		makeViewsImmutable(createdViews);
159
	}
160
161
	/**
162
	 * @generated
163
	 */
164
	private Collection myLinkDescriptors = new LinkedList();
165
166
	/**
167
	 * @generated
168
	 */
169
	private Map myEObject2ViewMap = new HashMap();
170
171
	/**
172
	 * @generated
173
	 */
174
	private Collection refreshConnections() {
175
		try {
176
			collectAllLinks(getDiagram());
177
			Collection existingLinks = new LinkedList(getDiagram().getEdges());
178
			for (Iterator diagramLinks = existingLinks.iterator(); diagramLinks.hasNext();) {
179
				Edge nextDiagramLink = (Edge) diagramLinks.next();
180
				EObject diagramLinkObject = nextDiagramLink.getElement();
181
				EObject diagramLinkSrc = nextDiagramLink.getSource().getElement();
182
				EObject diagramLinkDst = nextDiagramLink.getTarget().getElement();
183
				int diagramLinkVisualID = UMLVisualIDRegistry.getVisualID(nextDiagramLink);
184
				for (Iterator modelLinkDescriptors = myLinkDescriptors.iterator(); modelLinkDescriptors.hasNext();) {
185
					LinkDescriptor nextLinkDescriptor = (LinkDescriptor) modelLinkDescriptors.next();
186
					if (diagramLinkObject == nextLinkDescriptor.getLinkElement() && diagramLinkSrc == nextLinkDescriptor.getSource() && diagramLinkDst == nextLinkDescriptor.getDestination()
187
							&& diagramLinkVisualID == nextLinkDescriptor.getVisualID()) {
188
						diagramLinks.remove();
189
						modelLinkDescriptors.remove();
190
					}
191
				}
192
			}
193
			deleteViews(existingLinks.iterator());
194
			return createConnections(myLinkDescriptors);
195
		} finally {
196
			myLinkDescriptors.clear();
197
			myEObject2ViewMap.clear();
198
		}
199
	}
200
201
	/**
202
	 * @generated
203
	 */
204
	private void collectAllLinks(View view) {
205
		EObject modelElement = view.getElement();
206
		int diagramElementVisualID = UMLVisualIDRegistry.getVisualID(view);
207
		switch (diagramElementVisualID) {
208
		case ComponentEditPart.VISUAL_ID:
209
		case Artifact2EditPart.VISUAL_ID:
210
		case Interface2EditPart.VISUAL_ID:
211
		case Class2EditPart.VISUAL_ID:
212
		case Component2EditPart.VISUAL_ID:
213
		case PortEditPart.VISUAL_ID:
214
		case ArtifactEditPart.VISUAL_ID:
215
		case ClassEditPart.VISUAL_ID:
216
		case InterfaceEditPart.VISUAL_ID:
217
		case PackageEditPart.VISUAL_ID: {
218
			myEObject2ViewMap.put(modelElement, view);
219
			storeLinks(modelElement, getDiagram());
220
		}
221
		default: {
222
		}
223
			for (Iterator children = view.getChildren().iterator(); children.hasNext();) {
224
				View childView = (View) children.next();
225
				collectAllLinks(childView);
226
			}
227
		}
228
	}
229
230
	/**
231
	 * @generated
232
	 */
233
	private Collection createConnections(Collection linkDescriptors) {
234
		if (linkDescriptors.isEmpty()) {
235
			return Collections.EMPTY_LIST;
236
		}
237
		List adapters = new LinkedList();
238
		for (Iterator linkDescriptorsIterator = linkDescriptors.iterator(); linkDescriptorsIterator.hasNext();) {
239
			final LinkDescriptor nextLinkDescriptor = (LinkDescriptor) linkDescriptorsIterator.next();
240
			EditPart sourceEditPart = getEditPartFor(nextLinkDescriptor.getSource());
241
			EditPart targetEditPart = getEditPartFor(nextLinkDescriptor.getDestination());
242
			if (sourceEditPart == null || targetEditPart == null) {
243
				continue;
244
			}
245
			CreateConnectionViewRequest.ConnectionViewDescriptor descriptor = new CreateConnectionViewRequest.ConnectionViewDescriptor(nextLinkDescriptor.getSemanticAdapter(), null, ViewUtil.APPEND,
246
					false, ((IGraphicalEditPart) getHost()).getDiagramPreferencesHint());
247
			CreateConnectionViewRequest ccr = new CreateConnectionViewRequest(descriptor);
248
			ccr.setType(RequestConstants.REQ_CONNECTION_START);
249
			ccr.setSourceEditPart(sourceEditPart);
250
			sourceEditPart.getCommand(ccr);
251
			ccr.setTargetEditPart(targetEditPart);
252
			ccr.setType(RequestConstants.REQ_CONNECTION_END);
253
			Command cmd = targetEditPart.getCommand(ccr);
254
			if (cmd != null && cmd.canExecute()) {
255
				executeCommand(cmd);
256
				IAdaptable viewAdapter = (IAdaptable) ccr.getNewObject();
257
				if (viewAdapter != null) {
258
					adapters.add(viewAdapter);
259
				}
260
			}
261
		}
262
		return adapters;
263
	}
264
265
	/**
266
	 * @generated
267
	 */
268
	private EditPart getEditPartFor(EObject modelElement) {
269
		View view = (View) myEObject2ViewMap.get(modelElement);
270
		if (view != null) {
271
			return (EditPart) getHost().getViewer().getEditPartRegistry().get(view);
272
		}
273
		return null;
274
	}
275
276
	/**
277
	 *@generated
278
	 */
279
	private void storeLinks(EObject container, Diagram diagram) {
280
		EClass containerMetaclass = container.eClass();
281
		storeFeatureModelFacetLinks(container, containerMetaclass, diagram);
282
		storeTypeModelFacetLinks(container, containerMetaclass);
283
	}
284
285
	/**
286
	 * @generated
287
	 */
288
	private void storeTypeModelFacetLinks(EObject container, EClass containerMetaclass) {
289
		storeTypeModelFacetLinks_InterfaceRealization_4001(container, containerMetaclass);
290
	}
291
292
	/**
293
	 * @generated
294
	 */
295
	private void storeTypeModelFacetLinks_InterfaceRealization_4001(EObject container, EClass containerMetaclass) {
296
		if (UMLPackage.eINSTANCE.getBehavioredClassifier().isSuperTypeOf(containerMetaclass)) {
297
			for (Iterator values = ((BehavioredClassifier) container).getInterfaceRealizations().iterator(); values.hasNext();) {
298
				EObject nextValue = ((EObject) values.next());
299
				int linkVID = UMLVisualIDRegistry.getLinkWithClassVisualID(nextValue);
300
				if (InterfaceRealizationEditPart.VISUAL_ID == linkVID) {
301
					Object structuralFeatureResult = ((InterfaceRealization) nextValue).getContract();
302
					if (structuralFeatureResult instanceof EObject) {
303
						EObject dst = (EObject) structuralFeatureResult;
304
						structuralFeatureResult = ((InterfaceRealization) nextValue).getImplementingClassifier();
305
						if (structuralFeatureResult instanceof EObject) {
306
							EObject src = (EObject) structuralFeatureResult;
307
							myLinkDescriptors.add(new LinkDescriptor(src, dst, nextValue, linkVID));
308
						}
309
					}
310
				}
311
			}
312
		}
313
	}
314
315
	/**
316
	 *@generated
317
	 */
318
	private void storeFeatureModelFacetLinks(EObject container, EClass containerMetaclass, Diagram diagram) {
319
320
		if (UMLPackage.eINSTANCE.getPort().isSuperTypeOf(containerMetaclass)) {
321
			for (Iterator destinations = ((Port) container).getProvideds().iterator(); destinations.hasNext();) {
322
				EObject nextDestination = (EObject) destinations.next();
323
				myLinkDescriptors.add(new LinkDescriptor(container, nextDestination, UMLElementTypes.PortProvided_4006, PortProvidedEditPart.VISUAL_ID));
324
325
			}
326
		}
327
		if (UMLPackage.eINSTANCE.getPort().isSuperTypeOf(containerMetaclass)) {
328
			for (Iterator destinations = ((Port) container).getRequireds().iterator(); destinations.hasNext();) {
329
				EObject nextDestination = (EObject) destinations.next();
330
				myLinkDescriptors.add(new LinkDescriptor(container, nextDestination, UMLElementTypes.PortRequired_4004, PortRequiredEditPart.VISUAL_ID));
331
332
			}
333
		}
334
	}
335
336
	/**
337
	 * @generated
338
	 */
339
	private Diagram getDiagram() {
340
		return ((View) getHost().getModel()).getDiagram();
341
	}
342
343
	/**
344
	 * @generated
345
	 */
346
	private class LinkDescriptor {
347
348
		/**
349
		 * @generated
350
		 */
351
		private EObject mySource;
352
353
		/**
354
		 * @generated
355
		 */
356
		private EObject myDestination;
357
358
		/**
359
		 * @generated
360
		 */
361
		private EObject myLinkElement;
362
363
		/**
364
		 * @generated
365
		 */
366
		private int myVisualID;
367
368
		/**
369
		 * @generated
370
		 */
371
		private IAdaptable mySemanticAdapter;
372
373
		/**
374
		 * @generated
375
		 */
376
		protected LinkDescriptor(EObject source, EObject destination, EObject linkElement, int linkVID) {
377
			this(source, destination, linkVID);
378
			myLinkElement = linkElement;
379
			mySemanticAdapter = new EObjectAdapter(linkElement);
380
		}
381
382
		/**
383
		 * @generated
384
		 */
385
		protected LinkDescriptor(EObject source, EObject destination, IElementType elementType, int linkVID) {
386
			this(source, destination, linkVID);
387
			myLinkElement = null;
388
			final IElementType elementTypeCopy = elementType;
389
			mySemanticAdapter = new IAdaptable() {
390
391
				public Object getAdapter(Class adapter) {
392
					if (IElementType.class.equals(adapter)) {
393
						return elementTypeCopy;
394
					}
395
					return null;
396
				}
397
			};
398
		}
399
400
		/**
401
		 * @generated
402
		 */
403
		private LinkDescriptor(EObject source, EObject destination, int linkVID) {
404
			mySource = source;
405
			myDestination = destination;
406
			myVisualID = linkVID;
407
		}
408
409
		/**
410
		 * @generated
411
		 */
412
		protected EObject getSource() {
413
			return mySource;
414
		}
415
416
		/**
417
		 * @generated
418
		 */
419
		protected EObject getDestination() {
420
			return myDestination;
421
		}
422
423
		/**
424
		 * @generated
425
		 */
426
		protected EObject getLinkElement() {
427
			return myLinkElement;
428
		}
429
430
		/**
431
		 * @generated
432
		 */
433
		protected int getVisualID() {
434
			return myVisualID;
435
		}
436
437
		/**
438
		 * @generated
439
		 */
440
		protected IAdaptable getSemanticAdapter() {
441
			return mySemanticAdapter;
442
		}
443
	}
444
445
}
(-)src/org/eclipse/uml2/diagram/component/view/factories/PortNameViewFactory.java (+40 lines)
Added Link Here
1
package org.eclipse.uml2.diagram.component.view.factories;
2
3
import java.util.ArrayList;
4
import java.util.List;
5
import org.eclipse.core.runtime.IAdaptable;
6
import org.eclipse.gmf.runtime.diagram.core.preferences.PreferencesHint;
7
import org.eclipse.gmf.runtime.diagram.ui.view.factories.AbstractLabelViewFactory;
8
import org.eclipse.gmf.runtime.notation.Node;
9
import org.eclipse.gmf.runtime.notation.View;
10
import org.eclipse.gmf.runtime.diagram.ui.util.MeasurementUnitHelper;
11
12
import org.eclipse.gmf.runtime.draw2d.ui.mapmode.IMapMode;
13
14
import org.eclipse.gmf.runtime.notation.Location;
15
16
/**
17
 * @generated
18
 */
19
public class PortNameViewFactory extends AbstractLabelViewFactory {
20
21
	/**
22
	 * @generated
23
	 */
24
	public View createView(IAdaptable semanticAdapter, View containerView, String semanticHint, int index, boolean persisted, PreferencesHint preferencesHint) {
25
		Node view = (Node) super.createView(semanticAdapter, containerView, semanticHint, index, persisted, preferencesHint);
26
		Location location = (Location) view.getLayoutConstraint();
27
		IMapMode mapMode = MeasurementUnitHelper.getMapMode(containerView.getDiagram().getMeasurementUnit());
28
		location.setX(mapMode.DPtoLP(0));
29
		location.setY(mapMode.DPtoLP(5));
30
		return view;
31
	}
32
33
	/**
34
	 * @generated
35
	 */
36
	protected List createStyles(View view) {
37
		List styles = new ArrayList();
38
		return styles;
39
	}
40
}
(-)src/org/eclipse/uml2/diagram/component/edit/parts/ComponentContentsEditPart.java (+76 lines)
Added Link Here
1
package org.eclipse.uml2.diagram.component.edit.parts;
2
3
import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;
4
import org.eclipse.gmf.runtime.notation.View;
5
import org.eclipse.draw2d.IFigure;
6
7
import org.eclipse.gef.EditPolicy;
8
9
import org.eclipse.gmf.runtime.diagram.ui.editparts.ShapeCompartmentEditPart;
10
11
import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy;
12
import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy;
13
import org.eclipse.gmf.runtime.diagram.ui.editpolicies.ResizableCompartmentEditPolicy;
14
15
import org.eclipse.gmf.runtime.diagram.ui.figures.ResizableCompartmentFigure;
16
17
import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout;
18
19
import org.eclipse.uml2.diagram.component.edit.policies.ComponentContentsCanonicalEditPolicy;
20
import org.eclipse.uml2.diagram.component.edit.policies.ComponentContentsItemSemanticEditPolicy;
21
22
/**
23
 * @generated
24
 */
25
public class ComponentContentsEditPart extends ShapeCompartmentEditPart {
26
27
	/**
28
	 * @generated
29
	 */
30
	public static final int VISUAL_ID = 7001;
31
32
	/**
33
	 * @generated
34
	 */
35
	public ComponentContentsEditPart(View view) {
36
		super(view);
37
	}
38
39
	/**
40
	 * @generated
41
	 */
42
	public String getCompartmentName() {
43
		return "contents";
44
	}
45
46
	/**
47
	 * @generated
48
	 */
49
	public IFigure createFigure() {
50
		ResizableCompartmentFigure result = (ResizableCompartmentFigure) super.createFigure();
51
		result.setTitleVisibility(false);
52
		return result;
53
	}
54
55
	/**
56
	 * @generated
57
	 */
58
	protected void createDefaultEditPolicies() {
59
		super.createDefaultEditPolicies();
60
		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE, new ResizableCompartmentEditPolicy());
61
		installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE, new ComponentContentsItemSemanticEditPolicy());
62
		installEditPolicy(EditPolicyRoles.CREATION_ROLE, new CreationEditPolicy());
63
		installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE, new DragDropEditPolicy());
64
		installEditPolicy(EditPolicyRoles.CANONICAL_ROLE, new ComponentContentsCanonicalEditPolicy());
65
66
	}
67
68
	/**
69
	 * @generated
70
	 */
71
	protected void setRatio(Double ratio) {
72
		if (getFigure().getParent().getLayoutManager() instanceof ConstrainedToolbarLayout) {
73
			super.setRatio(ratio);
74
		}
75
	}
76
}
(-)src/org/eclipse/uml2/diagram/component/part/UMLDiagramEditorPlugin.java (+221 lines)
Added Link Here
1
package org.eclipse.uml2.diagram.component.part;
2
3
import java.util.ArrayList;
4
import java.util.List;
5
6
import org.eclipse.core.runtime.IPath;
7
import org.eclipse.core.runtime.IStatus;
8
import org.eclipse.core.runtime.Path;
9
import org.eclipse.core.runtime.Status;
10
11
import org.eclipse.emf.common.notify.AdapterFactory;
12
import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
13
import org.eclipse.emf.edit.provider.IItemLabelProvider;
14
import org.eclipse.emf.edit.provider.ReflectiveItemProviderAdapterFactory;
15
import org.eclipse.emf.edit.provider.resource.ResourceItemProviderAdapterFactory;
16
import org.eclipse.emf.edit.ui.provider.ExtendedImageRegistry;
17
import org.eclipse.gmf.runtime.diagram.core.preferences.PreferencesHint;
18
import org.eclipse.jface.resource.ImageDescriptor;
19
import org.eclipse.swt.graphics.Image;
20
import org.eclipse.ui.plugin.AbstractUIPlugin;
21
import org.osgi.framework.BundleContext;
22
import org.eclipse.emf.ecore.provider.EcoreItemProviderAdapterFactory;
23
24
import org.eclipse.uml2.uml.edit.providers.UMLItemProviderAdapterFactory;
25
26
/**
27
 * @generated
28
 */
29
public class UMLDiagramEditorPlugin extends AbstractUIPlugin {
30
31
	/**
32
	 * @generated
33
	 */
34
	public static final String ID = "org.eclipse.uml2.diagram.component"; //$NON-NLS-1$
35
36
	/**
37
	 * @generated
38
	 */
39
	public static final PreferencesHint DIAGRAM_PREFERENCES_HINT = new PreferencesHint(ID);
40
41
	/**
42
	 * @generated
43
	 */
44
	private static UMLDiagramEditorPlugin instance;
45
46
	/**
47
	 * @generated
48
	 */
49
	private ComposedAdapterFactory adapterFactory;
50
51
	/**
52
	 * @generated
53
	 */
54
	public UMLDiagramEditorPlugin() {
55
	}
56
57
	/**
58
	 * @generated
59
	 */
60
	public void start(BundleContext context) throws Exception {
61
		super.start(context);
62
		instance = this;
63
		PreferencesHint.registerPreferenceStore(DIAGRAM_PREFERENCES_HINT, getPreferenceStore());
64
		adapterFactory = createAdapterFactory();
65
	}
66
67
	/**
68
	 * @generated
69
	 */
70
	public void stop(BundleContext context) throws Exception {
71
		adapterFactory.dispose();
72
		adapterFactory = null;
73
		instance = null;
74
		super.stop(context);
75
	}
76
77
	/**
78
	 * @generated
79
	 */
80
	public static UMLDiagramEditorPlugin getInstance() {
81
		return instance;
82
	}
83
84
	/**
85
	 * @generated
86
	 */
87
	protected ComposedAdapterFactory createAdapterFactory() {
88
		List factories = new ArrayList();
89
		fillItemProviderFactories(factories);
90
		return new ComposedAdapterFactory(factories);
91
	}
92
93
	/**
94
	 * @generated
95
	 */
96
	protected void fillItemProviderFactories(List factories) {
97
		factories.add(new UMLItemProviderAdapterFactory());
98
		factories.add(new EcoreItemProviderAdapterFactory());
99
		factories.add(new ResourceItemProviderAdapterFactory());
100
		factories.add(new ReflectiveItemProviderAdapterFactory());
101
	}
102
103
	/**
104
	 * @generated
105
	 */
106
	public AdapterFactory getItemProvidersAdapterFactory() {
107
		return adapterFactory;
108
	}
109
110
	/**
111
	 * @generated
112
	 */
113
	public ImageDescriptor getItemImageDescriptor(Object item) {
114
		IItemLabelProvider labelProvider = (IItemLabelProvider) adapterFactory.adapt(item, IItemLabelProvider.class);
115
		if (labelProvider != null) {
116
			return ExtendedImageRegistry.getInstance().getImageDescriptor(labelProvider.getImage(item));
117
		}
118
		return null;
119
	}
120
121
	/**
122
	 * Returns an image descriptor for the image file at the given
123
	 * plug-in relative path.
124
	 *
125
	 * @generated
126
	 * @param path the path
127
	 * @return the image descriptor
128
	 */
129
	public static ImageDescriptor getBundledImageDescriptor(String path) {
130
		return AbstractUIPlugin.imageDescriptorFromPlugin(ID, path);
131
	}
132
133
	/**
134
	 * Respects images residing in any plug-in. If path is relative,
135
	 * then this bundle is looked up for the image, otherwise, for absolute 
136
	 * path, first segment is taken as id of plug-in with image
137
	 *
138
	 * @generated
139
	 * @param path the path to image, either absolute (with plug-in id as first segment), or relative for bundled images
140
	 * @return the image descriptor
141
	 */
142
	public static ImageDescriptor findImageDescriptor(String path) {
143
		final IPath p = new Path(path);
144
		if (p.isAbsolute() && p.segmentCount() > 1) {
145
			return AbstractUIPlugin.imageDescriptorFromPlugin(p.segment(0), p.removeFirstSegments(1).makeAbsolute().toString());
146
		} else {
147
			return getBundledImageDescriptor(p.makeAbsolute().toString());
148
		}
149
	}
150
151
	/**
152
	 * Returns an image for the image file at the given plug-in relative path.
153
	 * Client do not need to dispose this image. Images will be disposed automatically.
154
	 *
155
	 * @generated
156
	 * @param path the path
157
	 * @return image instance
158
	 */
159
	public Image getBundledImage(String path) {
160
		Image image = getImageRegistry().get(path);
161
		if (image == null) {
162
			getImageRegistry().put(path, getBundledImageDescriptor(path));
163
			image = getImageRegistry().get(path);
164
		}
165
		return image;
166
	}
167
168
	/**
169
	 * @generated
170
	 */
171
	public void logError(String error) {
172
		logError(error, null);
173
	}
174
175
	/**
176
	 * @param throwable actual error or null could be passed
177
	 * @generated
178
	 */
179
	public void logError(String error, Throwable throwable) {
180
		if (error == null && throwable != null) {
181
			error = throwable.getMessage();
182
		}
183
		getLog().log(new Status(IStatus.ERROR, UMLDiagramEditorPlugin.ID, IStatus.OK, error, throwable));
184
		debug(error, throwable);
185
	}
186
187
	/**
188
	 * @generated
189
	 */
190
	public void logInfo(String message) {
191
		logInfo(message, null);
192
	}
193
194
	/**
195
	 * @param throwable actual error or null could be passed
196
	 * @generated
197
	 */
198
	public void logInfo(String message, Throwable throwable) {
199
		if (message == null && throwable != null) {
200
			message = throwable.getMessage();
201
		}
202
		getLog().log(new Status(IStatus.INFO, UMLDiagramEditorPlugin.ID, IStatus.OK, message, throwable));
203
		debug(message, throwable);
204
	}
205
206
	/**
207
	 * @generated
208
	 */
209
	private void debug(String message, Throwable throwable) {
210
		if (!isDebugging()) {
211
			return;
212
		}
213
		if (message != null) {
214
			System.err.println(message);
215
		}
216
		if (throwable != null) {
217
			throwable.printStackTrace();
218
		}
219
	}
220
221
}
(-)src/org/eclipse/uml2/diagram/component/view/factories/Interface2ViewFactory.java (+57 lines)
Added Link Here
1
package org.eclipse.uml2.diagram.component.view.factories;
2
3
import java.util.ArrayList;
4
import java.util.List;
5
6
import org.eclipse.core.runtime.IAdaptable;
7
8
import org.eclipse.emf.ecore.EAnnotation;
9
import org.eclipse.emf.ecore.EcoreFactory;
10
11
import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil;
12
13
import org.eclipse.gmf.runtime.diagram.ui.view.factories.AbstractShapeViewFactory;
14
15
import org.eclipse.gmf.runtime.notation.NotationFactory;
16
import org.eclipse.gmf.runtime.notation.View;
17
18
import org.eclipse.uml2.diagram.component.edit.parts.InterfaceName2EditPart;
19
import org.eclipse.uml2.diagram.component.edit.parts.PackageEditPart;
20
import org.eclipse.uml2.diagram.component.part.UMLVisualIDRegistry;
21
22
/**
23
 * @generated
24
 */
25
public class Interface2ViewFactory extends AbstractShapeViewFactory {
26
27
	/**
28
	 * @generated 
29
	 */
30
	protected List createStyles(View view) {
31
		List styles = new ArrayList();
32
		styles.add(NotationFactory.eINSTANCE.createFontStyle());
33
		styles.add(NotationFactory.eINSTANCE.createDescriptionStyle());
34
		styles.add(NotationFactory.eINSTANCE.createFillStyle());
35
		styles.add(NotationFactory.eINSTANCE.createLineStyle());
36
		return styles;
37
	}
38
39
	/**
40
	 * @generated
41
	 */
42
	protected void decorateView(View containerView, View view, IAdaptable semanticAdapter, String semanticHint, int index, boolean persisted) {
43
		if (semanticHint == null) {
44
			semanticHint = UMLVisualIDRegistry.getType(org.eclipse.uml2.diagram.component.edit.parts.Interface2EditPart.VISUAL_ID);
45
			view.setType(semanticHint);
46
		}
47
		super.decorateView(containerView, view, semanticAdapter, semanticHint, index, persisted);
48
		if (!PackageEditPart.MODEL_ID.equals(UMLVisualIDRegistry.getModelID(containerView))) {
49
			EAnnotation shortcutAnnotation = EcoreFactory.eINSTANCE.createEAnnotation();
50
			shortcutAnnotation.setSource("Shortcut"); //$NON-NLS-1$
51
			shortcutAnnotation.getDetails().put("modelID", PackageEditPart.MODEL_ID); //$NON-NLS-1$
52
			view.getEAnnotations().add(shortcutAnnotation);
53
		}
54
		getViewService().createNode(semanticAdapter, view, UMLVisualIDRegistry.getType(InterfaceName2EditPart.VISUAL_ID), ViewUtil.APPEND, true, getPreferencesHint());
55
	}
56
57
}
(-)src/org/eclipse/uml2/diagram/component/view/factories/ComponentContents2ViewFactory.java (+77 lines)
Added Link Here
1
package org.eclipse.uml2.diagram.component.view.factories;
2
3
import java.util.ArrayList;
4
import java.util.List;
5
6
import org.eclipse.core.runtime.IAdaptable;
7
8
import org.eclipse.emf.ecore.EAnnotation;
9
import org.eclipse.emf.ecore.EcoreFactory;
10
11
import org.eclipse.gmf.runtime.diagram.ui.view.factories.ListCompartmentViewFactory;
12
13
import org.eclipse.gmf.runtime.notation.DrawerStyle;
14
import org.eclipse.gmf.runtime.notation.NotationFactory;
15
import org.eclipse.gmf.runtime.notation.NotationPackage;
16
import org.eclipse.gmf.runtime.notation.TitleStyle;
17
import org.eclipse.gmf.runtime.notation.View;
18
19
import org.eclipse.uml2.diagram.component.edit.parts.PackageEditPart;
20
import org.eclipse.uml2.diagram.component.part.UMLVisualIDRegistry;
21
22
/**
23
 * @generated
24
 */
25
public class ComponentContents2ViewFactory extends ListCompartmentViewFactory {
26
27
	/**
28
	 * @generated 
29
	 */
30
	protected List createStyles(View view) {
31
		List styles = new ArrayList();
32
		styles.add(NotationFactory.eINSTANCE.createDrawerStyle());
33
		styles.add(NotationFactory.eINSTANCE.createSortingStyle());
34
		styles.add(NotationFactory.eINSTANCE.createFilteringStyle());
35
		return styles;
36
	}
37
38
	/**
39
	 * @generated
40
	 */
41
	protected void decorateView(View containerView, View view, IAdaptable semanticAdapter, String semanticHint, int index, boolean persisted) {
42
		if (semanticHint == null) {
43
			semanticHint = UMLVisualIDRegistry.getType(org.eclipse.uml2.diagram.component.edit.parts.ComponentContents2EditPart.VISUAL_ID);
44
			view.setType(semanticHint);
45
		}
46
		super.decorateView(containerView, view, semanticAdapter, semanticHint, index, persisted);
47
		setupCompartmentTitle(view);
48
		setupCompartmentCollapsed(view);
49
		if (!PackageEditPart.MODEL_ID.equals(UMLVisualIDRegistry.getModelID(containerView))) {
50
			EAnnotation shortcutAnnotation = EcoreFactory.eINSTANCE.createEAnnotation();
51
			shortcutAnnotation.setSource("Shortcut"); //$NON-NLS-1$
52
			shortcutAnnotation.getDetails().put("modelID", PackageEditPart.MODEL_ID); //$NON-NLS-1$
53
			view.getEAnnotations().add(shortcutAnnotation);
54
		}
55
	}
56
57
	/**
58
	 * @generated
59
	 */
60
	protected void setupCompartmentTitle(View view) {
61
		TitleStyle titleStyle = (TitleStyle) view.getStyle(NotationPackage.eINSTANCE.getTitleStyle());
62
		if (titleStyle != null) {
63
			titleStyle.setShowTitle(true);
64
		}
65
	}
66
67
	/**
68
	 * @generated
69
	 */
70
	protected void setupCompartmentCollapsed(View view) {
71
		DrawerStyle drawerStyle = (DrawerStyle) view.getStyle(NotationPackage.eINSTANCE.getDrawerStyle());
72
		if (drawerStyle != null) {
73
			drawerStyle.setCollapsed(false);
74
		}
75
	}
76
77
}
(-)src/org/eclipse/uml2/diagram/component/sheet/UMLPropertySection.java (+112 lines)
Added Link Here
1
package org.eclipse.uml2.diagram.component.sheet;
2
3
import java.util.ArrayList;
4
import java.util.Iterator;
5
6
import org.eclipse.ui.IWorkbenchPart;
7
import org.eclipse.core.runtime.IAdaptable;
8
import org.eclipse.emf.common.notify.AdapterFactory;
9
import org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain;
10
import org.eclipse.emf.edit.provider.IItemPropertySource;
11
import org.eclipse.emf.edit.ui.provider.PropertySource;
12
import org.eclipse.jface.viewers.ISelection;
13
import org.eclipse.jface.viewers.StructuredSelection;
14
import org.eclipse.emf.transaction.TransactionalEditingDomain;
15
16
import org.eclipse.emf.transaction.util.TransactionUtil;
17
18
import org.eclipse.gef.EditPart;
19
20
import org.eclipse.gmf.runtime.diagram.ui.properties.sections.AdvancedPropertySection;
21
22
import org.eclipse.gmf.runtime.notation.View;
23
24
import org.eclipse.ui.views.properties.IPropertySource;
25
import org.eclipse.ui.views.properties.IPropertySourceProvider;
26
27
/**
28
 * @generated
29
 */
30
public class UMLPropertySection extends AdvancedPropertySection implements IPropertySourceProvider {
31
32
	/**
33
	 * @generated
34
	 */
35
	public IPropertySource getPropertySource(Object object) {
36
		if (object instanceof IPropertySource) {
37
			return (IPropertySource) object;
38
		}
39
		AdapterFactory af = getAdapterFactory(object);
40
		if (af != null) {
41
			IItemPropertySource ips = (IItemPropertySource) af.adapt(object, IItemPropertySource.class);
42
			if (ips != null) {
43
				return new PropertySource(object, ips);
44
			}
45
		}
46
		if (object instanceof IAdaptable) {
47
			return (IPropertySource) ((IAdaptable) object).getAdapter(IPropertySource.class);
48
		}
49
		return null;
50
	}
51
52
	/**
53
	 * Modify/unwrap selection.  
54
	 * @generated
55
	 */
56
	protected Object transformSelection(Object selected) {
57
		if (selected instanceof EditPart) {
58
			Object model = ((EditPart) selected).getModel();
59
			return model instanceof View ? ((View) model).getElement() : null;
60
		}
61
		if (selected instanceof View) {
62
			return ((View) selected).getElement();
63
		}
64
		if (selected instanceof IAdaptable) {
65
			View view = (View) ((IAdaptable) selected).getAdapter(View.class);
66
			if (view != null) {
67
				return view.getElement();
68
			}
69
		}
70
		return selected;
71
	}
72
73
	/**
74
	 * @generated
75
	 */
76
	protected IPropertySourceProvider getPropertySourceProvider() {
77
		return this;
78
	}
79
80
	/**
81
	 * @generated
82
	 */
83
	public void setInput(IWorkbenchPart part, ISelection selection) {
84
		if (selection.isEmpty() || false == selection instanceof StructuredSelection) {
85
			super.setInput(part, selection);
86
			return;
87
		}
88
		final StructuredSelection structuredSelection = ((StructuredSelection) selection);
89
		ArrayList transformedSelection = new ArrayList(structuredSelection.size());
90
		for (Iterator it = structuredSelection.iterator(); it.hasNext();) {
91
			Object r = transformSelection(it.next());
92
			if (r != null) {
93
				transformedSelection.add(r);
94
			}
95
		}
96
		super.setInput(part, new StructuredSelection(transformedSelection));
97
	}
98
99
	/**
100
	 * @generated
101
	 */
102
	protected AdapterFactory getAdapterFactory(Object object) {
103
		if (getEditingDomain() instanceof AdapterFactoryEditingDomain) {
104
			return ((AdapterFactoryEditingDomain) getEditingDomain()).getAdapterFactory();
105
		}
106
		TransactionalEditingDomain editingDomain = TransactionUtil.getEditingDomain(object);
107
		if (editingDomain != null) {
108
			return ((AdapterFactoryEditingDomain) editingDomain).getAdapterFactory();
109
		}
110
		return null;
111
	}
112
}
(-)src/org/eclipse/uml2/diagram/component/edit/helpers/ClassEditHelper.java (+7 lines)
Added Link Here
1
package org.eclipse.uml2.diagram.component.edit.helpers;
2
3
/**
4
 * @generated
5
 */
6
public class ClassEditHelper extends UMLBaseEditHelper {
7
}
(-)src/org/eclipse/uml2/diagram/component/edit/policies/UMLTextNonResizableEditPolicy.java (+207 lines)
Added Link Here
1
package org.eclipse.uml2.diagram.component.edit.policies;
2
3
import java.util.Collections;
4
import java.util.List;
5
import org.eclipse.draw2d.ColorConstants;
6
import org.eclipse.draw2d.Figure;
7
import org.eclipse.draw2d.Graphics;
8
import org.eclipse.draw2d.IFigure;
9
import org.eclipse.draw2d.Label;
10
import org.eclipse.draw2d.RectangleFigure;
11
import org.eclipse.draw2d.geometry.Rectangle;
12
import org.eclipse.gef.GraphicalEditPart;
13
import org.eclipse.gef.LayerConstants;
14
import org.eclipse.gef.handles.MoveHandle;
15
import org.eclipse.gmf.runtime.diagram.ui.editpolicies.NonResizableEditPolicyEx;
16
import org.eclipse.gmf.runtime.diagram.ui.tools.DragEditPartsTrackerEx;
17
import org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel;
18
19
/**
20
 * @generated
21
 */
22
public class UMLTextNonResizableEditPolicy extends NonResizableEditPolicyEx {
23
24
	/**
25
	 * @generated
26
	 */
27
	private IFigure selectionFeedbackFigure;
28
29
	/**
30
	 * @generated
31
	 */
32
	private IFigure focusFeedbackFigure;
33
34
	/**
35
	 * @generated
36
	 */
37
	protected void showPrimarySelection() {
38
		if (getHostFigure() instanceof WrapLabel) {
39
			((WrapLabel) getHostFigure()).setSelected(true);
40
			((WrapLabel) getHostFigure()).setFocus(true);
41
		} else {
42
			showSelection();
43
			showFocus();
44
		}
45
	}
46
47
	/**
48
	 * @generated
49
	 */
50
	protected void showSelection() {
51
		if (getHostFigure() instanceof WrapLabel) {
52
			((WrapLabel) getHostFigure()).setSelected(true);
53
			((WrapLabel) getHostFigure()).setFocus(false);
54
		} else {
55
			hideSelection();
56
			addFeedback(selectionFeedbackFigure = createSelectionFeedbackFigure());
57
			refreshSelectionFeedback();
58
			hideFocus();
59
		}
60
	}
61
62
	/**
63
	 * @generated
64
	 */
65
	protected void hideSelection() {
66
		if (getHostFigure() instanceof WrapLabel) {
67
			((WrapLabel) getHostFigure()).setSelected(false);
68
			((WrapLabel) getHostFigure()).setFocus(false);
69
		} else {
70
			if (selectionFeedbackFigure != null) {
71
				removeFeedback(selectionFeedbackFigure);
72
				selectionFeedbackFigure = null;
73
			}
74
			hideFocus();
75
		}
76
	}
77
78
	/**
79
	 * @generated
80
	 */
81
	protected void showFocus() {
82
		if (getHostFigure() instanceof WrapLabel) {
83
			((WrapLabel) getHostFigure()).setFocus(true);
84
		} else {
85
			hideFocus();
86
			addFeedback(focusFeedbackFigure = createFocusFeedbackFigure());
87
			refreshFocusFeedback();
88
		}
89
	}
90
91
	/**
92
	 * @generated
93
	 */
94
	protected void hideFocus() {
95
		if (getHostFigure() instanceof WrapLabel) {
96
			((WrapLabel) getHostFigure()).setFocus(false);
97
		} else {
98
			if (focusFeedbackFigure != null) {
99
				removeFeedback(focusFeedbackFigure);
100
				focusFeedbackFigure = null;
101
			}
102
		}
103
	}
104
105
	/**
106
	 * @generated
107
	 */
108
	protected IFigure getFeedbackLayer() {
109
		return getLayer(LayerConstants.SCALED_FEEDBACK_LAYER);
110
	}
111
112
	/**
113
	 * @generated
114
	 */
115
	protected Rectangle getFeedbackBounds() {
116
		Rectangle bounds;
117
		if (getHostFigure() instanceof Label) {
118
			bounds = ((Label) getHostFigure()).getTextBounds();
119
			bounds.intersect(getHostFigure().getBounds());
120
		} else {
121
			bounds = getHostFigure().getBounds().getCopy();
122
		}
123
		getHostFigure().getParent().translateToAbsolute(bounds);
124
		getFeedbackLayer().translateToRelative(bounds);
125
		return bounds;
126
	}
127
128
	/**
129
	 * @generated
130
	 */
131
	protected IFigure createSelectionFeedbackFigure() {
132
		if (getHostFigure() instanceof Label) {
133
			Label feedbackFigure = new Label();
134
			feedbackFigure.setOpaque(true);
135
			feedbackFigure.setBackgroundColor(ColorConstants.menuBackgroundSelected);
136
			feedbackFigure.setForegroundColor(ColorConstants.menuForegroundSelected);
137
			return feedbackFigure;
138
		} else {
139
			RectangleFigure feedbackFigure = new RectangleFigure();
140
			feedbackFigure.setFill(false);
141
			return feedbackFigure;
142
		}
143
	}
144
145
	/**
146
	 * @generated
147
	 */
148
	protected IFigure createFocusFeedbackFigure() {
149
		return new Figure() {
150
151
			protected void paintFigure(Graphics graphics) {
152
				graphics.drawFocus(getBounds().getResized(-1, -1));
153
			}
154
		};
155
	}
156
157
	/**
158
	 * @generated
159
	 */
160
	protected void updateLabel(Label target) {
161
		Label source = (Label) getHostFigure();
162
		target.setText(source.getText());
163
		target.setTextAlignment(source.getTextAlignment());
164
		target.setFont(source.getFont());
165
	}
166
167
	/**
168
	 * @generated
169
	 */
170
	protected void refreshSelectionFeedback() {
171
		if (selectionFeedbackFigure != null) {
172
			if (selectionFeedbackFigure instanceof Label) {
173
				updateLabel((Label) selectionFeedbackFigure);
174
				selectionFeedbackFigure.setBounds(getFeedbackBounds());
175
			} else {
176
				selectionFeedbackFigure.setBounds(getFeedbackBounds().expand(5, 5));
177
			}
178
		}
179
	}
180
181
	/**
182
	 * @generated
183
	 */
184
	protected void refreshFocusFeedback() {
185
		if (focusFeedbackFigure != null) {
186
			focusFeedbackFigure.setBounds(getFeedbackBounds());
187
		}
188
	}
189
190
	/**
191
	 * @generated
192
	 */
193
	public void refreshFeedback() {
194
		refreshSelectionFeedback();
195
		refreshFocusFeedback();
196
	}
197
198
	/**
199
	 * @generated
200
	 */
201
	protected List createSelectionHandles() {
202
		MoveHandle moveHandle = new MoveHandle((GraphicalEditPart) getHost());
203
		moveHandle.setBorder(null);
204
		moveHandle.setDragTracker(new DragEditPartsTrackerEx(getHost()));
205
		return Collections.singletonList(moveHandle);
206
	}
207
}
(-)src/org/eclipse/uml2/diagram/component/view/factories/ComponentViewFactory.java (+59 lines)
Added Link Here
1
package org.eclipse.uml2.diagram.component.view.factories;
2
3
import java.util.ArrayList;
4
import java.util.List;
5
6
import org.eclipse.core.runtime.IAdaptable;
7
8
import org.eclipse.emf.ecore.EAnnotation;
9
import org.eclipse.emf.ecore.EcoreFactory;
10
11
import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil;
12
13
import org.eclipse.gmf.runtime.diagram.ui.view.factories.AbstractShapeViewFactory;
14
15
import org.eclipse.gmf.runtime.notation.NotationFactory;
16
import org.eclipse.gmf.runtime.notation.View;
17
18
import org.eclipse.uml2.diagram.component.edit.parts.ComponentContentsEditPart;
19
import org.eclipse.uml2.diagram.component.edit.parts.ComponentName2EditPart;
20
import org.eclipse.uml2.diagram.component.edit.parts.PackageEditPart;
21
import org.eclipse.uml2.diagram.component.part.UMLVisualIDRegistry;
22
23
/**
24
 * @generated
25
 */
26
public class ComponentViewFactory extends AbstractShapeViewFactory {
27
28
	/**
29
	 * @generated 
30
	 */
31
	protected List createStyles(View view) {
32
		List styles = new ArrayList();
33
		styles.add(NotationFactory.eINSTANCE.createFontStyle());
34
		styles.add(NotationFactory.eINSTANCE.createDescriptionStyle());
35
		styles.add(NotationFactory.eINSTANCE.createFillStyle());
36
		styles.add(NotationFactory.eINSTANCE.createLineStyle());
37
		return styles;
38
	}
39
40
	/**
41
	 * @generated
42
	 */
43
	protected void decorateView(View containerView, View view, IAdaptable semanticAdapter, String semanticHint, int index, boolean persisted) {
44
		if (semanticHint == null) {
45
			semanticHint = UMLVisualIDRegistry.getType(org.eclipse.uml2.diagram.component.edit.parts.ComponentEditPart.VISUAL_ID);
46
			view.setType(semanticHint);
47
		}
48
		super.decorateView(containerView, view, semanticAdapter, semanticHint, index, persisted);
49
		if (!PackageEditPart.MODEL_ID.equals(UMLVisualIDRegistry.getModelID(containerView))) {
50
			EAnnotation shortcutAnnotation = EcoreFactory.eINSTANCE.createEAnnotation();
51
			shortcutAnnotation.setSource("Shortcut"); //$NON-NLS-1$
52
			shortcutAnnotation.getDetails().put("modelID", PackageEditPart.MODEL_ID); //$NON-NLS-1$
53
			view.getEAnnotations().add(shortcutAnnotation);
54
		}
55
		getViewService().createNode(semanticAdapter, view, UMLVisualIDRegistry.getType(ComponentName2EditPart.VISUAL_ID), ViewUtil.APPEND, true, getPreferencesHint());
56
		getViewService().createNode(semanticAdapter, view, UMLVisualIDRegistry.getType(ComponentContentsEditPart.VISUAL_ID), ViewUtil.APPEND, true, getPreferencesHint());
57
	}
58
59
}
(-)src/org/eclipse/uml2/diagram/component/edit/helpers/InterfaceRealizationEditHelper.java (+7 lines)
Added Link Here
1
package org.eclipse.uml2.diagram.component.edit.helpers;
2
3
/**
4
 * @generated
5
 */
6
public class InterfaceRealizationEditHelper extends UMLBaseEditHelper {
7
}
(-)plugin.properties (+19 lines)
Added Link Here
1
pluginName=UML Plugin
2
providerName=Sample Plugin Provider, Inc
3
4
editorName=UMLComponent Diagram Editor
5
newWizardName=UMLComponent Diagram
6
newWizardDesc=Creates UMLComponent diagram.
7
8
initDiagramActionLabel=Initialize umlcomponent_diagram diagram file
9
loadResourceActionLabel=Load Resource...
10
11
navigatorContentName=*.umlcomponent_diagram diagram contents
12
###
13
# Property Sheet
14
15
tab.appearance=Appearance
16
tab.diagram=Rulers & Grid
17
tab.domain=Core
18
###
19
	
(-)icons/linkSourceNavigatorGroup.gif (+5 lines)
Added Link Here
1
GIF89aÕÿÿ­r/‚GøØˆžf'øÐxøà˜øÐ€f>2èÆ”øè°èЈøðÈÿÿÿË6úöºøà øØ?Œ]Føè˜Ò«€üößãϹ´2àÀx­r+ðØ?¥l$yO@ž_­l$?R¼2ï߯¼…2Å6!ù,s@€pH,?È#âèh:‚¨T0ô4®
2
‹à‘?p©€Ñd¢Y`B‚¡‹p8G AØ%‚%HÁçW¶	_B†‰Š‹?’“’š??–B¥¦¥ B­®­©C³´µI·¸FA;Content-Type: image/gif
3
4
GIF89aÕÿÿ­r/‚GøØˆžf'øÐxøà˜øÐ€f>2èÆ”øè°èЈøðÈÿÿÿË6úöºøà øØ?Œ]Føè˜Ò«€üößãϹ´2àÀx­r+ðØ?¥l$yO@ž_­l$?R¼2ï߯¼…2Å6!ù,s@€pH,?È#âèh:‚¨T0ô4®
5
‹à‘?p©€Ñd¢Y`B‚¡‹p8G AØ%‚%HÁçW¶	_B†‰Š‹?’“’š??–B¥¦¥ B­®­©C³´µI·¸FA;
(-)src/org/eclipse/uml2/diagram/component/part/UMLPaletteFactory.java (+242 lines)
Added Link Here
1
package org.eclipse.uml2.diagram.component.part;
2
3
import java.util.List;
4
import org.eclipse.gef.Tool;
5
import org.eclipse.gef.palette.PaletteContainer;
6
import org.eclipse.gef.palette.PaletteRoot;
7
import org.eclipse.gef.palette.ToolEntry;
8
import org.eclipse.jface.resource.ImageDescriptor;
9
import java.util.ArrayList;
10
11
import org.eclipse.gef.palette.PaletteGroup;
12
13
import org.eclipse.gmf.runtime.diagram.ui.tools.UnspecifiedTypeConnectionTool;
14
import org.eclipse.gmf.runtime.diagram.ui.tools.UnspecifiedTypeCreationTool;
15
16
import org.eclipse.uml2.diagram.component.providers.UMLElementTypes;
17
18
/**
19
 * @generated
20
 */
21
public class UMLPaletteFactory {
22
23
	/**
24
	 * @generated
25
	 */
26
	public void fillPalette(PaletteRoot paletteRoot) {
27
		paletteRoot.add(createNodes1Group());
28
		paletteRoot.add(createLinks2Group());
29
	}
30
31
	/**
32
	 * @generated
33
	 */
34
	private PaletteContainer createNodes1Group() {
35
		PaletteContainer paletteContainer = new PaletteGroup("Nodes");
36
		paletteContainer.setDescription("Diagram Nodes");
37
		paletteContainer.add(createComponent1CreationTool());
38
		paletteContainer.add(createArtifact2CreationTool());
39
		paletteContainer.add(createInterface3CreationTool());
40
		paletteContainer.add(createPort4CreationTool());
41
		paletteContainer.add(createClass5CreationTool());
42
		return paletteContainer;
43
	}
44
45
	/**
46
	 * @generated
47
	 */
48
	private PaletteContainer createLinks2Group() {
49
		PaletteContainer paletteContainer = new PaletteGroup("Links");
50
		paletteContainer.setDescription("Diagram Links");
51
		paletteContainer.add(createProvidedInterface1CreationTool());
52
		paletteContainer.add(createRequiredInterface2CreationTool());
53
		return paletteContainer;
54
	}
55
56
	/**
57
	 * @generated
58
	 */
59
	private ToolEntry createComponent1CreationTool() {
60
		ImageDescriptor smallImage;
61
		ImageDescriptor largeImage;
62
63
		smallImage = UMLElementTypes.getImageDescriptor(UMLElementTypes.Component_2001);
64
65
		largeImage = smallImage;
66
67
		final List elementTypes = new ArrayList();
68
		elementTypes.add(UMLElementTypes.Component_2001);
69
		elementTypes.add(UMLElementTypes.Component_3001);
70
		ToolEntry result = new NodeToolEntry("Component", "Create Component", smallImage, largeImage, elementTypes);
71
72
		return result;
73
	}
74
75
	/**
76
	 * @generated
77
	 */
78
	private ToolEntry createArtifact2CreationTool() {
79
		ImageDescriptor smallImage;
80
		ImageDescriptor largeImage;
81
82
		smallImage = UMLElementTypes.getImageDescriptor(UMLElementTypes.Artifact_3003);
83
84
		largeImage = smallImage;
85
86
		final List elementTypes = new ArrayList();
87
		elementTypes.add(UMLElementTypes.Artifact_3003);
88
		elementTypes.add(UMLElementTypes.Artifact_2002);
89
		ToolEntry result = new NodeToolEntry("Artifact", "Create Artifact", smallImage, largeImage, elementTypes);
90
91
		return result;
92
	}
93
94
	/**
95
	 * @generated
96
	 */
97
	private ToolEntry createInterface3CreationTool() {
98
		ImageDescriptor smallImage;
99
		ImageDescriptor largeImage;
100
101
		smallImage = UMLElementTypes.getImageDescriptor(UMLElementTypes.Interface_3005);
102
103
		largeImage = smallImage;
104
105
		final List elementTypes = new ArrayList();
106
		elementTypes.add(UMLElementTypes.Interface_3005);
107
		elementTypes.add(UMLElementTypes.Interface_2003);
108
		ToolEntry result = new NodeToolEntry("Interface", "Create Component Interface", smallImage, largeImage, elementTypes);
109
110
		return result;
111
	}
112
113
	/**
114
	 * @generated
115
	 */
116
	private ToolEntry createPort4CreationTool() {
117
		ImageDescriptor smallImage;
118
		ImageDescriptor largeImage;
119
120
		smallImage = UMLElementTypes.getImageDescriptor(UMLElementTypes.Port_3002);
121
122
		largeImage = smallImage;
123
124
		final List elementTypes = new ArrayList();
125
		elementTypes.add(UMLElementTypes.Port_3002);
126
		ToolEntry result = new NodeToolEntry("Port", "Create Port", smallImage, largeImage, elementTypes);
127
128
		return result;
129
	}
130
131
	/**
132
	 * @generated
133
	 */
134
	private ToolEntry createClass5CreationTool() {
135
		ImageDescriptor smallImage;
136
		ImageDescriptor largeImage;
137
138
		smallImage = UMLElementTypes.getImageDescriptor(UMLElementTypes.Class_3004);
139
140
		largeImage = smallImage;
141
142
		final List elementTypes = new ArrayList();
143
		elementTypes.add(UMLElementTypes.Class_3004);
144
		elementTypes.add(UMLElementTypes.Class_2004);
145
		ToolEntry result = new NodeToolEntry("Class", "Create Class", smallImage, largeImage, elementTypes);
146
147
		return result;
148
	}
149
150
	/**
151
	 * @generated
152
	 */
153
	private ToolEntry createProvidedInterface1CreationTool() {
154
		ImageDescriptor smallImage;
155
		ImageDescriptor largeImage;
156
157
		smallImage = UMLElementTypes.getImageDescriptor(UMLElementTypes.InterfaceRealization_4001);
158
159
		largeImage = smallImage;
160
161
		final List relationshipTypes = new ArrayList();
162
		relationshipTypes.add(UMLElementTypes.InterfaceRealization_4001);
163
		relationshipTypes.add(UMLElementTypes.PortProvided_4006);
164
		ToolEntry result = new LinkToolEntry("Provided Interface", "Create Provided Interface", smallImage, largeImage, relationshipTypes);
165
166
		return result;
167
	}
168
169
	/**
170
	 * @generated
171
	 */
172
	private ToolEntry createRequiredInterface2CreationTool() {
173
		ImageDescriptor smallImage;
174
		ImageDescriptor largeImage;
175
176
		smallImage = UMLElementTypes.getImageDescriptor(UMLElementTypes.PortRequired_4004);
177
178
		largeImage = smallImage;
179
180
		final List relationshipTypes = new ArrayList();
181
		relationshipTypes.add(UMLElementTypes.PortRequired_4004);
182
		ToolEntry result = new LinkToolEntry("Required Interface", "Create Required Interface", smallImage, largeImage, relationshipTypes);
183
184
		return result;
185
	}
186
187
	/**
188
	 * @generated
189
	 */
190
	private static class NodeToolEntry extends ToolEntry {
191
192
		/**
193
		 * @generated
194
		 */
195
		private final List elementTypes;
196
197
		/**
198
		 * @generated
199
		 */
200
		private NodeToolEntry(String title, String description, ImageDescriptor smallIcon, ImageDescriptor largeIcon, List elementTypes) {
201
			super(title, description, smallIcon, largeIcon);
202
			this.elementTypes = elementTypes;
203
		}
204
205
		/**
206
		 * @generated
207
		 */
208
		public Tool createTool() {
209
			Tool tool = new UnspecifiedTypeCreationTool(elementTypes);
210
			tool.setProperties(getToolProperties());
211
			return tool;
212
		}
213
	}
214
215
	/**
216
	 * @generated
217
	 */
218
	private static class LinkToolEntry extends ToolEntry {
219
220
		/**
221
		 * @generated
222
		 */
223
		private final List relationshipTypes;
224
225
		/**
226
		 * @generated
227
		 */
228
		private LinkToolEntry(String title, String description, ImageDescriptor smallIcon, ImageDescriptor largeIcon, List relationshipTypes) {
229
			super(title, description, smallIcon, largeIcon);
230
			this.relationshipTypes = relationshipTypes;
231
		}
232
233
		/**
234
		 * @generated
235
		 */
236
		public Tool createTool() {
237
			Tool tool = new UnspecifiedTypeConnectionTool(relationshipTypes);
238
			tool.setProperties(getToolProperties());
239
			return tool;
240
		}
241
	}
242
}
(-)src/org/eclipse/uml2/diagram/component/edit/policies/ClassItemSemanticEditPolicy.java (+120 lines)
Added Link Here
1
package org.eclipse.uml2.diagram.component.edit.policies;
2
3
import org.eclipse.gef.commands.Command;
4
import org.eclipse.gmf.runtime.emf.type.core.commands.DestroyElementCommand;
5
import org.eclipse.gmf.runtime.emf.type.core.requests.CreateRelationshipRequest;
6
import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest;
7
import org.eclipse.emf.ecore.EObject;
8
import org.eclipse.emf.ecore.EAnnotation;
9
import org.eclipse.gmf.runtime.notation.View;
10
import org.eclipse.emf.ecore.EClass;
11
12
import org.eclipse.gef.commands.UnexecutableCommand;
13
14
import org.eclipse.gmf.runtime.emf.type.core.commands.CreateElementCommand;
15
16
import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;
17
18
import org.eclipse.uml2.diagram.component.providers.UMLElementTypes;
19
import org.eclipse.uml2.uml.Port;
20
import org.eclipse.uml2.uml.UMLPackage;
21
22
/**
23
 * @generated
24
 */
25
public class ClassItemSemanticEditPolicy extends UMLBaseItemSemanticEditPolicy {
26
27
	/**
28
	 * @generated
29
	 */
30
	protected Command getCreateCommand(CreateElementRequest req) {
31
		if (UMLElementTypes.Port_3002 == req.getElementType()) {
32
			if (req.getContainmentFeature() == null) {
33
				req.setContainmentFeature(UMLPackage.eINSTANCE.getStructuredClassifier_OwnedAttribute());
34
			}
35
			return getMSLWrapper(new CreatePort_3002Command(req));
36
		}
37
		return super.getCreateCommand(req);
38
	}
39
40
	/**
41
	 * @generated
42
	 */
43
	private static class CreatePort_3002Command extends CreateElementCommand {
44
45
		/**
46
		 * @generated
47
		 */
48
		public CreatePort_3002Command(CreateElementRequest req) {
49
			super(req);
50
		}
51
52
		/**
53
		 * @generated
54
		 */
55
		protected EClass getEClassToEdit() {
56
			return UMLPackage.eINSTANCE.getClass_();
57
		};
58
59
		/**
60
		 * @generated
61
		 */
62
		protected EObject getElementToEdit() {
63
			EObject container = ((CreateElementRequest) getRequest()).getContainer();
64
			if (container instanceof View) {
65
				container = ((View) container).getElement();
66
			}
67
			return container;
68
		}
69
70
		/**
71
		 * @generated
72
		 */
73
		protected EObject doDefaultElementCreation() {
74
			Port newElement = (Port) super.doDefaultElementCreation();
75
			if (newElement != null) {
76
				UMLElementTypes.Initializers.Port_3002.init(newElement);
77
			}
78
			return newElement;
79
		}
80
	}
81
82
	/**
83
	 * @generated
84
	 */
85
	protected Command getDestroyElementCommand(DestroyElementRequest req) {
86
		return getMSLWrapper(new DestroyElementCommand(req) {
87
88
			protected EObject getElementToDestroy() {
89
				View view = (View) getHost().getModel();
90
				EAnnotation annotation = view.getEAnnotation("Shortcut"); //$NON-NLS-1$
91
				if (annotation != null) {
92
					return view;
93
				}
94
				return super.getElementToDestroy();
95
			}
96
97
		});
98
	}
99
100
	/**
101
	 * @generated
102
	 */
103
	protected Command getCreateRelationshipCommand(CreateRelationshipRequest req) {
104
		if (UMLElementTypes.InterfaceRealization_4001 == req.getElementType()) {
105
			return req.getTarget() == null ? getCreateStartOutgoingInterfaceRealization4001Command(req) : null;
106
		}
107
		return super.getCreateRelationshipCommand(req);
108
	}
109
110
	/**
111
	 * @generated
112
	 */
113
	protected Command getCreateStartOutgoingInterfaceRealization4001Command(CreateRelationshipRequest req) {
114
		if (!UMLBaseItemSemanticEditPolicy.LinkConstraints.InterfaceRealization_4001.canCreateLink(req, false)) {
115
			return UnexecutableCommand.INSTANCE;
116
		}
117
		return new Command() {
118
		};
119
	}
120
}
(-)icons/outgoingLinksNavigatorGroup.gif (+5 lines)
Added Link Here
1
GIF89aÕÿÿ­r/‚GøØˆžf'øÐxøà˜øÐ€f>2èÆ”øè°èЈøðÈÿÿÿË6úöºøà øØ?Œ]Føè˜Ò«€üößãϹ´2àÀx­r+ðØ?¥l$yO@ž_­l$?R¼2ï߯¼…2Å6!ù,s@€pH,?È#âèh:‚¨T0ô4®
2
‹à‘?p©€Ñd¢Y`B‚¡‹p8G AØ%‚%HÁçW¶	_B†‰Š‹?’“’š??–B¥¦¥ B­®­©C³´µI·¸FA;Content-Type: image/gif
3
4
GIF89aÕÿÿ­r/‚GøØˆžf'øÐxøà˜øÐ€f>2èÆ”øè°èЈøðÈÿÿÿË6úöºøà øØ?Œ]Føè˜Ò«€üößãϹ´2àÀx­r+ðØ?¥l$yO@ž_­l$?R¼2ï߯¼…2Å6!ù,s@€pH,?È#âèh:‚¨T0ô4®
5
‹à‘?p©€Ñd¢Y`B‚¡‹p8G AØ%‚%HÁçW¶	_B†‰Š‹?’“’š??–B¥¦¥ B­®­©C³´µI·¸FA;
(-)src/org/eclipse/uml2/diagram/component/sheet/UMLSheetLabelProvider.java (+80 lines)
Added Link Here
1
package org.eclipse.uml2.diagram.component.sheet;
2
3
import org.eclipse.gef.EditPart;
4
import org.eclipse.gmf.runtime.notation.View;
5
import org.eclipse.jface.viewers.IStructuredSelection;
6
import org.eclipse.swt.graphics.Image;
7
import org.eclipse.uml2.diagram.component.navigator.UMLNavigatorGroup;
8
import org.eclipse.uml2.diagram.component.part.UMLDiagramEditorPlugin;
9
import org.eclipse.core.runtime.IAdaptable;
10
11
import org.eclipse.emf.edit.ui.provider.AdapterFactoryLabelProvider;
12
13
import org.eclipse.jface.viewers.DecoratingLabelProvider;
14
15
/**
16
 * @generated
17
 */
18
public class UMLSheetLabelProvider extends DecoratingLabelProvider {
19
20
	/**
21
	 * @generated
22
	 */
23
	public UMLSheetLabelProvider() {
24
		super(new AdapterFactoryLabelProvider(UMLDiagramEditorPlugin.getInstance().getItemProvidersAdapterFactory()), null);
25
	}
26
27
	/**
28
	 * @generated
29
	 */
30
	public String getText(Object element) {
31
		Object selected = unwrap(element);
32
		if (selected instanceof UMLNavigatorGroup) {
33
			return ((UMLNavigatorGroup) selected).getGroupName();
34
		}
35
		return super.getText(selected);
36
	}
37
38
	/**
39
	 * @generated
40
	 */
41
	public Image getImage(Object element) {
42
		return super.getImage(unwrap(element));
43
	}
44
45
	/**
46
	 * @generated
47
	 */
48
	private Object unwrap(Object element) {
49
		if (element instanceof IStructuredSelection) {
50
			return unwrap(((IStructuredSelection) element).getFirstElement());
51
		}
52
		if (element instanceof EditPart) {
53
			return unwrapEditPart((EditPart) element);
54
		}
55
		if (element instanceof IAdaptable) {
56
			View view = (View) ((IAdaptable) element).getAdapter(View.class);
57
			if (view != null) {
58
				return unwrapView(view);
59
			}
60
		}
61
		return element;
62
	}
63
64
	/**
65
	 * @generated
66
	 */
67
	private Object unwrapEditPart(EditPart p) {
68
		if (p.getModel() instanceof View) {
69
			return unwrapView((View) p.getModel());
70
		}
71
		return p.getModel();
72
	}
73
74
	/**
75
	 * @generated
76
	 */
77
	private Object unwrapView(View view) {
78
		return view.getElement() == null ? view : view.getElement();
79
	}
80
}
(-)src/org/eclipse/uml2/diagram/component/edit/parts/ClassEditPart.java (+304 lines)
Added Link Here
1
package org.eclipse.uml2.diagram.component.edit.parts;
2
3
import org.eclipse.draw2d.IFigure;
4
import org.eclipse.draw2d.PositionConstants;
5
import org.eclipse.draw2d.StackLayout;
6
7
import org.eclipse.gef.EditPart;
8
import org.eclipse.gef.EditPolicy;
9
import org.eclipse.gef.Request;
10
11
import org.eclipse.gef.commands.Command;
12
13
import org.eclipse.gef.editpolicies.LayoutEditPolicy;
14
import org.eclipse.gef.editpolicies.NonResizableEditPolicy;
15
16
import org.eclipse.gef.requests.CreateRequest;
17
18
import org.eclipse.gmf.runtime.diagram.ui.editparts.AbstractBorderedShapeEditPart;
19
import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;
20
21
import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy;
22
import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy;
23
import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;
24
25
import org.eclipse.gmf.runtime.diagram.ui.figures.BorderItemLocator;
26
27
import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout;
28
29
import org.eclipse.gmf.runtime.gef.ui.figures.DefaultSizeNodeFigure;
30
import org.eclipse.gmf.runtime.gef.ui.figures.NodeFigure;
31
32
import org.eclipse.gmf.runtime.notation.View;
33
34
import org.eclipse.uml2.diagram.component.edit.policies.ClassCanonicalEditPolicy;
35
import org.eclipse.uml2.diagram.component.edit.policies.ClassItemSemanticEditPolicy;
36
import org.eclipse.uml2.diagram.component.part.UMLVisualIDRegistry;
37
38
/**
39
 * @generated
40
 */
41
public class ClassEditPart extends AbstractBorderedShapeEditPart {
42
43
	/**
44
	 * @generated
45
	 */
46
	public static final int VISUAL_ID = 3004;
47
48
	/**
49
	 * @generated
50
	 */
51
	protected IFigure contentPane;
52
53
	/**
54
	 * @generated
55
	 */
56
	protected IFigure primaryShape;
57
58
	/**
59
	 * @generated
60
	 */
61
	public ClassEditPart(View view) {
62
		super(view);
63
	}
64
65
	/**
66
	 * @generated
67
	 */
68
	protected void createDefaultEditPolicies() {
69
		installEditPolicy(EditPolicyRoles.CREATION_ROLE, new CreationEditPolicy());
70
		super.createDefaultEditPolicies();
71
		installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE, new ClassItemSemanticEditPolicy());
72
		installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE, new DragDropEditPolicy());
73
		installEditPolicy(EditPolicyRoles.CANONICAL_ROLE, new ClassCanonicalEditPolicy());
74
		installEditPolicy(EditPolicy.LAYOUT_ROLE, createLayoutEditPolicy());
75
76
	}
77
78
	/**
79
	 * @generated
80
	 */
81
	protected LayoutEditPolicy createLayoutEditPolicy() {
82
		LayoutEditPolicy lep = new LayoutEditPolicy() {
83
84
			protected EditPolicy createChildEditPolicy(EditPart child) {
85
				EditPolicy result = child.getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);
86
				if (result == null) {
87
					result = new NonResizableEditPolicy();
88
				}
89
				return result;
90
			}
91
92
			protected Command getMoveChildrenCommand(Request request) {
93
				return null;
94
			}
95
96
			protected Command getCreateCommand(CreateRequest request) {
97
				return null;
98
			}
99
		};
100
		return lep;
101
	}
102
103
	/**
104
	 * @generated
105
	 */
106
	protected IFigure createNodeShape() {
107
		ComponentClassFigure figure = new ComponentClassFigure();
108
		return primaryShape = figure;
109
	}
110
111
	/**
112
	 * @generated
113
	 */
114
	public ComponentClassFigure getPrimaryShape() {
115
		return (ComponentClassFigure) primaryShape;
116
	}
117
118
	/**
119
	 * @generated 
120
	 */
121
	protected IFigure getContentPaneFor(IGraphicalEditPart editPart) {
122
		if (editPart instanceof PortEditPart) {
123
			return getBorderedFigure().getBorderItemContainer();
124
		}
125
126
		return super.getContentPaneFor(editPart);
127
	}
128
129
	/**
130
	 * @generated
131
	 */
132
	protected boolean addFixedChild(EditPart childEditPart) {
133
		if (childEditPart instanceof ClassNameEditPart) {
134
			((ClassNameEditPart) childEditPart).setLabel(getPrimaryShape().getFigureComponentClassFigure_name());
135
			return true;
136
		}
137
		if (childEditPart instanceof PortEditPart) {
138
			BorderItemLocator locator = new BorderItemLocator(getMainFigure(), PositionConstants.NONE);
139
			getBorderedFigure().getBorderItemContainer().add(((PortEditPart) childEditPart).getFigure(), locator);
140
			return true;
141
		}
142
		return false;
143
	}
144
145
	/**
146
	 * @generated
147
	 */
148
	protected boolean removeFixedChild(EditPart childEditPart) {
149
		if (childEditPart instanceof PortEditPart) {
150
			getBorderedFigure().getBorderItemContainer().remove(((PortEditPart) childEditPart).getFigure());
151
			return true;
152
		}
153
		return false;
154
	}
155
156
	/**
157
	 * @generated
158
	 */
159
	protected NodeFigure createNodePlate() {
160
		DefaultSizeNodeFigure result = new DefaultSizeNodeFigure(getMapMode().DPtoLP(80), getMapMode().DPtoLP(60));
161
		return result;
162
	}
163
164
	/**
165
	 * Creates figure for this edit part.
166
	 * 
167
	 * Body of this method does not depend on settings in generation model
168
	 * so you may safely remove <i>generated</i> tag and modify it.
169
	 * 
170
	 * @generated
171
	 */
172
	protected NodeFigure createMainFigure() {
173
		NodeFigure figure = createNodePlate();
174
		figure.setLayoutManager(new StackLayout());
175
		IFigure shape = createNodeShape();
176
		figure.add(shape);
177
		contentPane = setupContentPane(shape);
178
		return figure;
179
	}
180
181
	/**
182
	 * Default implementation treats passed figure as content pane.
183
	 * Respects layout one may have set for generated figure.
184
	 * @param nodeShape instance of generated figure class
185
	 * @generated
186
	 */
187
	protected IFigure setupContentPane(IFigure nodeShape) {
188
		if (nodeShape.getLayoutManager() == null) {
189
			ConstrainedToolbarLayout layout = new ConstrainedToolbarLayout();
190
			layout.setSpacing(getMapMode().DPtoLP(5));
191
			nodeShape.setLayoutManager(layout);
192
		}
193
		return nodeShape; // use nodeShape itself as contentPane
194
	}
195
196
	/**
197
	 * @generated
198
	 */
199
	public IFigure getContentPane() {
200
		if (contentPane != null) {
201
			return contentPane;
202
		}
203
		return super.getContentPane();
204
	}
205
206
	/**
207
	 * @generated
208
	 */
209
	public EditPart getPrimaryChildEditPart() {
210
		return getChildBySemanticHint(UMLVisualIDRegistry.getType(ClassNameEditPart.VISUAL_ID));
211
	}
212
213
	/**
214
	 * @generated
215
	 */
216
	protected void addChildVisual(EditPart childEditPart, int index) {
217
		if (addFixedChild(childEditPart)) {
218
			return;
219
		}
220
		super.addChildVisual(childEditPart, -1);
221
	}
222
223
	/**
224
	 * @generated
225
	 */
226
	protected void removeChildVisual(EditPart childEditPart) {
227
		if (removeFixedChild(childEditPart)) {
228
			return;
229
		}
230
		super.removeChildVisual(childEditPart);
231
	}
232
233
	/**
234
	 * @generated
235
	 */
236
	public class ComponentClassFigure extends org.eclipse.draw2d.RectangleFigure {
237
238
		/**
239
		 * @generated
240
		 */
241
		public ComponentClassFigure() {
242
243
			org.eclipse.uml2.diagram.common.draw2d.CenterLayout myGenLayoutManager = new org.eclipse.uml2.diagram.common.draw2d.CenterLayout();
244
245
			this.setLayoutManager(myGenLayoutManager);
246
247
			createContents();
248
		}
249
250
		/**
251
		 * @generated
252
		 */
253
		private void createContents() {
254
			org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel fig_0 = new org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel();
255
			fig_0.setText("");
256
257
			setFigureComponentClassFigure_name(fig_0);
258
259
			Object layData0 = null;
260
261
			this.add(fig_0, layData0);
262
		}
263
264
		/**
265
		 * @generated
266
		 */
267
		private org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel fComponentClassFigure_name;
268
269
		/**
270
		 * @generated
271
		 */
272
		public org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel getFigureComponentClassFigure_name() {
273
			return fComponentClassFigure_name;
274
		}
275
276
		/**
277
		 * @generated
278
		 */
279
		private void setFigureComponentClassFigure_name(org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel fig) {
280
			fComponentClassFigure_name = fig;
281
		}
282
283
		/**
284
		 * @generated
285
		 */
286
		private boolean myUseLocalCoordinates = false;
287
288
		/**
289
		 * @generated
290
		 */
291
		protected boolean useLocalCoordinates() {
292
			return myUseLocalCoordinates;
293
		}
294
295
		/**
296
		 * @generated
297
		 */
298
		protected void setUseLocalCoordinates(boolean useLocalCoordinates) {
299
			myUseLocalCoordinates = useLocalCoordinates;
300
		}
301
302
	}
303
304
}
(-)plugin.xml (+548 lines)
Added Link Here
1
<?xml version="1.0" encoding="UTF-8"?>
2
<?eclipse version="3.0"?>
3
4
<plugin>
5
6
<!-- gmf generator persistent region begin -->
7
<!-- gmf generator persistent region end -->
8
9
   <extension point="org.eclipse.core.runtime.preferences">
10
      <initializer class="org.eclipse.uml2.diagram.component.part.UMLDiagramPreferenceInitializer"/>
11
   </extension>
12
13
   <extension point="org.eclipse.team.core.fileTypes">
14
      <fileTypes
15
         type="text"
16
         extension="umlcomponent_diagram">
17
      </fileTypes>
18
   </extension>
19
20
   <extension point="org.eclipse.emf.ecore.extension_parser">
21
      <parser
22
         type="umlcomponent_diagram"
23
         class="org.eclipse.gmf.runtime.emf.core.resources.GMFResourceFactory">
24
      </parser>
25
   </extension>
26
27
   <extension point="org.eclipse.ui.editors">
28
     <editor
29
        id="org.eclipse.uml2.diagram.component.part.UMLDiagramEditorID"
30
        name="%editorName"
31
        icon="icons/obj16/UMLDiagramFile.gif"
32
        extensions="umlcomponent_diagram"
33
        default="true"
34
        class="org.eclipse.uml2.diagram.component.part.UMLDiagramEditor"
35
        matchingStrategy="org.eclipse.uml2.diagram.component.part.UMLMatchingStrategy"
36
        contributorClass="org.eclipse.uml2.diagram.component.part.UMLDiagramActionBarContributor">
37
     </editor>
38
   </extension>
39
40
   <extension point="org.eclipse.ui.newWizards">
41
  	  <wizard
42
  	     name="%newWizardName"
43
  	     icon="icons/obj16/UMLDiagramFile.gif"
44
  	     category="org.eclipse.ui.Examples"
45
  	     class="org.eclipse.uml2.diagram.component.part.UMLCreationWizard"
46
  	     id="org.eclipse.uml2.diagram.component.part.UMLCreationWizardID">
47
  	  	 <description>%newWizardDesc</description>  
48
      </wizard>
49
   </extension>
50
51
   <extension point="org.eclipse.ui.popupMenus">
52
      <objectContribution
53
            id="org.eclipse.uml2.diagram.component.ui.objectContribution.IFile1"
54
            nameFilter="*.uml"
55
            objectClass="org.eclipse.core.resources.IFile">
56
         <action
57
               label="%initDiagramActionLabel"
58
               class="org.eclipse.uml2.diagram.component.part.UMLInitDiagramFileAction"
59
               menubarPath="additions"
60
               enablesFor="1"
61
               id="org.eclipse.uml2.diagram.component.part.UMLInitDiagramFileActionID">
62
         </action>
63
      </objectContribution>  
64
      <objectContribution
65
            adaptable="false"
66
            id="org.eclipse.uml2.diagram.component.ui.objectContribution.PackageEditPart2"
67
            objectClass="org.eclipse.uml2.diagram.component.edit.parts.PackageEditPart">
68
         <action
69
               class="org.eclipse.uml2.diagram.component.part.UMLLoadResourceAction"
70
               enablesFor="1"
71
               id="org.eclipse.uml2.diagram.component.part.UMLLoadResourceActionID"
72
               label="%loadResourceActionLabel"
73
               menubarPath="additions">
74
         </action>
75
      </objectContribution>                      
76
  </extension>
77
78
   <extension point="org.eclipse.gmf.runtime.common.ui.services.action.contributionItemProviders">
79
      <contributionItemProvider
80
            class="org.eclipse.gmf.runtime.diagram.ui.providers.DiagramContributionItemProvider"
81
            checkPluginLoaded="false">
82
         <Priority name="Low"/>
83
         <popupContribution class="org.eclipse.gmf.runtime.diagram.ui.providers.DiagramContextMenuProvider">
84
            <popupStructuredContributionCriteria objectClass="org.eclipse.uml2.diagram.component.edit.parts.Component2EditPart"/>
85
            <popupPredefinedItem id="deleteFromDiagramAction" remove="true"/>
86
         </popupContribution>
87
         <popupContribution class="org.eclipse.gmf.runtime.diagram.ui.providers.DiagramContextMenuProvider">
88
            <popupStructuredContributionCriteria objectClass="org.eclipse.uml2.diagram.component.edit.parts.ComponentNameEditPart"/>
89
            <popupPredefinedItem id="deleteFromDiagramAction" remove="true"/>
90
         </popupContribution>
91
         <popupContribution class="org.eclipse.gmf.runtime.diagram.ui.providers.DiagramContextMenuProvider">
92
            <popupStructuredContributionCriteria objectClass="org.eclipse.uml2.diagram.component.edit.parts.PortEditPart"/>
93
            <popupPredefinedItem id="deleteFromDiagramAction" remove="true"/>
94
         </popupContribution>
95
         <popupContribution class="org.eclipse.gmf.runtime.diagram.ui.providers.DiagramContextMenuProvider">
96
            <popupStructuredContributionCriteria objectClass="org.eclipse.uml2.diagram.component.edit.parts.PortNameEditPart"/>
97
            <popupPredefinedItem id="deleteFromDiagramAction" remove="true"/>
98
            <popupPredefinedItem id="deleteFromModelAction" remove="true"/>
99
         </popupContribution>
100
         <popupContribution class="org.eclipse.gmf.runtime.diagram.ui.providers.DiagramContextMenuProvider">
101
            <popupStructuredContributionCriteria objectClass="org.eclipse.uml2.diagram.component.edit.parts.ArtifactEditPart"/>
102
            <popupPredefinedItem id="deleteFromDiagramAction" remove="true"/>
103
         </popupContribution>
104
         <popupContribution class="org.eclipse.gmf.runtime.diagram.ui.providers.DiagramContextMenuProvider">
105
            <popupStructuredContributionCriteria objectClass="org.eclipse.uml2.diagram.component.edit.parts.ArtifactNameEditPart"/>
106
            <popupPredefinedItem id="deleteFromDiagramAction" remove="true"/>
107
         </popupContribution>
108
         <popupContribution class="org.eclipse.gmf.runtime.diagram.ui.providers.DiagramContextMenuProvider">
109
            <popupStructuredContributionCriteria objectClass="org.eclipse.uml2.diagram.component.edit.parts.ClassEditPart"/>
110
            <popupPredefinedItem id="deleteFromDiagramAction" remove="true"/>
111
         </popupContribution>
112
         <popupContribution class="org.eclipse.gmf.runtime.diagram.ui.providers.DiagramContextMenuProvider">
113
            <popupStructuredContributionCriteria objectClass="org.eclipse.uml2.diagram.component.edit.parts.ClassNameEditPart"/>
114
            <popupPredefinedItem id="deleteFromDiagramAction" remove="true"/>
115
         </popupContribution>
116
         <popupContribution class="org.eclipse.gmf.runtime.diagram.ui.providers.DiagramContextMenuProvider">
117
            <popupStructuredContributionCriteria objectClass="org.eclipse.uml2.diagram.component.edit.parts.InterfaceEditPart"/>
118
            <popupPredefinedItem id="deleteFromDiagramAction" remove="true"/>
119
         </popupContribution>
120
         <popupContribution class="org.eclipse.gmf.runtime.diagram.ui.providers.DiagramContextMenuProvider">
121
            <popupStructuredContributionCriteria objectClass="org.eclipse.uml2.diagram.component.edit.parts.InterfaceNameEditPart"/>
122
            <popupPredefinedItem id="deleteFromDiagramAction" remove="true"/>
123
            <popupPredefinedItem id="deleteFromModelAction" remove="true"/>
124
         </popupContribution>
125
         <popupContribution class="org.eclipse.gmf.runtime.diagram.ui.providers.DiagramContextMenuProvider">
126
            <popupStructuredContributionCriteria objectClass="org.eclipse.uml2.diagram.component.edit.parts.ComponentEditPart"/>
127
            <popupPredefinedItem id="deleteFromDiagramAction" remove="true"/>
128
         </popupContribution>
129
         <popupContribution class="org.eclipse.gmf.runtime.diagram.ui.providers.DiagramContextMenuProvider">
130
            <popupStructuredContributionCriteria objectClass="org.eclipse.uml2.diagram.component.edit.parts.ComponentName2EditPart"/>
131
            <popupPredefinedItem id="deleteFromDiagramAction" remove="true"/>
132
         </popupContribution>
133
         <popupContribution class="org.eclipse.gmf.runtime.diagram.ui.providers.DiagramContextMenuProvider">
134
            <popupStructuredContributionCriteria objectClass="org.eclipse.uml2.diagram.component.edit.parts.Artifact2EditPart"/>
135
            <popupPredefinedItem id="deleteFromDiagramAction" remove="true"/>
136
         </popupContribution>
137
         <popupContribution class="org.eclipse.gmf.runtime.diagram.ui.providers.DiagramContextMenuProvider">
138
            <popupStructuredContributionCriteria objectClass="org.eclipse.uml2.diagram.component.edit.parts.ArtifactName2EditPart"/>
139
            <popupPredefinedItem id="deleteFromDiagramAction" remove="true"/>
140
         </popupContribution>
141
         <popupContribution class="org.eclipse.gmf.runtime.diagram.ui.providers.DiagramContextMenuProvider">
142
            <popupStructuredContributionCriteria objectClass="org.eclipse.uml2.diagram.component.edit.parts.Interface2EditPart"/>
143
            <popupPredefinedItem id="deleteFromDiagramAction" remove="true"/>
144
         </popupContribution>
145
         <popupContribution class="org.eclipse.gmf.runtime.diagram.ui.providers.DiagramContextMenuProvider">
146
            <popupStructuredContributionCriteria objectClass="org.eclipse.uml2.diagram.component.edit.parts.InterfaceName2EditPart"/>
147
            <popupPredefinedItem id="deleteFromDiagramAction" remove="true"/>
148
            <popupPredefinedItem id="deleteFromModelAction" remove="true"/>
149
         </popupContribution>
150
         <popupContribution class="org.eclipse.gmf.runtime.diagram.ui.providers.DiagramContextMenuProvider">
151
            <popupStructuredContributionCriteria objectClass="org.eclipse.uml2.diagram.component.edit.parts.Class2EditPart"/>
152
            <popupPredefinedItem id="deleteFromDiagramAction" remove="true"/>
153
         </popupContribution>
154
         <popupContribution class="org.eclipse.gmf.runtime.diagram.ui.providers.DiagramContextMenuProvider">
155
            <popupStructuredContributionCriteria objectClass="org.eclipse.uml2.diagram.component.edit.parts.ClassName2EditPart"/>
156
            <popupPredefinedItem id="deleteFromDiagramAction" remove="true"/>
157
         </popupContribution>
158
         <popupContribution class="org.eclipse.gmf.runtime.diagram.ui.providers.DiagramContextMenuProvider">
159
            <popupStructuredContributionCriteria objectClass="org.eclipse.uml2.diagram.component.edit.parts.InterfaceRealizationEditPart"/>
160
            <popupPredefinedItem id="deleteFromDiagramAction" remove="true"/>
161
         </popupContribution>
162
         <popupContribution class="org.eclipse.gmf.runtime.diagram.ui.providers.DiagramContextMenuProvider">
163
            <popupStructuredContributionCriteria objectClass="org.eclipse.uml2.diagram.component.edit.parts.PortProvidedEditPart"/>
164
            <popupAction path="/editGroup" id="deleteFromModelAction"/>
165
            <popupPredefinedItem id="deleteFromDiagramAction" remove="true"/>
166
         </popupContribution>
167
         <popupContribution class="org.eclipse.gmf.runtime.diagram.ui.providers.DiagramContextMenuProvider">
168
            <popupStructuredContributionCriteria objectClass="org.eclipse.uml2.diagram.component.edit.parts.PortRequiredEditPart"/>
169
            <popupAction path="/editGroup" id="deleteFromModelAction"/>
170
            <popupPredefinedItem id="deleteFromDiagramAction" remove="true"/>
171
         </popupContribution>
172
      </contributionItemProvider>
173
   </extension>
174
175
   <extension point="org.eclipse.gmf.runtime.common.ui.services.action.globalActionHandlerProviders">
176
      <GlobalActionHandlerProvider
177
         class="org.eclipse.gmf.runtime.diagram.ui.providers.DiagramGlobalActionHandlerProvider"
178
         id="UMLComponentPresentation">
179
         <Priority name="Lowest"/>
180
         <ViewId id="org.eclipse.uml2.diagram.component.part.UMLDiagramEditorID">
181
            <ElementType class="org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart">
182
               <GlobalActionId actionId="delete"/>
183
            </ElementType>
184
            <ElementType class="org.eclipse.gmf.runtime.diagram.ui.editparts.DiagramEditPart">
185
               <GlobalActionId actionId="save"/>
186
            </ElementType>
187
         </ViewId>
188
      </GlobalActionHandlerProvider>
189
      <GlobalActionHandlerProvider
190
         class="org.eclipse.gmf.runtime.diagram.ui.providers.ide.providers.DiagramIDEGlobalActionHandlerProvider"
191
         id="UMLComponentPresentationIDE">
192
         <Priority name="Lowest"/>
193
         <ViewId id="org.eclipse.uml2.diagram.component.part.UMLDiagramEditorID">
194
            <ElementType class="org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart">
195
               <GlobalActionId actionId="bookmark"/>
196
            </ElementType>
197
         </ViewId>
198
      </GlobalActionHandlerProvider>
199
      <GlobalActionHandlerProvider
200
            class="org.eclipse.gmf.runtime.diagram.ui.render.providers.DiagramUIRenderGlobalActionHandlerProvider"
201
            id="UMLComponentRender">
202
         <Priority name="Lowest"/>
203
         <ViewId id="org.eclipse.uml2.diagram.component.part.UMLDiagramEditorID">
204
            <ElementType class="org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart">
205
               <GlobalActionId actionId="cut"/>
206
               <GlobalActionId actionId="copy"/>
207
               <GlobalActionId actionId="paste"/>
208
            </ElementType>
209
         </ViewId>
210
      </GlobalActionHandlerProvider>
211
   </extension>
212
213
   <extension point="org.eclipse.gmf.runtime.diagram.core.viewProviders">
214
      <viewProvider class="org.eclipse.uml2.diagram.component.providers.UMLViewProvider">
215
         <Priority name="Lowest"/>
216
         <context viewClass="org.eclipse.gmf.runtime.notation.Diagram" semanticHints="UMLComponent"/>
217
         <context viewClass="org.eclipse.gmf.runtime.notation.Node" semanticHints=""/>
218
         <context viewClass="org.eclipse.gmf.runtime.notation.Edge" semanticHints=""/>
219
      </viewProvider>
220
   </extension>
221
222
   <extension point="org.eclipse.gmf.runtime.diagram.ui.editpartProviders">
223
      <editpartProvider class="org.eclipse.uml2.diagram.component.providers.UMLEditPartProvider">
224
         <Priority name="Lowest"/>
225
      </editpartProvider>
226
   </extension>
227
228
   <extension point="org.eclipse.gmf.runtime.diagram.ui.paletteProviders">
229
      <paletteProvider class="org.eclipse.uml2.diagram.component.providers.UMLPaletteProvider">
230
         <Priority name="Lowest"/>
231
         <editor id="org.eclipse.uml2.diagram.component.part.UMLDiagramEditorID"/>
232
      </paletteProvider>
233
   </extension>
234
235
   <extension point="org.eclipse.gmf.runtime.emf.ui.modelingAssistantProviders">
236
      <modelingAssistantProvider class="org.eclipse.uml2.diagram.component.providers.UMLModelingAssistantProvider">
237
         <Priority name="Lowest"/>
238
      </modelingAssistantProvider>
239
   </extension>
240
241
   <extension point="org.eclipse.gmf.runtime.common.ui.services.iconProviders">
242
      <IconProvider class="org.eclipse.uml2.diagram.component.providers.UMLIconProvider">
243
         <Priority name="Low"/>
244
      </IconProvider>
245
   </extension>
246
247
   <extension point="org.eclipse.gmf.runtime.common.ui.services.parserProviders">
248
      <ParserProvider class="org.eclipse.uml2.diagram.component.providers.UMLParserProvider">
249
         <Priority name="Lowest"/>
250
      </ParserProvider>
251
   </extension>
252
253
   <extension point="org.eclipse.gmf.runtime.emf.type.core.elementTypes">
254
255
      <metamodel nsURI="http://www.eclipse.org/uml2/2.0.0/UML">
256
         <metamodelType
257
               id="org.eclipse.uml2.diagram.component.Package_1000"
258
               name="Undefined"
259
               kind="org.eclipse.gmf.runtime.emf.type.core.IHintedType"
260
               eclass="Package"
261
               edithelper="org.eclipse.uml2.diagram.component.edit.helpers.PackageEditHelper">
262
            <param name="semanticHint" value="1000"/>
263
         </metamodelType>
264
      </metamodel>
265
266
      <metamodel nsURI="http://www.eclipse.org/uml2/2.0.0/UML">
267
         <specializationType
268
               id="org.eclipse.uml2.diagram.component.Component_3001"
269
               name="Component"
270
               kind="org.eclipse.gmf.runtime.emf.type.core.IHintedType"
271
               edithelperadvice="org.eclipse.uml2.diagram.component.edit.helpers.ComponentEditHelperAdvice">
272
            <specializes id="org.eclipse.uml2.diagram.component.Component_2001"/>
273
            <param name="semanticHint" value="3001"/>
274
         </specializationType>
275
      </metamodel>
276
277
      <metamodel nsURI="http://www.eclipse.org/uml2/2.0.0/UML">
278
         <metamodelType
279
               id="org.eclipse.uml2.diagram.component.Port_3002"
280
               name="Port"
281
               kind="org.eclipse.gmf.runtime.emf.type.core.IHintedType"
282
               eclass="Port"
283
               edithelper="org.eclipse.uml2.diagram.component.edit.helpers.PortEditHelper">
284
            <param name="semanticHint" value="3002"/>
285
         </metamodelType>
286
      </metamodel>
287
288
      <metamodel nsURI="http://www.eclipse.org/uml2/2.0.0/UML">
289
         <metamodelType
290
               id="org.eclipse.uml2.diagram.component.Artifact_3003"
291
               name="Artifact"
292
               kind="org.eclipse.gmf.runtime.emf.type.core.IHintedType"
293
               eclass="Artifact"
294
               edithelper="org.eclipse.uml2.diagram.component.edit.helpers.ArtifactEditHelper">
295
            <param name="semanticHint" value="3003"/>
296
         </metamodelType>
297
      </metamodel>
298
299
      <metamodel nsURI="http://www.eclipse.org/uml2/2.0.0/UML">
300
         <metamodelType
301
               id="org.eclipse.uml2.diagram.component.Class_3004"
302
               name="Class"
303
               kind="org.eclipse.gmf.runtime.emf.type.core.IHintedType"
304
               eclass="Class"
305
               edithelper="org.eclipse.uml2.diagram.component.edit.helpers.ClassEditHelper">
306
            <param name="semanticHint" value="3004"/>
307
         </metamodelType>
308
      </metamodel>
309
310
      <metamodel nsURI="http://www.eclipse.org/uml2/2.0.0/UML">
311
         <metamodelType
312
               id="org.eclipse.uml2.diagram.component.Interface_3005"
313
               name="Interface"
314
               kind="org.eclipse.gmf.runtime.emf.type.core.IHintedType"
315
               eclass="Interface"
316
               edithelper="org.eclipse.uml2.diagram.component.edit.helpers.InterfaceEditHelper">
317
            <param name="semanticHint" value="3005"/>
318
         </metamodelType>
319
      </metamodel>
320
321
      <metamodel nsURI="http://www.eclipse.org/uml2/2.0.0/UML">
322
         <metamodelType
323
               id="org.eclipse.uml2.diagram.component.Component_2001"
324
               name="Component"
325
               kind="org.eclipse.gmf.runtime.emf.type.core.IHintedType"
326
               eclass="Component"
327
               edithelper="org.eclipse.uml2.diagram.component.edit.helpers.ComponentEditHelper">
328
            <param name="semanticHint" value="2001"/>
329
         </metamodelType>
330
      </metamodel>
331
332
      <metamodel nsURI="http://www.eclipse.org/uml2/2.0.0/UML">
333
         <specializationType
334
               id="org.eclipse.uml2.diagram.component.Artifact_2002"
335
               name="Artifact"
336
               kind="org.eclipse.gmf.runtime.emf.type.core.IHintedType"
337
               edithelperadvice="org.eclipse.uml2.diagram.component.edit.helpers.ArtifactEditHelperAdvice">
338
            <specializes id="org.eclipse.uml2.diagram.component.Artifact_3003"/>
339
            <param name="semanticHint" value="2002"/>
340
         </specializationType>
341
      </metamodel>
342
343
      <metamodel nsURI="http://www.eclipse.org/uml2/2.0.0/UML">
344
         <specializationType
345
               id="org.eclipse.uml2.diagram.component.Interface_2003"
346
               name="Interface"
347
               kind="org.eclipse.gmf.runtime.emf.type.core.IHintedType"
348
               edithelperadvice="org.eclipse.uml2.diagram.component.edit.helpers.InterfaceEditHelperAdvice">
349
            <specializes id="org.eclipse.uml2.diagram.component.Interface_3005"/>
350
            <param name="semanticHint" value="2003"/>
351
         </specializationType>
352
      </metamodel>
353
354
      <metamodel nsURI="http://www.eclipse.org/uml2/2.0.0/UML">
355
         <specializationType
356
               id="org.eclipse.uml2.diagram.component.Class_2004"
357
               name="Class"
358
               kind="org.eclipse.gmf.runtime.emf.type.core.IHintedType"
359
               edithelperadvice="org.eclipse.uml2.diagram.component.edit.helpers.ClassEditHelperAdvice">
360
            <specializes id="org.eclipse.uml2.diagram.component.Class_3004"/>
361
            <param name="semanticHint" value="2004"/>
362
         </specializationType>
363
      </metamodel>
364
365
      <metamodel nsURI="http://www.eclipse.org/uml2/2.0.0/UML">
366
         <metamodelType
367
               id="org.eclipse.uml2.diagram.component.InterfaceRealization_4001"
368
               name="InterfaceRealization"
369
               kind="org.eclipse.gmf.runtime.emf.type.core.IHintedType"
370
               eclass="InterfaceRealization"
371
               edithelper="org.eclipse.uml2.diagram.component.edit.helpers.InterfaceRealizationEditHelper">
372
            <param name="semanticHint" value="4001"/>
373
         </metamodelType>
374
      </metamodel>
375
376
      <metamodel nsURI="http://www.eclipse.org/uml2/2.0.0/UML">
377
         <specializationType
378
               id="org.eclipse.uml2.diagram.component.PortProvided_4006"
379
               name="Undefined"
380
               kind="org.eclipse.gmf.runtime.emf.type.core.IHintedType"
381
               edithelperadvice="org.eclipse.uml2.diagram.component.edit.helpers.PortProvidedEditHelperAdvice">
382
            <specializes id="org.eclipse.gmf.runtime.emf.type.core.null"/>
383
            <param name="semanticHint" value="4006"/>
384
         </specializationType>
385
      </metamodel>
386
387
      <metamodel nsURI="http://www.eclipse.org/uml2/2.0.0/UML">
388
         <specializationType
389
               id="org.eclipse.uml2.diagram.component.PortRequired_4004"
390
               name="Undefined"
391
               kind="org.eclipse.gmf.runtime.emf.type.core.IHintedType"
392
               edithelperadvice="org.eclipse.uml2.diagram.component.edit.helpers.PortRequiredEditHelperAdvice">
393
            <specializes id="org.eclipse.gmf.runtime.emf.type.core.null"/>
394
            <param name="semanticHint" value="4004"/>
395
         </specializationType>
396
      </metamodel>
397
   </extension>
398
399
   <extension point="org.eclipse.gmf.runtime.emf.type.core.elementTypeBindings">
400
      <clientContext id="UMLComponentClientContext">
401
         <enablement>
402
            <test
403
               property="org.eclipse.gmf.runtime.emf.core.editingDomain"
404
               value="org.eclipse.uml2.diagram.component.EditingDomain"/>
405
         </enablement>
406
      </clientContext> 
407
      <binding context="UMLComponentClientContext">
408
         <elementType ref="org.eclipse.uml2.diagram.component.Package_1000"/>
409
         <elementType ref="org.eclipse.uml2.diagram.component.Component_3001"/>
410
         <elementType ref="org.eclipse.uml2.diagram.component.Port_3002"/>
411
         <elementType ref="org.eclipse.uml2.diagram.component.Artifact_3003"/>
412
         <elementType ref="org.eclipse.uml2.diagram.component.Class_3004"/>
413
         <elementType ref="org.eclipse.uml2.diagram.component.Interface_3005"/>
414
         <elementType ref="org.eclipse.uml2.diagram.component.Component_2001"/>
415
         <elementType ref="org.eclipse.uml2.diagram.component.Artifact_2002"/>
416
         <elementType ref="org.eclipse.uml2.diagram.component.Interface_2003"/>
417
         <elementType ref="org.eclipse.uml2.diagram.component.Class_2004"/>
418
         <elementType ref="org.eclipse.uml2.diagram.component.InterfaceRealization_4001"/>
419
         <elementType ref="org.eclipse.uml2.diagram.component.PortProvided_4006"/>
420
         <elementType ref="org.eclipse.uml2.diagram.component.PortRequired_4004"/>
421
         <advice ref="org.eclipse.gmf.runtime.diagram.core.advice.notationDepdendents"/>
422
      </binding>
423
   </extension>
424
425
   <extension point="org.eclipse.ui.navigator.viewer">
426
      <viewerContentBinding viewerId="org.eclipse.ui.navigator.ProjectExplorer">
427
         <includes>
428
            <contentExtension pattern="org.eclipse.uml2.diagram.component.resourceContent"/>
429
            <contentExtension pattern="org.eclipse.uml2.diagram.component.navigatorLinkHelper"/>
430
         </includes>
431
      </viewerContentBinding>
432
   </extension>
433
434
   <extension point="org.eclipse.ui.navigator.navigatorContent">
435
      <navigatorContent 
436
            id="org.eclipse.uml2.diagram.component.resourceContent" 
437
            name="%navigatorContentName" 
438
            priority="normal" 
439
            contentProvider="org.eclipse.uml2.diagram.component.navigator.UMLNavigatorContentProvider" 
440
            labelProvider="org.eclipse.uml2.diagram.component.navigator.UMLNavigatorLabelProvider"
441
            icon="icons/obj16/UMLDiagramFile.gif"
442
            activeByDefault="true">
443
         <triggerPoints>
444
            <or>
445
	            <and>
446
    	           <instanceof value="org.eclipse.core.resources.IFile"/>
447
        	       <test property="org.eclipse.core.resources.extension" value="umlcomponent_diagram"/>
448
            	</and>
449
            	<instanceof value="org.eclipse.uml2.diagram.component.navigator.UMLAbstractNavigatorItem"/>
450
            </or>
451
         </triggerPoints>
452
         <possibleChildren>
453
         	<instanceof value="org.eclipse.uml2.diagram.component.navigator.UMLAbstractNavigatorItem"/>
454
         </possibleChildren>
455
         <commonSorter 
456
               id="org.eclipse.uml2.diagram.component.navigatorSorter" 
457
               class="org.eclipse.uml2.diagram.component.navigator.UMLNavigatorSorter">
458
            <parentExpression>
459
               <or>
460
	              <and>
461
    	             <instanceof value="org.eclipse.core.resources.IFile"/>
462
        	         <test property="org.eclipse.core.resources.extension" value="umlcomponent_diagram"/>
463
                  </and>
464
                  <instanceof value="org.eclipse.uml2.diagram.component.navigator.UMLAbstractNavigatorItem"/>
465
               </or>
466
            </parentExpression>
467
         </commonSorter>
468
         <actionProvider
469
               id="org.eclipse.uml2.diagram.component.navigatorActionProvider"
470
               class="org.eclipse.uml2.diagram.component.navigator.UMLNavigatorActionProvider">
471
         </actionProvider>
472
      </navigatorContent>
473
   </extension>
474
   
475
   <extension point="org.eclipse.ui.navigator.linkHelper">
476
      <linkHelper
477
            id="org.eclipse.uml2.diagram.component.navigatorLinkHelper"
478
            class="org.eclipse.uml2.diagram.component.navigator.UMLNavigatorLinkHelper">
479
         <editorInputEnablement>
480
            <instanceof value="org.eclipse.gmf.runtime.diagram.ui.resources.editor.ide.document.FileEditorInputProxy"/>
481
         </editorInputEnablement>
482
         <selectionEnablement>
483
            <instanceof value="org.eclipse.uml2.diagram.component.navigator.UMLAbstractNavigatorItem"/>
484
         </selectionEnablement>
485
      </linkHelper>
486
   </extension>
487
488
   <extension point="org.eclipse.ui.views.properties.tabbed.propertyContributor">
489
      <propertyContributor contributorId="org.eclipse.uml2.diagram.component"
490
            labelProvider="org.eclipse.uml2.diagram.component.sheet.UMLSheetLabelProvider">
491
         <propertyCategory category="domain"/>
492
         <propertyCategory category="visual"/>
493
         <propertyCategory category="extra"/>
494
      </propertyContributor>
495
   </extension>
496
497
   <extension point="org.eclipse.ui.views.properties.tabbed.propertyTabs">
498
      <propertyTabs contributorId="org.eclipse.uml2.diagram.component">
499
         <propertyTab
500
             category="visual"
501
             id="property.tab.AppearancePropertySection"
502
             label="%tab.appearance"/>
503
          <propertyTab
504
             category="visual"
505
             id="property.tab.DiagramPropertySection"
506
             label="%tab.diagram"/>
507
          <propertyTab
508
             category="domain"
509
             id="property.tab.domain"
510
             label="%tab.domain"/>
511
      </propertyTabs>
512
   </extension>
513
514
   <extension point="org.eclipse.ui.views.properties.tabbed.propertySections">
515
      <propertySections contributorId="org.eclipse.uml2.diagram.component">
516
517
         <propertySection id="property.section.ConnectorAppearancePropertySection" 
518
            filter="org.eclipse.gmf.runtime.diagram.ui.properties.filters.ConnectionEditPartPropertySectionFilter" 
519
            class="org.eclipse.gmf.runtime.diagram.ui.properties.sections.appearance.ConnectionAppearancePropertySection" 
520
            tab="property.tab.AppearancePropertySection">
521
         </propertySection>
522
         <propertySection id="property.section.ShapeColorAndFontPropertySection" 
523
            filter="org.eclipse.gmf.runtime.diagram.ui.properties.filters.ShapeEditPartPropertySectionFilter" 
524
            class="org.eclipse.gmf.runtime.diagram.ui.properties.sections.appearance.ShapeColorsAndFontsPropertySection" 
525
            tab="property.tab.AppearancePropertySection">
526
         </propertySection> 
527
         <propertySection id="property.section.DiagramColorsAndFontsPropertySection" 
528
            filter="org.eclipse.gmf.runtime.diagram.ui.properties.filters.DiagramEditPartPropertySectionFilter" 
529
            class="org.eclipse.gmf.runtime.diagram.ui.properties.sections.appearance.DiagramColorsAndFontsPropertySection" 
530
            tab="property.tab.AppearancePropertySection">
531
         </propertySection>              
532
533
          <propertySection id="property.section.RulerGridPropertySection" 
534
             filter="org.eclipse.gmf.runtime.diagram.ui.properties.filters.DiagramEditPartPropertySectionFilter" 
535
             class="org.eclipse.gmf.runtime.diagram.ui.properties.sections.grid.RulerGridPropertySection" 
536
             tab="property.tab.DiagramPropertySection">
537
          </propertySection>              
538
         <propertySection
539
            id="property.section.domain" 
540
            tab="property.tab.domain"
541
            class="org.eclipse.uml2.diagram.component.sheet.UMLPropertySection">
542
            <input type="org.eclipse.gmf.runtime.notation.View"/>
543
            <input type="org.eclipse.gef.EditPart"/>
544
            <input type="org.eclipse.uml2.diagram.component.navigator.UMLAbstractNavigatorItem"/>
545
         </propertySection>
546
      </propertySections>
547
   </extension>
548
</plugin>
(-)src/org/eclipse/uml2/diagram/component/part/UMLDiagramEditor.java (+220 lines)
Added Link Here
1
package org.eclipse.uml2.diagram.component.part;
2
3
import org.eclipse.draw2d.DelegatingLayout;
4
import org.eclipse.draw2d.FreeformLayer;
5
import org.eclipse.draw2d.LayeredPane;
6
import org.eclipse.gef.LayerConstants;
7
import org.eclipse.gmf.runtime.diagram.ui.editparts.DiagramRootEditPart;
8
import org.eclipse.gmf.runtime.diagram.ui.resources.editor.parts.DiagramDocumentEditor;
9
import org.eclipse.emf.transaction.TransactionalEditingDomain;
10
import org.eclipse.core.resources.IFile;
11
import org.eclipse.core.resources.IMarker;
12
import org.eclipse.core.resources.IWorkspaceRoot;
13
import org.eclipse.core.resources.ResourcesPlugin;
14
15
import org.eclipse.core.runtime.CoreException;
16
import org.eclipse.core.runtime.IPath;
17
import org.eclipse.core.runtime.IProgressMonitor;
18
import org.eclipse.core.runtime.IStatus;
19
import org.eclipse.core.runtime.NullProgressMonitor;
20
21
import org.eclipse.gmf.runtime.common.ui.services.marker.MarkerNavigationService;
22
23
import org.eclipse.gmf.runtime.diagram.core.preferences.PreferencesHint;
24
25
import org.eclipse.gmf.runtime.diagram.ui.resources.editor.document.IDocumentProvider;
26
27
import org.eclipse.gmf.runtime.diagram.ui.resources.editor.ide.document.StorageDiagramDocumentProvider;
28
29
import org.eclipse.jface.dialogs.ErrorDialog;
30
import org.eclipse.jface.dialogs.IMessageProvider;
31
import org.eclipse.jface.dialogs.MessageDialog;
32
33
import org.eclipse.jface.window.Window;
34
35
import org.eclipse.osgi.util.NLS;
36
37
import org.eclipse.swt.widgets.Shell;
38
39
import org.eclipse.ui.IEditorInput;
40
import org.eclipse.ui.IEditorMatchingStrategy;
41
import org.eclipse.ui.IEditorReference;
42
import org.eclipse.ui.IFileEditorInput;
43
import org.eclipse.ui.PlatformUI;
44
45
import org.eclipse.ui.dialogs.SaveAsDialog;
46
47
import org.eclipse.ui.ide.IGotoMarker;
48
49
import org.eclipse.ui.part.FileEditorInput;
50
import org.eclipse.uml2.diagram.component.edit.parts.UMLEditPartFactory;
51
52
/**
53
 * @generated
54
 */
55
public class UMLDiagramEditor extends DiagramDocumentEditor implements IGotoMarker {
56
57
	/**
58
	 * @generated
59
	 */
60
	public static final String ID = "org.eclipse.uml2.diagram.component.part.UMLDiagramEditorID"; //$NON-NLS-1$
61
62
	/**
63
	 * @generated
64
	 */
65
	public UMLDiagramEditor() {
66
		super(true);
67
	}
68
69
	/**
70
	 * @generated
71
	 */
72
	protected String getEditingDomainID() {
73
		return "org.eclipse.uml2.diagram.component.EditingDomain"; //$NON-NLS-1$
74
	}
75
76
	/**
77
	 * @generated
78
	 */
79
	protected TransactionalEditingDomain createEditingDomain() {
80
		TransactionalEditingDomain domain = super.createEditingDomain();
81
		domain.setID(getEditingDomainID());
82
		return domain;
83
	}
84
85
	/**
86
	 * @generated
87
	 */
88
	protected void configureGraphicalViewer() {
89
		super.configureGraphicalViewer();
90
		DiagramRootEditPart root = (DiagramRootEditPart) getDiagramGraphicalViewer().getRootEditPart();
91
		LayeredPane printableLayers = (LayeredPane) root.getLayer(LayerConstants.PRINTABLE_LAYERS);
92
		FreeformLayer extLabelsLayer = new FreeformLayer();
93
		extLabelsLayer.setLayoutManager(new DelegatingLayout());
94
		printableLayers.addLayerAfter(extLabelsLayer, UMLEditPartFactory.EXTERNAL_NODE_LABELS_LAYER, LayerConstants.PRIMARY_LAYER);
95
		LayeredPane scalableLayers = (LayeredPane) root.getLayer(LayerConstants.SCALABLE_LAYERS);
96
		FreeformLayer scaledFeedbackLayer = new FreeformLayer();
97
		scaledFeedbackLayer.setEnabled(false);
98
		scalableLayers.addLayerAfter(scaledFeedbackLayer, LayerConstants.SCALED_FEEDBACK_LAYER, DiagramRootEditPart.DECORATION_UNPRINTABLE_LAYER);
99
	}
100
101
	/**
102
	 * @generated
103
	 */
104
	protected PreferencesHint getPreferencesHint() {
105
		return UMLDiagramEditorPlugin.DIAGRAM_PREFERENCES_HINT;
106
	}
107
108
	/**
109
	 * @generated
110
	 */
111
	public String getContributorId() {
112
		return UMLDiagramEditorPlugin.ID;
113
	}
114
115
	/**
116
	 * @generated
117
	 */
118
	private String contentObjectURI;
119
120
	/**
121
	 * @generated
122
	 */
123
	protected void setDocumentProvider(IEditorInput input) {
124
		if (input instanceof IFileEditorInput) {
125
			setDocumentProvider(new UMLDocumentProvider(contentObjectURI));
126
		} else {
127
			setDocumentProvider(new StorageDiagramDocumentProvider());
128
		}
129
	}
130
131
	/**
132
	 * @generated
133
	 */
134
	public void gotoMarker(IMarker marker) {
135
		MarkerNavigationService.getInstance().gotoMarker(this, marker);
136
	}
137
138
	/**
139
	 * @generated
140
	 */
141
	public boolean isSaveAsAllowed() {
142
		return true;
143
	}
144
145
	/**
146
	 * @generated
147
	 */
148
	public void doSaveAs() {
149
		performSaveAs(new NullProgressMonitor());
150
	}
151
152
	/**
153
	 * @generated
154
	 */
155
	protected void performSaveAs(IProgressMonitor progressMonitor) {
156
		Shell shell = getSite().getShell();
157
		IEditorInput input = getEditorInput();
158
		SaveAsDialog dialog = new SaveAsDialog(shell);
159
		IFile original = input instanceof IFileEditorInput ? ((IFileEditorInput) input).getFile() : null;
160
		if (original != null) {
161
			dialog.setOriginalFile(original);
162
		}
163
		dialog.create();
164
		IDocumentProvider provider = getDocumentProvider();
165
		if (provider == null) {
166
			// editor has been programmatically closed while the dialog was open
167
			return;
168
		}
169
		if (provider.isDeleted(input) && original != null) {
170
			String message = NLS.bind("The original file ''{0}'' has been deleted.", original.getName());
171
			dialog.setErrorMessage(null);
172
			dialog.setMessage(message, IMessageProvider.WARNING);
173
		}
174
		if (dialog.open() == Window.CANCEL) {
175
			if (progressMonitor != null) {
176
				progressMonitor.setCanceled(true);
177
			}
178
			return;
179
		}
180
		IPath filePath = dialog.getResult();
181
		if (filePath == null) {
182
			if (progressMonitor != null) {
183
				progressMonitor.setCanceled(true);
184
			}
185
			return;
186
		}
187
		IWorkspaceRoot workspaceRoot = ResourcesPlugin.getWorkspace().getRoot();
188
		IFile file = workspaceRoot.getFile(filePath);
189
		final IEditorInput newInput = new FileEditorInput(file);
190
		// Check if the editor is already open
191
		IEditorMatchingStrategy matchingStrategy = getEditorDescriptor().getEditorMatchingStrategy();
192
		IEditorReference[] editorRefs = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getEditorReferences();
193
		for (int i = 0; i < editorRefs.length; i++) {
194
			if (matchingStrategy.matches(editorRefs[i], newInput)) {
195
				MessageDialog.openWarning(shell, "Problem During Save As...", "Save could not be completed. Target file is already open in another editor.");
196
				return;
197
			}
198
		}
199
		boolean success = false;
200
		try {
201
			provider.aboutToChange(newInput);
202
			getDocumentProvider(newInput).saveDocument(progressMonitor, newInput, getDocumentProvider().getDocument(getEditorInput()), true);
203
			success = true;
204
		} catch (CoreException x) {
205
			IStatus status = x.getStatus();
206
			if (status == null || status.getSeverity() != IStatus.CANCEL) {
207
				ErrorDialog.openError(shell, "Save Problems", "Could not save file.", x.getStatus());
208
			}
209
		} finally {
210
			provider.changed(newInput);
211
			if (success) {
212
				setInput(newInput);
213
			}
214
		}
215
		if (progressMonitor != null) {
216
			progressMonitor.setCanceled(!success);
217
		}
218
	}
219
220
}
(-)src/org/eclipse/uml2/diagram/component/view/factories/ComponentName2ViewFactory.java (+29 lines)
Added Link Here
1
package org.eclipse.uml2.diagram.component.view.factories;
2
3
import org.eclipse.core.runtime.IAdaptable;
4
import org.eclipse.gmf.runtime.notation.View;
5
import java.util.ArrayList;
6
import java.util.List;
7
8
import org.eclipse.gmf.runtime.diagram.ui.view.factories.BasicNodeViewFactory;
9
10
/**
11
 * @generated
12
 */
13
public class ComponentName2ViewFactory extends BasicNodeViewFactory {
14
15
	/**
16
	 * @generated
17
	 */
18
	protected void decorateView(View containerView, View view, IAdaptable semanticAdapter, String semanticHint, int index, boolean persisted) {
19
		super.decorateView(containerView, view, semanticAdapter, semanticHint, index, persisted);
20
	}
21
22
	/**
23
	 * @generated
24
	 */
25
	protected List createStyles(View view) {
26
		List styles = new ArrayList();
27
		return styles;
28
	}
29
}
(-)src/org/eclipse/uml2/diagram/component/view/factories/Component2ViewFactory.java (+59 lines)
Added Link Here
1
package org.eclipse.uml2.diagram.component.view.factories;
2
3
import java.util.ArrayList;
4
import java.util.List;
5
6
import org.eclipse.core.runtime.IAdaptable;
7
8
import org.eclipse.emf.ecore.EAnnotation;
9
import org.eclipse.emf.ecore.EcoreFactory;
10
11
import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil;
12
13
import org.eclipse.gmf.runtime.diagram.ui.view.factories.AbstractShapeViewFactory;
14
15
import org.eclipse.gmf.runtime.notation.NotationFactory;
16
import org.eclipse.gmf.runtime.notation.View;
17
18
import org.eclipse.uml2.diagram.component.edit.parts.ComponentContents2EditPart;
19
import org.eclipse.uml2.diagram.component.edit.parts.ComponentNameEditPart;
20
import org.eclipse.uml2.diagram.component.edit.parts.PackageEditPart;
21
import org.eclipse.uml2.diagram.component.part.UMLVisualIDRegistry;
22
23
/**
24
 * @generated
25
 */
26
public class Component2ViewFactory extends AbstractShapeViewFactory {
27
28
	/**
29
	 * @generated 
30
	 */
31
	protected List createStyles(View view) {
32
		List styles = new ArrayList();
33
		styles.add(NotationFactory.eINSTANCE.createFontStyle());
34
		styles.add(NotationFactory.eINSTANCE.createDescriptionStyle());
35
		styles.add(NotationFactory.eINSTANCE.createFillStyle());
36
		styles.add(NotationFactory.eINSTANCE.createLineStyle());
37
		return styles;
38
	}
39
40
	/**
41
	 * @generated
42
	 */
43
	protected void decorateView(View containerView, View view, IAdaptable semanticAdapter, String semanticHint, int index, boolean persisted) {
44
		if (semanticHint == null) {
45
			semanticHint = UMLVisualIDRegistry.getType(org.eclipse.uml2.diagram.component.edit.parts.Component2EditPart.VISUAL_ID);
46
			view.setType(semanticHint);
47
		}
48
		super.decorateView(containerView, view, semanticAdapter, semanticHint, index, persisted);
49
		if (!PackageEditPart.MODEL_ID.equals(UMLVisualIDRegistry.getModelID(containerView))) {
50
			EAnnotation shortcutAnnotation = EcoreFactory.eINSTANCE.createEAnnotation();
51
			shortcutAnnotation.setSource("Shortcut"); //$NON-NLS-1$
52
			shortcutAnnotation.getDetails().put("modelID", PackageEditPart.MODEL_ID); //$NON-NLS-1$
53
			view.getEAnnotations().add(shortcutAnnotation);
54
		}
55
		getViewService().createNode(semanticAdapter, view, UMLVisualIDRegistry.getType(ComponentNameEditPart.VISUAL_ID), ViewUtil.APPEND, true, getPreferencesHint());
56
		getViewService().createNode(semanticAdapter, view, UMLVisualIDRegistry.getType(ComponentContents2EditPart.VISUAL_ID), ViewUtil.APPEND, true, getPreferencesHint());
57
	}
58
59
}
(-)src/org/eclipse/uml2/diagram/component/view/factories/Class2ViewFactory.java (+57 lines)
Added Link Here
1
package org.eclipse.uml2.diagram.component.view.factories;
2
3
import java.util.ArrayList;
4
import java.util.List;
5
6
import org.eclipse.core.runtime.IAdaptable;
7
8
import org.eclipse.emf.ecore.EAnnotation;
9
import org.eclipse.emf.ecore.EcoreFactory;
10
11
import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil;
12
13
import org.eclipse.gmf.runtime.diagram.ui.view.factories.AbstractShapeViewFactory;
14
15
import org.eclipse.gmf.runtime.notation.NotationFactory;
16
import org.eclipse.gmf.runtime.notation.View;
17
18
import org.eclipse.uml2.diagram.component.edit.parts.ClassName2EditPart;
19
import org.eclipse.uml2.diagram.component.edit.parts.PackageEditPart;
20
import org.eclipse.uml2.diagram.component.part.UMLVisualIDRegistry;
21
22
/**
23
 * @generated
24
 */
25
public class Class2ViewFactory extends AbstractShapeViewFactory {
26
27
	/**
28
	 * @generated 
29
	 */
30
	protected List createStyles(View view) {
31
		List styles = new ArrayList();
32
		styles.add(NotationFactory.eINSTANCE.createFontStyle());
33
		styles.add(NotationFactory.eINSTANCE.createDescriptionStyle());
34
		styles.add(NotationFactory.eINSTANCE.createFillStyle());
35
		styles.add(NotationFactory.eINSTANCE.createLineStyle());
36
		return styles;
37
	}
38
39
	/**
40
	 * @generated
41
	 */
42
	protected void decorateView(View containerView, View view, IAdaptable semanticAdapter, String semanticHint, int index, boolean persisted) {
43
		if (semanticHint == null) {
44
			semanticHint = UMLVisualIDRegistry.getType(org.eclipse.uml2.diagram.component.edit.parts.Class2EditPart.VISUAL_ID);
45
			view.setType(semanticHint);
46
		}
47
		super.decorateView(containerView, view, semanticAdapter, semanticHint, index, persisted);
48
		if (!PackageEditPart.MODEL_ID.equals(UMLVisualIDRegistry.getModelID(containerView))) {
49
			EAnnotation shortcutAnnotation = EcoreFactory.eINSTANCE.createEAnnotation();
50
			shortcutAnnotation.setSource("Shortcut"); //$NON-NLS-1$
51
			shortcutAnnotation.getDetails().put("modelID", PackageEditPart.MODEL_ID); //$NON-NLS-1$
52
			view.getEAnnotations().add(shortcutAnnotation);
53
		}
54
		getViewService().createNode(semanticAdapter, view, UMLVisualIDRegistry.getType(ClassName2EditPart.VISUAL_ID), ViewUtil.APPEND, true, getPreferencesHint());
55
	}
56
57
}
(-).cvsignore (+2 lines)
Added Link Here
1
bin
2
.settings
(-)src/org/eclipse/uml2/diagram/component/part/UMLMatchingStrategy.java (+64 lines)
Added Link Here
1
package org.eclipse.uml2.diagram.component.part;
2
3
import org.eclipse.emf.common.util.URI;
4
5
import org.eclipse.emf.ecore.resource.Resource;
6
7
import org.eclipse.gmf.runtime.diagram.ui.parts.DiagramEditorInput;
8
9
import org.eclipse.gmf.runtime.notation.Diagram;
10
11
import org.eclipse.ui.IEditorInput;
12
import org.eclipse.ui.IEditorMatchingStrategy;
13
import org.eclipse.ui.IEditorPart;
14
import org.eclipse.ui.IEditorReference;
15
import org.eclipse.ui.PartInitException;
16
17
import org.eclipse.gmf.runtime.diagram.ui.resources.editor.parts.DiagramDocumentEditorMatchingStrategy;
18
19
/**
20
 * @generated
21
 */
22
public class UMLMatchingStrategy implements IEditorMatchingStrategy {
23
24
	/**
25
	 * @generated
26
	 */
27
	public boolean matches(IEditorReference editorRef, IEditorInput input) {
28
		IEditorInput editorInput;
29
		try {
30
			editorInput = editorRef.getEditorInput();
31
		} catch (PartInitException e) {
32
			return false;
33
		}
34
35
		if (editorInput.equals(input)) {
36
			return true;
37
		}
38
39
		IEditorPart editor = editorRef.getEditor(false);
40
		if (input instanceof DiagramEditorInput && editor instanceof UMLDiagramEditor) {
41
			Diagram editorDiagram = ((UMLDiagramEditor) editor).getDiagram();
42
			Diagram otherDiagram = ((DiagramEditorInput) input).getDiagram();
43
			return equals(editorDiagram, otherDiagram);
44
		}
45
		return false;
46
	}
47
48
	/**
49
	 * @generated
50
	 */
51
	private boolean equals(Diagram editorDiagram, Diagram otherDiagram) {
52
		Resource editorResource = editorDiagram.eResource();
53
		Resource otherResource = otherDiagram.eResource();
54
		if (editorResource != null && otherResource != null) {
55
			URI editorURI = editorResource.getURI();
56
			URI otherURI = otherResource.getURI();
57
			String editorURIFragment = editorResource.getURIFragment(editorDiagram);
58
			String otherURIFragment = otherResource.getURIFragment(otherDiagram);
59
			return editorURI.equals(otherURI) && editorURIFragment.equals(otherURIFragment);
60
		}
61
		return false;
62
	}
63
64
}
(-)src/org/eclipse/uml2/diagram/component/edit/policies/Artifact2ItemSemanticEditPolicy.java (+40 lines)
Added Link Here
1
package org.eclipse.uml2.diagram.component.edit.policies;
2
3
import org.eclipse.gef.commands.Command;
4
import org.eclipse.gmf.runtime.emf.type.core.commands.DestroyElementCommand;
5
import org.eclipse.gmf.runtime.emf.type.core.requests.CreateRelationshipRequest;
6
import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest;
7
import org.eclipse.emf.ecore.EObject;
8
import org.eclipse.emf.ecore.EAnnotation;
9
import org.eclipse.gmf.runtime.notation.View;
10
11
/**
12
 * @generated
13
 */
14
public class Artifact2ItemSemanticEditPolicy extends UMLBaseItemSemanticEditPolicy {
15
16
	/**
17
	 * @generated
18
	 */
19
	protected Command getDestroyElementCommand(DestroyElementRequest req) {
20
		return getMSLWrapper(new DestroyElementCommand(req) {
21
22
			protected EObject getElementToDestroy() {
23
				View view = (View) getHost().getModel();
24
				EAnnotation annotation = view.getEAnnotation("Shortcut"); //$NON-NLS-1$
25
				if (annotation != null) {
26
					return view;
27
				}
28
				return super.getElementToDestroy();
29
			}
30
31
		});
32
	}
33
34
	/**
35
	 * @generated
36
	 */
37
	protected Command getCreateRelationshipCommand(CreateRelationshipRequest req) {
38
		return super.getCreateRelationshipCommand(req);
39
	}
40
}
(-)src/org/eclipse/uml2/diagram/component/edit/policies/ComponentItemSemanticEditPolicy.java (+120 lines)
Added Link Here
1
package org.eclipse.uml2.diagram.component.edit.policies;
2
3
import org.eclipse.gef.commands.Command;
4
import org.eclipse.gmf.runtime.emf.type.core.commands.DestroyElementCommand;
5
import org.eclipse.gmf.runtime.emf.type.core.requests.CreateRelationshipRequest;
6
import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest;
7
import org.eclipse.emf.ecore.EObject;
8
import org.eclipse.emf.ecore.EAnnotation;
9
import org.eclipse.gmf.runtime.notation.View;
10
import org.eclipse.emf.ecore.EClass;
11
12
import org.eclipse.gef.commands.UnexecutableCommand;
13
14
import org.eclipse.gmf.runtime.emf.type.core.commands.CreateElementCommand;
15
16
import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;
17
18
import org.eclipse.uml2.diagram.component.providers.UMLElementTypes;
19
import org.eclipse.uml2.uml.Port;
20
import org.eclipse.uml2.uml.UMLPackage;
21
22
/**
23
 * @generated
24
 */
25
public class ComponentItemSemanticEditPolicy extends UMLBaseItemSemanticEditPolicy {
26
27
	/**
28
	 * @generated
29
	 */
30
	protected Command getCreateCommand(CreateElementRequest req) {
31
		if (UMLElementTypes.Port_3002 == req.getElementType()) {
32
			if (req.getContainmentFeature() == null) {
33
				req.setContainmentFeature(UMLPackage.eINSTANCE.getStructuredClassifier_OwnedAttribute());
34
			}
35
			return getMSLWrapper(new CreatePort_3002Command(req));
36
		}
37
		return super.getCreateCommand(req);
38
	}
39
40
	/**
41
	 * @generated
42
	 */
43
	private static class CreatePort_3002Command extends CreateElementCommand {
44
45
		/**
46
		 * @generated
47
		 */
48
		public CreatePort_3002Command(CreateElementRequest req) {
49
			super(req);
50
		}
51
52
		/**
53
		 * @generated
54
		 */
55
		protected EClass getEClassToEdit() {
56
			return UMLPackage.eINSTANCE.getComponent();
57
		};
58
59
		/**
60
		 * @generated
61
		 */
62
		protected EObject getElementToEdit() {
63
			EObject container = ((CreateElementRequest) getRequest()).getContainer();
64
			if (container instanceof View) {
65
				container = ((View) container).getElement();
66
			}
67
			return container;
68
		}
69
70
		/**
71
		 * @generated
72
		 */
73
		protected EObject doDefaultElementCreation() {
74
			Port newElement = (Port) super.doDefaultElementCreation();
75
			if (newElement != null) {
76
				UMLElementTypes.Initializers.Port_3002.init(newElement);
77
			}
78
			return newElement;
79
		}
80
	}
81
82
	/**
83
	 * @generated
84
	 */
85
	protected Command getDestroyElementCommand(DestroyElementRequest req) {
86
		return getMSLWrapper(new DestroyElementCommand(req) {
87
88
			protected EObject getElementToDestroy() {
89
				View view = (View) getHost().getModel();
90
				EAnnotation annotation = view.getEAnnotation("Shortcut"); //$NON-NLS-1$
91
				if (annotation != null) {
92
					return view;
93
				}
94
				return super.getElementToDestroy();
95
			}
96
97
		});
98
	}
99
100
	/**
101
	 * @generated
102
	 */
103
	protected Command getCreateRelationshipCommand(CreateRelationshipRequest req) {
104
		if (UMLElementTypes.InterfaceRealization_4001 == req.getElementType()) {
105
			return req.getTarget() == null ? getCreateStartOutgoingInterfaceRealization4001Command(req) : null;
106
		}
107
		return super.getCreateRelationshipCommand(req);
108
	}
109
110
	/**
111
	 * @generated
112
	 */
113
	protected Command getCreateStartOutgoingInterfaceRealization4001Command(CreateRelationshipRequest req) {
114
		if (!UMLBaseItemSemanticEditPolicy.LinkConstraints.InterfaceRealization_4001.canCreateLink(req, false)) {
115
			return UnexecutableCommand.INSTANCE;
116
		}
117
		return new Command() {
118
		};
119
	}
120
}
(-)src/org/eclipse/uml2/diagram/component/view/factories/ClassNameViewFactory.java (+29 lines)
Added Link Here
1
package org.eclipse.uml2.diagram.component.view.factories;
2
3
import org.eclipse.core.runtime.IAdaptable;
4
import org.eclipse.gmf.runtime.notation.View;
5
import java.util.ArrayList;
6
import java.util.List;
7
8
import org.eclipse.gmf.runtime.diagram.ui.view.factories.BasicNodeViewFactory;
9
10
/**
11
 * @generated
12
 */
13
public class ClassNameViewFactory extends BasicNodeViewFactory {
14
15
	/**
16
	 * @generated
17
	 */
18
	protected void decorateView(View containerView, View view, IAdaptable semanticAdapter, String semanticHint, int index, boolean persisted) {
19
		super.decorateView(containerView, view, semanticAdapter, semanticHint, index, persisted);
20
	}
21
22
	/**
23
	 * @generated
24
	 */
25
	protected List createStyles(View view) {
26
		List styles = new ArrayList();
27
		return styles;
28
	}
29
}
(-)src/org/eclipse/uml2/diagram/component/edit/policies/InterfaceItemSemanticEditPolicy.java (+164 lines)
Added Link Here
1
package org.eclipse.uml2.diagram.component.edit.policies;
2
3
import org.eclipse.gef.commands.Command;
4
import org.eclipse.gmf.runtime.emf.type.core.commands.DestroyElementCommand;
5
import org.eclipse.gmf.runtime.emf.type.core.requests.CreateRelationshipRequest;
6
import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest;
7
import org.eclipse.emf.ecore.EObject;
8
import org.eclipse.emf.ecore.EAnnotation;
9
import org.eclipse.gmf.runtime.notation.View;
10
import org.eclipse.emf.ecore.EClass;
11
12
import org.eclipse.gef.commands.UnexecutableCommand;
13
14
import org.eclipse.gmf.runtime.emf.type.core.commands.CreateRelationshipCommand;
15
import org.eclipse.gmf.runtime.emf.type.core.commands.SetValueCommand;
16
17
import org.eclipse.gmf.runtime.emf.type.core.requests.SetRequest;
18
19
import org.eclipse.uml2.diagram.component.providers.UMLElementTypes;
20
import org.eclipse.uml2.uml.BehavioredClassifier;
21
import org.eclipse.uml2.uml.Interface;
22
import org.eclipse.uml2.uml.InterfaceRealization;
23
import org.eclipse.uml2.uml.Port;
24
import org.eclipse.uml2.uml.UMLPackage;
25
26
/**
27
 * @generated
28
 */
29
public class InterfaceItemSemanticEditPolicy extends UMLBaseItemSemanticEditPolicy {
30
31
	/**
32
	 * @generated
33
	 */
34
	protected Command getDestroyElementCommand(DestroyElementRequest req) {
35
		return getMSLWrapper(new DestroyElementCommand(req) {
36
37
			protected EObject getElementToDestroy() {
38
				View view = (View) getHost().getModel();
39
				EAnnotation annotation = view.getEAnnotation("Shortcut"); //$NON-NLS-1$
40
				if (annotation != null) {
41
					return view;
42
				}
43
				return super.getElementToDestroy();
44
			}
45
46
		});
47
	}
48
49
	/**
50
	 * @generated
51
	 */
52
	protected Command getCreateRelationshipCommand(CreateRelationshipRequest req) {
53
		if (UMLElementTypes.InterfaceRealization_4001 == req.getElementType()) {
54
			return req.getTarget() == null ? null : getCreateCompleteIncomingInterfaceRealization4001Command(req);
55
		}
56
		if (UMLElementTypes.PortProvided_4006 == req.getElementType()) {
57
			return req.getTarget() == null ? null : getCreateCompleteIncomingPort_Provided4006Command(req);
58
		}
59
		if (UMLElementTypes.PortRequired_4004 == req.getElementType()) {
60
			return req.getTarget() == null ? null : getCreateCompleteIncomingPort_Required4004Command(req);
61
		}
62
		return super.getCreateRelationshipCommand(req);
63
	}
64
65
	/**
66
	 * @generated
67
	 */
68
	protected Command getCreateCompleteIncomingInterfaceRealization4001Command(CreateRelationshipRequest req) {
69
		if (!(req.getSource() instanceof BehavioredClassifier)) {
70
			return UnexecutableCommand.INSTANCE;
71
		}
72
		final BehavioredClassifier element = (BehavioredClassifier) getRelationshipContainer(req.getSource(), UMLPackage.eINSTANCE.getBehavioredClassifier(), req.getElementType());
73
		if (element == null) {
74
			return UnexecutableCommand.INSTANCE;
75
		}
76
		if (!UMLBaseItemSemanticEditPolicy.LinkConstraints.InterfaceRealization_4001.canCreateLink(req, false)) {
77
			return UnexecutableCommand.INSTANCE;
78
		}
79
		if (req.getContainmentFeature() == null) {
80
			req.setContainmentFeature(UMLPackage.eINSTANCE.getBehavioredClassifier_InterfaceRealization());
81
		}
82
		return getMSLWrapper(new CreateIncomingInterfaceRealization4001Command(req) {
83
84
			protected EObject getElementToEdit() {
85
				return element;
86
			}
87
		});
88
	}
89
90
	/**
91
	 * @generated
92
	 */
93
	private static class CreateIncomingInterfaceRealization4001Command extends CreateRelationshipCommand {
94
95
		/**
96
		 * @generated
97
		 */
98
		public CreateIncomingInterfaceRealization4001Command(CreateRelationshipRequest req) {
99
			super(req);
100
		}
101
102
		/**
103
		 * @generated
104
		 */
105
		protected EClass getEClassToEdit() {
106
			return UMLPackage.eINSTANCE.getBehavioredClassifier();
107
		};
108
109
		/**
110
		 * @generated
111
		 */
112
		protected void setElementToEdit(EObject element) {
113
			throw new UnsupportedOperationException();
114
		}
115
116
		/**
117
		 * @generated
118
		 */
119
		protected EObject doDefaultElementCreation() {
120
			InterfaceRealization newElement = (InterfaceRealization) super.doDefaultElementCreation();
121
			if (newElement != null) {
122
				newElement.setContract((Interface) getTarget());
123
				newElement.setImplementingClassifier((BehavioredClassifier) getSource());
124
			}
125
			return newElement;
126
		}
127
	}
128
129
	/**
130
	 * @generated
131
	 */
132
	protected Command getCreateCompleteIncomingPort_Provided4006Command(CreateRelationshipRequest req) {
133
		if (!(req.getSource() instanceof Port)) {
134
			return UnexecutableCommand.INSTANCE;
135
		}
136
		Port element = (Port) req.getSource();
137
		if (element.getProvideds().contains(req.getTarget())) {
138
			return UnexecutableCommand.INSTANCE;
139
		}
140
		if (!UMLBaseItemSemanticEditPolicy.LinkConstraints.PortProvided_4006.canCreateLink(req, false)) {
141
			return UnexecutableCommand.INSTANCE;
142
		}
143
		SetRequest setReq = new SetRequest(req.getSource(), UMLPackage.eINSTANCE.getPort_Provided(), req.getTarget());
144
		return getMSLWrapper(new SetValueCommand(setReq));
145
	}
146
147
	/**
148
	 * @generated
149
	 */
150
	protected Command getCreateCompleteIncomingPort_Required4004Command(CreateRelationshipRequest req) {
151
		if (!(req.getSource() instanceof Port)) {
152
			return UnexecutableCommand.INSTANCE;
153
		}
154
		Port element = (Port) req.getSource();
155
		if (element.getRequireds().contains(req.getTarget())) {
156
			return UnexecutableCommand.INSTANCE;
157
		}
158
		if (!UMLBaseItemSemanticEditPolicy.LinkConstraints.PortRequired_4004.canCreateLink(req, false)) {
159
			return UnexecutableCommand.INSTANCE;
160
		}
161
		SetRequest setReq = new SetRequest(req.getSource(), UMLPackage.eINSTANCE.getPort_Required(), req.getTarget());
162
		return getMSLWrapper(new SetValueCommand(setReq));
163
	}
164
}
(-)src/org/eclipse/uml2/diagram/component/view/factories/ComponentNameViewFactory.java (+29 lines)
Added Link Here
1
package org.eclipse.uml2.diagram.component.view.factories;
2
3
import org.eclipse.core.runtime.IAdaptable;
4
import org.eclipse.gmf.runtime.notation.View;
5
import java.util.ArrayList;
6
import java.util.List;
7
8
import org.eclipse.gmf.runtime.diagram.ui.view.factories.BasicNodeViewFactory;
9
10
/**
11
 * @generated
12
 */
13
public class ComponentNameViewFactory extends BasicNodeViewFactory {
14
15
	/**
16
	 * @generated
17
	 */
18
	protected void decorateView(View containerView, View view, IAdaptable semanticAdapter, String semanticHint, int index, boolean persisted) {
19
		super.decorateView(containerView, view, semanticAdapter, semanticHint, index, persisted);
20
	}
21
22
	/**
23
	 * @generated
24
	 */
25
	protected List createStyles(View view) {
26
		List styles = new ArrayList();
27
		return styles;
28
	}
29
}
(-)src/org/eclipse/uml2/diagram/component/navigator/UMLNavigatorLinkHelper.java (+92 lines)
Added Link Here
1
package org.eclipse.uml2.diagram.component.navigator;
2
3
import org.eclipse.core.resources.IFile;
4
5
import org.eclipse.emf.ecore.EObject;
6
7
import org.eclipse.emf.ecore.resource.Resource;
8
9
import org.eclipse.gef.EditPart;
10
11
import org.eclipse.gmf.runtime.notation.View;
12
13
import org.eclipse.jface.viewers.IStructuredSelection;
14
import org.eclipse.jface.viewers.StructuredSelection;
15
16
import org.eclipse.ui.IEditorInput;
17
import org.eclipse.ui.IEditorPart;
18
import org.eclipse.ui.IWorkbenchPage;
19
20
import org.eclipse.ui.navigator.ILinkHelper;
21
22
import org.eclipse.ui.part.FileEditorInput;
23
import org.eclipse.uml2.diagram.component.edit.parts.PackageEditPart;
24
import org.eclipse.uml2.diagram.component.part.UMLDiagramEditor;
25
26
/**
27
 * @generated
28
 */
29
public class UMLNavigatorLinkHelper implements ILinkHelper {
30
31
	/**
32
	 * @generated
33
	 */
34
	public IStructuredSelection findSelection(IEditorInput anInput) {
35
		return StructuredSelection.EMPTY;
36
	}
37
38
	/**
39
	 * @generated
40
	 */
41
	public void activateEditor(IWorkbenchPage aPage, IStructuredSelection aSelection) {
42
		if (aSelection == null || aSelection.isEmpty()) {
43
			return;
44
		}
45
		if (aSelection.getFirstElement() instanceof UMLAbstractNavigatorItem) {
46
			UMLAbstractNavigatorItem navigatorItem = (UMLAbstractNavigatorItem) aSelection.getFirstElement();
47
			if (!PackageEditPart.MODEL_ID.equals(navigatorItem.getModelID())) {
48
				return;
49
			}
50
			Object parentFile = navigatorItem.getParent();
51
			while (parentFile instanceof UMLAbstractNavigatorItem) {
52
				parentFile = ((UMLAbstractNavigatorItem) parentFile).getParent();
53
			}
54
			if (false == parentFile instanceof IFile) {
55
				return;
56
			}
57
			IEditorInput fileInput = new FileEditorInput((IFile) parentFile);
58
			IEditorPart editor = aPage.findEditor(fileInput);
59
			if (editor == null) {
60
				return;
61
			}
62
			aPage.bringToTop(editor);
63
			if (editor instanceof UMLDiagramEditor) {
64
				UMLDiagramEditor diagramEditor = (UMLDiagramEditor) editor;
65
				Resource diagramResource = diagramEditor.getDiagram().eResource();
66
67
				View navigatorView = null;
68
				if (navigatorItem instanceof UMLNavigatorItem) {
69
					navigatorView = ((UMLNavigatorItem) navigatorItem).getView();
70
				} else if (navigatorItem instanceof UMLNavigatorGroup) {
71
					UMLNavigatorGroup group = (UMLNavigatorGroup) navigatorItem;
72
					if (group.getParent() instanceof UMLNavigatorItem) {
73
						navigatorView = ((UMLNavigatorItem) group.getParent()).getView();
74
					}
75
				}
76
77
				if (navigatorView == null) {
78
					return;
79
				}
80
				EObject selectedView = diagramResource.getEObject(navigatorView.eResource().getURIFragment(navigatorView));
81
				if (selectedView == null) {
82
					return;
83
				}
84
				EditPart selectedEditPart = (EditPart) diagramEditor.getDiagramGraphicalViewer().getEditPartRegistry().get(selectedView);
85
				if (selectedEditPart != null) {
86
					diagramEditor.getDiagramGraphicalViewer().select(selectedEditPart);
87
				}
88
			}
89
		}
90
	}
91
92
}
(-)icons/linkTargetNavigatorGroup.gif (+5 lines)
Added Link Here
1
GIF89aÕÿÿ­r/‚GøØˆžf'øÐxøà˜øÐ€f>2èÆ”øè°èЈøðÈÿÿÿË6úöºøà øØ?Œ]Føè˜Ò«€üößãϹ´2àÀx­r+ðØ?¥l$yO@ž_­l$?R¼2ï߯¼…2Å6!ù,s@€pH,?È#âèh:‚¨T0ô4®
2
‹à‘?p©€Ñd¢Y`B‚¡‹p8G AØ%‚%HÁçW¶	_B†‰Š‹?’“’š??–B¥¦¥ B­®­©C³´µI·¸FA;Content-Type: image/gif
3
4
GIF89aÕÿÿ­r/‚GøØˆžf'øÐxøà˜øÐ€f>2èÆ”øè°èЈøðÈÿÿÿË6úöºøà øØ?Œ]Føè˜Ò«€üößãϹ´2àÀx­r+ðØ?¥l$yO@ž_­l$?R¼2ï߯¼…2Å6!ù,s@€pH,?È#âèh:‚¨T0ô4®
5
‹à‘?p©€Ñd¢Y`B‚¡‹p8G AØ%‚%HÁçW¶	_B†‰Š‹?’“’š??–B¥¦¥ B­®­©C³´µI·¸FA;
(-)META-INF/MANIFEST.MF (+46 lines)
Added Link Here
1
Manifest-Version: 1.0
2
Bundle-ManifestVersion: 2
3
Bundle-Name: %pluginName
4
Bundle-SymbolicName: org.eclipse.uml2.diagram.component; singleton:=true
5
Bundle-Version: 1.0.0.qualifier
6
Bundle-ClassPath: .
7
Bundle-Activator: org.eclipse.uml2.diagram.component.part.UMLDiagramEditorPlugin
8
Bundle-Vendor: %providerName
9
Bundle-Localization: plugin
10
Export-Package: org.eclipse.uml2.diagram.component.edit.parts,
11
 org.eclipse.uml2.diagram.component.part,
12
 org.eclipse.uml2.diagram.component.providers
13
Require-Bundle: org.eclipse.core.runtime,
14
 org.eclipse.core.resources,
15
 org.eclipse.jface,
16
 org.eclipse.ui.ide,
17
 org.eclipse.ui.views,
18
 org.eclipse.ui.workbench,
19
 org.eclipse.ui.workbench.texteditor,
20
 org.eclipse.ui.navigator,
21
 org.eclipse.emf.ecore,
22
 org.eclipse.emf.ecore.xmi,
23
 org.eclipse.emf.edit.ui,
24
 org.eclipse.gef;visibility:=reexport,
25
 org.eclipse.gmf.runtime.emf.core,
26
 org.eclipse.gmf.runtime.emf.commands.core,
27
 org.eclipse.gmf.runtime.emf.ui.properties,
28
 org.eclipse.gmf.runtime.diagram.ui,
29
 org.eclipse.gmf.runtime.diagram.ui.properties,
30
 org.eclipse.gmf.runtime.diagram.ui.providers,
31
 org.eclipse.gmf.runtime.diagram.ui.providers.ide,
32
 org.eclipse.gmf.runtime.diagram.ui.render,
33
 org.eclipse.gmf.runtime.diagram.ui.resources.editor,
34
 org.eclipse.gmf.runtime.diagram.ui.resources.editor.ide,
35
 org.eclipse.gmf.runtime.notation.providers,
36
 org.eclipse.uml2.uml;visibility:=reexport,
37
 org.eclipse.uml2.uml.edit;visibility:=reexport,
38
 org.eclipse.emf.ecore;visibility:=reexport,
39
 org.eclipse.emf.ecore.edit;visibility:=reexport,
40
 org.eclipse.emf.query.ocl;visibility:=reexport,
41
 org.eclipse.emf.ocl;visibility:=reexport,
42
 org.eclipse.gmf.runtime.draw2d.ui;visibility:=reexport,
43
 org.eclipse.draw2d;visibility:=reexport,
44
 org.eclipse.uml2.diagram.common;visibility:=reexport,
45
 org.eclipse.uml2.diagram.parser
46
Eclipse-LazyStart: true
(-)src/org/eclipse/uml2/diagram/component/edit/parts/PortNameEditPart.java (+544 lines)
Added Link Here
1
package org.eclipse.uml2.diagram.component.edit.parts;
2
3
import org.eclipse.draw2d.Label;
4
import org.eclipse.draw2d.IFigure;
5
import org.eclipse.draw2d.geometry.Point;
6
import org.eclipse.gef.EditPolicy;
7
import org.eclipse.gmf.runtime.diagram.ui.editparts.ITextAwareEditPart;
8
import org.eclipse.gmf.runtime.diagram.ui.editpolicies.LabelDirectEditPolicy;
9
import org.eclipse.gmf.runtime.notation.View;
10
import java.util.Collections;
11
import java.util.List;
12
13
import org.eclipse.emf.common.notify.Notification;
14
15
import org.eclipse.emf.ecore.EObject;
16
17
import org.eclipse.emf.transaction.RunnableWithResult;
18
19
import org.eclipse.gef.AccessibleEditPart;
20
import org.eclipse.gef.Request;
21
22
import org.eclipse.gef.requests.DirectEditRequest;
23
24
import org.eclipse.gef.tools.DirectEditManager;
25
26
import org.eclipse.gmf.runtime.common.ui.services.parser.IParser;
27
import org.eclipse.gmf.runtime.common.ui.services.parser.IParserEditStatus;
28
import org.eclipse.gmf.runtime.common.ui.services.parser.ParserEditStatus;
29
import org.eclipse.gmf.runtime.common.ui.services.parser.ParserOptions;
30
import org.eclipse.gmf.runtime.common.ui.services.parser.ParserService;
31
32
import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;
33
34
import org.eclipse.gmf.runtime.diagram.ui.l10n.DiagramColorRegistry;
35
36
import org.eclipse.gmf.runtime.diagram.ui.requests.RequestConstants;
37
38
import org.eclipse.gmf.runtime.diagram.ui.tools.TextDirectEditManager;
39
40
import org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel;
41
42
import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;
43
44
import org.eclipse.gmf.runtime.emf.type.core.IElementType;
45
46
import org.eclipse.gmf.runtime.emf.ui.services.parser.ISemanticParser;
47
import org.eclipse.gmf.runtime.emf.ui.services.parser.ParserHintAdapter;
48
49
import org.eclipse.gmf.runtime.notation.FontStyle;
50
import org.eclipse.gmf.runtime.notation.NotationPackage;
51
52
import org.eclipse.jface.text.contentassist.IContentAssistProcessor;
53
54
import org.eclipse.jface.viewers.ICellEditorValidator;
55
56
import org.eclipse.swt.SWT;
57
58
import org.eclipse.swt.accessibility.AccessibleEvent;
59
60
import org.eclipse.swt.graphics.Color;
61
import org.eclipse.swt.graphics.FontData;
62
import org.eclipse.swt.graphics.Image;
63
import org.eclipse.uml2.diagram.component.edit.policies.UMLTextSelectionEditPolicy;
64
import org.eclipse.uml2.diagram.component.part.UMLVisualIDRegistry;
65
import org.eclipse.uml2.diagram.component.providers.UMLElementTypes;
66
67
/**
68
 * @generated
69
 */
70
public class PortNameEditPart extends UMLExtNodeLabelEditPart implements ITextAwareEditPart {
71
72
	/**
73
	 * @generated
74
	 */
75
	public static final int VISUAL_ID = 5003;
76
77
	/**
78
	 * @generated
79
	 */
80
	private DirectEditManager manager;
81
82
	/**
83
	 * @generated
84
	 */
85
	private IParser parser;
86
87
	/**
88
	 * @generated
89
	 */
90
	private List parserElements;
91
92
	/**
93
	 * @generated
94
	 */
95
	private String defaultText;
96
97
	/**
98
	 * @generated
99
	 */
100
	static {
101
		registerSnapBackPosition(UMLVisualIDRegistry.getType(PortNameEditPart.VISUAL_ID), new Point(0, 0));
102
	}
103
104
	/**
105
	 * @generated
106
	 */
107
	public PortNameEditPart(View view) {
108
		super(view);
109
	}
110
111
	/**
112
	 * @generated
113
	 */
114
	protected void createDefaultEditPolicies() {
115
		super.createDefaultEditPolicies();
116
		installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE, new LabelDirectEditPolicy());
117
118
	}
119
120
	/**
121
	 * @generated
122
	 */
123
	protected String getLabelTextHelper(IFigure figure) {
124
		if (figure instanceof WrapLabel) {
125
			return ((WrapLabel) figure).getText();
126
		} else {
127
			return ((Label) figure).getText();
128
		}
129
	}
130
131
	/**
132
	 * @generated
133
	 */
134
	protected void setLabelTextHelper(IFigure figure, String text) {
135
		if (figure instanceof WrapLabel) {
136
			((WrapLabel) figure).setText(text);
137
		} else {
138
			((Label) figure).setText(text);
139
		}
140
	}
141
142
	/**
143
	 * @generated
144
	 */
145
	protected Image getLabelIconHelper(IFigure figure) {
146
		if (figure instanceof WrapLabel) {
147
			return ((WrapLabel) figure).getIcon();
148
		} else {
149
			return ((Label) figure).getIcon();
150
		}
151
	}
152
153
	/**
154
	 * @generated
155
	 */
156
	protected void setLabelIconHelper(IFigure figure, Image icon) {
157
		if (figure instanceof WrapLabel) {
158
			((WrapLabel) figure).setIcon(icon);
159
		} else {
160
			((Label) figure).setIcon(icon);
161
		}
162
	}
163
164
	/**
165
	 * @generated
166
	 */
167
	public void setLabel(IFigure figure) {
168
		unregisterVisuals();
169
		setFigure(figure);
170
		defaultText = getLabelTextHelper(figure);
171
		registerVisuals();
172
		refreshVisuals();
173
	}
174
175
	/**
176
	 * @generated
177
	 */
178
	protected List getModelChildren() {
179
		return Collections.EMPTY_LIST;
180
	}
181
182
	/**
183
	 * @generated
184
	 */
185
	public IGraphicalEditPart getChildBySemanticHint(String semanticHint) {
186
		return null;
187
	}
188
189
	/**
190
	 * @generated
191
	 */
192
	protected EObject getParserElement() {
193
		EObject element = resolveSemanticElement();
194
		return element != null ? element : (View) getModel();
195
	}
196
197
	/**
198
	 * @generated
199
	 */
200
	protected Image getLabelIcon() {
201
		return null;
202
	}
203
204
	/**
205
	 * @generated
206
	 */
207
	protected String getLabelText() {
208
		String text = null;
209
		if (getParser() != null) {
210
			text = getParser().getPrintString(new EObjectAdapter(getParserElement()), getParserOptions().intValue());
211
		}
212
		if (text == null || text.length() == 0) {
213
			text = defaultText;
214
		}
215
		return text;
216
	}
217
218
	/**
219
	 * @generated
220
	 */
221
	public void setLabelText(String text) {
222
		setLabelTextHelper(getFigure(), text);
223
		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);
224
		if (pdEditPolicy instanceof UMLTextSelectionEditPolicy) {
225
			((UMLTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();
226
		}
227
	}
228
229
	/**
230
	 * @generated
231
	 */
232
	public String getEditText() {
233
		if (getParser() == null) {
234
			return ""; //$NON-NLS-1$
235
		}
236
		return getParser().getEditString(new EObjectAdapter(getParserElement()), getParserOptions().intValue());
237
	}
238
239
	/**
240
	 * @generated
241
	 */
242
	protected boolean isEditable() {
243
		return getEditText() != null;
244
	}
245
246
	/**
247
	 * @generated
248
	 */
249
	public ICellEditorValidator getEditTextValidator() {
250
		return new ICellEditorValidator() {
251
252
			public String isValid(final Object value) {
253
				if (value instanceof String) {
254
					final EObject element = getParserElement();
255
					final IParser parser = getParser();
256
					try {
257
						IParserEditStatus valid = (IParserEditStatus) getEditingDomain().runExclusive(new RunnableWithResult.Impl() {
258
259
							public void run() {
260
								setResult(parser.isValidEditString(new EObjectAdapter(element), (String) value));
261
							}
262
						});
263
						return valid.getCode() == ParserEditStatus.EDITABLE ? null : valid.getMessage();
264
					} catch (InterruptedException ie) {
265
						ie.printStackTrace();
266
					}
267
				}
268
269
				// shouldn't get here
270
				return null;
271
			}
272
		};
273
	}
274
275
	/**
276
	 * @generated
277
	 */
278
	public IContentAssistProcessor getCompletionProcessor() {
279
		if (getParser() == null) {
280
			return null;
281
		}
282
		return getParser().getCompletionProcessor(new EObjectAdapter(getParserElement()));
283
	}
284
285
	/**
286
	 * @generated
287
	 */
288
	public ParserOptions getParserOptions() {
289
		return ParserOptions.NONE;
290
	}
291
292
	/**
293
	 * @generated
294
	 */
295
	public IParser getParser() {
296
		if (parser == null) {
297
			String parserHint = ((View) getModel()).getType();
298
			ParserHintAdapter hintAdapter = new ParserHintAdapter(getParserElement(), parserHint) {
299
300
				public Object getAdapter(Class adapter) {
301
					if (IElementType.class.equals(adapter)) {
302
						return UMLElementTypes.Port_3002;
303
					}
304
					return super.getAdapter(adapter);
305
				}
306
			};
307
			parser = ParserService.getInstance().getParser(hintAdapter);
308
		}
309
		return parser;
310
	}
311
312
	/**
313
	 * @generated
314
	 */
315
	protected DirectEditManager getManager() {
316
		if (manager == null) {
317
			setManager(new TextDirectEditManager(this, TextDirectEditManager.getTextCellEditorClass(this), UMLEditPartFactory.getTextCellEditorLocator(this)));
318
		}
319
		return manager;
320
	}
321
322
	/**
323
	 * @generated
324
	 */
325
	protected void setManager(DirectEditManager manager) {
326
		this.manager = manager;
327
	}
328
329
	/**
330
	 * @generated
331
	 */
332
	protected void performDirectEdit() {
333
		getManager().show();
334
	}
335
336
	/**
337
	 * @generated
338
	 */
339
	protected void performDirectEdit(Point eventLocation) {
340
		if (getManager().getClass() == TextDirectEditManager.class) {
341
			((TextDirectEditManager) getManager()).show(eventLocation.getSWTPoint());
342
		}
343
	}
344
345
	/**
346
	 * @generated
347
	 */
348
	private void performDirectEdit(char initialCharacter) {
349
		if (getManager() instanceof TextDirectEditManager) {
350
			((TextDirectEditManager) getManager()).show(initialCharacter);
351
		} else {
352
			performDirectEdit();
353
		}
354
	}
355
356
	/**
357
	 * @generated
358
	 */
359
	protected void performDirectEditRequest(Request request) {
360
		final Request theRequest = request;
361
		try {
362
			getEditingDomain().runExclusive(new Runnable() {
363
364
				public void run() {
365
					if (isActive() && isEditable()) {
366
						if (theRequest.getExtendedData().get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR) instanceof Character) {
367
							Character initialChar = (Character) theRequest.getExtendedData().get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR);
368
							performDirectEdit(initialChar.charValue());
369
						} else if ((theRequest instanceof DirectEditRequest) && (getEditText().equals(getLabelText()))) {
370
							DirectEditRequest editRequest = (DirectEditRequest) theRequest;
371
							performDirectEdit(editRequest.getLocation());
372
						} else {
373
							performDirectEdit();
374
						}
375
					}
376
				}
377
			});
378
		} catch (InterruptedException e) {
379
			e.printStackTrace();
380
		}
381
	}
382
383
	/**
384
	 * @generated
385
	 */
386
	protected void refreshVisuals() {
387
		super.refreshVisuals();
388
		refreshLabel();
389
		refreshFont();
390
		refreshFontColor();
391
		refreshUnderline();
392
		refreshStrikeThrough();
393
	}
394
395
	/**
396
	 * @generated
397
	 */
398
	protected void refreshLabel() {
399
		setLabelTextHelper(getFigure(), getLabelText());
400
		setLabelIconHelper(getFigure(), getLabelIcon());
401
		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);
402
		if (pdEditPolicy instanceof UMLTextSelectionEditPolicy) {
403
			((UMLTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();
404
		}
405
	}
406
407
	/**
408
	 * @generated
409
	 */
410
	protected void refreshUnderline() {
411
		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle());
412
		if (style != null && getFigure() instanceof WrapLabel) {
413
			((WrapLabel) getFigure()).setTextUnderline(style.isUnderline());
414
		}
415
	}
416
417
	/**
418
	 * @generated
419
	 */
420
	protected void refreshStrikeThrough() {
421
		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle());
422
		if (style != null && getFigure() instanceof WrapLabel) {
423
			((WrapLabel) getFigure()).setTextStrikeThrough(style.isStrikeThrough());
424
		}
425
	}
426
427
	/**
428
	 * @generated
429
	 */
430
	protected void refreshFont() {
431
		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle());
432
		if (style != null) {
433
			FontData fontData = new FontData(style.getFontName(), style.getFontHeight(), (style.isBold() ? SWT.BOLD : SWT.NORMAL) | (style.isItalic() ? SWT.ITALIC : SWT.NORMAL));
434
			setFont(fontData);
435
		}
436
	}
437
438
	/**
439
	 * @generated
440
	 */
441
	protected void setFontColor(Color color) {
442
		getFigure().setForegroundColor(color);
443
	}
444
445
	/**
446
	 * @generated
447
	 */
448
	protected void addSemanticListeners() {
449
		if (getParser() instanceof ISemanticParser) {
450
			EObject element = resolveSemanticElement();
451
			parserElements = ((ISemanticParser) getParser()).getSemanticElementsBeingParsed(element);
452
			for (int i = 0; i < parserElements.size(); i++) {
453
				addListenerFilter("SemanticModel" + i, this, (EObject) parserElements.get(i)); //$NON-NLS-1$
454
			}
455
		} else {
456
			super.addSemanticListeners();
457
		}
458
	}
459
460
	/**
461
	 * @generated
462
	 */
463
	protected void removeSemanticListeners() {
464
		if (parserElements != null) {
465
			for (int i = 0; i < parserElements.size(); i++) {
466
				removeListenerFilter("SemanticModel" + i); //$NON-NLS-1$
467
			}
468
		} else {
469
			super.removeSemanticListeners();
470
		}
471
	}
472
473
	/**
474
	 * @generated
475
	 */
476
	protected AccessibleEditPart getAccessibleEditPart() {
477
		if (accessibleEP == null) {
478
			accessibleEP = new AccessibleGraphicalEditPart() {
479
480
				public void getName(AccessibleEvent e) {
481
					e.result = getLabelTextHelper(getFigure());
482
				}
483
			};
484
		}
485
		return accessibleEP;
486
	}
487
488
	/**
489
	 * @generated
490
	 */
491
	private View getFontStyleOwnerView() {
492
		return getPrimaryView();
493
	}
494
495
	/**
496
	 * @generated
497
	 */
498
	protected void handleNotificationEvent(Notification event) {
499
		Object feature = event.getFeature();
500
		if (NotationPackage.eINSTANCE.getFontStyle_FontColor().equals(feature)) {
501
			Integer c = (Integer) event.getNewValue();
502
			setFontColor(DiagramColorRegistry.getInstance().getColor(c));
503
		} else if (NotationPackage.eINSTANCE.getFontStyle_Underline().equals(feature)) {
504
			refreshUnderline();
505
		} else if (NotationPackage.eINSTANCE.getFontStyle_StrikeThrough().equals(feature)) {
506
			refreshStrikeThrough();
507
		} else if (NotationPackage.eINSTANCE.getFontStyle_FontHeight().equals(feature) || NotationPackage.eINSTANCE.getFontStyle_FontName().equals(feature)
508
				|| NotationPackage.eINSTANCE.getFontStyle_Bold().equals(feature) || NotationPackage.eINSTANCE.getFontStyle_Italic().equals(feature)) {
509
			refreshFont();
510
		} else {
511
			if (getParser() != null && getParser().isAffectingEvent(event, getParserOptions().intValue())) {
512
				refreshLabel();
513
			}
514
			if (getParser() instanceof ISemanticParser) {
515
				ISemanticParser modelParser = (ISemanticParser) getParser();
516
				if (modelParser.areSemanticElementsAffected(null, event)) {
517
					removeSemanticListeners();
518
					if (resolveSemanticElement() != null) {
519
						addSemanticListeners();
520
					}
521
					refreshLabel();
522
				}
523
			}
524
		}
525
		super.handleNotificationEvent(event);
526
	}
527
528
	/**
529
	 * @generated
530
	 */
531
	protected IFigure createFigure() {
532
		IFigure label = createFigurePrim();
533
		defaultText = getLabelTextHelper(label);
534
		return label;
535
	}
536
537
	/**
538
	 * @generated
539
	 */
540
	protected IFigure createFigurePrim() {
541
		return new WrapLabel();
542
	}
543
544
}
(-)src/org/eclipse/uml2/diagram/component/edit/helpers/ArtifactEditHelper.java (+7 lines)
Added Link Here
1
package org.eclipse.uml2.diagram.component.edit.helpers;
2
3
/**
4
 * @generated
5
 */
6
public class ArtifactEditHelper extends UMLBaseEditHelper {
7
}
(-)src/org/eclipse/uml2/diagram/component/edit/helpers/InterfaceEditHelperAdvice.java (+9 lines)
Added Link Here
1
package org.eclipse.uml2.diagram.component.edit.helpers;
2
3
import org.eclipse.gmf.runtime.emf.type.core.edithelper.AbstractEditHelperAdvice;
4
5
/**
6
 * @generated
7
 */
8
public class InterfaceEditHelperAdvice extends AbstractEditHelperAdvice {
9
}
(-)src/org/eclipse/uml2/diagram/component/edit/policies/ComponentContents2CanonicalEditPolicy.java (+71 lines)
Added Link Here
1
package org.eclipse.uml2.diagram.component.edit.policies;
2
3
import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy;
4
import org.eclipse.gmf.runtime.notation.View;
5
import java.util.Iterator;
6
import java.util.LinkedList;
7
import java.util.List;
8
9
import org.eclipse.emf.ecore.EObject;
10
11
import org.eclipse.uml2.diagram.component.edit.parts.ArtifactEditPart;
12
import org.eclipse.uml2.diagram.component.edit.parts.ClassEditPart;
13
import org.eclipse.uml2.diagram.component.edit.parts.Component2EditPart;
14
import org.eclipse.uml2.diagram.component.edit.parts.InterfaceEditPart;
15
import org.eclipse.uml2.diagram.component.part.UMLVisualIDRegistry;
16
import org.eclipse.uml2.uml.Component;
17
18
/**
19
 * @generated
20
 */
21
public class ComponentContents2CanonicalEditPolicy extends CanonicalEditPolicy {
22
23
	/**
24
	 * @generated
25
	 */
26
	protected List getSemanticChildrenList() {
27
		List result = new LinkedList();
28
		EObject modelObject = ((View) getHost().getModel()).getElement();
29
		View viewObject = (View) getHost().getModel();
30
		EObject nextValue;
31
		int nodeVID;
32
		for (Iterator values = ((Component) modelObject).getPackagedElements().iterator(); values.hasNext();) {
33
			nextValue = (EObject) values.next();
34
			nodeVID = UMLVisualIDRegistry.getNodeVisualID(viewObject, nextValue);
35
			switch (nodeVID) {
36
			case Component2EditPart.VISUAL_ID: {
37
				result.add(nextValue);
38
				break;
39
			}
40
			case ArtifactEditPart.VISUAL_ID: {
41
				result.add(nextValue);
42
				break;
43
			}
44
			case ClassEditPart.VISUAL_ID: {
45
				result.add(nextValue);
46
				break;
47
			}
48
			case InterfaceEditPart.VISUAL_ID: {
49
				result.add(nextValue);
50
				break;
51
			}
52
			}
53
		}
54
		return result;
55
	}
56
57
	/**
58
	 * @generated
59
	 */
60
	protected boolean shouldDeleteView(View view) {
61
		return view.isSetElement() && view.getElement() != null && view.getElement().eIsProxy();
62
	}
63
64
	/**
65
	 * @generated
66
	 */
67
	protected String getDefaultFactoryHint() {
68
		return null;
69
	}
70
71
}
(-)src/org/eclipse/uml2/diagram/component/edit/parts/ArtifactName2EditPart.java (+574 lines)
Added Link Here
1
package org.eclipse.uml2.diagram.component.edit.parts;
2
3
import java.util.ArrayList;
4
import java.util.List;
5
import org.eclipse.gef.EditPolicy;
6
import org.eclipse.gef.GraphicalEditPart;
7
import org.eclipse.gef.Request;
8
import org.eclipse.gef.commands.Command;
9
import org.eclipse.gef.editpolicies.NonResizableEditPolicy;
10
import org.eclipse.gef.handles.NonResizableHandleKit;
11
import org.eclipse.gmf.runtime.diagram.ui.editparts.ITextAwareEditPart;
12
import org.eclipse.gmf.runtime.diagram.ui.editpolicies.LabelDirectEditPolicy;
13
import org.eclipse.gmf.runtime.notation.View;
14
import java.util.Collections;
15
16
import org.eclipse.draw2d.IFigure;
17
import org.eclipse.draw2d.Label;
18
19
import org.eclipse.draw2d.geometry.Point;
20
21
import org.eclipse.emf.common.notify.Notification;
22
23
import org.eclipse.emf.ecore.EObject;
24
25
import org.eclipse.emf.transaction.RunnableWithResult;
26
27
import org.eclipse.gef.AccessibleEditPart;
28
29
import org.eclipse.gef.requests.DirectEditRequest;
30
31
import org.eclipse.gef.tools.DirectEditManager;
32
33
import org.eclipse.gmf.runtime.common.ui.services.parser.IParser;
34
import org.eclipse.gmf.runtime.common.ui.services.parser.IParserEditStatus;
35
import org.eclipse.gmf.runtime.common.ui.services.parser.ParserEditStatus;
36
import org.eclipse.gmf.runtime.common.ui.services.parser.ParserOptions;
37
import org.eclipse.gmf.runtime.common.ui.services.parser.ParserService;
38
39
import org.eclipse.gmf.runtime.diagram.ui.editparts.CompartmentEditPart;
40
import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;
41
42
import org.eclipse.gmf.runtime.diagram.ui.l10n.DiagramColorRegistry;
43
44
import org.eclipse.gmf.runtime.diagram.ui.requests.RequestConstants;
45
46
import org.eclipse.gmf.runtime.diagram.ui.tools.TextDirectEditManager;
47
48
import org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel;
49
50
import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;
51
52
import org.eclipse.gmf.runtime.emf.type.core.IElementType;
53
54
import org.eclipse.gmf.runtime.emf.ui.services.parser.ISemanticParser;
55
import org.eclipse.gmf.runtime.emf.ui.services.parser.ParserHintAdapter;
56
57
import org.eclipse.gmf.runtime.notation.FontStyle;
58
import org.eclipse.gmf.runtime.notation.NotationPackage;
59
60
import org.eclipse.jface.resource.ImageDescriptor;
61
62
import org.eclipse.jface.text.contentassist.IContentAssistProcessor;
63
64
import org.eclipse.jface.viewers.ICellEditorValidator;
65
66
import org.eclipse.swt.SWT;
67
68
import org.eclipse.swt.accessibility.AccessibleEvent;
69
70
import org.eclipse.swt.graphics.Color;
71
import org.eclipse.swt.graphics.FontData;
72
import org.eclipse.swt.graphics.Image;
73
import org.eclipse.uml2.diagram.component.edit.policies.UMLTextSelectionEditPolicy;
74
import org.eclipse.uml2.diagram.component.part.UMLDiagramEditorPlugin;
75
import org.eclipse.uml2.diagram.component.providers.UMLElementTypes;
76
77
/**
78
 * @generated
79
 */
80
public class ArtifactName2EditPart extends CompartmentEditPart implements ITextAwareEditPart {
81
82
	/**
83
	 * @generated
84
	 */
85
	public static final int VISUAL_ID = 5004;
86
87
	/**
88
	 * @generated
89
	 */
90
	private DirectEditManager manager;
91
92
	/**
93
	 * @generated
94
	 */
95
	private IParser parser;
96
97
	/**
98
	 * @generated
99
	 */
100
	private List parserElements;
101
102
	/**
103
	 * @generated
104
	 */
105
	private String defaultText;
106
107
	/**
108
	 * @generated
109
	 */
110
	public ArtifactName2EditPart(View view) {
111
		super(view);
112
	}
113
114
	/**
115
	 * @generated
116
	 */
117
	protected void createDefaultEditPolicies() {
118
		super.createDefaultEditPolicies();
119
		installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE, new LabelDirectEditPolicy());
120
		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE, new NonResizableEditPolicy() {
121
122
			protected List createSelectionHandles() {
123
				List handles = new ArrayList();
124
				NonResizableHandleKit.addMoveHandle((GraphicalEditPart) getHost(), handles);
125
				return handles;
126
			}
127
128
			public Command getCommand(Request request) {
129
				return null;
130
			}
131
132
			public boolean understandsRequest(Request request) {
133
				return false;
134
			}
135
		});
136
137
	}
138
139
	/**
140
	 * @generated
141
	 */
142
	protected String getLabelTextHelper(IFigure figure) {
143
		if (figure instanceof WrapLabel) {
144
			return ((WrapLabel) figure).getText();
145
		} else {
146
			return ((Label) figure).getText();
147
		}
148
	}
149
150
	/**
151
	 * @generated
152
	 */
153
	protected void setLabelTextHelper(IFigure figure, String text) {
154
		if (figure instanceof WrapLabel) {
155
			((WrapLabel) figure).setText(text);
156
		} else {
157
			((Label) figure).setText(text);
158
		}
159
	}
160
161
	/**
162
	 * @generated
163
	 */
164
	protected Image getLabelIconHelper(IFigure figure) {
165
		if (figure instanceof WrapLabel) {
166
			return ((WrapLabel) figure).getIcon();
167
		} else {
168
			return ((Label) figure).getIcon();
169
		}
170
	}
171
172
	/**
173
	 * @generated
174
	 */
175
	protected void setLabelIconHelper(IFigure figure, Image icon) {
176
		if (figure instanceof WrapLabel) {
177
			((WrapLabel) figure).setIcon(icon);
178
		} else {
179
			((Label) figure).setIcon(icon);
180
		}
181
	}
182
183
	/**
184
	 * @generated
185
	 */
186
	public void setLabel(WrapLabel figure) {
187
		unregisterVisuals();
188
		setFigure(figure);
189
		defaultText = getLabelTextHelper(figure);
190
		registerVisuals();
191
		refreshVisuals();
192
	}
193
194
	/**
195
	 * @generated
196
	 */
197
	protected List getModelChildren() {
198
		return Collections.EMPTY_LIST;
199
	}
200
201
	/**
202
	 * @generated
203
	 */
204
	public IGraphicalEditPart getChildBySemanticHint(String semanticHint) {
205
		return null;
206
	}
207
208
	/**
209
	 * @generated
210
	 */
211
	protected EObject getParserElement() {
212
		EObject element = resolveSemanticElement();
213
		return element != null ? element : (View) getModel();
214
	}
215
216
	/**
217
	 * @generated
218
	 */
219
	protected Image getLabelIcon() {
220
		EObject parserElement = getParserElement();
221
		if (parserElement == null) {
222
			return null;
223
		}
224
		return UMLElementTypes.getImage(parserElement.eClass());
225
	}
226
227
	/**
228
	 * @generated
229
	 */
230
	protected String getLabelText() {
231
		String text = null;
232
		if (getParser() != null) {
233
			text = getParser().getPrintString(new EObjectAdapter(getParserElement()), getParserOptions().intValue());
234
		}
235
		if (text == null || text.length() == 0) {
236
			text = defaultText;
237
		}
238
		return text;
239
	}
240
241
	/**
242
	 * @generated
243
	 */
244
	public void setLabelText(String text) {
245
		setLabelTextHelper(getFigure(), text);
246
		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);
247
		if (pdEditPolicy instanceof UMLTextSelectionEditPolicy) {
248
			((UMLTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();
249
		}
250
	}
251
252
	/**
253
	 * @generated
254
	 */
255
	public String getEditText() {
256
		if (getParser() == null) {
257
			return ""; //$NON-NLS-1$
258
		}
259
		return getParser().getEditString(new EObjectAdapter(getParserElement()), getParserOptions().intValue());
260
	}
261
262
	/**
263
	 * @generated
264
	 */
265
	protected boolean isEditable() {
266
		return getEditText() != null;
267
	}
268
269
	/**
270
	 * @generated
271
	 */
272
	public ICellEditorValidator getEditTextValidator() {
273
		return new ICellEditorValidator() {
274
275
			public String isValid(final Object value) {
276
				if (value instanceof String) {
277
					final EObject element = getParserElement();
278
					final IParser parser = getParser();
279
					try {
280
						IParserEditStatus valid = (IParserEditStatus) getEditingDomain().runExclusive(new RunnableWithResult.Impl() {
281
282
							public void run() {
283
								setResult(parser.isValidEditString(new EObjectAdapter(element), (String) value));
284
							}
285
						});
286
						return valid.getCode() == ParserEditStatus.EDITABLE ? null : valid.getMessage();
287
					} catch (InterruptedException ie) {
288
						ie.printStackTrace();
289
					}
290
				}
291
292
				// shouldn't get here
293
				return null;
294
			}
295
		};
296
	}
297
298
	/**
299
	 * @generated
300
	 */
301
	public IContentAssistProcessor getCompletionProcessor() {
302
		if (getParser() == null) {
303
			return null;
304
		}
305
		return getParser().getCompletionProcessor(new EObjectAdapter(getParserElement()));
306
	}
307
308
	/**
309
	 * @generated
310
	 */
311
	public ParserOptions getParserOptions() {
312
		return ParserOptions.NONE;
313
	}
314
315
	/**
316
	 * @generated
317
	 */
318
	public IParser getParser() {
319
		if (parser == null) {
320
			String parserHint = ((View) getModel()).getType();
321
			ParserHintAdapter hintAdapter = new ParserHintAdapter(getParserElement(), parserHint) {
322
323
				public Object getAdapter(Class adapter) {
324
					if (IElementType.class.equals(adapter)) {
325
						return UMLElementTypes.Artifact_2002;
326
					}
327
					return super.getAdapter(adapter);
328
				}
329
			};
330
			parser = ParserService.getInstance().getParser(hintAdapter);
331
		}
332
		return parser;
333
	}
334
335
	/**
336
	 * @generated
337
	 */
338
	protected DirectEditManager getManager() {
339
		if (manager == null) {
340
			setManager(new TextDirectEditManager(this, TextDirectEditManager.getTextCellEditorClass(this), UMLEditPartFactory.getTextCellEditorLocator(this)));
341
		}
342
		return manager;
343
	}
344
345
	/**
346
	 * @generated
347
	 */
348
	protected void setManager(DirectEditManager manager) {
349
		this.manager = manager;
350
	}
351
352
	/**
353
	 * @generated
354
	 */
355
	protected void performDirectEdit() {
356
		getManager().show();
357
	}
358
359
	/**
360
	 * @generated
361
	 */
362
	protected void performDirectEdit(Point eventLocation) {
363
		if (getManager().getClass() == TextDirectEditManager.class) {
364
			((TextDirectEditManager) getManager()).show(eventLocation.getSWTPoint());
365
		}
366
	}
367
368
	/**
369
	 * @generated
370
	 */
371
	private void performDirectEdit(char initialCharacter) {
372
		if (getManager() instanceof TextDirectEditManager) {
373
			((TextDirectEditManager) getManager()).show(initialCharacter);
374
		} else {
375
			performDirectEdit();
376
		}
377
	}
378
379
	/**
380
	 * @generated
381
	 */
382
	protected void performDirectEditRequest(Request request) {
383
		final Request theRequest = request;
384
		try {
385
			getEditingDomain().runExclusive(new Runnable() {
386
387
				public void run() {
388
					if (isActive() && isEditable()) {
389
						if (theRequest.getExtendedData().get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR) instanceof Character) {
390
							Character initialChar = (Character) theRequest.getExtendedData().get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR);
391
							performDirectEdit(initialChar.charValue());
392
						} else if ((theRequest instanceof DirectEditRequest) && (getEditText().equals(getLabelText()))) {
393
							DirectEditRequest editRequest = (DirectEditRequest) theRequest;
394
							performDirectEdit(editRequest.getLocation());
395
						} else {
396
							performDirectEdit();
397
						}
398
					}
399
				}
400
			});
401
		} catch (InterruptedException e) {
402
			e.printStackTrace();
403
		}
404
	}
405
406
	/**
407
	 * @generated
408
	 */
409
	protected void refreshVisuals() {
410
		super.refreshVisuals();
411
		refreshLabel();
412
		refreshFont();
413
		refreshFontColor();
414
		refreshUnderline();
415
		refreshStrikeThrough();
416
	}
417
418
	/**
419
	 * @generated
420
	 */
421
	protected void refreshLabel() {
422
		setLabelTextHelper(getFigure(), getLabelText());
423
		setLabelIconHelper(getFigure(), getLabelIcon());
424
		Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);
425
		if (pdEditPolicy instanceof UMLTextSelectionEditPolicy) {
426
			((UMLTextSelectionEditPolicy) pdEditPolicy).refreshFeedback();
427
		}
428
	}
429
430
	/**
431
	 * @generated
432
	 */
433
	protected void refreshUnderline() {
434
		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle());
435
		if (style != null && getFigure() instanceof WrapLabel) {
436
			((WrapLabel) getFigure()).setTextUnderline(style.isUnderline());
437
		}
438
	}
439
440
	/**
441
	 * @generated
442
	 */
443
	protected void refreshStrikeThrough() {
444
		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle());
445
		if (style != null && getFigure() instanceof WrapLabel) {
446
			((WrapLabel) getFigure()).setTextStrikeThrough(style.isStrikeThrough());
447
		}
448
	}
449
450
	/**
451
	 * @generated
452
	 */
453
	protected void refreshFont() {
454
		FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle());
455
		if (style != null) {
456
			FontData fontData = new FontData(style.getFontName(), style.getFontHeight(), (style.isBold() ? SWT.BOLD : SWT.NORMAL) | (style.isItalic() ? SWT.ITALIC : SWT.NORMAL));
457
			setFont(fontData);
458
		}
459
	}
460
461
	/**
462
	 * @generated
463
	 */
464
	protected void setFontColor(Color color) {
465
		getFigure().setForegroundColor(color);
466
	}
467
468
	/**
469
	 * @generated
470
	 */
471
	protected void addSemanticListeners() {
472
		if (getParser() instanceof ISemanticParser) {
473
			EObject element = resolveSemanticElement();
474
			parserElements = ((ISemanticParser) getParser()).getSemanticElementsBeingParsed(element);
475
			for (int i = 0; i < parserElements.size(); i++) {
476
				addListenerFilter("SemanticModel" + i, this, (EObject) parserElements.get(i)); //$NON-NLS-1$
477
			}
478
		} else {
479
			super.addSemanticListeners();
480
		}
481
	}
482
483
	/**
484
	 * @generated
485
	 */
486
	protected void removeSemanticListeners() {
487
		if (parserElements != null) {
488
			for (int i = 0; i < parserElements.size(); i++) {
489
				removeListenerFilter("SemanticModel" + i); //$NON-NLS-1$
490
			}
491
		} else {
492
			super.removeSemanticListeners();
493
		}
494
	}
495
496
	/**
497
	 * @generated
498
	 */
499
	protected AccessibleEditPart getAccessibleEditPart() {
500
		if (accessibleEP == null) {
501
			accessibleEP = new AccessibleGraphicalEditPart() {
502
503
				public void getName(AccessibleEvent e) {
504
					e.result = getLabelTextHelper(getFigure());
505
				}
506
			};
507
		}
508
		return accessibleEP;
509
	}
510
511
	/**
512
	 * @generated
513
	 */
514
	private View getFontStyleOwnerView() {
515
		return getPrimaryView();
516
	}
517
518
	/**
519
	 * @generated
520
	 */
521
	protected void addNotationalListeners() {
522
		super.addNotationalListeners();
523
		addListenerFilter("PrimaryView", this, getPrimaryView()); //$NON-NLS-1$
524
	}
525
526
	/**
527
	 * @generated
528
	 */
529
	protected void removeNotationalListeners() {
530
		super.removeNotationalListeners();
531
		removeListenerFilter("PrimaryView"); //$NON-NLS-1$
532
	}
533
534
	/**
535
	 * @generated
536
	 */
537
	protected void handleNotificationEvent(Notification event) {
538
		Object feature = event.getFeature();
539
		if (NotationPackage.eINSTANCE.getFontStyle_FontColor().equals(feature)) {
540
			Integer c = (Integer) event.getNewValue();
541
			setFontColor(DiagramColorRegistry.getInstance().getColor(c));
542
		} else if (NotationPackage.eINSTANCE.getFontStyle_Underline().equals(feature)) {
543
			refreshUnderline();
544
		} else if (NotationPackage.eINSTANCE.getFontStyle_StrikeThrough().equals(feature)) {
545
			refreshStrikeThrough();
546
		} else if (NotationPackage.eINSTANCE.getFontStyle_FontHeight().equals(feature) || NotationPackage.eINSTANCE.getFontStyle_FontName().equals(feature)
547
				|| NotationPackage.eINSTANCE.getFontStyle_Bold().equals(feature) || NotationPackage.eINSTANCE.getFontStyle_Italic().equals(feature)) {
548
			refreshFont();
549
		} else {
550
			if (getParser() != null && getParser().isAffectingEvent(event, getParserOptions().intValue())) {
551
				refreshLabel();
552
			}
553
			if (getParser() instanceof ISemanticParser) {
554
				ISemanticParser modelParser = (ISemanticParser) getParser();
555
				if (modelParser.areSemanticElementsAffected(null, event)) {
556
					removeSemanticListeners();
557
					if (resolveSemanticElement() != null) {
558
						addSemanticListeners();
559
					}
560
					refreshLabel();
561
				}
562
			}
563
		}
564
		super.handleNotificationEvent(event);
565
	}
566
567
	/**
568
	 * @generated
569
	 */
570
	protected IFigure createFigure() {
571
		// Parent should assign one using setLabel method
572
		return null;
573
	}
574
}
(-)src/org/eclipse/uml2/diagram/component/view/factories/Artifact2ViewFactory.java (+57 lines)
Added Link Here
1
package org.eclipse.uml2.diagram.component.view.factories;
2
3
import java.util.ArrayList;
4
import java.util.List;
5
6
import org.eclipse.core.runtime.IAdaptable;
7
8
import org.eclipse.emf.ecore.EAnnotation;
9
import org.eclipse.emf.ecore.EcoreFactory;
10
11
import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil;
12
13
import org.eclipse.gmf.runtime.diagram.ui.view.factories.AbstractShapeViewFactory;
14
15
import org.eclipse.gmf.runtime.notation.NotationFactory;
16
import org.eclipse.gmf.runtime.notation.View;
17
18
import org.eclipse.uml2.diagram.component.edit.parts.ArtifactName2EditPart;
19
import org.eclipse.uml2.diagram.component.edit.parts.PackageEditPart;
20
import org.eclipse.uml2.diagram.component.part.UMLVisualIDRegistry;
21
22
/**
23
 * @generated
24
 */
25
public class Artifact2ViewFactory extends AbstractShapeViewFactory {
26
27
	/**
28
	 * @generated 
29
	 */
30
	protected List createStyles(View view) {
31
		List styles = new ArrayList();
32
		styles.add(NotationFactory.eINSTANCE.createFontStyle());
33
		styles.add(NotationFactory.eINSTANCE.createDescriptionStyle());
34
		styles.add(NotationFactory.eINSTANCE.createFillStyle());
35
		styles.add(NotationFactory.eINSTANCE.createLineStyle());
36
		return styles;
37
	}
38
39
	/**
40
	 * @generated
41
	 */
42
	protected void decorateView(View containerView, View view, IAdaptable semanticAdapter, String semanticHint, int index, boolean persisted) {
43
		if (semanticHint == null) {
44
			semanticHint = UMLVisualIDRegistry.getType(org.eclipse.uml2.diagram.component.edit.parts.Artifact2EditPart.VISUAL_ID);
45
			view.setType(semanticHint);
46
		}
47
		super.decorateView(containerView, view, semanticAdapter, semanticHint, index, persisted);
48
		if (!PackageEditPart.MODEL_ID.equals(UMLVisualIDRegistry.getModelID(containerView))) {
49
			EAnnotation shortcutAnnotation = EcoreFactory.eINSTANCE.createEAnnotation();
50
			shortcutAnnotation.setSource("Shortcut"); //$NON-NLS-1$
51
			shortcutAnnotation.getDetails().put("modelID", PackageEditPart.MODEL_ID); //$NON-NLS-1$
52
			view.getEAnnotations().add(shortcutAnnotation);
53
		}
54
		getViewService().createNode(semanticAdapter, view, UMLVisualIDRegistry.getType(ArtifactName2EditPart.VISUAL_ID), ViewUtil.APPEND, true, getPreferencesHint());
55
	}
56
57
}
(-)src/org/eclipse/uml2/diagram/component/edit/parts/UMLExtNodeLabelEditPart.java (+85 lines)
Added Link Here
1
package org.eclipse.uml2.diagram.component.edit.parts;
2
3
import org.eclipse.draw2d.IFigure;
4
import org.eclipse.draw2d.geometry.Dimension;
5
import org.eclipse.draw2d.geometry.Point;
6
import org.eclipse.gef.EditPolicy;
7
import org.eclipse.gef.GraphicalEditPart;
8
import org.eclipse.gef.Handle;
9
import org.eclipse.gef.handles.AbstractHandle;
10
import org.eclipse.gmf.runtime.diagram.ui.editparts.LabelEditPart;
11
import org.eclipse.gmf.runtime.diagram.ui.editpolicies.NonResizableLabelEditPolicy;
12
import org.eclipse.gmf.runtime.diagram.ui.figures.LabelLocator;
13
import org.eclipse.gmf.runtime.diagram.ui.tools.DragEditPartsTrackerEx;
14
import org.eclipse.gmf.runtime.notation.NotationPackage;
15
import org.eclipse.gmf.runtime.notation.View;
16
17
/**
18
 * @generated
19
 */
20
public class UMLExtNodeLabelEditPart extends LabelEditPart {
21
22
	/**
23
	 * @generated
24
	 */
25
	public UMLExtNodeLabelEditPart(View view) {
26
		super(view);
27
	}
28
29
	/**
30
	 * @generated
31
	 */
32
	protected void createDefaultEditPolicies() {
33
		super.createDefaultEditPolicies();
34
		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE, new NonResizableLabelEditPolicy() {
35
36
			protected void replaceHandleDragEditPartsTracker(Handle handle) {
37
				if (handle instanceof AbstractHandle) {
38
					((AbstractHandle) handle).setDragTracker(new DragEditPartsTrackerEx(getHost()) {
39
40
						protected boolean isMove() {
41
							return true;
42
						}
43
					});
44
				}
45
			}
46
		});
47
	}
48
49
	/**
50
	 * @generated
51
	 */
52
	public void refreshBounds() {
53
		IFigure refFigure = ((GraphicalEditPart) getParent()).getFigure();
54
		int dx = ((Integer) getStructuralFeatureValue(NotationPackage.eINSTANCE.getLocation_X())).intValue();
55
		int dy = ((Integer) getStructuralFeatureValue(NotationPackage.eINSTANCE.getLocation_Y())).intValue();
56
		Point offset = new Point(dx, dy);
57
		getFigure().getParent().setConstraint(getFigure(), new LabelLocator(refFigure, offset, getKeyPoint()) {
58
59
			public void relocate(IFigure target) {
60
				Point location = getReferencePoint().getTranslated(getOffset());
61
				location.translate(-target.getBounds().width / 2, 0);
62
				target.setLocation(location);
63
				target.setSize(new Dimension(target.getPreferredSize().width, target.getPreferredSize().height));
64
			}
65
66
			protected Point getReferencePoint() {
67
				return getLabelLocation(parent);
68
			}
69
		});
70
	}
71
72
	/**
73
	 * @generated
74
	 */
75
	public Point getReferencePoint() {
76
		return getLabelLocation(((GraphicalEditPart) getParent()).getFigure());
77
	}
78
79
	/**
80
	 * @generated
81
	 */
82
	protected Point getLabelLocation(IFigure parent) {
83
		return parent.getBounds().getBottom();
84
	}
85
}
(-)src/org/eclipse/uml2/diagram/component/view/factories/InterfaceViewFactory.java (+57 lines)
Added Link Here
1
package org.eclipse.uml2.diagram.component.view.factories;
2
3
import java.util.ArrayList;
4
import java.util.List;
5
6
import org.eclipse.core.runtime.IAdaptable;
7
8
import org.eclipse.emf.ecore.EAnnotation;
9
import org.eclipse.emf.ecore.EcoreFactory;
10
11
import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil;
12
13
import org.eclipse.gmf.runtime.diagram.ui.view.factories.AbstractShapeViewFactory;
14
15
import org.eclipse.gmf.runtime.notation.NotationFactory;
16
import org.eclipse.gmf.runtime.notation.View;
17
18
import org.eclipse.uml2.diagram.component.edit.parts.InterfaceNameEditPart;
19
import org.eclipse.uml2.diagram.component.edit.parts.PackageEditPart;
20
import org.eclipse.uml2.diagram.component.part.UMLVisualIDRegistry;
21
22
/**
23
 * @generated
24
 */
25
public class InterfaceViewFactory extends AbstractShapeViewFactory {
26
27
	/**
28
	 * @generated 
29
	 */
30
	protected List createStyles(View view) {
31
		List styles = new ArrayList();
32
		styles.add(NotationFactory.eINSTANCE.createFontStyle());
33
		styles.add(NotationFactory.eINSTANCE.createDescriptionStyle());
34
		styles.add(NotationFactory.eINSTANCE.createFillStyle());
35
		styles.add(NotationFactory.eINSTANCE.createLineStyle());
36
		return styles;
37
	}
38
39
	/**
40
	 * @generated
41
	 */
42
	protected void decorateView(View containerView, View view, IAdaptable semanticAdapter, String semanticHint, int index, boolean persisted) {
43
		if (semanticHint == null) {
44
			semanticHint = UMLVisualIDRegistry.getType(org.eclipse.uml2.diagram.component.edit.parts.InterfaceEditPart.VISUAL_ID);
45
			view.setType(semanticHint);
46
		}
47
		super.decorateView(containerView, view, semanticAdapter, semanticHint, index, persisted);
48
		if (!PackageEditPart.MODEL_ID.equals(UMLVisualIDRegistry.getModelID(containerView))) {
49
			EAnnotation shortcutAnnotation = EcoreFactory.eINSTANCE.createEAnnotation();
50
			shortcutAnnotation.setSource("Shortcut"); //$NON-NLS-1$
51
			shortcutAnnotation.getDetails().put("modelID", PackageEditPart.MODEL_ID); //$NON-NLS-1$
52
			view.getEAnnotations().add(shortcutAnnotation);
53
		}
54
		getViewService().createNode(semanticAdapter, view, UMLVisualIDRegistry.getType(InterfaceNameEditPart.VISUAL_ID), ViewUtil.APPEND, true, getPreferencesHint());
55
	}
56
57
}
(-)src/org/eclipse/uml2/diagram/component/part/UMLVisualIDRegistry.java (+600 lines)
Added Link Here
1
package org.eclipse.uml2.diagram.component.part;
2
3
import org.eclipse.core.runtime.Platform;
4
5
import org.eclipse.emf.ecore.EAnnotation;
6
import org.eclipse.emf.ecore.EClass;
7
import org.eclipse.emf.ecore.EObject;
8
9
import org.eclipse.gmf.runtime.notation.Diagram;
10
import org.eclipse.gmf.runtime.notation.View;
11
12
import org.eclipse.uml2.diagram.component.edit.parts.Artifact2EditPart;
13
import org.eclipse.uml2.diagram.component.edit.parts.ArtifactEditPart;
14
import org.eclipse.uml2.diagram.component.edit.parts.ArtifactName2EditPart;
15
import org.eclipse.uml2.diagram.component.edit.parts.ArtifactNameEditPart;
16
import org.eclipse.uml2.diagram.component.edit.parts.Class2EditPart;
17
import org.eclipse.uml2.diagram.component.edit.parts.ClassEditPart;
18
import org.eclipse.uml2.diagram.component.edit.parts.ClassName2EditPart;
19
import org.eclipse.uml2.diagram.component.edit.parts.ClassNameEditPart;
20
import org.eclipse.uml2.diagram.component.edit.parts.Component2EditPart;
21
import org.eclipse.uml2.diagram.component.edit.parts.ComponentContents2EditPart;
22
import org.eclipse.uml2.diagram.component.edit.parts.ComponentContentsEditPart;
23
import org.eclipse.uml2.diagram.component.edit.parts.ComponentEditPart;
24
import org.eclipse.uml2.diagram.component.edit.parts.ComponentName2EditPart;
25
import org.eclipse.uml2.diagram.component.edit.parts.ComponentNameEditPart;
26
import org.eclipse.uml2.diagram.component.edit.parts.Interface2EditPart;
27
import org.eclipse.uml2.diagram.component.edit.parts.InterfaceEditPart;
28
import org.eclipse.uml2.diagram.component.edit.parts.InterfaceName2EditPart;
29
import org.eclipse.uml2.diagram.component.edit.parts.InterfaceNameEditPart;
30
import org.eclipse.uml2.diagram.component.edit.parts.InterfaceRealizationEditPart;
31
import org.eclipse.uml2.diagram.component.edit.parts.PackageEditPart;
32
import org.eclipse.uml2.diagram.component.edit.parts.PortEditPart;
33
import org.eclipse.uml2.diagram.component.edit.parts.PortNameEditPart;
34
import org.eclipse.uml2.diagram.component.expressions.UMLAbstractExpression;
35
import org.eclipse.uml2.diagram.component.expressions.UMLOCLFactory;
36
import org.eclipse.uml2.uml.Artifact;
37
import org.eclipse.uml2.uml.Component;
38
import org.eclipse.uml2.uml.Interface;
39
import org.eclipse.uml2.uml.InterfaceRealization;
40
import org.eclipse.uml2.uml.Port;
41
import org.eclipse.uml2.uml.UMLPackage;
42
43
/**
44
 * This registry is used to determine which type of visual object should be
45
 * created for the corresponding Diagram, Node, ChildNode or Link represented 
46
 * by a domain model object.
47
 *
48
 * @generated
49
 */
50
public class UMLVisualIDRegistry {
51
52
	/**
53
	 * @generated
54
	 */
55
	private static final String DEBUG_KEY = UMLDiagramEditorPlugin.getInstance().getBundle().getSymbolicName() + "/debug/visualID"; //$NON-NLS-1$
56
57
	/**
58
	 * @generated
59
	 */
60
	public static int getVisualID(View view) {
61
		if (view instanceof Diagram) {
62
			if (PackageEditPart.MODEL_ID.equals(view.getType())) {
63
				return PackageEditPart.VISUAL_ID;
64
			} else {
65
				return -1;
66
			}
67
		}
68
		return getVisualID(view.getType());
69
	}
70
71
	/**
72
	 * @generated
73
	 */
74
	public static String getModelID(View view) {
75
		View diagram = view.getDiagram();
76
		while (view != diagram) {
77
			EAnnotation annotation = view.getEAnnotation("Shortcut"); //$NON-NLS-1$
78
			if (annotation != null) {
79
				return (String) annotation.getDetails().get("modelID"); //$NON-NLS-1$
80
			}
81
			view = (View) view.eContainer();
82
		}
83
		return diagram != null ? diagram.getType() : null;
84
	}
85
86
	/**
87
	 * @generated
88
	 */
89
	public static int getVisualID(String type) {
90
		try {
91
			return Integer.parseInt(type);
92
		} catch (NumberFormatException e) {
93
			if (Boolean.TRUE.toString().equalsIgnoreCase(Platform.getDebugOption(DEBUG_KEY))) {
94
				UMLDiagramEditorPlugin.getInstance().logError("Unable to parse view type as a visualID number: " + type);
95
			}
96
		}
97
		return -1;
98
	}
99
100
	/**
101
	 * @generated
102
	 */
103
	public static String getType(int visualID) {
104
		return String.valueOf(visualID);
105
	}
106
107
	/**
108
	 * @generated
109
	 */
110
	public static int getDiagramVisualID(EObject domainElement) {
111
		if (domainElement == null) {
112
			return -1;
113
		}
114
		EClass domainElementMetaclass = domainElement.eClass();
115
		return getDiagramVisualID(domainElement, domainElementMetaclass);
116
	}
117
118
	/**
119
	 * @generated
120
	 */
121
	private static int getDiagramVisualID(EObject domainElement, EClass domainElementMetaclass) {
122
		if (UMLPackage.eINSTANCE.getPackage().isSuperTypeOf(domainElementMetaclass) && isDiagramPackage_1000((org.eclipse.uml2.uml.Package) domainElement)) {
123
			return PackageEditPart.VISUAL_ID;
124
		}
125
		return getUnrecognizedDiagramID(domainElement);
126
	}
127
128
	/**
129
	 * @generated
130
	 */
131
	public static int getNodeVisualID(View containerView, EObject domainElement) {
132
		if (domainElement == null) {
133
			return -1;
134
		}
135
		EClass domainElementMetaclass = domainElement.eClass();
136
		return getNodeVisualID(containerView, domainElement, domainElementMetaclass, null);
137
	}
138
139
	/**
140
	 * @generated
141
	 */
142
	public static int getNodeVisualID(View containerView, EObject domainElement, EClass domainElementMetaclass, String semanticHint) {
143
		String containerModelID = getModelID(containerView);
144
		if (!PackageEditPart.MODEL_ID.equals(containerModelID)) {
145
			return -1;
146
		}
147
		int containerVisualID;
148
		if (PackageEditPart.MODEL_ID.equals(containerModelID)) {
149
			containerVisualID = getVisualID(containerView);
150
		} else {
151
			if (containerView instanceof Diagram) {
152
				containerVisualID = PackageEditPart.VISUAL_ID;
153
			} else {
154
				return -1;
155
			}
156
		}
157
		int nodeVisualID = semanticHint != null ? getVisualID(semanticHint) : -1;
158
		switch (containerVisualID) {
159
		case ComponentEditPart.VISUAL_ID:
160
			if (ComponentName2EditPart.VISUAL_ID == nodeVisualID) {
161
				return ComponentName2EditPart.VISUAL_ID;
162
			}
163
			if (ComponentContentsEditPart.VISUAL_ID == nodeVisualID) {
164
				return ComponentContentsEditPart.VISUAL_ID;
165
			}
166
			if ((semanticHint == null || PortEditPart.VISUAL_ID == nodeVisualID) && UMLPackage.eINSTANCE.getPort().isSuperTypeOf(domainElementMetaclass)
167
					&& (domainElement == null || isNodePort_3002((Port) domainElement))) {
168
				return PortEditPart.VISUAL_ID;
169
			}
170
			return getUnrecognizedComponent_2001ChildNodeID(domainElement, semanticHint);
171
		case Artifact2EditPart.VISUAL_ID:
172
			if (ArtifactName2EditPart.VISUAL_ID == nodeVisualID) {
173
				return ArtifactName2EditPart.VISUAL_ID;
174
			}
175
			return getUnrecognizedArtifact_2002ChildNodeID(domainElement, semanticHint);
176
		case Interface2EditPart.VISUAL_ID:
177
			if (InterfaceName2EditPart.VISUAL_ID == nodeVisualID) {
178
				return InterfaceName2EditPart.VISUAL_ID;
179
			}
180
			return getUnrecognizedInterface_2003ChildNodeID(domainElement, semanticHint);
181
		case Class2EditPart.VISUAL_ID:
182
			if (ClassName2EditPart.VISUAL_ID == nodeVisualID) {
183
				return ClassName2EditPart.VISUAL_ID;
184
			}
185
			if ((semanticHint == null || PortEditPart.VISUAL_ID == nodeVisualID) && UMLPackage.eINSTANCE.getPort().isSuperTypeOf(domainElementMetaclass)
186
					&& (domainElement == null || isNodePort_3002((Port) domainElement))) {
187
				return PortEditPart.VISUAL_ID;
188
			}
189
			return getUnrecognizedClass_2004ChildNodeID(domainElement, semanticHint);
190
		case Component2EditPart.VISUAL_ID:
191
			if (ComponentNameEditPart.VISUAL_ID == nodeVisualID) {
192
				return ComponentNameEditPart.VISUAL_ID;
193
			}
194
			if (ComponentContents2EditPart.VISUAL_ID == nodeVisualID) {
195
				return ComponentContents2EditPart.VISUAL_ID;
196
			}
197
			if ((semanticHint == null || PortEditPart.VISUAL_ID == nodeVisualID) && UMLPackage.eINSTANCE.getPort().isSuperTypeOf(domainElementMetaclass)
198
					&& (domainElement == null || isNodePort_3002((Port) domainElement))) {
199
				return PortEditPart.VISUAL_ID;
200
			}
201
			return getUnrecognizedComponent_3001ChildNodeID(domainElement, semanticHint);
202
		case PortEditPart.VISUAL_ID:
203
			if (PortNameEditPart.VISUAL_ID == nodeVisualID) {
204
				return PortNameEditPart.VISUAL_ID;
205
			}
206
			return getUnrecognizedPort_3002ChildNodeID(domainElement, semanticHint);
207
		case ArtifactEditPart.VISUAL_ID:
208
			if (ArtifactNameEditPart.VISUAL_ID == nodeVisualID) {
209
				return ArtifactNameEditPart.VISUAL_ID;
210
			}
211
			return getUnrecognizedArtifact_3003ChildNodeID(domainElement, semanticHint);
212
		case ClassEditPart.VISUAL_ID:
213
			if (ClassNameEditPart.VISUAL_ID == nodeVisualID) {
214
				return ClassNameEditPart.VISUAL_ID;
215
			}
216
			if ((semanticHint == null || PortEditPart.VISUAL_ID == nodeVisualID) && UMLPackage.eINSTANCE.getPort().isSuperTypeOf(domainElementMetaclass)
217
					&& (domainElement == null || isNodePort_3002((Port) domainElement))) {
218
				return PortEditPart.VISUAL_ID;
219
			}
220
			return getUnrecognizedClass_3004ChildNodeID(domainElement, semanticHint);
221
		case InterfaceEditPart.VISUAL_ID:
222
			if (InterfaceNameEditPart.VISUAL_ID == nodeVisualID) {
223
				return InterfaceNameEditPart.VISUAL_ID;
224
			}
225
			return getUnrecognizedInterface_3005ChildNodeID(domainElement, semanticHint);
226
		case ComponentContentsEditPart.VISUAL_ID:
227
			if ((semanticHint == null || Component2EditPart.VISUAL_ID == nodeVisualID) && UMLPackage.eINSTANCE.getComponent().isSuperTypeOf(domainElementMetaclass)
228
					&& (domainElement == null || isNodeComponent_3001((Component) domainElement))) {
229
				return Component2EditPart.VISUAL_ID;
230
			}
231
			if ((semanticHint == null || ArtifactEditPart.VISUAL_ID == nodeVisualID) && UMLPackage.eINSTANCE.getArtifact().isSuperTypeOf(domainElementMetaclass)
232
					&& (domainElement == null || isNodeArtifact_3003((Artifact) domainElement))) {
233
				return ArtifactEditPart.VISUAL_ID;
234
			}
235
			if ((semanticHint == null || ClassEditPart.VISUAL_ID == nodeVisualID) && UMLPackage.eINSTANCE.getClass_().isSuperTypeOf(domainElementMetaclass)
236
					&& (domainElement == null || isNodeClass_3004((org.eclipse.uml2.uml.Class) domainElement))) {
237
				return ClassEditPart.VISUAL_ID;
238
			}
239
			if ((semanticHint == null || InterfaceEditPart.VISUAL_ID == nodeVisualID) && UMLPackage.eINSTANCE.getInterface().isSuperTypeOf(domainElementMetaclass)
240
					&& (domainElement == null || isNodeInterface_3005((Interface) domainElement))) {
241
				return InterfaceEditPart.VISUAL_ID;
242
			}
243
			return getUnrecognizedComponentContents_7001ChildNodeID(domainElement, semanticHint);
244
		case ComponentContents2EditPart.VISUAL_ID:
245
			if ((semanticHint == null || Component2EditPart.VISUAL_ID == nodeVisualID) && UMLPackage.eINSTANCE.getComponent().isSuperTypeOf(domainElementMetaclass)
246
					&& (domainElement == null || isNodeComponent_3001((Component) domainElement))) {
247
				return Component2EditPart.VISUAL_ID;
248
			}
249
			if ((semanticHint == null || ArtifactEditPart.VISUAL_ID == nodeVisualID) && UMLPackage.eINSTANCE.getArtifact().isSuperTypeOf(domainElementMetaclass)
250
					&& (domainElement == null || isNodeArtifact_3003((Artifact) domainElement))) {
251
				return ArtifactEditPart.VISUAL_ID;
252
			}
253
			if ((semanticHint == null || ClassEditPart.VISUAL_ID == nodeVisualID) && UMLPackage.eINSTANCE.getClass_().isSuperTypeOf(domainElementMetaclass)
254
					&& (domainElement == null || isNodeClass_3004((org.eclipse.uml2.uml.Class) domainElement))) {
255
				return ClassEditPart.VISUAL_ID;
256
			}
257
			if ((semanticHint == null || InterfaceEditPart.VISUAL_ID == nodeVisualID) && UMLPackage.eINSTANCE.getInterface().isSuperTypeOf(domainElementMetaclass)
258
					&& (domainElement == null || isNodeInterface_3005((Interface) domainElement))) {
259
				return InterfaceEditPart.VISUAL_ID;
260
			}
261
			return getUnrecognizedComponentContents_7002ChildNodeID(domainElement, semanticHint);
262
		case PackageEditPart.VISUAL_ID:
263
			if ((semanticHint == null || ComponentEditPart.VISUAL_ID == nodeVisualID) && UMLPackage.eINSTANCE.getComponent().isSuperTypeOf(domainElementMetaclass)
264
					&& (domainElement == null || isNodeComponent_2001((Component) domainElement))) {
265
				return ComponentEditPart.VISUAL_ID;
266
			}
267
			if ((semanticHint == null || Artifact2EditPart.VISUAL_ID == nodeVisualID) && UMLPackage.eINSTANCE.getArtifact().isSuperTypeOf(domainElementMetaclass)
268
					&& (domainElement == null || isNodeArtifact_2002((Artifact) domainElement))) {
269
				return Artifact2EditPart.VISUAL_ID;
270
			}
271
			if ((semanticHint == null || Interface2EditPart.VISUAL_ID == nodeVisualID) && UMLPackage.eINSTANCE.getInterface().isSuperTypeOf(domainElementMetaclass)
272
					&& (domainElement == null || isNodeInterface_2003((Interface) domainElement))) {
273
				return Interface2EditPart.VISUAL_ID;
274
			}
275
			if ((semanticHint == null || Class2EditPart.VISUAL_ID == nodeVisualID) && UMLPackage.eINSTANCE.getClass_().isSuperTypeOf(domainElementMetaclass)
276
					&& (domainElement == null || isNodeClass_2004((org.eclipse.uml2.uml.Class) domainElement))) {
277
				return Class2EditPart.VISUAL_ID;
278
			}
279
			return getUnrecognizedPackage_1000ChildNodeID(domainElement, semanticHint);
280
		}
281
		return -1;
282
	}
283
284
	/**
285
	 * @generated
286
	 */
287
	public static int getLinkWithClassVisualID(EObject domainElement) {
288
		if (domainElement == null) {
289
			return -1;
290
		}
291
		EClass domainElementMetaclass = domainElement.eClass();
292
		return getLinkWithClassVisualID(domainElement, domainElementMetaclass);
293
	}
294
295
	/**
296
	 * @generated
297
	 */
298
	public static int getLinkWithClassVisualID(EObject domainElement, EClass domainElementMetaclass) {
299
		if (UMLPackage.eINSTANCE.getInterfaceRealization().isSuperTypeOf(domainElementMetaclass)
300
				&& (domainElement == null || isLinkWithClassInterfaceRealization_4001((InterfaceRealization) domainElement))) {
301
			return InterfaceRealizationEditPart.VISUAL_ID;
302
		} else {
303
			return getUnrecognizedLinkWithClassID(domainElement);
304
		}
305
	}
306
307
	/**
308
	 * User can change implementation of this method to check some additional 
309
	 * conditions here.
310
	 *
311
	 * @generated
312
	 */
313
	private static boolean isDiagramPackage_1000(org.eclipse.uml2.uml.Package element) {
314
		return true;
315
	}
316
317
	/**
318
	 * User can change implementation of this method to handle some specific
319
	 * situations not covered by default logic.
320
	 *
321
	 * @generated
322
	 */
323
	private static int getUnrecognizedDiagramID(EObject domainElement) {
324
		return -1;
325
	}
326
327
	/**
328
	 * User can change implementation of this method to check some additional 
329
	 * conditions here.
330
	 *
331
	 * @generated
332
	 */
333
	private static boolean isNodeComponent_2001(Component element) {
334
		return true;
335
	}
336
337
	/**
338
	 * User can change implementation of this method to check some additional 
339
	 * conditions here.
340
	 *
341
	 * @generated
342
	 */
343
	private static boolean isNodeArtifact_2002(Artifact element) {
344
		return true;
345
	}
346
347
	/**
348
	 * User can change implementation of this method to check some additional 
349
	 * conditions here.
350
	 *
351
	 * @generated
352
	 */
353
	private static boolean isNodeInterface_2003(Interface element) {
354
		return true;
355
	}
356
357
	/**
358
	 * User can change implementation of this method to check some additional 
359
	 * conditions here.
360
	 *
361
	 * @generated
362
	 */
363
	private static boolean isNodeClass_2004(org.eclipse.uml2.uml.Class element) {
364
		return Class_2004.matches(element);
365
	}
366
367
	/**
368
	 * User can change implementation of this method to check some additional 
369
	 * conditions here.
370
	 *
371
	 * @generated
372
	 */
373
	private static boolean isNodeComponent_3001(Component element) {
374
		return true;
375
	}
376
377
	/**
378
	 * User can change implementation of this method to check some additional 
379
	 * conditions here.
380
	 *
381
	 * @generated
382
	 */
383
	private static boolean isNodePort_3002(Port element) {
384
		return true;
385
	}
386
387
	/**
388
	 * User can change implementation of this method to check some additional 
389
	 * conditions here.
390
	 *
391
	 * @generated
392
	 */
393
	private static boolean isNodeArtifact_3003(Artifact element) {
394
		return true;
395
	}
396
397
	/**
398
	 * User can change implementation of this method to check some additional 
399
	 * conditions here.
400
	 *
401
	 * @generated
402
	 */
403
	private static boolean isNodeClass_3004(org.eclipse.uml2.uml.Class element) {
404
		return Class_3004.matches(element);
405
	}
406
407
	/**
408
	 * User can change implementation of this method to check some additional 
409
	 * conditions here.
410
	 *
411
	 * @generated
412
	 */
413
	private static boolean isNodeInterface_3005(Interface element) {
414
		return true;
415
	}
416
417
	/**
418
	 * User can change implementation of this method to handle some specific
419
	 * situations not covered by default logic.
420
	 *
421
	 * @generated
422
	 */
423
	private static int getUnrecognizedComponent_2001ChildNodeID(EObject domainElement, String semanticHint) {
424
		return -1;
425
	}
426
427
	/**
428
	 * User can change implementation of this method to handle some specific
429
	 * situations not covered by default logic.
430
	 *
431
	 * @generated
432
	 */
433
	private static int getUnrecognizedArtifact_2002ChildNodeID(EObject domainElement, String semanticHint) {
434
		return -1;
435
	}
436
437
	/**
438
	 * User can change implementation of this method to handle some specific
439
	 * situations not covered by default logic.
440
	 *
441
	 * @generated
442
	 */
443
	private static int getUnrecognizedInterface_2003ChildNodeID(EObject domainElement, String semanticHint) {
444
		return -1;
445
	}
446
447
	/**
448
	 * User can change implementation of this method to handle some specific
449
	 * situations not covered by default logic.
450
	 *
451
	 * @generated
452
	 */
453
	private static int getUnrecognizedClass_2004ChildNodeID(EObject domainElement, String semanticHint) {
454
		return -1;
455
	}
456
457
	/**
458
	 * User can change implementation of this method to handle some specific
459
	 * situations not covered by default logic.
460
	 *
461
	 * @generated
462
	 */
463
	private static int getUnrecognizedComponent_3001ChildNodeID(EObject domainElement, String semanticHint) {
464
		return -1;
465
	}
466
467
	/**
468
	 * User can change implementation of this method to handle some specific
469
	 * situations not covered by default logic.
470
	 *
471
	 * @generated
472
	 */
473
	private static int getUnrecognizedPort_3002ChildNodeID(EObject domainElement, String semanticHint) {
474
		return -1;
475
	}
476
477
	/**
478
	 * User can change implementation of this method to handle some specific
479
	 * situations not covered by default logic.
480
	 *
481
	 * @generated
482
	 */
483
	private static int getUnrecognizedArtifact_3003ChildNodeID(EObject domainElement, String semanticHint) {
484
		return -1;
485
	}
486
487
	/**
488
	 * User can change implementation of this method to handle some specific
489
	 * situations not covered by default logic.
490
	 *
491
	 * @generated
492
	 */
493
	private static int getUnrecognizedClass_3004ChildNodeID(EObject domainElement, String semanticHint) {
494
		return -1;
495
	}
496
497
	/**
498
	 * User can change implementation of this method to handle some specific
499
	 * situations not covered by default logic.
500
	 *
501
	 * @generated
502
	 */
503
	private static int getUnrecognizedInterface_3005ChildNodeID(EObject domainElement, String semanticHint) {
504
		return -1;
505
	}
506
507
	/**
508
	 * User can change implementation of this method to handle some specific
509
	 * situations not covered by default logic.
510
	 *
511
	 * @generated
512
	 */
513
	private static int getUnrecognizedComponentContents_7001ChildNodeID(EObject domainElement, String semanticHint) {
514
		return -1;
515
	}
516
517
	/**
518
	 * User can change implementation of this method to handle some specific
519
	 * situations not covered by default logic.
520
	 *
521
	 * @generated
522
	 */
523
	private static int getUnrecognizedComponentContents_7002ChildNodeID(EObject domainElement, String semanticHint) {
524
		return -1;
525
	}
526
527
	/**
528
	 * User can change implementation of this method to handle some specific
529
	 * situations not covered by default logic.
530
	 *
531
	 * @generated
532
	 */
533
	private static int getUnrecognizedPackage_1000ChildNodeID(EObject domainElement, String semanticHint) {
534
		return -1;
535
	}
536
537
	/**
538
	 * User can change implementation of this method to handle some specific
539
	 * situations not covered by default logic.
540
	 *
541
	 * @generated
542
	 */
543
	private static int getUnrecognizedLinkWithClassID(EObject domainElement) {
544
		return -1;
545
	}
546
547
	/**
548
	 * User can change implementation of this method to check some additional 
549
	 * conditions here.
550
	 *
551
	 * @generated
552
	 */
553
	private static boolean isLinkWithClassInterfaceRealization_4001(InterfaceRealization element) {
554
		return InterfaceRealization_4001.matches(element);
555
	}
556
557
	/**
558
	 * @generated
559
	 */
560
	private static final Matcher Class_3004 = new Matcher(UMLOCLFactory.getExpression("self.oclIsKindOf(uml::Class)", //$NON-NLS-1$
561
			UMLPackage.eINSTANCE.getClass_()));
562
563
	/**
564
	 * @generated
565
	 */
566
	private static final Matcher Class_2004 = new Matcher(UMLOCLFactory.getExpression("self.oclIsKindOf(uml::Class)", //$NON-NLS-1$
567
			UMLPackage.eINSTANCE.getClass_()));
568
569
	/**
570
	 * @generated
571
	 */
572
	private static final Matcher InterfaceRealization_4001 = new Matcher(UMLOCLFactory.getExpression("self.implementingClassifier.oclIsKindOf(uml::Component)", //$NON-NLS-1$
573
			UMLPackage.eINSTANCE.getInterfaceRealization()));
574
575
	/**
576
	 * @generated	
577
	 */
578
	static class Matcher {
579
580
		/**
581
		 * @generated	
582
		 */
583
		private UMLAbstractExpression condition;
584
585
		/**
586
		 * @generated	
587
		 */
588
		Matcher(UMLAbstractExpression conditionExpression) {
589
			this.condition = conditionExpression;
590
		}
591
592
		/**
593
		 * @generated	
594
		 */
595
		boolean matches(EObject object) {
596
			Object result = condition.evaluate(object);
597
			return result instanceof Boolean && ((Boolean) result).booleanValue();
598
		}
599
	}// Matcher
600
}
(-)src/org/eclipse/uml2/diagram/component/providers/UMLStructuralFeatureParser.java (+132 lines)
Added Link Here
1
package org.eclipse.uml2.diagram.component.providers;
2
3
import java.text.FieldPosition;
4
import java.text.MessageFormat;
5
import java.util.Collections;
6
7
import org.eclipse.core.runtime.IAdaptable;
8
import org.eclipse.emf.common.notify.Notification;
9
import org.eclipse.emf.ecore.EObject;
10
import org.eclipse.emf.ecore.EStructuralFeature;
11
import org.eclipse.emf.transaction.TransactionalEditingDomain;
12
import org.eclipse.emf.transaction.util.TransactionUtil;
13
import org.eclipse.gmf.runtime.common.core.command.ICommand;
14
import org.eclipse.gmf.runtime.common.core.command.UnexecutableCommand;
15
import org.eclipse.gmf.runtime.common.ui.services.parser.IParserEditStatus;
16
import org.eclipse.gmf.runtime.common.ui.services.parser.ParserEditStatus;
17
import org.eclipse.gmf.runtime.emf.commands.core.command.CompositeTransactionalCommand;
18
import org.eclipse.uml2.diagram.component.part.UMLDiagramEditorPlugin;
19
20
/**
21
 * @generated
22
 */
23
public class UMLStructuralFeatureParser extends UMLAbstractParser {
24
25
	/**
26
	 * @generated
27
	 */
28
	public static final MessageFormat DEFAULT_PROCESSOR = new MessageFormat("{0}"); //$NON-NLS-1$
29
30
	/**
31
	 * @generated
32
	 */
33
	private EStructuralFeature feature;
34
35
	/**
36
	 * @generated
37
	 */
38
	public UMLStructuralFeatureParser(EStructuralFeature feature) {
39
		this.feature = feature;
40
	}
41
42
	/**
43
	 * @generated
44
	 */
45
	protected MessageFormat getViewProcessor() {
46
		MessageFormat processor = super.getViewProcessor();
47
		return processor == null ? DEFAULT_PROCESSOR : processor;
48
	}
49
50
	/**
51
	 * @generated
52
	 */
53
	protected MessageFormat getEditProcessor() {
54
		MessageFormat processor = super.getEditProcessor();
55
		return processor == null ? DEFAULT_PROCESSOR : processor;
56
	}
57
58
	/**
59
	 * @generated
60
	 */
61
	protected EObject getDomainElement(EObject element) {
62
		return element;
63
	}
64
65
	/**
66
	 * @generated
67
	 */
68
	protected String getStringByPattern(IAdaptable adapter, int flags, String pattern, MessageFormat processor) {
69
		EObject element = (EObject) adapter.getAdapter(EObject.class);
70
		element = getDomainElement(element);
71
		return getStringByPattern(element, feature, processor);
72
	}
73
74
	/**
75
	 * @generated
76
	 */
77
	protected String getStringByPattern(EObject element, EStructuralFeature feature, MessageFormat processor) {
78
		Object value = element == null ? null : element.eGet(feature);
79
		value = getValidValue(feature, value);
80
		return processor.format(new Object[] { value }, new StringBuffer(), new FieldPosition(0)).toString();
81
	}
82
83
	/**
84
	 * @generated
85
	 */
86
	protected IParserEditStatus validateValues(Object[] values) {
87
		if (values.length > 1) {
88
			return ParserEditStatus.UNEDITABLE_STATUS;
89
		}
90
		Object value = values.length == 1 ? values[0] : null;
91
		value = getValidNewValue(feature, value);
92
		if (value instanceof InvalidValue) {
93
			return new ParserEditStatus(UMLDiagramEditorPlugin.ID, IParserEditStatus.UNEDITABLE, value.toString());
94
		}
95
		return ParserEditStatus.EDITABLE_STATUS;
96
	}
97
98
	/**
99
	 * @generated
100
	 */
101
	public ICommand getParseCommand(IAdaptable adapter, Object[] values) {
102
		EObject element = (EObject) adapter.getAdapter(EObject.class);
103
		element = getDomainElement(element);
104
		if (element == null) {
105
			return UnexecutableCommand.INSTANCE;
106
		}
107
		TransactionalEditingDomain editingDomain = TransactionUtil.getEditingDomain(element);
108
		if (editingDomain == null) {
109
			return UnexecutableCommand.INSTANCE;
110
		}
111
		Object value = values.length == 1 ? values[0] : null;
112
		ICommand command = getModificationCommand(element, feature, value);
113
		return new CompositeTransactionalCommand(editingDomain, command.getLabel(), Collections.singletonList(command));
114
	}
115
116
	/**
117
	 * @generated
118
	 */
119
	public boolean isAffectingEvent(Object event, int flags) {
120
		if (event instanceof Notification) {
121
			return isAffectingFeature(((Notification) event).getFeature());
122
		}
123
		return false;
124
	}
125
126
	/**
127
	 * @generated
128
	 */
129
	protected boolean isAffectingFeature(Object eventFeature) {
130
		return feature == eventFeature;
131
	}
132
}
(-)src/org/eclipse/uml2/diagram/component/edit/parts/Class2EditPart.java (+304 lines)
Added Link Here
1
package org.eclipse.uml2.diagram.component.edit.parts;
2
3
import org.eclipse.draw2d.IFigure;
4
import org.eclipse.draw2d.PositionConstants;
5
import org.eclipse.draw2d.StackLayout;
6
7
import org.eclipse.gef.EditPart;
8
import org.eclipse.gef.EditPolicy;
9
import org.eclipse.gef.Request;
10
11
import org.eclipse.gef.commands.Command;
12
13
import org.eclipse.gef.editpolicies.LayoutEditPolicy;
14
import org.eclipse.gef.editpolicies.NonResizableEditPolicy;
15
16
import org.eclipse.gef.requests.CreateRequest;
17
18
import org.eclipse.gmf.runtime.diagram.ui.editparts.AbstractBorderedShapeEditPart;
19
import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;
20
21
import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy;
22
import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy;
23
import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;
24
25
import org.eclipse.gmf.runtime.diagram.ui.figures.BorderItemLocator;
26
27
import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout;
28
29
import org.eclipse.gmf.runtime.gef.ui.figures.DefaultSizeNodeFigure;
30
import org.eclipse.gmf.runtime.gef.ui.figures.NodeFigure;
31
32
import org.eclipse.gmf.runtime.notation.View;
33
34
import org.eclipse.uml2.diagram.component.edit.policies.Class2CanonicalEditPolicy;
35
import org.eclipse.uml2.diagram.component.edit.policies.Class2ItemSemanticEditPolicy;
36
import org.eclipse.uml2.diagram.component.part.UMLVisualIDRegistry;
37
38
/**
39
 * @generated
40
 */
41
public class Class2EditPart extends AbstractBorderedShapeEditPart {
42
43
	/**
44
	 * @generated
45
	 */
46
	public static final int VISUAL_ID = 2004;
47
48
	/**
49
	 * @generated
50
	 */
51
	protected IFigure contentPane;
52
53
	/**
54
	 * @generated
55
	 */
56
	protected IFigure primaryShape;
57
58
	/**
59
	 * @generated
60
	 */
61
	public Class2EditPart(View view) {
62
		super(view);
63
	}
64
65
	/**
66
	 * @generated
67
	 */
68
	protected void createDefaultEditPolicies() {
69
		installEditPolicy(EditPolicyRoles.CREATION_ROLE, new CreationEditPolicy());
70
		super.createDefaultEditPolicies();
71
		installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE, new Class2ItemSemanticEditPolicy());
72
		installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE, new DragDropEditPolicy());
73
		installEditPolicy(EditPolicyRoles.CANONICAL_ROLE, new Class2CanonicalEditPolicy());
74
		installEditPolicy(EditPolicy.LAYOUT_ROLE, createLayoutEditPolicy());
75
76
	}
77
78
	/**
79
	 * @generated
80
	 */
81
	protected LayoutEditPolicy createLayoutEditPolicy() {
82
		LayoutEditPolicy lep = new LayoutEditPolicy() {
83
84
			protected EditPolicy createChildEditPolicy(EditPart child) {
85
				EditPolicy result = child.getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);
86
				if (result == null) {
87
					result = new NonResizableEditPolicy();
88
				}
89
				return result;
90
			}
91
92
			protected Command getMoveChildrenCommand(Request request) {
93
				return null;
94
			}
95
96
			protected Command getCreateCommand(CreateRequest request) {
97
				return null;
98
			}
99
		};
100
		return lep;
101
	}
102
103
	/**
104
	 * @generated
105
	 */
106
	protected IFigure createNodeShape() {
107
		ComponentClassFigure figure = new ComponentClassFigure();
108
		return primaryShape = figure;
109
	}
110
111
	/**
112
	 * @generated
113
	 */
114
	public ComponentClassFigure getPrimaryShape() {
115
		return (ComponentClassFigure) primaryShape;
116
	}
117
118
	/**
119
	 * @generated 
120
	 */
121
	protected IFigure getContentPaneFor(IGraphicalEditPart editPart) {
122
		if (editPart instanceof PortEditPart) {
123
			return getBorderedFigure().getBorderItemContainer();
124
		}
125
126
		return super.getContentPaneFor(editPart);
127
	}
128
129
	/**
130
	 * @generated
131
	 */
132
	protected boolean addFixedChild(EditPart childEditPart) {
133
		if (childEditPart instanceof ClassName2EditPart) {
134
			((ClassName2EditPart) childEditPart).setLabel(getPrimaryShape().getFigureComponentClassFigure_name());
135
			return true;
136
		}
137
		if (childEditPart instanceof PortEditPart) {
138
			BorderItemLocator locator = new BorderItemLocator(getMainFigure(), PositionConstants.NONE);
139
			getBorderedFigure().getBorderItemContainer().add(((PortEditPart) childEditPart).getFigure(), locator);
140
			return true;
141
		}
142
		return false;
143
	}
144
145
	/**
146
	 * @generated
147
	 */
148
	protected boolean removeFixedChild(EditPart childEditPart) {
149
		if (childEditPart instanceof PortEditPart) {
150
			getBorderedFigure().getBorderItemContainer().remove(((PortEditPart) childEditPart).getFigure());
151
			return true;
152
		}
153
		return false;
154
	}
155
156
	/**
157
	 * @generated
158
	 */
159
	protected NodeFigure createNodePlate() {
160
		DefaultSizeNodeFigure result = new DefaultSizeNodeFigure(getMapMode().DPtoLP(80), getMapMode().DPtoLP(60));
161
		return result;
162
	}
163
164
	/**
165
	 * Creates figure for this edit part.
166
	 * 
167
	 * Body of this method does not depend on settings in generation model
168
	 * so you may safely remove <i>generated</i> tag and modify it.
169
	 * 
170
	 * @generated
171
	 */
172
	protected NodeFigure createMainFigure() {
173
		NodeFigure figure = createNodePlate();
174
		figure.setLayoutManager(new StackLayout());
175
		IFigure shape = createNodeShape();
176
		figure.add(shape);
177
		contentPane = setupContentPane(shape);
178
		return figure;
179
	}
180
181
	/**
182
	 * Default implementation treats passed figure as content pane.
183
	 * Respects layout one may have set for generated figure.
184
	 * @param nodeShape instance of generated figure class
185
	 * @generated
186
	 */
187
	protected IFigure setupContentPane(IFigure nodeShape) {
188
		if (nodeShape.getLayoutManager() == null) {
189
			ConstrainedToolbarLayout layout = new ConstrainedToolbarLayout();
190
			layout.setSpacing(getMapMode().DPtoLP(5));
191
			nodeShape.setLayoutManager(layout);
192
		}
193
		return nodeShape; // use nodeShape itself as contentPane
194
	}
195
196
	/**
197
	 * @generated
198
	 */
199
	public IFigure getContentPane() {
200
		if (contentPane != null) {
201
			return contentPane;
202
		}
203
		return super.getContentPane();
204
	}
205
206
	/**
207
	 * @generated
208
	 */
209
	public EditPart getPrimaryChildEditPart() {
210
		return getChildBySemanticHint(UMLVisualIDRegistry.getType(ClassName2EditPart.VISUAL_ID));
211
	}
212
213
	/**
214
	 * @generated
215
	 */
216
	protected void addChildVisual(EditPart childEditPart, int index) {
217
		if (addFixedChild(childEditPart)) {
218
			return;
219
		}
220
		super.addChildVisual(childEditPart, -1);
221
	}
222
223
	/**
224
	 * @generated
225
	 */
226
	protected void removeChildVisual(EditPart childEditPart) {
227
		if (removeFixedChild(childEditPart)) {
228
			return;
229
		}
230
		super.removeChildVisual(childEditPart);
231
	}
232
233
	/**
234
	 * @generated
235
	 */
236
	public class ComponentClassFigure extends org.eclipse.draw2d.RectangleFigure {
237
238
		/**
239
		 * @generated
240
		 */
241
		public ComponentClassFigure() {
242
243
			org.eclipse.uml2.diagram.common.draw2d.CenterLayout myGenLayoutManager = new org.eclipse.uml2.diagram.common.draw2d.CenterLayout();
244
245
			this.setLayoutManager(myGenLayoutManager);
246
247
			createContents();
248
		}
249
250
		/**
251
		 * @generated
252
		 */
253
		private void createContents() {
254
			org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel fig_0 = new org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel();
255
			fig_0.setText("");
256
257
			setFigureComponentClassFigure_name(fig_0);
258
259
			Object layData0 = null;
260
261
			this.add(fig_0, layData0);
262
		}
263
264
		/**
265
		 * @generated
266
		 */
267
		private org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel fComponentClassFigure_name;
268
269
		/**
270
		 * @generated
271
		 */
272
		public org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel getFigureComponentClassFigure_name() {
273
			return fComponentClassFigure_name;
274
		}
275
276
		/**
277
		 * @generated
278
		 */
279
		private void setFigureComponentClassFigure_name(org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel fig) {
280
			fComponentClassFigure_name = fig;
281
		}
282
283
		/**
284
		 * @generated
285
		 */
286
		private boolean myUseLocalCoordinates = false;
287
288
		/**
289
		 * @generated
290
		 */
291
		protected boolean useLocalCoordinates() {
292
			return myUseLocalCoordinates;
293
		}
294
295
		/**
296
		 * @generated
297
		 */
298
		protected void setUseLocalCoordinates(boolean useLocalCoordinates) {
299
			myUseLocalCoordinates = useLocalCoordinates;
300
		}
301
302
	}
303
304
}
(-)src/org/eclipse/uml2/diagram/component/view/factories/ArtifactViewFactory.java (+57 lines)
Added Link Here
1
package org.eclipse.uml2.diagram.component.view.factories;
2
3
import java.util.ArrayList;
4
import java.util.List;
5
6
import org.eclipse.core.runtime.IAdaptable;
7
8
import org.eclipse.emf.ecore.EAnnotation;
9
import org.eclipse.emf.ecore.EcoreFactory;
10
11
import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil;
12
13
import org.eclipse.gmf.runtime.diagram.ui.view.factories.AbstractShapeViewFactory;
14
15
import org.eclipse.gmf.runtime.notation.NotationFactory;
16
import org.eclipse.gmf.runtime.notation.View;
17
18
import org.eclipse.uml2.diagram.component.edit.parts.ArtifactNameEditPart;
19
import org.eclipse.uml2.diagram.component.edit.parts.PackageEditPart;
20
import org.eclipse.uml2.diagram.component.part.UMLVisualIDRegistry;
21
22
/**
23
 * @generated
24
 */
25
public class ArtifactViewFactory extends AbstractShapeViewFactory {
26
27
	/**
28
	 * @generated 
29
	 */
30
	protected List createStyles(View view) {
31
		List styles = new ArrayList();
32
		styles.add(NotationFactory.eINSTANCE.createFontStyle());
33
		styles.add(NotationFactory.eINSTANCE.createDescriptionStyle());
34
		styles.add(NotationFactory.eINSTANCE.createFillStyle());
35
		styles.add(NotationFactory.eINSTANCE.createLineStyle());
36
		return styles;
37
	}
38
39
	/**
40
	 * @generated
41
	 */
42
	protected void decorateView(View containerView, View view, IAdaptable semanticAdapter, String semanticHint, int index, boolean persisted) {
43
		if (semanticHint == null) {
44
			semanticHint = UMLVisualIDRegistry.getType(org.eclipse.uml2.diagram.component.edit.parts.ArtifactEditPart.VISUAL_ID);
45
			view.setType(semanticHint);
46
		}
47
		super.decorateView(containerView, view, semanticAdapter, semanticHint, index, persisted);
48
		if (!PackageEditPart.MODEL_ID.equals(UMLVisualIDRegistry.getModelID(containerView))) {
49
			EAnnotation shortcutAnnotation = EcoreFactory.eINSTANCE.createEAnnotation();
50
			shortcutAnnotation.setSource("Shortcut"); //$NON-NLS-1$
51
			shortcutAnnotation.getDetails().put("modelID", PackageEditPart.MODEL_ID); //$NON-NLS-1$
52
			view.getEAnnotations().add(shortcutAnnotation);
53
		}
54
		getViewService().createNode(semanticAdapter, view, UMLVisualIDRegistry.getType(ArtifactNameEditPart.VISUAL_ID), ViewUtil.APPEND, true, getPreferencesHint());
55
	}
56
57
}
(-)src/org/eclipse/uml2/diagram/component/providers/UMLParserProvider.java (+306 lines)
Added Link Here
1
package org.eclipse.uml2.diagram.component.providers;
2
3
import org.eclipse.core.runtime.IAdaptable;
4
import org.eclipse.gmf.runtime.common.core.service.AbstractProvider;
5
import org.eclipse.gmf.runtime.common.core.service.IOperation;
6
import org.eclipse.gmf.runtime.common.ui.services.parser.GetParserOperation;
7
import org.eclipse.gmf.runtime.common.ui.services.parser.IParser;
8
import org.eclipse.gmf.runtime.common.ui.services.parser.IParserProvider;
9
import org.eclipse.gmf.runtime.emf.type.core.IElementType;
10
import org.eclipse.gmf.runtime.notation.View;
11
import org.eclipse.uml2.diagram.common.parser.port.PortParser;
12
import org.eclipse.uml2.diagram.common.parser.port.PortToString;
13
import org.eclipse.uml2.diagram.component.edit.parts.ArtifactName2EditPart;
14
import org.eclipse.uml2.diagram.component.edit.parts.ArtifactNameEditPart;
15
import org.eclipse.uml2.diagram.component.edit.parts.ClassName2EditPart;
16
import org.eclipse.uml2.diagram.component.edit.parts.ClassNameEditPart;
17
import org.eclipse.uml2.diagram.component.edit.parts.ComponentName2EditPart;
18
import org.eclipse.uml2.diagram.component.edit.parts.ComponentNameEditPart;
19
import org.eclipse.uml2.diagram.component.edit.parts.InterfaceName2EditPart;
20
import org.eclipse.uml2.diagram.component.edit.parts.InterfaceNameEditPart;
21
import org.eclipse.uml2.diagram.component.edit.parts.PortNameEditPart;
22
import org.eclipse.uml2.diagram.component.expressions.UMLOCLFactory;
23
import org.eclipse.uml2.diagram.component.part.UMLVisualIDRegistry;
24
import org.eclipse.uml2.diagram.parser.BasicApplyStrategy;
25
import org.eclipse.uml2.diagram.parser.SemanticParserAdapter;
26
import org.eclipse.uml2.diagram.parser.lookup.LookupSuiteImpl;
27
import org.eclipse.uml2.diagram.parser.lookup.OCLLookup;
28
import org.eclipse.uml2.uml.Type;
29
import org.eclipse.uml2.uml.UMLPackage;
30
31
/**
32
 * @generated
33
 */
34
public class UMLParserProvider extends AbstractProvider implements IParserProvider {
35
36
	public static final OCLLookup<Type> TYPE_LOOKUP = new OCLLookup<Type>(//
37
			UMLOCLFactory.getOCLLookupExpression("self.getNearestPackage().ownedType", UMLPackage.eINSTANCE.getNamedElement()), // 
38
			new IElementType[] { //
39
			/*
40
			 UMLElementTypes.Class_2004, // 
41
			 */
42
			});
43
44
	/**
45
	 * @generated
46
	 */
47
	private IParser componentComponentName_5002Parser;
48
49
	/**
50
	 * @generated
51
	 */
52
	private IParser getComponentComponentName_5002Parser() {
53
		if (componentComponentName_5002Parser == null) {
54
			componentComponentName_5002Parser = createComponentComponentName_5002Parser();
55
		}
56
		return componentComponentName_5002Parser;
57
	}
58
59
	/**
60
	 * @generated
61
	 */
62
	protected IParser createComponentComponentName_5002Parser() {
63
		UMLStructuralFeatureParser parser = new UMLStructuralFeatureParser(UMLPackage.eINSTANCE.getNamedElement_Name());
64
		return parser;
65
	}
66
67
	/**
68
	 * @generated
69
	 */
70
	private IParser portPortName_5003Parser;
71
72
	/**
73
	 * @generated
74
	 */
75
	private IParser getPortPortName_5003Parser() {
76
		if (portPortName_5003Parser == null) {
77
			portPortName_5003Parser = createPortPortName_5003Parser();
78
		}
79
		return portPortName_5003Parser;
80
	}
81
82
	/**
83
	 * @generated
84
	 */
85
	protected IParser createPortPortName_5003Parser() {
86
		UMLStructuralFeatureParser parser = new UMLStructuralFeatureParser(UMLPackage.eINSTANCE.getNamedElement_Name());
87
		return parser;
88
	}
89
90
	/**
91
	 * @generated
92
	 */
93
	private IParser artifactArtifactName_5006Parser;
94
95
	/**
96
	 * @generated
97
	 */
98
	private IParser getArtifactArtifactName_5006Parser() {
99
		if (artifactArtifactName_5006Parser == null) {
100
			artifactArtifactName_5006Parser = createArtifactArtifactName_5006Parser();
101
		}
102
		return artifactArtifactName_5006Parser;
103
	}
104
105
	/**
106
	 * @generated
107
	 */
108
	protected IParser createArtifactArtifactName_5006Parser() {
109
		UMLStructuralFeatureParser parser = new UMLStructuralFeatureParser(UMLPackage.eINSTANCE.getNamedElement_Name());
110
		return parser;
111
	}
112
113
	/**
114
	 * @generated
115
	 */
116
	private IParser classClassName_5007Parser;
117
118
	/**
119
	 * @generated
120
	 */
121
	private IParser getClassClassName_5007Parser() {
122
		if (classClassName_5007Parser == null) {
123
			classClassName_5007Parser = createClassClassName_5007Parser();
124
		}
125
		return classClassName_5007Parser;
126
	}
127
128
	/**
129
	 * @generated
130
	 */
131
	protected IParser createClassClassName_5007Parser() {
132
		UMLStructuralFeatureParser parser = new UMLStructuralFeatureParser(UMLPackage.eINSTANCE.getNamedElement_Name());
133
		return parser;
134
	}
135
136
	/**
137
	 * @generated
138
	 */
139
	private IParser interfaceInterfaceName_5009Parser;
140
141
	/**
142
	 * @generated
143
	 */
144
	private IParser getInterfaceInterfaceName_5009Parser() {
145
		if (interfaceInterfaceName_5009Parser == null) {
146
			interfaceInterfaceName_5009Parser = createInterfaceInterfaceName_5009Parser();
147
		}
148
		return interfaceInterfaceName_5009Parser;
149
	}
150
151
	/**
152
	 * @generated
153
	 */
154
	protected IParser createInterfaceInterfaceName_5009Parser() {
155
		UMLStructuralFeatureParser parser = new UMLStructuralFeatureParser(UMLPackage.eINSTANCE.getNamedElement_Name());
156
		return parser;
157
	}
158
159
	/**
160
	 * @generated
161
	 */
162
	private IParser componentComponentName_5001Parser;
163
164
	/**
165
	 * @generated
166
	 */
167
	private IParser getComponentComponentName_5001Parser() {
168
		if (componentComponentName_5001Parser == null) {
169
			componentComponentName_5001Parser = createComponentComponentName_5001Parser();
170
		}
171
		return componentComponentName_5001Parser;
172
	}
173
174
	/**
175
	 * @generated
176
	 */
177
	protected IParser createComponentComponentName_5001Parser() {
178
		UMLStructuralFeatureParser parser = new UMLStructuralFeatureParser(UMLPackage.eINSTANCE.getNamedElement_Name());
179
		return parser;
180
	}
181
182
	/**
183
	 * @generated
184
	 */
185
	private IParser artifactArtifactName_5004Parser;
186
187
	/**
188
	 * @generated
189
	 */
190
	private IParser getArtifactArtifactName_5004Parser() {
191
		if (artifactArtifactName_5004Parser == null) {
192
			artifactArtifactName_5004Parser = createArtifactArtifactName_5004Parser();
193
		}
194
		return artifactArtifactName_5004Parser;
195
	}
196
197
	/**
198
	 * @generated
199
	 */
200
	protected IParser createArtifactArtifactName_5004Parser() {
201
		UMLStructuralFeatureParser parser = new UMLStructuralFeatureParser(UMLPackage.eINSTANCE.getNamedElement_Name());
202
		return parser;
203
	}
204
205
	/**
206
	 * @generated
207
	 */
208
	private IParser interfaceInterfaceName_5005Parser;
209
210
	/**
211
	 * @generated
212
	 */
213
	private IParser getInterfaceInterfaceName_5005Parser() {
214
		if (interfaceInterfaceName_5005Parser == null) {
215
			interfaceInterfaceName_5005Parser = createInterfaceInterfaceName_5005Parser();
216
		}
217
		return interfaceInterfaceName_5005Parser;
218
	}
219
220
	/**
221
	 * @generated
222
	 */
223
	protected IParser createInterfaceInterfaceName_5005Parser() {
224
		UMLStructuralFeatureParser parser = new UMLStructuralFeatureParser(UMLPackage.eINSTANCE.getNamedElement_Name());
225
		return parser;
226
	}
227
228
	/**
229
	 * @generated
230
	 */
231
	private IParser classClassName_5008Parser;
232
233
	/**
234
	 * @generated
235
	 */
236
	private IParser getClassClassName_5008Parser() {
237
		if (classClassName_5008Parser == null) {
238
			classClassName_5008Parser = createClassClassName_5008Parser();
239
		}
240
		return classClassName_5008Parser;
241
	}
242
243
	/**
244
	 * @generated
245
	 */
246
	protected IParser createClassClassName_5008Parser() {
247
		UMLStructuralFeatureParser parser = new UMLStructuralFeatureParser(UMLPackage.eINSTANCE.getNamedElement_Name());
248
		return parser;
249
	}
250
251
	/**
252
	 * @generated
253
	 */
254
	protected IParser getParser(int visualID) {
255
		switch (visualID) {
256
		case ComponentNameEditPart.VISUAL_ID:
257
			return getComponentComponentName_5002Parser();
258
		case PortNameEditPart.VISUAL_ID:
259
			return getPortPortName_5003Parser();
260
		case ArtifactNameEditPart.VISUAL_ID:
261
			return getArtifactArtifactName_5006Parser();
262
		case ClassNameEditPart.VISUAL_ID:
263
			return getClassClassName_5007Parser();
264
		case InterfaceNameEditPart.VISUAL_ID:
265
			return getInterfaceInterfaceName_5009Parser();
266
		case ComponentName2EditPart.VISUAL_ID:
267
			return getComponentComponentName_5001Parser();
268
		case ArtifactName2EditPart.VISUAL_ID:
269
			return getArtifactArtifactName_5004Parser();
270
		case InterfaceName2EditPart.VISUAL_ID:
271
			return getInterfaceInterfaceName_5005Parser();
272
		case ClassName2EditPart.VISUAL_ID:
273
			return getClassClassName_5008Parser();
274
		}
275
		return null;
276
	}
277
278
	/**
279
	 * @generated
280
	 */
281
	public IParser getParser(IAdaptable hint) {
282
		String vid = (String) hint.getAdapter(String.class);
283
		if (vid != null) {
284
			return getParser(UMLVisualIDRegistry.getVisualID(vid));
285
		}
286
		View view = (View) hint.getAdapter(View.class);
287
		if (view != null) {
288
			return getParser(UMLVisualIDRegistry.getVisualID(view));
289
		}
290
		return null;
291
	}
292
293
	/**
294
	 * @generated
295
	 */
296
	public boolean provides(IOperation operation) {
297
		if (operation instanceof GetParserOperation) {
298
			IAdaptable hint = ((GetParserOperation) operation).getHint();
299
			if (UMLElementTypes.getElement(hint) == null) {
300
				return false;
301
			}
302
			return getParser(hint) != null;
303
		}
304
		return false;
305
	}
306
}
(-)src/org/eclipse/uml2/diagram/component/edit/parts/InterfaceEditPart.java (+312 lines)
Added Link Here
1
package org.eclipse.uml2.diagram.component.edit.parts;
2
3
import java.util.Iterator;
4
5
import org.eclipse.draw2d.IFigure;
6
import org.eclipse.draw2d.PositionConstants;
7
import org.eclipse.draw2d.StackLayout;
8
9
import org.eclipse.gef.EditPart;
10
import org.eclipse.gef.EditPolicy;
11
import org.eclipse.gef.GraphicalEditPart;
12
import org.eclipse.gef.Request;
13
14
import org.eclipse.gef.commands.Command;
15
16
import org.eclipse.gef.editparts.LayerManager;
17
18
import org.eclipse.gef.editpolicies.LayoutEditPolicy;
19
import org.eclipse.gef.editpolicies.NonResizableEditPolicy;
20
import org.eclipse.gef.editpolicies.ResizableEditPolicy;
21
22
import org.eclipse.gef.requests.CreateRequest;
23
24
import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;
25
import org.eclipse.gmf.runtime.diagram.ui.editparts.ShapeNodeEditPart;
26
27
import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;
28
29
import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout;
30
31
import org.eclipse.gmf.runtime.gef.ui.figures.DefaultSizeNodeFigure;
32
import org.eclipse.gmf.runtime.gef.ui.figures.NodeFigure;
33
34
import org.eclipse.gmf.runtime.notation.View;
35
36
import org.eclipse.uml2.diagram.component.edit.policies.InterfaceItemSemanticEditPolicy;
37
import org.eclipse.uml2.diagram.component.edit.policies.UMLExtNodeLabelHostLayoutEditPolicy;
38
import org.eclipse.uml2.diagram.component.part.UMLVisualIDRegistry;
39
40
/**
41
 * @generated
42
 */
43
public class InterfaceEditPart extends ShapeNodeEditPart {
44
45
	/**
46
	 * @generated
47
	 */
48
	public static final int VISUAL_ID = 3005;
49
50
	/**
51
	 * @generated
52
	 */
53
	protected IFigure contentPane;
54
55
	/**
56
	 * @generated
57
	 */
58
	protected IFigure primaryShape;
59
60
	/**
61
	 * @generated
62
	 */
63
	public InterfaceEditPart(View view) {
64
		super(view);
65
	}
66
67
	/**
68
	 * @generated
69
	 */
70
	protected void createDefaultEditPolicies() {
71
		super.createDefaultEditPolicies();
72
		installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE, new InterfaceItemSemanticEditPolicy());
73
		installEditPolicy(EditPolicy.LAYOUT_ROLE, createLayoutEditPolicy());
74
75
	}
76
77
	/**
78
	 * @generated
79
	 */
80
	protected LayoutEditPolicy createLayoutEditPolicy() {
81
		LayoutEditPolicy lep = new LayoutEditPolicy() {
82
83
			protected void decorateChild(EditPart child) {
84
				if (isExternalLabel(child)) {
85
					return;
86
				}
87
				super.decorateChild(child);
88
			}
89
90
			protected EditPolicy createChildEditPolicy(EditPart child) {
91
				EditPolicy result = child.getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE);
92
				if (result == null) {
93
					result = new NonResizableEditPolicy();
94
				}
95
				return result;
96
			}
97
98
			protected Command getMoveChildrenCommand(Request request) {
99
				return null;
100
			}
101
102
			protected Command getCreateCommand(CreateRequest request) {
103
				return null;
104
			}
105
		};
106
		UMLExtNodeLabelHostLayoutEditPolicy xlep = new UMLExtNodeLabelHostLayoutEditPolicy() {
107
108
			protected boolean isExternalLabel(EditPart editPart) {
109
				return InterfaceEditPart.this.isExternalLabel(editPart);
110
			}
111
		};
112
		xlep.setRealLayoutEditPolicy(lep);
113
		return xlep;
114
	}
115
116
	/**
117
	 * @generated
118
	 */
119
	protected IFigure createNodeShape() {
120
		ProvidedInterfaceCircleFigure figure = new ProvidedInterfaceCircleFigure();
121
		return primaryShape = figure;
122
	}
123
124
	/**
125
	 * @generated
126
	 */
127
	public ProvidedInterfaceCircleFigure getPrimaryShape() {
128
		return (ProvidedInterfaceCircleFigure) primaryShape;
129
	}
130
131
	/**
132
	 * @generated 
133
	 */
134
	protected IFigure getContentPaneFor(IGraphicalEditPart editPart) {
135
		if (isExternalLabel(editPart)) {
136
			return getExternalLabelsContainer();
137
		}
138
139
		return super.getContentPaneFor(editPart);
140
	}
141
142
	/**
143
	 * @generated
144
	 */
145
	protected NodeFigure createNodePlate() {
146
		DefaultSizeNodeFigure result = new DefaultSizeNodeFigure(getMapMode().DPtoLP(15), getMapMode().DPtoLP(15));
147
		return result;
148
	}
149
150
	/**
151
	 * @generated
152
	 */
153
	public EditPolicy getPrimaryDragEditPolicy() {
154
		EditPolicy result = super.getPrimaryDragEditPolicy();
155
		if (result instanceof ResizableEditPolicy) {
156
			ResizableEditPolicy ep = (ResizableEditPolicy) result;
157
158
			ep.setResizeDirections(PositionConstants.NONE);
159
160
		}
161
		return result;
162
	}
163
164
	/**
165
	 * Creates figure for this edit part.
166
	 * 
167
	 * Body of this method does not depend on settings in generation model
168
	 * so you may safely remove <i>generated</i> tag and modify it.
169
	 * 
170
	 * @generated
171
	 */
172
	protected NodeFigure createNodeFigure() {
173
		NodeFigure figure = createNodePlate();
174
		figure.setLayoutManager(new StackLayout());
175
		IFigure shape = createNodeShape();
176
		figure.add(shape);
177
		contentPane = setupContentPane(shape);
178
		return figure;
179
	}
180
181
	/**
182
	 * Default implementation treats passed figure as content pane.
183
	 * Respects layout one may have set for generated figure.
184
	 * @param nodeShape instance of generated figure class
185
	 * @generated
186
	 */
187
	protected IFigure setupContentPane(IFigure nodeShape) {
188
		if (nodeShape.getLayoutManager() == null) {
189
			ConstrainedToolbarLayout layout = new ConstrainedToolbarLayout();
190
			layout.setSpacing(getMapMode().DPtoLP(5));
191
			nodeShape.setLayoutManager(layout);
192
		}
193
		return nodeShape; // use nodeShape itself as contentPane
194
	}
195
196
	/**
197
	 * @generated
198
	 */
199
	public IFigure getContentPane() {
200
		if (contentPane != null) {
201
			return contentPane;
202
		}
203
		return super.getContentPane();
204
	}
205
206
	/**
207
	 * @generated
208
	 */
209
	public EditPart getPrimaryChildEditPart() {
210
		return getChildBySemanticHint(UMLVisualIDRegistry.getType(InterfaceNameEditPart.VISUAL_ID));
211
	}
212
213
	/**
214
	 * @generated
215
	 */
216
	protected boolean isExternalLabel(EditPart childEditPart) {
217
		if (childEditPart instanceof InterfaceNameEditPart) {
218
			return true;
219
		}
220
		return false;
221
	}
222
223
	/**
224
	 * @generated
225
	 */
226
	protected IFigure getExternalLabelsContainer() {
227
		LayerManager root = (LayerManager) getRoot();
228
		return root.getLayer(UMLEditPartFactory.EXTERNAL_NODE_LABELS_LAYER);
229
	}
230
231
	/**
232
	 * @generated
233
	 */
234
	protected void addChildVisual(EditPart childEditPart, int index) {
235
		if (isExternalLabel(childEditPart)) {
236
			IFigure labelFigure = ((GraphicalEditPart) childEditPart).getFigure();
237
			getExternalLabelsContainer().add(labelFigure);
238
			return;
239
		}
240
		super.addChildVisual(childEditPart, -1);
241
	}
242
243
	/**
244
	 * @generated
245
	 */
246
	protected void removeChildVisual(EditPart childEditPart) {
247
		if (isExternalLabel(childEditPart)) {
248
			IFigure labelFigure = ((GraphicalEditPart) childEditPart).getFigure();
249
			getExternalLabelsContainer().remove(labelFigure);
250
			return;
251
		}
252
		super.removeChildVisual(childEditPart);
253
	}
254
255
	/**
256
	 * @generated
257
	 */
258
	public void removeNotify() {
259
		for (Iterator it = getChildren().iterator(); it.hasNext();) {
260
			EditPart childEditPart = (EditPart) it.next();
261
			if (isExternalLabel(childEditPart)) {
262
				IFigure labelFigure = ((GraphicalEditPart) childEditPart).getFigure();
263
				getExternalLabelsContainer().remove(labelFigure);
264
			}
265
		}
266
		super.removeNotify();
267
	}
268
269
	/**
270
	 * @generated
271
	 */
272
	public class ProvidedInterfaceCircleFigure extends org.eclipse.draw2d.Ellipse {
273
274
		/**
275
		 * @generated
276
		 */
277
		public ProvidedInterfaceCircleFigure() {
278
279
			this.setPreferredSize(getMapMode().DPtoLP(15), getMapMode().DPtoLP(15));
280
			this.setMaximumSize(new org.eclipse.draw2d.geometry.Dimension(getMapMode().DPtoLP(15), getMapMode().DPtoLP(15)));
281
			this.setMinimumSize(new org.eclipse.draw2d.geometry.Dimension(getMapMode().DPtoLP(15), getMapMode().DPtoLP(15)));
282
			createContents();
283
		}
284
285
		/**
286
		 * @generated
287
		 */
288
		private void createContents() {
289
		}
290
291
		/**
292
		 * @generated
293
		 */
294
		private boolean myUseLocalCoordinates = false;
295
296
		/**
297
		 * @generated
298
		 */
299
		protected boolean useLocalCoordinates() {
300
			return myUseLocalCoordinates;
301
		}
302
303
		/**
304
		 * @generated
305
		 */
306
		protected void setUseLocalCoordinates(boolean useLocalCoordinates) {
307
			myUseLocalCoordinates = useLocalCoordinates;
308
		}
309
310
	}
311
312
}
(-).options (+7 lines)
Added Link Here
1
# Debugging options for the org.eclipse.uml2.diagram.component plug-in
2
3
# Turn on general debugging for the org.eclipse.uml2.diagram.component plug-in
4
org.eclipse.uml2.diagram.component/debug=false
5
6
# Turn on debugging of visualID processing
7
org.eclipse.uml2.diagram.component/debug/visualID=true
(-)src/org/eclipse/uml2/diagram/component/providers/UMLEditPartProvider.java (+142 lines)
Added Link Here
1
package org.eclipse.uml2.diagram.component.providers;
2
3
import java.lang.ref.WeakReference;
4
5
import org.eclipse.gef.EditPart;
6
import org.eclipse.gef.EditPartFactory;
7
import org.eclipse.gmf.runtime.common.core.service.IOperation;
8
import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;
9
import org.eclipse.gmf.runtime.diagram.ui.services.editpart.AbstractEditPartProvider;
10
import org.eclipse.gmf.runtime.diagram.ui.services.editpart.CreateGraphicEditPartOperation;
11
import org.eclipse.gmf.runtime.diagram.ui.services.editpart.IEditPartOperation;
12
import org.eclipse.gmf.runtime.notation.View;
13
14
import org.eclipse.uml2.diagram.component.edit.parts.PackageEditPart;
15
import org.eclipse.uml2.diagram.component.edit.parts.UMLEditPartFactory;
16
import org.eclipse.uml2.diagram.component.part.UMLVisualIDRegistry;
17
18
/**
19
 * @generated
20
 */
21
public class UMLEditPartProvider extends AbstractEditPartProvider {
22
23
	/**
24
	 * @generated
25
	 */
26
	private EditPartFactory factory;
27
28
	/**
29
	 * @generated
30
	 */
31
	private boolean allowCaching;
32
33
	/**
34
	 * @generated
35
	 */
36
	private WeakReference cachedPart;
37
38
	/**
39
	 * @generated
40
	 */
41
	private WeakReference cachedView;
42
43
	/**
44
	 * @generated
45
	 */
46
	public UMLEditPartProvider() {
47
		setFactory(new UMLEditPartFactory());
48
		setAllowCaching(true);
49
	}
50
51
	/**
52
	 * @generated
53
	 */
54
	public final EditPartFactory getFactory() {
55
		return factory;
56
	}
57
58
	/**
59
	 * @generated
60
	 */
61
	protected void setFactory(EditPartFactory factory) {
62
		this.factory = factory;
63
	}
64
65
	/**
66
	 * @generated
67
	 */
68
	public final boolean isAllowCaching() {
69
		return allowCaching;
70
	}
71
72
	/**
73
	 * @generated
74
	 */
75
	protected synchronized void setAllowCaching(boolean allowCaching) {
76
		this.allowCaching = allowCaching;
77
		if (!allowCaching) {
78
			cachedPart = null;
79
			cachedView = null;
80
		}
81
	}
82
83
	/**
84
	 * @generated
85
	 */
86
	protected IGraphicalEditPart createEditPart(View view) {
87
		EditPart part = factory.createEditPart(null, view);
88
		if (part instanceof IGraphicalEditPart) {
89
			return (IGraphicalEditPart) part;
90
		}
91
		return null;
92
	}
93
94
	/**
95
	 * @generated
96
	 */
97
	protected IGraphicalEditPart getCachedPart(View view) {
98
		if (cachedView != null && cachedView.get() == view) {
99
			return (IGraphicalEditPart) cachedPart.get();
100
		}
101
		return null;
102
	}
103
104
	/**
105
	 * @generated
106
	 */
107
	public synchronized IGraphicalEditPart createGraphicEditPart(View view) {
108
		if (isAllowCaching()) {
109
			IGraphicalEditPart part = getCachedPart(view);
110
			cachedPart = null;
111
			cachedView = null;
112
			if (part != null) {
113
				return part;
114
			}
115
		}
116
		return createEditPart(view);
117
	}
118
119
	/**
120
	 * @generated
121
	 */
122
	public synchronized boolean provides(IOperation operation) {
123
		if (operation instanceof CreateGraphicEditPartOperation) {
124
			View view = ((IEditPartOperation) operation).getView();
125
			if (!PackageEditPart.MODEL_ID.equals(UMLVisualIDRegistry.getModelID(view))) {
126
				return false;
127
			}
128
			if (isAllowCaching() && getCachedPart(view) != null) {
129
				return true;
130
			}
131
			IGraphicalEditPart part = createEditPart(view);
132
			if (part != null) {
133
				if (isAllowCaching()) {
134
					cachedPart = new WeakReference(part);
135
					cachedView = new WeakReference(view);
136
				}
137
				return true;
138
			}
139
		}
140
		return false;
141
	}
142
}
(-)src/org/eclipse/uml2/diagram/component/navigator/UMLNavigatorSorter.java (+30 lines)
Added Link Here
1
package org.eclipse.uml2.diagram.component.navigator;
2
3
import org.eclipse.jface.viewers.ViewerSorter;
4
5
import org.eclipse.uml2.diagram.component.edit.parts.PackageEditPart;
6
7
/**
8
 * @generated
9
 */
10
public class UMLNavigatorSorter extends ViewerSorter {
11
12
	/**
13
	 * @generated
14
	 */
15
	private static final int GROUP_CATEGORY = 7003;
16
17
	/**
18
	 * @generated
19
	 */
20
	public int category(Object element) {
21
		if (element instanceof UMLNavigatorItem) {
22
			UMLNavigatorItem item = (UMLNavigatorItem) element;
23
			if (PackageEditPart.MODEL_ID.equals(item.getModelID())) {
24
				return item.getVisualID();
25
			}
26
		}
27
		return GROUP_CATEGORY;
28
	}
29
30
}
(-)src/org/eclipse/uml2/diagram/component/part/UMLInitDiagramFileAction.java (+108 lines)
Added Link Here
1
package org.eclipse.uml2.diagram.component.part;
2
3
import org.eclipse.core.resources.IFile;
4
5
import org.eclipse.emf.common.util.URI;
6
import org.eclipse.emf.common.util.WrappedException;
7
8
import org.eclipse.emf.ecore.EObject;
9
10
import org.eclipse.emf.ecore.resource.Resource;
11
import org.eclipse.emf.ecore.resource.ResourceSet;
12
13
import org.eclipse.emf.transaction.TransactionalEditingDomain;
14
15
import org.eclipse.gmf.runtime.emf.core.GMFEditingDomainFactory;
16
17
import org.eclipse.jface.action.IAction;
18
19
import org.eclipse.jface.dialogs.IDialogSettings;
20
import org.eclipse.jface.dialogs.MessageDialog;
21
22
import org.eclipse.jface.viewers.ISelection;
23
import org.eclipse.jface.viewers.IStructuredSelection;
24
import org.eclipse.jface.viewers.StructuredSelection;
25
26
import org.eclipse.jface.wizard.Wizard;
27
import org.eclipse.jface.wizard.WizardDialog;
28
29
import org.eclipse.ui.IObjectActionDelegate;
30
import org.eclipse.ui.IWorkbenchPart;
31
import org.eclipse.uml2.diagram.component.edit.parts.PackageEditPart;
32
33
/**
34
 * @generated
35
 */
36
public class UMLInitDiagramFileAction implements IObjectActionDelegate {
37
38
	/**
39
	 * @generated
40
	 */
41
	private IWorkbenchPart myPart;
42
43
	/**
44
	 * @generated
45
	 */
46
	private IFile mySelectedModelFile;
47
48
	/**
49
	 * @generated
50
	 */
51
	private IStructuredSelection mySelection;
52
53
	/**
54
	 * @generated
55
	 */
56
	public void setActivePart(IAction action, IWorkbenchPart targetPart) {
57
		myPart = targetPart;
58
	}
59
60
	/**
61
	 * @generated
62
	 */
63
	public void selectionChanged(IAction action, ISelection selection) {
64
		mySelectedModelFile = null;
65
		mySelection = StructuredSelection.EMPTY;
66
		action.setEnabled(false);
67
		if (selection instanceof IStructuredSelection == false || selection.isEmpty()) {
68
			return;
69
		}
70
		mySelection = (IStructuredSelection) selection;
71
		mySelectedModelFile = (IFile) ((IStructuredSelection) selection).getFirstElement();
72
		action.setEnabled(true);
73
	}
74
75
	/**
76
	 * @generated
77
	 */
78
	public void run(IAction action) {
79
		TransactionalEditingDomain editingDomain = GMFEditingDomainFactory.INSTANCE.createEditingDomain();
80
		ResourceSet resourceSet = editingDomain.getResourceSet();
81
		EObject diagramRoot = null;
82
		try {
83
			Resource resource = resourceSet.getResource(URI.createPlatformResourceURI(mySelectedModelFile.getFullPath().toString()), true);
84
			diagramRoot = (EObject) resource.getContents().get(0);
85
		} catch (WrappedException ex) {
86
			UMLDiagramEditorPlugin.getInstance().logError("Unable to load resource: " + mySelectedModelFile.getFullPath().toString(), ex); //$NON-NLS-1$
87
		}
88
		if (diagramRoot == null) {
89
			MessageDialog.openError(myPart.getSite().getShell(), "Error", "Model file loading failed");
90
			return;
91
		}
92
		Wizard wizard = new UMLNewDiagramFileWizard(mySelectedModelFile, myPart.getSite().getPage(), mySelection, diagramRoot, editingDomain);
93
		IDialogSettings pluginDialogSettings = UMLDiagramEditorPlugin.getInstance().getDialogSettings();
94
		IDialogSettings initDiagramFileSettings = pluginDialogSettings.getSection("InisDiagramFile"); //$NON-NLS-1$
95
		if (initDiagramFileSettings == null) {
96
			initDiagramFileSettings = pluginDialogSettings.addNewSection("InisDiagramFile"); //$NON-NLS-1$
97
		}
98
		wizard.setDialogSettings(initDiagramFileSettings);
99
		wizard.setForcePreviousAndNextButtons(false);
100
		wizard.setWindowTitle("Initialize new " + PackageEditPart.MODEL_ID + " diagram file");
101
102
		WizardDialog dialog = new WizardDialog(myPart.getSite().getShell(), wizard);
103
		dialog.create();
104
		dialog.getShell().setSize(Math.max(500, dialog.getShell().getSize().x), 500);
105
		dialog.open();
106
	}
107
108
}
(-)src/org/eclipse/uml2/diagram/component/providers/UMLStructuralFeaturesParser.java (+102 lines)
Added Link Here
1
package org.eclipse.uml2.diagram.component.providers;
2
3
import java.text.FieldPosition;
4
import java.text.MessageFormat;
5
import java.util.ArrayList;
6
import java.util.Iterator;
7
import java.util.List;
8
9
import org.eclipse.core.runtime.IAdaptable;
10
import org.eclipse.emf.common.notify.Notification;
11
import org.eclipse.emf.ecore.EObject;
12
import org.eclipse.emf.ecore.EStructuralFeature;
13
import org.eclipse.emf.transaction.TransactionalEditingDomain;
14
import org.eclipse.emf.transaction.util.TransactionUtil;
15
import org.eclipse.gmf.runtime.common.core.command.ICommand;
16
import org.eclipse.gmf.runtime.common.core.command.UnexecutableCommand;
17
import org.eclipse.gmf.runtime.common.ui.services.parser.IParserEditStatus;
18
import org.eclipse.gmf.runtime.common.ui.services.parser.ParserEditStatus;
19
import org.eclipse.gmf.runtime.emf.commands.core.command.CompositeTransactionalCommand;
20
import org.eclipse.uml2.diagram.component.part.UMLDiagramEditorPlugin;
21
22
/**
23
 * @generated
24
 */
25
public class UMLStructuralFeaturesParser extends UMLAbstractParser {
26
27
	/**
28
	 * @generated
29
	 */
30
	private List features;
31
32
	/**
33
	 * @generated
34
	 */
35
	public UMLStructuralFeaturesParser(List features) {
36
		this.features = features;
37
	}
38
39
	/**
40
	 * @generated
41
	 */
42
	protected String getStringByPattern(IAdaptable adapter, int flags, String pattern, MessageFormat processor) {
43
		EObject element = (EObject) adapter.getAdapter(EObject.class);
44
		List values = new ArrayList(features.size());
45
		for (Iterator it = features.iterator(); it.hasNext();) {
46
			EStructuralFeature feature = (EStructuralFeature) it.next();
47
			Object value = element.eGet(feature);
48
			value = getValidValue(feature, value);
49
			values.add(value);
50
		}
51
		return processor.format(values.toArray(new Object[values.size()]), new StringBuffer(), new FieldPosition(0)).toString();
52
	}
53
54
	/**
55
	 * @generated
56
	 */
57
	protected IParserEditStatus validateValues(Object[] values) {
58
		if (values.length != features.size()) {
59
			return ParserEditStatus.UNEDITABLE_STATUS;
60
		}
61
		for (int i = 0; i < values.length; i++) {
62
			Object value = getValidNewValue((EStructuralFeature) features.get(i), values[i]);
63
			if (value instanceof InvalidValue) {
64
				return new ParserEditStatus(UMLDiagramEditorPlugin.ID, IParserEditStatus.UNEDITABLE, value.toString());
65
			}
66
		}
67
		return ParserEditStatus.EDITABLE_STATUS;
68
	}
69
70
	/**
71
	 * @generated
72
	 */
73
	public ICommand getParseCommand(IAdaptable adapter, Object[] values) {
74
		EObject element = (EObject) adapter.getAdapter(EObject.class);
75
		if (element == null) {
76
			return UnexecutableCommand.INSTANCE;
77
		}
78
		TransactionalEditingDomain editingDomain = TransactionUtil.getEditingDomain(element);
79
		if (editingDomain == null) {
80
			return UnexecutableCommand.INSTANCE;
81
		}
82
		CompositeTransactionalCommand command = new CompositeTransactionalCommand(editingDomain, "Set Values"); //$NON-NLS-1$
83
		for (int i = 0; i < values.length; i++) {
84
			EStructuralFeature feature = (EStructuralFeature) features.get(i);
85
			command.compose(getModificationCommand(element, feature, values[i]));
86
		}
87
		return command;
88
	}
89
90
	/**
91
	 * @generated
92
	 */
93
	public boolean isAffectingEvent(Object event, int flags) {
94
		if (event instanceof Notification) {
95
			Object feature = ((Notification) event).getFeature();
96
			if (features.contains(feature)) {
97
				return true;
98
			}
99
		}
100
		return false;
101
	}
102
}
(-)src/org/eclipse/uml2/diagram/component/view/factories/InterfaceRealizationViewFactory.java (+52 lines)
Added Link Here
1
package org.eclipse.uml2.diagram.component.view.factories;
2
3
import java.util.ArrayList;
4
import java.util.List;
5
6
import org.eclipse.core.runtime.IAdaptable;
7
8
import org.eclipse.emf.ecore.EAnnotation;
9
import org.eclipse.emf.ecore.EcoreFactory;
10
11
import org.eclipse.gmf.runtime.diagram.ui.view.factories.ConnectionViewFactory;
12
13
import org.eclipse.gmf.runtime.notation.NotationFactory;
14
import org.eclipse.gmf.runtime.notation.View;
15
16
import org.eclipse.uml2.diagram.component.edit.parts.PackageEditPart;
17
import org.eclipse.uml2.diagram.component.part.UMLVisualIDRegistry;
18
19
/**
20
 * @generated
21
 */
22
public class InterfaceRealizationViewFactory extends ConnectionViewFactory {
23
24
	/**
25
	 * @generated 
26
	 */
27
	protected List createStyles(View view) {
28
		List styles = new ArrayList();
29
		styles.add(NotationFactory.eINSTANCE.createRoutingStyle());
30
		styles.add(NotationFactory.eINSTANCE.createFontStyle());
31
		styles.add(NotationFactory.eINSTANCE.createLineStyle());
32
		return styles;
33
	}
34
35
	/**
36
	 * @generated
37
	 */
38
	protected void decorateView(View containerView, View view, IAdaptable semanticAdapter, String semanticHint, int index, boolean persisted) {
39
		if (semanticHint == null) {
40
			semanticHint = UMLVisualIDRegistry.getType(org.eclipse.uml2.diagram.component.edit.parts.InterfaceRealizationEditPart.VISUAL_ID);
41
			view.setType(semanticHint);
42
		}
43
		super.decorateView(containerView, view, semanticAdapter, semanticHint, index, persisted);
44
		if (!PackageEditPart.MODEL_ID.equals(UMLVisualIDRegistry.getModelID(containerView))) {
45
			EAnnotation shortcutAnnotation = EcoreFactory.eINSTANCE.createEAnnotation();
46
			shortcutAnnotation.setSource("Shortcut"); //$NON-NLS-1$
47
			shortcutAnnotation.getDetails().put("modelID", PackageEditPart.MODEL_ID); //$NON-NLS-1$
48
			view.getEAnnotations().add(shortcutAnnotation);
49
		}
50
	}
51
52
}
(-)src/org/eclipse/uml2/diagram/component/view/factories/InterfaceNameViewFactory.java (+40 lines)
Added Link Here
1
package org.eclipse.uml2.diagram.component.view.factories;
2
3
import java.util.ArrayList;
4
import java.util.List;
5
import org.eclipse.core.runtime.IAdaptable;
6
import org.eclipse.gmf.runtime.diagram.core.preferences.PreferencesHint;
7
import org.eclipse.gmf.runtime.diagram.ui.view.factories.AbstractLabelViewFactory;
8
import org.eclipse.gmf.runtime.notation.Node;
9
import org.eclipse.gmf.runtime.notation.View;
10
import org.eclipse.gmf.runtime.diagram.ui.util.MeasurementUnitHelper;
11
12
import org.eclipse.gmf.runtime.draw2d.ui.mapmode.IMapMode;
13
14
import org.eclipse.gmf.runtime.notation.Location;
15
16
/**
17
 * @generated
18
 */
19
public class InterfaceNameViewFactory extends AbstractLabelViewFactory {
20
21
	/**
22
	 * @generated
23
	 */
24
	public View createView(IAdaptable semanticAdapter, View containerView, String semanticHint, int index, boolean persisted, PreferencesHint preferencesHint) {
25
		Node view = (Node) super.createView(semanticAdapter, containerView, semanticHint, index, persisted, preferencesHint);
26
		Location location = (Location) view.getLayoutConstraint();
27
		IMapMode mapMode = MeasurementUnitHelper.getMapMode(containerView.getDiagram().getMeasurementUnit());
28
		location.setX(mapMode.DPtoLP(0));
29
		location.setY(mapMode.DPtoLP(5));
30
		return view;
31
	}
32
33
	/**
34
	 * @generated
35
	 */
36
	protected List createStyles(View view) {
37
		List styles = new ArrayList();
38
		return styles;
39
	}
40
}
(-)src/org/eclipse/uml2/diagram/component/edit/policies/ArtifactItemSemanticEditPolicy.java (+40 lines)
Added Link Here
1
package org.eclipse.uml2.diagram.component.edit.policies;
2
3
import org.eclipse.gef.commands.Command;
4
import org.eclipse.gmf.runtime.emf.type.core.commands.DestroyElementCommand;
5
import org.eclipse.gmf.runtime.emf.type.core.requests.CreateRelationshipRequest;
6
import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest;
7
import org.eclipse.emf.ecore.EObject;
8
import org.eclipse.emf.ecore.EAnnotation;
9
import org.eclipse.gmf.runtime.notation.View;
10
11
/**
12
 * @generated
13
 */
14
public class ArtifactItemSemanticEditPolicy extends UMLBaseItemSemanticEditPolicy {
15
16
	/**
17
	 * @generated
18
	 */
19
	protected Command getDestroyElementCommand(DestroyElementRequest req) {
20
		return getMSLWrapper(new DestroyElementCommand(req) {
21
22
			protected EObject getElementToDestroy() {
23
				View view = (View) getHost().getModel();
24
				EAnnotation annotation = view.getEAnnotation("Shortcut"); //$NON-NLS-1$
25
				if (annotation != null) {
26
					return view;
27
				}
28
				return super.getElementToDestroy();
29
			}
30
31
		});
32
	}
33
34
	/**
35
	 * @generated
36
	 */
37
	protected Command getCreateRelationshipCommand(CreateRelationshipRequest req) {
38
		return super.getCreateRelationshipCommand(req);
39
	}
40
}
(-)src/org/eclipse/uml2/diagram/component/part/UMLCreationWizard.java (+130 lines)
Added Link Here
1
package org.eclipse.uml2.diagram.component.part;
2
3
import java.lang.reflect.InvocationTargetException;
4
5
import org.eclipse.core.resources.IFile;
6
import org.eclipse.core.runtime.CoreException;
7
import org.eclipse.core.runtime.IProgressMonitor;
8
import org.eclipse.emf.common.util.URI;
9
import org.eclipse.jface.dialogs.ErrorDialog;
10
import org.eclipse.jface.operation.IRunnableWithProgress;
11
import org.eclipse.jface.viewers.IStructuredSelection;
12
import org.eclipse.jface.wizard.Wizard;
13
import org.eclipse.ui.INewWizard;
14
import org.eclipse.ui.IWorkbench;
15
16
import org.eclipse.ui.actions.WorkspaceModifyOperation;
17
import org.eclipse.uml2.diagram.component.edit.parts.PackageEditPart;
18
19
/**
20
 * @generated
21
 */
22
public class UMLCreationWizard extends Wizard implements INewWizard {
23
24
	/**
25
	 * @generated
26
	 */
27
	private IWorkbench workbench;
28
29
	/**
30
	 * @generated
31
	 */
32
	protected IStructuredSelection selection;
33
34
	/**
35
	 * @generated
36
	 */
37
	protected UMLCreationWizardPage page;
38
39
	/**
40
	 * @generated
41
	 */
42
	protected URI diagramURI;
43
44
	/**
45
	 * @generated
46
	 */
47
	private boolean openNewlyCreatedDiagramEditor = true;
48
49
	/**
50
	 * @generated
51
	 */
52
	public IWorkbench getWorkbench() {
53
		return workbench;
54
	}
55
56
	/**
57
	 * @generated
58
	 */
59
	public IStructuredSelection getSelection() {
60
		return selection;
61
	}
62
63
	/**
64
	 * @generated
65
	 */
66
	public final URI getDiagramURI() {
67
		return diagramURI;
68
	}
69
70
	/**
71
	 * @generated
72
	 */
73
	public final boolean isOpenNewlyCreatedDiagramEditor() {
74
		return openNewlyCreatedDiagramEditor;
75
	}
76
77
	/**
78
	 * @generated
79
	 */
80
	public void setOpenNewlyCreatedDiagramEditor(boolean openNewlyCreatedDiagramEditor) {
81
		this.openNewlyCreatedDiagramEditor = openNewlyCreatedDiagramEditor;
82
	}
83
84
	/**
85
	 * @generated
86
	 */
87
	public void init(IWorkbench workbench, IStructuredSelection selection) {
88
		this.workbench = workbench;
89
		this.selection = selection;
90
		setWindowTitle("New UMLComponent Diagram");
91
		setDefaultPageImageDescriptor(UMLDiagramEditorPlugin.getBundledImageDescriptor("icons/wizban/NewUMLWizard.gif")); //$NON-NLS-1$
92
		setNeedsProgressMonitor(true);
93
	}
94
95
	/**
96
	 * @generated
97
	 */
98
	public void addPages() {
99
		page = new UMLCreationWizardPage("CreationWizardPage", getSelection()); //$NON-NLS-1$
100
		page.setTitle("Create UMLComponent Diagram");
101
		page.setDescription("Create a new UMLComponent diagram.");
102
		addPage(page);
103
	}
104
105
	/**
106
	 * @generated
107
	 */
108
	public boolean performFinish() {
109
		IRunnableWithProgress op = new WorkspaceModifyOperation(null) {
110
111
			protected void execute(IProgressMonitor monitor) throws CoreException, InterruptedException {
112
				diagramURI = UMLDiagramEditorUtil.createAndOpenDiagram(page.getContainerFullPath(), page.getFileName(), getWorkbench().getActiveWorkbenchWindow(), monitor,
113
						isOpenNewlyCreatedDiagramEditor(), true);
114
			}
115
		};
116
		try {
117
			getContainer().run(false, true, op);
118
		} catch (InterruptedException e) {
119
			return false;
120
		} catch (InvocationTargetException e) {
121
			if (e.getTargetException() instanceof CoreException) {
122
				ErrorDialog.openError(getContainer().getShell(), "Creation Problems", null, ((CoreException) e.getTargetException()).getStatus());
123
			} else {
124
				UMLDiagramEditorPlugin.getInstance().logError("Error creating diagram", e.getTargetException()); //$NON-NLS-1$
125
			}
126
			return false;
127
		}
128
		return diagramURI != null;
129
	}
130
}
(-)build.properties (+7 lines)
Added Link Here
1
bin.includes = .,\
2
               META-INF/,\
3
               plugin.xml,\
4
               plugin.properties
5
jars.compile.order = .
6
source.. = src/
7
output.. = bin/

Return to bug 161573