Download
Getting Started
Members
Projects
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
More
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
Toggle navigation
Bugzilla – Attachment 52855 Details for
Bug 161573
[Plan Item] Component Diagrams
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
Log In
[x]
|
Terms of Use
|
Copyright Agent
Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read
this important communication.
[patch]
Initial implementation of the GMF based Component Diagram
patch_161573.txt (text/plain), 726.79 KB, created by
Michael Golubev
on 2006-10-27 12:07:56 EDT
(
hide
)
Description:
Initial implementation of the GMF based Component Diagram
Filename:
MIME Type:
Creator:
Michael Golubev
Created:
2006-10-27 12:07:56 EDT
Size:
726.79 KB
patch
obsolete
>### Eclipse Workspace Patch 1.0 >#P org.eclipse.uml2.diagram.component >Index: src/org/eclipse/uml2/diagram/component/edit/helpers/PortRequiredEditHelperAdvice.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/component/edit/helpers/PortRequiredEditHelperAdvice.java >diff -N src/org/eclipse/uml2/diagram/component/edit/helpers/PortRequiredEditHelperAdvice.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/component/edit/helpers/PortRequiredEditHelperAdvice.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,9 @@ >+package org.eclipse.uml2.diagram.component.edit.helpers; >+ >+import org.eclipse.gmf.runtime.emf.type.core.edithelper.AbstractEditHelperAdvice; >+ >+/** >+ * @generated >+ */ >+public class PortRequiredEditHelperAdvice extends AbstractEditHelperAdvice { >+} >Index: src/org/eclipse/uml2/diagram/component/navigator/UMLNavigatorActionProvider.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/component/navigator/UMLNavigatorActionProvider.java >diff -N src/org/eclipse/uml2/diagram/component/navigator/UMLNavigatorActionProvider.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/component/navigator/UMLNavigatorActionProvider.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,154 @@ >+package org.eclipse.uml2.diagram.component.navigator; >+ >+import org.eclipse.gmf.runtime.diagram.ui.parts.DiagramEditorInput; >+ >+import org.eclipse.gmf.runtime.notation.Diagram; >+ >+import org.eclipse.jface.action.Action; >+import org.eclipse.jface.action.IMenuManager; >+ >+import org.eclipse.jface.viewers.IStructuredSelection; >+ >+import org.eclipse.ui.IActionBars; >+import org.eclipse.ui.IWorkbenchPage; >+import org.eclipse.ui.PartInitException; >+ >+import org.eclipse.ui.navigator.CommonActionProvider; >+import org.eclipse.ui.navigator.ICommonActionConstants; >+import org.eclipse.ui.navigator.ICommonActionExtensionSite; >+import org.eclipse.ui.navigator.ICommonMenuConstants; >+import org.eclipse.ui.navigator.ICommonViewerWorkbenchSite; >+ >+import org.eclipse.uml2.diagram.component.edit.parts.PackageEditPart; >+ >+import org.eclipse.uml2.diagram.component.part.UMLDiagramEditor; >+import org.eclipse.uml2.diagram.component.part.UMLDiagramEditorPlugin; >+import org.eclipse.uml2.diagram.component.part.UMLVisualIDRegistry; >+ >+/** >+ * @generated >+ */ >+public class UMLNavigatorActionProvider extends CommonActionProvider { >+ >+ /** >+ * @generated >+ */ >+ private boolean myContribute; >+ >+ /** >+ * @generated >+ */ >+ private OpenDiagramAction myOpenDiagramAction; >+ >+ /** >+ * @generated >+ */ >+ public void init(ICommonActionExtensionSite aSite) { >+ super.init(aSite); >+ if (aSite.getViewSite() instanceof ICommonViewerWorkbenchSite) { >+ myContribute = true; >+ makeActions((ICommonViewerWorkbenchSite) aSite.getViewSite()); >+ } else { >+ myContribute = false; >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ private void makeActions(ICommonViewerWorkbenchSite viewerSite) { >+ myOpenDiagramAction = new OpenDiagramAction(viewerSite); >+ } >+ >+ /** >+ * @generated >+ */ >+ public void fillActionBars(IActionBars actionBars) { >+ if (!myContribute) { >+ return; >+ } >+ IStructuredSelection selection = (IStructuredSelection) getContext().getSelection(); >+ myOpenDiagramAction.selectionChanged(selection); >+ if (myOpenDiagramAction.isEnabled()) { >+ actionBars.setGlobalActionHandler(ICommonActionConstants.OPEN, myOpenDiagramAction); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ public void fillContextMenu(IMenuManager menu) { >+ /* if (!myContribute || getContext().getSelection().isEmpty()) { >+ return; >+ } >+ >+ IStructuredSelection selection = (IStructuredSelection) getContext().getSelection(); >+ >+ myOpenDiagramAction.selectionChanged(selection); >+ if (myOpenDiagramAction.isEnabled()) { >+ menu.insertAfter(ICommonMenuConstants.GROUP_OPEN, myOpenDiagramAction); >+ }*/ >+ } >+ >+ /** >+ * @generated >+ */ >+ private class OpenDiagramAction extends Action { >+ >+ /** >+ * @generated >+ */ >+ private Diagram myDiagram; >+ >+ /** >+ * @generated >+ */ >+ private ICommonViewerWorkbenchSite myViewerSite; >+ >+ /** >+ * @generated >+ */ >+ public OpenDiagramAction(ICommonViewerWorkbenchSite viewerSite) { >+ super("Open Diagram"); >+ myViewerSite = viewerSite; >+ } >+ >+ /** >+ * @generated >+ */ >+ public final void selectionChanged(IStructuredSelection selection) { >+ myDiagram = null; >+ if (selection.size() == 1) { >+ Object selectedElement = selection.getFirstElement(); >+ if (selectedElement instanceof UMLNavigatorItem) { >+ selectedElement = ((UMLNavigatorItem) selectedElement).getView(); >+ } >+ if (selectedElement instanceof Diagram) { >+ Diagram diagram = (Diagram) selectedElement; >+ if (PackageEditPart.MODEL_ID.equals(UMLVisualIDRegistry.getModelID(diagram))) { >+ myDiagram = diagram; >+ } >+ } >+ } >+ setEnabled(myDiagram != null); >+ } >+ >+ /** >+ * @generated >+ */ >+ public void run() { >+ if (myDiagram == null) { >+ return; >+ } >+ DiagramEditorInput editorInput = new DiagramEditorInput(myDiagram); >+ IWorkbenchPage page = myViewerSite.getPage(); >+ try { >+ page.openEditor(editorInput, UMLDiagramEditor.ID); >+ } catch (PartInitException e) { >+ UMLDiagramEditorPlugin.getInstance().logError("Exception while openning diagram", e); >+ } >+ } >+ >+ } >+ >+} >Index: icons/obj16/UMLDiagramFile.gif >=================================================================== >RCS file: icons/obj16/UMLDiagramFile.gif >diff -N icons/obj16/UMLDiagramFile.gif >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ icons/obj16/UMLDiagramFile.gif 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,6 @@ >+GIF89a¥ åëø___¿¿¿ÿßÀÀÀÿÿÀÀÀÿÿÿ?}IÒè¼²ÙÌfÀ@´?=´?=°?>¬@§B¢C? EFwM~uN{sPÔ²iÚ½|àÈ?ùúü÷ùûõøûòõûðõûíòúêðùßéøÜç÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ!ù?,pÀB, H$ÄÃln I¤äC}< >+gô7yA×Nv¥Î¡kãLVD¢FC >+¯D-£FÁZhFQzj$$}I{? >+?Qj >+Q%¢ >+%Q&&r«©Q°±²[µQA; >Index: icons/incomingLinksNavigatorGroup.gif >=================================================================== >RCS file: icons/incomingLinksNavigatorGroup.gif >diff -N icons/incomingLinksNavigatorGroup.gif >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ icons/incomingLinksNavigatorGroup.gif 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,5 @@ >+GIF89aÕÿÿr/GøØf'øÐxøàøÐf>2èÆøè°èÐøðÈÿÿÿÃ6úöºøà øØ?]FøèÒ«üößãϹ´2àÀxr+ðØ?¥l$yO@_l$?R¼2ï߯¼ 2à 6!ù,s@pH,?È#âèh:¨T0ô4® >+à?p©Ñd¢Y`B¡p8G AØ%%HÁçW¶ _B???B¥¦¥ B®©C³´µI·¸FA;Content-Type: image/gif >+ >+GIF89aÕÿÿr/GøØf'øÐxøàøÐf>2èÆøè°èÐøðÈÿÿÿÃ6úöºøà øØ?]FøèÒ«üößãϹ´2àÀxr+ðØ?¥l$yO@_l$?R¼2ï߯¼ 2à 6!ù,s@pH,?È#âèh:¨T0ô4® >+à?p©Ñd¢Y`B¡p8G AØ%%HÁçW¶ _B???B¥¦¥ B®©C³´µI·¸FA; >Index: src/org/eclipse/uml2/diagram/component/edit/parts/PackageEditPart.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/component/edit/parts/PackageEditPart.java >diff -N src/org/eclipse/uml2/diagram/component/edit/parts/PackageEditPart.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/component/edit/parts/PackageEditPart.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,41 @@ >+package org.eclipse.uml2.diagram.component.edit.parts; >+ >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.DiagramEditPart; >+ >+import org.eclipse.uml2.diagram.component.edit.policies.PackageCanonicalEditPolicy; >+import org.eclipse.uml2.diagram.component.edit.policies.PackageItemSemanticEditPolicy; >+ >+/** >+ * @generated >+ */ >+public class PackageEditPart extends DiagramEditPart { >+ >+ /** >+ * @generated >+ */ >+ public final static String MODEL_ID = "UMLComponent"; //$NON-NLS-1$ >+ >+ /** >+ * @generated >+ */ >+ public static final int VISUAL_ID = 1000; >+ >+ /** >+ * @generated >+ */ >+ public PackageEditPart(View view) { >+ super(view); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void createDefaultEditPolicies() { >+ super.createDefaultEditPolicies(); >+ installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE, new PackageItemSemanticEditPolicy()); >+ installEditPolicy(EditPolicyRoles.CANONICAL_ROLE, new PackageCanonicalEditPolicy()); >+ >+ } >+} >Index: src/org/eclipse/uml2/diagram/component/edit/policies/PortRequiredItemSemanticEditPolicy.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/component/edit/policies/PortRequiredItemSemanticEditPolicy.java >diff -N src/org/eclipse/uml2/diagram/component/edit/policies/PortRequiredItemSemanticEditPolicy.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/component/edit/policies/PortRequiredItemSemanticEditPolicy.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,20 @@ >+package org.eclipse.uml2.diagram.component.edit.policies; >+ >+import org.eclipse.gef.commands.Command; >+ >+import org.eclipse.gmf.runtime.emf.type.core.commands.DestroyReferenceCommand; >+ >+import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyReferenceRequest; >+ >+/** >+ * @generated >+ */ >+public class PortRequiredItemSemanticEditPolicy extends UMLBaseItemSemanticEditPolicy { >+ >+ /** >+ * @generated >+ */ >+ protected Command getDestroyReferenceCommand(DestroyReferenceRequest req) { >+ return getMSLWrapper(new DestroyReferenceCommand(req)); >+ } >+} >Index: src/org/eclipse/uml2/diagram/component/part/UMLNewDiagramFileWizard.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/component/part/UMLNewDiagramFileWizard.java >diff -N src/org/eclipse/uml2/diagram/component/part/UMLNewDiagramFileWizard.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/component/part/UMLNewDiagramFileWizard.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,288 @@ >+package org.eclipse.uml2.diagram.component.part; >+ >+import java.io.IOException; >+ >+import java.util.Collections; >+import java.util.LinkedList; >+import java.util.List; >+ >+import org.eclipse.core.commands.ExecutionException; >+ >+import org.eclipse.core.commands.operations.OperationHistoryFactory; >+ >+import org.eclipse.core.resources.IContainer; >+import org.eclipse.core.resources.IFile; >+ >+import org.eclipse.core.runtime.CoreException; >+import org.eclipse.core.runtime.IAdaptable; >+import org.eclipse.core.runtime.IProgressMonitor; >+import org.eclipse.core.runtime.NullProgressMonitor; >+import org.eclipse.core.runtime.Path; >+ >+import org.eclipse.emf.common.util.URI; >+ >+import org.eclipse.emf.ecore.EObject; >+ >+import org.eclipse.emf.ecore.resource.Resource; >+import org.eclipse.emf.ecore.resource.ResourceSet; >+ >+import org.eclipse.emf.ecore.util.FeatureMap; >+ >+import org.eclipse.emf.edit.provider.IWrapperItemProvider; >+ >+import org.eclipse.emf.edit.ui.provider.AdapterFactoryContentProvider; >+import org.eclipse.emf.edit.ui.provider.AdapterFactoryLabelProvider; >+ >+import org.eclipse.emf.transaction.TransactionalEditingDomain; >+ >+import org.eclipse.gmf.runtime.common.core.command.CommandResult; >+ >+import org.eclipse.gmf.runtime.diagram.core.services.ViewService; >+ >+import org.eclipse.gmf.runtime.diagram.core.services.view.CreateDiagramViewOperation; >+ >+import org.eclipse.gmf.runtime.emf.commands.core.command.AbstractTransactionalCommand; >+ >+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter; >+ >+import org.eclipse.gmf.runtime.notation.Diagram; >+ >+import org.eclipse.jface.viewers.ISelectionChangedListener; >+import org.eclipse.jface.viewers.IStructuredSelection; >+import org.eclipse.jface.viewers.SelectionChangedEvent; >+import org.eclipse.jface.viewers.StructuredSelection; >+import org.eclipse.jface.viewers.TreeViewer; >+ >+import org.eclipse.jface.wizard.Wizard; >+import org.eclipse.jface.wizard.WizardPage; >+ >+import org.eclipse.swt.SWT; >+ >+import org.eclipse.swt.layout.GridData; >+import org.eclipse.swt.layout.GridLayout; >+ >+import org.eclipse.swt.widgets.Composite; >+import org.eclipse.swt.widgets.Label; >+ >+import org.eclipse.ui.IWorkbenchPage; >+import org.eclipse.ui.PartInitException; >+ >+import org.eclipse.ui.dialogs.WizardNewFileCreationPage; >+import org.eclipse.uml2.diagram.component.edit.parts.PackageEditPart; >+ >+/** >+ * @generated >+ */ >+public class UMLNewDiagramFileWizard extends Wizard { >+ >+ /** >+ * @generated >+ */ >+ private TransactionalEditingDomain myEditingDomain; >+ >+ /** >+ * @generated >+ */ >+ private WizardNewFileCreationPage myFileCreationPage; >+ >+ /** >+ * @generated >+ */ >+ private IFile mySelectedModelFile; >+ >+ /** >+ * @generated >+ */ >+ private IWorkbenchPage myWorkbenchPage; >+ >+ /** >+ * @generated >+ */ >+ private IStructuredSelection mySelection; >+ >+ /** >+ * @generated >+ */ >+ private EObject myDiagramRoot; >+ >+ /** >+ * @generated >+ */ >+ public UMLNewDiagramFileWizard(IFile selectedModelFile, IWorkbenchPage workbenchPage, IStructuredSelection selection, EObject diagramRoot, TransactionalEditingDomain editingDomain) { >+ assert selectedModelFile != null : "Null selectedModelFile in UMLNewDiagramFileWizard constructor"; //$NON-NLS-1$ >+ assert workbenchPage != null : "Null workbenchPage in UMLNewDiagramFileWizard constructor"; //$NON-NLS-1$ >+ assert selection != null : "Null selection in UMLNewDiagramFileWizard constructor"; //$NON-NLS-1$ >+ assert diagramRoot != null : "Null diagramRoot in UMLNewDiagramFileWizard constructor"; //$NON-NLS-1$ >+ assert editingDomain != null : "Null editingDomain in UMLNewDiagramFileWizard constructor"; //$NON-NLS-1$ >+ >+ mySelectedModelFile = selectedModelFile; >+ myWorkbenchPage = workbenchPage; >+ mySelection = selection; >+ myDiagramRoot = diagramRoot; >+ myEditingDomain = editingDomain; >+ } >+ >+ /** >+ * @generated >+ */ >+ public void addPages() { >+ myFileCreationPage = new WizardNewFileCreationPage("Initialize new Ecore diagram file", mySelection) { >+ >+ public void createControl(Composite parent) { >+ super.createControl(parent); >+ >+ IContainer parentContainer = mySelectedModelFile.getParent(); >+ String originalFileName = mySelectedModelFile.getProjectRelativePath().removeFileExtension().lastSegment(); >+ String fileExtension = ".umlcomponent_diagram"; //$NON-NLS-1$ >+ String fileName = originalFileName + fileExtension; >+ for (int i = 1; parentContainer.getFile(new Path(fileName)).exists(); i++) { >+ fileName = originalFileName + i + fileExtension; >+ } >+ setFileName(fileName); >+ } >+ >+ }; >+ myFileCreationPage.setTitle("Diagram file"); >+ myFileCreationPage.setDescription("Create new diagram based on " + PackageEditPart.MODEL_ID + " model content"); >+ addPage(myFileCreationPage); >+ addPage(new RootElementSelectorPage()); >+ } >+ >+ /** >+ * @generated >+ */ >+ public boolean performFinish() { >+ IFile diagramFile = myFileCreationPage.createNewFile(); >+ try { >+ diagramFile.setCharset("UTF-8", new NullProgressMonitor()); //$NON-NLS-1$ >+ } catch (CoreException e) { >+ UMLDiagramEditorPlugin.getInstance().logError("Unable to set charset for diagram file", e); //$NON-NLS-1$ >+ } >+ >+ ResourceSet resourceSet = myEditingDomain.getResourceSet(); >+ final Resource diagramResource = resourceSet.createResource(URI.createPlatformResourceURI(diagramFile.getFullPath().toString())); >+ >+ List affectedFiles = new LinkedList(); >+ affectedFiles.add(mySelectedModelFile); >+ affectedFiles.add(diagramFile); >+ >+ AbstractTransactionalCommand command = new AbstractTransactionalCommand(myEditingDomain, "Initializing diagram contents", affectedFiles) { //$NON-NLS-1$ >+ >+ protected CommandResult doExecuteWithResult(IProgressMonitor monitor, IAdaptable info) throws ExecutionException { >+ int diagramVID = UMLVisualIDRegistry.getDiagramVisualID(myDiagramRoot); >+ if (diagramVID != PackageEditPart.VISUAL_ID) { >+ return CommandResult.newErrorCommandResult("Incorrect model object stored as a root resource object"); //$NON-NLS-1$ >+ } >+ Diagram diagram = ViewService.createDiagram(myDiagramRoot, PackageEditPart.MODEL_ID, UMLDiagramEditorPlugin.DIAGRAM_PREFERENCES_HINT); >+ diagramResource.getContents().add(diagram); >+ return CommandResult.newOKCommandResult(); >+ } >+ }; >+ >+ try { >+ OperationHistoryFactory.getOperationHistory().execute(command, new NullProgressMonitor(), null); >+ diagramResource.save(Collections.EMPTY_MAP); >+ UMLDiagramEditorUtil.openDiagramEditor(myWorkbenchPage, diagramFile); >+ } catch (ExecutionException e) { >+ UMLDiagramEditorPlugin.getInstance().logError("Unable to create model and diagram", e); //$NON-NLS-1$ >+ } catch (IOException ex) { >+ UMLDiagramEditorPlugin.getInstance().logError("Save operation failed for: " + diagramFile.getFullPath().toString(), ex); //$NON-NLS-1$ >+ } catch (PartInitException ex) { >+ UMLDiagramEditorPlugin.getInstance().logError("Unable to open editor", ex); //$NON-NLS-1$ >+ } >+ return true; >+ } >+ >+ /** >+ * @generated >+ */ >+ private class RootElementSelectorPage extends WizardPage implements ISelectionChangedListener { >+ >+ /** >+ * @generated >+ */ >+ protected RootElementSelectorPage() { >+ super("Select diagram root element"); >+ setTitle("Diagram root element"); >+ setDescription("Select semantic model element to be depicted on diagram"); >+ } >+ >+ /** >+ * @generated >+ */ >+ public void createControl(Composite parent) { >+ initializeDialogUnits(parent); >+ Composite topLevel = new Composite(parent, SWT.NONE); >+ topLevel.setLayout(new GridLayout()); >+ topLevel.setLayoutData(new GridData(GridData.VERTICAL_ALIGN_FILL | GridData.HORIZONTAL_ALIGN_FILL)); >+ topLevel.setFont(parent.getFont()); >+ setControl(topLevel); >+ createModelBrowser(topLevel); >+ setPageComplete(validatePage()); >+ } >+ >+ /** >+ * @generated >+ */ >+ private void createModelBrowser(Composite parent) { >+ Composite panel = new Composite(parent, SWT.NONE); >+ panel.setLayoutData(new GridData(GridData.FILL_BOTH)); >+ GridLayout layout = new GridLayout(); >+ layout.marginWidth = 0; >+ panel.setLayout(layout); >+ >+ Label label = new Label(panel, SWT.NONE); >+ label.setText("Select diagram root element:"); >+ label.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING)); >+ >+ TreeViewer treeViewer = new TreeViewer(panel, SWT.SINGLE | SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER); >+ GridData layoutData = new GridData(GridData.FILL_BOTH); >+ layoutData.heightHint = 300; >+ layoutData.widthHint = 300; >+ treeViewer.getTree().setLayoutData(layoutData); >+ treeViewer.setContentProvider(new AdapterFactoryContentProvider(UMLDiagramEditorPlugin.getInstance().getItemProvidersAdapterFactory())); >+ treeViewer.setLabelProvider(new AdapterFactoryLabelProvider(UMLDiagramEditorPlugin.getInstance().getItemProvidersAdapterFactory())); >+ treeViewer.setInput(myDiagramRoot.eResource()); >+ treeViewer.setSelection(new StructuredSelection(myDiagramRoot)); >+ treeViewer.addSelectionChangedListener(this); >+ } >+ >+ /** >+ * @generated >+ */ >+ public void selectionChanged(SelectionChangedEvent event) { >+ myDiagramRoot = null; >+ if (event.getSelection() instanceof IStructuredSelection) { >+ IStructuredSelection selection = (IStructuredSelection) event.getSelection(); >+ if (selection.size() == 1) { >+ Object selectedElement = selection.getFirstElement(); >+ if (selectedElement instanceof IWrapperItemProvider) { >+ selectedElement = ((IWrapperItemProvider) selectedElement).getValue(); >+ } >+ if (selectedElement instanceof FeatureMap.Entry) { >+ selectedElement = ((FeatureMap.Entry) selectedElement).getValue(); >+ } >+ if (selectedElement instanceof EObject) { >+ myDiagramRoot = (EObject) selectedElement; >+ } >+ } >+ } >+ setPageComplete(validatePage()); >+ } >+ >+ /** >+ * @generated >+ */ >+ private boolean validatePage() { >+ if (myDiagramRoot == null) { >+ setErrorMessage("No diagram root element selected"); >+ return false; >+ } >+ boolean result = ViewService.getInstance().provides( >+ new CreateDiagramViewOperation(new EObjectAdapter(myDiagramRoot), PackageEditPart.MODEL_ID, UMLDiagramEditorPlugin.DIAGRAM_PREFERENCES_HINT)); >+ setErrorMessage(result ? null : "Invalid diagram root element was selected"); >+ return result; >+ } >+ >+ } >+} >Index: src/org/eclipse/uml2/diagram/component/edit/policies/InterfaceRealizationItemSemanticEditPolicy.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/component/edit/policies/InterfaceRealizationItemSemanticEditPolicy.java >diff -N src/org/eclipse/uml2/diagram/component/edit/policies/InterfaceRealizationItemSemanticEditPolicy.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/component/edit/policies/InterfaceRealizationItemSemanticEditPolicy.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,20 @@ >+package org.eclipse.uml2.diagram.component.edit.policies; >+ >+import org.eclipse.gef.commands.Command; >+ >+import org.eclipse.gmf.runtime.emf.type.core.commands.DestroyElementCommand; >+ >+import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest; >+ >+/** >+ * @generated >+ */ >+public class InterfaceRealizationItemSemanticEditPolicy extends UMLBaseItemSemanticEditPolicy { >+ >+ /** >+ * @generated >+ */ >+ protected Command getDestroyElementCommand(DestroyElementRequest req) { >+ return getMSLWrapper(new DestroyElementCommand(req)); >+ } >+} >Index: src/org/eclipse/uml2/diagram/component/edit/policies/Class2ItemSemanticEditPolicy.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/component/edit/policies/Class2ItemSemanticEditPolicy.java >diff -N src/org/eclipse/uml2/diagram/component/edit/policies/Class2ItemSemanticEditPolicy.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/component/edit/policies/Class2ItemSemanticEditPolicy.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,120 @@ >+package org.eclipse.uml2.diagram.component.edit.policies; >+ >+import org.eclipse.gef.commands.Command; >+import org.eclipse.gmf.runtime.emf.type.core.commands.DestroyElementCommand; >+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateRelationshipRequest; >+import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest; >+import org.eclipse.emf.ecore.EObject; >+import org.eclipse.emf.ecore.EAnnotation; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.emf.ecore.EClass; >+ >+import org.eclipse.gef.commands.UnexecutableCommand; >+ >+import org.eclipse.gmf.runtime.emf.type.core.commands.CreateElementCommand; >+ >+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest; >+ >+import org.eclipse.uml2.diagram.component.providers.UMLElementTypes; >+import org.eclipse.uml2.uml.Port; >+import org.eclipse.uml2.uml.UMLPackage; >+ >+/** >+ * @generated >+ */ >+public class Class2ItemSemanticEditPolicy extends UMLBaseItemSemanticEditPolicy { >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCommand(CreateElementRequest req) { >+ if (UMLElementTypes.Port_3002 == req.getElementType()) { >+ if (req.getContainmentFeature() == null) { >+ req.setContainmentFeature(UMLPackage.eINSTANCE.getStructuredClassifier_OwnedAttribute()); >+ } >+ return getMSLWrapper(new CreatePort_3002Command(req)); >+ } >+ return super.getCreateCommand(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ private static class CreatePort_3002Command extends CreateElementCommand { >+ >+ /** >+ * @generated >+ */ >+ public CreatePort_3002Command(CreateElementRequest req) { >+ super(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EClass getEClassToEdit() { >+ return UMLPackage.eINSTANCE.getClass_(); >+ }; >+ >+ /** >+ * @generated >+ */ >+ protected EObject getElementToEdit() { >+ EObject container = ((CreateElementRequest) getRequest()).getContainer(); >+ if (container instanceof View) { >+ container = ((View) container).getElement(); >+ } >+ return container; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject doDefaultElementCreation() { >+ Port newElement = (Port) super.doDefaultElementCreation(); >+ if (newElement != null) { >+ UMLElementTypes.Initializers.Port_3002.init(newElement); >+ } >+ return newElement; >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getDestroyElementCommand(DestroyElementRequest req) { >+ return getMSLWrapper(new DestroyElementCommand(req) { >+ >+ protected EObject getElementToDestroy() { >+ View view = (View) getHost().getModel(); >+ EAnnotation annotation = view.getEAnnotation("Shortcut"); //$NON-NLS-1$ >+ if (annotation != null) { >+ return view; >+ } >+ return super.getElementToDestroy(); >+ } >+ >+ }); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateRelationshipCommand(CreateRelationshipRequest req) { >+ if (UMLElementTypes.InterfaceRealization_4001 == req.getElementType()) { >+ return req.getTarget() == null ? getCreateStartOutgoingInterfaceRealization4001Command(req) : null; >+ } >+ return super.getCreateRelationshipCommand(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateStartOutgoingInterfaceRealization4001Command(CreateRelationshipRequest req) { >+ if (!UMLBaseItemSemanticEditPolicy.LinkConstraints.InterfaceRealization_4001.canCreateLink(req, false)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ return new Command() { >+ }; >+ } >+} >Index: .classpath >=================================================================== >RCS file: .classpath >diff -N .classpath >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ .classpath 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,8 @@ >+<?xml version="1.0" encoding="UTF-8"?> >+<classpath> >+ <classpathentry kind="src" path="src"/> >+ <classpathentry kind="src" path="custom-src"/> >+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/> >+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/> >+ <classpathentry kind="output" path="bin"/> >+</classpath> >Index: src/org/eclipse/uml2/diagram/component/edit/helpers/ClassEditHelperAdvice.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/component/edit/helpers/ClassEditHelperAdvice.java >diff -N src/org/eclipse/uml2/diagram/component/edit/helpers/ClassEditHelperAdvice.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/component/edit/helpers/ClassEditHelperAdvice.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,9 @@ >+package org.eclipse.uml2.diagram.component.edit.helpers; >+ >+import org.eclipse.gmf.runtime.emf.type.core.edithelper.AbstractEditHelperAdvice; >+ >+/** >+ * @generated >+ */ >+public class ClassEditHelperAdvice extends AbstractEditHelperAdvice { >+} >Index: src/org/eclipse/uml2/diagram/component/edit/policies/PackageItemSemanticEditPolicy.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/component/edit/policies/PackageItemSemanticEditPolicy.java >diff -N src/org/eclipse/uml2/diagram/component/edit/policies/PackageItemSemanticEditPolicy.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/component/edit/policies/PackageItemSemanticEditPolicy.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,247 @@ >+package org.eclipse.uml2.diagram.component.edit.policies; >+ >+import org.eclipse.emf.transaction.TransactionalEditingDomain; >+import org.eclipse.gef.commands.Command; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart; >+import org.eclipse.gmf.runtime.emf.commands.core.commands.DuplicateEObjectsCommand; >+import org.eclipse.gmf.runtime.emf.type.core.requests.DuplicateElementsRequest; >+import org.eclipse.emf.ecore.EClass; >+import org.eclipse.emf.ecore.EObject; >+ >+import org.eclipse.gmf.runtime.emf.type.core.commands.CreateElementCommand; >+ >+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest; >+ >+import org.eclipse.gmf.runtime.notation.View; >+ >+import org.eclipse.uml2.diagram.component.providers.UMLElementTypes; >+import org.eclipse.uml2.uml.Artifact; >+import org.eclipse.uml2.uml.Component; >+import org.eclipse.uml2.uml.Interface; >+import org.eclipse.uml2.uml.UMLPackage; >+ >+/** >+ * @generated >+ */ >+public class PackageItemSemanticEditPolicy extends UMLBaseItemSemanticEditPolicy { >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCommand(CreateElementRequest req) { >+ if (UMLElementTypes.Component_2001 == req.getElementType()) { >+ if (req.getContainmentFeature() == null) { >+ req.setContainmentFeature(UMLPackage.eINSTANCE.getPackage_PackagedElement()); >+ } >+ return getMSLWrapper(new CreateComponent_2001Command(req)); >+ } >+ if (UMLElementTypes.Artifact_2002 == req.getElementType()) { >+ if (req.getContainmentFeature() == null) { >+ req.setContainmentFeature(UMLPackage.eINSTANCE.getPackage_PackagedElement()); >+ } >+ return getMSLWrapper(new CreateArtifact_2002Command(req)); >+ } >+ if (UMLElementTypes.Interface_2003 == req.getElementType()) { >+ if (req.getContainmentFeature() == null) { >+ req.setContainmentFeature(UMLPackage.eINSTANCE.getPackage_PackagedElement()); >+ } >+ return getMSLWrapper(new CreateInterface_2003Command(req)); >+ } >+ if (UMLElementTypes.Class_2004 == req.getElementType()) { >+ if (req.getContainmentFeature() == null) { >+ req.setContainmentFeature(UMLPackage.eINSTANCE.getPackage_PackagedElement()); >+ } >+ return getMSLWrapper(new CreateClass_2004Command(req)); >+ } >+ return super.getCreateCommand(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ private static class CreateComponent_2001Command extends CreateElementCommand { >+ >+ /** >+ * @generated >+ */ >+ public CreateComponent_2001Command(CreateElementRequest req) { >+ super(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EClass getEClassToEdit() { >+ return UMLPackage.eINSTANCE.getPackage(); >+ }; >+ >+ /** >+ * @generated >+ */ >+ protected EObject getElementToEdit() { >+ EObject container = ((CreateElementRequest) getRequest()).getContainer(); >+ if (container instanceof View) { >+ container = ((View) container).getElement(); >+ } >+ return container; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject doDefaultElementCreation() { >+ Component newElement = (Component) super.doDefaultElementCreation(); >+ if (newElement != null) { >+ UMLElementTypes.Initializers.Component_2001.init(newElement); >+ } >+ return newElement; >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ private static class CreateArtifact_2002Command extends CreateElementCommand { >+ >+ /** >+ * @generated >+ */ >+ public CreateArtifact_2002Command(CreateElementRequest req) { >+ super(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EClass getEClassToEdit() { >+ return UMLPackage.eINSTANCE.getPackage(); >+ }; >+ >+ /** >+ * @generated >+ */ >+ protected EObject getElementToEdit() { >+ EObject container = ((CreateElementRequest) getRequest()).getContainer(); >+ if (container instanceof View) { >+ container = ((View) container).getElement(); >+ } >+ return container; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject doDefaultElementCreation() { >+ Artifact newElement = (Artifact) super.doDefaultElementCreation(); >+ if (newElement != null) { >+ UMLElementTypes.Initializers.Artifact_2002.init(newElement); >+ } >+ return newElement; >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ private static class CreateInterface_2003Command extends CreateElementCommand { >+ >+ /** >+ * @generated >+ */ >+ public CreateInterface_2003Command(CreateElementRequest req) { >+ super(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EClass getEClassToEdit() { >+ return UMLPackage.eINSTANCE.getPackage(); >+ }; >+ >+ /** >+ * @generated >+ */ >+ protected EObject getElementToEdit() { >+ EObject container = ((CreateElementRequest) getRequest()).getContainer(); >+ if (container instanceof View) { >+ container = ((View) container).getElement(); >+ } >+ return container; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject doDefaultElementCreation() { >+ Interface newElement = (Interface) super.doDefaultElementCreation(); >+ if (newElement != null) { >+ UMLElementTypes.Initializers.Interface_2003.init(newElement); >+ } >+ return newElement; >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ private static class CreateClass_2004Command extends CreateElementCommand { >+ >+ /** >+ * @generated >+ */ >+ public CreateClass_2004Command(CreateElementRequest req) { >+ super(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EClass getEClassToEdit() { >+ return UMLPackage.eINSTANCE.getPackage(); >+ }; >+ >+ /** >+ * @generated >+ */ >+ protected EObject getElementToEdit() { >+ EObject container = ((CreateElementRequest) getRequest()).getContainer(); >+ if (container instanceof View) { >+ container = ((View) container).getElement(); >+ } >+ return container; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject doDefaultElementCreation() { >+ org.eclipse.uml2.uml.Class newElement = (org.eclipse.uml2.uml.Class) super.doDefaultElementCreation(); >+ if (newElement != null) { >+ UMLElementTypes.Initializers.Class_2004.init(newElement); >+ } >+ return newElement; >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getDuplicateCommand(DuplicateElementsRequest req) { >+ TransactionalEditingDomain editingDomain = ((IGraphicalEditPart) getHost()).getEditingDomain(); >+ return getMSLWrapper(new DuplicateAnythingCommand(editingDomain, req)); >+ } >+ >+ /** >+ * @generated >+ */ >+ private static class DuplicateAnythingCommand extends DuplicateEObjectsCommand { >+ >+ /** >+ * @generated >+ */ >+ public DuplicateAnythingCommand(TransactionalEditingDomain editingDomain, DuplicateElementsRequest req) { >+ super(editingDomain, req.getLabel(), req.getElementsToBeDuplicated(), req.getAllDuplicatedElementsMap()); >+ } >+ } >+} >Index: src/org/eclipse/uml2/diagram/component/providers/UMLViewProvider.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/component/providers/UMLViewProvider.java >diff -N src/org/eclipse/uml2/diagram/component/providers/UMLViewProvider.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/component/providers/UMLViewProvider.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,178 @@ >+package org.eclipse.uml2.diagram.component.providers; >+ >+import org.eclipse.core.runtime.IAdaptable; >+import org.eclipse.emf.ecore.EClass; >+import org.eclipse.emf.ecore.EObject; >+import org.eclipse.gmf.runtime.diagram.core.providers.AbstractViewProvider; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.gmf.runtime.emf.type.core.IElementType; >+ >+import org.eclipse.uml2.diagram.component.edit.parts.Artifact2EditPart; >+import org.eclipse.uml2.diagram.component.edit.parts.ArtifactEditPart; >+import org.eclipse.uml2.diagram.component.edit.parts.ArtifactName2EditPart; >+import org.eclipse.uml2.diagram.component.edit.parts.ArtifactNameEditPart; >+import org.eclipse.uml2.diagram.component.edit.parts.Class2EditPart; >+import org.eclipse.uml2.diagram.component.edit.parts.ClassEditPart; >+import org.eclipse.uml2.diagram.component.edit.parts.ClassName2EditPart; >+import org.eclipse.uml2.diagram.component.edit.parts.ClassNameEditPart; >+import org.eclipse.uml2.diagram.component.edit.parts.Component2EditPart; >+import org.eclipse.uml2.diagram.component.edit.parts.ComponentContents2EditPart; >+import org.eclipse.uml2.diagram.component.edit.parts.ComponentContentsEditPart; >+import org.eclipse.uml2.diagram.component.edit.parts.ComponentEditPart; >+import org.eclipse.uml2.diagram.component.edit.parts.ComponentName2EditPart; >+import org.eclipse.uml2.diagram.component.edit.parts.ComponentNameEditPart; >+import org.eclipse.uml2.diagram.component.edit.parts.Interface2EditPart; >+import org.eclipse.uml2.diagram.component.edit.parts.InterfaceEditPart; >+import org.eclipse.uml2.diagram.component.edit.parts.InterfaceName2EditPart; >+import org.eclipse.uml2.diagram.component.edit.parts.InterfaceNameEditPart; >+import org.eclipse.uml2.diagram.component.edit.parts.InterfaceRealizationEditPart; >+import org.eclipse.uml2.diagram.component.edit.parts.PackageEditPart; >+import org.eclipse.uml2.diagram.component.edit.parts.PortEditPart; >+import org.eclipse.uml2.diagram.component.edit.parts.PortNameEditPart; >+import org.eclipse.uml2.diagram.component.part.UMLVisualIDRegistry; >+import org.eclipse.uml2.diagram.component.view.factories.Artifact2ViewFactory; >+import org.eclipse.uml2.diagram.component.view.factories.ArtifactName2ViewFactory; >+import org.eclipse.uml2.diagram.component.view.factories.ArtifactNameViewFactory; >+import org.eclipse.uml2.diagram.component.view.factories.ArtifactViewFactory; >+import org.eclipse.uml2.diagram.component.view.factories.Class2ViewFactory; >+import org.eclipse.uml2.diagram.component.view.factories.ClassName2ViewFactory; >+import org.eclipse.uml2.diagram.component.view.factories.ClassNameViewFactory; >+import org.eclipse.uml2.diagram.component.view.factories.ClassViewFactory; >+import org.eclipse.uml2.diagram.component.view.factories.Component2ViewFactory; >+import org.eclipse.uml2.diagram.component.view.factories.ComponentContents2ViewFactory; >+import org.eclipse.uml2.diagram.component.view.factories.ComponentContentsViewFactory; >+import org.eclipse.uml2.diagram.component.view.factories.ComponentName2ViewFactory; >+import org.eclipse.uml2.diagram.component.view.factories.ComponentNameViewFactory; >+import org.eclipse.uml2.diagram.component.view.factories.ComponentViewFactory; >+import org.eclipse.uml2.diagram.component.view.factories.Interface2ViewFactory; >+import org.eclipse.uml2.diagram.component.view.factories.InterfaceName2ViewFactory; >+import org.eclipse.uml2.diagram.component.view.factories.InterfaceNameViewFactory; >+import org.eclipse.uml2.diagram.component.view.factories.InterfaceRealizationViewFactory; >+import org.eclipse.uml2.diagram.component.view.factories.InterfaceViewFactory; >+import org.eclipse.uml2.diagram.component.view.factories.PackageViewFactory; >+import org.eclipse.uml2.diagram.component.view.factories.PortNameViewFactory; >+import org.eclipse.uml2.diagram.component.view.factories.PortProvidedViewFactory; >+import org.eclipse.uml2.diagram.component.view.factories.PortRequiredViewFactory; >+import org.eclipse.uml2.diagram.component.view.factories.PortViewFactory; >+ >+/** >+ * @generated >+ */ >+public class UMLViewProvider extends AbstractViewProvider { >+ >+ /** >+ * @generated >+ */ >+ protected Class getDiagramViewClass(IAdaptable semanticAdapter, String diagramKind) { >+ EObject semanticElement = getSemanticElement(semanticAdapter); >+ if (PackageEditPart.MODEL_ID.equals(diagramKind) && UMLVisualIDRegistry.getDiagramVisualID(semanticElement) != -1) { >+ return PackageViewFactory.class; >+ } >+ return null; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Class getNodeViewClass(IAdaptable semanticAdapter, View containerView, String semanticHint) { >+ if (containerView == null) { >+ return null; >+ } >+ IElementType elementType = getSemanticElementType(semanticAdapter); >+ if (elementType != null && !UMLElementTypes.isKnownElementType(elementType)) { >+ return null; >+ } >+ EClass semanticType = getSemanticEClass(semanticAdapter); >+ EObject semanticElement = getSemanticElement(semanticAdapter); >+ int nodeVID = UMLVisualIDRegistry.getNodeVisualID(containerView, semanticElement, semanticType, semanticHint); >+ switch (nodeVID) { >+ case ComponentEditPart.VISUAL_ID: >+ return ComponentViewFactory.class; >+ case ComponentName2EditPart.VISUAL_ID: >+ return ComponentName2ViewFactory.class; >+ case Artifact2EditPart.VISUAL_ID: >+ return Artifact2ViewFactory.class; >+ case ArtifactName2EditPart.VISUAL_ID: >+ return ArtifactName2ViewFactory.class; >+ case Interface2EditPart.VISUAL_ID: >+ return Interface2ViewFactory.class; >+ case InterfaceName2EditPart.VISUAL_ID: >+ return InterfaceName2ViewFactory.class; >+ case Class2EditPart.VISUAL_ID: >+ return Class2ViewFactory.class; >+ case ClassName2EditPart.VISUAL_ID: >+ return ClassName2ViewFactory.class; >+ case Component2EditPart.VISUAL_ID: >+ return Component2ViewFactory.class; >+ case ComponentNameEditPart.VISUAL_ID: >+ return ComponentNameViewFactory.class; >+ case PortEditPart.VISUAL_ID: >+ return PortViewFactory.class; >+ case PortNameEditPart.VISUAL_ID: >+ return PortNameViewFactory.class; >+ case ArtifactEditPart.VISUAL_ID: >+ return ArtifactViewFactory.class; >+ case ArtifactNameEditPart.VISUAL_ID: >+ return ArtifactNameViewFactory.class; >+ case ClassEditPart.VISUAL_ID: >+ return ClassViewFactory.class; >+ case ClassNameEditPart.VISUAL_ID: >+ return ClassNameViewFactory.class; >+ case InterfaceEditPart.VISUAL_ID: >+ return InterfaceViewFactory.class; >+ case InterfaceNameEditPart.VISUAL_ID: >+ return InterfaceNameViewFactory.class; >+ case ComponentContentsEditPart.VISUAL_ID: >+ return ComponentContentsViewFactory.class; >+ case ComponentContents2EditPart.VISUAL_ID: >+ return ComponentContents2ViewFactory.class; >+ } >+ return null; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Class getEdgeViewClass(IAdaptable semanticAdapter, View containerView, String semanticHint) { >+ IElementType elementType = getSemanticElementType(semanticAdapter); >+ if (elementType != null && !UMLElementTypes.isKnownElementType(elementType)) { >+ return null; >+ } >+ if (UMLElementTypes.PortProvided_4006.equals(elementType)) { >+ return PortProvidedViewFactory.class; >+ } >+ if (UMLElementTypes.PortRequired_4004.equals(elementType)) { >+ return PortRequiredViewFactory.class; >+ } >+ EClass semanticType = getSemanticEClass(semanticAdapter); >+ if (semanticType == null) { >+ return null; >+ } >+ EObject semanticElement = getSemanticElement(semanticAdapter); >+ int linkVID = UMLVisualIDRegistry.getLinkWithClassVisualID(semanticElement, semanticType); >+ switch (linkVID) { >+ case InterfaceRealizationEditPart.VISUAL_ID: >+ return InterfaceRealizationViewFactory.class; >+ } >+ return getUnrecognizedConnectorViewClass(semanticAdapter, containerView, semanticHint); >+ } >+ >+ /** >+ * @generated >+ */ >+ private IElementType getSemanticElementType(IAdaptable semanticAdapter) { >+ if (semanticAdapter == null) { >+ return null; >+ } >+ return (IElementType) semanticAdapter.getAdapter(IElementType.class); >+ } >+ >+ /** >+ * @generated >+ */ >+ private Class getUnrecognizedConnectorViewClass(IAdaptable semanticAdapter, View containerView, String semanticHint) { >+ // Handle unrecognized child node classes here >+ return null; >+ } >+ >+} >Index: src/org/eclipse/uml2/diagram/component/view/factories/ClassName2ViewFactory.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/component/view/factories/ClassName2ViewFactory.java >diff -N src/org/eclipse/uml2/diagram/component/view/factories/ClassName2ViewFactory.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/component/view/factories/ClassName2ViewFactory.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,29 @@ >+package org.eclipse.uml2.diagram.component.view.factories; >+ >+import org.eclipse.core.runtime.IAdaptable; >+import org.eclipse.gmf.runtime.notation.View; >+import java.util.ArrayList; >+import java.util.List; >+ >+import org.eclipse.gmf.runtime.diagram.ui.view.factories.BasicNodeViewFactory; >+ >+/** >+ * @generated >+ */ >+public class ClassName2ViewFactory extends BasicNodeViewFactory { >+ >+ /** >+ * @generated >+ */ >+ protected void decorateView(View containerView, View view, IAdaptable semanticAdapter, String semanticHint, int index, boolean persisted) { >+ super.decorateView(containerView, view, semanticAdapter, semanticHint, index, persisted); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected List createStyles(View view) { >+ List styles = new ArrayList(); >+ return styles; >+ } >+} >Index: src/org/eclipse/uml2/diagram/component/navigator/UMLNavigatorLabelProvider.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/component/navigator/UMLNavigatorLabelProvider.java >diff -N src/org/eclipse/uml2/diagram/component/navigator/UMLNavigatorLabelProvider.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/component/navigator/UMLNavigatorLabelProvider.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,480 @@ >+package org.eclipse.uml2.diagram.component.navigator; >+ >+import org.eclipse.core.runtime.IAdaptable; >+ >+import org.eclipse.emf.ecore.EObject; >+ >+import org.eclipse.gmf.runtime.common.ui.services.parser.IParser; >+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserOptions; >+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserService; >+ >+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter; >+ >+import org.eclipse.gmf.runtime.emf.type.core.IElementType; >+ >+import org.eclipse.gmf.runtime.notation.View; >+ >+import org.eclipse.jface.resource.ImageDescriptor; >+import org.eclipse.jface.resource.ImageRegistry; >+ >+import org.eclipse.jface.viewers.LabelProvider; >+ >+import org.eclipse.swt.graphics.Image; >+ >+import org.eclipse.ui.IMemento; >+ >+import org.eclipse.ui.navigator.ICommonContentExtensionSite; >+import org.eclipse.ui.navigator.ICommonLabelProvider; >+ >+import org.eclipse.uml2.diagram.component.edit.parts.Artifact2EditPart; >+import org.eclipse.uml2.diagram.component.edit.parts.ArtifactEditPart; >+import org.eclipse.uml2.diagram.component.edit.parts.ArtifactName2EditPart; >+import org.eclipse.uml2.diagram.component.edit.parts.ArtifactNameEditPart; >+import org.eclipse.uml2.diagram.component.edit.parts.Class2EditPart; >+import org.eclipse.uml2.diagram.component.edit.parts.ClassEditPart; >+import org.eclipse.uml2.diagram.component.edit.parts.ClassName2EditPart; >+import org.eclipse.uml2.diagram.component.edit.parts.ClassNameEditPart; >+import org.eclipse.uml2.diagram.component.edit.parts.Component2EditPart; >+import org.eclipse.uml2.diagram.component.edit.parts.ComponentEditPart; >+import org.eclipse.uml2.diagram.component.edit.parts.ComponentName2EditPart; >+import org.eclipse.uml2.diagram.component.edit.parts.ComponentNameEditPart; >+import org.eclipse.uml2.diagram.component.edit.parts.Interface2EditPart; >+import org.eclipse.uml2.diagram.component.edit.parts.InterfaceEditPart; >+import org.eclipse.uml2.diagram.component.edit.parts.InterfaceName2EditPart; >+import org.eclipse.uml2.diagram.component.edit.parts.InterfaceNameEditPart; >+import org.eclipse.uml2.diagram.component.edit.parts.InterfaceRealizationEditPart; >+import org.eclipse.uml2.diagram.component.edit.parts.PackageEditPart; >+import org.eclipse.uml2.diagram.component.edit.parts.PortEditPart; >+import org.eclipse.uml2.diagram.component.edit.parts.PortNameEditPart; >+import org.eclipse.uml2.diagram.component.edit.parts.PortProvidedEditPart; >+import org.eclipse.uml2.diagram.component.edit.parts.PortRequiredEditPart; >+import org.eclipse.uml2.diagram.component.part.UMLDiagramEditorPlugin; >+import org.eclipse.uml2.diagram.component.part.UMLVisualIDRegistry; >+import org.eclipse.uml2.diagram.component.providers.UMLElementTypes; >+import org.eclipse.uml2.uml.NamedElement; >+ >+/** >+ * @generated >+ */ >+public class UMLNavigatorLabelProvider extends LabelProvider implements ICommonLabelProvider { >+ >+ /** >+ * @generated >+ */ >+ static { >+ UMLDiagramEditorPlugin.getInstance().getImageRegistry().put("Navigator?InvalidElement", ImageDescriptor.getMissingImageDescriptor()); >+ UMLDiagramEditorPlugin.getInstance().getImageRegistry().put("Navigator?UnknownElement", ImageDescriptor.getMissingImageDescriptor()); >+ UMLDiagramEditorPlugin.getInstance().getImageRegistry().put("Navigator?ImageNotFound", ImageDescriptor.getMissingImageDescriptor()); >+ } >+ >+ /** >+ * @generated >+ */ >+ public Image getImage(Object element) { >+ if (false == element instanceof UMLAbstractNavigatorItem) { >+ return super.getImage(element); >+ } >+ >+ UMLAbstractNavigatorItem abstractNavigatorItem = (UMLAbstractNavigatorItem) element; >+ if (!PackageEditPart.MODEL_ID.equals(abstractNavigatorItem.getModelID())) { >+ return super.getImage(element); >+ } >+ >+ if (abstractNavigatorItem instanceof UMLNavigatorItem) { >+ UMLNavigatorItem navigatorItem = (UMLNavigatorItem) abstractNavigatorItem; >+ switch (navigatorItem.getVisualID()) { >+ case ComponentEditPart.VISUAL_ID: >+ return getImage("Navigator?TopLevelNode?http://www.eclipse.org/uml2/2.0.0/UML?Component", UMLElementTypes.Component_2001); >+ case Artifact2EditPart.VISUAL_ID: >+ return getImage("Navigator?TopLevelNode?http://www.eclipse.org/uml2/2.0.0/UML?Artifact", UMLElementTypes.Artifact_2002); >+ case Interface2EditPart.VISUAL_ID: >+ return getImage("Navigator?TopLevelNode?http://www.eclipse.org/uml2/2.0.0/UML?Interface", UMLElementTypes.Interface_2003); >+ case Class2EditPart.VISUAL_ID: >+ return getImage("Navigator?TopLevelNode?http://www.eclipse.org/uml2/2.0.0/UML?Class", UMLElementTypes.Class_2004); >+ case Component2EditPart.VISUAL_ID: >+ return getImage("Navigator?Node?http://www.eclipse.org/uml2/2.0.0/UML?Component", UMLElementTypes.Component_3001); >+ case PortEditPart.VISUAL_ID: >+ return getImage("Navigator?Node?http://www.eclipse.org/uml2/2.0.0/UML?Port", UMLElementTypes.Port_3002); >+ case ArtifactEditPart.VISUAL_ID: >+ return getImage("Navigator?Node?http://www.eclipse.org/uml2/2.0.0/UML?Artifact", UMLElementTypes.Artifact_3003); >+ case ClassEditPart.VISUAL_ID: >+ return getImage("Navigator?Node?http://www.eclipse.org/uml2/2.0.0/UML?Class", UMLElementTypes.Class_3004); >+ case InterfaceEditPart.VISUAL_ID: >+ return getImage("Navigator?Node?http://www.eclipse.org/uml2/2.0.0/UML?Interface", UMLElementTypes.Interface_3005); >+ case PackageEditPart.VISUAL_ID: >+ return getImage("Navigator?Diagram?http://www.eclipse.org/uml2/2.0.0/UML?Package", UMLElementTypes.Package_1000); >+ case InterfaceRealizationEditPart.VISUAL_ID: >+ return getImage("Navigator?Link?http://www.eclipse.org/uml2/2.0.0/UML?InterfaceRealization", UMLElementTypes.InterfaceRealization_4001); >+ case PortProvidedEditPart.VISUAL_ID: >+ return getImage("Navigator?Link?http://www.eclipse.org/uml2/2.0.0/UML?Port?provided", UMLElementTypes.PortProvided_4006); >+ case PortRequiredEditPart.VISUAL_ID: >+ return getImage("Navigator?Link?http://www.eclipse.org/uml2/2.0.0/UML?Port?required", UMLElementTypes.PortRequired_4004); >+ default: >+ return getImage("Navigator?UnknownElement", null); >+ } >+ } else if (abstractNavigatorItem instanceof UMLNavigatorGroup) { >+ UMLNavigatorGroup group = (UMLNavigatorGroup) element; >+ return UMLDiagramEditorPlugin.getInstance().getBundledImage(group.getIcon()); >+ } >+ return super.getImage(element); >+ } >+ >+ /** >+ * @generated >+ */ >+ private Image getImage(String key, IElementType elementType) { >+ ImageRegistry imageRegistry = UMLDiagramEditorPlugin.getInstance().getImageRegistry(); >+ Image image = imageRegistry.get(key); >+ if (image == null && elementType != null && UMLElementTypes.isKnownElementType(elementType)) { >+ image = UMLElementTypes.getImage(elementType); >+ imageRegistry.put(key, image); >+ } >+ >+ if (image == null) { >+ image = imageRegistry.get("Navigator?ImageNotFound"); >+ imageRegistry.put(key, image); >+ } >+ return image; >+ } >+ >+ /** >+ * @generated >+ */ >+ public String getText(Object element) { >+ if (false == element instanceof UMLAbstractNavigatorItem) { >+ return super.getText(element); >+ } >+ >+ UMLAbstractNavigatorItem abstractNavigatorItem = (UMLAbstractNavigatorItem) element; >+ if (!PackageEditPart.MODEL_ID.equals(abstractNavigatorItem.getModelID())) { >+ return super.getText(element); >+ } >+ >+ if (abstractNavigatorItem instanceof UMLNavigatorItem) { >+ UMLNavigatorItem navigatorItem = (UMLNavigatorItem) abstractNavigatorItem; >+ switch (navigatorItem.getVisualID()) { >+ case ComponentEditPart.VISUAL_ID: >+ return getComponent_2001Text(navigatorItem.getView()); >+ case Artifact2EditPart.VISUAL_ID: >+ return getArtifact_2002Text(navigatorItem.getView()); >+ case Interface2EditPart.VISUAL_ID: >+ return getInterface_2003Text(navigatorItem.getView()); >+ case Class2EditPart.VISUAL_ID: >+ return getClass_2004Text(navigatorItem.getView()); >+ case Component2EditPart.VISUAL_ID: >+ return getComponent_3001Text(navigatorItem.getView()); >+ case PortEditPart.VISUAL_ID: >+ return getPort_3002Text(navigatorItem.getView()); >+ case ArtifactEditPart.VISUAL_ID: >+ return getArtifact_3003Text(navigatorItem.getView()); >+ case ClassEditPart.VISUAL_ID: >+ return getClass_3004Text(navigatorItem.getView()); >+ case InterfaceEditPart.VISUAL_ID: >+ return getInterface_3005Text(navigatorItem.getView()); >+ case PackageEditPart.VISUAL_ID: >+ return getPackage_1000Text(navigatorItem.getView()); >+ case InterfaceRealizationEditPart.VISUAL_ID: >+ return getInterfaceRealization_4001Text(navigatorItem.getView()); >+ case PortProvidedEditPart.VISUAL_ID: >+ return getPortProvided_4006Text(navigatorItem.getView()); >+ case PortRequiredEditPart.VISUAL_ID: >+ return getPortRequired_4004Text(navigatorItem.getView()); >+ default: >+ return getUnknownElementText(navigatorItem.getView()); >+ } >+ } else if (abstractNavigatorItem instanceof UMLNavigatorGroup) { >+ UMLNavigatorGroup group = (UMLNavigatorGroup) element; >+ return group.getGroupName(); >+ } >+ return super.getText(element); >+ } >+ >+ /** >+ * @generated >+ */ >+ private String getComponent_2001Text(View view) { >+ IParser parser = ParserService.getInstance().getParser(new IAdaptable() { >+ >+ public Object getAdapter(Class adapter) { >+ if (String.class.equals(adapter)) { >+ return UMLVisualIDRegistry.getType(ComponentName2EditPart.VISUAL_ID); >+ } >+ if (IElementType.class.equals(adapter)) { >+ return UMLElementTypes.Component_2001; >+ } >+ return null; >+ } >+ }); >+ if (parser != null) { >+ return parser.getPrintString(new EObjectAdapter(view.getElement() != null ? view.getElement() : view), ParserOptions.NONE.intValue()); >+ } else { >+ UMLDiagramEditorPlugin.getInstance().logError("Parser was not found for label " + 5001); >+ return ""; >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ private String getArtifact_2002Text(View view) { >+ IParser parser = ParserService.getInstance().getParser(new IAdaptable() { >+ >+ public Object getAdapter(Class adapter) { >+ if (String.class.equals(adapter)) { >+ return UMLVisualIDRegistry.getType(ArtifactName2EditPart.VISUAL_ID); >+ } >+ if (IElementType.class.equals(adapter)) { >+ return UMLElementTypes.Artifact_2002; >+ } >+ return null; >+ } >+ }); >+ if (parser != null) { >+ return parser.getPrintString(new EObjectAdapter(view.getElement() != null ? view.getElement() : view), ParserOptions.NONE.intValue()); >+ } else { >+ UMLDiagramEditorPlugin.getInstance().logError("Parser was not found for label " + 5004); >+ return ""; >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ private String getInterface_2003Text(View view) { >+ IParser parser = ParserService.getInstance().getParser(new IAdaptable() { >+ >+ public Object getAdapter(Class adapter) { >+ if (String.class.equals(adapter)) { >+ return UMLVisualIDRegistry.getType(InterfaceName2EditPart.VISUAL_ID); >+ } >+ if (IElementType.class.equals(adapter)) { >+ return UMLElementTypes.Interface_2003; >+ } >+ return null; >+ } >+ }); >+ if (parser != null) { >+ return parser.getPrintString(new EObjectAdapter(view.getElement() != null ? view.getElement() : view), ParserOptions.NONE.intValue()); >+ } else { >+ UMLDiagramEditorPlugin.getInstance().logError("Parser was not found for label " + 5005); >+ return ""; >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ private String getClass_2004Text(View view) { >+ IParser parser = ParserService.getInstance().getParser(new IAdaptable() { >+ >+ public Object getAdapter(Class adapter) { >+ if (String.class.equals(adapter)) { >+ return UMLVisualIDRegistry.getType(ClassName2EditPart.VISUAL_ID); >+ } >+ if (IElementType.class.equals(adapter)) { >+ return UMLElementTypes.Class_2004; >+ } >+ return null; >+ } >+ }); >+ if (parser != null) { >+ return parser.getPrintString(new EObjectAdapter(view.getElement() != null ? view.getElement() : view), ParserOptions.NONE.intValue()); >+ } else { >+ UMLDiagramEditorPlugin.getInstance().logError("Parser was not found for label " + 5008); >+ return ""; >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ private String getComponent_3001Text(View view) { >+ IParser parser = ParserService.getInstance().getParser(new IAdaptable() { >+ >+ public Object getAdapter(Class adapter) { >+ if (String.class.equals(adapter)) { >+ return UMLVisualIDRegistry.getType(ComponentNameEditPart.VISUAL_ID); >+ } >+ if (IElementType.class.equals(adapter)) { >+ return UMLElementTypes.Component_3001; >+ } >+ return null; >+ } >+ }); >+ if (parser != null) { >+ return parser.getPrintString(new EObjectAdapter(view.getElement() != null ? view.getElement() : view), ParserOptions.NONE.intValue()); >+ } else { >+ UMLDiagramEditorPlugin.getInstance().logError("Parser was not found for label " + 5002); >+ return ""; >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ private String getPort_3002Text(View view) { >+ IParser parser = ParserService.getInstance().getParser(new IAdaptable() { >+ >+ public Object getAdapter(Class adapter) { >+ if (String.class.equals(adapter)) { >+ return UMLVisualIDRegistry.getType(PortNameEditPart.VISUAL_ID); >+ } >+ if (IElementType.class.equals(adapter)) { >+ return UMLElementTypes.Port_3002; >+ } >+ return null; >+ } >+ }); >+ if (parser != null) { >+ return parser.getPrintString(new EObjectAdapter(view.getElement() != null ? view.getElement() : view), ParserOptions.NONE.intValue()); >+ } else { >+ UMLDiagramEditorPlugin.getInstance().logError("Parser was not found for label " + 5003); >+ return ""; >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ private String getArtifact_3003Text(View view) { >+ IParser parser = ParserService.getInstance().getParser(new IAdaptable() { >+ >+ public Object getAdapter(Class adapter) { >+ if (String.class.equals(adapter)) { >+ return UMLVisualIDRegistry.getType(ArtifactNameEditPart.VISUAL_ID); >+ } >+ if (IElementType.class.equals(adapter)) { >+ return UMLElementTypes.Artifact_3003; >+ } >+ return null; >+ } >+ }); >+ if (parser != null) { >+ return parser.getPrintString(new EObjectAdapter(view.getElement() != null ? view.getElement() : view), ParserOptions.NONE.intValue()); >+ } else { >+ UMLDiagramEditorPlugin.getInstance().logError("Parser was not found for label " + 5006); >+ return ""; >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ private String getClass_3004Text(View view) { >+ IParser parser = ParserService.getInstance().getParser(new IAdaptable() { >+ >+ public Object getAdapter(Class adapter) { >+ if (String.class.equals(adapter)) { >+ return UMLVisualIDRegistry.getType(ClassNameEditPart.VISUAL_ID); >+ } >+ if (IElementType.class.equals(adapter)) { >+ return UMLElementTypes.Class_3004; >+ } >+ return null; >+ } >+ }); >+ if (parser != null) { >+ return parser.getPrintString(new EObjectAdapter(view.getElement() != null ? view.getElement() : view), ParserOptions.NONE.intValue()); >+ } else { >+ UMLDiagramEditorPlugin.getInstance().logError("Parser was not found for label " + 5007); >+ return ""; >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ private String getInterface_3005Text(View view) { >+ IParser parser = ParserService.getInstance().getParser(new IAdaptable() { >+ >+ public Object getAdapter(Class adapter) { >+ if (String.class.equals(adapter)) { >+ return UMLVisualIDRegistry.getType(InterfaceNameEditPart.VISUAL_ID); >+ } >+ if (IElementType.class.equals(adapter)) { >+ return UMLElementTypes.Interface_3005; >+ } >+ return null; >+ } >+ }); >+ if (parser != null) { >+ return parser.getPrintString(new EObjectAdapter(view.getElement() != null ? view.getElement() : view), ParserOptions.NONE.intValue()); >+ } else { >+ UMLDiagramEditorPlugin.getInstance().logError("Parser was not found for label " + 5009); >+ return ""; >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ private String getPackage_1000Text(View view) { >+ EObject domainModelElement = view.getElement(); >+ if (domainModelElement != null) { >+ return String.valueOf(((NamedElement) domainModelElement).getName()); >+ } else { >+ UMLDiagramEditorPlugin.getInstance().logError("No domain element for view with visualID = " + 1000); >+ return ""; >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ private String getInterfaceRealization_4001Text(View view) { >+ EObject domainModelElement = view.getElement(); >+ if (domainModelElement != null) { >+ return String.valueOf(((NamedElement) domainModelElement).getName()); >+ } else { >+ UMLDiagramEditorPlugin.getInstance().logError("No domain element for view with visualID = " + 4001); >+ return ""; >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ private String getPortProvided_4006Text(View view) { >+ return ""; >+ } >+ >+ /** >+ * @generated >+ */ >+ private String getPortRequired_4004Text(View view) { >+ return ""; >+ } >+ >+ /** >+ * @generated >+ */ >+ private String getUnknownElementText(View view) { >+ return "<UnknownElement Visual_ID = " + view.getType() + ">"; >+ } >+ >+ /** >+ * @generated >+ */ >+ public void init(ICommonContentExtensionSite aConfig) { >+ } >+ >+ /** >+ * @generated >+ */ >+ public void restoreState(IMemento aMemento) { >+ } >+ >+ /** >+ * @generated >+ */ >+ public void saveState(IMemento aMemento) { >+ } >+ >+ /** >+ * @generated >+ */ >+ public String getDescription(Object anElement) { >+ return null; >+ } >+ >+} >Index: src/org/eclipse/uml2/diagram/component/edit/policies/Interface2ItemSemanticEditPolicy.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/component/edit/policies/Interface2ItemSemanticEditPolicy.java >diff -N src/org/eclipse/uml2/diagram/component/edit/policies/Interface2ItemSemanticEditPolicy.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/component/edit/policies/Interface2ItemSemanticEditPolicy.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,164 @@ >+package org.eclipse.uml2.diagram.component.edit.policies; >+ >+import org.eclipse.gef.commands.Command; >+import org.eclipse.gmf.runtime.emf.type.core.commands.DestroyElementCommand; >+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateRelationshipRequest; >+import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest; >+import org.eclipse.emf.ecore.EObject; >+import org.eclipse.emf.ecore.EAnnotation; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.emf.ecore.EClass; >+ >+import org.eclipse.gef.commands.UnexecutableCommand; >+ >+import org.eclipse.gmf.runtime.emf.type.core.commands.CreateRelationshipCommand; >+import org.eclipse.gmf.runtime.emf.type.core.commands.SetValueCommand; >+ >+import org.eclipse.gmf.runtime.emf.type.core.requests.SetRequest; >+ >+import org.eclipse.uml2.diagram.component.providers.UMLElementTypes; >+import org.eclipse.uml2.uml.BehavioredClassifier; >+import org.eclipse.uml2.uml.Interface; >+import org.eclipse.uml2.uml.InterfaceRealization; >+import org.eclipse.uml2.uml.Port; >+import org.eclipse.uml2.uml.UMLPackage; >+ >+/** >+ * @generated >+ */ >+public class Interface2ItemSemanticEditPolicy extends UMLBaseItemSemanticEditPolicy { >+ >+ /** >+ * @generated >+ */ >+ protected Command getDestroyElementCommand(DestroyElementRequest req) { >+ return getMSLWrapper(new DestroyElementCommand(req) { >+ >+ protected EObject getElementToDestroy() { >+ View view = (View) getHost().getModel(); >+ EAnnotation annotation = view.getEAnnotation("Shortcut"); //$NON-NLS-1$ >+ if (annotation != null) { >+ return view; >+ } >+ return super.getElementToDestroy(); >+ } >+ >+ }); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateRelationshipCommand(CreateRelationshipRequest req) { >+ if (UMLElementTypes.InterfaceRealization_4001 == req.getElementType()) { >+ return req.getTarget() == null ? null : getCreateCompleteIncomingInterfaceRealization4001Command(req); >+ } >+ if (UMLElementTypes.PortProvided_4006 == req.getElementType()) { >+ return req.getTarget() == null ? null : getCreateCompleteIncomingPort_Provided4006Command(req); >+ } >+ if (UMLElementTypes.PortRequired_4004 == req.getElementType()) { >+ return req.getTarget() == null ? null : getCreateCompleteIncomingPort_Required4004Command(req); >+ } >+ return super.getCreateRelationshipCommand(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingInterfaceRealization4001Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof BehavioredClassifier)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ final BehavioredClassifier element = (BehavioredClassifier) getRelationshipContainer(req.getSource(), UMLPackage.eINSTANCE.getBehavioredClassifier(), req.getElementType()); >+ if (element == null) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ if (!UMLBaseItemSemanticEditPolicy.LinkConstraints.InterfaceRealization_4001.canCreateLink(req, false)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ if (req.getContainmentFeature() == null) { >+ req.setContainmentFeature(UMLPackage.eINSTANCE.getBehavioredClassifier_InterfaceRealization()); >+ } >+ return getMSLWrapper(new CreateIncomingInterfaceRealization4001Command(req) { >+ >+ protected EObject getElementToEdit() { >+ return element; >+ } >+ }); >+ } >+ >+ /** >+ * @generated >+ */ >+ private static class CreateIncomingInterfaceRealization4001Command extends CreateRelationshipCommand { >+ >+ /** >+ * @generated >+ */ >+ public CreateIncomingInterfaceRealization4001Command(CreateRelationshipRequest req) { >+ super(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EClass getEClassToEdit() { >+ return UMLPackage.eINSTANCE.getBehavioredClassifier(); >+ }; >+ >+ /** >+ * @generated >+ */ >+ protected void setElementToEdit(EObject element) { >+ throw new UnsupportedOperationException(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject doDefaultElementCreation() { >+ InterfaceRealization newElement = (InterfaceRealization) super.doDefaultElementCreation(); >+ if (newElement != null) { >+ newElement.setContract((Interface) getTarget()); >+ newElement.setImplementingClassifier((BehavioredClassifier) getSource()); >+ } >+ return newElement; >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingPort_Provided4006Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof Port)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ Port element = (Port) req.getSource(); >+ if (element.getProvideds().contains(req.getTarget())) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ if (!UMLBaseItemSemanticEditPolicy.LinkConstraints.PortProvided_4006.canCreateLink(req, false)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ SetRequest setReq = new SetRequest(req.getSource(), UMLPackage.eINSTANCE.getPort_Provided(), req.getTarget()); >+ return getMSLWrapper(new SetValueCommand(setReq)); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingPort_Required4004Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof Port)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ Port element = (Port) req.getSource(); >+ if (element.getRequireds().contains(req.getTarget())) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ if (!UMLBaseItemSemanticEditPolicy.LinkConstraints.PortRequired_4004.canCreateLink(req, false)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ SetRequest setReq = new SetRequest(req.getSource(), UMLPackage.eINSTANCE.getPort_Required(), req.getTarget()); >+ return getMSLWrapper(new SetValueCommand(setReq)); >+ } >+} >Index: src/org/eclipse/uml2/diagram/component/edit/helpers/PortEditHelper.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/component/edit/helpers/PortEditHelper.java >diff -N src/org/eclipse/uml2/diagram/component/edit/helpers/PortEditHelper.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/component/edit/helpers/PortEditHelper.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,7 @@ >+package org.eclipse.uml2.diagram.component.edit.helpers; >+ >+/** >+ * @generated >+ */ >+public class PortEditHelper extends UMLBaseEditHelper { >+} >Index: src/org/eclipse/uml2/diagram/component/view/factories/ClassViewFactory.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/component/view/factories/ClassViewFactory.java >diff -N src/org/eclipse/uml2/diagram/component/view/factories/ClassViewFactory.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/component/view/factories/ClassViewFactory.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,57 @@ >+package org.eclipse.uml2.diagram.component.view.factories; >+ >+import java.util.ArrayList; >+import java.util.List; >+ >+import org.eclipse.core.runtime.IAdaptable; >+ >+import org.eclipse.emf.ecore.EAnnotation; >+import org.eclipse.emf.ecore.EcoreFactory; >+ >+import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil; >+ >+import org.eclipse.gmf.runtime.diagram.ui.view.factories.AbstractShapeViewFactory; >+ >+import org.eclipse.gmf.runtime.notation.NotationFactory; >+import org.eclipse.gmf.runtime.notation.View; >+ >+import org.eclipse.uml2.diagram.component.edit.parts.ClassNameEditPart; >+import org.eclipse.uml2.diagram.component.edit.parts.PackageEditPart; >+import org.eclipse.uml2.diagram.component.part.UMLVisualIDRegistry; >+ >+/** >+ * @generated >+ */ >+public class ClassViewFactory extends AbstractShapeViewFactory { >+ >+ /** >+ * @generated >+ */ >+ protected List createStyles(View view) { >+ List styles = new ArrayList(); >+ styles.add(NotationFactory.eINSTANCE.createFontStyle()); >+ styles.add(NotationFactory.eINSTANCE.createDescriptionStyle()); >+ styles.add(NotationFactory.eINSTANCE.createFillStyle()); >+ styles.add(NotationFactory.eINSTANCE.createLineStyle()); >+ return styles; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void decorateView(View containerView, View view, IAdaptable semanticAdapter, String semanticHint, int index, boolean persisted) { >+ if (semanticHint == null) { >+ semanticHint = UMLVisualIDRegistry.getType(org.eclipse.uml2.diagram.component.edit.parts.ClassEditPart.VISUAL_ID); >+ view.setType(semanticHint); >+ } >+ super.decorateView(containerView, view, semanticAdapter, semanticHint, index, persisted); >+ if (!PackageEditPart.MODEL_ID.equals(UMLVisualIDRegistry.getModelID(containerView))) { >+ EAnnotation shortcutAnnotation = EcoreFactory.eINSTANCE.createEAnnotation(); >+ shortcutAnnotation.setSource("Shortcut"); //$NON-NLS-1$ >+ shortcutAnnotation.getDetails().put("modelID", PackageEditPart.MODEL_ID); //$NON-NLS-1$ >+ view.getEAnnotations().add(shortcutAnnotation); >+ } >+ getViewService().createNode(semanticAdapter, view, UMLVisualIDRegistry.getType(ClassNameEditPart.VISUAL_ID), ViewUtil.APPEND, true, getPreferencesHint()); >+ } >+ >+} >Index: src/org/eclipse/uml2/diagram/component/edit/parts/ComponentEditPart.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/component/edit/parts/ComponentEditPart.java >diff -N src/org/eclipse/uml2/diagram/component/edit/parts/ComponentEditPart.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/component/edit/parts/ComponentEditPart.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,418 @@ >+package org.eclipse.uml2.diagram.component.edit.parts; >+ >+import org.eclipse.draw2d.IFigure; >+import org.eclipse.draw2d.PositionConstants; >+import org.eclipse.draw2d.StackLayout; >+ >+import org.eclipse.gef.EditPart; >+import org.eclipse.gef.EditPolicy; >+import org.eclipse.gef.Request; >+ >+import org.eclipse.gef.commands.Command; >+ >+import org.eclipse.gef.editpolicies.LayoutEditPolicy; >+import org.eclipse.gef.editpolicies.NonResizableEditPolicy; >+ >+import org.eclipse.gef.requests.CreateRequest; >+ >+import org.eclipse.gmf.runtime.diagram.ui.editparts.AbstractBorderedShapeEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart; >+ >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles; >+ >+import org.eclipse.gmf.runtime.diagram.ui.figures.BorderItemLocator; >+ >+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout; >+ >+import org.eclipse.gmf.runtime.gef.ui.figures.DefaultSizeNodeFigure; >+import org.eclipse.gmf.runtime.gef.ui.figures.NodeFigure; >+ >+import org.eclipse.gmf.runtime.notation.View; >+ >+import org.eclipse.uml2.diagram.component.edit.policies.ComponentCanonicalEditPolicy; >+import org.eclipse.uml2.diagram.component.edit.policies.ComponentItemSemanticEditPolicy; >+import org.eclipse.uml2.diagram.component.part.UMLVisualIDRegistry; >+ >+/** >+ * @generated >+ */ >+public class ComponentEditPart extends AbstractBorderedShapeEditPart { >+ >+ /** >+ * @generated >+ */ >+ public static final int VISUAL_ID = 2001; >+ >+ /** >+ * @generated >+ */ >+ protected IFigure contentPane; >+ >+ /** >+ * @generated >+ */ >+ protected IFigure primaryShape; >+ >+ /** >+ * @generated >+ */ >+ public ComponentEditPart(View view) { >+ super(view); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void createDefaultEditPolicies() { >+ installEditPolicy(EditPolicyRoles.CREATION_ROLE, new CreationEditPolicy()); >+ super.createDefaultEditPolicies(); >+ installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE, new ComponentItemSemanticEditPolicy()); >+ installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE, new DragDropEditPolicy()); >+ installEditPolicy(EditPolicyRoles.CANONICAL_ROLE, new ComponentCanonicalEditPolicy()); >+ installEditPolicy(EditPolicy.LAYOUT_ROLE, createLayoutEditPolicy()); >+ >+ } >+ >+ /** >+ * @generated >+ */ >+ protected LayoutEditPolicy createLayoutEditPolicy() { >+ LayoutEditPolicy lep = new LayoutEditPolicy() { >+ >+ protected EditPolicy createChildEditPolicy(EditPart child) { >+ EditPolicy result = child.getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE); >+ if (result == null) { >+ result = new NonResizableEditPolicy(); >+ } >+ return result; >+ } >+ >+ protected Command getMoveChildrenCommand(Request request) { >+ return null; >+ } >+ >+ protected Command getCreateCommand(CreateRequest request) { >+ return null; >+ } >+ }; >+ return lep; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected IFigure createNodeShape() { >+ ComponentFigure figure = new ComponentFigure(); >+ return primaryShape = figure; >+ } >+ >+ /** >+ * @generated >+ */ >+ public ComponentFigure getPrimaryShape() { >+ return (ComponentFigure) primaryShape; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected IFigure getContentPaneFor(IGraphicalEditPart editPart) { >+ if (editPart instanceof ComponentContentsEditPart) { >+ return getPrimaryShape().getFigureComponentFigure_Body(); >+ } >+ if (editPart instanceof PortEditPart) { >+ return getBorderedFigure().getBorderItemContainer(); >+ } >+ >+ return super.getContentPaneFor(editPart); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected boolean addFixedChild(EditPart childEditPart) { >+ if (childEditPart instanceof ComponentName2EditPart) { >+ ((ComponentName2EditPart) childEditPart).setLabel(getPrimaryShape().getFigureComponentFigure_name()); >+ return true; >+ } >+ if (childEditPart instanceof ComponentContentsEditPart) { >+ IFigure pane = getPrimaryShape().getFigureComponentFigure_Body(); >+ setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way >+ pane.add(((ComponentContentsEditPart) childEditPart).getFigure()); >+ return true; >+ } >+ if (childEditPart instanceof PortEditPart) { >+ BorderItemLocator locator = new BorderItemLocator(getMainFigure(), PositionConstants.NONE); >+ getBorderedFigure().getBorderItemContainer().add(((PortEditPart) childEditPart).getFigure(), locator); >+ return true; >+ } >+ return false; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected boolean removeFixedChild(EditPart childEditPart) { >+ if (childEditPart instanceof ComponentContentsEditPart) { >+ IFigure pane = getPrimaryShape().getFigureComponentFigure_Body(); >+ pane.remove(((ComponentContentsEditPart) childEditPart).getFigure()); >+ return true; >+ } >+ if (childEditPart instanceof PortEditPart) { >+ getBorderedFigure().getBorderItemContainer().remove(((PortEditPart) childEditPart).getFigure()); >+ return true; >+ } >+ return false; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected NodeFigure createNodePlate() { >+ DefaultSizeNodeFigure result = new DefaultSizeNodeFigure(getMapMode().DPtoLP(100), getMapMode().DPtoLP(80)); >+ return result; >+ } >+ >+ /** >+ * Creates figure for this edit part. >+ * >+ * Body of this method does not depend on settings in generation model >+ * so you may safely remove <i>generated</i> tag and modify it. >+ * >+ * @generated >+ */ >+ protected NodeFigure createMainFigure() { >+ NodeFigure figure = createNodePlate(); >+ figure.setLayoutManager(new StackLayout()); >+ IFigure shape = createNodeShape(); >+ figure.add(shape); >+ contentPane = setupContentPane(shape); >+ return figure; >+ } >+ >+ /** >+ * Default implementation treats passed figure as content pane. >+ * Respects layout one may have set for generated figure. >+ * @param nodeShape instance of generated figure class >+ * @generated >+ */ >+ protected IFigure setupContentPane(IFigure nodeShape) { >+ if (nodeShape.getLayoutManager() == null) { >+ ConstrainedToolbarLayout layout = new ConstrainedToolbarLayout(); >+ layout.setSpacing(getMapMode().DPtoLP(5)); >+ nodeShape.setLayoutManager(layout); >+ } >+ return nodeShape; // use nodeShape itself as contentPane >+ } >+ >+ /** >+ * @generated >+ */ >+ public IFigure getContentPane() { >+ if (contentPane != null) { >+ return contentPane; >+ } >+ return super.getContentPane(); >+ } >+ >+ /** >+ * @generated >+ */ >+ public EditPart getPrimaryChildEditPart() { >+ return getChildBySemanticHint(UMLVisualIDRegistry.getType(ComponentName2EditPart.VISUAL_ID)); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void addChildVisual(EditPart childEditPart, int index) { >+ if (addFixedChild(childEditPart)) { >+ return; >+ } >+ super.addChildVisual(childEditPart, -1); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void removeChildVisual(EditPart childEditPart) { >+ if (removeFixedChild(childEditPart)) { >+ return; >+ } >+ super.removeChildVisual(childEditPart); >+ } >+ >+ /** >+ * @generated >+ */ >+ public class ComponentFigure extends org.eclipse.draw2d.RectangleFigure { >+ >+ /** >+ * @generated >+ */ >+ public ComponentFigure() { >+ >+ org.eclipse.gmf.internal.codegen.draw2d.GridLayout myGenLayoutManager = new org.eclipse.gmf.internal.codegen.draw2d.GridLayout(); >+ myGenLayoutManager.numColumns = 1; >+ myGenLayoutManager.makeColumnsEqualWidth = true; >+ myGenLayoutManager.marginWidth = 0; >+ myGenLayoutManager.marginHeight = 0; >+ myGenLayoutManager.horizontalSpacing = 0; >+ myGenLayoutManager.verticalSpacing = 0; >+ >+ this.setLayoutManager(myGenLayoutManager); >+ >+ this.setFill(false); >+ this.setOutline(false); >+ createContents(); >+ } >+ >+ /** >+ * @generated >+ */ >+ private void createContents() { >+ org.eclipse.draw2d.RectangleFigure fig_0 = new org.eclipse.draw2d.RectangleFigure(); >+ >+ fig_0.setMinimumSize(new org.eclipse.draw2d.geometry.Dimension(getMapMode().DPtoLP(0), getMapMode().DPtoLP(35))); >+ >+ org.eclipse.gmf.internal.codegen.draw2d.GridLayout layouter0 = new org.eclipse.gmf.internal.codegen.draw2d.GridLayout(); >+ layouter0.numColumns = 1; >+ layouter0.makeColumnsEqualWidth = false; >+ >+ fig_0.setLayoutManager(layouter0); >+ >+ setFigureComponentFigure_LabelsContainer(fig_0); >+ org.eclipse.gmf.internal.codegen.draw2d.GridLayoutData layData0 = new org.eclipse.gmf.internal.codegen.draw2d.GridLayoutData(); >+ layData0.verticalAlignment = org.eclipse.gmf.internal.codegen.draw2d.GridLayoutData.FILL; >+ layData0.horizontalAlignment = org.eclipse.gmf.internal.codegen.draw2d.GridLayoutData.FILL; >+ layData0.horizontalIndent = 0; >+ layData0.horizontalSpan = 2; >+ layData0.verticalSpan = 1; >+ layData0.grabExcessHorizontalSpace = true; >+ layData0.grabExcessVerticalSpace = false; >+ >+ this.add(fig_0, layData0); >+ org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel fig_1 = new org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel(); >+ fig_1.setText("\u00ABcomponent\u00BB"); >+ >+ org.eclipse.gmf.internal.codegen.draw2d.GridLayoutData layData1 = new org.eclipse.gmf.internal.codegen.draw2d.GridLayoutData(); >+ layData1.verticalAlignment = org.eclipse.gmf.internal.codegen.draw2d.GridLayoutData.CENTER; >+ layData1.horizontalAlignment = org.eclipse.gmf.internal.codegen.draw2d.GridLayoutData.CENTER; >+ layData1.horizontalIndent = 0; >+ layData1.horizontalSpan = 1; >+ layData1.verticalSpan = 1; >+ layData1.grabExcessHorizontalSpace = true; >+ layData1.grabExcessVerticalSpace = false; >+ >+ fig_0.add(fig_1, layData1); >+ org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel fig_2 = new org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel(); >+ >+ setFigureComponentFigure_name(fig_2); >+ org.eclipse.gmf.internal.codegen.draw2d.GridLayoutData layData2 = new org.eclipse.gmf.internal.codegen.draw2d.GridLayoutData(); >+ layData2.verticalAlignment = org.eclipse.gmf.internal.codegen.draw2d.GridLayoutData.CENTER; >+ layData2.horizontalAlignment = org.eclipse.gmf.internal.codegen.draw2d.GridLayoutData.CENTER; >+ layData2.horizontalIndent = 0; >+ layData2.horizontalSpan = 1; >+ layData2.verticalSpan = 1; >+ layData2.grabExcessHorizontalSpace = true; >+ layData2.grabExcessVerticalSpace = false; >+ >+ fig_0.add(fig_2, layData2); >+ org.eclipse.draw2d.RectangleFigure fig_3 = new org.eclipse.draw2d.RectangleFigure(); >+ >+ fig_3.setMinimumSize(new org.eclipse.draw2d.geometry.Dimension(getMapMode().DPtoLP(0), getMapMode().DPtoLP(55))); >+ >+ setFigureComponentFigure_Body(fig_3); >+ org.eclipse.gmf.internal.codegen.draw2d.GridLayoutData layData3 = new org.eclipse.gmf.internal.codegen.draw2d.GridLayoutData(); >+ layData3.verticalAlignment = org.eclipse.gmf.internal.codegen.draw2d.GridLayoutData.FILL; >+ layData3.horizontalAlignment = org.eclipse.gmf.internal.codegen.draw2d.GridLayoutData.FILL; >+ layData3.horizontalIndent = 0; >+ layData3.horizontalSpan = 1; >+ layData3.verticalSpan = 1; >+ layData3.grabExcessHorizontalSpace = true; >+ layData3.grabExcessVerticalSpace = true; >+ >+ this.add(fig_3, layData3); >+ } >+ >+ /** >+ * @generated >+ */ >+ private org.eclipse.draw2d.RectangleFigure fComponentFigure_LabelsContainer; >+ >+ /** >+ * @generated >+ */ >+ public org.eclipse.draw2d.RectangleFigure getFigureComponentFigure_LabelsContainer() { >+ return fComponentFigure_LabelsContainer; >+ } >+ >+ /** >+ * @generated >+ */ >+ private void setFigureComponentFigure_LabelsContainer(org.eclipse.draw2d.RectangleFigure fig) { >+ fComponentFigure_LabelsContainer = fig; >+ } >+ >+ /** >+ * @generated >+ */ >+ private org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel fComponentFigure_name; >+ >+ /** >+ * @generated >+ */ >+ public org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel getFigureComponentFigure_name() { >+ return fComponentFigure_name; >+ } >+ >+ /** >+ * @generated >+ */ >+ private void setFigureComponentFigure_name(org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel fig) { >+ fComponentFigure_name = fig; >+ } >+ >+ /** >+ * @generated >+ */ >+ private org.eclipse.draw2d.RectangleFigure fComponentFigure_Body; >+ >+ /** >+ * @generated >+ */ >+ public org.eclipse.draw2d.RectangleFigure getFigureComponentFigure_Body() { >+ return fComponentFigure_Body; >+ } >+ >+ /** >+ * @generated >+ */ >+ private void setFigureComponentFigure_Body(org.eclipse.draw2d.RectangleFigure fig) { >+ fComponentFigure_Body = fig; >+ } >+ >+ /** >+ * @generated >+ */ >+ private boolean myUseLocalCoordinates = false; >+ >+ /** >+ * @generated >+ */ >+ protected boolean useLocalCoordinates() { >+ return myUseLocalCoordinates; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setUseLocalCoordinates(boolean useLocalCoordinates) { >+ myUseLocalCoordinates = useLocalCoordinates; >+ } >+ >+ } >+ >+} >Index: src/org/eclipse/uml2/diagram/component/part/UMLDocumentProvider.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/component/part/UMLDocumentProvider.java >diff -N src/org/eclipse/uml2/diagram/component/part/UMLDocumentProvider.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/component/part/UMLDocumentProvider.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,204 @@ >+package org.eclipse.uml2.diagram.component.part; >+ >+import java.io.IOException; >+import java.util.ArrayList; >+import java.util.Collection; >+import java.util.Collections; >+import java.util.Iterator; >+import java.util.List; >+ >+import org.eclipse.core.resources.IFile; >+import org.eclipse.core.resources.IResource; >+import org.eclipse.core.resources.IStorage; >+import org.eclipse.core.runtime.CoreException; >+import org.eclipse.core.runtime.IProgressMonitor; >+import org.eclipse.core.runtime.SubProgressMonitor; >+import org.eclipse.core.runtime.jobs.ISchedulingRule; >+import org.eclipse.core.runtime.jobs.MultiRule; >+import org.eclipse.emf.common.notify.Notification; >+import org.eclipse.emf.ecore.EObject; >+import org.eclipse.emf.ecore.resource.Resource; >+import org.eclipse.emf.transaction.DemultiplexingListener; >+import org.eclipse.emf.transaction.NotificationFilter; >+import org.eclipse.emf.transaction.TransactionalEditingDomain; >+import org.eclipse.emf.workspace.util.WorkspaceSynchronizer; >+import org.eclipse.gmf.runtime.diagram.ui.resources.editor.document.DiagramDocument; >+import org.eclipse.gmf.runtime.diagram.ui.resources.editor.document.DiagramModificationListener; >+import org.eclipse.gmf.runtime.diagram.ui.resources.editor.document.IDiagramDocument; >+import org.eclipse.gmf.runtime.diagram.ui.resources.editor.document.IDocument; >+import org.eclipse.gmf.runtime.diagram.ui.resources.editor.ide.document.FileDiagramDocumentProvider; >+import org.eclipse.gmf.runtime.diagram.ui.resources.editor.ide.document.FileDiagramModificationListener; >+import org.eclipse.gmf.runtime.notation.Diagram; >+import org.eclipse.ui.IFileEditorInput; >+ >+/** >+ * @generated >+ */ >+public class UMLDocumentProvider extends FileDiagramDocumentProvider { >+ >+ /** >+ * @generated >+ */ >+ private final String contentObjectURI; >+ >+ /** >+ * @generated >+ */ >+ public UMLDocumentProvider() { >+ this(null); >+ } >+ >+ /** >+ * @generated >+ */ >+ public UMLDocumentProvider(String rootObjectURI) { >+ this.contentObjectURI = rootObjectURI; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setDocumentContentFromStorage(IDocument document, IStorage storage) throws CoreException { >+ super.setDocumentContentFromStorage(document, storage); >+ if (contentObjectURI == null || false == document.getContent() instanceof EObject) { >+ return; >+ } >+ EObject currentContent = (EObject) document.getContent(); >+ if (currentContent.eResource().getURIFragment(currentContent) == contentObjectURI) { >+ return; // already there >+ } >+ EObject anotherContentObject = currentContent.eResource().getEObject(contentObjectURI); >+ document.setContent(anotherContentObject); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void saveDocumentToFile(IDocument document, IFile file, boolean overwrite, IProgressMonitor monitor) throws CoreException { >+ Diagram diagram = (Diagram) document.getContent(); >+ Resource diagramResource = diagram.eResource(); >+ IDiagramDocument diagramDocument = (IDiagramDocument) document; >+ TransactionalEditingDomain domain = diagramDocument.getEditingDomain(); >+ List resources = domain.getResourceSet().getResources(); >+ >+ monitor.beginTask("Saving diagram", resources.size() + 1); //$NON-NLS-1$ >+ super.saveDocumentToFile(document, file, overwrite, new SubProgressMonitor(monitor, 1)); >+ for (Iterator it = resources.iterator(); it.hasNext();) { >+ Resource nextResource = (Resource) it.next(); >+ monitor.setTaskName("Saving " + nextResource.getURI()); //$NON-NLS-1$ >+ if (nextResource != diagramResource && nextResource.isLoaded() && (!nextResource.isTrackingModification() || nextResource.isModified())) { >+ try { >+ nextResource.save(Collections.EMPTY_MAP); >+ } catch (IOException e) { >+ UMLDiagramEditorPlugin.getInstance().logError("Unable to save resource: " + nextResource.getURI(), e); //$NON-NLS-1$ >+ } >+ } >+ monitor.worked(1); >+ } >+ monitor.done(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected ISchedulingRule getSaveRule(Object element) { >+ IDiagramDocument diagramDocument = getDiagramDocument(element); >+ if (diagramDocument != null) { >+ Diagram diagram = diagramDocument.getDiagram(); >+ if (diagram != null) { >+ Collection rules = new ArrayList(); >+ for (Iterator it = diagramDocument.getEditingDomain().getResourceSet().getResources().iterator(); it.hasNext();) { >+ IFile nextFile = WorkspaceSynchronizer.getFile((Resource) it.next()); >+ if (nextFile != null) { >+ rules.add(computeSaveSchedulingRule(nextFile)); >+ } >+ } >+ return new MultiRule((ISchedulingRule[]) rules.toArray(new ISchedulingRule[rules.size()])); >+ } >+ } >+ return super.getSaveRule(element); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected FileInfo createFileInfo(IDocument document, FileSynchronizer synchronizer, IFileEditorInput input) { >+ assert document instanceof DiagramDocument; >+ >+ DiagramModificationListener diagramListener = new CustomModificationListener(this, (DiagramDocument) document, input); >+ DiagramFileInfo info = new DiagramFileInfo(document, synchronizer, diagramListener); >+ >+ diagramListener.startListening(); >+ return info; >+ } >+ >+ /** >+ * @generated >+ */ >+ private ISchedulingRule computeSaveSchedulingRule(IResource toCreateOrModify) { >+ if (toCreateOrModify.exists() && toCreateOrModify.isSynchronized(IResource.DEPTH_ZERO)) >+ return fResourceRuleFactory.modifyRule(toCreateOrModify); >+ >+ IResource parent = toCreateOrModify; >+ do { >+ /* >+ * XXX This is a workaround for https://bugs.eclipse.org/bugs/show_bug.cgi?id=67601 >+ * IResourceRuleFactory.createRule should iterate the hierarchy itself. >+ */ >+ toCreateOrModify = parent; >+ parent = toCreateOrModify.getParent(); >+ } while (parent != null && !parent.exists() && !parent.isSynchronized(IResource.DEPTH_ZERO)); >+ >+ return fResourceRuleFactory.createRule(toCreateOrModify); >+ } >+ >+ /** >+ * @generated >+ */ >+ private class CustomModificationListener extends FileDiagramModificationListener { >+ >+ /** >+ * @generated >+ */ >+ private DemultiplexingListener myListener = null; >+ >+ /** >+ * @generated >+ */ >+ public CustomModificationListener(UMLDocumentProvider documentProviderParameter, DiagramDocument documentParameter, IFileEditorInput inputParameter) { >+ super(documentProviderParameter, documentParameter, inputParameter); >+ final DiagramDocument document = documentParameter; >+ NotificationFilter diagramResourceModifiedFilter = NotificationFilter.createEventTypeFilter(Notification.SET); >+ myListener = new DemultiplexingListener(diagramResourceModifiedFilter) { >+ >+ protected void handleNotification(TransactionalEditingDomain domain, Notification notification) { >+ if (notification.getNotifier() instanceof EObject) { >+ Resource modifiedResource = ((EObject) notification.getNotifier()).eResource(); >+ if (modifiedResource != document.getDiagram().eResource()) { >+ document.setContent(document.getContent()); >+ } >+ } >+ >+ } >+ }; >+ } >+ >+ /** >+ * @generated >+ */ >+ public void startListening() { >+ super.startListening(); >+ getEditingDomain().addResourceSetListener(myListener); >+ } >+ >+ /** >+ * @generated >+ */ >+ public void stopListening() { >+ getEditingDomain().removeResourceSetListener(myListener); >+ super.stopListening(); >+ } >+ >+ } >+ >+} >Index: src/org/eclipse/uml2/diagram/component/edit/parts/ComponentNameEditPart.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/component/edit/parts/ComponentNameEditPart.java >diff -N src/org/eclipse/uml2/diagram/component/edit/parts/ComponentNameEditPart.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/component/edit/parts/ComponentNameEditPart.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,574 @@ >+package org.eclipse.uml2.diagram.component.edit.parts; >+ >+import java.util.ArrayList; >+import java.util.List; >+import org.eclipse.gef.EditPolicy; >+import org.eclipse.gef.GraphicalEditPart; >+import org.eclipse.gef.Request; >+import org.eclipse.gef.commands.Command; >+import org.eclipse.gef.editpolicies.NonResizableEditPolicy; >+import org.eclipse.gef.handles.NonResizableHandleKit; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.ITextAwareEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.LabelDirectEditPolicy; >+import org.eclipse.gmf.runtime.notation.View; >+import java.util.Collections; >+ >+import org.eclipse.draw2d.IFigure; >+import org.eclipse.draw2d.Label; >+ >+import org.eclipse.draw2d.geometry.Point; >+ >+import org.eclipse.emf.common.notify.Notification; >+ >+import org.eclipse.emf.ecore.EObject; >+ >+import org.eclipse.emf.transaction.RunnableWithResult; >+ >+import org.eclipse.gef.AccessibleEditPart; >+ >+import org.eclipse.gef.requests.DirectEditRequest; >+ >+import org.eclipse.gef.tools.DirectEditManager; >+ >+import org.eclipse.gmf.runtime.common.ui.services.parser.IParser; >+import org.eclipse.gmf.runtime.common.ui.services.parser.IParserEditStatus; >+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserEditStatus; >+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserOptions; >+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserService; >+ >+import org.eclipse.gmf.runtime.diagram.ui.editparts.CompartmentEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart; >+ >+import org.eclipse.gmf.runtime.diagram.ui.l10n.DiagramColorRegistry; >+ >+import org.eclipse.gmf.runtime.diagram.ui.requests.RequestConstants; >+ >+import org.eclipse.gmf.runtime.diagram.ui.tools.TextDirectEditManager; >+ >+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel; >+ >+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter; >+ >+import org.eclipse.gmf.runtime.emf.type.core.IElementType; >+ >+import org.eclipse.gmf.runtime.emf.ui.services.parser.ISemanticParser; >+import org.eclipse.gmf.runtime.emf.ui.services.parser.ParserHintAdapter; >+ >+import org.eclipse.gmf.runtime.notation.FontStyle; >+import org.eclipse.gmf.runtime.notation.NotationPackage; >+ >+import org.eclipse.jface.resource.ImageDescriptor; >+ >+import org.eclipse.jface.text.contentassist.IContentAssistProcessor; >+ >+import org.eclipse.jface.viewers.ICellEditorValidator; >+ >+import org.eclipse.swt.SWT; >+ >+import org.eclipse.swt.accessibility.AccessibleEvent; >+ >+import org.eclipse.swt.graphics.Color; >+import org.eclipse.swt.graphics.FontData; >+import org.eclipse.swt.graphics.Image; >+import org.eclipse.uml2.diagram.component.edit.policies.UMLTextSelectionEditPolicy; >+import org.eclipse.uml2.diagram.component.part.UMLDiagramEditorPlugin; >+import org.eclipse.uml2.diagram.component.providers.UMLElementTypes; >+ >+/** >+ * @generated >+ */ >+public class ComponentNameEditPart extends CompartmentEditPart implements ITextAwareEditPart { >+ >+ /** >+ * @generated >+ */ >+ public static final int VISUAL_ID = 5002; >+ >+ /** >+ * @generated >+ */ >+ private DirectEditManager manager; >+ >+ /** >+ * @generated >+ */ >+ private IParser parser; >+ >+ /** >+ * @generated >+ */ >+ private List parserElements; >+ >+ /** >+ * @generated >+ */ >+ private String defaultText; >+ >+ /** >+ * @generated >+ */ >+ public ComponentNameEditPart(View view) { >+ super(view); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void createDefaultEditPolicies() { >+ super.createDefaultEditPolicies(); >+ installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE, new LabelDirectEditPolicy()); >+ installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE, new NonResizableEditPolicy() { >+ >+ protected List createSelectionHandles() { >+ List handles = new ArrayList(); >+ NonResizableHandleKit.addMoveHandle((GraphicalEditPart) getHost(), handles); >+ return handles; >+ } >+ >+ public Command getCommand(Request request) { >+ return null; >+ } >+ >+ public boolean understandsRequest(Request request) { >+ return false; >+ } >+ }); >+ >+ } >+ >+ /** >+ * @generated >+ */ >+ protected String getLabelTextHelper(IFigure figure) { >+ if (figure instanceof WrapLabel) { >+ return ((WrapLabel) figure).getText(); >+ } else { >+ return ((Label) figure).getText(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setLabelTextHelper(IFigure figure, String text) { >+ if (figure instanceof WrapLabel) { >+ ((WrapLabel) figure).setText(text); >+ } else { >+ ((Label) figure).setText(text); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Image getLabelIconHelper(IFigure figure) { >+ if (figure instanceof WrapLabel) { >+ return ((WrapLabel) figure).getIcon(); >+ } else { >+ return ((Label) figure).getIcon(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setLabelIconHelper(IFigure figure, Image icon) { >+ if (figure instanceof WrapLabel) { >+ ((WrapLabel) figure).setIcon(icon); >+ } else { >+ ((Label) figure).setIcon(icon); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ public void setLabel(WrapLabel figure) { >+ unregisterVisuals(); >+ setFigure(figure); >+ defaultText = getLabelTextHelper(figure); >+ registerVisuals(); >+ refreshVisuals(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected List getModelChildren() { >+ return Collections.EMPTY_LIST; >+ } >+ >+ /** >+ * @generated >+ */ >+ public IGraphicalEditPart getChildBySemanticHint(String semanticHint) { >+ return null; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject getParserElement() { >+ EObject element = resolveSemanticElement(); >+ return element != null ? element : (View) getModel(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Image getLabelIcon() { >+ EObject parserElement = getParserElement(); >+ if (parserElement == null) { >+ return null; >+ } >+ return UMLElementTypes.getImage(parserElement.eClass()); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected String getLabelText() { >+ String text = null; >+ if (getParser() != null) { >+ text = getParser().getPrintString(new EObjectAdapter(getParserElement()), getParserOptions().intValue()); >+ } >+ if (text == null || text.length() == 0) { >+ text = defaultText; >+ } >+ return text; >+ } >+ >+ /** >+ * @generated >+ */ >+ public void setLabelText(String text) { >+ setLabelTextHelper(getFigure(), text); >+ Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE); >+ if (pdEditPolicy instanceof UMLTextSelectionEditPolicy) { >+ ((UMLTextSelectionEditPolicy) pdEditPolicy).refreshFeedback(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ public String getEditText() { >+ if (getParser() == null) { >+ return ""; //$NON-NLS-1$ >+ } >+ return getParser().getEditString(new EObjectAdapter(getParserElement()), getParserOptions().intValue()); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected boolean isEditable() { >+ return getEditText() != null; >+ } >+ >+ /** >+ * @generated >+ */ >+ public ICellEditorValidator getEditTextValidator() { >+ return new ICellEditorValidator() { >+ >+ public String isValid(final Object value) { >+ if (value instanceof String) { >+ final EObject element = getParserElement(); >+ final IParser parser = getParser(); >+ try { >+ IParserEditStatus valid = (IParserEditStatus) getEditingDomain().runExclusive(new RunnableWithResult.Impl() { >+ >+ public void run() { >+ setResult(parser.isValidEditString(new EObjectAdapter(element), (String) value)); >+ } >+ }); >+ return valid.getCode() == ParserEditStatus.EDITABLE ? null : valid.getMessage(); >+ } catch (InterruptedException ie) { >+ ie.printStackTrace(); >+ } >+ } >+ >+ // shouldn't get here >+ return null; >+ } >+ }; >+ } >+ >+ /** >+ * @generated >+ */ >+ public IContentAssistProcessor getCompletionProcessor() { >+ if (getParser() == null) { >+ return null; >+ } >+ return getParser().getCompletionProcessor(new EObjectAdapter(getParserElement())); >+ } >+ >+ /** >+ * @generated >+ */ >+ public ParserOptions getParserOptions() { >+ return ParserOptions.NONE; >+ } >+ >+ /** >+ * @generated >+ */ >+ public IParser getParser() { >+ if (parser == null) { >+ String parserHint = ((View) getModel()).getType(); >+ ParserHintAdapter hintAdapter = new ParserHintAdapter(getParserElement(), parserHint) { >+ >+ public Object getAdapter(Class adapter) { >+ if (IElementType.class.equals(adapter)) { >+ return UMLElementTypes.Component_3001; >+ } >+ return super.getAdapter(adapter); >+ } >+ }; >+ parser = ParserService.getInstance().getParser(hintAdapter); >+ } >+ return parser; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected DirectEditManager getManager() { >+ if (manager == null) { >+ setManager(new TextDirectEditManager(this, TextDirectEditManager.getTextCellEditorClass(this), UMLEditPartFactory.getTextCellEditorLocator(this))); >+ } >+ return manager; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setManager(DirectEditManager manager) { >+ this.manager = manager; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void performDirectEdit() { >+ getManager().show(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void performDirectEdit(Point eventLocation) { >+ if (getManager().getClass() == TextDirectEditManager.class) { >+ ((TextDirectEditManager) getManager()).show(eventLocation.getSWTPoint()); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ private void performDirectEdit(char initialCharacter) { >+ if (getManager() instanceof TextDirectEditManager) { >+ ((TextDirectEditManager) getManager()).show(initialCharacter); >+ } else { >+ performDirectEdit(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void performDirectEditRequest(Request request) { >+ final Request theRequest = request; >+ try { >+ getEditingDomain().runExclusive(new Runnable() { >+ >+ public void run() { >+ if (isActive() && isEditable()) { >+ if (theRequest.getExtendedData().get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR) instanceof Character) { >+ Character initialChar = (Character) theRequest.getExtendedData().get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR); >+ performDirectEdit(initialChar.charValue()); >+ } else if ((theRequest instanceof DirectEditRequest) && (getEditText().equals(getLabelText()))) { >+ DirectEditRequest editRequest = (DirectEditRequest) theRequest; >+ performDirectEdit(editRequest.getLocation()); >+ } else { >+ performDirectEdit(); >+ } >+ } >+ } >+ }); >+ } catch (InterruptedException e) { >+ e.printStackTrace(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshVisuals() { >+ super.refreshVisuals(); >+ refreshLabel(); >+ refreshFont(); >+ refreshFontColor(); >+ refreshUnderline(); >+ refreshStrikeThrough(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshLabel() { >+ setLabelTextHelper(getFigure(), getLabelText()); >+ setLabelIconHelper(getFigure(), getLabelIcon()); >+ Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE); >+ if (pdEditPolicy instanceof UMLTextSelectionEditPolicy) { >+ ((UMLTextSelectionEditPolicy) pdEditPolicy).refreshFeedback(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshUnderline() { >+ FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle()); >+ if (style != null && getFigure() instanceof WrapLabel) { >+ ((WrapLabel) getFigure()).setTextUnderline(style.isUnderline()); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshStrikeThrough() { >+ FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle()); >+ if (style != null && getFigure() instanceof WrapLabel) { >+ ((WrapLabel) getFigure()).setTextStrikeThrough(style.isStrikeThrough()); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshFont() { >+ FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle()); >+ if (style != null) { >+ FontData fontData = new FontData(style.getFontName(), style.getFontHeight(), (style.isBold() ? SWT.BOLD : SWT.NORMAL) | (style.isItalic() ? SWT.ITALIC : SWT.NORMAL)); >+ setFont(fontData); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setFontColor(Color color) { >+ getFigure().setForegroundColor(color); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void addSemanticListeners() { >+ if (getParser() instanceof ISemanticParser) { >+ EObject element = resolveSemanticElement(); >+ parserElements = ((ISemanticParser) getParser()).getSemanticElementsBeingParsed(element); >+ for (int i = 0; i < parserElements.size(); i++) { >+ addListenerFilter("SemanticModel" + i, this, (EObject) parserElements.get(i)); //$NON-NLS-1$ >+ } >+ } else { >+ super.addSemanticListeners(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void removeSemanticListeners() { >+ if (parserElements != null) { >+ for (int i = 0; i < parserElements.size(); i++) { >+ removeListenerFilter("SemanticModel" + i); //$NON-NLS-1$ >+ } >+ } else { >+ super.removeSemanticListeners(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected AccessibleEditPart getAccessibleEditPart() { >+ if (accessibleEP == null) { >+ accessibleEP = new AccessibleGraphicalEditPart() { >+ >+ public void getName(AccessibleEvent e) { >+ e.result = getLabelTextHelper(getFigure()); >+ } >+ }; >+ } >+ return accessibleEP; >+ } >+ >+ /** >+ * @generated >+ */ >+ private View getFontStyleOwnerView() { >+ return getPrimaryView(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void addNotationalListeners() { >+ super.addNotationalListeners(); >+ addListenerFilter("PrimaryView", this, getPrimaryView()); //$NON-NLS-1$ >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void removeNotationalListeners() { >+ super.removeNotationalListeners(); >+ removeListenerFilter("PrimaryView"); //$NON-NLS-1$ >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void handleNotificationEvent(Notification event) { >+ Object feature = event.getFeature(); >+ if (NotationPackage.eINSTANCE.getFontStyle_FontColor().equals(feature)) { >+ Integer c = (Integer) event.getNewValue(); >+ setFontColor(DiagramColorRegistry.getInstance().getColor(c)); >+ } else if (NotationPackage.eINSTANCE.getFontStyle_Underline().equals(feature)) { >+ refreshUnderline(); >+ } else if (NotationPackage.eINSTANCE.getFontStyle_StrikeThrough().equals(feature)) { >+ refreshStrikeThrough(); >+ } else if (NotationPackage.eINSTANCE.getFontStyle_FontHeight().equals(feature) || NotationPackage.eINSTANCE.getFontStyle_FontName().equals(feature) >+ || NotationPackage.eINSTANCE.getFontStyle_Bold().equals(feature) || NotationPackage.eINSTANCE.getFontStyle_Italic().equals(feature)) { >+ refreshFont(); >+ } else { >+ if (getParser() != null && getParser().isAffectingEvent(event, getParserOptions().intValue())) { >+ refreshLabel(); >+ } >+ if (getParser() instanceof ISemanticParser) { >+ ISemanticParser modelParser = (ISemanticParser) getParser(); >+ if (modelParser.areSemanticElementsAffected(null, event)) { >+ removeSemanticListeners(); >+ if (resolveSemanticElement() != null) { >+ addSemanticListeners(); >+ } >+ refreshLabel(); >+ } >+ } >+ } >+ super.handleNotificationEvent(event); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected IFigure createFigure() { >+ // Parent should assign one using setLabel method >+ return null; >+ } >+} >Index: src/org/eclipse/uml2/diagram/component/edit/parts/ClassNameEditPart.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/component/edit/parts/ClassNameEditPart.java >diff -N src/org/eclipse/uml2/diagram/component/edit/parts/ClassNameEditPart.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/component/edit/parts/ClassNameEditPart.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,567 @@ >+package org.eclipse.uml2.diagram.component.edit.parts; >+ >+import java.util.ArrayList; >+import java.util.List; >+import org.eclipse.gef.EditPolicy; >+import org.eclipse.gef.GraphicalEditPart; >+import org.eclipse.gef.Request; >+import org.eclipse.gef.commands.Command; >+import org.eclipse.gef.editpolicies.NonResizableEditPolicy; >+import org.eclipse.gef.handles.NonResizableHandleKit; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.ITextAwareEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.LabelDirectEditPolicy; >+import org.eclipse.gmf.runtime.notation.View; >+import java.util.Collections; >+ >+import org.eclipse.draw2d.IFigure; >+import org.eclipse.draw2d.Label; >+ >+import org.eclipse.draw2d.geometry.Point; >+ >+import org.eclipse.emf.common.notify.Notification; >+ >+import org.eclipse.emf.ecore.EObject; >+ >+import org.eclipse.emf.transaction.RunnableWithResult; >+ >+import org.eclipse.gef.AccessibleEditPart; >+ >+import org.eclipse.gef.requests.DirectEditRequest; >+ >+import org.eclipse.gef.tools.DirectEditManager; >+ >+import org.eclipse.gmf.runtime.common.ui.services.parser.IParser; >+import org.eclipse.gmf.runtime.common.ui.services.parser.IParserEditStatus; >+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserEditStatus; >+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserOptions; >+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserService; >+ >+import org.eclipse.gmf.runtime.diagram.ui.editparts.CompartmentEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart; >+ >+import org.eclipse.gmf.runtime.diagram.ui.l10n.DiagramColorRegistry; >+ >+import org.eclipse.gmf.runtime.diagram.ui.requests.RequestConstants; >+ >+import org.eclipse.gmf.runtime.diagram.ui.tools.TextDirectEditManager; >+ >+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel; >+ >+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter; >+ >+import org.eclipse.gmf.runtime.emf.type.core.IElementType; >+ >+import org.eclipse.gmf.runtime.emf.ui.services.parser.ISemanticParser; >+import org.eclipse.gmf.runtime.emf.ui.services.parser.ParserHintAdapter; >+ >+import org.eclipse.gmf.runtime.notation.FontStyle; >+import org.eclipse.gmf.runtime.notation.NotationPackage; >+ >+import org.eclipse.jface.text.contentassist.IContentAssistProcessor; >+ >+import org.eclipse.jface.viewers.ICellEditorValidator; >+ >+import org.eclipse.swt.SWT; >+ >+import org.eclipse.swt.accessibility.AccessibleEvent; >+ >+import org.eclipse.swt.graphics.Color; >+import org.eclipse.swt.graphics.FontData; >+import org.eclipse.swt.graphics.Image; >+import org.eclipse.uml2.diagram.component.edit.policies.UMLTextSelectionEditPolicy; >+import org.eclipse.uml2.diagram.component.providers.UMLElementTypes; >+ >+/** >+ * @generated >+ */ >+public class ClassNameEditPart extends CompartmentEditPart implements ITextAwareEditPart { >+ >+ /** >+ * @generated >+ */ >+ public static final int VISUAL_ID = 5007; >+ >+ /** >+ * @generated >+ */ >+ private DirectEditManager manager; >+ >+ /** >+ * @generated >+ */ >+ private IParser parser; >+ >+ /** >+ * @generated >+ */ >+ private List parserElements; >+ >+ /** >+ * @generated >+ */ >+ private String defaultText; >+ >+ /** >+ * @generated >+ */ >+ public ClassNameEditPart(View view) { >+ super(view); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void createDefaultEditPolicies() { >+ super.createDefaultEditPolicies(); >+ installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE, new LabelDirectEditPolicy()); >+ installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE, new NonResizableEditPolicy() { >+ >+ protected List createSelectionHandles() { >+ List handles = new ArrayList(); >+ NonResizableHandleKit.addMoveHandle((GraphicalEditPart) getHost(), handles); >+ return handles; >+ } >+ >+ public Command getCommand(Request request) { >+ return null; >+ } >+ >+ public boolean understandsRequest(Request request) { >+ return false; >+ } >+ }); >+ >+ } >+ >+ /** >+ * @generated >+ */ >+ protected String getLabelTextHelper(IFigure figure) { >+ if (figure instanceof WrapLabel) { >+ return ((WrapLabel) figure).getText(); >+ } else { >+ return ((Label) figure).getText(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setLabelTextHelper(IFigure figure, String text) { >+ if (figure instanceof WrapLabel) { >+ ((WrapLabel) figure).setText(text); >+ } else { >+ ((Label) figure).setText(text); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Image getLabelIconHelper(IFigure figure) { >+ if (figure instanceof WrapLabel) { >+ return ((WrapLabel) figure).getIcon(); >+ } else { >+ return ((Label) figure).getIcon(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setLabelIconHelper(IFigure figure, Image icon) { >+ if (figure instanceof WrapLabel) { >+ ((WrapLabel) figure).setIcon(icon); >+ } else { >+ ((Label) figure).setIcon(icon); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ public void setLabel(WrapLabel figure) { >+ unregisterVisuals(); >+ setFigure(figure); >+ defaultText = getLabelTextHelper(figure); >+ registerVisuals(); >+ refreshVisuals(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected List getModelChildren() { >+ return Collections.EMPTY_LIST; >+ } >+ >+ /** >+ * @generated >+ */ >+ public IGraphicalEditPart getChildBySemanticHint(String semanticHint) { >+ return null; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject getParserElement() { >+ EObject element = resolveSemanticElement(); >+ return element != null ? element : (View) getModel(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Image getLabelIcon() { >+ return null; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected String getLabelText() { >+ String text = null; >+ if (getParser() != null) { >+ text = getParser().getPrintString(new EObjectAdapter(getParserElement()), getParserOptions().intValue()); >+ } >+ if (text == null || text.length() == 0) { >+ text = defaultText; >+ } >+ return text; >+ } >+ >+ /** >+ * @generated >+ */ >+ public void setLabelText(String text) { >+ setLabelTextHelper(getFigure(), text); >+ Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE); >+ if (pdEditPolicy instanceof UMLTextSelectionEditPolicy) { >+ ((UMLTextSelectionEditPolicy) pdEditPolicy).refreshFeedback(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ public String getEditText() { >+ if (getParser() == null) { >+ return ""; //$NON-NLS-1$ >+ } >+ return getParser().getEditString(new EObjectAdapter(getParserElement()), getParserOptions().intValue()); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected boolean isEditable() { >+ return getEditText() != null; >+ } >+ >+ /** >+ * @generated >+ */ >+ public ICellEditorValidator getEditTextValidator() { >+ return new ICellEditorValidator() { >+ >+ public String isValid(final Object value) { >+ if (value instanceof String) { >+ final EObject element = getParserElement(); >+ final IParser parser = getParser(); >+ try { >+ IParserEditStatus valid = (IParserEditStatus) getEditingDomain().runExclusive(new RunnableWithResult.Impl() { >+ >+ public void run() { >+ setResult(parser.isValidEditString(new EObjectAdapter(element), (String) value)); >+ } >+ }); >+ return valid.getCode() == ParserEditStatus.EDITABLE ? null : valid.getMessage(); >+ } catch (InterruptedException ie) { >+ ie.printStackTrace(); >+ } >+ } >+ >+ // shouldn't get here >+ return null; >+ } >+ }; >+ } >+ >+ /** >+ * @generated >+ */ >+ public IContentAssistProcessor getCompletionProcessor() { >+ if (getParser() == null) { >+ return null; >+ } >+ return getParser().getCompletionProcessor(new EObjectAdapter(getParserElement())); >+ } >+ >+ /** >+ * @generated >+ */ >+ public ParserOptions getParserOptions() { >+ return ParserOptions.NONE; >+ } >+ >+ /** >+ * @generated >+ */ >+ public IParser getParser() { >+ if (parser == null) { >+ String parserHint = ((View) getModel()).getType(); >+ ParserHintAdapter hintAdapter = new ParserHintAdapter(getParserElement(), parserHint) { >+ >+ public Object getAdapter(Class adapter) { >+ if (IElementType.class.equals(adapter)) { >+ return UMLElementTypes.Class_3004; >+ } >+ return super.getAdapter(adapter); >+ } >+ }; >+ parser = ParserService.getInstance().getParser(hintAdapter); >+ } >+ return parser; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected DirectEditManager getManager() { >+ if (manager == null) { >+ setManager(new TextDirectEditManager(this, TextDirectEditManager.getTextCellEditorClass(this), UMLEditPartFactory.getTextCellEditorLocator(this))); >+ } >+ return manager; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setManager(DirectEditManager manager) { >+ this.manager = manager; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void performDirectEdit() { >+ getManager().show(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void performDirectEdit(Point eventLocation) { >+ if (getManager().getClass() == TextDirectEditManager.class) { >+ ((TextDirectEditManager) getManager()).show(eventLocation.getSWTPoint()); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ private void performDirectEdit(char initialCharacter) { >+ if (getManager() instanceof TextDirectEditManager) { >+ ((TextDirectEditManager) getManager()).show(initialCharacter); >+ } else { >+ performDirectEdit(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void performDirectEditRequest(Request request) { >+ final Request theRequest = request; >+ try { >+ getEditingDomain().runExclusive(new Runnable() { >+ >+ public void run() { >+ if (isActive() && isEditable()) { >+ if (theRequest.getExtendedData().get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR) instanceof Character) { >+ Character initialChar = (Character) theRequest.getExtendedData().get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR); >+ performDirectEdit(initialChar.charValue()); >+ } else if ((theRequest instanceof DirectEditRequest) && (getEditText().equals(getLabelText()))) { >+ DirectEditRequest editRequest = (DirectEditRequest) theRequest; >+ performDirectEdit(editRequest.getLocation()); >+ } else { >+ performDirectEdit(); >+ } >+ } >+ } >+ }); >+ } catch (InterruptedException e) { >+ e.printStackTrace(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshVisuals() { >+ super.refreshVisuals(); >+ refreshLabel(); >+ refreshFont(); >+ refreshFontColor(); >+ refreshUnderline(); >+ refreshStrikeThrough(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshLabel() { >+ setLabelTextHelper(getFigure(), getLabelText()); >+ setLabelIconHelper(getFigure(), getLabelIcon()); >+ Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE); >+ if (pdEditPolicy instanceof UMLTextSelectionEditPolicy) { >+ ((UMLTextSelectionEditPolicy) pdEditPolicy).refreshFeedback(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshUnderline() { >+ FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle()); >+ if (style != null && getFigure() instanceof WrapLabel) { >+ ((WrapLabel) getFigure()).setTextUnderline(style.isUnderline()); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshStrikeThrough() { >+ FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle()); >+ if (style != null && getFigure() instanceof WrapLabel) { >+ ((WrapLabel) getFigure()).setTextStrikeThrough(style.isStrikeThrough()); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshFont() { >+ FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle()); >+ if (style != null) { >+ FontData fontData = new FontData(style.getFontName(), style.getFontHeight(), (style.isBold() ? SWT.BOLD : SWT.NORMAL) | (style.isItalic() ? SWT.ITALIC : SWT.NORMAL)); >+ setFont(fontData); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setFontColor(Color color) { >+ getFigure().setForegroundColor(color); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void addSemanticListeners() { >+ if (getParser() instanceof ISemanticParser) { >+ EObject element = resolveSemanticElement(); >+ parserElements = ((ISemanticParser) getParser()).getSemanticElementsBeingParsed(element); >+ for (int i = 0; i < parserElements.size(); i++) { >+ addListenerFilter("SemanticModel" + i, this, (EObject) parserElements.get(i)); //$NON-NLS-1$ >+ } >+ } else { >+ super.addSemanticListeners(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void removeSemanticListeners() { >+ if (parserElements != null) { >+ for (int i = 0; i < parserElements.size(); i++) { >+ removeListenerFilter("SemanticModel" + i); //$NON-NLS-1$ >+ } >+ } else { >+ super.removeSemanticListeners(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected AccessibleEditPart getAccessibleEditPart() { >+ if (accessibleEP == null) { >+ accessibleEP = new AccessibleGraphicalEditPart() { >+ >+ public void getName(AccessibleEvent e) { >+ e.result = getLabelTextHelper(getFigure()); >+ } >+ }; >+ } >+ return accessibleEP; >+ } >+ >+ /** >+ * @generated >+ */ >+ private View getFontStyleOwnerView() { >+ return getPrimaryView(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void addNotationalListeners() { >+ super.addNotationalListeners(); >+ addListenerFilter("PrimaryView", this, getPrimaryView()); //$NON-NLS-1$ >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void removeNotationalListeners() { >+ super.removeNotationalListeners(); >+ removeListenerFilter("PrimaryView"); //$NON-NLS-1$ >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void handleNotificationEvent(Notification event) { >+ Object feature = event.getFeature(); >+ if (NotationPackage.eINSTANCE.getFontStyle_FontColor().equals(feature)) { >+ Integer c = (Integer) event.getNewValue(); >+ setFontColor(DiagramColorRegistry.getInstance().getColor(c)); >+ } else if (NotationPackage.eINSTANCE.getFontStyle_Underline().equals(feature)) { >+ refreshUnderline(); >+ } else if (NotationPackage.eINSTANCE.getFontStyle_StrikeThrough().equals(feature)) { >+ refreshStrikeThrough(); >+ } else if (NotationPackage.eINSTANCE.getFontStyle_FontHeight().equals(feature) || NotationPackage.eINSTANCE.getFontStyle_FontName().equals(feature) >+ || NotationPackage.eINSTANCE.getFontStyle_Bold().equals(feature) || NotationPackage.eINSTANCE.getFontStyle_Italic().equals(feature)) { >+ refreshFont(); >+ } else { >+ if (getParser() != null && getParser().isAffectingEvent(event, getParserOptions().intValue())) { >+ refreshLabel(); >+ } >+ if (getParser() instanceof ISemanticParser) { >+ ISemanticParser modelParser = (ISemanticParser) getParser(); >+ if (modelParser.areSemanticElementsAffected(null, event)) { >+ removeSemanticListeners(); >+ if (resolveSemanticElement() != null) { >+ addSemanticListeners(); >+ } >+ refreshLabel(); >+ } >+ } >+ } >+ super.handleNotificationEvent(event); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected IFigure createFigure() { >+ // Parent should assign one using setLabel method >+ return null; >+ } >+} >Index: src/org/eclipse/uml2/diagram/component/edit/policies/PortItemSemanticEditPolicy.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/component/edit/policies/PortItemSemanticEditPolicy.java >diff -N src/org/eclipse/uml2/diagram/component/edit/policies/PortItemSemanticEditPolicy.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/component/edit/policies/PortItemSemanticEditPolicy.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,73 @@ >+package org.eclipse.uml2.diagram.component.edit.policies; >+ >+import org.eclipse.gef.commands.Command; >+import org.eclipse.gmf.runtime.emf.type.core.commands.DestroyElementCommand; >+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateRelationshipRequest; >+import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest; >+import org.eclipse.emf.ecore.EObject; >+import org.eclipse.emf.ecore.EAnnotation; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.gef.commands.UnexecutableCommand; >+ >+import org.eclipse.uml2.diagram.component.providers.UMLElementTypes; >+ >+/** >+ * @generated >+ */ >+public class PortItemSemanticEditPolicy extends UMLBaseItemSemanticEditPolicy { >+ >+ /** >+ * @generated >+ */ >+ protected Command getDestroyElementCommand(DestroyElementRequest req) { >+ return getMSLWrapper(new DestroyElementCommand(req) { >+ >+ protected EObject getElementToDestroy() { >+ View view = (View) getHost().getModel(); >+ EAnnotation annotation = view.getEAnnotation("Shortcut"); //$NON-NLS-1$ >+ if (annotation != null) { >+ return view; >+ } >+ return super.getElementToDestroy(); >+ } >+ >+ }); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateRelationshipCommand(CreateRelationshipRequest req) { >+ if (UMLElementTypes.PortProvided_4006 == req.getElementType()) { >+ return req.getTarget() == null ? getCreateStartOutgoingPort_Provided4006Command(req) : null; >+ } >+ if (UMLElementTypes.PortRequired_4004 == req.getElementType()) { >+ return req.getTarget() == null ? getCreateStartOutgoingPort_Required4004Command(req) : null; >+ } >+ return super.getCreateRelationshipCommand(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateStartOutgoingPort_Provided4006Command(CreateRelationshipRequest req) { >+ if (!UMLBaseItemSemanticEditPolicy.LinkConstraints.PortProvided_4006.canCreateLink(req, false)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ >+ return new Command() { >+ }; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateStartOutgoingPort_Required4004Command(CreateRelationshipRequest req) { >+ if (!UMLBaseItemSemanticEditPolicy.LinkConstraints.PortRequired_4004.canCreateLink(req, false)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ >+ return new Command() { >+ }; >+ } >+} >Index: src/org/eclipse/uml2/diagram/component/view/factories/InterfaceName2ViewFactory.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/component/view/factories/InterfaceName2ViewFactory.java >diff -N src/org/eclipse/uml2/diagram/component/view/factories/InterfaceName2ViewFactory.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/component/view/factories/InterfaceName2ViewFactory.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,40 @@ >+package org.eclipse.uml2.diagram.component.view.factories; >+ >+import java.util.ArrayList; >+import java.util.List; >+import org.eclipse.core.runtime.IAdaptable; >+import org.eclipse.gmf.runtime.diagram.core.preferences.PreferencesHint; >+import org.eclipse.gmf.runtime.diagram.ui.view.factories.AbstractLabelViewFactory; >+import org.eclipse.gmf.runtime.notation.Node; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.gmf.runtime.diagram.ui.util.MeasurementUnitHelper; >+ >+import org.eclipse.gmf.runtime.draw2d.ui.mapmode.IMapMode; >+ >+import org.eclipse.gmf.runtime.notation.Location; >+ >+/** >+ * @generated >+ */ >+public class InterfaceName2ViewFactory extends AbstractLabelViewFactory { >+ >+ /** >+ * @generated >+ */ >+ public View createView(IAdaptable semanticAdapter, View containerView, String semanticHint, int index, boolean persisted, PreferencesHint preferencesHint) { >+ Node view = (Node) super.createView(semanticAdapter, containerView, semanticHint, index, persisted, preferencesHint); >+ Location location = (Location) view.getLayoutConstraint(); >+ IMapMode mapMode = MeasurementUnitHelper.getMapMode(containerView.getDiagram().getMeasurementUnit()); >+ location.setX(mapMode.DPtoLP(0)); >+ location.setY(mapMode.DPtoLP(5)); >+ return view; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected List createStyles(View view) { >+ List styles = new ArrayList(); >+ return styles; >+ } >+} >Index: src/org/eclipse/uml2/diagram/component/part/UMLDiagramPreferenceInitializer.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/component/part/UMLDiagramPreferenceInitializer.java >diff -N src/org/eclipse/uml2/diagram/component/part/UMLDiagramPreferenceInitializer.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/component/part/UMLDiagramPreferenceInitializer.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,17 @@ >+package org.eclipse.uml2.diagram.component.part; >+ >+import org.eclipse.gmf.runtime.diagram.ui.preferences.DiagramPreferenceInitializer; >+import org.eclipse.jface.preference.IPreferenceStore; >+ >+/** >+ * @generated >+ */ >+public class UMLDiagramPreferenceInitializer extends DiagramPreferenceInitializer { >+ >+ /** >+ * @generated >+ */ >+ protected IPreferenceStore getPreferenceStore() { >+ return org.eclipse.uml2.diagram.component.part.UMLDiagramEditorPlugin.getInstance().getPreferenceStore(); >+ } >+} >Index: src/org/eclipse/uml2/diagram/component/navigator/UMLNavigatorGroup.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/component/navigator/UMLNavigatorGroup.java >diff -N src/org/eclipse/uml2/diagram/component/navigator/UMLNavigatorGroup.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/component/navigator/UMLNavigatorGroup.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,103 @@ >+package org.eclipse.uml2.diagram.component.navigator; >+ >+import java.util.Collection; >+import java.util.LinkedList; >+ >+/** >+ * @generated >+ */ >+public class UMLNavigatorGroup extends UMLAbstractNavigatorItem { >+ >+ /** >+ * @generated >+ */ >+ private String myGroupName; >+ >+ /** >+ * @generated >+ */ >+ private String myIcon; >+ >+ /** >+ * @generated >+ */ >+ private String myModelID; >+ >+ /** >+ * @generated >+ */ >+ private Collection myChildren = new LinkedList(); >+ >+ /** >+ * @generated >+ */ >+ UMLNavigatorGroup(String groupName, String icon, String modelID, Object parent) { >+ super(parent); >+ myGroupName = groupName; >+ myIcon = icon; >+ myModelID = modelID; >+ } >+ >+ /** >+ * @generated >+ */ >+ public String getGroupName() { >+ return myGroupName; >+ } >+ >+ /** >+ * @generated >+ */ >+ public String getIcon() { >+ return myIcon; >+ } >+ >+ /** >+ * @generated >+ */ >+ public Object[] getChildren() { >+ return myChildren.toArray(); >+ } >+ >+ /** >+ * @generated >+ */ >+ public void addChildren(Collection children) { >+ myChildren.addAll(children); >+ } >+ >+ /** >+ * @generated >+ */ >+ public void addChild(Object child) { >+ myChildren.add(child); >+ } >+ >+ /** >+ * @generated >+ */ >+ public boolean isEmpty() { >+ return myChildren.size() == 0; >+ } >+ >+ /** >+ * @generated >+ */ >+ public String getModelID() { >+ return myModelID; >+ } >+ >+ /** >+ * @generated >+ */ >+ public boolean equals(Object obj) { >+ if (obj instanceof UMLNavigatorGroup) { >+ UMLNavigatorGroup anotherGroup = (UMLNavigatorGroup) obj; >+ if (getGroupName().equals(anotherGroup.getGroupName())) { >+ return getParent().equals(anotherGroup.getParent()); >+ } >+ } >+ return super.equals(obj); >+ } >+ >+} >Index: src/org/eclipse/uml2/diagram/component/edit/helpers/PackageEditHelper.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/component/edit/helpers/PackageEditHelper.java >diff -N src/org/eclipse/uml2/diagram/component/edit/helpers/PackageEditHelper.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/component/edit/helpers/PackageEditHelper.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,7 @@ >+package org.eclipse.uml2.diagram.component.edit.helpers; >+ >+/** >+ * @generated >+ */ >+public class PackageEditHelper extends UMLBaseEditHelper { >+} >Index: src/org/eclipse/uml2/diagram/component/navigator/UMLNavigatorContentProvider.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/component/navigator/UMLNavigatorContentProvider.java >diff -N src/org/eclipse/uml2/diagram/component/navigator/UMLNavigatorContentProvider.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/component/navigator/UMLNavigatorContentProvider.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,409 @@ >+package org.eclipse.uml2.diagram.component.navigator; >+ >+import java.util.ArrayList; >+import java.util.Collection; >+import java.util.HashMap; >+import java.util.HashSet; >+import java.util.Iterator; >+import java.util.List; >+import java.util.Set; >+ >+import org.eclipse.core.resources.IFile; >+ >+import org.eclipse.emf.common.util.URI; >+ >+import org.eclipse.emf.ecore.resource.Resource; >+import org.eclipse.emf.ecore.resource.ResourceSet; >+ >+import org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain; >+ >+import org.eclipse.gmf.runtime.emf.core.GMFEditingDomainFactory; >+ >+import org.eclipse.gmf.runtime.notation.Edge; >+import org.eclipse.gmf.runtime.notation.Node; >+import org.eclipse.gmf.runtime.notation.View; >+ >+import org.eclipse.jface.viewers.Viewer; >+ >+import org.eclipse.ui.IMemento; >+ >+import org.eclipse.ui.navigator.ICommonContentExtensionSite; >+import org.eclipse.ui.navigator.ICommonContentProvider; >+import org.eclipse.uml2.diagram.component.edit.parts.Artifact2EditPart; >+import org.eclipse.uml2.diagram.component.edit.parts.ArtifactEditPart; >+import org.eclipse.uml2.diagram.component.edit.parts.Class2EditPart; >+import org.eclipse.uml2.diagram.component.edit.parts.ClassEditPart; >+import org.eclipse.uml2.diagram.component.edit.parts.Component2EditPart; >+import org.eclipse.uml2.diagram.component.edit.parts.ComponentEditPart; >+import org.eclipse.uml2.diagram.component.edit.parts.Interface2EditPart; >+import org.eclipse.uml2.diagram.component.edit.parts.InterfaceEditPart; >+import org.eclipse.uml2.diagram.component.edit.parts.InterfaceRealizationEditPart; >+import org.eclipse.uml2.diagram.component.edit.parts.PackageEditPart; >+import org.eclipse.uml2.diagram.component.edit.parts.PortEditPart; >+import org.eclipse.uml2.diagram.component.edit.parts.PortProvidedEditPart; >+import org.eclipse.uml2.diagram.component.edit.parts.PortRequiredEditPart; >+import org.eclipse.uml2.diagram.component.part.UMLVisualIDRegistry; >+ >+/** >+ * @generated >+ */ >+public class UMLNavigatorContentProvider implements ICommonContentProvider { >+ >+ /** >+ * @generated >+ */ >+ private static final Object[] EMPTY_ARRAY = new Object[0]; >+ >+ /** >+ * @generated >+ */ >+ public void dispose() { >+ } >+ >+ /** >+ * @generated >+ */ >+ public void inputChanged(Viewer viewer, Object oldInput, Object newInput) { >+ } >+ >+ /** >+ * @generated >+ */ >+ public Object[] getElements(Object inputElement) { >+ return getChildren(inputElement); >+ } >+ >+ /** >+ * @generated >+ */ >+ public Object[] getChildren(Object parentElement) { >+ if (parentElement instanceof UMLAbstractNavigatorItem) { >+ UMLAbstractNavigatorItem abstractNavigatorItem = (UMLAbstractNavigatorItem) parentElement; >+ if (!PackageEditPart.MODEL_ID.equals(abstractNavigatorItem.getModelID())) { >+ return EMPTY_ARRAY; >+ } >+ >+ if (abstractNavigatorItem instanceof UMLNavigatorItem) { >+ UMLNavigatorItem navigatorItem = (UMLNavigatorItem) abstractNavigatorItem; >+ switch (navigatorItem.getVisualID()) { >+ case ComponentEditPart.VISUAL_ID: { >+ Collection result = new ArrayList(); >+ result.addAll(getChildByType(navigatorItem.getView().getChildren(), UMLVisualIDRegistry.getType(Component2EditPart.VISUAL_ID), navigatorItem)); >+ result.addAll(getChildByType(navigatorItem.getView().getChildren(), UMLVisualIDRegistry.getType(PortEditPart.VISUAL_ID), navigatorItem)); >+ result.addAll(getChildByType(navigatorItem.getView().getChildren(), UMLVisualIDRegistry.getType(ArtifactEditPart.VISUAL_ID), navigatorItem)); >+ result.addAll(getChildByType(navigatorItem.getView().getChildren(), UMLVisualIDRegistry.getType(ClassEditPart.VISUAL_ID), navigatorItem)); >+ result.addAll(getChildByType(navigatorItem.getView().getChildren(), UMLVisualIDRegistry.getType(InterfaceEditPart.VISUAL_ID), navigatorItem)); >+ UMLNavigatorGroup outgoinglinks = new UMLNavigatorGroup("outgoing links", "icons/outgoingLinksNavigatorGroup.gif", PackageEditPart.MODEL_ID, navigatorItem); >+ outgoinglinks.addChildren(getConnectedViews(navigatorItem.getView(), UMLVisualIDRegistry.getType(InterfaceRealizationEditPart.VISUAL_ID), true, outgoinglinks)); >+ if (!outgoinglinks.isEmpty()) { >+ result.add(outgoinglinks); >+ } >+ return result.toArray(); >+ } >+ case Interface2EditPart.VISUAL_ID: { >+ Collection result = new ArrayList(); >+ UMLNavigatorGroup incominglinks = new UMLNavigatorGroup("incoming links", "icons/incomingLinksNavigatorGroup.gif", PackageEditPart.MODEL_ID, navigatorItem); >+ incominglinks.addChildren(getConnectedViews(navigatorItem.getView(), UMLVisualIDRegistry.getType(InterfaceRealizationEditPart.VISUAL_ID), false, incominglinks)); >+ incominglinks.addChildren(getConnectedViews(navigatorItem.getView(), UMLVisualIDRegistry.getType(PortProvidedEditPart.VISUAL_ID), false, incominglinks)); >+ incominglinks.addChildren(getConnectedViews(navigatorItem.getView(), UMLVisualIDRegistry.getType(PortRequiredEditPart.VISUAL_ID), false, incominglinks)); >+ if (!incominglinks.isEmpty()) { >+ result.add(incominglinks); >+ } >+ return result.toArray(); >+ } >+ case Class2EditPart.VISUAL_ID: { >+ Collection result = new ArrayList(); >+ result.addAll(getChildByType(navigatorItem.getView().getChildren(), UMLVisualIDRegistry.getType(PortEditPart.VISUAL_ID), navigatorItem)); >+ UMLNavigatorGroup outgoinglinks = new UMLNavigatorGroup("outgoing links", "icons/outgoingLinksNavigatorGroup.gif", PackageEditPart.MODEL_ID, navigatorItem); >+ outgoinglinks.addChildren(getConnectedViews(navigatorItem.getView(), UMLVisualIDRegistry.getType(InterfaceRealizationEditPart.VISUAL_ID), true, outgoinglinks)); >+ if (!outgoinglinks.isEmpty()) { >+ result.add(outgoinglinks); >+ } >+ return result.toArray(); >+ } >+ case Component2EditPart.VISUAL_ID: { >+ Collection result = new ArrayList(); >+ result.addAll(getChildByType(navigatorItem.getView().getChildren(), UMLVisualIDRegistry.getType(Component2EditPart.VISUAL_ID), navigatorItem)); >+ result.addAll(getChildByType(navigatorItem.getView().getChildren(), UMLVisualIDRegistry.getType(PortEditPart.VISUAL_ID), navigatorItem)); >+ result.addAll(getChildByType(navigatorItem.getView().getChildren(), UMLVisualIDRegistry.getType(ArtifactEditPart.VISUAL_ID), navigatorItem)); >+ result.addAll(getChildByType(navigatorItem.getView().getChildren(), UMLVisualIDRegistry.getType(ClassEditPart.VISUAL_ID), navigatorItem)); >+ result.addAll(getChildByType(navigatorItem.getView().getChildren(), UMLVisualIDRegistry.getType(InterfaceEditPart.VISUAL_ID), navigatorItem)); >+ UMLNavigatorGroup outgoinglinks = new UMLNavigatorGroup("outgoing links", "icons/outgoingLinksNavigatorGroup.gif", PackageEditPart.MODEL_ID, navigatorItem); >+ outgoinglinks.addChildren(getConnectedViews(navigatorItem.getView(), UMLVisualIDRegistry.getType(InterfaceRealizationEditPart.VISUAL_ID), true, outgoinglinks)); >+ if (!outgoinglinks.isEmpty()) { >+ result.add(outgoinglinks); >+ } >+ return result.toArray(); >+ } >+ case PortEditPart.VISUAL_ID: { >+ Collection result = new ArrayList(); >+ UMLNavigatorGroup outgoinglinks = new UMLNavigatorGroup("outgoing links", "icons/outgoingLinksNavigatorGroup.gif", PackageEditPart.MODEL_ID, navigatorItem); >+ outgoinglinks.addChildren(getConnectedViews(navigatorItem.getView(), UMLVisualIDRegistry.getType(PortProvidedEditPart.VISUAL_ID), true, outgoinglinks)); >+ outgoinglinks.addChildren(getConnectedViews(navigatorItem.getView(), UMLVisualIDRegistry.getType(PortRequiredEditPart.VISUAL_ID), true, outgoinglinks)); >+ if (!outgoinglinks.isEmpty()) { >+ result.add(outgoinglinks); >+ } >+ return result.toArray(); >+ } >+ case ClassEditPart.VISUAL_ID: { >+ Collection result = new ArrayList(); >+ result.addAll(getChildByType(navigatorItem.getView().getChildren(), UMLVisualIDRegistry.getType(PortEditPart.VISUAL_ID), navigatorItem)); >+ UMLNavigatorGroup outgoinglinks = new UMLNavigatorGroup("outgoing links", "icons/outgoingLinksNavigatorGroup.gif", PackageEditPart.MODEL_ID, navigatorItem); >+ outgoinglinks.addChildren(getConnectedViews(navigatorItem.getView(), UMLVisualIDRegistry.getType(InterfaceRealizationEditPart.VISUAL_ID), true, outgoinglinks)); >+ if (!outgoinglinks.isEmpty()) { >+ result.add(outgoinglinks); >+ } >+ return result.toArray(); >+ } >+ case InterfaceEditPart.VISUAL_ID: { >+ Collection result = new ArrayList(); >+ UMLNavigatorGroup incominglinks = new UMLNavigatorGroup("incoming links", "icons/incomingLinksNavigatorGroup.gif", PackageEditPart.MODEL_ID, navigatorItem); >+ incominglinks.addChildren(getConnectedViews(navigatorItem.getView(), UMLVisualIDRegistry.getType(InterfaceRealizationEditPart.VISUAL_ID), false, incominglinks)); >+ incominglinks.addChildren(getConnectedViews(navigatorItem.getView(), UMLVisualIDRegistry.getType(PortProvidedEditPart.VISUAL_ID), false, incominglinks)); >+ incominglinks.addChildren(getConnectedViews(navigatorItem.getView(), UMLVisualIDRegistry.getType(PortRequiredEditPart.VISUAL_ID), false, incominglinks)); >+ if (!incominglinks.isEmpty()) { >+ result.add(incominglinks); >+ } >+ return result.toArray(); >+ } >+ case PackageEditPart.VISUAL_ID: { >+ Collection result = new ArrayList(); >+ result.addAll(getChildByType(navigatorItem.getView().getChildren(), UMLVisualIDRegistry.getType(ComponentEditPart.VISUAL_ID), navigatorItem)); >+ result.addAll(getChildByType(navigatorItem.getView().getChildren(), UMLVisualIDRegistry.getType(Artifact2EditPart.VISUAL_ID), navigatorItem)); >+ result.addAll(getChildByType(navigatorItem.getView().getChildren(), UMLVisualIDRegistry.getType(Interface2EditPart.VISUAL_ID), navigatorItem)); >+ result.addAll(getChildByType(navigatorItem.getView().getChildren(), UMLVisualIDRegistry.getType(Class2EditPart.VISUAL_ID), navigatorItem)); >+ UMLNavigatorGroup links = new UMLNavigatorGroup("links", "icons/linksNavigatorGroup.gif", PackageEditPart.MODEL_ID, navigatorItem); >+ links.addChildren(getViewByType(navigatorItem.getView().getDiagram().getEdges(), UMLVisualIDRegistry.getType(InterfaceRealizationEditPart.VISUAL_ID), links)); >+ links.addChildren(getViewByType(navigatorItem.getView().getDiagram().getEdges(), UMLVisualIDRegistry.getType(PortProvidedEditPart.VISUAL_ID), links)); >+ links.addChildren(getViewByType(navigatorItem.getView().getDiagram().getEdges(), UMLVisualIDRegistry.getType(PortRequiredEditPart.VISUAL_ID), links)); >+ if (!links.isEmpty()) { >+ result.add(links); >+ } >+ return result.toArray(); >+ } >+ case InterfaceRealizationEditPart.VISUAL_ID: { >+ Collection result = new ArrayList(); >+ UMLNavigatorGroup target = new UMLNavigatorGroup("target", "icons/linkTargetNavigatorGroup.gif", PackageEditPart.MODEL_ID, navigatorItem); >+ target.addChildren(getConnectedViews(navigatorItem.getView(), UMLVisualIDRegistry.getType(Interface2EditPart.VISUAL_ID), true, target)); >+ target.addChildren(getConnectedViews(navigatorItem.getView(), UMLVisualIDRegistry.getType(InterfaceEditPart.VISUAL_ID), true, target)); >+ UMLNavigatorGroup source = new UMLNavigatorGroup("source", "icons/linkSourceNavigatorGroup.gif", PackageEditPart.MODEL_ID, navigatorItem); >+ source.addChildren(getConnectedViews(navigatorItem.getView(), UMLVisualIDRegistry.getType(ComponentEditPart.VISUAL_ID), false, source)); >+ source.addChildren(getConnectedViews(navigatorItem.getView(), UMLVisualIDRegistry.getType(Class2EditPart.VISUAL_ID), false, source)); >+ source.addChildren(getConnectedViews(navigatorItem.getView(), UMLVisualIDRegistry.getType(Component2EditPart.VISUAL_ID), false, source)); >+ source.addChildren(getConnectedViews(navigatorItem.getView(), UMLVisualIDRegistry.getType(ClassEditPart.VISUAL_ID), false, source)); >+ if (!target.isEmpty()) { >+ result.add(target); >+ } >+ if (!source.isEmpty()) { >+ result.add(source); >+ } >+ return result.toArray(); >+ } >+ case PortProvidedEditPart.VISUAL_ID: { >+ Collection result = new ArrayList(); >+ UMLNavigatorGroup target = new UMLNavigatorGroup("target", "icons/linkTargetNavigatorGroup.gif", PackageEditPart.MODEL_ID, navigatorItem); >+ target.addChildren(getConnectedViews(navigatorItem.getView(), UMLVisualIDRegistry.getType(Interface2EditPart.VISUAL_ID), true, target)); >+ target.addChildren(getConnectedViews(navigatorItem.getView(), UMLVisualIDRegistry.getType(InterfaceEditPart.VISUAL_ID), true, target)); >+ UMLNavigatorGroup source = new UMLNavigatorGroup("source", "icons/linkSourceNavigatorGroup.gif", PackageEditPart.MODEL_ID, navigatorItem); >+ source.addChildren(getConnectedViews(navigatorItem.getView(), UMLVisualIDRegistry.getType(PortEditPart.VISUAL_ID), false, source)); >+ if (!target.isEmpty()) { >+ result.add(target); >+ } >+ if (!source.isEmpty()) { >+ result.add(source); >+ } >+ return result.toArray(); >+ } >+ case PortRequiredEditPart.VISUAL_ID: { >+ Collection result = new ArrayList(); >+ UMLNavigatorGroup target = new UMLNavigatorGroup("target", "icons/linkTargetNavigatorGroup.gif", PackageEditPart.MODEL_ID, navigatorItem); >+ target.addChildren(getConnectedViews(navigatorItem.getView(), UMLVisualIDRegistry.getType(Interface2EditPart.VISUAL_ID), true, target)); >+ target.addChildren(getConnectedViews(navigatorItem.getView(), UMLVisualIDRegistry.getType(InterfaceEditPart.VISUAL_ID), true, target)); >+ UMLNavigatorGroup source = new UMLNavigatorGroup("source", "icons/linkSourceNavigatorGroup.gif", PackageEditPart.MODEL_ID, navigatorItem); >+ source.addChildren(getConnectedViews(navigatorItem.getView(), UMLVisualIDRegistry.getType(PortEditPart.VISUAL_ID), false, source)); >+ if (!target.isEmpty()) { >+ result.add(target); >+ } >+ if (!source.isEmpty()) { >+ result.add(source); >+ } >+ return result.toArray(); >+ } >+ } >+ } else if (abstractNavigatorItem instanceof UMLNavigatorGroup) { >+ UMLNavigatorGroup group = (UMLNavigatorGroup) parentElement; >+ return group.getChildren(); >+ } >+ } else if (parentElement instanceof IFile) { >+ IFile file = (IFile) parentElement; >+ AdapterFactoryEditingDomain editingDomain = (AdapterFactoryEditingDomain) GMFEditingDomainFactory.INSTANCE.createEditingDomain(); >+ editingDomain.setResourceToReadOnlyMap(new HashMap() { >+ >+ public Object get(Object key) { >+ if (!containsKey(key)) { >+ put(key, Boolean.TRUE); >+ } >+ return super.get(key); >+ } >+ }); >+ ResourceSet resourceSet = editingDomain.getResourceSet(); >+ >+ URI fileURI = URI.createPlatformResourceURI(file.getFullPath().toString()); >+ Resource resource = resourceSet.getResource(fileURI, true); >+ >+ Collection result = new ArrayList(); >+ result.addAll(getViewByType(resource.getContents(), PackageEditPart.MODEL_ID, file)); >+ return result.toArray(); >+ } >+ return EMPTY_ARRAY; >+ } >+ >+ /** >+ * @generated >+ */ >+ public Object getParent(Object element) { >+ if (element instanceof UMLAbstractNavigatorItem) { >+ UMLAbstractNavigatorItem abstractNavigatorItem = (UMLAbstractNavigatorItem) element; >+ if (!PackageEditPart.MODEL_ID.equals(abstractNavigatorItem.getModelID())) { >+ return null; >+ } >+ return abstractNavigatorItem.getParent(); >+ } >+ return null; >+ } >+ >+ /** >+ * @generated >+ */ >+ public boolean hasChildren(Object element) { >+ return element instanceof IFile || getChildren(element).length > 0; >+ } >+ >+ /** >+ * @generated >+ */ >+ public void init(ICommonContentExtensionSite aConfig) { >+ } >+ >+ /** >+ * @generated >+ */ >+ public void restoreState(IMemento aMemento) { >+ } >+ >+ /** >+ * @generated >+ */ >+ public void saveState(IMemento aMemento) { >+ } >+ >+ /** >+ * @generated >+ */ >+ private Collection getViewByType(Collection childViews, String type, Object parent) { >+ Collection result = new ArrayList(); >+ for (Iterator it = childViews.iterator(); it.hasNext();) { >+ Object next = it.next(); >+ if (false == next instanceof View) { >+ continue; >+ } >+ View nextView = (View) next; >+ if (type.equals(nextView.getType())) { >+ result.add(new UMLNavigatorItem(nextView, parent)); >+ } >+ } >+ return result; >+ } >+ >+ /** >+ * @generated >+ */ >+ private Collection getChildByType(Collection childViews, String type, Object parent) { >+ Collection result = new ArrayList(); >+ List children = new ArrayList(childViews); >+ for (int i = 0; i < children.size(); i++) { >+ if (false == children.get(i) instanceof View) { >+ continue; >+ } >+ View nextChild = (View) children.get(i); >+ if (type.equals(nextChild.getType())) { >+ result.add(new UMLNavigatorItem(nextChild, parent)); >+ } else if (!stopGettingChildren(nextChild, type)) { >+ children.addAll(nextChild.getChildren()); >+ } >+ } >+ return result; >+ } >+ >+ /** >+ * @generated >+ */ >+ private boolean stopGettingChildren(View child, String type) { >+ return false; >+ } >+ >+ /** >+ * @generated >+ */ >+ private Collection getConnectedViews(View rootView, String type, boolean isOutTarget, Object parent) { >+ Collection result = new ArrayList(); >+ List connectedViews = new ArrayList(); >+ connectedViews.add(rootView); >+ Set visitedViews = new HashSet(); >+ for (int i = 0; i < connectedViews.size(); i++) { >+ View nextView = (View) connectedViews.get(i); >+ if (visitedViews.contains(nextView)) { >+ continue; >+ } >+ visitedViews.add(nextView); >+ if (type.equals(nextView.getType()) && nextView != rootView) { >+ result.add(new UMLNavigatorItem(nextView, parent)); >+ } else { >+ if (isOutTarget && !stopGettingOutTarget(nextView, rootView, type)) { >+ connectedViews.addAll(nextView.getSourceEdges()); >+ if (nextView instanceof Edge) { >+ connectedViews.add(((Edge) nextView).getTarget()); >+ } >+ } >+ if (!isOutTarget && !stopGettingInSource(nextView, rootView, type)) { >+ connectedViews.addAll(nextView.getTargetEdges()); >+ if (nextView instanceof Edge) { >+ connectedViews.add(((Edge) nextView).getSource()); >+ } >+ } >+ } >+ } >+ return result; >+ } >+ >+ /** >+ * @generated >+ */ >+ private boolean stopGettingInSource(View nextView, View rootView, String type) { >+ return !isOneHopConnection(nextView, rootView); >+ } >+ >+ /** >+ * @generated >+ */ >+ private boolean stopGettingOutTarget(View nextView, View rootView, String type) { >+ return !isOneHopConnection(nextView, rootView); >+ } >+ >+ /** >+ * @generated >+ */ >+ private boolean isOneHopConnection(View targetView, View sourceView) { >+ if (sourceView == targetView) { >+ return true; >+ } >+ if (sourceView instanceof Node) { >+ return targetView instanceof Edge; >+ } >+ if (sourceView instanceof Edge) { >+ return targetView instanceof Node; >+ } >+ return false; >+ } >+ >+} >Index: src/org/eclipse/uml2/diagram/component/edit/commands/UMLReorientConnectionViewCommand.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/component/edit/commands/UMLReorientConnectionViewCommand.java >diff -N src/org/eclipse/uml2/diagram/component/edit/commands/UMLReorientConnectionViewCommand.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/component/edit/commands/UMLReorientConnectionViewCommand.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,69 @@ >+package org.eclipse.uml2.diagram.component.edit.commands; >+ >+import java.util.List; >+ >+import org.eclipse.core.runtime.IAdaptable; >+import org.eclipse.core.runtime.IProgressMonitor; >+import org.eclipse.emf.transaction.TransactionalEditingDomain; >+import org.eclipse.gmf.runtime.common.core.command.CommandResult; >+import org.eclipse.gmf.runtime.emf.commands.core.command.AbstractTransactionalCommand; >+import org.eclipse.gmf.runtime.notation.Edge; >+import org.eclipse.gmf.runtime.notation.View; >+ >+/** >+ * @generated >+ */ >+public class UMLReorientConnectionViewCommand extends AbstractTransactionalCommand { >+ >+ /** >+ * @generated >+ */ >+ private IAdaptable edgeAdaptor; >+ >+ /** >+ * @generated >+ */ >+ public UMLReorientConnectionViewCommand(TransactionalEditingDomain editingDomain, String label) { >+ super(editingDomain, label, null); >+ } >+ >+ /** >+ * @generated >+ */ >+ public List getAffectedFiles() { >+ View view = (View) edgeAdaptor.getAdapter(View.class); >+ if (view != null) { >+ return getWorkspaceFiles(view); >+ } >+ return super.getAffectedFiles(); >+ } >+ >+ /** >+ * @generated >+ */ >+ public IAdaptable getEdgeAdaptor() { >+ return edgeAdaptor; >+ } >+ >+ /** >+ * @generated >+ */ >+ public void setEdgeAdaptor(IAdaptable edgeAdaptor) { >+ this.edgeAdaptor = edgeAdaptor; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected CommandResult doExecuteWithResult(IProgressMonitor progressMonitor, IAdaptable info) { >+ assert null != edgeAdaptor : "Null child in UMLReorientConnectionViewCommand"; //$NON-NLS-1$ >+ Edge edge = (Edge) getEdgeAdaptor().getAdapter(Edge.class); >+ assert null != edge : "Null edge in UMLReorientConnectionViewCommand"; //$NON-NLS-1$ >+ >+ View tempView = edge.getSource(); >+ edge.setSource(edge.getTarget()); >+ edge.setTarget(tempView); >+ >+ return CommandResult.newOKCommandResult(); >+ } >+} >Index: src/org/eclipse/uml2/diagram/component/view/factories/PortProvidedViewFactory.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/component/view/factories/PortProvidedViewFactory.java >diff -N src/org/eclipse/uml2/diagram/component/view/factories/PortProvidedViewFactory.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/component/view/factories/PortProvidedViewFactory.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,52 @@ >+package org.eclipse.uml2.diagram.component.view.factories; >+ >+import java.util.ArrayList; >+import java.util.List; >+ >+import org.eclipse.core.runtime.IAdaptable; >+ >+import org.eclipse.emf.ecore.EAnnotation; >+import org.eclipse.emf.ecore.EcoreFactory; >+ >+import org.eclipse.gmf.runtime.diagram.ui.view.factories.ConnectionViewFactory; >+ >+import org.eclipse.gmf.runtime.notation.NotationFactory; >+import org.eclipse.gmf.runtime.notation.View; >+ >+import org.eclipse.uml2.diagram.component.edit.parts.PackageEditPart; >+import org.eclipse.uml2.diagram.component.part.UMLVisualIDRegistry; >+ >+/** >+ * @generated >+ */ >+public class PortProvidedViewFactory extends ConnectionViewFactory { >+ >+ /** >+ * @generated >+ */ >+ protected List createStyles(View view) { >+ List styles = new ArrayList(); >+ styles.add(NotationFactory.eINSTANCE.createRoutingStyle()); >+ styles.add(NotationFactory.eINSTANCE.createFontStyle()); >+ styles.add(NotationFactory.eINSTANCE.createLineStyle()); >+ return styles; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void decorateView(View containerView, View view, IAdaptable semanticAdapter, String semanticHint, int index, boolean persisted) { >+ if (semanticHint == null) { >+ semanticHint = UMLVisualIDRegistry.getType(org.eclipse.uml2.diagram.component.edit.parts.PortProvidedEditPart.VISUAL_ID); >+ view.setType(semanticHint); >+ } >+ super.decorateView(containerView, view, semanticAdapter, semanticHint, index, persisted); >+ if (!PackageEditPart.MODEL_ID.equals(UMLVisualIDRegistry.getModelID(containerView))) { >+ EAnnotation shortcutAnnotation = EcoreFactory.eINSTANCE.createEAnnotation(); >+ shortcutAnnotation.setSource("Shortcut"); //$NON-NLS-1$ >+ shortcutAnnotation.getDetails().put("modelID", PackageEditPart.MODEL_ID); //$NON-NLS-1$ >+ view.getEAnnotations().add(shortcutAnnotation); >+ } >+ } >+ >+} >Index: src/org/eclipse/uml2/diagram/component/edit/parts/Interface2EditPart.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/component/edit/parts/Interface2EditPart.java >diff -N src/org/eclipse/uml2/diagram/component/edit/parts/Interface2EditPart.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/component/edit/parts/Interface2EditPart.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,312 @@ >+package org.eclipse.uml2.diagram.component.edit.parts; >+ >+import java.util.Iterator; >+ >+import org.eclipse.draw2d.IFigure; >+import org.eclipse.draw2d.PositionConstants; >+import org.eclipse.draw2d.StackLayout; >+ >+import org.eclipse.gef.EditPart; >+import org.eclipse.gef.EditPolicy; >+import org.eclipse.gef.GraphicalEditPart; >+import org.eclipse.gef.Request; >+ >+import org.eclipse.gef.commands.Command; >+ >+import org.eclipse.gef.editparts.LayerManager; >+ >+import org.eclipse.gef.editpolicies.LayoutEditPolicy; >+import org.eclipse.gef.editpolicies.NonResizableEditPolicy; >+import org.eclipse.gef.editpolicies.ResizableEditPolicy; >+ >+import org.eclipse.gef.requests.CreateRequest; >+ >+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.ShapeNodeEditPart; >+ >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles; >+ >+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout; >+ >+import org.eclipse.gmf.runtime.gef.ui.figures.DefaultSizeNodeFigure; >+import org.eclipse.gmf.runtime.gef.ui.figures.NodeFigure; >+ >+import org.eclipse.gmf.runtime.notation.View; >+ >+import org.eclipse.uml2.diagram.component.edit.policies.Interface2ItemSemanticEditPolicy; >+import org.eclipse.uml2.diagram.component.edit.policies.UMLExtNodeLabelHostLayoutEditPolicy; >+import org.eclipse.uml2.diagram.component.part.UMLVisualIDRegistry; >+ >+/** >+ * @generated >+ */ >+public class Interface2EditPart extends ShapeNodeEditPart { >+ >+ /** >+ * @generated >+ */ >+ public static final int VISUAL_ID = 2003; >+ >+ /** >+ * @generated >+ */ >+ protected IFigure contentPane; >+ >+ /** >+ * @generated >+ */ >+ protected IFigure primaryShape; >+ >+ /** >+ * @generated >+ */ >+ public Interface2EditPart(View view) { >+ super(view); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void createDefaultEditPolicies() { >+ super.createDefaultEditPolicies(); >+ installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE, new Interface2ItemSemanticEditPolicy()); >+ installEditPolicy(EditPolicy.LAYOUT_ROLE, createLayoutEditPolicy()); >+ >+ } >+ >+ /** >+ * @generated >+ */ >+ protected LayoutEditPolicy createLayoutEditPolicy() { >+ LayoutEditPolicy lep = new LayoutEditPolicy() { >+ >+ protected void decorateChild(EditPart child) { >+ if (isExternalLabel(child)) { >+ return; >+ } >+ super.decorateChild(child); >+ } >+ >+ protected EditPolicy createChildEditPolicy(EditPart child) { >+ EditPolicy result = child.getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE); >+ if (result == null) { >+ result = new NonResizableEditPolicy(); >+ } >+ return result; >+ } >+ >+ protected Command getMoveChildrenCommand(Request request) { >+ return null; >+ } >+ >+ protected Command getCreateCommand(CreateRequest request) { >+ return null; >+ } >+ }; >+ UMLExtNodeLabelHostLayoutEditPolicy xlep = new UMLExtNodeLabelHostLayoutEditPolicy() { >+ >+ protected boolean isExternalLabel(EditPart editPart) { >+ return Interface2EditPart.this.isExternalLabel(editPart); >+ } >+ }; >+ xlep.setRealLayoutEditPolicy(lep); >+ return xlep; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected IFigure createNodeShape() { >+ ProvidedInterfaceCircleFigure figure = new ProvidedInterfaceCircleFigure(); >+ return primaryShape = figure; >+ } >+ >+ /** >+ * @generated >+ */ >+ public ProvidedInterfaceCircleFigure getPrimaryShape() { >+ return (ProvidedInterfaceCircleFigure) primaryShape; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected IFigure getContentPaneFor(IGraphicalEditPart editPart) { >+ if (isExternalLabel(editPart)) { >+ return getExternalLabelsContainer(); >+ } >+ >+ return super.getContentPaneFor(editPart); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected NodeFigure createNodePlate() { >+ DefaultSizeNodeFigure result = new DefaultSizeNodeFigure(getMapMode().DPtoLP(15), getMapMode().DPtoLP(15)); >+ return result; >+ } >+ >+ /** >+ * @generated >+ */ >+ public EditPolicy getPrimaryDragEditPolicy() { >+ EditPolicy result = super.getPrimaryDragEditPolicy(); >+ if (result instanceof ResizableEditPolicy) { >+ ResizableEditPolicy ep = (ResizableEditPolicy) result; >+ >+ ep.setResizeDirections(PositionConstants.NONE); >+ >+ } >+ return result; >+ } >+ >+ /** >+ * Creates figure for this edit part. >+ * >+ * Body of this method does not depend on settings in generation model >+ * so you may safely remove <i>generated</i> tag and modify it. >+ * >+ * @generated >+ */ >+ protected NodeFigure createNodeFigure() { >+ NodeFigure figure = createNodePlate(); >+ figure.setLayoutManager(new StackLayout()); >+ IFigure shape = createNodeShape(); >+ figure.add(shape); >+ contentPane = setupContentPane(shape); >+ return figure; >+ } >+ >+ /** >+ * Default implementation treats passed figure as content pane. >+ * Respects layout one may have set for generated figure. >+ * @param nodeShape instance of generated figure class >+ * @generated >+ */ >+ protected IFigure setupContentPane(IFigure nodeShape) { >+ if (nodeShape.getLayoutManager() == null) { >+ ConstrainedToolbarLayout layout = new ConstrainedToolbarLayout(); >+ layout.setSpacing(getMapMode().DPtoLP(5)); >+ nodeShape.setLayoutManager(layout); >+ } >+ return nodeShape; // use nodeShape itself as contentPane >+ } >+ >+ /** >+ * @generated >+ */ >+ public IFigure getContentPane() { >+ if (contentPane != null) { >+ return contentPane; >+ } >+ return super.getContentPane(); >+ } >+ >+ /** >+ * @generated >+ */ >+ public EditPart getPrimaryChildEditPart() { >+ return getChildBySemanticHint(UMLVisualIDRegistry.getType(InterfaceName2EditPart.VISUAL_ID)); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected boolean isExternalLabel(EditPart childEditPart) { >+ if (childEditPart instanceof InterfaceName2EditPart) { >+ return true; >+ } >+ return false; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected IFigure getExternalLabelsContainer() { >+ LayerManager root = (LayerManager) getRoot(); >+ return root.getLayer(UMLEditPartFactory.EXTERNAL_NODE_LABELS_LAYER); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void addChildVisual(EditPart childEditPart, int index) { >+ if (isExternalLabel(childEditPart)) { >+ IFigure labelFigure = ((GraphicalEditPart) childEditPart).getFigure(); >+ getExternalLabelsContainer().add(labelFigure); >+ return; >+ } >+ super.addChildVisual(childEditPart, -1); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void removeChildVisual(EditPart childEditPart) { >+ if (isExternalLabel(childEditPart)) { >+ IFigure labelFigure = ((GraphicalEditPart) childEditPart).getFigure(); >+ getExternalLabelsContainer().remove(labelFigure); >+ return; >+ } >+ super.removeChildVisual(childEditPart); >+ } >+ >+ /** >+ * @generated >+ */ >+ public void removeNotify() { >+ for (Iterator it = getChildren().iterator(); it.hasNext();) { >+ EditPart childEditPart = (EditPart) it.next(); >+ if (isExternalLabel(childEditPart)) { >+ IFigure labelFigure = ((GraphicalEditPart) childEditPart).getFigure(); >+ getExternalLabelsContainer().remove(labelFigure); >+ } >+ } >+ super.removeNotify(); >+ } >+ >+ /** >+ * @generated >+ */ >+ public class ProvidedInterfaceCircleFigure extends org.eclipse.draw2d.Ellipse { >+ >+ /** >+ * @generated >+ */ >+ public ProvidedInterfaceCircleFigure() { >+ >+ this.setPreferredSize(getMapMode().DPtoLP(15), getMapMode().DPtoLP(15)); >+ this.setMaximumSize(new org.eclipse.draw2d.geometry.Dimension(getMapMode().DPtoLP(15), getMapMode().DPtoLP(15))); >+ this.setMinimumSize(new org.eclipse.draw2d.geometry.Dimension(getMapMode().DPtoLP(15), getMapMode().DPtoLP(15))); >+ createContents(); >+ } >+ >+ /** >+ * @generated >+ */ >+ private void createContents() { >+ } >+ >+ /** >+ * @generated >+ */ >+ private boolean myUseLocalCoordinates = false; >+ >+ /** >+ * @generated >+ */ >+ protected boolean useLocalCoordinates() { >+ return myUseLocalCoordinates; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setUseLocalCoordinates(boolean useLocalCoordinates) { >+ myUseLocalCoordinates = useLocalCoordinates; >+ } >+ >+ } >+ >+} >Index: src/org/eclipse/uml2/diagram/component/providers/UMLElementTypes.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/component/providers/UMLElementTypes.java >diff -N src/org/eclipse/uml2/diagram/component/providers/UMLElementTypes.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/component/providers/UMLElementTypes.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,520 @@ >+package org.eclipse.uml2.diagram.component.providers; >+ >+import java.util.HashSet; >+import java.util.IdentityHashMap; >+import java.util.Map; >+import java.util.Set; >+import org.eclipse.core.runtime.IAdaptable; >+import org.eclipse.emf.ecore.EClass; >+import org.eclipse.emf.ecore.ENamedElement; >+import org.eclipse.emf.ecore.EStructuralFeature; >+import org.eclipse.gmf.runtime.emf.type.core.ElementTypeRegistry; >+import org.eclipse.gmf.runtime.emf.type.core.IElementType; >+import org.eclipse.jface.resource.ImageDescriptor; >+import org.eclipse.jface.resource.ImageRegistry; >+import org.eclipse.swt.graphics.Image; >+import java.util.ArrayList; >+import java.util.Collection; >+import java.util.List; >+ >+import org.eclipse.emf.ecore.EObject; >+ >+import org.eclipse.uml2.diagram.component.expressions.UMLAbstractExpression; >+import org.eclipse.uml2.diagram.component.expressions.UMLOCLFactory; >+import org.eclipse.uml2.diagram.component.part.UMLDiagramEditorPlugin; >+import org.eclipse.uml2.uml.UMLPackage; >+ >+/** >+ * @generated >+ */ >+public class UMLElementTypes { >+ >+ /** >+ * @generated >+ */ >+ private UMLElementTypes() { >+ } >+ >+ /** >+ * @generated >+ */ >+ private static Map elements; >+ >+ /** >+ * @generated >+ */ >+ private static ImageRegistry imageRegistry; >+ >+ /** >+ * @generated >+ */ >+ private static ImageRegistry getImageRegistry() { >+ if (imageRegistry == null) { >+ imageRegistry = new ImageRegistry(); >+ } >+ return imageRegistry; >+ } >+ >+ /** >+ * @generated >+ */ >+ private static String getImageRegistryKey(ENamedElement element) { >+ return element.getName(); >+ } >+ >+ /** >+ * @generated >+ */ >+ private static ImageDescriptor getProvidedImageDescriptor(ENamedElement element) { >+ if (element instanceof EStructuralFeature) { >+ element = ((EStructuralFeature) element).getEContainingClass(); >+ } >+ if (element instanceof EClass) { >+ EClass eClass = (EClass) element; >+ if (!eClass.isAbstract()) { >+ return UMLDiagramEditorPlugin.getInstance().getItemImageDescriptor(eClass.getEPackage().getEFactoryInstance().create(eClass)); >+ } >+ } >+ // TODO : support structural features >+ return null; >+ } >+ >+ /** >+ * @generated >+ */ >+ public static ImageDescriptor getImageDescriptor(ENamedElement element) { >+ String key = getImageRegistryKey(element); >+ ImageDescriptor imageDescriptor = getImageRegistry().getDescriptor(key); >+ if (imageDescriptor == null) { >+ imageDescriptor = getProvidedImageDescriptor(element); >+ if (imageDescriptor == null) { >+ imageDescriptor = ImageDescriptor.getMissingImageDescriptor(); >+ } >+ getImageRegistry().put(key, imageDescriptor); >+ } >+ return imageDescriptor; >+ } >+ >+ /** >+ * @generated >+ */ >+ public static Image getImage(ENamedElement element) { >+ String key = getImageRegistryKey(element); >+ Image image = getImageRegistry().get(key); >+ if (image == null) { >+ ImageDescriptor imageDescriptor = getProvidedImageDescriptor(element); >+ if (imageDescriptor == null) { >+ imageDescriptor = ImageDescriptor.getMissingImageDescriptor(); >+ } >+ getImageRegistry().put(key, imageDescriptor); >+ image = getImageRegistry().get(key); >+ } >+ return image; >+ } >+ >+ /** >+ * @generated >+ */ >+ public static ImageDescriptor getImageDescriptor(IAdaptable hint) { >+ ENamedElement element = getElement(hint); >+ if (element == null) { >+ return null; >+ } >+ return getImageDescriptor(element); >+ } >+ >+ /** >+ * @generated >+ */ >+ public static Image getImage(IAdaptable hint) { >+ ENamedElement element = getElement(hint); >+ if (element == null) { >+ return null; >+ } >+ return getImage(element); >+ } >+ >+ /** >+ * Returns 'type' of the ecore object associated with the hint. >+ * >+ * @generated >+ */ >+ public static ENamedElement getElement(IAdaptable hint) { >+ Object type = hint.getAdapter(IElementType.class); >+ if (elements == null) { >+ elements = new IdentityHashMap(); >+ elements.put(Package_1000, UMLPackage.eINSTANCE.getPackage()); >+ elements.put(Component_3001, UMLPackage.eINSTANCE.getComponent()); >+ elements.put(Port_3002, UMLPackage.eINSTANCE.getPort()); >+ elements.put(Artifact_3003, UMLPackage.eINSTANCE.getArtifact()); >+ elements.put(Class_3004, UMLPackage.eINSTANCE.getClass_()); >+ elements.put(Interface_3005, UMLPackage.eINSTANCE.getInterface()); >+ elements.put(Component_2001, UMLPackage.eINSTANCE.getComponent()); >+ elements.put(Artifact_2002, UMLPackage.eINSTANCE.getArtifact()); >+ elements.put(Interface_2003, UMLPackage.eINSTANCE.getInterface()); >+ elements.put(Class_2004, UMLPackage.eINSTANCE.getClass_()); >+ elements.put(InterfaceRealization_4001, UMLPackage.eINSTANCE.getInterfaceRealization()); >+ elements.put(PortProvided_4006, UMLPackage.eINSTANCE.getPort_Provided()); >+ elements.put(PortRequired_4004, UMLPackage.eINSTANCE.getPort_Required()); >+ } >+ return (ENamedElement) elements.get(type); >+ } >+ >+ /** >+ * @generated >+ */ >+ public static final IElementType Package_1000 = getElementType("org.eclipse.uml2.diagram.component.Package_1000"); //$NON-NLS-1$ >+ >+ /** >+ * @generated >+ */ >+ public static final IElementType Component_3001 = getElementType("org.eclipse.uml2.diagram.component.Component_3001"); //$NON-NLS-1$ >+ >+ /** >+ * @generated >+ */ >+ public static final IElementType Port_3002 = getElementType("org.eclipse.uml2.diagram.component.Port_3002"); //$NON-NLS-1$ >+ >+ /** >+ * @generated >+ */ >+ public static final IElementType Artifact_3003 = getElementType("org.eclipse.uml2.diagram.component.Artifact_3003"); //$NON-NLS-1$ >+ >+ /** >+ * @generated >+ */ >+ public static final IElementType Class_3004 = getElementType("org.eclipse.uml2.diagram.component.Class_3004"); //$NON-NLS-1$ >+ >+ /** >+ * @generated >+ */ >+ public static final IElementType Interface_3005 = getElementType("org.eclipse.uml2.diagram.component.Interface_3005"); //$NON-NLS-1$ >+ >+ /** >+ * @generated >+ */ >+ public static final IElementType Component_2001 = getElementType("org.eclipse.uml2.diagram.component.Component_2001"); //$NON-NLS-1$ >+ >+ /** >+ * @generated >+ */ >+ public static final IElementType Artifact_2002 = getElementType("org.eclipse.uml2.diagram.component.Artifact_2002"); //$NON-NLS-1$ >+ >+ /** >+ * @generated >+ */ >+ public static final IElementType Interface_2003 = getElementType("org.eclipse.uml2.diagram.component.Interface_2003"); //$NON-NLS-1$ >+ >+ /** >+ * @generated >+ */ >+ public static final IElementType Class_2004 = getElementType("org.eclipse.uml2.diagram.component.Class_2004"); //$NON-NLS-1$ >+ >+ /** >+ * @generated >+ */ >+ public static final IElementType InterfaceRealization_4001 = getElementType("org.eclipse.uml2.diagram.component.InterfaceRealization_4001"); //$NON-NLS-1$ >+ >+ /** >+ * @generated >+ */ >+ public static final IElementType PortProvided_4006 = getElementType("org.eclipse.uml2.diagram.component.PortProvided_4006"); //$NON-NLS-1$ >+ >+ /** >+ * @generated >+ */ >+ public static final IElementType PortRequired_4004 = getElementType("org.eclipse.uml2.diagram.component.PortRequired_4004"); //$NON-NLS-1$ >+ >+ /** >+ * @generated >+ */ >+ private static IElementType getElementType(String id) { >+ return ElementTypeRegistry.getInstance().getType(id); >+ } >+ >+ /** >+ * @generated >+ */ >+ private static Set KNOWN_ELEMENT_TYPES; >+ >+ /** >+ * @generated >+ */ >+ public static boolean isKnownElementType(IElementType elementType) { >+ if (KNOWN_ELEMENT_TYPES == null) { >+ KNOWN_ELEMENT_TYPES = new HashSet(); >+ KNOWN_ELEMENT_TYPES.add(Package_1000); >+ KNOWN_ELEMENT_TYPES.add(Component_3001); >+ KNOWN_ELEMENT_TYPES.add(Port_3002); >+ KNOWN_ELEMENT_TYPES.add(Artifact_3003); >+ KNOWN_ELEMENT_TYPES.add(Class_3004); >+ KNOWN_ELEMENT_TYPES.add(Interface_3005); >+ KNOWN_ELEMENT_TYPES.add(Component_2001); >+ KNOWN_ELEMENT_TYPES.add(Artifact_2002); >+ KNOWN_ELEMENT_TYPES.add(Interface_2003); >+ KNOWN_ELEMENT_TYPES.add(Class_2004); >+ KNOWN_ELEMENT_TYPES.add(InterfaceRealization_4001); >+ KNOWN_ELEMENT_TYPES.add(PortProvided_4006); >+ KNOWN_ELEMENT_TYPES.add(PortRequired_4004); >+ } >+ return KNOWN_ELEMENT_TYPES.contains(elementType); >+ } >+ >+ /** >+ * @generated >+ */ >+ public static class Initializers { >+ >+ /** >+ * @generated >+ */ >+ public static final IObjectInitializer Component_2001 = new ObjectInitializer(org.eclipse.uml2.uml.UMLPackage.eINSTANCE.getComponent()) { >+ >+ protected void init() { >+ add(createExpressionFeatureInitializer( >+ UMLPackage.eINSTANCE.getNamedElement_Name(), >+ UMLOCLFactory >+ .getExpression( >+ " 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$ >+ UMLPackage.eINSTANCE.getComponent()))); >+ } >+ }; // Component_2001 ObjectInitializer >+ >+ /** >+ * @generated >+ */ >+ public static final IObjectInitializer Artifact_2002 = new ObjectInitializer(org.eclipse.uml2.uml.UMLPackage.eINSTANCE.getArtifact()) { >+ >+ protected void init() { >+ add(createExpressionFeatureInitializer( >+ UMLPackage.eINSTANCE.getNamedElement_Name(), >+ UMLOCLFactory >+ .getExpression( >+ " 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$ >+ UMLPackage.eINSTANCE.getArtifact()))); >+ } >+ }; // Artifact_2002 ObjectInitializer >+ >+ /** >+ * @generated >+ */ >+ public static final IObjectInitializer Interface_2003 = new ObjectInitializer(org.eclipse.uml2.uml.UMLPackage.eINSTANCE.getInterface()) { >+ >+ protected void init() { >+ add(createExpressionFeatureInitializer( >+ UMLPackage.eINSTANCE.getNamedElement_Name(), >+ UMLOCLFactory >+ .getExpression( >+ " 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$ >+ UMLPackage.eINSTANCE.getInterface()))); >+ } >+ }; // Interface_2003 ObjectInitializer >+ >+ /** >+ * @generated >+ */ >+ public static final IObjectInitializer Class_2004 = new ObjectInitializer(org.eclipse.uml2.uml.UMLPackage.eINSTANCE.getClass_()) { >+ >+ protected void init() { >+ add(createExpressionFeatureInitializer( >+ UMLPackage.eINSTANCE.getNamedElement_Name(), >+ UMLOCLFactory >+ .getExpression( >+ " 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$ >+ UMLPackage.eINSTANCE.getClass_()))); >+ } >+ }; // Class_2004 ObjectInitializer >+ >+ /** >+ * @generated >+ */ >+ public static final IObjectInitializer Component_3001 = new ObjectInitializer(org.eclipse.uml2.uml.UMLPackage.eINSTANCE.getComponent()) { >+ >+ protected void init() { >+ add(createExpressionFeatureInitializer( >+ UMLPackage.eINSTANCE.getNamedElement_Name(), >+ UMLOCLFactory >+ .getExpression( >+ " 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$ >+ UMLPackage.eINSTANCE.getComponent()))); >+ } >+ }; // Component_3001 ObjectInitializer >+ >+ /** >+ * @generated >+ */ >+ public static final IObjectInitializer Port_3002 = new ObjectInitializer(org.eclipse.uml2.uml.UMLPackage.eINSTANCE.getPort()) { >+ >+ protected void init() { >+ add(createExpressionFeatureInitializer(UMLPackage.eINSTANCE.getProperty_Aggregation(), UMLOCLFactory.getExpression("AggregationKind::composite", //$NON-NLS-1$ >+ UMLPackage.eINSTANCE.getPort()))); >+ add(createExpressionFeatureInitializer( >+ UMLPackage.eINSTANCE.getNamedElement_Name(), >+ UMLOCLFactory >+ .getExpression( >+ " 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$ >+ UMLPackage.eINSTANCE.getPort()))); >+ } >+ }; // Port_3002 ObjectInitializer >+ >+ /** >+ * @generated >+ */ >+ public static final IObjectInitializer Artifact_3003 = new ObjectInitializer(org.eclipse.uml2.uml.UMLPackage.eINSTANCE.getArtifact()) { >+ >+ protected void init() { >+ add(createExpressionFeatureInitializer( >+ UMLPackage.eINSTANCE.getNamedElement_Name(), >+ UMLOCLFactory >+ .getExpression( >+ " 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$ >+ UMLPackage.eINSTANCE.getArtifact()))); >+ } >+ }; // Artifact_3003 ObjectInitializer >+ >+ /** >+ * @generated >+ */ >+ public static final IObjectInitializer Class_3004 = new ObjectInitializer(org.eclipse.uml2.uml.UMLPackage.eINSTANCE.getClass_()) { >+ >+ protected void init() { >+ add(createExpressionFeatureInitializer( >+ UMLPackage.eINSTANCE.getNamedElement_Name(), >+ UMLOCLFactory >+ .getExpression( >+ " 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$ >+ UMLPackage.eINSTANCE.getClass_()))); >+ } >+ }; // Class_3004 ObjectInitializer >+ >+ /** >+ * @generated >+ */ >+ public static final IObjectInitializer Interface_3005 = new ObjectInitializer(org.eclipse.uml2.uml.UMLPackage.eINSTANCE.getInterface()) { >+ >+ protected void init() { >+ add(createExpressionFeatureInitializer( >+ UMLPackage.eINSTANCE.getNamedElement_Name(), >+ UMLOCLFactory >+ .getExpression( >+ " 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$ >+ UMLPackage.eINSTANCE.getInterface()))); >+ } >+ }; // Interface_3005 ObjectInitializer >+ >+ /** >+ * @generated >+ */ >+ private Initializers() { >+ } >+ >+ /** >+ * @generated >+ */ >+ public static interface IObjectInitializer { >+ >+ /** >+ * @generated >+ */ >+ public void init(EObject instance); >+ } >+ >+ /** >+ * @generated >+ */ >+ public static abstract class ObjectInitializer implements IObjectInitializer { >+ >+ /** >+ * @generated >+ */ >+ final EClass element; >+ >+ /** >+ * @generated >+ */ >+ private List featureInitializers = new ArrayList(); >+ >+ /** >+ * @generated >+ */ >+ ObjectInitializer(EClass element) { >+ this.element = element; >+ init(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected abstract void init(); >+ >+ /** >+ * @generated >+ */ >+ protected final FeatureInitializer add(FeatureInitializer initializer) { >+ featureInitializers.add(initializer); >+ return initializer; >+ } >+ >+ /** >+ * @generated >+ */ >+ public void init(EObject instance) { >+ for (java.util.Iterator it = featureInitializers.iterator(); it.hasNext();) { >+ FeatureInitializer nextExpr = (FeatureInitializer) it.next(); >+ try { >+ nextExpr.init(instance); >+ } catch (RuntimeException e) { >+ UMLDiagramEditorPlugin.getInstance().logError("Feature initialization failed", e); //$NON-NLS-1$ >+ } >+ } >+ } >+ } // end of ObjectInitializer >+ >+ /** >+ * @generated >+ */ >+ interface FeatureInitializer { >+ >+ /** >+ * @generated >+ */ >+ void init(EObject contextInstance); >+ } >+ >+ /** >+ * @generated >+ */ >+ static FeatureInitializer createNewElementFeatureInitializer(EStructuralFeature initFeature, ObjectInitializer[] newObjectInitializers) { >+ final EStructuralFeature feature = initFeature; >+ final ObjectInitializer[] initializers = newObjectInitializers; >+ return new FeatureInitializer() { >+ >+ public void init(EObject contextInstance) { >+ for (int i = 0; i < initializers.length; i++) { >+ EObject newInstance = initializers[i].element.getEPackage().getEFactoryInstance().create(initializers[i].element); >+ if (feature.isMany()) { >+ ((Collection) contextInstance.eGet(feature)).add(newInstance); >+ } else { >+ contextInstance.eSet(feature, newInstance); >+ } >+ initializers[i].init(newInstance); >+ } >+ } >+ }; >+ } >+ >+ /** >+ * @generated >+ */ >+ static FeatureInitializer createExpressionFeatureInitializer(EStructuralFeature initFeature, UMLAbstractExpression valueExpression) { >+ final EStructuralFeature feature = initFeature; >+ final UMLAbstractExpression expression = valueExpression; >+ return new FeatureInitializer() { >+ >+ public void init(EObject contextInstance) { >+ expression.assignTo(feature, contextInstance); >+ } >+ }; >+ } >+ } // end of Initializers >+} >Index: src/org/eclipse/uml2/diagram/component/part/UMLDiagramActionBarContributor.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/component/part/UMLDiagramActionBarContributor.java >diff -N src/org/eclipse/uml2/diagram/component/part/UMLDiagramActionBarContributor.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/component/part/UMLDiagramActionBarContributor.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,23 @@ >+package org.eclipse.uml2.diagram.component.part; >+ >+import org.eclipse.gmf.runtime.diagram.ui.parts.DiagramActionBarContributor; >+ >+/** >+ * @generated >+ */ >+public class UMLDiagramActionBarContributor extends DiagramActionBarContributor { >+ >+ /** >+ * @generated >+ */ >+ protected Class getEditorClass() { >+ return UMLDiagramEditor.class; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected String getEditorId() { >+ return UMLDiagramEditor.ID; >+ } >+} >Index: src/org/eclipse/uml2/diagram/component/view/factories/PortViewFactory.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/component/view/factories/PortViewFactory.java >diff -N src/org/eclipse/uml2/diagram/component/view/factories/PortViewFactory.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/component/view/factories/PortViewFactory.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,57 @@ >+package org.eclipse.uml2.diagram.component.view.factories; >+ >+import java.util.ArrayList; >+import java.util.List; >+ >+import org.eclipse.core.runtime.IAdaptable; >+ >+import org.eclipse.emf.ecore.EAnnotation; >+import org.eclipse.emf.ecore.EcoreFactory; >+ >+import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil; >+ >+import org.eclipse.gmf.runtime.diagram.ui.view.factories.AbstractShapeViewFactory; >+ >+import org.eclipse.gmf.runtime.notation.NotationFactory; >+import org.eclipse.gmf.runtime.notation.View; >+ >+import org.eclipse.uml2.diagram.component.edit.parts.PackageEditPart; >+import org.eclipse.uml2.diagram.component.edit.parts.PortNameEditPart; >+import org.eclipse.uml2.diagram.component.part.UMLVisualIDRegistry; >+ >+/** >+ * @generated >+ */ >+public class PortViewFactory extends AbstractShapeViewFactory { >+ >+ /** >+ * @generated >+ */ >+ protected List createStyles(View view) { >+ List styles = new ArrayList(); >+ styles.add(NotationFactory.eINSTANCE.createFontStyle()); >+ styles.add(NotationFactory.eINSTANCE.createDescriptionStyle()); >+ styles.add(NotationFactory.eINSTANCE.createFillStyle()); >+ styles.add(NotationFactory.eINSTANCE.createLineStyle()); >+ return styles; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void decorateView(View containerView, View view, IAdaptable semanticAdapter, String semanticHint, int index, boolean persisted) { >+ if (semanticHint == null) { >+ semanticHint = UMLVisualIDRegistry.getType(org.eclipse.uml2.diagram.component.edit.parts.PortEditPart.VISUAL_ID); >+ view.setType(semanticHint); >+ } >+ super.decorateView(containerView, view, semanticAdapter, semanticHint, index, persisted); >+ if (!PackageEditPart.MODEL_ID.equals(UMLVisualIDRegistry.getModelID(containerView))) { >+ EAnnotation shortcutAnnotation = EcoreFactory.eINSTANCE.createEAnnotation(); >+ shortcutAnnotation.setSource("Shortcut"); //$NON-NLS-1$ >+ shortcutAnnotation.getDetails().put("modelID", PackageEditPart.MODEL_ID); //$NON-NLS-1$ >+ view.getEAnnotations().add(shortcutAnnotation); >+ } >+ getViewService().createNode(semanticAdapter, view, UMLVisualIDRegistry.getType(PortNameEditPart.VISUAL_ID), ViewUtil.APPEND, true, getPreferencesHint()); >+ } >+ >+} >Index: icons/wizban/NewUMLWizard.gif >=================================================================== >RCS file: icons/wizban/NewUMLWizard.gif >diff -N icons/wizban/NewUMLWizard.gif >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ icons/wizban/NewUMLWizard.gif 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,8 @@ >+GIF89aKBçÿÿÿîñøîñ÷¸ÃÖËÓâËÓáäéòíñø;Z=[=[Òè¼²ÙÌfÀ@Ca?EcDa?FcFcHeMiOkOkQmRmToWqWqZtZt?]w _y¢`y¢`y¡c{£f~¥i?§l©o«pªsv¯z?±}³}²··?»?¼£À£À£¿¦Â©Ä©Ã¬Æ¯È ¯È ¯Ç¤²Êª¸Î®»Ð·ÃÖ¸Ä×ÂÌÜÈÑàÓÛèÔÛçÖÝéØßêÞäîÜâìæëóäéñ<\>]?=\?^?^?A`?Db?EcGeFdJgLiQnRnTpWrWrYtYt?]w`z¢_y¡`z¡c|£e~¥l©k¨su¯y?±µ··¹¼»? ½¡¾¡½¤À¤À£¿¤¿¤¿§ÁªÄ °È¯Ç °Ç£³Ê¦µÌ©¸Î»Ð®¼Ð±¾Ò´ÁÔ»ÇØ¾ÉÚÁÌÜÇÑàËÔâÍÖäÐÙæÎ×äÓÛçÕÝéÝäîÛâìàæïÞäíìðöªÃŰȰǦ¶Ì¼Ð·ÄÖ¾ÊÚÄÏÞÈÒàÊÔáÓÜèÐÙåÎ×ãÖÞéäêòâèðêïöèíôÇÒàÍ×ãÓÜçÕÞéØàêßæïÝäíÛâëëðöêïõèíóïóøîò÷æìóäêñèîôíò÷ô®_ôÛ²óáÆ×Ä¥µ³?£|u?c? ±²¨·´¼Â¹¼Â¹ÆÇ¶¼¹¬¢½ÃÇßàÞÌÆÏÎÈÑÑÌÖÙØãÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ,KBþH° Á*\h0R#J8Ñ!©)jÜ(1/rI`, Cf,ɲãI*1¶©ðd?)c®¤Éóf,rêìÙ Bc?iôhPRIC.-Ù4R¤Puºñ§×W¡F0Ù³hÓªMûáW¯WÃjÝzW2fÉòêÝË·o®[ºp-|û2îçsâjÖ·q¤d?G%£µR$]·#|{3?'F¨KiÓR· kH£hÉ-YfÍ >+;{ý+âÑu©RukZ]?ZNà̺Lr~ù9ôX¤U'+¾õìå±gþÃ?+pfÁ?uû<Y=®Ø¹;ê"n<åH´cëoù[»ä2ÝzõæÞu Í·Ýc¬¹É~´@HËx°Ì" >+`fn/xàut4q$>H[sRË(·Ýa¶g|ñ¤K¬?òÀ(ʦ",$ÓbfÇäÂa~_t÷à4Ð?>þ8^?CBçìVRJ(q9&óQ6ÀTù£$då\Rçå{yÀ«ð9&i$¦¬é@o fºè2L0 >+ôrL2uv)zò¹Ê¦&¸ÚrPÚT^ 'àËÉ,Ã0þÂLZiOeª)§ò?1£@2Ù¡úÀ²½" ?pÊäÊÞÅ1»PZi{¤`kØfûçAº0§#ÂËf§Êb.?'Ér2ÑÎ >+¢²ç¼¸ÖP´à *å¾ãÒb®$æËe?Ì´Ëå»a)ïØÞÊé¶#[lgòËoþ07Á1Ò§³(ï¼~ÖÛ)B»ÐVñ¾ «ñÆMý$Ë( ɲøB\P˳½LèÄÎ,Ç[Jóo2KÉ¢(q2Ã)k»Ê½.§y4J¼å[Å4ÕÎRO?ðÕX«Ü'×EjñaËåteë4KþÚ >+[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þ®AHD!:" ?xĸÄF(1¼%®àY1vèKòa #I£??22F@#3¨@ôÂ\Â!°l²ÅrQÈc3ôxfôñ?Íh)H#ò\ÙAÞýYÑ?ÜßzÁ¶à1?̤&3YB"2?¹JH/W=p²±;á&ùKnòì¤Ùè0QÒ§4UÉKa0E3H#< ÙÊUøâRZl_¨¤ä$;¥øÍ`6µÉMmfìÓü?fàx¦P©Å±%Î7¹Ímb³IþgÖ?f62 >+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Ðc1Ú$0æ´4m$ö¶îî¤(å?H[$ÄèR!QÂEH÷>¯#u\åØj;#0¹~{jBâúÖÊÎ:nyûZÀµñ¬¹¹èKú7-Ü¢ >+rk,ø¦jÇ]òo¸³ºÔ¤Æ·ª±-¹ó4ÍÛ?ÝvF¹½]xÑÌÏe~U2ºÈ¹wr¿ÝI(¹Eô×»»?Zä¼×¶q ; >Index: src/org/eclipse/uml2/diagram/component/edit/parts/Artifact2EditPart.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/component/edit/parts/Artifact2EditPart.java >diff -N src/org/eclipse/uml2/diagram/component/edit/parts/Artifact2EditPart.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/component/edit/parts/Artifact2EditPart.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,359 @@ >+package org.eclipse.uml2.diagram.component.edit.parts; >+ >+import org.eclipse.draw2d.IFigure; >+import org.eclipse.draw2d.StackLayout; >+ >+import org.eclipse.gef.EditPart; >+import org.eclipse.gef.EditPolicy; >+import org.eclipse.gef.Request; >+ >+import org.eclipse.gef.commands.Command; >+ >+import org.eclipse.gef.editpolicies.LayoutEditPolicy; >+import org.eclipse.gef.editpolicies.NonResizableEditPolicy; >+ >+import org.eclipse.gef.requests.CreateRequest; >+ >+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.ShapeNodeEditPart; >+ >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles; >+ >+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout; >+ >+import org.eclipse.gmf.runtime.gef.ui.figures.DefaultSizeNodeFigure; >+import org.eclipse.gmf.runtime.gef.ui.figures.NodeFigure; >+ >+import org.eclipse.gmf.runtime.notation.View; >+ >+import org.eclipse.uml2.diagram.component.edit.policies.Artifact2ItemSemanticEditPolicy; >+import org.eclipse.uml2.diagram.component.part.UMLVisualIDRegistry; >+ >+/** >+ * @generated >+ */ >+public class Artifact2EditPart extends ShapeNodeEditPart { >+ >+ /** >+ * @generated >+ */ >+ public static final int VISUAL_ID = 2002; >+ >+ /** >+ * @generated >+ */ >+ protected IFigure contentPane; >+ >+ /** >+ * @generated >+ */ >+ protected IFigure primaryShape; >+ >+ /** >+ * @generated >+ */ >+ public Artifact2EditPart(View view) { >+ super(view); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void createDefaultEditPolicies() { >+ super.createDefaultEditPolicies(); >+ installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE, new Artifact2ItemSemanticEditPolicy()); >+ installEditPolicy(EditPolicy.LAYOUT_ROLE, createLayoutEditPolicy()); >+ >+ } >+ >+ /** >+ * @generated >+ */ >+ protected LayoutEditPolicy createLayoutEditPolicy() { >+ LayoutEditPolicy lep = new LayoutEditPolicy() { >+ >+ protected EditPolicy createChildEditPolicy(EditPart child) { >+ EditPolicy result = child.getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE); >+ if (result == null) { >+ result = new NonResizableEditPolicy(); >+ } >+ return result; >+ } >+ >+ protected Command getMoveChildrenCommand(Request request) { >+ return null; >+ } >+ >+ protected Command getCreateCommand(CreateRequest request) { >+ return null; >+ } >+ }; >+ return lep; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected IFigure createNodeShape() { >+ ArtifactFigure figure = new ArtifactFigure(); >+ return primaryShape = figure; >+ } >+ >+ /** >+ * @generated >+ */ >+ public ArtifactFigure getPrimaryShape() { >+ return (ArtifactFigure) primaryShape; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected IFigure getContentPaneFor(IGraphicalEditPart editPart) { >+ >+ return super.getContentPaneFor(editPart); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected boolean addFixedChild(EditPart childEditPart) { >+ if (childEditPart instanceof ArtifactName2EditPart) { >+ ((ArtifactName2EditPart) childEditPart).setLabel(getPrimaryShape().getFigureArtifactFigure_name()); >+ return true; >+ } >+ return false; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected boolean removeFixedChild(EditPart childEditPart) { >+ return false; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected NodeFigure createNodePlate() { >+ DefaultSizeNodeFigure result = new DefaultSizeNodeFigure(getMapMode().DPtoLP(80), getMapMode().DPtoLP(60)); >+ return result; >+ } >+ >+ /** >+ * Creates figure for this edit part. >+ * >+ * Body of this method does not depend on settings in generation model >+ * so you may safely remove <i>generated</i> tag and modify it. >+ * >+ * @generated >+ */ >+ protected NodeFigure createNodeFigure() { >+ NodeFigure figure = createNodePlate(); >+ figure.setLayoutManager(new StackLayout()); >+ IFigure shape = createNodeShape(); >+ figure.add(shape); >+ contentPane = setupContentPane(shape); >+ return figure; >+ } >+ >+ /** >+ * Default implementation treats passed figure as content pane. >+ * Respects layout one may have set for generated figure. >+ * @param nodeShape instance of generated figure class >+ * @generated >+ */ >+ protected IFigure setupContentPane(IFigure nodeShape) { >+ if (nodeShape.getLayoutManager() == null) { >+ ConstrainedToolbarLayout layout = new ConstrainedToolbarLayout(); >+ layout.setSpacing(getMapMode().DPtoLP(5)); >+ nodeShape.setLayoutManager(layout); >+ } >+ return nodeShape; // use nodeShape itself as contentPane >+ } >+ >+ /** >+ * @generated >+ */ >+ public IFigure getContentPane() { >+ if (contentPane != null) { >+ return contentPane; >+ } >+ return super.getContentPane(); >+ } >+ >+ /** >+ * @generated >+ */ >+ public EditPart getPrimaryChildEditPart() { >+ return getChildBySemanticHint(UMLVisualIDRegistry.getType(ArtifactName2EditPart.VISUAL_ID)); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void addChildVisual(EditPart childEditPart, int index) { >+ if (addFixedChild(childEditPart)) { >+ return; >+ } >+ super.addChildVisual(childEditPart, -1); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void removeChildVisual(EditPart childEditPart) { >+ if (removeFixedChild(childEditPart)) { >+ return; >+ } >+ super.removeChildVisual(childEditPart); >+ } >+ >+ /** >+ * @generated >+ */ >+ public class ArtifactFigure extends org.eclipse.draw2d.RectangleFigure { >+ >+ /** >+ * @generated >+ */ >+ public ArtifactFigure() { >+ >+ org.eclipse.gmf.internal.codegen.draw2d.GridLayout myGenLayoutManager = new org.eclipse.gmf.internal.codegen.draw2d.GridLayout(); >+ myGenLayoutManager.numColumns = 1; >+ myGenLayoutManager.makeColumnsEqualWidth = true; >+ myGenLayoutManager.marginWidth = 0; >+ myGenLayoutManager.marginHeight = 0; >+ myGenLayoutManager.horizontalSpacing = 0; >+ myGenLayoutManager.verticalSpacing = 0; >+ >+ this.setLayoutManager(myGenLayoutManager); >+ >+ createContents(); >+ } >+ >+ /** >+ * @generated >+ */ >+ private void createContents() { >+ org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel fig_0 = new org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel(); >+ fig_0.setText("\u00ABartifact\u00BB"); >+ >+ setFigureArtifactFigure_fixed_artifact(fig_0); >+ org.eclipse.gmf.internal.codegen.draw2d.GridLayoutData layData0 = new org.eclipse.gmf.internal.codegen.draw2d.GridLayoutData(); >+ layData0.verticalAlignment = org.eclipse.gmf.internal.codegen.draw2d.GridLayoutData.CENTER; >+ layData0.horizontalAlignment = org.eclipse.gmf.internal.codegen.draw2d.GridLayoutData.CENTER; >+ layData0.horizontalIndent = 0; >+ layData0.horizontalSpan = 1; >+ layData0.verticalSpan = 1; >+ layData0.grabExcessHorizontalSpace = true; >+ layData0.grabExcessVerticalSpace = false; >+ >+ this.add(fig_0, layData0); >+ org.eclipse.draw2d.RectangleFigure fig_1 = new org.eclipse.draw2d.RectangleFigure(); >+ fig_1.setFill(false); >+ fig_1.setOutline(false); >+ >+ org.eclipse.uml2.diagram.common.draw2d.CenterLayout layouter1 = new org.eclipse.uml2.diagram.common.draw2d.CenterLayout(); >+ >+ fig_1.setLayoutManager(layouter1); >+ >+ setFigureArtifactFigure_NameContainer(fig_1); >+ org.eclipse.gmf.internal.codegen.draw2d.GridLayoutData layData1 = new org.eclipse.gmf.internal.codegen.draw2d.GridLayoutData(); >+ layData1.verticalAlignment = org.eclipse.gmf.internal.codegen.draw2d.GridLayoutData.FILL; >+ layData1.horizontalAlignment = org.eclipse.gmf.internal.codegen.draw2d.GridLayoutData.FILL; >+ layData1.horizontalIndent = 0; >+ layData1.horizontalSpan = 1; >+ layData1.verticalSpan = 1; >+ layData1.grabExcessHorizontalSpace = true; >+ layData1.grabExcessVerticalSpace = true; >+ >+ this.add(fig_1, layData1); >+ org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel fig_2 = new org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel(); >+ >+ setFigureArtifactFigure_name(fig_2); >+ >+ Object layData2 = null; >+ >+ fig_1.add(fig_2, layData2); >+ } >+ >+ /** >+ * @generated >+ */ >+ private org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel fArtifactFigure_fixed_artifact; >+ >+ /** >+ * @generated >+ */ >+ public org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel getFigureArtifactFigure_fixed_artifact() { >+ return fArtifactFigure_fixed_artifact; >+ } >+ >+ /** >+ * @generated >+ */ >+ private void setFigureArtifactFigure_fixed_artifact(org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel fig) { >+ fArtifactFigure_fixed_artifact = fig; >+ } >+ >+ /** >+ * @generated >+ */ >+ private org.eclipse.draw2d.RectangleFigure fArtifactFigure_NameContainer; >+ >+ /** >+ * @generated >+ */ >+ public org.eclipse.draw2d.RectangleFigure getFigureArtifactFigure_NameContainer() { >+ return fArtifactFigure_NameContainer; >+ } >+ >+ /** >+ * @generated >+ */ >+ private void setFigureArtifactFigure_NameContainer(org.eclipse.draw2d.RectangleFigure fig) { >+ fArtifactFigure_NameContainer = fig; >+ } >+ >+ /** >+ * @generated >+ */ >+ private org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel fArtifactFigure_name; >+ >+ /** >+ * @generated >+ */ >+ public org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel getFigureArtifactFigure_name() { >+ return fArtifactFigure_name; >+ } >+ >+ /** >+ * @generated >+ */ >+ private void setFigureArtifactFigure_name(org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel fig) { >+ fArtifactFigure_name = fig; >+ } >+ >+ /** >+ * @generated >+ */ >+ private boolean myUseLocalCoordinates = false; >+ >+ /** >+ * @generated >+ */ >+ protected boolean useLocalCoordinates() { >+ return myUseLocalCoordinates; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setUseLocalCoordinates(boolean useLocalCoordinates) { >+ myUseLocalCoordinates = useLocalCoordinates; >+ } >+ >+ } >+ >+} >Index: src/org/eclipse/uml2/diagram/component/edit/parts/PortProvidedEditPart.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/component/edit/parts/PortProvidedEditPart.java >diff -N src/org/eclipse/uml2/diagram/component/edit/parts/PortProvidedEditPart.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/component/edit/parts/PortProvidedEditPart.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,55 @@ >+package org.eclipse.uml2.diagram.component.edit.parts; >+ >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.draw2d.Connection; >+ >+import org.eclipse.gef.EditPolicy; >+ >+import org.eclipse.gmf.runtime.diagram.ui.editparts.ConnectionNodeEditPart; >+ >+import org.eclipse.gmf.runtime.draw2d.ui.figures.PolylineConnectionEx; >+ >+import org.eclipse.uml2.diagram.component.edit.policies.PortProvidedItemSemanticEditPolicy; >+import org.eclipse.uml2.diagram.component.edit.policies.UMLReferenceConnectionEditPolicy; >+ >+/** >+ * @generated >+ */ >+public class PortProvidedEditPart extends ConnectionNodeEditPart { >+ >+ /** >+ * @generated >+ */ >+ public static final int VISUAL_ID = 4006; >+ >+ /** >+ * @generated >+ */ >+ public PortProvidedEditPart(View view) { >+ super(view); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void createDefaultEditPolicies() { >+ super.createDefaultEditPolicies(); >+ installEditPolicy(EditPolicy.CONNECTION_ROLE, new UMLReferenceConnectionEditPolicy()); >+ installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE, new PortProvidedItemSemanticEditPolicy()); >+ >+ } >+ >+ /** >+ * Creates figure for this edit part. >+ * >+ * Body of this method does not depend on settings in generation model >+ * so you may safely remove <i>generated</i> tag and modify it. >+ * >+ * @generated >+ */ >+ protected Connection createConnectionFigure() { >+ return new PolylineConnectionEx(); >+ } >+ >+} >Index: src/org/eclipse/uml2/diagram/component/edit/policies/ClassCanonicalEditPolicy.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/component/edit/policies/ClassCanonicalEditPolicy.java >diff -N src/org/eclipse/uml2/diagram/component/edit/policies/ClassCanonicalEditPolicy.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/component/edit/policies/ClassCanonicalEditPolicy.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,53 @@ >+package org.eclipse.uml2.diagram.component.edit.policies; >+ >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy; >+import org.eclipse.gmf.runtime.notation.View; >+import java.util.Iterator; >+import java.util.LinkedList; >+import java.util.List; >+ >+import org.eclipse.emf.ecore.EObject; >+ >+import org.eclipse.uml2.diagram.component.edit.parts.PortEditPart; >+import org.eclipse.uml2.diagram.component.part.UMLVisualIDRegistry; >+import org.eclipse.uml2.uml.StructuredClassifier; >+ >+/** >+ * @generated >+ */ >+public class ClassCanonicalEditPolicy extends CanonicalEditPolicy { >+ >+ /** >+ * @generated >+ */ >+ protected List getSemanticChildrenList() { >+ List result = new LinkedList(); >+ EObject modelObject = ((View) getHost().getModel()).getElement(); >+ View viewObject = (View) getHost().getModel(); >+ EObject nextValue; >+ int nodeVID; >+ for (Iterator values = ((StructuredClassifier) modelObject).getOwnedAttributes().iterator(); values.hasNext();) { >+ nextValue = (EObject) values.next(); >+ nodeVID = UMLVisualIDRegistry.getNodeVisualID(viewObject, nextValue); >+ if (PortEditPart.VISUAL_ID == nodeVID) { >+ result.add(nextValue); >+ } >+ } >+ return result; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected boolean shouldDeleteView(View view) { >+ return view.isSetElement() && view.getElement() != null && view.getElement().eIsProxy(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected String getDefaultFactoryHint() { >+ return null; >+ } >+ >+} >Index: src/org/eclipse/uml2/diagram/component/edit/policies/Component2CanonicalEditPolicy.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/component/edit/policies/Component2CanonicalEditPolicy.java >diff -N src/org/eclipse/uml2/diagram/component/edit/policies/Component2CanonicalEditPolicy.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/component/edit/policies/Component2CanonicalEditPolicy.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,53 @@ >+package org.eclipse.uml2.diagram.component.edit.policies; >+ >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy; >+import org.eclipse.gmf.runtime.notation.View; >+import java.util.Iterator; >+import java.util.LinkedList; >+import java.util.List; >+ >+import org.eclipse.emf.ecore.EObject; >+ >+import org.eclipse.uml2.diagram.component.edit.parts.PortEditPart; >+import org.eclipse.uml2.diagram.component.part.UMLVisualIDRegistry; >+import org.eclipse.uml2.uml.StructuredClassifier; >+ >+/** >+ * @generated >+ */ >+public class Component2CanonicalEditPolicy extends CanonicalEditPolicy { >+ >+ /** >+ * @generated >+ */ >+ protected List getSemanticChildrenList() { >+ List result = new LinkedList(); >+ EObject modelObject = ((View) getHost().getModel()).getElement(); >+ View viewObject = (View) getHost().getModel(); >+ EObject nextValue; >+ int nodeVID; >+ for (Iterator values = ((StructuredClassifier) modelObject).getOwnedAttributes().iterator(); values.hasNext();) { >+ nextValue = (EObject) values.next(); >+ nodeVID = UMLVisualIDRegistry.getNodeVisualID(viewObject, nextValue); >+ if (PortEditPart.VISUAL_ID == nodeVID) { >+ result.add(nextValue); >+ } >+ } >+ return result; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected boolean shouldDeleteView(View view) { >+ return view.isSetElement() && view.getElement() != null && view.getElement().eIsProxy(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected String getDefaultFactoryHint() { >+ return null; >+ } >+ >+} >Index: src/org/eclipse/uml2/diagram/component/edit/parts/InterfaceNameEditPart.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/component/edit/parts/InterfaceNameEditPart.java >diff -N src/org/eclipse/uml2/diagram/component/edit/parts/InterfaceNameEditPart.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/component/edit/parts/InterfaceNameEditPart.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,544 @@ >+package org.eclipse.uml2.diagram.component.edit.parts; >+ >+import org.eclipse.draw2d.Label; >+import org.eclipse.draw2d.IFigure; >+import org.eclipse.draw2d.geometry.Point; >+import org.eclipse.gef.EditPolicy; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.ITextAwareEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.LabelDirectEditPolicy; >+import org.eclipse.gmf.runtime.notation.View; >+import java.util.Collections; >+import java.util.List; >+ >+import org.eclipse.emf.common.notify.Notification; >+ >+import org.eclipse.emf.ecore.EObject; >+ >+import org.eclipse.emf.transaction.RunnableWithResult; >+ >+import org.eclipse.gef.AccessibleEditPart; >+import org.eclipse.gef.Request; >+ >+import org.eclipse.gef.requests.DirectEditRequest; >+ >+import org.eclipse.gef.tools.DirectEditManager; >+ >+import org.eclipse.gmf.runtime.common.ui.services.parser.IParser; >+import org.eclipse.gmf.runtime.common.ui.services.parser.IParserEditStatus; >+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserEditStatus; >+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserOptions; >+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserService; >+ >+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart; >+ >+import org.eclipse.gmf.runtime.diagram.ui.l10n.DiagramColorRegistry; >+ >+import org.eclipse.gmf.runtime.diagram.ui.requests.RequestConstants; >+ >+import org.eclipse.gmf.runtime.diagram.ui.tools.TextDirectEditManager; >+ >+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel; >+ >+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter; >+ >+import org.eclipse.gmf.runtime.emf.type.core.IElementType; >+ >+import org.eclipse.gmf.runtime.emf.ui.services.parser.ISemanticParser; >+import org.eclipse.gmf.runtime.emf.ui.services.parser.ParserHintAdapter; >+ >+import org.eclipse.gmf.runtime.notation.FontStyle; >+import org.eclipse.gmf.runtime.notation.NotationPackage; >+ >+import org.eclipse.jface.text.contentassist.IContentAssistProcessor; >+ >+import org.eclipse.jface.viewers.ICellEditorValidator; >+ >+import org.eclipse.swt.SWT; >+ >+import org.eclipse.swt.accessibility.AccessibleEvent; >+ >+import org.eclipse.swt.graphics.Color; >+import org.eclipse.swt.graphics.FontData; >+import org.eclipse.swt.graphics.Image; >+import org.eclipse.uml2.diagram.component.edit.policies.UMLTextSelectionEditPolicy; >+import org.eclipse.uml2.diagram.component.part.UMLVisualIDRegistry; >+import org.eclipse.uml2.diagram.component.providers.UMLElementTypes; >+ >+/** >+ * @generated >+ */ >+public class InterfaceNameEditPart extends UMLExtNodeLabelEditPart implements ITextAwareEditPart { >+ >+ /** >+ * @generated >+ */ >+ public static final int VISUAL_ID = 5009; >+ >+ /** >+ * @generated >+ */ >+ private DirectEditManager manager; >+ >+ /** >+ * @generated >+ */ >+ private IParser parser; >+ >+ /** >+ * @generated >+ */ >+ private List parserElements; >+ >+ /** >+ * @generated >+ */ >+ private String defaultText; >+ >+ /** >+ * @generated >+ */ >+ static { >+ registerSnapBackPosition(UMLVisualIDRegistry.getType(InterfaceNameEditPart.VISUAL_ID), new Point(0, 0)); >+ } >+ >+ /** >+ * @generated >+ */ >+ public InterfaceNameEditPart(View view) { >+ super(view); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void createDefaultEditPolicies() { >+ super.createDefaultEditPolicies(); >+ installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE, new LabelDirectEditPolicy()); >+ >+ } >+ >+ /** >+ * @generated >+ */ >+ protected String getLabelTextHelper(IFigure figure) { >+ if (figure instanceof WrapLabel) { >+ return ((WrapLabel) figure).getText(); >+ } else { >+ return ((Label) figure).getText(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setLabelTextHelper(IFigure figure, String text) { >+ if (figure instanceof WrapLabel) { >+ ((WrapLabel) figure).setText(text); >+ } else { >+ ((Label) figure).setText(text); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Image getLabelIconHelper(IFigure figure) { >+ if (figure instanceof WrapLabel) { >+ return ((WrapLabel) figure).getIcon(); >+ } else { >+ return ((Label) figure).getIcon(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setLabelIconHelper(IFigure figure, Image icon) { >+ if (figure instanceof WrapLabel) { >+ ((WrapLabel) figure).setIcon(icon); >+ } else { >+ ((Label) figure).setIcon(icon); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ public void setLabel(IFigure figure) { >+ unregisterVisuals(); >+ setFigure(figure); >+ defaultText = getLabelTextHelper(figure); >+ registerVisuals(); >+ refreshVisuals(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected List getModelChildren() { >+ return Collections.EMPTY_LIST; >+ } >+ >+ /** >+ * @generated >+ */ >+ public IGraphicalEditPart getChildBySemanticHint(String semanticHint) { >+ return null; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject getParserElement() { >+ EObject element = resolveSemanticElement(); >+ return element != null ? element : (View) getModel(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Image getLabelIcon() { >+ return null; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected String getLabelText() { >+ String text = null; >+ if (getParser() != null) { >+ text = getParser().getPrintString(new EObjectAdapter(getParserElement()), getParserOptions().intValue()); >+ } >+ if (text == null || text.length() == 0) { >+ text = defaultText; >+ } >+ return text; >+ } >+ >+ /** >+ * @generated >+ */ >+ public void setLabelText(String text) { >+ setLabelTextHelper(getFigure(), text); >+ Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE); >+ if (pdEditPolicy instanceof UMLTextSelectionEditPolicy) { >+ ((UMLTextSelectionEditPolicy) pdEditPolicy).refreshFeedback(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ public String getEditText() { >+ if (getParser() == null) { >+ return ""; //$NON-NLS-1$ >+ } >+ return getParser().getEditString(new EObjectAdapter(getParserElement()), getParserOptions().intValue()); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected boolean isEditable() { >+ return getEditText() != null; >+ } >+ >+ /** >+ * @generated >+ */ >+ public ICellEditorValidator getEditTextValidator() { >+ return new ICellEditorValidator() { >+ >+ public String isValid(final Object value) { >+ if (value instanceof String) { >+ final EObject element = getParserElement(); >+ final IParser parser = getParser(); >+ try { >+ IParserEditStatus valid = (IParserEditStatus) getEditingDomain().runExclusive(new RunnableWithResult.Impl() { >+ >+ public void run() { >+ setResult(parser.isValidEditString(new EObjectAdapter(element), (String) value)); >+ } >+ }); >+ return valid.getCode() == ParserEditStatus.EDITABLE ? null : valid.getMessage(); >+ } catch (InterruptedException ie) { >+ ie.printStackTrace(); >+ } >+ } >+ >+ // shouldn't get here >+ return null; >+ } >+ }; >+ } >+ >+ /** >+ * @generated >+ */ >+ public IContentAssistProcessor getCompletionProcessor() { >+ if (getParser() == null) { >+ return null; >+ } >+ return getParser().getCompletionProcessor(new EObjectAdapter(getParserElement())); >+ } >+ >+ /** >+ * @generated >+ */ >+ public ParserOptions getParserOptions() { >+ return ParserOptions.NONE; >+ } >+ >+ /** >+ * @generated >+ */ >+ public IParser getParser() { >+ if (parser == null) { >+ String parserHint = ((View) getModel()).getType(); >+ ParserHintAdapter hintAdapter = new ParserHintAdapter(getParserElement(), parserHint) { >+ >+ public Object getAdapter(Class adapter) { >+ if (IElementType.class.equals(adapter)) { >+ return UMLElementTypes.Interface_3005; >+ } >+ return super.getAdapter(adapter); >+ } >+ }; >+ parser = ParserService.getInstance().getParser(hintAdapter); >+ } >+ return parser; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected DirectEditManager getManager() { >+ if (manager == null) { >+ setManager(new TextDirectEditManager(this, TextDirectEditManager.getTextCellEditorClass(this), UMLEditPartFactory.getTextCellEditorLocator(this))); >+ } >+ return manager; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setManager(DirectEditManager manager) { >+ this.manager = manager; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void performDirectEdit() { >+ getManager().show(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void performDirectEdit(Point eventLocation) { >+ if (getManager().getClass() == TextDirectEditManager.class) { >+ ((TextDirectEditManager) getManager()).show(eventLocation.getSWTPoint()); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ private void performDirectEdit(char initialCharacter) { >+ if (getManager() instanceof TextDirectEditManager) { >+ ((TextDirectEditManager) getManager()).show(initialCharacter); >+ } else { >+ performDirectEdit(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void performDirectEditRequest(Request request) { >+ final Request theRequest = request; >+ try { >+ getEditingDomain().runExclusive(new Runnable() { >+ >+ public void run() { >+ if (isActive() && isEditable()) { >+ if (theRequest.getExtendedData().get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR) instanceof Character) { >+ Character initialChar = (Character) theRequest.getExtendedData().get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR); >+ performDirectEdit(initialChar.charValue()); >+ } else if ((theRequest instanceof DirectEditRequest) && (getEditText().equals(getLabelText()))) { >+ DirectEditRequest editRequest = (DirectEditRequest) theRequest; >+ performDirectEdit(editRequest.getLocation()); >+ } else { >+ performDirectEdit(); >+ } >+ } >+ } >+ }); >+ } catch (InterruptedException e) { >+ e.printStackTrace(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshVisuals() { >+ super.refreshVisuals(); >+ refreshLabel(); >+ refreshFont(); >+ refreshFontColor(); >+ refreshUnderline(); >+ refreshStrikeThrough(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshLabel() { >+ setLabelTextHelper(getFigure(), getLabelText()); >+ setLabelIconHelper(getFigure(), getLabelIcon()); >+ Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE); >+ if (pdEditPolicy instanceof UMLTextSelectionEditPolicy) { >+ ((UMLTextSelectionEditPolicy) pdEditPolicy).refreshFeedback(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshUnderline() { >+ FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle()); >+ if (style != null && getFigure() instanceof WrapLabel) { >+ ((WrapLabel) getFigure()).setTextUnderline(style.isUnderline()); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshStrikeThrough() { >+ FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle()); >+ if (style != null && getFigure() instanceof WrapLabel) { >+ ((WrapLabel) getFigure()).setTextStrikeThrough(style.isStrikeThrough()); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshFont() { >+ FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle()); >+ if (style != null) { >+ FontData fontData = new FontData(style.getFontName(), style.getFontHeight(), (style.isBold() ? SWT.BOLD : SWT.NORMAL) | (style.isItalic() ? SWT.ITALIC : SWT.NORMAL)); >+ setFont(fontData); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setFontColor(Color color) { >+ getFigure().setForegroundColor(color); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void addSemanticListeners() { >+ if (getParser() instanceof ISemanticParser) { >+ EObject element = resolveSemanticElement(); >+ parserElements = ((ISemanticParser) getParser()).getSemanticElementsBeingParsed(element); >+ for (int i = 0; i < parserElements.size(); i++) { >+ addListenerFilter("SemanticModel" + i, this, (EObject) parserElements.get(i)); //$NON-NLS-1$ >+ } >+ } else { >+ super.addSemanticListeners(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void removeSemanticListeners() { >+ if (parserElements != null) { >+ for (int i = 0; i < parserElements.size(); i++) { >+ removeListenerFilter("SemanticModel" + i); //$NON-NLS-1$ >+ } >+ } else { >+ super.removeSemanticListeners(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected AccessibleEditPart getAccessibleEditPart() { >+ if (accessibleEP == null) { >+ accessibleEP = new AccessibleGraphicalEditPart() { >+ >+ public void getName(AccessibleEvent e) { >+ e.result = getLabelTextHelper(getFigure()); >+ } >+ }; >+ } >+ return accessibleEP; >+ } >+ >+ /** >+ * @generated >+ */ >+ private View getFontStyleOwnerView() { >+ return getPrimaryView(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void handleNotificationEvent(Notification event) { >+ Object feature = event.getFeature(); >+ if (NotationPackage.eINSTANCE.getFontStyle_FontColor().equals(feature)) { >+ Integer c = (Integer) event.getNewValue(); >+ setFontColor(DiagramColorRegistry.getInstance().getColor(c)); >+ } else if (NotationPackage.eINSTANCE.getFontStyle_Underline().equals(feature)) { >+ refreshUnderline(); >+ } else if (NotationPackage.eINSTANCE.getFontStyle_StrikeThrough().equals(feature)) { >+ refreshStrikeThrough(); >+ } else if (NotationPackage.eINSTANCE.getFontStyle_FontHeight().equals(feature) || NotationPackage.eINSTANCE.getFontStyle_FontName().equals(feature) >+ || NotationPackage.eINSTANCE.getFontStyle_Bold().equals(feature) || NotationPackage.eINSTANCE.getFontStyle_Italic().equals(feature)) { >+ refreshFont(); >+ } else { >+ if (getParser() != null && getParser().isAffectingEvent(event, getParserOptions().intValue())) { >+ refreshLabel(); >+ } >+ if (getParser() instanceof ISemanticParser) { >+ ISemanticParser modelParser = (ISemanticParser) getParser(); >+ if (modelParser.areSemanticElementsAffected(null, event)) { >+ removeSemanticListeners(); >+ if (resolveSemanticElement() != null) { >+ addSemanticListeners(); >+ } >+ refreshLabel(); >+ } >+ } >+ } >+ super.handleNotificationEvent(event); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected IFigure createFigure() { >+ IFigure label = createFigurePrim(); >+ defaultText = getLabelTextHelper(label); >+ return label; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected IFigure createFigurePrim() { >+ return new WrapLabel(); >+ } >+ >+} >Index: src/org/eclipse/uml2/diagram/component/providers/UMLAbstractParser.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/component/providers/UMLAbstractParser.java >diff -N src/org/eclipse/uml2/diagram/component/providers/UMLAbstractParser.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/component/providers/UMLAbstractParser.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,377 @@ >+package org.eclipse.uml2.diagram.component.providers; >+ >+import java.text.MessageFormat; >+import java.text.ParsePosition; >+ >+import org.eclipse.core.runtime.IAdaptable; >+import org.eclipse.emf.ecore.EClassifier; >+import org.eclipse.emf.ecore.EDataType; >+import org.eclipse.emf.ecore.EEnum; >+import org.eclipse.emf.ecore.EEnumLiteral; >+import org.eclipse.emf.ecore.EObject; >+import org.eclipse.emf.ecore.EStructuralFeature; >+import org.eclipse.gmf.runtime.common.core.command.ICommand; >+import org.eclipse.gmf.runtime.common.core.command.UnexecutableCommand; >+import org.eclipse.gmf.runtime.common.ui.services.parser.IParser; >+import org.eclipse.gmf.runtime.common.ui.services.parser.IParserEditStatus; >+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserEditStatus; >+import org.eclipse.gmf.runtime.emf.type.core.commands.SetValueCommand; >+import org.eclipse.gmf.runtime.emf.type.core.requests.SetRequest; >+import org.eclipse.jface.text.contentassist.IContentAssistProcessor; >+import org.eclipse.uml2.diagram.component.part.UMLDiagramEditorPlugin; >+ >+/** >+ * @generated >+ */ >+public abstract class UMLAbstractParser implements IParser { >+ >+ /** >+ * @generated >+ */ >+ private String viewPattern; >+ >+ /** >+ * @generated >+ */ >+ private MessageFormat viewProcessor; >+ >+ /** >+ * @generated >+ */ >+ private String editPattern; >+ >+ /** >+ * @generated >+ */ >+ private MessageFormat editProcessor; >+ >+ /** >+ * @generated >+ */ >+ public String getViewPattern() { >+ return viewPattern; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected MessageFormat getViewProcessor() { >+ return viewProcessor; >+ } >+ >+ /** >+ * @generated >+ */ >+ public void setViewPattern(String viewPattern) { >+ this.viewPattern = viewPattern; >+ viewProcessor = createViewProcessor(viewPattern); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected MessageFormat createViewProcessor(String viewPattern) { >+ return new MessageFormat(viewPattern); >+ } >+ >+ /** >+ * @generated >+ */ >+ public String getEditPattern() { >+ return editPattern; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected MessageFormat getEditProcessor() { >+ return editProcessor; >+ } >+ >+ /** >+ * @generated >+ */ >+ public void setEditPattern(String editPattern) { >+ this.editPattern = editPattern; >+ editProcessor = createEditProcessor(editPattern); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected MessageFormat createEditProcessor(String editPattern) { >+ return new MessageFormat(editPattern); >+ } >+ >+ /** >+ * @generated >+ */ >+ public String getPrintString(IAdaptable adapter, int flags) { >+ return getStringByPattern(adapter, flags, getViewPattern(), getViewProcessor()); >+ } >+ >+ /** >+ * @generated >+ */ >+ public String getEditString(IAdaptable adapter, int flags) { >+ return getStringByPattern(adapter, flags, getEditPattern(), getEditProcessor()); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected abstract String getStringByPattern(IAdaptable adapter, int flags, String pattern, MessageFormat processor); >+ >+ /** >+ * @generated >+ */ >+ public IParserEditStatus isValidEditString(IAdaptable element, String editString) { >+ ParsePosition pos = new ParsePosition(0); >+ Object[] values = getEditProcessor().parse(editString, pos); >+ if (values == null) { >+ return new ParserEditStatus(UMLDiagramEditorPlugin.ID, IParserEditStatus.UNEDITABLE, "Invalid input at " + pos.getErrorIndex()); >+ } >+ return validateNewValues(values); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected IParserEditStatus validateNewValues(Object[] values) { >+ return ParserEditStatus.EDITABLE_STATUS; >+ } >+ >+ /** >+ * @generated >+ */ >+ public ICommand getParseCommand(IAdaptable adapter, String newString, int flags) { >+ Object[] values = getEditProcessor().parse(newString, new ParsePosition(0)); >+ if (values == null || validateNewValues(values).getCode() != IParserEditStatus.EDITABLE) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ return getParseCommand(adapter, values); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected abstract ICommand getParseCommand(IAdaptable adapter, Object[] values); >+ >+ /** >+ * @generated >+ */ >+ public IContentAssistProcessor getCompletionProcessor(IAdaptable element) { >+ return null; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected ICommand getModificationCommand(EObject element, EStructuralFeature feature, Object value) { >+ value = getValidNewValue(feature, value); >+ if (value instanceof InvalidValue) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ SetRequest request = new SetRequest(element, feature, value); >+ return new SetValueCommand(request); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Object getValidValue(EStructuralFeature feature, Object value) { >+ EClassifier type = feature.getEType(); >+ if (type instanceof EDataType) { >+ Class iClass = type.getInstanceClass(); >+ if (String.class.equals(iClass)) { >+ if (value == null) { >+ value = ""; //$NON-NLS-1$ >+ } >+ } >+ } >+ return value; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Object getValidNewValue(EStructuralFeature feature, Object value) { >+ EClassifier type = feature.getEType(); >+ if (type instanceof EDataType) { >+ Class iClass = type.getInstanceClass(); >+ if (Boolean.TYPE.equals(iClass)) { >+ if (value instanceof Boolean) { >+ // ok >+ } else if (value instanceof String) { >+ value = Boolean.valueOf((String) value); >+ } else { >+ value = new InvalidValue("Value of type Boolean is expected"); >+ } >+ } else if (Character.TYPE.equals(iClass)) { >+ if (value instanceof Character) { >+ // ok >+ } else if (value instanceof String) { >+ String s = (String) value; >+ if (s.length() == 0) { >+ value = null; >+ } else { >+ value = new Character(s.charAt(0)); >+ } >+ } else { >+ value = new InvalidValue("Value of type Character is expected"); >+ } >+ } else if (Byte.TYPE.equals(iClass)) { >+ if (value instanceof Byte) { >+ // ok >+ } else if (value instanceof Number) { >+ value = new Byte(((Number) value).byteValue()); >+ } else if (value instanceof String) { >+ String s = (String) value; >+ if (s.length() == 0) { >+ value = null; >+ } else { >+ try { >+ value = Byte.valueOf(s); >+ } catch (NumberFormatException nfe) { >+ value = new InvalidValue("String value does not convert to Byte value"); >+ } >+ } >+ } else { >+ value = new InvalidValue("Value of type Byte is expected"); >+ } >+ } else if (Short.TYPE.equals(iClass)) { >+ if (value instanceof Short) { >+ // ok >+ } else if (value instanceof Number) { >+ value = new Short(((Number) value).shortValue()); >+ } else if (value instanceof String) { >+ String s = (String) value; >+ if (s.length() == 0) { >+ value = null; >+ } else { >+ try { >+ value = Short.valueOf(s); >+ } catch (NumberFormatException nfe) { >+ value = new InvalidValue("String value does not convert to Short value"); >+ } >+ } >+ } else { >+ value = new InvalidValue("Value of type Short is expected"); >+ } >+ } else if (Integer.TYPE.equals(iClass)) { >+ if (value instanceof Integer) { >+ // ok >+ } else if (value instanceof Number) { >+ value = new Integer(((Number) value).intValue()); >+ } else if (value instanceof String) { >+ String s = (String) value; >+ if (s.length() == 0) { >+ value = null; >+ } else { >+ try { >+ value = Integer.valueOf(s); >+ } catch (NumberFormatException nfe) { >+ value = new InvalidValue("String value does not convert to Integer value"); >+ } >+ } >+ } else { >+ value = new InvalidValue("Value of type Integer is expected"); >+ } >+ } else if (Long.TYPE.equals(iClass)) { >+ if (value instanceof Long) { >+ // ok >+ } else if (value instanceof Number) { >+ value = new Long(((Number) value).longValue()); >+ } else if (value instanceof String) { >+ String s = (String) value; >+ if (s.length() == 0) { >+ value = null; >+ } else { >+ try { >+ value = Long.valueOf(s); >+ } catch (NumberFormatException nfe) { >+ value = new InvalidValue("String value does not convert to Long value"); >+ } >+ } >+ } else { >+ value = new InvalidValue("Value of type Long is expected"); >+ } >+ } else if (Float.TYPE.equals(iClass)) { >+ if (value instanceof Float) { >+ // ok >+ } else if (value instanceof Number) { >+ value = new Float(((Number) value).floatValue()); >+ } else if (value instanceof String) { >+ String s = (String) value; >+ if (s.length() == 0) { >+ value = null; >+ } else { >+ try { >+ value = Float.valueOf(s); >+ } catch (NumberFormatException nfe) { >+ value = new InvalidValue("String value does not convert to Float value"); >+ } >+ } >+ } else { >+ value = new InvalidValue("Value of type Float is expected"); >+ } >+ } else if (Double.TYPE.equals(iClass)) { >+ if (value instanceof Double) { >+ // ok >+ } else if (value instanceof Number) { >+ value = new Double(((Number) value).doubleValue()); >+ } else if (value instanceof String) { >+ String s = (String) value; >+ if (s.length() == 0) { >+ value = null; >+ } else { >+ try { >+ value = Double.valueOf(s); >+ } catch (NumberFormatException nfe) { >+ value = new InvalidValue("String value does not convert to Double value"); >+ } >+ } >+ } else { >+ value = new InvalidValue("Value of type Double is expected"); >+ } >+ } else if (type instanceof EEnum) { >+ if (value instanceof String) { >+ EEnumLiteral literal = ((EEnum) type).getEEnumLiteralByLiteral((String) value); >+ if (literal == null) { >+ value = new InvalidValue("Unknown literal: " + value); >+ } else { >+ value = literal.getInstance(); >+ } >+ } else { >+ value = new InvalidValue("Value of type String is expected"); >+ } >+ } >+ } >+ return value; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected class InvalidValue { >+ >+ /** >+ * @generated >+ */ >+ private String description; >+ >+ /** >+ * @generated >+ */ >+ public InvalidValue(String description) { >+ this.description = description; >+ } >+ >+ /** >+ * @generated >+ */ >+ public String toString() { >+ return description; >+ } >+ } >+} >Index: src/org/eclipse/uml2/diagram/component/view/factories/PortRequiredViewFactory.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/component/view/factories/PortRequiredViewFactory.java >diff -N src/org/eclipse/uml2/diagram/component/view/factories/PortRequiredViewFactory.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/component/view/factories/PortRequiredViewFactory.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,52 @@ >+package org.eclipse.uml2.diagram.component.view.factories; >+ >+import java.util.ArrayList; >+import java.util.List; >+ >+import org.eclipse.core.runtime.IAdaptable; >+ >+import org.eclipse.emf.ecore.EAnnotation; >+import org.eclipse.emf.ecore.EcoreFactory; >+ >+import org.eclipse.gmf.runtime.diagram.ui.view.factories.ConnectionViewFactory; >+ >+import org.eclipse.gmf.runtime.notation.NotationFactory; >+import org.eclipse.gmf.runtime.notation.View; >+ >+import org.eclipse.uml2.diagram.component.edit.parts.PackageEditPart; >+import org.eclipse.uml2.diagram.component.part.UMLVisualIDRegistry; >+ >+/** >+ * @generated >+ */ >+public class PortRequiredViewFactory extends ConnectionViewFactory { >+ >+ /** >+ * @generated >+ */ >+ protected List createStyles(View view) { >+ List styles = new ArrayList(); >+ styles.add(NotationFactory.eINSTANCE.createRoutingStyle()); >+ styles.add(NotationFactory.eINSTANCE.createFontStyle()); >+ styles.add(NotationFactory.eINSTANCE.createLineStyle()); >+ return styles; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void decorateView(View containerView, View view, IAdaptable semanticAdapter, String semanticHint, int index, boolean persisted) { >+ if (semanticHint == null) { >+ semanticHint = UMLVisualIDRegistry.getType(org.eclipse.uml2.diagram.component.edit.parts.PortRequiredEditPart.VISUAL_ID); >+ view.setType(semanticHint); >+ } >+ super.decorateView(containerView, view, semanticAdapter, semanticHint, index, persisted); >+ if (!PackageEditPart.MODEL_ID.equals(UMLVisualIDRegistry.getModelID(containerView))) { >+ EAnnotation shortcutAnnotation = EcoreFactory.eINSTANCE.createEAnnotation(); >+ shortcutAnnotation.setSource("Shortcut"); //$NON-NLS-1$ >+ shortcutAnnotation.getDetails().put("modelID", PackageEditPart.MODEL_ID); //$NON-NLS-1$ >+ view.getEAnnotations().add(shortcutAnnotation); >+ } >+ } >+ >+} >Index: src/org/eclipse/uml2/diagram/component/edit/policies/Component2ItemSemanticEditPolicy.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/component/edit/policies/Component2ItemSemanticEditPolicy.java >diff -N src/org/eclipse/uml2/diagram/component/edit/policies/Component2ItemSemanticEditPolicy.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/component/edit/policies/Component2ItemSemanticEditPolicy.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,120 @@ >+package org.eclipse.uml2.diagram.component.edit.policies; >+ >+import org.eclipse.gef.commands.Command; >+import org.eclipse.gmf.runtime.emf.type.core.commands.DestroyElementCommand; >+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateRelationshipRequest; >+import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest; >+import org.eclipse.emf.ecore.EObject; >+import org.eclipse.emf.ecore.EAnnotation; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.emf.ecore.EClass; >+ >+import org.eclipse.gef.commands.UnexecutableCommand; >+ >+import org.eclipse.gmf.runtime.emf.type.core.commands.CreateElementCommand; >+ >+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest; >+ >+import org.eclipse.uml2.diagram.component.providers.UMLElementTypes; >+import org.eclipse.uml2.uml.Port; >+import org.eclipse.uml2.uml.UMLPackage; >+ >+/** >+ * @generated >+ */ >+public class Component2ItemSemanticEditPolicy extends UMLBaseItemSemanticEditPolicy { >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCommand(CreateElementRequest req) { >+ if (UMLElementTypes.Port_3002 == req.getElementType()) { >+ if (req.getContainmentFeature() == null) { >+ req.setContainmentFeature(UMLPackage.eINSTANCE.getStructuredClassifier_OwnedAttribute()); >+ } >+ return getMSLWrapper(new CreatePort_3002Command(req)); >+ } >+ return super.getCreateCommand(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ private static class CreatePort_3002Command extends CreateElementCommand { >+ >+ /** >+ * @generated >+ */ >+ public CreatePort_3002Command(CreateElementRequest req) { >+ super(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EClass getEClassToEdit() { >+ return UMLPackage.eINSTANCE.getComponent(); >+ }; >+ >+ /** >+ * @generated >+ */ >+ protected EObject getElementToEdit() { >+ EObject container = ((CreateElementRequest) getRequest()).getContainer(); >+ if (container instanceof View) { >+ container = ((View) container).getElement(); >+ } >+ return container; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject doDefaultElementCreation() { >+ Port newElement = (Port) super.doDefaultElementCreation(); >+ if (newElement != null) { >+ UMLElementTypes.Initializers.Port_3002.init(newElement); >+ } >+ return newElement; >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getDestroyElementCommand(DestroyElementRequest req) { >+ return getMSLWrapper(new DestroyElementCommand(req) { >+ >+ protected EObject getElementToDestroy() { >+ View view = (View) getHost().getModel(); >+ EAnnotation annotation = view.getEAnnotation("Shortcut"); //$NON-NLS-1$ >+ if (annotation != null) { >+ return view; >+ } >+ return super.getElementToDestroy(); >+ } >+ >+ }); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateRelationshipCommand(CreateRelationshipRequest req) { >+ if (UMLElementTypes.InterfaceRealization_4001 == req.getElementType()) { >+ return req.getTarget() == null ? getCreateStartOutgoingInterfaceRealization4001Command(req) : null; >+ } >+ return super.getCreateRelationshipCommand(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateStartOutgoingInterfaceRealization4001Command(CreateRelationshipRequest req) { >+ if (!UMLBaseItemSemanticEditPolicy.LinkConstraints.InterfaceRealization_4001.canCreateLink(req, false)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ return new Command() { >+ }; >+ } >+} >Index: .project >=================================================================== >RCS file: .project >diff -N .project >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ .project 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,28 @@ >+<?xml version="1.0" encoding="UTF-8"?> >+<projectDescription> >+ <name>org.eclipse.uml2.diagram.component</name> >+ <comment></comment> >+ <projects> >+ </projects> >+ <buildSpec> >+ <buildCommand> >+ <name>org.eclipse.jdt.core.javabuilder</name> >+ <arguments> >+ </arguments> >+ </buildCommand> >+ <buildCommand> >+ <name>org.eclipse.pde.ManifestBuilder</name> >+ <arguments> >+ </arguments> >+ </buildCommand> >+ <buildCommand> >+ <name>org.eclipse.pde.SchemaBuilder</name> >+ <arguments> >+ </arguments> >+ </buildCommand> >+ </buildSpec> >+ <natures> >+ <nature>org.eclipse.jdt.core.javanature</nature> >+ <nature>org.eclipse.pde.PluginNature</nature> >+ </natures> >+</projectDescription> >Index: src/org/eclipse/uml2/diagram/component/edit/policies/ComponentCanonicalEditPolicy.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/component/edit/policies/ComponentCanonicalEditPolicy.java >diff -N src/org/eclipse/uml2/diagram/component/edit/policies/ComponentCanonicalEditPolicy.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/component/edit/policies/ComponentCanonicalEditPolicy.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,53 @@ >+package org.eclipse.uml2.diagram.component.edit.policies; >+ >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy; >+import org.eclipse.gmf.runtime.notation.View; >+import java.util.Iterator; >+import java.util.LinkedList; >+import java.util.List; >+ >+import org.eclipse.emf.ecore.EObject; >+ >+import org.eclipse.uml2.diagram.component.edit.parts.PortEditPart; >+import org.eclipse.uml2.diagram.component.part.UMLVisualIDRegistry; >+import org.eclipse.uml2.uml.StructuredClassifier; >+ >+/** >+ * @generated >+ */ >+public class ComponentCanonicalEditPolicy extends CanonicalEditPolicy { >+ >+ /** >+ * @generated >+ */ >+ protected List getSemanticChildrenList() { >+ List result = new LinkedList(); >+ EObject modelObject = ((View) getHost().getModel()).getElement(); >+ View viewObject = (View) getHost().getModel(); >+ EObject nextValue; >+ int nodeVID; >+ for (Iterator values = ((StructuredClassifier) modelObject).getOwnedAttributes().iterator(); values.hasNext();) { >+ nextValue = (EObject) values.next(); >+ nodeVID = UMLVisualIDRegistry.getNodeVisualID(viewObject, nextValue); >+ if (PortEditPart.VISUAL_ID == nodeVID) { >+ result.add(nextValue); >+ } >+ } >+ return result; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected boolean shouldDeleteView(View view) { >+ return view.isSetElement() && view.getElement() != null && view.getElement().eIsProxy(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected String getDefaultFactoryHint() { >+ return null; >+ } >+ >+} >Index: src/org/eclipse/uml2/diagram/component/edit/parts/ClassName2EditPart.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/component/edit/parts/ClassName2EditPart.java >diff -N src/org/eclipse/uml2/diagram/component/edit/parts/ClassName2EditPart.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/component/edit/parts/ClassName2EditPart.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,567 @@ >+package org.eclipse.uml2.diagram.component.edit.parts; >+ >+import java.util.ArrayList; >+import java.util.List; >+import org.eclipse.gef.EditPolicy; >+import org.eclipse.gef.GraphicalEditPart; >+import org.eclipse.gef.Request; >+import org.eclipse.gef.commands.Command; >+import org.eclipse.gef.editpolicies.NonResizableEditPolicy; >+import org.eclipse.gef.handles.NonResizableHandleKit; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.ITextAwareEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.LabelDirectEditPolicy; >+import org.eclipse.gmf.runtime.notation.View; >+import java.util.Collections; >+ >+import org.eclipse.draw2d.IFigure; >+import org.eclipse.draw2d.Label; >+ >+import org.eclipse.draw2d.geometry.Point; >+ >+import org.eclipse.emf.common.notify.Notification; >+ >+import org.eclipse.emf.ecore.EObject; >+ >+import org.eclipse.emf.transaction.RunnableWithResult; >+ >+import org.eclipse.gef.AccessibleEditPart; >+ >+import org.eclipse.gef.requests.DirectEditRequest; >+ >+import org.eclipse.gef.tools.DirectEditManager; >+ >+import org.eclipse.gmf.runtime.common.ui.services.parser.IParser; >+import org.eclipse.gmf.runtime.common.ui.services.parser.IParserEditStatus; >+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserEditStatus; >+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserOptions; >+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserService; >+ >+import org.eclipse.gmf.runtime.diagram.ui.editparts.CompartmentEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart; >+ >+import org.eclipse.gmf.runtime.diagram.ui.l10n.DiagramColorRegistry; >+ >+import org.eclipse.gmf.runtime.diagram.ui.requests.RequestConstants; >+ >+import org.eclipse.gmf.runtime.diagram.ui.tools.TextDirectEditManager; >+ >+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel; >+ >+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter; >+ >+import org.eclipse.gmf.runtime.emf.type.core.IElementType; >+ >+import org.eclipse.gmf.runtime.emf.ui.services.parser.ISemanticParser; >+import org.eclipse.gmf.runtime.emf.ui.services.parser.ParserHintAdapter; >+ >+import org.eclipse.gmf.runtime.notation.FontStyle; >+import org.eclipse.gmf.runtime.notation.NotationPackage; >+ >+import org.eclipse.jface.text.contentassist.IContentAssistProcessor; >+ >+import org.eclipse.jface.viewers.ICellEditorValidator; >+ >+import org.eclipse.swt.SWT; >+ >+import org.eclipse.swt.accessibility.AccessibleEvent; >+ >+import org.eclipse.swt.graphics.Color; >+import org.eclipse.swt.graphics.FontData; >+import org.eclipse.swt.graphics.Image; >+import org.eclipse.uml2.diagram.component.edit.policies.UMLTextSelectionEditPolicy; >+import org.eclipse.uml2.diagram.component.providers.UMLElementTypes; >+ >+/** >+ * @generated >+ */ >+public class ClassName2EditPart extends CompartmentEditPart implements ITextAwareEditPart { >+ >+ /** >+ * @generated >+ */ >+ public static final int VISUAL_ID = 5008; >+ >+ /** >+ * @generated >+ */ >+ private DirectEditManager manager; >+ >+ /** >+ * @generated >+ */ >+ private IParser parser; >+ >+ /** >+ * @generated >+ */ >+ private List parserElements; >+ >+ /** >+ * @generated >+ */ >+ private String defaultText; >+ >+ /** >+ * @generated >+ */ >+ public ClassName2EditPart(View view) { >+ super(view); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void createDefaultEditPolicies() { >+ super.createDefaultEditPolicies(); >+ installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE, new LabelDirectEditPolicy()); >+ installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE, new NonResizableEditPolicy() { >+ >+ protected List createSelectionHandles() { >+ List handles = new ArrayList(); >+ NonResizableHandleKit.addMoveHandle((GraphicalEditPart) getHost(), handles); >+ return handles; >+ } >+ >+ public Command getCommand(Request request) { >+ return null; >+ } >+ >+ public boolean understandsRequest(Request request) { >+ return false; >+ } >+ }); >+ >+ } >+ >+ /** >+ * @generated >+ */ >+ protected String getLabelTextHelper(IFigure figure) { >+ if (figure instanceof WrapLabel) { >+ return ((WrapLabel) figure).getText(); >+ } else { >+ return ((Label) figure).getText(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setLabelTextHelper(IFigure figure, String text) { >+ if (figure instanceof WrapLabel) { >+ ((WrapLabel) figure).setText(text); >+ } else { >+ ((Label) figure).setText(text); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Image getLabelIconHelper(IFigure figure) { >+ if (figure instanceof WrapLabel) { >+ return ((WrapLabel) figure).getIcon(); >+ } else { >+ return ((Label) figure).getIcon(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setLabelIconHelper(IFigure figure, Image icon) { >+ if (figure instanceof WrapLabel) { >+ ((WrapLabel) figure).setIcon(icon); >+ } else { >+ ((Label) figure).setIcon(icon); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ public void setLabel(WrapLabel figure) { >+ unregisterVisuals(); >+ setFigure(figure); >+ defaultText = getLabelTextHelper(figure); >+ registerVisuals(); >+ refreshVisuals(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected List getModelChildren() { >+ return Collections.EMPTY_LIST; >+ } >+ >+ /** >+ * @generated >+ */ >+ public IGraphicalEditPart getChildBySemanticHint(String semanticHint) { >+ return null; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject getParserElement() { >+ EObject element = resolveSemanticElement(); >+ return element != null ? element : (View) getModel(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Image getLabelIcon() { >+ return null; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected String getLabelText() { >+ String text = null; >+ if (getParser() != null) { >+ text = getParser().getPrintString(new EObjectAdapter(getParserElement()), getParserOptions().intValue()); >+ } >+ if (text == null || text.length() == 0) { >+ text = defaultText; >+ } >+ return text; >+ } >+ >+ /** >+ * @generated >+ */ >+ public void setLabelText(String text) { >+ setLabelTextHelper(getFigure(), text); >+ Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE); >+ if (pdEditPolicy instanceof UMLTextSelectionEditPolicy) { >+ ((UMLTextSelectionEditPolicy) pdEditPolicy).refreshFeedback(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ public String getEditText() { >+ if (getParser() == null) { >+ return ""; //$NON-NLS-1$ >+ } >+ return getParser().getEditString(new EObjectAdapter(getParserElement()), getParserOptions().intValue()); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected boolean isEditable() { >+ return getEditText() != null; >+ } >+ >+ /** >+ * @generated >+ */ >+ public ICellEditorValidator getEditTextValidator() { >+ return new ICellEditorValidator() { >+ >+ public String isValid(final Object value) { >+ if (value instanceof String) { >+ final EObject element = getParserElement(); >+ final IParser parser = getParser(); >+ try { >+ IParserEditStatus valid = (IParserEditStatus) getEditingDomain().runExclusive(new RunnableWithResult.Impl() { >+ >+ public void run() { >+ setResult(parser.isValidEditString(new EObjectAdapter(element), (String) value)); >+ } >+ }); >+ return valid.getCode() == ParserEditStatus.EDITABLE ? null : valid.getMessage(); >+ } catch (InterruptedException ie) { >+ ie.printStackTrace(); >+ } >+ } >+ >+ // shouldn't get here >+ return null; >+ } >+ }; >+ } >+ >+ /** >+ * @generated >+ */ >+ public IContentAssistProcessor getCompletionProcessor() { >+ if (getParser() == null) { >+ return null; >+ } >+ return getParser().getCompletionProcessor(new EObjectAdapter(getParserElement())); >+ } >+ >+ /** >+ * @generated >+ */ >+ public ParserOptions getParserOptions() { >+ return ParserOptions.NONE; >+ } >+ >+ /** >+ * @generated >+ */ >+ public IParser getParser() { >+ if (parser == null) { >+ String parserHint = ((View) getModel()).getType(); >+ ParserHintAdapter hintAdapter = new ParserHintAdapter(getParserElement(), parserHint) { >+ >+ public Object getAdapter(Class adapter) { >+ if (IElementType.class.equals(adapter)) { >+ return UMLElementTypes.Class_2004; >+ } >+ return super.getAdapter(adapter); >+ } >+ }; >+ parser = ParserService.getInstance().getParser(hintAdapter); >+ } >+ return parser; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected DirectEditManager getManager() { >+ if (manager == null) { >+ setManager(new TextDirectEditManager(this, TextDirectEditManager.getTextCellEditorClass(this), UMLEditPartFactory.getTextCellEditorLocator(this))); >+ } >+ return manager; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setManager(DirectEditManager manager) { >+ this.manager = manager; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void performDirectEdit() { >+ getManager().show(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void performDirectEdit(Point eventLocation) { >+ if (getManager().getClass() == TextDirectEditManager.class) { >+ ((TextDirectEditManager) getManager()).show(eventLocation.getSWTPoint()); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ private void performDirectEdit(char initialCharacter) { >+ if (getManager() instanceof TextDirectEditManager) { >+ ((TextDirectEditManager) getManager()).show(initialCharacter); >+ } else { >+ performDirectEdit(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void performDirectEditRequest(Request request) { >+ final Request theRequest = request; >+ try { >+ getEditingDomain().runExclusive(new Runnable() { >+ >+ public void run() { >+ if (isActive() && isEditable()) { >+ if (theRequest.getExtendedData().get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR) instanceof Character) { >+ Character initialChar = (Character) theRequest.getExtendedData().get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR); >+ performDirectEdit(initialChar.charValue()); >+ } else if ((theRequest instanceof DirectEditRequest) && (getEditText().equals(getLabelText()))) { >+ DirectEditRequest editRequest = (DirectEditRequest) theRequest; >+ performDirectEdit(editRequest.getLocation()); >+ } else { >+ performDirectEdit(); >+ } >+ } >+ } >+ }); >+ } catch (InterruptedException e) { >+ e.printStackTrace(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshVisuals() { >+ super.refreshVisuals(); >+ refreshLabel(); >+ refreshFont(); >+ refreshFontColor(); >+ refreshUnderline(); >+ refreshStrikeThrough(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshLabel() { >+ setLabelTextHelper(getFigure(), getLabelText()); >+ setLabelIconHelper(getFigure(), getLabelIcon()); >+ Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE); >+ if (pdEditPolicy instanceof UMLTextSelectionEditPolicy) { >+ ((UMLTextSelectionEditPolicy) pdEditPolicy).refreshFeedback(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshUnderline() { >+ FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle()); >+ if (style != null && getFigure() instanceof WrapLabel) { >+ ((WrapLabel) getFigure()).setTextUnderline(style.isUnderline()); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshStrikeThrough() { >+ FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle()); >+ if (style != null && getFigure() instanceof WrapLabel) { >+ ((WrapLabel) getFigure()).setTextStrikeThrough(style.isStrikeThrough()); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshFont() { >+ FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle()); >+ if (style != null) { >+ FontData fontData = new FontData(style.getFontName(), style.getFontHeight(), (style.isBold() ? SWT.BOLD : SWT.NORMAL) | (style.isItalic() ? SWT.ITALIC : SWT.NORMAL)); >+ setFont(fontData); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setFontColor(Color color) { >+ getFigure().setForegroundColor(color); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void addSemanticListeners() { >+ if (getParser() instanceof ISemanticParser) { >+ EObject element = resolveSemanticElement(); >+ parserElements = ((ISemanticParser) getParser()).getSemanticElementsBeingParsed(element); >+ for (int i = 0; i < parserElements.size(); i++) { >+ addListenerFilter("SemanticModel" + i, this, (EObject) parserElements.get(i)); //$NON-NLS-1$ >+ } >+ } else { >+ super.addSemanticListeners(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void removeSemanticListeners() { >+ if (parserElements != null) { >+ for (int i = 0; i < parserElements.size(); i++) { >+ removeListenerFilter("SemanticModel" + i); //$NON-NLS-1$ >+ } >+ } else { >+ super.removeSemanticListeners(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected AccessibleEditPart getAccessibleEditPart() { >+ if (accessibleEP == null) { >+ accessibleEP = new AccessibleGraphicalEditPart() { >+ >+ public void getName(AccessibleEvent e) { >+ e.result = getLabelTextHelper(getFigure()); >+ } >+ }; >+ } >+ return accessibleEP; >+ } >+ >+ /** >+ * @generated >+ */ >+ private View getFontStyleOwnerView() { >+ return getPrimaryView(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void addNotationalListeners() { >+ super.addNotationalListeners(); >+ addListenerFilter("PrimaryView", this, getPrimaryView()); //$NON-NLS-1$ >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void removeNotationalListeners() { >+ super.removeNotationalListeners(); >+ removeListenerFilter("PrimaryView"); //$NON-NLS-1$ >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void handleNotificationEvent(Notification event) { >+ Object feature = event.getFeature(); >+ if (NotationPackage.eINSTANCE.getFontStyle_FontColor().equals(feature)) { >+ Integer c = (Integer) event.getNewValue(); >+ setFontColor(DiagramColorRegistry.getInstance().getColor(c)); >+ } else if (NotationPackage.eINSTANCE.getFontStyle_Underline().equals(feature)) { >+ refreshUnderline(); >+ } else if (NotationPackage.eINSTANCE.getFontStyle_StrikeThrough().equals(feature)) { >+ refreshStrikeThrough(); >+ } else if (NotationPackage.eINSTANCE.getFontStyle_FontHeight().equals(feature) || NotationPackage.eINSTANCE.getFontStyle_FontName().equals(feature) >+ || NotationPackage.eINSTANCE.getFontStyle_Bold().equals(feature) || NotationPackage.eINSTANCE.getFontStyle_Italic().equals(feature)) { >+ refreshFont(); >+ } else { >+ if (getParser() != null && getParser().isAffectingEvent(event, getParserOptions().intValue())) { >+ refreshLabel(); >+ } >+ if (getParser() instanceof ISemanticParser) { >+ ISemanticParser modelParser = (ISemanticParser) getParser(); >+ if (modelParser.areSemanticElementsAffected(null, event)) { >+ removeSemanticListeners(); >+ if (resolveSemanticElement() != null) { >+ addSemanticListeners(); >+ } >+ refreshLabel(); >+ } >+ } >+ } >+ super.handleNotificationEvent(event); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected IFigure createFigure() { >+ // Parent should assign one using setLabel method >+ return null; >+ } >+} >Index: src/org/eclipse/uml2/diagram/component/navigator/UMLNavigatorItem.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/component/navigator/UMLNavigatorItem.java >diff -N src/org/eclipse/uml2/diagram/component/navigator/UMLNavigatorItem.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/component/navigator/UMLNavigatorItem.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,75 @@ >+package org.eclipse.uml2.diagram.component.navigator; >+ >+import org.eclipse.emf.ecore.EObject; >+ >+import org.eclipse.gmf.runtime.notation.View; >+ >+import org.eclipse.uml2.diagram.component.part.UMLVisualIDRegistry; >+ >+/** >+ * @generated >+ */ >+public class UMLNavigatorItem extends UMLAbstractNavigatorItem { >+ >+ /** >+ * @generated >+ */ >+ private View myView; >+ >+ /** >+ * @generated >+ */ >+ public UMLNavigatorItem(View view, Object parent) { >+ super(parent); >+ myView = view; >+ } >+ >+ /** >+ * @generated >+ */ >+ public View getView() { >+ return myView; >+ } >+ >+ /** >+ * @generated >+ */ >+ public String getModelID() { >+ return UMLVisualIDRegistry.getModelID(myView); >+ } >+ >+ /** >+ * @generated >+ */ >+ public int getVisualID() { >+ return UMLVisualIDRegistry.getVisualID(myView); >+ } >+ >+ /** >+ * @generated >+ */ >+ public Object getAdapter(Class adapter) { >+ if (View.class.isAssignableFrom(adapter) || EObject.class.isAssignableFrom(adapter)) { >+ return myView; >+ } >+ return super.getAdapter(adapter); >+ } >+ >+ /** >+ * @generated >+ */ >+ public boolean equals(Object obj) { >+ if (obj instanceof UMLNavigatorItem) { >+ EObject eObject = getView().getElement(); >+ EObject anotherEObject = ((UMLNavigatorItem) obj).getView().getElement(); >+ if (eObject == null) { >+ return anotherEObject == null; >+ } else if (anotherEObject == null) { >+ return false; >+ } >+ return eObject.eResource().getURIFragment(eObject).equals(anotherEObject.eResource().getURIFragment(anotherEObject)); >+ } >+ return super.equals(obj); >+ } >+ >+} >Index: src/org/eclipse/uml2/diagram/component/view/factories/ComponentContentsViewFactory.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/component/view/factories/ComponentContentsViewFactory.java >diff -N src/org/eclipse/uml2/diagram/component/view/factories/ComponentContentsViewFactory.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/component/view/factories/ComponentContentsViewFactory.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,77 @@ >+package org.eclipse.uml2.diagram.component.view.factories; >+ >+import java.util.ArrayList; >+import java.util.List; >+ >+import org.eclipse.core.runtime.IAdaptable; >+ >+import org.eclipse.emf.ecore.EAnnotation; >+import org.eclipse.emf.ecore.EcoreFactory; >+ >+import org.eclipse.gmf.runtime.diagram.ui.view.factories.ListCompartmentViewFactory; >+ >+import org.eclipse.gmf.runtime.notation.DrawerStyle; >+import org.eclipse.gmf.runtime.notation.NotationFactory; >+import org.eclipse.gmf.runtime.notation.NotationPackage; >+import org.eclipse.gmf.runtime.notation.TitleStyle; >+import org.eclipse.gmf.runtime.notation.View; >+ >+import org.eclipse.uml2.diagram.component.edit.parts.PackageEditPart; >+import org.eclipse.uml2.diagram.component.part.UMLVisualIDRegistry; >+ >+/** >+ * @generated >+ */ >+public class ComponentContentsViewFactory extends ListCompartmentViewFactory { >+ >+ /** >+ * @generated >+ */ >+ protected List createStyles(View view) { >+ List styles = new ArrayList(); >+ styles.add(NotationFactory.eINSTANCE.createDrawerStyle()); >+ styles.add(NotationFactory.eINSTANCE.createSortingStyle()); >+ styles.add(NotationFactory.eINSTANCE.createFilteringStyle()); >+ return styles; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void decorateView(View containerView, View view, IAdaptable semanticAdapter, String semanticHint, int index, boolean persisted) { >+ if (semanticHint == null) { >+ semanticHint = UMLVisualIDRegistry.getType(org.eclipse.uml2.diagram.component.edit.parts.ComponentContentsEditPart.VISUAL_ID); >+ view.setType(semanticHint); >+ } >+ super.decorateView(containerView, view, semanticAdapter, semanticHint, index, persisted); >+ setupCompartmentTitle(view); >+ setupCompartmentCollapsed(view); >+ if (!PackageEditPart.MODEL_ID.equals(UMLVisualIDRegistry.getModelID(containerView))) { >+ EAnnotation shortcutAnnotation = EcoreFactory.eINSTANCE.createEAnnotation(); >+ shortcutAnnotation.setSource("Shortcut"); //$NON-NLS-1$ >+ shortcutAnnotation.getDetails().put("modelID", PackageEditPart.MODEL_ID); //$NON-NLS-1$ >+ view.getEAnnotations().add(shortcutAnnotation); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setupCompartmentTitle(View view) { >+ TitleStyle titleStyle = (TitleStyle) view.getStyle(NotationPackage.eINSTANCE.getTitleStyle()); >+ if (titleStyle != null) { >+ titleStyle.setShowTitle(true); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setupCompartmentCollapsed(View view) { >+ DrawerStyle drawerStyle = (DrawerStyle) view.getStyle(NotationPackage.eINSTANCE.getDrawerStyle()); >+ if (drawerStyle != null) { >+ drawerStyle.setCollapsed(false); >+ } >+ } >+ >+} >Index: src/org/eclipse/uml2/diagram/component/edit/policies/ComponentContents2ItemSemanticEditPolicy.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/component/edit/policies/ComponentContents2ItemSemanticEditPolicy.java >diff -N src/org/eclipse/uml2/diagram/component/edit/policies/ComponentContents2ItemSemanticEditPolicy.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/component/edit/policies/ComponentContents2ItemSemanticEditPolicy.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,224 @@ >+package org.eclipse.uml2.diagram.component.edit.policies; >+ >+import org.eclipse.emf.ecore.EClass; >+import org.eclipse.emf.ecore.EObject; >+ >+import org.eclipse.gef.commands.Command; >+ >+import org.eclipse.gmf.runtime.emf.type.core.commands.CreateElementCommand; >+ >+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest; >+ >+import org.eclipse.gmf.runtime.notation.View; >+ >+import org.eclipse.uml2.diagram.component.providers.UMLElementTypes; >+import org.eclipse.uml2.uml.Artifact; >+import org.eclipse.uml2.uml.Component; >+import org.eclipse.uml2.uml.Interface; >+import org.eclipse.uml2.uml.UMLPackage; >+ >+/** >+ * @generated >+ */ >+public class ComponentContents2ItemSemanticEditPolicy extends UMLBaseItemSemanticEditPolicy { >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCommand(CreateElementRequest req) { >+ if (UMLElementTypes.Component_3001 == req.getElementType()) { >+ if (req.getContainmentFeature() == null) { >+ req.setContainmentFeature(UMLPackage.eINSTANCE.getComponent_PackagedElement()); >+ } >+ return getMSLWrapper(new CreateComponent_3001Command(req)); >+ } >+ if (UMLElementTypes.Artifact_3003 == req.getElementType()) { >+ if (req.getContainmentFeature() == null) { >+ req.setContainmentFeature(UMLPackage.eINSTANCE.getComponent_PackagedElement()); >+ } >+ return getMSLWrapper(new CreateArtifact_3003Command(req)); >+ } >+ if (UMLElementTypes.Class_3004 == req.getElementType()) { >+ if (req.getContainmentFeature() == null) { >+ req.setContainmentFeature(UMLPackage.eINSTANCE.getComponent_PackagedElement()); >+ } >+ return getMSLWrapper(new CreateClass_3004Command(req)); >+ } >+ if (UMLElementTypes.Interface_3005 == req.getElementType()) { >+ if (req.getContainmentFeature() == null) { >+ req.setContainmentFeature(UMLPackage.eINSTANCE.getComponent_PackagedElement()); >+ } >+ return getMSLWrapper(new CreateInterface_3005Command(req)); >+ } >+ return super.getCreateCommand(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ private static class CreateComponent_3001Command extends CreateElementCommand { >+ >+ /** >+ * @generated >+ */ >+ public CreateComponent_3001Command(CreateElementRequest req) { >+ super(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EClass getEClassToEdit() { >+ return UMLPackage.eINSTANCE.getComponent(); >+ }; >+ >+ /** >+ * @generated >+ */ >+ protected EObject getElementToEdit() { >+ EObject container = ((CreateElementRequest) getRequest()).getContainer(); >+ if (container instanceof View) { >+ container = ((View) container).getElement(); >+ } >+ return container; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject doDefaultElementCreation() { >+ Component newElement = (Component) super.doDefaultElementCreation(); >+ if (newElement != null) { >+ UMLElementTypes.Initializers.Component_3001.init(newElement); >+ } >+ return newElement; >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ private static class CreateArtifact_3003Command extends CreateElementCommand { >+ >+ /** >+ * @generated >+ */ >+ public CreateArtifact_3003Command(CreateElementRequest req) { >+ super(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EClass getEClassToEdit() { >+ return UMLPackage.eINSTANCE.getComponent(); >+ }; >+ >+ /** >+ * @generated >+ */ >+ protected EObject getElementToEdit() { >+ EObject container = ((CreateElementRequest) getRequest()).getContainer(); >+ if (container instanceof View) { >+ container = ((View) container).getElement(); >+ } >+ return container; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject doDefaultElementCreation() { >+ Artifact newElement = (Artifact) super.doDefaultElementCreation(); >+ if (newElement != null) { >+ UMLElementTypes.Initializers.Artifact_3003.init(newElement); >+ } >+ return newElement; >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ private static class CreateClass_3004Command extends CreateElementCommand { >+ >+ /** >+ * @generated >+ */ >+ public CreateClass_3004Command(CreateElementRequest req) { >+ super(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EClass getEClassToEdit() { >+ return UMLPackage.eINSTANCE.getComponent(); >+ }; >+ >+ /** >+ * @generated >+ */ >+ protected EObject getElementToEdit() { >+ EObject container = ((CreateElementRequest) getRequest()).getContainer(); >+ if (container instanceof View) { >+ container = ((View) container).getElement(); >+ } >+ return container; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject doDefaultElementCreation() { >+ org.eclipse.uml2.uml.Class newElement = (org.eclipse.uml2.uml.Class) super.doDefaultElementCreation(); >+ if (newElement != null) { >+ UMLElementTypes.Initializers.Class_3004.init(newElement); >+ } >+ return newElement; >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ private static class CreateInterface_3005Command extends CreateElementCommand { >+ >+ /** >+ * @generated >+ */ >+ public CreateInterface_3005Command(CreateElementRequest req) { >+ super(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EClass getEClassToEdit() { >+ return UMLPackage.eINSTANCE.getComponent(); >+ }; >+ >+ /** >+ * @generated >+ */ >+ protected EObject getElementToEdit() { >+ EObject container = ((CreateElementRequest) getRequest()).getContainer(); >+ if (container instanceof View) { >+ container = ((View) container).getElement(); >+ } >+ return container; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject doDefaultElementCreation() { >+ Interface newElement = (Interface) super.doDefaultElementCreation(); >+ if (newElement != null) { >+ UMLElementTypes.Initializers.Interface_3005.init(newElement); >+ } >+ return newElement; >+ } >+ } >+ >+} >Index: src/org/eclipse/uml2/diagram/component/edit/helpers/PortProvidedEditHelperAdvice.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/component/edit/helpers/PortProvidedEditHelperAdvice.java >diff -N src/org/eclipse/uml2/diagram/component/edit/helpers/PortProvidedEditHelperAdvice.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/component/edit/helpers/PortProvidedEditHelperAdvice.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,9 @@ >+package org.eclipse.uml2.diagram.component.edit.helpers; >+ >+import org.eclipse.gmf.runtime.emf.type.core.edithelper.AbstractEditHelperAdvice; >+ >+/** >+ * @generated >+ */ >+public class PortProvidedEditHelperAdvice extends AbstractEditHelperAdvice { >+} >Index: src/org/eclipse/uml2/diagram/component/providers/UMLIconProvider.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/component/providers/UMLIconProvider.java >diff -N src/org/eclipse/uml2/diagram/component/providers/UMLIconProvider.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/component/providers/UMLIconProvider.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,31 @@ >+package org.eclipse.uml2.diagram.component.providers; >+ >+import org.eclipse.core.runtime.IAdaptable; >+import org.eclipse.gmf.runtime.common.core.service.AbstractProvider; >+import org.eclipse.gmf.runtime.common.core.service.IOperation; >+import org.eclipse.gmf.runtime.common.ui.services.icon.GetIconOperation; >+import org.eclipse.gmf.runtime.common.ui.services.icon.IIconProvider; >+import org.eclipse.swt.graphics.Image; >+ >+/** >+ * @generated >+ */ >+public class UMLIconProvider extends AbstractProvider implements IIconProvider { >+ >+ /** >+ * @generated >+ */ >+ public Image getIcon(IAdaptable hint, int flags) { >+ return UMLElementTypes.getImage(hint); >+ } >+ >+ /** >+ * @generated >+ */ >+ public boolean provides(IOperation operation) { >+ if (operation instanceof GetIconOperation) { >+ return ((GetIconOperation) operation).execute(this) != null; >+ } >+ return false; >+ } >+} >Index: src/org/eclipse/uml2/diagram/component/edit/policies/PortProvidedItemSemanticEditPolicy.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/component/edit/policies/PortProvidedItemSemanticEditPolicy.java >diff -N src/org/eclipse/uml2/diagram/component/edit/policies/PortProvidedItemSemanticEditPolicy.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/component/edit/policies/PortProvidedItemSemanticEditPolicy.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,20 @@ >+package org.eclipse.uml2.diagram.component.edit.policies; >+ >+import org.eclipse.gef.commands.Command; >+ >+import org.eclipse.gmf.runtime.emf.type.core.commands.DestroyReferenceCommand; >+ >+import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyReferenceRequest; >+ >+/** >+ * @generated >+ */ >+public class PortProvidedItemSemanticEditPolicy extends UMLBaseItemSemanticEditPolicy { >+ >+ /** >+ * @generated >+ */ >+ protected Command getDestroyReferenceCommand(DestroyReferenceRequest req) { >+ return getMSLWrapper(new DestroyReferenceCommand(req)); >+ } >+} >Index: src/org/eclipse/uml2/diagram/component/edit/helpers/UMLBaseEditHelper.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/component/edit/helpers/UMLBaseEditHelper.java >diff -N src/org/eclipse/uml2/diagram/component/edit/helpers/UMLBaseEditHelper.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/component/edit/helpers/UMLBaseEditHelper.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,68 @@ >+package org.eclipse.uml2.diagram.component.edit.helpers; >+ >+import org.eclipse.gmf.runtime.common.core.command.CompositeCommand; >+import org.eclipse.gmf.runtime.common.core.command.ICommand; >+import org.eclipse.gmf.runtime.emf.type.core.edithelper.AbstractEditHelper; >+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest; >+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateRelationshipRequest; >+import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest; >+import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyReferenceRequest; >+import org.eclipse.gmf.runtime.emf.type.core.requests.IEditCommandRequest; >+ >+/** >+ * @generated >+ */ >+public class UMLBaseEditHelper extends AbstractEditHelper { >+ >+ /** >+ * @generated >+ */ >+ public static final String EDIT_POLICY_COMMAND = "edit policy command"; //$NON-NLS-1$ >+ >+ /** >+ * @generated >+ */ >+ protected ICommand getInsteadCommand(IEditCommandRequest req) { >+ ICommand epCommand = (ICommand) req.getParameter(EDIT_POLICY_COMMAND); >+ req.setParameter(EDIT_POLICY_COMMAND, null); >+ ICommand ehCommand = super.getInsteadCommand(req); >+ if (epCommand == null) { >+ return ehCommand; >+ } >+ if (ehCommand == null) { >+ return epCommand; >+ } >+ CompositeCommand command = new CompositeCommand(null); >+ command.add(epCommand); >+ command.add(ehCommand); >+ return command; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected ICommand getCreateCommand(CreateElementRequest req) { >+ return null; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected ICommand getCreateRelationshipCommand(CreateRelationshipRequest req) { >+ return null; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected ICommand getDestroyElementCommand(DestroyElementRequest req) { >+ return null; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected ICommand getDestroyReferenceCommand(DestroyReferenceRequest req) { >+ return null; >+ } >+} >Index: src/org/eclipse/uml2/diagram/component/edit/parts/PortRequiredEditPart.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/component/edit/parts/PortRequiredEditPart.java >diff -N src/org/eclipse/uml2/diagram/component/edit/parts/PortRequiredEditPart.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/component/edit/parts/PortRequiredEditPart.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,79 @@ >+package org.eclipse.uml2.diagram.component.edit.parts; >+ >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.draw2d.Connection; >+ >+import org.eclipse.gef.EditPolicy; >+ >+import org.eclipse.gmf.runtime.diagram.ui.editparts.ConnectionNodeEditPart; >+ >+import org.eclipse.uml2.diagram.component.edit.policies.PortRequiredItemSemanticEditPolicy; >+import org.eclipse.uml2.diagram.component.edit.policies.UMLReferenceConnectionEditPolicy; >+ >+/** >+ * @generated >+ */ >+public class PortRequiredEditPart extends ConnectionNodeEditPart { >+ >+ /** >+ * @generated >+ */ >+ public static final int VISUAL_ID = 4004; >+ >+ /** >+ * @generated >+ */ >+ public PortRequiredEditPart(View view) { >+ super(view); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void createDefaultEditPolicies() { >+ super.createDefaultEditPolicies(); >+ installEditPolicy(EditPolicy.CONNECTION_ROLE, new UMLReferenceConnectionEditPolicy()); >+ installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE, new PortRequiredItemSemanticEditPolicy()); >+ >+ } >+ >+ /** >+ * Creates figure for this edit part. >+ * >+ * Body of this method does not depend on settings in generation model >+ * so you may safely remove <i>generated</i> tag and modify it. >+ * >+ * @generated >+ */ >+ protected Connection createConnectionFigure() { >+ return new RequiredInterfaceConnectionFigure(); >+ } >+ >+ /** >+ * @generated >+ */ >+ public class RequiredInterfaceConnectionFigure extends org.eclipse.gmf.runtime.draw2d.ui.figures.PolylineConnectionEx { >+ >+ /** >+ * @generated >+ */ >+ public RequiredInterfaceConnectionFigure() { >+ >+ setTargetDecoration(createTargetDecoration()); >+ } >+ >+ /** >+ * @generated >+ */ >+ private org.eclipse.uml2.diagram.common.draw2d.RequiredInterfaceDecoration createTargetDecoration() { >+ org.eclipse.uml2.diagram.common.draw2d.RequiredInterfaceDecoration df = new org.eclipse.uml2.diagram.common.draw2d.RequiredInterfaceDecoration(); >+ >+ df.setRadius(10); >+ >+ return df; >+ } >+ >+ } >+ >+} >Index: src/org/eclipse/uml2/diagram/component/edit/policies/ComponentContentsCanonicalEditPolicy.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/component/edit/policies/ComponentContentsCanonicalEditPolicy.java >diff -N src/org/eclipse/uml2/diagram/component/edit/policies/ComponentContentsCanonicalEditPolicy.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/component/edit/policies/ComponentContentsCanonicalEditPolicy.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,71 @@ >+package org.eclipse.uml2.diagram.component.edit.policies; >+ >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy; >+import org.eclipse.gmf.runtime.notation.View; >+import java.util.Iterator; >+import java.util.LinkedList; >+import java.util.List; >+ >+import org.eclipse.emf.ecore.EObject; >+ >+import org.eclipse.uml2.diagram.component.edit.parts.ArtifactEditPart; >+import org.eclipse.uml2.diagram.component.edit.parts.ClassEditPart; >+import org.eclipse.uml2.diagram.component.edit.parts.Component2EditPart; >+import org.eclipse.uml2.diagram.component.edit.parts.InterfaceEditPart; >+import org.eclipse.uml2.diagram.component.part.UMLVisualIDRegistry; >+import org.eclipse.uml2.uml.Component; >+ >+/** >+ * @generated >+ */ >+public class ComponentContentsCanonicalEditPolicy extends CanonicalEditPolicy { >+ >+ /** >+ * @generated >+ */ >+ protected List getSemanticChildrenList() { >+ List result = new LinkedList(); >+ EObject modelObject = ((View) getHost().getModel()).getElement(); >+ View viewObject = (View) getHost().getModel(); >+ EObject nextValue; >+ int nodeVID; >+ for (Iterator values = ((Component) modelObject).getPackagedElements().iterator(); values.hasNext();) { >+ nextValue = (EObject) values.next(); >+ nodeVID = UMLVisualIDRegistry.getNodeVisualID(viewObject, nextValue); >+ switch (nodeVID) { >+ case Component2EditPart.VISUAL_ID: { >+ result.add(nextValue); >+ break; >+ } >+ case ArtifactEditPart.VISUAL_ID: { >+ result.add(nextValue); >+ break; >+ } >+ case ClassEditPart.VISUAL_ID: { >+ result.add(nextValue); >+ break; >+ } >+ case InterfaceEditPart.VISUAL_ID: { >+ result.add(nextValue); >+ break; >+ } >+ } >+ } >+ return result; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected boolean shouldDeleteView(View view) { >+ return view.isSetElement() && view.getElement() != null && view.getElement().eIsProxy(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected String getDefaultFactoryHint() { >+ return null; >+ } >+ >+} >Index: src/org/eclipse/uml2/diagram/component/edit/parts/InterfaceRealizationEditPart.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/component/edit/parts/InterfaceRealizationEditPart.java >diff -N src/org/eclipse/uml2/diagram/component/edit/parts/InterfaceRealizationEditPart.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/component/edit/parts/InterfaceRealizationEditPart.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,51 @@ >+package org.eclipse.uml2.diagram.component.edit.parts; >+ >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.draw2d.Connection; >+ >+import org.eclipse.gmf.runtime.diagram.ui.editparts.ConnectionNodeEditPart; >+ >+import org.eclipse.gmf.runtime.draw2d.ui.figures.PolylineConnectionEx; >+ >+import org.eclipse.uml2.diagram.component.edit.policies.InterfaceRealizationItemSemanticEditPolicy; >+ >+/** >+ * @generated >+ */ >+public class InterfaceRealizationEditPart extends ConnectionNodeEditPart { >+ >+ /** >+ * @generated >+ */ >+ public static final int VISUAL_ID = 4001; >+ >+ /** >+ * @generated >+ */ >+ public InterfaceRealizationEditPart(View view) { >+ super(view); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void createDefaultEditPolicies() { >+ super.createDefaultEditPolicies(); >+ installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE, new InterfaceRealizationItemSemanticEditPolicy()); >+ >+ } >+ >+ /** >+ * Creates figure for this edit part. >+ * >+ * Body of this method does not depend on settings in generation model >+ * so you may safely remove <i>generated</i> tag and modify it. >+ * >+ * @generated >+ */ >+ protected Connection createConnectionFigure() { >+ return new PolylineConnectionEx(); >+ } >+ >+} >Index: src/org/eclipse/uml2/diagram/component/part/UMLLoadResourceAction.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/component/part/UMLLoadResourceAction.java >diff -N src/org/eclipse/uml2/diagram/component/part/UMLLoadResourceAction.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/component/part/UMLLoadResourceAction.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,63 @@ >+package org.eclipse.uml2.diagram.component.part; >+ >+import org.eclipse.emf.edit.ui.action.LoadResourceAction.LoadResourceDialog; >+import org.eclipse.jface.action.IAction; >+import org.eclipse.jface.viewers.ISelection; >+import org.eclipse.jface.viewers.IStructuredSelection; >+import org.eclipse.swt.widgets.Shell; >+import org.eclipse.ui.IObjectActionDelegate; >+import org.eclipse.ui.IWorkbenchPart; >+import org.eclipse.uml2.diagram.component.edit.parts.PackageEditPart; >+ >+/** >+ * @generated >+ */ >+public class UMLLoadResourceAction implements IObjectActionDelegate { >+ >+ /** >+ * @generated >+ */ >+ private PackageEditPart mySelectedElement; >+ >+ /** >+ * @generated >+ */ >+ private Shell myShell; >+ >+ /** >+ * @generated >+ */ >+ public void setActivePart(IAction action, IWorkbenchPart targetPart) { >+ myShell = targetPart.getSite().getShell(); >+ } >+ >+ /** >+ * @generated >+ */ >+ public void run(IAction action) { >+ LoadResourceDialog loadResourceDialog = new LoadResourceDialog(myShell, mySelectedElement.getEditingDomain()); >+ loadResourceDialog.open(); >+ } >+ >+ /** >+ * @generated >+ */ >+ public void selectionChanged(IAction action, ISelection selection) { >+ mySelectedElement = null; >+ if (selection instanceof IStructuredSelection) { >+ IStructuredSelection structuredSelection = (IStructuredSelection) selection; >+ if (structuredSelection.size() == 1 && structuredSelection.getFirstElement() instanceof PackageEditPart) { >+ mySelectedElement = (PackageEditPart) structuredSelection.getFirstElement(); >+ } >+ } >+ action.setEnabled(isEnabled()); >+ } >+ >+ /** >+ * @generated >+ */ >+ private boolean isEnabled() { >+ return mySelectedElement != null; >+ } >+ >+} >Index: src/org/eclipse/uml2/diagram/component/edit/parts/Component2EditPart.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/component/edit/parts/Component2EditPart.java >diff -N src/org/eclipse/uml2/diagram/component/edit/parts/Component2EditPart.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/component/edit/parts/Component2EditPart.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,418 @@ >+package org.eclipse.uml2.diagram.component.edit.parts; >+ >+import org.eclipse.draw2d.IFigure; >+import org.eclipse.draw2d.PositionConstants; >+import org.eclipse.draw2d.StackLayout; >+ >+import org.eclipse.gef.EditPart; >+import org.eclipse.gef.EditPolicy; >+import org.eclipse.gef.Request; >+ >+import org.eclipse.gef.commands.Command; >+ >+import org.eclipse.gef.editpolicies.LayoutEditPolicy; >+import org.eclipse.gef.editpolicies.NonResizableEditPolicy; >+ >+import org.eclipse.gef.requests.CreateRequest; >+ >+import org.eclipse.gmf.runtime.diagram.ui.editparts.AbstractBorderedShapeEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart; >+ >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles; >+ >+import org.eclipse.gmf.runtime.diagram.ui.figures.BorderItemLocator; >+ >+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout; >+ >+import org.eclipse.gmf.runtime.gef.ui.figures.DefaultSizeNodeFigure; >+import org.eclipse.gmf.runtime.gef.ui.figures.NodeFigure; >+ >+import org.eclipse.gmf.runtime.notation.View; >+ >+import org.eclipse.uml2.diagram.component.edit.policies.Component2CanonicalEditPolicy; >+import org.eclipse.uml2.diagram.component.edit.policies.Component2ItemSemanticEditPolicy; >+import org.eclipse.uml2.diagram.component.part.UMLVisualIDRegistry; >+ >+/** >+ * @generated >+ */ >+public class Component2EditPart extends AbstractBorderedShapeEditPart { >+ >+ /** >+ * @generated >+ */ >+ public static final int VISUAL_ID = 3001; >+ >+ /** >+ * @generated >+ */ >+ protected IFigure contentPane; >+ >+ /** >+ * @generated >+ */ >+ protected IFigure primaryShape; >+ >+ /** >+ * @generated >+ */ >+ public Component2EditPart(View view) { >+ super(view); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void createDefaultEditPolicies() { >+ installEditPolicy(EditPolicyRoles.CREATION_ROLE, new CreationEditPolicy()); >+ super.createDefaultEditPolicies(); >+ installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE, new Component2ItemSemanticEditPolicy()); >+ installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE, new DragDropEditPolicy()); >+ installEditPolicy(EditPolicyRoles.CANONICAL_ROLE, new Component2CanonicalEditPolicy()); >+ installEditPolicy(EditPolicy.LAYOUT_ROLE, createLayoutEditPolicy()); >+ >+ } >+ >+ /** >+ * @generated >+ */ >+ protected LayoutEditPolicy createLayoutEditPolicy() { >+ LayoutEditPolicy lep = new LayoutEditPolicy() { >+ >+ protected EditPolicy createChildEditPolicy(EditPart child) { >+ EditPolicy result = child.getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE); >+ if (result == null) { >+ result = new NonResizableEditPolicy(); >+ } >+ return result; >+ } >+ >+ protected Command getMoveChildrenCommand(Request request) { >+ return null; >+ } >+ >+ protected Command getCreateCommand(CreateRequest request) { >+ return null; >+ } >+ }; >+ return lep; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected IFigure createNodeShape() { >+ ComponentFigure figure = new ComponentFigure(); >+ return primaryShape = figure; >+ } >+ >+ /** >+ * @generated >+ */ >+ public ComponentFigure getPrimaryShape() { >+ return (ComponentFigure) primaryShape; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected IFigure getContentPaneFor(IGraphicalEditPart editPart) { >+ if (editPart instanceof ComponentContents2EditPart) { >+ return getPrimaryShape().getFigureComponentFigure_Body(); >+ } >+ if (editPart instanceof PortEditPart) { >+ return getBorderedFigure().getBorderItemContainer(); >+ } >+ >+ return super.getContentPaneFor(editPart); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected boolean addFixedChild(EditPart childEditPart) { >+ if (childEditPart instanceof ComponentNameEditPart) { >+ ((ComponentNameEditPart) childEditPart).setLabel(getPrimaryShape().getFigureComponentFigure_name()); >+ return true; >+ } >+ if (childEditPart instanceof ComponentContents2EditPart) { >+ IFigure pane = getPrimaryShape().getFigureComponentFigure_Body(); >+ setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way >+ pane.add(((ComponentContents2EditPart) childEditPart).getFigure()); >+ return true; >+ } >+ if (childEditPart instanceof PortEditPart) { >+ BorderItemLocator locator = new BorderItemLocator(getMainFigure(), PositionConstants.NONE); >+ getBorderedFigure().getBorderItemContainer().add(((PortEditPart) childEditPart).getFigure(), locator); >+ return true; >+ } >+ return false; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected boolean removeFixedChild(EditPart childEditPart) { >+ if (childEditPart instanceof ComponentContents2EditPart) { >+ IFigure pane = getPrimaryShape().getFigureComponentFigure_Body(); >+ pane.remove(((ComponentContents2EditPart) childEditPart).getFigure()); >+ return true; >+ } >+ if (childEditPart instanceof PortEditPart) { >+ getBorderedFigure().getBorderItemContainer().remove(((PortEditPart) childEditPart).getFigure()); >+ return true; >+ } >+ return false; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected NodeFigure createNodePlate() { >+ DefaultSizeNodeFigure result = new DefaultSizeNodeFigure(getMapMode().DPtoLP(100), getMapMode().DPtoLP(80)); >+ return result; >+ } >+ >+ /** >+ * Creates figure for this edit part. >+ * >+ * Body of this method does not depend on settings in generation model >+ * so you may safely remove <i>generated</i> tag and modify it. >+ * >+ * @generated >+ */ >+ protected NodeFigure createMainFigure() { >+ NodeFigure figure = createNodePlate(); >+ figure.setLayoutManager(new StackLayout()); >+ IFigure shape = createNodeShape(); >+ figure.add(shape); >+ contentPane = setupContentPane(shape); >+ return figure; >+ } >+ >+ /** >+ * Default implementation treats passed figure as content pane. >+ * Respects layout one may have set for generated figure. >+ * @param nodeShape instance of generated figure class >+ * @generated >+ */ >+ protected IFigure setupContentPane(IFigure nodeShape) { >+ if (nodeShape.getLayoutManager() == null) { >+ ConstrainedToolbarLayout layout = new ConstrainedToolbarLayout(); >+ layout.setSpacing(getMapMode().DPtoLP(5)); >+ nodeShape.setLayoutManager(layout); >+ } >+ return nodeShape; // use nodeShape itself as contentPane >+ } >+ >+ /** >+ * @generated >+ */ >+ public IFigure getContentPane() { >+ if (contentPane != null) { >+ return contentPane; >+ } >+ return super.getContentPane(); >+ } >+ >+ /** >+ * @generated >+ */ >+ public EditPart getPrimaryChildEditPart() { >+ return getChildBySemanticHint(UMLVisualIDRegistry.getType(ComponentNameEditPart.VISUAL_ID)); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void addChildVisual(EditPart childEditPart, int index) { >+ if (addFixedChild(childEditPart)) { >+ return; >+ } >+ super.addChildVisual(childEditPart, -1); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void removeChildVisual(EditPart childEditPart) { >+ if (removeFixedChild(childEditPart)) { >+ return; >+ } >+ super.removeChildVisual(childEditPart); >+ } >+ >+ /** >+ * @generated >+ */ >+ public class ComponentFigure extends org.eclipse.draw2d.RectangleFigure { >+ >+ /** >+ * @generated >+ */ >+ public ComponentFigure() { >+ >+ org.eclipse.gmf.internal.codegen.draw2d.GridLayout myGenLayoutManager = new org.eclipse.gmf.internal.codegen.draw2d.GridLayout(); >+ myGenLayoutManager.numColumns = 1; >+ myGenLayoutManager.makeColumnsEqualWidth = true; >+ myGenLayoutManager.marginWidth = 0; >+ myGenLayoutManager.marginHeight = 0; >+ myGenLayoutManager.horizontalSpacing = 0; >+ myGenLayoutManager.verticalSpacing = 0; >+ >+ this.setLayoutManager(myGenLayoutManager); >+ >+ this.setFill(false); >+ this.setOutline(false); >+ createContents(); >+ } >+ >+ /** >+ * @generated >+ */ >+ private void createContents() { >+ org.eclipse.draw2d.RectangleFigure fig_0 = new org.eclipse.draw2d.RectangleFigure(); >+ >+ fig_0.setMinimumSize(new org.eclipse.draw2d.geometry.Dimension(getMapMode().DPtoLP(0), getMapMode().DPtoLP(35))); >+ >+ org.eclipse.gmf.internal.codegen.draw2d.GridLayout layouter0 = new org.eclipse.gmf.internal.codegen.draw2d.GridLayout(); >+ layouter0.numColumns = 1; >+ layouter0.makeColumnsEqualWidth = false; >+ >+ fig_0.setLayoutManager(layouter0); >+ >+ setFigureComponentFigure_LabelsContainer(fig_0); >+ org.eclipse.gmf.internal.codegen.draw2d.GridLayoutData layData0 = new org.eclipse.gmf.internal.codegen.draw2d.GridLayoutData(); >+ layData0.verticalAlignment = org.eclipse.gmf.internal.codegen.draw2d.GridLayoutData.FILL; >+ layData0.horizontalAlignment = org.eclipse.gmf.internal.codegen.draw2d.GridLayoutData.FILL; >+ layData0.horizontalIndent = 0; >+ layData0.horizontalSpan = 2; >+ layData0.verticalSpan = 1; >+ layData0.grabExcessHorizontalSpace = true; >+ layData0.grabExcessVerticalSpace = false; >+ >+ this.add(fig_0, layData0); >+ org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel fig_1 = new org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel(); >+ fig_1.setText("\u00ABcomponent\u00BB"); >+ >+ org.eclipse.gmf.internal.codegen.draw2d.GridLayoutData layData1 = new org.eclipse.gmf.internal.codegen.draw2d.GridLayoutData(); >+ layData1.verticalAlignment = org.eclipse.gmf.internal.codegen.draw2d.GridLayoutData.CENTER; >+ layData1.horizontalAlignment = org.eclipse.gmf.internal.codegen.draw2d.GridLayoutData.CENTER; >+ layData1.horizontalIndent = 0; >+ layData1.horizontalSpan = 1; >+ layData1.verticalSpan = 1; >+ layData1.grabExcessHorizontalSpace = true; >+ layData1.grabExcessVerticalSpace = false; >+ >+ fig_0.add(fig_1, layData1); >+ org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel fig_2 = new org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel(); >+ >+ setFigureComponentFigure_name(fig_2); >+ org.eclipse.gmf.internal.codegen.draw2d.GridLayoutData layData2 = new org.eclipse.gmf.internal.codegen.draw2d.GridLayoutData(); >+ layData2.verticalAlignment = org.eclipse.gmf.internal.codegen.draw2d.GridLayoutData.CENTER; >+ layData2.horizontalAlignment = org.eclipse.gmf.internal.codegen.draw2d.GridLayoutData.CENTER; >+ layData2.horizontalIndent = 0; >+ layData2.horizontalSpan = 1; >+ layData2.verticalSpan = 1; >+ layData2.grabExcessHorizontalSpace = true; >+ layData2.grabExcessVerticalSpace = false; >+ >+ fig_0.add(fig_2, layData2); >+ org.eclipse.draw2d.RectangleFigure fig_3 = new org.eclipse.draw2d.RectangleFigure(); >+ >+ fig_3.setMinimumSize(new org.eclipse.draw2d.geometry.Dimension(getMapMode().DPtoLP(0), getMapMode().DPtoLP(55))); >+ >+ setFigureComponentFigure_Body(fig_3); >+ org.eclipse.gmf.internal.codegen.draw2d.GridLayoutData layData3 = new org.eclipse.gmf.internal.codegen.draw2d.GridLayoutData(); >+ layData3.verticalAlignment = org.eclipse.gmf.internal.codegen.draw2d.GridLayoutData.FILL; >+ layData3.horizontalAlignment = org.eclipse.gmf.internal.codegen.draw2d.GridLayoutData.FILL; >+ layData3.horizontalIndent = 0; >+ layData3.horizontalSpan = 1; >+ layData3.verticalSpan = 1; >+ layData3.grabExcessHorizontalSpace = true; >+ layData3.grabExcessVerticalSpace = true; >+ >+ this.add(fig_3, layData3); >+ } >+ >+ /** >+ * @generated >+ */ >+ private org.eclipse.draw2d.RectangleFigure fComponentFigure_LabelsContainer; >+ >+ /** >+ * @generated >+ */ >+ public org.eclipse.draw2d.RectangleFigure getFigureComponentFigure_LabelsContainer() { >+ return fComponentFigure_LabelsContainer; >+ } >+ >+ /** >+ * @generated >+ */ >+ private void setFigureComponentFigure_LabelsContainer(org.eclipse.draw2d.RectangleFigure fig) { >+ fComponentFigure_LabelsContainer = fig; >+ } >+ >+ /** >+ * @generated >+ */ >+ private org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel fComponentFigure_name; >+ >+ /** >+ * @generated >+ */ >+ public org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel getFigureComponentFigure_name() { >+ return fComponentFigure_name; >+ } >+ >+ /** >+ * @generated >+ */ >+ private void setFigureComponentFigure_name(org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel fig) { >+ fComponentFigure_name = fig; >+ } >+ >+ /** >+ * @generated >+ */ >+ private org.eclipse.draw2d.RectangleFigure fComponentFigure_Body; >+ >+ /** >+ * @generated >+ */ >+ public org.eclipse.draw2d.RectangleFigure getFigureComponentFigure_Body() { >+ return fComponentFigure_Body; >+ } >+ >+ /** >+ * @generated >+ */ >+ private void setFigureComponentFigure_Body(org.eclipse.draw2d.RectangleFigure fig) { >+ fComponentFigure_Body = fig; >+ } >+ >+ /** >+ * @generated >+ */ >+ private boolean myUseLocalCoordinates = false; >+ >+ /** >+ * @generated >+ */ >+ protected boolean useLocalCoordinates() { >+ return myUseLocalCoordinates; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setUseLocalCoordinates(boolean useLocalCoordinates) { >+ myUseLocalCoordinates = useLocalCoordinates; >+ } >+ >+ } >+ >+} >Index: src/org/eclipse/uml2/diagram/component/edit/parts/InterfaceName2EditPart.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/component/edit/parts/InterfaceName2EditPart.java >diff -N src/org/eclipse/uml2/diagram/component/edit/parts/InterfaceName2EditPart.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/component/edit/parts/InterfaceName2EditPart.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,544 @@ >+package org.eclipse.uml2.diagram.component.edit.parts; >+ >+import org.eclipse.draw2d.Label; >+import org.eclipse.draw2d.IFigure; >+import org.eclipse.draw2d.geometry.Point; >+import org.eclipse.gef.EditPolicy; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.ITextAwareEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.LabelDirectEditPolicy; >+import org.eclipse.gmf.runtime.notation.View; >+import java.util.Collections; >+import java.util.List; >+ >+import org.eclipse.emf.common.notify.Notification; >+ >+import org.eclipse.emf.ecore.EObject; >+ >+import org.eclipse.emf.transaction.RunnableWithResult; >+ >+import org.eclipse.gef.AccessibleEditPart; >+import org.eclipse.gef.Request; >+ >+import org.eclipse.gef.requests.DirectEditRequest; >+ >+import org.eclipse.gef.tools.DirectEditManager; >+ >+import org.eclipse.gmf.runtime.common.ui.services.parser.IParser; >+import org.eclipse.gmf.runtime.common.ui.services.parser.IParserEditStatus; >+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserEditStatus; >+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserOptions; >+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserService; >+ >+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart; >+ >+import org.eclipse.gmf.runtime.diagram.ui.l10n.DiagramColorRegistry; >+ >+import org.eclipse.gmf.runtime.diagram.ui.requests.RequestConstants; >+ >+import org.eclipse.gmf.runtime.diagram.ui.tools.TextDirectEditManager; >+ >+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel; >+ >+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter; >+ >+import org.eclipse.gmf.runtime.emf.type.core.IElementType; >+ >+import org.eclipse.gmf.runtime.emf.ui.services.parser.ISemanticParser; >+import org.eclipse.gmf.runtime.emf.ui.services.parser.ParserHintAdapter; >+ >+import org.eclipse.gmf.runtime.notation.FontStyle; >+import org.eclipse.gmf.runtime.notation.NotationPackage; >+ >+import org.eclipse.jface.text.contentassist.IContentAssistProcessor; >+ >+import org.eclipse.jface.viewers.ICellEditorValidator; >+ >+import org.eclipse.swt.SWT; >+ >+import org.eclipse.swt.accessibility.AccessibleEvent; >+ >+import org.eclipse.swt.graphics.Color; >+import org.eclipse.swt.graphics.FontData; >+import org.eclipse.swt.graphics.Image; >+import org.eclipse.uml2.diagram.component.edit.policies.UMLTextSelectionEditPolicy; >+import org.eclipse.uml2.diagram.component.part.UMLVisualIDRegistry; >+import org.eclipse.uml2.diagram.component.providers.UMLElementTypes; >+ >+/** >+ * @generated >+ */ >+public class InterfaceName2EditPart extends UMLExtNodeLabelEditPart implements ITextAwareEditPart { >+ >+ /** >+ * @generated >+ */ >+ public static final int VISUAL_ID = 5005; >+ >+ /** >+ * @generated >+ */ >+ private DirectEditManager manager; >+ >+ /** >+ * @generated >+ */ >+ private IParser parser; >+ >+ /** >+ * @generated >+ */ >+ private List parserElements; >+ >+ /** >+ * @generated >+ */ >+ private String defaultText; >+ >+ /** >+ * @generated >+ */ >+ static { >+ registerSnapBackPosition(UMLVisualIDRegistry.getType(InterfaceName2EditPart.VISUAL_ID), new Point(0, 0)); >+ } >+ >+ /** >+ * @generated >+ */ >+ public InterfaceName2EditPart(View view) { >+ super(view); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void createDefaultEditPolicies() { >+ super.createDefaultEditPolicies(); >+ installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE, new LabelDirectEditPolicy()); >+ >+ } >+ >+ /** >+ * @generated >+ */ >+ protected String getLabelTextHelper(IFigure figure) { >+ if (figure instanceof WrapLabel) { >+ return ((WrapLabel) figure).getText(); >+ } else { >+ return ((Label) figure).getText(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setLabelTextHelper(IFigure figure, String text) { >+ if (figure instanceof WrapLabel) { >+ ((WrapLabel) figure).setText(text); >+ } else { >+ ((Label) figure).setText(text); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Image getLabelIconHelper(IFigure figure) { >+ if (figure instanceof WrapLabel) { >+ return ((WrapLabel) figure).getIcon(); >+ } else { >+ return ((Label) figure).getIcon(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setLabelIconHelper(IFigure figure, Image icon) { >+ if (figure instanceof WrapLabel) { >+ ((WrapLabel) figure).setIcon(icon); >+ } else { >+ ((Label) figure).setIcon(icon); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ public void setLabel(IFigure figure) { >+ unregisterVisuals(); >+ setFigure(figure); >+ defaultText = getLabelTextHelper(figure); >+ registerVisuals(); >+ refreshVisuals(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected List getModelChildren() { >+ return Collections.EMPTY_LIST; >+ } >+ >+ /** >+ * @generated >+ */ >+ public IGraphicalEditPart getChildBySemanticHint(String semanticHint) { >+ return null; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject getParserElement() { >+ EObject element = resolveSemanticElement(); >+ return element != null ? element : (View) getModel(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Image getLabelIcon() { >+ return null; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected String getLabelText() { >+ String text = null; >+ if (getParser() != null) { >+ text = getParser().getPrintString(new EObjectAdapter(getParserElement()), getParserOptions().intValue()); >+ } >+ if (text == null || text.length() == 0) { >+ text = defaultText; >+ } >+ return text; >+ } >+ >+ /** >+ * @generated >+ */ >+ public void setLabelText(String text) { >+ setLabelTextHelper(getFigure(), text); >+ Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE); >+ if (pdEditPolicy instanceof UMLTextSelectionEditPolicy) { >+ ((UMLTextSelectionEditPolicy) pdEditPolicy).refreshFeedback(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ public String getEditText() { >+ if (getParser() == null) { >+ return ""; //$NON-NLS-1$ >+ } >+ return getParser().getEditString(new EObjectAdapter(getParserElement()), getParserOptions().intValue()); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected boolean isEditable() { >+ return getEditText() != null; >+ } >+ >+ /** >+ * @generated >+ */ >+ public ICellEditorValidator getEditTextValidator() { >+ return new ICellEditorValidator() { >+ >+ public String isValid(final Object value) { >+ if (value instanceof String) { >+ final EObject element = getParserElement(); >+ final IParser parser = getParser(); >+ try { >+ IParserEditStatus valid = (IParserEditStatus) getEditingDomain().runExclusive(new RunnableWithResult.Impl() { >+ >+ public void run() { >+ setResult(parser.isValidEditString(new EObjectAdapter(element), (String) value)); >+ } >+ }); >+ return valid.getCode() == ParserEditStatus.EDITABLE ? null : valid.getMessage(); >+ } catch (InterruptedException ie) { >+ ie.printStackTrace(); >+ } >+ } >+ >+ // shouldn't get here >+ return null; >+ } >+ }; >+ } >+ >+ /** >+ * @generated >+ */ >+ public IContentAssistProcessor getCompletionProcessor() { >+ if (getParser() == null) { >+ return null; >+ } >+ return getParser().getCompletionProcessor(new EObjectAdapter(getParserElement())); >+ } >+ >+ /** >+ * @generated >+ */ >+ public ParserOptions getParserOptions() { >+ return ParserOptions.NONE; >+ } >+ >+ /** >+ * @generated >+ */ >+ public IParser getParser() { >+ if (parser == null) { >+ String parserHint = ((View) getModel()).getType(); >+ ParserHintAdapter hintAdapter = new ParserHintAdapter(getParserElement(), parserHint) { >+ >+ public Object getAdapter(Class adapter) { >+ if (IElementType.class.equals(adapter)) { >+ return UMLElementTypes.Interface_2003; >+ } >+ return super.getAdapter(adapter); >+ } >+ }; >+ parser = ParserService.getInstance().getParser(hintAdapter); >+ } >+ return parser; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected DirectEditManager getManager() { >+ if (manager == null) { >+ setManager(new TextDirectEditManager(this, TextDirectEditManager.getTextCellEditorClass(this), UMLEditPartFactory.getTextCellEditorLocator(this))); >+ } >+ return manager; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setManager(DirectEditManager manager) { >+ this.manager = manager; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void performDirectEdit() { >+ getManager().show(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void performDirectEdit(Point eventLocation) { >+ if (getManager().getClass() == TextDirectEditManager.class) { >+ ((TextDirectEditManager) getManager()).show(eventLocation.getSWTPoint()); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ private void performDirectEdit(char initialCharacter) { >+ if (getManager() instanceof TextDirectEditManager) { >+ ((TextDirectEditManager) getManager()).show(initialCharacter); >+ } else { >+ performDirectEdit(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void performDirectEditRequest(Request request) { >+ final Request theRequest = request; >+ try { >+ getEditingDomain().runExclusive(new Runnable() { >+ >+ public void run() { >+ if (isActive() && isEditable()) { >+ if (theRequest.getExtendedData().get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR) instanceof Character) { >+ Character initialChar = (Character) theRequest.getExtendedData().get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR); >+ performDirectEdit(initialChar.charValue()); >+ } else if ((theRequest instanceof DirectEditRequest) && (getEditText().equals(getLabelText()))) { >+ DirectEditRequest editRequest = (DirectEditRequest) theRequest; >+ performDirectEdit(editRequest.getLocation()); >+ } else { >+ performDirectEdit(); >+ } >+ } >+ } >+ }); >+ } catch (InterruptedException e) { >+ e.printStackTrace(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshVisuals() { >+ super.refreshVisuals(); >+ refreshLabel(); >+ refreshFont(); >+ refreshFontColor(); >+ refreshUnderline(); >+ refreshStrikeThrough(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshLabel() { >+ setLabelTextHelper(getFigure(), getLabelText()); >+ setLabelIconHelper(getFigure(), getLabelIcon()); >+ Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE); >+ if (pdEditPolicy instanceof UMLTextSelectionEditPolicy) { >+ ((UMLTextSelectionEditPolicy) pdEditPolicy).refreshFeedback(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshUnderline() { >+ FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle()); >+ if (style != null && getFigure() instanceof WrapLabel) { >+ ((WrapLabel) getFigure()).setTextUnderline(style.isUnderline()); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshStrikeThrough() { >+ FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle()); >+ if (style != null && getFigure() instanceof WrapLabel) { >+ ((WrapLabel) getFigure()).setTextStrikeThrough(style.isStrikeThrough()); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshFont() { >+ FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle()); >+ if (style != null) { >+ FontData fontData = new FontData(style.getFontName(), style.getFontHeight(), (style.isBold() ? SWT.BOLD : SWT.NORMAL) | (style.isItalic() ? SWT.ITALIC : SWT.NORMAL)); >+ setFont(fontData); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setFontColor(Color color) { >+ getFigure().setForegroundColor(color); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void addSemanticListeners() { >+ if (getParser() instanceof ISemanticParser) { >+ EObject element = resolveSemanticElement(); >+ parserElements = ((ISemanticParser) getParser()).getSemanticElementsBeingParsed(element); >+ for (int i = 0; i < parserElements.size(); i++) { >+ addListenerFilter("SemanticModel" + i, this, (EObject) parserElements.get(i)); //$NON-NLS-1$ >+ } >+ } else { >+ super.addSemanticListeners(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void removeSemanticListeners() { >+ if (parserElements != null) { >+ for (int i = 0; i < parserElements.size(); i++) { >+ removeListenerFilter("SemanticModel" + i); //$NON-NLS-1$ >+ } >+ } else { >+ super.removeSemanticListeners(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected AccessibleEditPart getAccessibleEditPart() { >+ if (accessibleEP == null) { >+ accessibleEP = new AccessibleGraphicalEditPart() { >+ >+ public void getName(AccessibleEvent e) { >+ e.result = getLabelTextHelper(getFigure()); >+ } >+ }; >+ } >+ return accessibleEP; >+ } >+ >+ /** >+ * @generated >+ */ >+ private View getFontStyleOwnerView() { >+ return getPrimaryView(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void handleNotificationEvent(Notification event) { >+ Object feature = event.getFeature(); >+ if (NotationPackage.eINSTANCE.getFontStyle_FontColor().equals(feature)) { >+ Integer c = (Integer) event.getNewValue(); >+ setFontColor(DiagramColorRegistry.getInstance().getColor(c)); >+ } else if (NotationPackage.eINSTANCE.getFontStyle_Underline().equals(feature)) { >+ refreshUnderline(); >+ } else if (NotationPackage.eINSTANCE.getFontStyle_StrikeThrough().equals(feature)) { >+ refreshStrikeThrough(); >+ } else if (NotationPackage.eINSTANCE.getFontStyle_FontHeight().equals(feature) || NotationPackage.eINSTANCE.getFontStyle_FontName().equals(feature) >+ || NotationPackage.eINSTANCE.getFontStyle_Bold().equals(feature) || NotationPackage.eINSTANCE.getFontStyle_Italic().equals(feature)) { >+ refreshFont(); >+ } else { >+ if (getParser() != null && getParser().isAffectingEvent(event, getParserOptions().intValue())) { >+ refreshLabel(); >+ } >+ if (getParser() instanceof ISemanticParser) { >+ ISemanticParser modelParser = (ISemanticParser) getParser(); >+ if (modelParser.areSemanticElementsAffected(null, event)) { >+ removeSemanticListeners(); >+ if (resolveSemanticElement() != null) { >+ addSemanticListeners(); >+ } >+ refreshLabel(); >+ } >+ } >+ } >+ super.handleNotificationEvent(event); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected IFigure createFigure() { >+ IFigure label = createFigurePrim(); >+ defaultText = getLabelTextHelper(label); >+ return label; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected IFigure createFigurePrim() { >+ return new WrapLabel(); >+ } >+ >+} >Index: src/org/eclipse/uml2/diagram/component/edit/helpers/InterfaceEditHelper.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/component/edit/helpers/InterfaceEditHelper.java >diff -N src/org/eclipse/uml2/diagram/component/edit/helpers/InterfaceEditHelper.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/component/edit/helpers/InterfaceEditHelper.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,7 @@ >+package org.eclipse.uml2.diagram.component.edit.helpers; >+ >+/** >+ * @generated >+ */ >+public class InterfaceEditHelper extends UMLBaseEditHelper { >+} >Index: src/org/eclipse/uml2/diagram/component/view/factories/PackageViewFactory.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/component/view/factories/PackageViewFactory.java >diff -N src/org/eclipse/uml2/diagram/component/view/factories/PackageViewFactory.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/component/view/factories/PackageViewFactory.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,44 @@ >+package org.eclipse.uml2.diagram.component.view.factories; >+ >+import java.util.ArrayList; >+import java.util.List; >+ >+import org.eclipse.core.runtime.IAdaptable; >+ >+import org.eclipse.gmf.runtime.diagram.ui.view.factories.DiagramViewFactory; >+ >+import org.eclipse.gmf.runtime.notation.MeasurementUnit; >+import org.eclipse.gmf.runtime.notation.NotationFactory; >+import org.eclipse.gmf.runtime.notation.View; >+ >+/** >+ * @generated >+ */ >+public class PackageViewFactory extends DiagramViewFactory { >+ >+ /** >+ * @generated >+ */ >+ protected List createStyles(View view) { >+ List styles = new ArrayList(); >+ styles.add(NotationFactory.eINSTANCE.createPageStyle()); >+ styles.add(NotationFactory.eINSTANCE.createGuideStyle()); >+ styles.add(NotationFactory.eINSTANCE.createDescriptionStyle()); >+ return styles; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void decorateView(View view, IAdaptable semanticAdapter, String diagramKind) { >+ super.decorateView(view, semanticAdapter, diagramKind); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected MeasurementUnit getMeasurementUnit() { >+ return MeasurementUnit.PIXEL_LITERAL; >+ } >+ >+} >Index: src/org/eclipse/uml2/diagram/component/expressions/UMLOCLFactory.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/component/expressions/UMLOCLFactory.java >diff -N src/org/eclipse/uml2/diagram/component/expressions/UMLOCLFactory.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/component/expressions/UMLOCLFactory.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,202 @@ >+package org.eclipse.uml2.diagram.component.expressions; >+ >+import java.util.Collections; >+import java.util.Iterator; >+import java.util.Map; >+ >+import org.eclipse.core.runtime.IStatus; >+ >+import org.eclipse.emf.ecore.EClassifier; >+import org.eclipse.emf.ecore.EEnum; >+import org.eclipse.emf.ecore.EEnumLiteral; >+import org.eclipse.emf.ecore.ETypedElement; >+ >+import org.eclipse.emf.ocl.expressions.ExpressionsFactory; >+import org.eclipse.emf.ocl.expressions.OCLExpression; >+import org.eclipse.emf.ocl.expressions.OperationCallExp; >+import org.eclipse.emf.ocl.expressions.Variable; >+ >+import org.eclipse.emf.ocl.expressions.util.AbstractVisitor; >+ >+import org.eclipse.emf.ocl.helper.HelperUtil; >+import org.eclipse.emf.ocl.helper.IOCLHelper; >+import org.eclipse.emf.ocl.helper.OCLParsingException; >+ >+import org.eclipse.emf.ocl.parser.EcoreEnvironment; >+import org.eclipse.emf.ocl.parser.EcoreEnvironmentFactory; >+import org.eclipse.emf.ocl.parser.Environment; >+import org.eclipse.emf.ocl.parser.EvaluationEnvironment; >+ >+import org.eclipse.emf.ocl.query.Query; >+import org.eclipse.emf.ocl.query.QueryFactory; >+ >+import org.eclipse.emf.ocl.types.util.Types; >+ >+import org.eclipse.emf.ocl.utilities.PredefinedType; >+ >+import org.eclipse.uml2.diagram.parser.lookup.OCLLookup; >+ >+/** >+ * @generated >+ */ >+public class UMLOCLFactory { >+ >+ /** >+ * @generated >+ */ >+ public static OCLLookup.Expression getOCLLookupExpression(String body, EClassifier context) { >+ final UMLAbstractExpression expression = getExpression(body, context); >+ if (!expression.getStatus().isOK()) { >+ throw new IllegalArgumentException("Bad OCL:" + body); >+ } >+ return new OCLLookup.Expression() { >+ >+ public Object evaluate(Object context) { >+ return expression.evaluate(context); >+ } >+ }; >+ } >+ >+ /** >+ * @generated >+ */ >+ private UMLOCLFactory() { >+ } >+ >+ /** >+ * @generated >+ */ >+ public static UMLAbstractExpression getExpression(String body, EClassifier context, Map environment) { >+ return new Expression(body, context, environment); >+ } >+ >+ /** >+ * @generated >+ */ >+ public static UMLAbstractExpression getExpression(String body, EClassifier context) { >+ return getExpression(body, context, Collections.EMPTY_MAP); >+ } >+ >+ /** >+ * @generated >+ */ >+ private static class Expression extends UMLAbstractExpression { >+ >+ /** >+ * @generated >+ */ >+ private Query query; >+ >+ /** >+ * @generated >+ */ >+ public Expression(String body, EClassifier context, Map environment) { >+ super(body, context, environment); >+ >+ IOCLHelper oclHelper = (environment.isEmpty()) ? HelperUtil.createOCLHelper() : HelperUtil.createOCLHelper(createCustomEnv(environment)); >+ oclHelper.setContext(context()); >+ try { >+ OCLExpression oclExpression = oclHelper.createQuery(body); >+ this.query = QueryFactory.eINSTANCE.createQuery(oclExpression); >+ } catch (OCLParsingException e) { >+ setStatus(IStatus.ERROR, e.getMessage(), e); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Object doEvaluate(Object context, Map env) { >+ if (query == null) { >+ return null; >+ } >+ EvaluationEnvironment evalEnv = query.getEvaluationEnvironment(); >+ // init environment >+ for (Iterator it = env.entrySet().iterator(); it.hasNext();) { >+ Map.Entry nextEntry = (Map.Entry) it.next(); >+ evalEnv.replace((String) nextEntry.getKey(), nextEntry.getValue()); >+ } >+ >+ try { >+ initExtentMap(context); >+ Object result = query.evaluate(context); >+ return (result != Types.OCL_INVALID) ? result : null; >+ } finally { >+ evalEnv.clear(); >+ query.setExtentMap(Collections.EMPTY_MAP); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Object performCast(Object value, ETypedElement targetType) { >+ if (targetType.getEType() instanceof EEnum) { >+ if (value instanceof EEnumLiteral) { >+ EEnumLiteral literal = (EEnumLiteral) value; >+ return (literal.getInstance() != null) ? literal.getInstance() : literal; >+ } >+ } >+ return super.performCast(value, targetType); >+ } >+ >+ /** >+ * @generated >+ */ >+ private void initExtentMap(Object context) { >+ if (query == null || context == null) { >+ return; >+ } >+ final Query queryToInit = query; >+ final Object extentContext = context; >+ >+ queryToInit.setExtentMap(Collections.EMPTY_MAP); >+ if (queryToInit.queryText() != null && queryToInit.queryText().indexOf("allInstances") >= 0) { >+ AbstractVisitor visitior = new AbstractVisitor() { >+ >+ private boolean usesAllInstances = false; >+ >+ public Object visitOperationCallExp(OperationCallExp oc) { >+ if (!usesAllInstances) { >+ usesAllInstances = PredefinedType.ALL_INSTANCES == oc.getOperationCode(); >+ if (usesAllInstances) { >+ queryToInit.setExtentMap(EcoreEnvironmentFactory.ECORE_INSTANCE.createExtentMap(extentContext)); >+ } >+ } >+ return super.visitOperationCallExp(oc); >+ } >+ }; >+ queryToInit.getExpression().accept(visitior); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ private static EcoreEnvironmentFactory createCustomEnv(Map environment) { >+ final Map env = environment; >+ return new EcoreEnvironmentFactory() { >+ >+ public Environment createClassifierContext(Object context) { >+ Environment ecoreEnv = super.createClassifierContext(context); >+ for (Iterator it = env.keySet().iterator(); it.hasNext();) { >+ String varName = (String) it.next(); >+ EClassifier varType = (EClassifier) env.get(varName); >+ ecoreEnv.addElement(varName, createVar(varName, varType), false); >+ } >+ return ecoreEnv; >+ } >+ }; >+ } >+ >+ /** >+ * @generated >+ */ >+ private static Variable createVar(String name, EClassifier type) { >+ Variable var = ExpressionsFactory.eINSTANCE.createVariable(); >+ var.setName(name); >+ var.setType(EcoreEnvironment.getOCLType(type)); >+ return var; >+ } >+ } >+} >Index: src/org/eclipse/uml2/diagram/component/navigator/UMLAbstractNavigatorItem.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/component/navigator/UMLAbstractNavigatorItem.java >diff -N src/org/eclipse/uml2/diagram/component/navigator/UMLAbstractNavigatorItem.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/component/navigator/UMLAbstractNavigatorItem.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,53 @@ >+package org.eclipse.uml2.diagram.component.navigator; >+ >+import org.eclipse.core.runtime.IAdaptable; >+ >+import org.eclipse.gmf.runtime.diagram.ui.properties.views.IReadOnlyDiagramPropertySheetPageContributor; >+ >+import org.eclipse.ui.views.properties.tabbed.ITabbedPropertySheetPageContributor; >+ >+/** >+ * @generated >+ */ >+public abstract class UMLAbstractNavigatorItem implements IAdaptable { >+ >+ /** >+ * @generated >+ */ >+ private Object myParent; >+ >+ /** >+ * @generated >+ */ >+ protected UMLAbstractNavigatorItem(Object parent) { >+ myParent = parent; >+ } >+ >+ /** >+ * @generated >+ */ >+ abstract public String getModelID(); >+ >+ /** >+ * @generated >+ */ >+ public Object getParent() { >+ return myParent; >+ } >+ >+ /** >+ * @generated >+ */ >+ public Object getAdapter(Class adapter) { >+ if (ITabbedPropertySheetPageContributor.class.isAssignableFrom(adapter)) { >+ return new ITabbedPropertySheetPageContributor() { >+ >+ public String getContributorId() { >+ return "org.eclipse.uml2.diagram.component"; >+ } >+ }; >+ } >+ return null; >+ } >+ >+} >Index: src/org/eclipse/uml2/diagram/component/part/UMLDiagramEditorUtil.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/component/part/UMLDiagramEditorUtil.java >diff -N src/org/eclipse/uml2/diagram/component/part/UMLDiagramEditorUtil.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/component/part/UMLDiagramEditorUtil.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,213 @@ >+package org.eclipse.uml2.diagram.component.part; >+ >+import java.io.IOException; >+import java.io.InputStream; >+import java.lang.reflect.InvocationTargetException; >+import java.util.ArrayList; >+import java.util.Collections; >+import java.util.List; >+ >+import org.eclipse.core.commands.ExecutionException; >+import org.eclipse.core.commands.operations.OperationHistoryFactory; >+import org.eclipse.core.resources.IFile; >+import org.eclipse.core.resources.IResource; >+import org.eclipse.core.runtime.IAdaptable; >+import org.eclipse.core.runtime.IPath; >+import org.eclipse.core.runtime.IProgressMonitor; >+import org.eclipse.core.runtime.SubProgressMonitor; >+import org.eclipse.emf.common.util.URI; >+import org.eclipse.emf.ecore.resource.Resource; >+import org.eclipse.emf.ecore.resource.ResourceSet; >+import org.eclipse.gmf.runtime.common.core.command.CommandResult; >+import org.eclipse.gmf.runtime.diagram.core.services.ViewService; >+import org.eclipse.gmf.runtime.diagram.ui.resources.editor.util.DiagramFileCreator; >+import org.eclipse.gmf.runtime.emf.commands.core.command.AbstractTransactionalCommand; >+import org.eclipse.gmf.runtime.emf.core.GMFEditingDomainFactory; >+import org.eclipse.gmf.runtime.notation.Diagram; >+import org.eclipse.jface.operation.IRunnableContext; >+import org.eclipse.jface.operation.IRunnableWithProgress; >+import org.eclipse.swt.widgets.Shell; >+import org.eclipse.ui.IEditorPart; >+import org.eclipse.ui.IWorkbenchPage; >+import org.eclipse.ui.IWorkbenchWindow; >+import org.eclipse.ui.PartInitException; >+import org.eclipse.emf.transaction.TransactionalEditingDomain; >+import java.io.ByteArrayInputStream; >+ >+import java.util.HashMap; >+import java.util.Map; >+ >+import org.eclipse.core.resources.IResourceStatus; >+import org.eclipse.core.resources.ResourcesPlugin; >+ >+import org.eclipse.core.runtime.CoreException; >+import org.eclipse.core.runtime.NullProgressMonitor; >+import org.eclipse.core.runtime.Path; >+ >+import org.eclipse.emf.ecore.EObject; >+ >+import org.eclipse.emf.ecore.xmi.XMIResource; >+ >+import org.eclipse.jface.dialogs.ErrorDialog; >+ >+import org.eclipse.ui.ide.IDE; >+ >+import org.eclipse.uml2.diagram.component.edit.parts.PackageEditPart; >+ >+import org.eclipse.uml2.uml.UMLFactory; >+ >+/** >+ * @generated >+ */ >+public class UMLDiagramEditorUtil { >+ >+ /** >+ * @generated >+ */ >+ public static final URI createAndOpenDiagram(IPath containerPath, String fileName, IWorkbenchWindow window, IProgressMonitor progressMonitor, boolean openEditor, boolean saveDiagram) { >+ IFile diagramFile = createNewDiagramFile(containerPath, fileName, window.getShell(), progressMonitor); >+ if (diagramFile != null && openEditor) { >+ openDiagramEditor(window, diagramFile, saveDiagram, progressMonitor); >+ } >+ return URI.createPlatformResourceURI(diagramFile.getFullPath().toString()); >+ } >+ >+ /** >+ * @generated >+ */ >+ public static final IEditorPart openDiagramEditor(IWorkbenchWindow window, IFile file, boolean saveDiagram, IProgressMonitor progressMonitor) { >+ IEditorPart editorPart = null; >+ try { >+ IWorkbenchPage page = window.getActivePage(); >+ if (page != null) { >+ editorPart = openDiagramEditor(page, file); >+ if (saveDiagram) { >+ editorPart.doSave(progressMonitor); >+ } >+ } >+ file.refreshLocal(IResource.DEPTH_ZERO, null); >+ return editorPart; >+ } catch (Exception e) { >+ UMLDiagramEditorPlugin.getInstance().logError("Error opening diagram", e); >+ } >+ return null; >+ } >+ >+ /** >+ * @generated >+ */ >+ public static final IEditorPart openDiagramEditor(IWorkbenchPage page, IFile file) throws PartInitException { >+ return IDE.openEditor(page, file); >+ } >+ >+ /** >+ * <p> >+ * This method should be called within a workspace modify operation since it creates resources. >+ * </p> >+ * @generated >+ * @return the created file resource, or <code>null</code> if the file was not created >+ */ >+ public static final IFile createNewDiagramFile(IPath containerFullPath, String fileName, Shell shell, IProgressMonitor progressMonitor) { >+ TransactionalEditingDomain editingDomain = GMFEditingDomainFactory.INSTANCE.createEditingDomain(); >+ ResourceSet resourceSet = editingDomain.getResourceSet(); >+ progressMonitor.beginTask("Creating diagram and model files", 3); //$NON-NLS-1$ >+ final IFile diagramFile = createNewFile(containerFullPath, fileName, shell); >+ final Resource diagramResource = resourceSet.createResource(URI.createPlatformResourceURI(diagramFile.getFullPath().toString())); >+ List affectedFiles = new ArrayList(); >+ affectedFiles.add(diagramFile); >+ IPath modelFileRelativePath = diagramFile.getFullPath().removeFileExtension().addFileExtension("uml"); //$NON-NLS-1$ >+ IFile modelFile = diagramFile.getParent().getFile(new Path(modelFileRelativePath.lastSegment())); >+ final Resource modelResource = resourceSet.createResource(URI.createPlatformResourceURI(modelFile.getFullPath().toString())); >+ affectedFiles.add(modelFile); >+ AbstractTransactionalCommand command = new AbstractTransactionalCommand(editingDomain, "Creating diagram and model", affectedFiles) { //$NON-NLS-1$ >+ >+ protected CommandResult doExecuteWithResult(IProgressMonitor monitor, IAdaptable info) throws ExecutionException { >+ org.eclipse.uml2.uml.Package model = createInitialModel(); >+ modelResource.getContents().add(createInitialRoot(model)); >+ Diagram diagram = ViewService.createDiagram(model, PackageEditPart.MODEL_ID, UMLDiagramEditorPlugin.DIAGRAM_PREFERENCES_HINT); >+ if (diagram != null) { >+ diagramResource.getContents().add(diagram); >+ diagram.setName(diagramFile.getName()); >+ diagram.setElement(model); >+ } >+ try { >+ Map options = new HashMap(); >+ options.put(XMIResource.OPTION_ENCODING, "UTF-8"); //$NON-NLS-1$ >+ modelResource.save(options); >+ diagramResource.save(Collections.EMPTY_MAP); >+ } catch (IOException e) { >+ >+ UMLDiagramEditorPlugin.getInstance().logError("Unable to store model and diagram resources", e); //$NON-NLS-1$ >+ } >+ return CommandResult.newOKCommandResult(); >+ } >+ }; >+ >+ try { >+ OperationHistoryFactory.getOperationHistory().execute(command, new SubProgressMonitor(progressMonitor, 1), null); >+ } catch (ExecutionException e) { >+ UMLDiagramEditorPlugin.getInstance().logError("Unable to create model and diagram", e); //$NON-NLS-1$ >+ } >+ >+ try { >+ modelFile.setCharset("UTF-8", new SubProgressMonitor(progressMonitor, 1)); //$NON-NLS-1$ >+ } catch (CoreException e) { >+ UMLDiagramEditorPlugin.getInstance().logError("Unable to set charset for model file", e); //$NON-NLS-1$ >+ } >+ try { >+ diagramFile.setCharset("UTF-8", new SubProgressMonitor(progressMonitor, 1)); //$NON-NLS-1$ >+ } catch (CoreException e) { >+ UMLDiagramEditorPlugin.getInstance().logError("Unable to set charset for diagram file", e); //$NON-NLS-1$ >+ } >+ >+ return diagramFile; >+ } >+ >+ /** >+ * Create a new instance of domain element associated with canvas. >+ * <!-- begin-user-doc --> >+ * <!-- end-user-doc --> >+ * @generated >+ */ >+ private static org.eclipse.uml2.uml.Package createInitialModel() { >+ return UMLFactory.eINSTANCE.createPackage(); >+ } >+ >+ /** >+ * @generated >+ */ >+ private static EObject createInitialRoot(org.eclipse.uml2.uml.Package model) { >+ return model; >+ } >+ >+ /** >+ * @generated >+ */ >+ public static IFile createNewFile(IPath containerPath, String fileName, Shell shell) { >+ IPath newFilePath = containerPath.append(fileName); >+ IFile newFileHandle = ResourcesPlugin.getWorkspace().getRoot().getFile(newFilePath); >+ try { >+ createFile(newFileHandle); >+ } catch (CoreException e) { >+ ErrorDialog.openError(shell, "Creation Problems", null, e.getStatus()); >+ return null; >+ } >+ return newFileHandle; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected static void createFile(IFile fileHandle) throws CoreException { >+ try { >+ fileHandle.create(new ByteArrayInputStream(new byte[0]), false, new NullProgressMonitor()); >+ } catch (CoreException e) { >+ // If the file already existed locally, just refresh to get contents >+ if (e.getStatus().getCode() == IResourceStatus.PATH_OCCUPIED) { >+ fileHandle.refreshLocal(IResource.DEPTH_ZERO, null); >+ } else { >+ throw e; >+ } >+ } >+ } >+} >Index: src/org/eclipse/uml2/diagram/component/edit/helpers/ComponentEditHelperAdvice.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/component/edit/helpers/ComponentEditHelperAdvice.java >diff -N src/org/eclipse/uml2/diagram/component/edit/helpers/ComponentEditHelperAdvice.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/component/edit/helpers/ComponentEditHelperAdvice.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,9 @@ >+package org.eclipse.uml2.diagram.component.edit.helpers; >+ >+import org.eclipse.gmf.runtime.emf.type.core.edithelper.AbstractEditHelperAdvice; >+ >+/** >+ * @generated >+ */ >+public class ComponentEditHelperAdvice extends AbstractEditHelperAdvice { >+} >Index: src/org/eclipse/uml2/diagram/component/providers/UMLModelingAssistantProvider.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/component/providers/UMLModelingAssistantProvider.java >diff -N src/org/eclipse/uml2/diagram/component/providers/UMLModelingAssistantProvider.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/component/providers/UMLModelingAssistantProvider.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,269 @@ >+package org.eclipse.uml2.diagram.component.providers; >+ >+import java.util.ArrayList; >+import java.util.Collection; >+import java.util.Collections; >+import java.util.HashSet; >+import java.util.Iterator; >+import java.util.List; >+ >+import org.eclipse.core.runtime.IAdaptable; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart; >+import org.eclipse.gmf.runtime.emf.type.core.ElementTypeRegistry; >+import org.eclipse.gmf.runtime.emf.type.core.IElementType; >+import org.eclipse.gmf.runtime.emf.ui.services.modelingassistant.ModelingAssistantProvider; >+import org.eclipse.gmf.runtime.notation.Diagram; >+import org.eclipse.jface.viewers.ILabelProvider; >+import org.eclipse.jface.window.Window; >+import org.eclipse.swt.widgets.Display; >+import org.eclipse.swt.widgets.Shell; >+import org.eclipse.ui.dialogs.ElementListSelectionDialog; >+import org.eclipse.uml2.diagram.component.edit.parts.Class2EditPart; >+import org.eclipse.uml2.diagram.component.edit.parts.ClassEditPart; >+import org.eclipse.uml2.diagram.component.edit.parts.Component2EditPart; >+import org.eclipse.uml2.diagram.component.edit.parts.ComponentContents2EditPart; >+import org.eclipse.uml2.diagram.component.edit.parts.ComponentContentsEditPart; >+import org.eclipse.uml2.diagram.component.edit.parts.ComponentEditPart; >+import org.eclipse.uml2.diagram.component.edit.parts.Interface2EditPart; >+import org.eclipse.uml2.diagram.component.edit.parts.InterfaceEditPart; >+import org.eclipse.uml2.diagram.component.edit.parts.PackageEditPart; >+import org.eclipse.uml2.diagram.component.edit.parts.PortEditPart; >+import org.eclipse.uml2.diagram.component.part.UMLDiagramEditorPlugin; >+import org.eclipse.emf.ecore.EObject; >+import org.eclipse.emf.edit.ui.provider.AdapterFactoryLabelProvider; >+ >+/** >+ * @generated >+ */ >+public class UMLModelingAssistantProvider extends ModelingAssistantProvider { >+ >+ /** >+ * @generated >+ */ >+ public List getTypesForPopupBar(IAdaptable host) { >+ IGraphicalEditPart editPart = (IGraphicalEditPart) host.getAdapter(IGraphicalEditPart.class); >+ if (editPart instanceof ComponentEditPart) { >+ List types = new ArrayList(); >+ types.add(UMLElementTypes.Port_3002); >+ return types; >+ } >+ if (editPart instanceof Class2EditPart) { >+ List types = new ArrayList(); >+ types.add(UMLElementTypes.Port_3002); >+ return types; >+ } >+ if (editPart instanceof Component2EditPart) { >+ List types = new ArrayList(); >+ types.add(UMLElementTypes.Port_3002); >+ return types; >+ } >+ if (editPart instanceof ClassEditPart) { >+ List types = new ArrayList(); >+ types.add(UMLElementTypes.Port_3002); >+ return types; >+ } >+ if (editPart instanceof ComponentContentsEditPart) { >+ List types = new ArrayList(); >+ types.add(UMLElementTypes.Component_3001); >+ types.add(UMLElementTypes.Artifact_3003); >+ types.add(UMLElementTypes.Class_3004); >+ types.add(UMLElementTypes.Interface_3005); >+ return types; >+ } >+ if (editPart instanceof ComponentContents2EditPart) { >+ List types = new ArrayList(); >+ types.add(UMLElementTypes.Component_3001); >+ types.add(UMLElementTypes.Artifact_3003); >+ types.add(UMLElementTypes.Class_3004); >+ types.add(UMLElementTypes.Interface_3005); >+ return types; >+ } >+ if (editPart instanceof PackageEditPart) { >+ List types = new ArrayList(); >+ types.add(UMLElementTypes.Component_2001); >+ types.add(UMLElementTypes.Artifact_2002); >+ types.add(UMLElementTypes.Interface_2003); >+ types.add(UMLElementTypes.Class_2004); >+ return types; >+ } >+ return Collections.EMPTY_LIST; >+ } >+ >+ /** >+ * @generated >+ */ >+ public List getRelTypesOnSource(IAdaptable source) { >+ IGraphicalEditPart sourceEditPart = (IGraphicalEditPart) source.getAdapter(IGraphicalEditPart.class); >+ if (sourceEditPart instanceof PortEditPart) { >+ List types = new ArrayList(); >+ types.add(UMLElementTypes.PortProvided_4006); >+ types.add(UMLElementTypes.PortRequired_4004); >+ return types; >+ } >+ return Collections.EMPTY_LIST; >+ } >+ >+ /** >+ * @generated >+ */ >+ public List getRelTypesOnTarget(IAdaptable target) { >+ IGraphicalEditPart targetEditPart = (IGraphicalEditPart) target.getAdapter(IGraphicalEditPart.class); >+ if (targetEditPart instanceof Interface2EditPart) { >+ List types = new ArrayList(); >+ types.add(UMLElementTypes.InterfaceRealization_4001); >+ types.add(UMLElementTypes.PortProvided_4006); >+ types.add(UMLElementTypes.PortRequired_4004); >+ return types; >+ } >+ if (targetEditPart instanceof InterfaceEditPart) { >+ List types = new ArrayList(); >+ types.add(UMLElementTypes.InterfaceRealization_4001); >+ types.add(UMLElementTypes.PortProvided_4006); >+ types.add(UMLElementTypes.PortRequired_4004); >+ return types; >+ } >+ return Collections.EMPTY_LIST; >+ } >+ >+ /** >+ * @generated >+ */ >+ public List getRelTypesOnSourceAndTarget(IAdaptable source, IAdaptable target) { >+ IGraphicalEditPart sourceEditPart = (IGraphicalEditPart) source.getAdapter(IGraphicalEditPart.class); >+ IGraphicalEditPart targetEditPart = (IGraphicalEditPart) target.getAdapter(IGraphicalEditPart.class); >+ if (sourceEditPart instanceof PortEditPart) { >+ List types = new ArrayList(); >+ if (targetEditPart instanceof Interface2EditPart) { >+ types.add(UMLElementTypes.PortProvided_4006); >+ } >+ if (targetEditPart instanceof InterfaceEditPart) { >+ types.add(UMLElementTypes.PortProvided_4006); >+ } >+ if (targetEditPart instanceof Interface2EditPart) { >+ types.add(UMLElementTypes.PortRequired_4004); >+ } >+ if (targetEditPart instanceof InterfaceEditPart) { >+ types.add(UMLElementTypes.PortRequired_4004); >+ } >+ return types; >+ } >+ return Collections.EMPTY_LIST; >+ } >+ >+ /** >+ * @generated >+ */ >+ public List getTypesForSource(IAdaptable target, IElementType relationshipType) { >+ IGraphicalEditPart targetEditPart = (IGraphicalEditPart) target.getAdapter(IGraphicalEditPart.class); >+ if (targetEditPart instanceof Interface2EditPart) { >+ List types = new ArrayList(); >+ if (relationshipType == UMLElementTypes.PortProvided_4006) { >+ types.add(UMLElementTypes.Port_3002); >+ } >+ if (relationshipType == UMLElementTypes.PortRequired_4004) { >+ types.add(UMLElementTypes.Port_3002); >+ } >+ return types; >+ } >+ if (targetEditPart instanceof InterfaceEditPart) { >+ List types = new ArrayList(); >+ if (relationshipType == UMLElementTypes.PortProvided_4006) { >+ types.add(UMLElementTypes.Port_3002); >+ } >+ if (relationshipType == UMLElementTypes.PortRequired_4004) { >+ types.add(UMLElementTypes.Port_3002); >+ } >+ return types; >+ } >+ return Collections.EMPTY_LIST; >+ } >+ >+ /** >+ * @generated >+ */ >+ public List getTypesForTarget(IAdaptable source, IElementType relationshipType) { >+ IGraphicalEditPart sourceEditPart = (IGraphicalEditPart) source.getAdapter(IGraphicalEditPart.class); >+ if (sourceEditPart instanceof PortEditPart) { >+ List types = new ArrayList(); >+ if (relationshipType == UMLElementTypes.PortProvided_4006) { >+ types.add(UMLElementTypes.Interface_2003); >+ } >+ if (relationshipType == UMLElementTypes.PortProvided_4006) { >+ types.add(UMLElementTypes.Interface_3005); >+ } >+ if (relationshipType == UMLElementTypes.PortRequired_4004) { >+ types.add(UMLElementTypes.Interface_2003); >+ } >+ if (relationshipType == UMLElementTypes.PortRequired_4004) { >+ types.add(UMLElementTypes.Interface_3005); >+ } >+ return types; >+ } >+ return Collections.EMPTY_LIST; >+ } >+ >+ /** >+ * @generated >+ */ >+ public EObject selectExistingElementForSource(IAdaptable target, IElementType relationshipType) { >+ return selectExistingElement(target, getTypesForSource(target, relationshipType)); >+ } >+ >+ /** >+ * @generated >+ */ >+ public EObject selectExistingElementForTarget(IAdaptable source, IElementType relationshipType) { >+ return selectExistingElement(source, getTypesForTarget(source, relationshipType)); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject selectExistingElement(IAdaptable host, Collection types) { >+ if (types.isEmpty()) { >+ return null; >+ } >+ IGraphicalEditPart editPart = (IGraphicalEditPart) host.getAdapter(IGraphicalEditPart.class); >+ if (editPart == null) { >+ return null; >+ } >+ Diagram diagram = (Diagram) editPart.getRoot().getContents().getModel(); >+ Collection elements = new HashSet(); >+ for (Iterator it = diagram.getElement().eAllContents(); it.hasNext();) { >+ EObject element = (EObject) it.next(); >+ if (isApplicableElement(element, types)) { >+ elements.add(element); >+ } >+ } >+ if (elements.isEmpty()) { >+ return null; >+ } >+ return selectElement((EObject[]) elements.toArray(new EObject[elements.size()])); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected boolean isApplicableElement(EObject element, Collection types) { >+ IElementType type = ElementTypeRegistry.getInstance().getElementType(element); >+ return types.contains(type); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject selectElement(EObject[] elements) { >+ Shell shell = Display.getCurrent().getActiveShell(); >+ ILabelProvider labelProvider = new AdapterFactoryLabelProvider(UMLDiagramEditorPlugin.getInstance().getItemProvidersAdapterFactory()); >+ ElementListSelectionDialog dialog = new ElementListSelectionDialog(shell, labelProvider); >+ dialog.setMessage("Available domain model elements:"); >+ dialog.setTitle("Select domain model element"); >+ dialog.setMultipleSelection(false); >+ dialog.setElements(elements); >+ EObject selected = null; >+ if (dialog.open() == Window.OK) { >+ selected = (EObject) dialog.getFirstResult(); >+ } >+ return selected; >+ } >+} >Index: src/org/eclipse/uml2/diagram/component/edit/helpers/ComponentEditHelper.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/component/edit/helpers/ComponentEditHelper.java >diff -N src/org/eclipse/uml2/diagram/component/edit/helpers/ComponentEditHelper.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/component/edit/helpers/ComponentEditHelper.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,7 @@ >+package org.eclipse.uml2.diagram.component.edit.helpers; >+ >+/** >+ * @generated >+ */ >+public class ComponentEditHelper extends UMLBaseEditHelper { >+} >Index: src/org/eclipse/uml2/diagram/component/edit/policies/UMLTextSelectionEditPolicy.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/component/edit/policies/UMLTextSelectionEditPolicy.java >diff -N src/org/eclipse/uml2/diagram/component/edit/policies/UMLTextSelectionEditPolicy.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/component/edit/policies/UMLTextSelectionEditPolicy.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,192 @@ >+package org.eclipse.uml2.diagram.component.edit.policies; >+ >+import org.eclipse.draw2d.ColorConstants; >+import org.eclipse.draw2d.Figure; >+import org.eclipse.draw2d.Graphics; >+import org.eclipse.draw2d.IFigure; >+import org.eclipse.draw2d.Label; >+import org.eclipse.draw2d.RectangleFigure; >+import org.eclipse.draw2d.geometry.Rectangle; >+import org.eclipse.gef.LayerConstants; >+import org.eclipse.gef.editpolicies.SelectionEditPolicy; >+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel; >+ >+/** >+ * @generated >+ */ >+public class UMLTextSelectionEditPolicy extends SelectionEditPolicy { >+ >+ /** >+ * @generated >+ */ >+ private IFigure selectionFeedbackFigure; >+ >+ /** >+ * @generated >+ */ >+ private IFigure focusFeedbackFigure; >+ >+ /** >+ * @generated >+ */ >+ protected void showPrimarySelection() { >+ if (getHostFigure() instanceof WrapLabel) { >+ ((WrapLabel) getHostFigure()).setSelected(true); >+ ((WrapLabel) getHostFigure()).setFocus(true); >+ } else { >+ showSelection(); >+ showFocus(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void showSelection() { >+ if (getHostFigure() instanceof WrapLabel) { >+ ((WrapLabel) getHostFigure()).setSelected(true); >+ ((WrapLabel) getHostFigure()).setFocus(false); >+ } else { >+ hideSelection(); >+ addFeedback(selectionFeedbackFigure = createSelectionFeedbackFigure()); >+ refreshSelectionFeedback(); >+ hideFocus(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void hideSelection() { >+ if (getHostFigure() instanceof WrapLabel) { >+ ((WrapLabel) getHostFigure()).setSelected(false); >+ ((WrapLabel) getHostFigure()).setFocus(false); >+ } else { >+ if (selectionFeedbackFigure != null) { >+ removeFeedback(selectionFeedbackFigure); >+ selectionFeedbackFigure = null; >+ } >+ hideFocus(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void showFocus() { >+ if (getHostFigure() instanceof WrapLabel) { >+ ((WrapLabel) getHostFigure()).setFocus(true); >+ } else { >+ hideFocus(); >+ addFeedback(focusFeedbackFigure = createFocusFeedbackFigure()); >+ refreshFocusFeedback(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void hideFocus() { >+ if (getHostFigure() instanceof WrapLabel) { >+ ((WrapLabel) getHostFigure()).setFocus(false); >+ } else { >+ if (focusFeedbackFigure != null) { >+ removeFeedback(focusFeedbackFigure); >+ focusFeedbackFigure = null; >+ } >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected IFigure getFeedbackLayer() { >+ return getLayer(LayerConstants.SCALED_FEEDBACK_LAYER); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Rectangle getFeedbackBounds() { >+ Rectangle bounds; >+ if (getHostFigure() instanceof Label) { >+ bounds = ((Label) getHostFigure()).getTextBounds(); >+ bounds.intersect(getHostFigure().getBounds()); >+ } else { >+ bounds = getHostFigure().getBounds().getCopy(); >+ } >+ getHostFigure().getParent().translateToAbsolute(bounds); >+ getFeedbackLayer().translateToRelative(bounds); >+ return bounds; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected IFigure createSelectionFeedbackFigure() { >+ if (getHostFigure() instanceof Label) { >+ Label feedbackFigure = new Label(); >+ feedbackFigure.setOpaque(true); >+ feedbackFigure.setBackgroundColor(ColorConstants.menuBackgroundSelected); >+ feedbackFigure.setForegroundColor(ColorConstants.menuForegroundSelected); >+ return feedbackFigure; >+ } else { >+ RectangleFigure feedbackFigure = new RectangleFigure(); >+ feedbackFigure.setFill(false); >+ return feedbackFigure; >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected IFigure createFocusFeedbackFigure() { >+ return new Figure() { >+ >+ protected void paintFigure(Graphics graphics) { >+ graphics.drawFocus(getBounds().getResized(-1, -1)); >+ } >+ }; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void updateLabel(Label target) { >+ Label source = (Label) getHostFigure(); >+ target.setText(source.getText()); >+ target.setTextAlignment(source.getTextAlignment()); >+ target.setFont(source.getFont()); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshSelectionFeedback() { >+ if (selectionFeedbackFigure != null) { >+ if (selectionFeedbackFigure instanceof Label) { >+ updateLabel((Label) selectionFeedbackFigure); >+ selectionFeedbackFigure.setBounds(getFeedbackBounds()); >+ } else { >+ selectionFeedbackFigure.setBounds(getFeedbackBounds().expand(5, 5)); >+ } >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshFocusFeedback() { >+ if (focusFeedbackFigure != null) { >+ focusFeedbackFigure.setBounds(getFeedbackBounds()); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ public void refreshFeedback() { >+ refreshSelectionFeedback(); >+ refreshFocusFeedback(); >+ } >+} >Index: icons/linksNavigatorGroup.gif >=================================================================== >RCS file: icons/linksNavigatorGroup.gif >diff -N icons/linksNavigatorGroup.gif >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ icons/linksNavigatorGroup.gif 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,5 @@ >+GIF89aÕÿÿr/GøØf'øÐxøàøÐf>2èÆøè°èÐøðÈÿÿÿÃ6úöºøà øØ?]FøèÒ«üößãϹ´2àÀxr+ðØ?¥l$yO@_l$?R¼2ï߯¼ 2à 6!ù,s@pH,?È#âèh:¨T0ô4® >+à?p©Ñd¢Y`B¡p8G AØ%%HÁçW¶ _B???B¥¦¥ B®©C³´µI·¸FA;Content-Type: image/gif >+ >+GIF89aÕÿÿr/GøØf'øÐxøàøÐf>2èÆøè°èÐøðÈÿÿÿÃ6úöºøà øØ?]FøèÒ«üößãϹ´2àÀxr+ðØ?¥l$yO@_l$?R¼2ï߯¼ 2à 6!ù,s@pH,?È#âèh:¨T0ô4® >+à?p©Ñd¢Y`B¡p8G AØ%%HÁçW¶ _B???B¥¦¥ B®©C³´µI·¸FA; >Index: src/org/eclipse/uml2/diagram/component/edit/parts/PortEditPart.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/component/edit/parts/PortEditPart.java >diff -N src/org/eclipse/uml2/diagram/component/edit/parts/PortEditPart.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/component/edit/parts/PortEditPart.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,300 @@ >+package org.eclipse.uml2.diagram.component.edit.parts; >+ >+import java.util.Iterator; >+ >+import org.eclipse.draw2d.IFigure; >+import org.eclipse.draw2d.StackLayout; >+ >+import org.eclipse.gef.EditPart; >+import org.eclipse.gef.EditPolicy; >+import org.eclipse.gef.GraphicalEditPart; >+import org.eclipse.gef.Request; >+ >+import org.eclipse.gef.commands.Command; >+ >+import org.eclipse.gef.editparts.LayerManager; >+ >+import org.eclipse.gef.editpolicies.LayoutEditPolicy; >+import org.eclipse.gef.editpolicies.NonResizableEditPolicy; >+ >+import org.eclipse.gef.requests.CreateRequest; >+ >+import org.eclipse.gmf.runtime.diagram.ui.editparts.AbstractBorderItemEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart; >+ >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles; >+ >+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout; >+ >+import org.eclipse.gmf.runtime.gef.ui.figures.DefaultSizeNodeFigure; >+import org.eclipse.gmf.runtime.gef.ui.figures.NodeFigure; >+ >+import org.eclipse.gmf.runtime.notation.View; >+ >+import org.eclipse.uml2.diagram.component.edit.policies.PortItemSemanticEditPolicy; >+import org.eclipse.uml2.diagram.component.edit.policies.UMLExtNodeLabelHostLayoutEditPolicy; >+import org.eclipse.uml2.diagram.component.part.UMLVisualIDRegistry; >+ >+/** >+ * @generated >+ */ >+public class PortEditPart extends AbstractBorderItemEditPart { >+ >+ /** >+ * @generated >+ */ >+ public static final int VISUAL_ID = 3002; >+ >+ /** >+ * @generated >+ */ >+ protected IFigure contentPane; >+ >+ /** >+ * @generated >+ */ >+ protected IFigure primaryShape; >+ >+ /** >+ * @generated >+ */ >+ public PortEditPart(View view) { >+ super(view); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void createDefaultEditPolicies() { >+ super.createDefaultEditPolicies(); >+ installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE, getPrimaryDragEditPolicy()); >+ installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE, new PortItemSemanticEditPolicy()); >+ installEditPolicy(EditPolicy.LAYOUT_ROLE, createLayoutEditPolicy()); >+ >+ } >+ >+ /** >+ * @generated >+ */ >+ protected LayoutEditPolicy createLayoutEditPolicy() { >+ LayoutEditPolicy lep = new LayoutEditPolicy() { >+ >+ protected void decorateChild(EditPart child) { >+ if (isExternalLabel(child)) { >+ return; >+ } >+ super.decorateChild(child); >+ } >+ >+ protected EditPolicy createChildEditPolicy(EditPart child) { >+ EditPolicy result = child.getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE); >+ if (result == null) { >+ result = new NonResizableEditPolicy(); >+ } >+ return result; >+ } >+ >+ protected Command getMoveChildrenCommand(Request request) { >+ return null; >+ } >+ >+ protected Command getCreateCommand(CreateRequest request) { >+ return null; >+ } >+ }; >+ UMLExtNodeLabelHostLayoutEditPolicy xlep = new UMLExtNodeLabelHostLayoutEditPolicy() { >+ >+ protected boolean isExternalLabel(EditPart editPart) { >+ return PortEditPart.this.isExternalLabel(editPart); >+ } >+ }; >+ xlep.setRealLayoutEditPolicy(lep); >+ return xlep; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected IFigure createNodeShape() { >+ PortFigure figure = new PortFigure(); >+ return primaryShape = figure; >+ } >+ >+ /** >+ * @generated >+ */ >+ public PortFigure getPrimaryShape() { >+ return (PortFigure) primaryShape; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected IFigure getContentPaneFor(IGraphicalEditPart editPart) { >+ if (isExternalLabel(editPart)) { >+ return getExternalLabelsContainer(); >+ } >+ >+ return super.getContentPaneFor(editPart); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected NodeFigure createNodePlate() { >+ DefaultSizeNodeFigure result = new DefaultSizeNodeFigure(getMapMode().DPtoLP(15), getMapMode().DPtoLP(15)); >+ //FIXME: workaround for #154536 >+ result.getBounds().setSize(result.getPreferredSize()); >+ return result; >+ } >+ >+ /** >+ * Creates figure for this edit part. >+ * >+ * Body of this method does not depend on settings in generation model >+ * so you may safely remove <i>generated</i> tag and modify it. >+ * >+ * @generated >+ */ >+ protected NodeFigure createNodeFigure() { >+ NodeFigure figure = createNodePlate(); >+ figure.setLayoutManager(new StackLayout()); >+ IFigure shape = createNodeShape(); >+ figure.add(shape); >+ contentPane = setupContentPane(shape); >+ return figure; >+ } >+ >+ /** >+ * Default implementation treats passed figure as content pane. >+ * Respects layout one may have set for generated figure. >+ * @param nodeShape instance of generated figure class >+ * @generated >+ */ >+ protected IFigure setupContentPane(IFigure nodeShape) { >+ if (nodeShape.getLayoutManager() == null) { >+ ConstrainedToolbarLayout layout = new ConstrainedToolbarLayout(); >+ layout.setSpacing(getMapMode().DPtoLP(5)); >+ nodeShape.setLayoutManager(layout); >+ } >+ return nodeShape; // use nodeShape itself as contentPane >+ } >+ >+ /** >+ * @generated >+ */ >+ public IFigure getContentPane() { >+ if (contentPane != null) { >+ return contentPane; >+ } >+ return super.getContentPane(); >+ } >+ >+ /** >+ * @generated >+ */ >+ public EditPart getPrimaryChildEditPart() { >+ return getChildBySemanticHint(UMLVisualIDRegistry.getType(PortNameEditPart.VISUAL_ID)); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected boolean isExternalLabel(EditPart childEditPart) { >+ if (childEditPart instanceof PortNameEditPart) { >+ return true; >+ } >+ return false; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected IFigure getExternalLabelsContainer() { >+ LayerManager root = (LayerManager) getRoot(); >+ return root.getLayer(UMLEditPartFactory.EXTERNAL_NODE_LABELS_LAYER); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void addChildVisual(EditPart childEditPart, int index) { >+ if (isExternalLabel(childEditPart)) { >+ IFigure labelFigure = ((GraphicalEditPart) childEditPart).getFigure(); >+ getExternalLabelsContainer().add(labelFigure); >+ return; >+ } >+ super.addChildVisual(childEditPart, -1); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void removeChildVisual(EditPart childEditPart) { >+ if (isExternalLabel(childEditPart)) { >+ IFigure labelFigure = ((GraphicalEditPart) childEditPart).getFigure(); >+ getExternalLabelsContainer().remove(labelFigure); >+ return; >+ } >+ super.removeChildVisual(childEditPart); >+ } >+ >+ /** >+ * @generated >+ */ >+ public void removeNotify() { >+ for (Iterator it = getChildren().iterator(); it.hasNext();) { >+ EditPart childEditPart = (EditPart) it.next(); >+ if (isExternalLabel(childEditPart)) { >+ IFigure labelFigure = ((GraphicalEditPart) childEditPart).getFigure(); >+ getExternalLabelsContainer().remove(labelFigure); >+ } >+ } >+ super.removeNotify(); >+ } >+ >+ /** >+ * @generated >+ */ >+ public class PortFigure extends org.eclipse.draw2d.RectangleFigure { >+ >+ /** >+ * @generated >+ */ >+ public PortFigure() { >+ >+ this.setForegroundColor(org.eclipse.draw2d.ColorConstants.gray); >+ this.setPreferredSize(getMapMode().DPtoLP(15), getMapMode().DPtoLP(15)); >+ this.setMaximumSize(new org.eclipse.draw2d.geometry.Dimension(getMapMode().DPtoLP(15), getMapMode().DPtoLP(15))); >+ this.setMinimumSize(new org.eclipse.draw2d.geometry.Dimension(getMapMode().DPtoLP(15), getMapMode().DPtoLP(15))); >+ createContents(); >+ } >+ >+ /** >+ * @generated >+ */ >+ private void createContents() { >+ } >+ >+ /** >+ * @generated >+ */ >+ private boolean myUseLocalCoordinates = false; >+ >+ /** >+ * @generated >+ */ >+ protected boolean useLocalCoordinates() { >+ return myUseLocalCoordinates; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setUseLocalCoordinates(boolean useLocalCoordinates) { >+ myUseLocalCoordinates = useLocalCoordinates; >+ } >+ >+ } >+ >+} >Index: src/org/eclipse/uml2/diagram/component/edit/parts/ComponentName2EditPart.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/component/edit/parts/ComponentName2EditPart.java >diff -N src/org/eclipse/uml2/diagram/component/edit/parts/ComponentName2EditPart.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/component/edit/parts/ComponentName2EditPart.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,574 @@ >+package org.eclipse.uml2.diagram.component.edit.parts; >+ >+import java.util.ArrayList; >+import java.util.List; >+import org.eclipse.gef.EditPolicy; >+import org.eclipse.gef.GraphicalEditPart; >+import org.eclipse.gef.Request; >+import org.eclipse.gef.commands.Command; >+import org.eclipse.gef.editpolicies.NonResizableEditPolicy; >+import org.eclipse.gef.handles.NonResizableHandleKit; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.ITextAwareEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.LabelDirectEditPolicy; >+import org.eclipse.gmf.runtime.notation.View; >+import java.util.Collections; >+ >+import org.eclipse.draw2d.IFigure; >+import org.eclipse.draw2d.Label; >+ >+import org.eclipse.draw2d.geometry.Point; >+ >+import org.eclipse.emf.common.notify.Notification; >+ >+import org.eclipse.emf.ecore.EObject; >+ >+import org.eclipse.emf.transaction.RunnableWithResult; >+ >+import org.eclipse.gef.AccessibleEditPart; >+ >+import org.eclipse.gef.requests.DirectEditRequest; >+ >+import org.eclipse.gef.tools.DirectEditManager; >+ >+import org.eclipse.gmf.runtime.common.ui.services.parser.IParser; >+import org.eclipse.gmf.runtime.common.ui.services.parser.IParserEditStatus; >+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserEditStatus; >+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserOptions; >+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserService; >+ >+import org.eclipse.gmf.runtime.diagram.ui.editparts.CompartmentEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart; >+ >+import org.eclipse.gmf.runtime.diagram.ui.l10n.DiagramColorRegistry; >+ >+import org.eclipse.gmf.runtime.diagram.ui.requests.RequestConstants; >+ >+import org.eclipse.gmf.runtime.diagram.ui.tools.TextDirectEditManager; >+ >+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel; >+ >+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter; >+ >+import org.eclipse.gmf.runtime.emf.type.core.IElementType; >+ >+import org.eclipse.gmf.runtime.emf.ui.services.parser.ISemanticParser; >+import org.eclipse.gmf.runtime.emf.ui.services.parser.ParserHintAdapter; >+ >+import org.eclipse.gmf.runtime.notation.FontStyle; >+import org.eclipse.gmf.runtime.notation.NotationPackage; >+ >+import org.eclipse.jface.resource.ImageDescriptor; >+ >+import org.eclipse.jface.text.contentassist.IContentAssistProcessor; >+ >+import org.eclipse.jface.viewers.ICellEditorValidator; >+ >+import org.eclipse.swt.SWT; >+ >+import org.eclipse.swt.accessibility.AccessibleEvent; >+ >+import org.eclipse.swt.graphics.Color; >+import org.eclipse.swt.graphics.FontData; >+import org.eclipse.swt.graphics.Image; >+import org.eclipse.uml2.diagram.component.edit.policies.UMLTextSelectionEditPolicy; >+import org.eclipse.uml2.diagram.component.part.UMLDiagramEditorPlugin; >+import org.eclipse.uml2.diagram.component.providers.UMLElementTypes; >+ >+/** >+ * @generated >+ */ >+public class ComponentName2EditPart extends CompartmentEditPart implements ITextAwareEditPart { >+ >+ /** >+ * @generated >+ */ >+ public static final int VISUAL_ID = 5001; >+ >+ /** >+ * @generated >+ */ >+ private DirectEditManager manager; >+ >+ /** >+ * @generated >+ */ >+ private IParser parser; >+ >+ /** >+ * @generated >+ */ >+ private List parserElements; >+ >+ /** >+ * @generated >+ */ >+ private String defaultText; >+ >+ /** >+ * @generated >+ */ >+ public ComponentName2EditPart(View view) { >+ super(view); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void createDefaultEditPolicies() { >+ super.createDefaultEditPolicies(); >+ installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE, new LabelDirectEditPolicy()); >+ installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE, new NonResizableEditPolicy() { >+ >+ protected List createSelectionHandles() { >+ List handles = new ArrayList(); >+ NonResizableHandleKit.addMoveHandle((GraphicalEditPart) getHost(), handles); >+ return handles; >+ } >+ >+ public Command getCommand(Request request) { >+ return null; >+ } >+ >+ public boolean understandsRequest(Request request) { >+ return false; >+ } >+ }); >+ >+ } >+ >+ /** >+ * @generated >+ */ >+ protected String getLabelTextHelper(IFigure figure) { >+ if (figure instanceof WrapLabel) { >+ return ((WrapLabel) figure).getText(); >+ } else { >+ return ((Label) figure).getText(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setLabelTextHelper(IFigure figure, String text) { >+ if (figure instanceof WrapLabel) { >+ ((WrapLabel) figure).setText(text); >+ } else { >+ ((Label) figure).setText(text); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Image getLabelIconHelper(IFigure figure) { >+ if (figure instanceof WrapLabel) { >+ return ((WrapLabel) figure).getIcon(); >+ } else { >+ return ((Label) figure).getIcon(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setLabelIconHelper(IFigure figure, Image icon) { >+ if (figure instanceof WrapLabel) { >+ ((WrapLabel) figure).setIcon(icon); >+ } else { >+ ((Label) figure).setIcon(icon); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ public void setLabel(WrapLabel figure) { >+ unregisterVisuals(); >+ setFigure(figure); >+ defaultText = getLabelTextHelper(figure); >+ registerVisuals(); >+ refreshVisuals(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected List getModelChildren() { >+ return Collections.EMPTY_LIST; >+ } >+ >+ /** >+ * @generated >+ */ >+ public IGraphicalEditPart getChildBySemanticHint(String semanticHint) { >+ return null; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject getParserElement() { >+ EObject element = resolveSemanticElement(); >+ return element != null ? element : (View) getModel(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Image getLabelIcon() { >+ EObject parserElement = getParserElement(); >+ if (parserElement == null) { >+ return null; >+ } >+ return UMLElementTypes.getImage(parserElement.eClass()); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected String getLabelText() { >+ String text = null; >+ if (getParser() != null) { >+ text = getParser().getPrintString(new EObjectAdapter(getParserElement()), getParserOptions().intValue()); >+ } >+ if (text == null || text.length() == 0) { >+ text = defaultText; >+ } >+ return text; >+ } >+ >+ /** >+ * @generated >+ */ >+ public void setLabelText(String text) { >+ setLabelTextHelper(getFigure(), text); >+ Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE); >+ if (pdEditPolicy instanceof UMLTextSelectionEditPolicy) { >+ ((UMLTextSelectionEditPolicy) pdEditPolicy).refreshFeedback(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ public String getEditText() { >+ if (getParser() == null) { >+ return ""; //$NON-NLS-1$ >+ } >+ return getParser().getEditString(new EObjectAdapter(getParserElement()), getParserOptions().intValue()); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected boolean isEditable() { >+ return getEditText() != null; >+ } >+ >+ /** >+ * @generated >+ */ >+ public ICellEditorValidator getEditTextValidator() { >+ return new ICellEditorValidator() { >+ >+ public String isValid(final Object value) { >+ if (value instanceof String) { >+ final EObject element = getParserElement(); >+ final IParser parser = getParser(); >+ try { >+ IParserEditStatus valid = (IParserEditStatus) getEditingDomain().runExclusive(new RunnableWithResult.Impl() { >+ >+ public void run() { >+ setResult(parser.isValidEditString(new EObjectAdapter(element), (String) value)); >+ } >+ }); >+ return valid.getCode() == ParserEditStatus.EDITABLE ? null : valid.getMessage(); >+ } catch (InterruptedException ie) { >+ ie.printStackTrace(); >+ } >+ } >+ >+ // shouldn't get here >+ return null; >+ } >+ }; >+ } >+ >+ /** >+ * @generated >+ */ >+ public IContentAssistProcessor getCompletionProcessor() { >+ if (getParser() == null) { >+ return null; >+ } >+ return getParser().getCompletionProcessor(new EObjectAdapter(getParserElement())); >+ } >+ >+ /** >+ * @generated >+ */ >+ public ParserOptions getParserOptions() { >+ return ParserOptions.NONE; >+ } >+ >+ /** >+ * @generated >+ */ >+ public IParser getParser() { >+ if (parser == null) { >+ String parserHint = ((View) getModel()).getType(); >+ ParserHintAdapter hintAdapter = new ParserHintAdapter(getParserElement(), parserHint) { >+ >+ public Object getAdapter(Class adapter) { >+ if (IElementType.class.equals(adapter)) { >+ return UMLElementTypes.Component_2001; >+ } >+ return super.getAdapter(adapter); >+ } >+ }; >+ parser = ParserService.getInstance().getParser(hintAdapter); >+ } >+ return parser; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected DirectEditManager getManager() { >+ if (manager == null) { >+ setManager(new TextDirectEditManager(this, TextDirectEditManager.getTextCellEditorClass(this), UMLEditPartFactory.getTextCellEditorLocator(this))); >+ } >+ return manager; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setManager(DirectEditManager manager) { >+ this.manager = manager; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void performDirectEdit() { >+ getManager().show(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void performDirectEdit(Point eventLocation) { >+ if (getManager().getClass() == TextDirectEditManager.class) { >+ ((TextDirectEditManager) getManager()).show(eventLocation.getSWTPoint()); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ private void performDirectEdit(char initialCharacter) { >+ if (getManager() instanceof TextDirectEditManager) { >+ ((TextDirectEditManager) getManager()).show(initialCharacter); >+ } else { >+ performDirectEdit(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void performDirectEditRequest(Request request) { >+ final Request theRequest = request; >+ try { >+ getEditingDomain().runExclusive(new Runnable() { >+ >+ public void run() { >+ if (isActive() && isEditable()) { >+ if (theRequest.getExtendedData().get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR) instanceof Character) { >+ Character initialChar = (Character) theRequest.getExtendedData().get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR); >+ performDirectEdit(initialChar.charValue()); >+ } else if ((theRequest instanceof DirectEditRequest) && (getEditText().equals(getLabelText()))) { >+ DirectEditRequest editRequest = (DirectEditRequest) theRequest; >+ performDirectEdit(editRequest.getLocation()); >+ } else { >+ performDirectEdit(); >+ } >+ } >+ } >+ }); >+ } catch (InterruptedException e) { >+ e.printStackTrace(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshVisuals() { >+ super.refreshVisuals(); >+ refreshLabel(); >+ refreshFont(); >+ refreshFontColor(); >+ refreshUnderline(); >+ refreshStrikeThrough(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshLabel() { >+ setLabelTextHelper(getFigure(), getLabelText()); >+ setLabelIconHelper(getFigure(), getLabelIcon()); >+ Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE); >+ if (pdEditPolicy instanceof UMLTextSelectionEditPolicy) { >+ ((UMLTextSelectionEditPolicy) pdEditPolicy).refreshFeedback(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshUnderline() { >+ FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle()); >+ if (style != null && getFigure() instanceof WrapLabel) { >+ ((WrapLabel) getFigure()).setTextUnderline(style.isUnderline()); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshStrikeThrough() { >+ FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle()); >+ if (style != null && getFigure() instanceof WrapLabel) { >+ ((WrapLabel) getFigure()).setTextStrikeThrough(style.isStrikeThrough()); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshFont() { >+ FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle()); >+ if (style != null) { >+ FontData fontData = new FontData(style.getFontName(), style.getFontHeight(), (style.isBold() ? SWT.BOLD : SWT.NORMAL) | (style.isItalic() ? SWT.ITALIC : SWT.NORMAL)); >+ setFont(fontData); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setFontColor(Color color) { >+ getFigure().setForegroundColor(color); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void addSemanticListeners() { >+ if (getParser() instanceof ISemanticParser) { >+ EObject element = resolveSemanticElement(); >+ parserElements = ((ISemanticParser) getParser()).getSemanticElementsBeingParsed(element); >+ for (int i = 0; i < parserElements.size(); i++) { >+ addListenerFilter("SemanticModel" + i, this, (EObject) parserElements.get(i)); //$NON-NLS-1$ >+ } >+ } else { >+ super.addSemanticListeners(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void removeSemanticListeners() { >+ if (parserElements != null) { >+ for (int i = 0; i < parserElements.size(); i++) { >+ removeListenerFilter("SemanticModel" + i); //$NON-NLS-1$ >+ } >+ } else { >+ super.removeSemanticListeners(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected AccessibleEditPart getAccessibleEditPart() { >+ if (accessibleEP == null) { >+ accessibleEP = new AccessibleGraphicalEditPart() { >+ >+ public void getName(AccessibleEvent e) { >+ e.result = getLabelTextHelper(getFigure()); >+ } >+ }; >+ } >+ return accessibleEP; >+ } >+ >+ /** >+ * @generated >+ */ >+ private View getFontStyleOwnerView() { >+ return getPrimaryView(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void addNotationalListeners() { >+ super.addNotationalListeners(); >+ addListenerFilter("PrimaryView", this, getPrimaryView()); //$NON-NLS-1$ >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void removeNotationalListeners() { >+ super.removeNotationalListeners(); >+ removeListenerFilter("PrimaryView"); //$NON-NLS-1$ >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void handleNotificationEvent(Notification event) { >+ Object feature = event.getFeature(); >+ if (NotationPackage.eINSTANCE.getFontStyle_FontColor().equals(feature)) { >+ Integer c = (Integer) event.getNewValue(); >+ setFontColor(DiagramColorRegistry.getInstance().getColor(c)); >+ } else if (NotationPackage.eINSTANCE.getFontStyle_Underline().equals(feature)) { >+ refreshUnderline(); >+ } else if (NotationPackage.eINSTANCE.getFontStyle_StrikeThrough().equals(feature)) { >+ refreshStrikeThrough(); >+ } else if (NotationPackage.eINSTANCE.getFontStyle_FontHeight().equals(feature) || NotationPackage.eINSTANCE.getFontStyle_FontName().equals(feature) >+ || NotationPackage.eINSTANCE.getFontStyle_Bold().equals(feature) || NotationPackage.eINSTANCE.getFontStyle_Italic().equals(feature)) { >+ refreshFont(); >+ } else { >+ if (getParser() != null && getParser().isAffectingEvent(event, getParserOptions().intValue())) { >+ refreshLabel(); >+ } >+ if (getParser() instanceof ISemanticParser) { >+ ISemanticParser modelParser = (ISemanticParser) getParser(); >+ if (modelParser.areSemanticElementsAffected(null, event)) { >+ removeSemanticListeners(); >+ if (resolveSemanticElement() != null) { >+ addSemanticListeners(); >+ } >+ refreshLabel(); >+ } >+ } >+ } >+ super.handleNotificationEvent(event); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected IFigure createFigure() { >+ // Parent should assign one using setLabel method >+ return null; >+ } >+} >Index: src/org/eclipse/uml2/diagram/component/edit/policies/UMLReferenceConnectionEditPolicy.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/component/edit/policies/UMLReferenceConnectionEditPolicy.java >diff -N src/org/eclipse/uml2/diagram/component/edit/policies/UMLReferenceConnectionEditPolicy.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/component/edit/policies/UMLReferenceConnectionEditPolicy.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,150 @@ >+package org.eclipse.uml2.diagram.component.edit.policies; >+ >+import org.eclipse.emf.transaction.TransactionalEditingDomain; >+import org.eclipse.gef.EditPart; >+import org.eclipse.gef.Request; >+import org.eclipse.gef.commands.Command; >+import org.eclipse.gef.commands.CompoundCommand; >+import org.eclipse.gef.commands.UnexecutableCommand; >+import org.eclipse.gef.editparts.AbstractConnectionEditPart; >+import org.eclipse.gef.editpolicies.ConnectionEditPolicy; >+import org.eclipse.gef.requests.GroupRequest; >+import org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand; >+import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.GraphicalEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.l10n.DiagramUIMessages; >+import org.eclipse.gmf.runtime.diagram.ui.preferences.IPreferenceConstants; >+import org.eclipse.gmf.runtime.diagram.ui.requests.EditCommandRequestWrapper; >+import org.eclipse.gmf.runtime.diagram.ui.requests.GroupRequestViaKeyboard; >+import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.jface.dialogs.IDialogConstants; >+import org.eclipse.jface.dialogs.MessageDialogWithToggle; >+import org.eclipse.jface.preference.IPreferenceStore; >+import org.eclipse.jface.util.Assert; >+import org.eclipse.swt.widgets.Display; >+ >+/** >+ * @generated >+ */ >+public class UMLReferenceConnectionEditPolicy extends ConnectionEditPolicy { >+ >+ /** >+ * @generated >+ */ >+ private static final String DELETE_FROM_DIAGRAM_DLG_TITLE = DiagramUIMessages.PromptingDeleteAction_DeleteFromDiagramDialog_Title; >+ >+ /** >+ * @generated >+ */ >+ private static final String DELETE_FROM_DIAGRAM_DLG_MESSAGE = DiagramUIMessages.PromptingDeleteAction_DeleteFromDiagramDialog_Message; >+ >+ /** >+ * @generated >+ */ >+ private static final String DELETE_FROM_MODEL_DLG_TOGGLE_LABEL = DiagramUIMessages.MessageDialogWithToggle_DoNotPromptAgainToggle_label; >+ >+ /** >+ * @generated >+ */ >+ protected final Command getDeleteCommand(GroupRequest deleteRequest) { >+ boolean isDeleteFromKeyBoard = deleteRequest instanceof GroupRequestViaKeyboard; >+ if (shouldDeleteSemantic()) { >+ return createDeleteSemanticCommand(deleteRequest); >+ } else { >+ boolean proceedToDeleteView = true; >+ if (isDeleteFromKeyBoard) { >+ GroupRequestViaKeyboard groupRequestViaKeyboard = (GroupRequestViaKeyboard) deleteRequest; >+ if (groupRequestViaKeyboard.isShowInformationDialog()) { >+ proceedToDeleteView = showPrompt(); >+ groupRequestViaKeyboard.setShowInformationDialog(false); >+ if (!(proceedToDeleteView)) >+ return UnexecutableCommand.INSTANCE; >+ } >+ } >+ return createDeleteViewCommand(deleteRequest); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected boolean shouldDeleteSemantic() { >+ Assert.isTrue(getHost() instanceof AbstractConnectionEditPart); >+ AbstractConnectionEditPart cep = (AbstractConnectionEditPart) getHost(); >+ boolean isCanonical = false; >+ if (cep.getSource() != null) >+ isCanonical = IsCanonical(cep.getSource()); >+ if (cep.getTarget() != null) >+ return isCanonical ? isCanonical : IsCanonical(cep.getTarget()); >+ return isCanonical; >+ } >+ >+ /** >+ * @generated >+ */ >+ private boolean IsCanonical(EditPart ep) { >+ EditPart parent = ep.getParent(); >+ return parent instanceof GraphicalEditPart ? ((GraphicalEditPart) parent).isCanonical() : false; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command createDeleteViewCommand(GroupRequest deleteRequest) { >+ TransactionalEditingDomain editingDomain = ((IGraphicalEditPart) getHost()).getEditingDomain(); >+ return new ICommandProxy(new DeleteCommand(editingDomain, (View) getHost().getModel())); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command createDeleteSemanticCommand(GroupRequest deleteRequest) { >+ TransactionalEditingDomain editingDomain = ((IGraphicalEditPart) getHost()).getEditingDomain(); >+ EditCommandRequestWrapper semReq = new EditCommandRequestWrapper(new DestroyElementRequest(editingDomain, false), deleteRequest.getExtendedData()); >+ Command semanticCmd = getHost().getCommand(semReq); >+ if (semanticCmd != null && semanticCmd.canExecute()) { >+ CompoundCommand cc = new CompoundCommand(); >+ cc.add(semanticCmd); >+ return cc; >+ } >+ return null; >+ } >+ >+ /** >+ * @generated >+ */ >+ private boolean showPrompt() { >+ boolean prompt = ((IPreferenceStore) ((IGraphicalEditPart) getHost()).getDiagramPreferencesHint().getPreferenceStore()).getBoolean(IPreferenceConstants.PREF_PROMPT_ON_DEL_FROM_DIAGRAM); >+ if (prompt) >+ if (showMessageDialog()) >+ return true; >+ else >+ return false; >+ return true; >+ } >+ >+ /** >+ * @generated >+ */ >+ private boolean showMessageDialog() { >+ MessageDialogWithToggle dialog = MessageDialogWithToggle.openYesNoQuestion(Display.getCurrent().getActiveShell(), DELETE_FROM_DIAGRAM_DLG_TITLE, DELETE_FROM_DIAGRAM_DLG_MESSAGE, >+ DELETE_FROM_MODEL_DLG_TOGGLE_LABEL, false, (IPreferenceStore) ((IGraphicalEditPart) getHost()).getDiagramPreferencesHint().getPreferenceStore(), >+ IPreferenceConstants.PREF_PROMPT_ON_DEL_FROM_DIAGRAM); >+ if (dialog.getReturnCode() == IDialogConstants.YES_ID) >+ return true; >+ else >+ return false; >+ } >+ >+ /** >+ * @generated >+ */ >+ public Command getCommand(Request request) { >+ if (request instanceof GroupRequestViaKeyboard) { >+ return getDeleteCommand((GroupRequest) request); >+ } >+ return super.getCommand(request); >+ } >+} >Index: src/org/eclipse/uml2/diagram/component/part/UMLDiagramFileCreator.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/component/part/UMLDiagramFileCreator.java >diff -N src/org/eclipse/uml2/diagram/component/part/UMLDiagramFileCreator.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/component/part/UMLDiagramFileCreator.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,70 @@ >+package org.eclipse.uml2.diagram.component.part; >+ >+import org.eclipse.gmf.runtime.diagram.ui.resources.editor.util.DiagramFileCreator; >+import org.eclipse.core.resources.IWorkspaceRoot; >+import org.eclipse.core.resources.ResourcesPlugin; >+ >+import org.eclipse.core.runtime.IPath; >+ >+/** >+ * @generated >+ */ >+public class UMLDiagramFileCreator extends DiagramFileCreator { >+ >+ /** >+ * @generated >+ */ >+ private static UMLDiagramFileCreator INSTANCE = new UMLDiagramFileCreator(); >+ >+ /** >+ * @generated >+ */ >+ public static DiagramFileCreator getInstance() { >+ return INSTANCE; >+ } >+ >+ /** >+ * @generated >+ */ >+ public String getExtension() { >+ return ".umlcomponent_diagram"; //$NON-NLS-1$ >+ } >+ >+ /** >+ * @generated >+ */ >+ public String getUniqueFileName(IPath containerPath, String fileName) { >+ int nFileNumber = 1; >+ fileName = removeExtensionFromFileName(fileName); >+ String newFileName = fileName; >+ >+ IPath diagramFilePath = containerPath.append(appendExtensionToFileName(newFileName)); >+ IPath modelFilePath = containerPath.append(appendExtensionToModelFileName(newFileName)); >+ IWorkspaceRoot workspaceRoot = ResourcesPlugin.getWorkspace().getRoot(); >+ >+ while (workspaceRoot.exists(diagramFilePath) || workspaceRoot.exists(modelFilePath)) { >+ nFileNumber++; >+ newFileName = fileName + nFileNumber; >+ diagramFilePath = containerPath.append(appendExtensionToFileName(newFileName)); >+ modelFilePath = containerPath.append(appendExtensionToModelFileName(newFileName)); >+ } >+ return newFileName; >+ } >+ >+ /** >+ * @generated >+ */ >+ private String removeExtensionFromFileName(String fileName) { >+ if (fileName.endsWith(getExtension())) { >+ return fileName.substring(0, fileName.length() - getExtension().length()); >+ } >+ return fileName; >+ } >+ >+ /** >+ * @generated >+ */ >+ private String appendExtensionToModelFileName(String fileName) { >+ return fileName + ".uml"; //$NON-NLS-1$ >+ } >+} >Index: src/org/eclipse/uml2/diagram/component/edit/policies/Class2CanonicalEditPolicy.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/component/edit/policies/Class2CanonicalEditPolicy.java >diff -N src/org/eclipse/uml2/diagram/component/edit/policies/Class2CanonicalEditPolicy.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/component/edit/policies/Class2CanonicalEditPolicy.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,53 @@ >+package org.eclipse.uml2.diagram.component.edit.policies; >+ >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy; >+import org.eclipse.gmf.runtime.notation.View; >+import java.util.Iterator; >+import java.util.LinkedList; >+import java.util.List; >+ >+import org.eclipse.emf.ecore.EObject; >+ >+import org.eclipse.uml2.diagram.component.edit.parts.PortEditPart; >+import org.eclipse.uml2.diagram.component.part.UMLVisualIDRegistry; >+import org.eclipse.uml2.uml.StructuredClassifier; >+ >+/** >+ * @generated >+ */ >+public class Class2CanonicalEditPolicy extends CanonicalEditPolicy { >+ >+ /** >+ * @generated >+ */ >+ protected List getSemanticChildrenList() { >+ List result = new LinkedList(); >+ EObject modelObject = ((View) getHost().getModel()).getElement(); >+ View viewObject = (View) getHost().getModel(); >+ EObject nextValue; >+ int nodeVID; >+ for (Iterator values = ((StructuredClassifier) modelObject).getOwnedAttributes().iterator(); values.hasNext();) { >+ nextValue = (EObject) values.next(); >+ nodeVID = UMLVisualIDRegistry.getNodeVisualID(viewObject, nextValue); >+ if (PortEditPart.VISUAL_ID == nodeVID) { >+ result.add(nextValue); >+ } >+ } >+ return result; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected boolean shouldDeleteView(View view) { >+ return view.isSetElement() && view.getElement() != null && view.getElement().eIsProxy(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected String getDefaultFactoryHint() { >+ return null; >+ } >+ >+} >Index: src/org/eclipse/uml2/diagram/component/view/factories/ArtifactNameViewFactory.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/component/view/factories/ArtifactNameViewFactory.java >diff -N src/org/eclipse/uml2/diagram/component/view/factories/ArtifactNameViewFactory.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/component/view/factories/ArtifactNameViewFactory.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,29 @@ >+package org.eclipse.uml2.diagram.component.view.factories; >+ >+import org.eclipse.core.runtime.IAdaptable; >+import org.eclipse.gmf.runtime.notation.View; >+import java.util.ArrayList; >+import java.util.List; >+ >+import org.eclipse.gmf.runtime.diagram.ui.view.factories.BasicNodeViewFactory; >+ >+/** >+ * @generated >+ */ >+public class ArtifactNameViewFactory extends BasicNodeViewFactory { >+ >+ /** >+ * @generated >+ */ >+ protected void decorateView(View containerView, View view, IAdaptable semanticAdapter, String semanticHint, int index, boolean persisted) { >+ super.decorateView(containerView, view, semanticAdapter, semanticHint, index, persisted); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected List createStyles(View view) { >+ List styles = new ArrayList(); >+ return styles; >+ } >+} >Index: src/org/eclipse/uml2/diagram/component/view/factories/ArtifactName2ViewFactory.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/component/view/factories/ArtifactName2ViewFactory.java >diff -N src/org/eclipse/uml2/diagram/component/view/factories/ArtifactName2ViewFactory.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/component/view/factories/ArtifactName2ViewFactory.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,29 @@ >+package org.eclipse.uml2.diagram.component.view.factories; >+ >+import org.eclipse.core.runtime.IAdaptable; >+import org.eclipse.gmf.runtime.notation.View; >+import java.util.ArrayList; >+import java.util.List; >+ >+import org.eclipse.gmf.runtime.diagram.ui.view.factories.BasicNodeViewFactory; >+ >+/** >+ * @generated >+ */ >+public class ArtifactName2ViewFactory extends BasicNodeViewFactory { >+ >+ /** >+ * @generated >+ */ >+ protected void decorateView(View containerView, View view, IAdaptable semanticAdapter, String semanticHint, int index, boolean persisted) { >+ super.decorateView(containerView, view, semanticAdapter, semanticHint, index, persisted); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected List createStyles(View view) { >+ List styles = new ArrayList(); >+ return styles; >+ } >+} >Index: src/org/eclipse/uml2/diagram/component/part/UMLCreationWizardPage.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/component/part/UMLCreationWizardPage.java >diff -N src/org/eclipse/uml2/diagram/component/part/UMLCreationWizardPage.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/component/part/UMLCreationWizardPage.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,111 @@ >+package org.eclipse.uml2.diagram.component.part; >+ >+import java.io.ByteArrayInputStream; >+import java.io.InputStream; >+ >+import org.eclipse.core.resources.ResourcesPlugin; >+import org.eclipse.core.runtime.IPath; >+import org.eclipse.gmf.runtime.diagram.ui.resources.editor.util.DiagramFileCreator; >+import org.eclipse.jface.viewers.IStructuredSelection; >+import org.eclipse.swt.widgets.Composite; >+import org.eclipse.ui.dialogs.WizardNewFileCreationPage; >+ >+/** >+ * @generated >+ */ >+public class UMLCreationWizardPage extends WizardNewFileCreationPage { >+ >+ /** >+ * @generated >+ */ >+ private static final String DOMAIN_EXT = ".uml"; //$NON-NLS-1$ >+ >+ /** >+ * @generated >+ */ >+ private static final String DIAGRAM_EXT = ".umlcomponent_diagram"; //$NON-NLS-1$ >+ >+ /** >+ * @generated >+ */ >+ public UMLCreationWizardPage(String pageName, IStructuredSelection selection) { >+ super(pageName, selection); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected String getDefaultFileName() { >+ return "default"; //$NON-NLS-1$ >+ } >+ >+ /** >+ * @generated >+ */ >+ public String getFileName() { >+ String fileName = super.getFileName(); >+ if (fileName != null && !fileName.endsWith(DIAGRAM_EXT)) { >+ fileName += DIAGRAM_EXT; >+ } >+ return fileName; >+ } >+ >+ /** >+ * @generated >+ */ >+ private String getUniqueFileName(IPath containerPath, String fileName) { >+ String newFileName = fileName; >+ IPath diagramFilePath = containerPath.append(newFileName + DIAGRAM_EXT); >+ IPath modelFilePath = containerPath.append(newFileName + DOMAIN_EXT); >+ int i = 1; >+ while (exists(diagramFilePath) || exists(modelFilePath)) { >+ i++; >+ newFileName = fileName + i; >+ diagramFilePath = containerPath.append(newFileName + DIAGRAM_EXT); >+ modelFilePath = containerPath.append(newFileName + DOMAIN_EXT); >+ } >+ return newFileName; >+ } >+ >+ /** >+ * @generated >+ */ >+ public void createControl(Composite parent) { >+ super.createControl(parent); >+ IPath path = getContainerFullPath(); >+ if (path != null) { >+ String fileName = getUniqueFileName(path, getDefaultFileName()); >+ setFileName(fileName); >+ } else { >+ setFileName(getDefaultFileName()); >+ } >+ setPageComplete(validatePage()); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected boolean validatePage() { >+ if (super.validatePage()) { >+ String fileName = getFileName(); >+ if (fileName == null) { >+ return false; >+ } >+ fileName = fileName.substring(0, fileName.length() - DIAGRAM_EXT.length()) + DOMAIN_EXT; >+ IPath path = getContainerFullPath().append(fileName); >+ if (exists(path)) { >+ setErrorMessage("Model file already exists: " + path.lastSegment()); >+ return false; >+ } >+ return true; >+ } >+ return false; >+ } >+ >+ /** >+ * @generated >+ */ >+ public static boolean exists(IPath path) { >+ return ResourcesPlugin.getWorkspace().getRoot().exists(path); >+ } >+} >Index: src/org/eclipse/uml2/diagram/component/expressions/UMLAbstractExpression.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/component/expressions/UMLAbstractExpression.java >diff -N src/org/eclipse/uml2/diagram/component/expressions/UMLAbstractExpression.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/component/expressions/UMLAbstractExpression.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,214 @@ >+package org.eclipse.uml2.diagram.component.expressions; >+ >+import java.math.BigDecimal; >+import java.math.BigInteger; >+ >+import java.util.Collection; >+import java.util.Collections; >+import java.util.Iterator; >+import java.util.Map; >+ >+import org.eclipse.core.runtime.IStatus; >+import org.eclipse.core.runtime.Platform; >+import org.eclipse.core.runtime.Status; >+ >+import org.eclipse.emf.ecore.EClassifier; >+import org.eclipse.emf.ecore.EObject; >+import org.eclipse.emf.ecore.EStructuralFeature; >+import org.eclipse.emf.ecore.ETypedElement; >+ >+import org.eclipse.emf.ecore.util.EcoreUtil; >+ >+import org.eclipse.uml2.diagram.component.part.UMLDiagramEditorPlugin; >+ >+/** >+ * @generated >+ */ >+public abstract class UMLAbstractExpression { >+ >+ /** >+ * @generated >+ */ >+ private static final boolean DISABLED_NO_IMPL_EXCEPTION_LOG = Boolean.valueOf( >+ Platform.getDebugOption(UMLDiagramEditorPlugin.getInstance().getBundle().getSymbolicName() + "/debug/disableNoExprImplExceptionLog")).booleanValue(); >+ >+ /** >+ * @generated >+ */ >+ private String body; >+ >+ /** >+ * @generated >+ */ >+ private EClassifier context; >+ >+ /** >+ * @generated >+ */ >+ private IStatus status = Status.OK_STATUS; >+ >+ /** >+ * @generated >+ */ >+ protected UMLAbstractExpression(EClassifier context) { >+ this.context = context; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected UMLAbstractExpression(String body, EClassifier context, Map env) { >+ this.body = body; >+ this.context = context; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setStatus(int severity, String message, Throwable throwable) { >+ String pluginID = UMLDiagramEditorPlugin.ID; >+ this.status = new Status(severity, pluginID, -1, (message != null) ? message : "", throwable); //$NON-NLS-1$ >+ if (!this.status.isOK()) { >+ UMLDiagramEditorPlugin.getInstance().logError("Expression problem:" + message + "body:" + body, throwable); //$NON-NLS-1$ //$NON-NLS-2$ >+ >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected abstract Object doEvaluate(Object context, Map env); >+ >+ /** >+ * @generated >+ */ >+ public Object evaluate(Object context) { >+ return evaluate(context, Collections.EMPTY_MAP); >+ } >+ >+ /** >+ * @generated >+ */ >+ public Object evaluate(Object context, Map env) { >+ if (context().isInstance(context)) { >+ try { >+ return doEvaluate(context, env); >+ } catch (Exception e) { >+ if (DISABLED_NO_IMPL_EXCEPTION_LOG && e instanceof NoImplException) { >+ return null; >+ } >+ UMLDiagramEditorPlugin.getInstance().logError("Expression evaluation failure: " + body, e); >+ } >+ } >+ return null; >+ } >+ >+ /** >+ * @generated >+ */ >+ public IStatus getStatus() { >+ return status; >+ } >+ >+ /** >+ * @generated >+ */ >+ public String body() { >+ return body; >+ } >+ >+ /** >+ * @generated >+ */ >+ public EClassifier context() { >+ return context; >+ } >+ >+ /** >+ * @generated >+ */ >+ public void assignTo(EStructuralFeature feature, EObject target) { >+ Object value = evaluate(target); >+ value = (value != null) ? performCast(value, feature) : null; >+ if (feature.isMany()) { >+ Collection destCollection = (Collection) target.eGet(feature); >+ destCollection.clear(); >+ if (value instanceof Collection) { >+ Collection valueCollection = (Collection) value; >+ for (Iterator it = valueCollection.iterator(); it.hasNext();) { >+ destCollection.add(performCast(it.next(), feature)); >+ } >+ } else { >+ destCollection.add(value); >+ } >+ return; >+ } >+ target.eSet(feature, value); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Object performCast(Object value, ETypedElement targetType) { >+ if (targetType.getEType() == null || targetType.getEType().getInstanceClass() == null) { >+ return value; >+ } >+ Class targetClass = targetType.getEType().getInstanceClass(); >+ if (value != null && value instanceof Number) { >+ Number num = (Number) value; >+ Class valClass = value.getClass(); >+ Class targetWrapperClass = targetClass; >+ if (targetClass.isPrimitive()) { >+ targetWrapperClass = EcoreUtil.wrapperClassFor(targetClass); >+ } >+ if (valClass.equals(targetWrapperClass)) { >+ return value; >+ } >+ if (Number.class.isAssignableFrom(targetWrapperClass)) { >+ if (targetWrapperClass.equals(Byte.class)) >+ return new Byte(num.byteValue()); >+ if (targetWrapperClass.equals(Integer.class)) >+ return new Integer(num.intValue()); >+ if (targetWrapperClass.equals(Short.class)) >+ return new Short(num.shortValue()); >+ if (targetWrapperClass.equals(Long.class)) >+ return new Long(num.longValue()); >+ if (targetWrapperClass.equals(BigInteger.class)) >+ return BigInteger.valueOf(num.longValue()); >+ if (targetWrapperClass.equals(Float.class)) >+ return new Float(num.floatValue()); >+ if (targetWrapperClass.equals(Double.class)) >+ return new Double(num.doubleValue()); >+ if (targetWrapperClass.equals(BigDecimal.class)) >+ return new BigDecimal(num.doubleValue()); >+ } >+ } >+ return value; >+ } >+ >+ /** >+ * @generated >+ */ >+ public static final UMLAbstractExpression createNullExpression(EClassifier context) { >+ return new UMLAbstractExpression(context) { >+ >+ protected Object doEvaluate(Object context, Map env) { >+ // TODO - log entry about not provider available for this expression >+ return null; >+ } >+ }; >+ } >+ >+ /** >+ * @generated >+ */ >+ public static class NoImplException extends RuntimeException { >+ >+ /** >+ * @generated >+ */ >+ public NoImplException(String message) { >+ super(message); >+ } >+ } >+} >Index: src/org/eclipse/uml2/diagram/component/edit/policies/UMLBaseItemSemanticEditPolicy.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/component/edit/policies/UMLBaseItemSemanticEditPolicy.java >diff -N src/org/eclipse/uml2/diagram/component/edit/policies/UMLBaseItemSemanticEditPolicy.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/component/edit/policies/UMLBaseItemSemanticEditPolicy.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,346 @@ >+package org.eclipse.uml2.diagram.component.edit.policies; >+ >+import org.eclipse.emf.ecore.EClass; >+import org.eclipse.emf.ecore.EObject; >+import org.eclipse.emf.transaction.TransactionalEditingDomain; >+import org.eclipse.gef.commands.Command; >+import org.eclipse.gef.commands.UnexecutableCommand; >+import org.eclipse.gmf.runtime.common.core.command.ICommand; >+import org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand; >+import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil; >+import org.eclipse.gmf.runtime.diagram.ui.commands.CommandProxy; >+import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.SemanticEditPolicy; >+import org.eclipse.gmf.runtime.emf.commands.core.command.CompositeTransactionalCommand; >+import org.eclipse.gmf.runtime.emf.type.core.ElementTypeRegistry; >+import org.eclipse.gmf.runtime.emf.type.core.IEditHelperContext; >+import org.eclipse.gmf.runtime.emf.type.core.IElementType; >+import org.eclipse.gmf.runtime.emf.type.core.requests.ConfigureRequest; >+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest; >+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateRelationshipRequest; >+import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest; >+import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyReferenceRequest; >+import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyRequest; >+import org.eclipse.gmf.runtime.emf.type.core.requests.DuplicateElementsRequest; >+import org.eclipse.gmf.runtime.emf.type.core.requests.GetEditContextRequest; >+import org.eclipse.gmf.runtime.emf.type.core.requests.IEditCommandRequest; >+import org.eclipse.gmf.runtime.emf.type.core.requests.MoveRequest; >+import org.eclipse.gmf.runtime.emf.type.core.requests.ReorientReferenceRelationshipRequest; >+import org.eclipse.gmf.runtime.emf.type.core.requests.ReorientRelationshipRequest; >+import org.eclipse.gmf.runtime.emf.type.core.requests.SetRequest; >+import org.eclipse.gmf.runtime.notation.View; >+import java.util.Collections; >+import java.util.HashMap; >+import java.util.Map; >+ >+import org.eclipse.uml2.diagram.component.edit.helpers.UMLBaseEditHelper; >+import org.eclipse.uml2.diagram.component.expressions.UMLAbstractExpression; >+import org.eclipse.uml2.diagram.component.expressions.UMLOCLFactory; >+import org.eclipse.uml2.diagram.component.part.UMLDiagramEditorPlugin; >+import org.eclipse.uml2.uml.UMLPackage; >+ >+/** >+ * @generated >+ */ >+public class UMLBaseItemSemanticEditPolicy extends SemanticEditPolicy { >+ >+ /** >+ * @generated >+ */ >+ protected Command getSemanticCommand(IEditCommandRequest request) { >+ IEditCommandRequest completedRequest = completeRequest(request); >+ Object editHelperContext = completedRequest.getEditHelperContext(); >+ if (editHelperContext instanceof View || (editHelperContext instanceof IEditHelperContext && ((IEditHelperContext) editHelperContext).getEObject() instanceof View)) { >+ // no semantic commands are provided for pure design elements >+ return null; >+ } >+ if (editHelperContext == null) { >+ editHelperContext = ViewUtil.resolveSemanticElement((View) getHost().getModel()); >+ } >+ IElementType elementType = ElementTypeRegistry.getInstance().getElementType(editHelperContext); >+ if (elementType == ElementTypeRegistry.getInstance().getType("org.eclipse.gmf.runtime.emf.type.core.default")) { //$NON-NLS-1$ >+ elementType = null; >+ } >+ Command epCommand = getSemanticCommandSwitch(completedRequest); >+ if (epCommand != null) { >+ ICommand command = epCommand instanceof ICommandProxy ? ((ICommandProxy) epCommand).getICommand() : new CommandProxy(epCommand); >+ completedRequest.setParameter(UMLBaseEditHelper.EDIT_POLICY_COMMAND, command); >+ } >+ Command ehCommand = null; >+ if (elementType != null) { >+ ICommand command = elementType.getEditCommand(completedRequest); >+ if (command != null) { >+ if (!(command instanceof CompositeTransactionalCommand)) { >+ TransactionalEditingDomain editingDomain = ((IGraphicalEditPart) getHost()).getEditingDomain(); >+ command = new CompositeTransactionalCommand(editingDomain, null).compose(command); >+ } >+ ehCommand = new ICommandProxy(command); >+ } >+ } >+ boolean shouldProceed = true; >+ if (completedRequest instanceof DestroyRequest) { >+ shouldProceed = shouldProceed((DestroyRequest) completedRequest); >+ } >+ if (shouldProceed) { >+ if (completedRequest instanceof DestroyRequest) { >+ TransactionalEditingDomain editingDomain = ((IGraphicalEditPart) getHost()).getEditingDomain(); >+ Command deleteViewCommand = new ICommandProxy(new DeleteCommand(editingDomain, (View) getHost().getModel())); >+ ehCommand = ehCommand == null ? deleteViewCommand : ehCommand.chain(deleteViewCommand); >+ } >+ return ehCommand; >+ } >+ return null; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getSemanticCommandSwitch(IEditCommandRequest req) { >+ if (req instanceof CreateRelationshipRequest) { >+ return getCreateRelationshipCommand((CreateRelationshipRequest) req); >+ } else if (req instanceof CreateElementRequest) { >+ return getCreateCommand((CreateElementRequest) req); >+ } else if (req instanceof ConfigureRequest) { >+ return getConfigureCommand((ConfigureRequest) req); >+ } else if (req instanceof DestroyElementRequest) { >+ return getDestroyElementCommand((DestroyElementRequest) req); >+ } else if (req instanceof DestroyReferenceRequest) { >+ return getDestroyReferenceCommand((DestroyReferenceRequest) req); >+ } else if (req instanceof DuplicateElementsRequest) { >+ return getDuplicateCommand((DuplicateElementsRequest) req); >+ } else if (req instanceof GetEditContextRequest) { >+ return getEditContextCommand((GetEditContextRequest) req); >+ } else if (req instanceof MoveRequest) { >+ return getMoveCommand((MoveRequest) req); >+ } else if (req instanceof ReorientReferenceRelationshipRequest) { >+ return getReorientReferenceRelationshipCommand((ReorientReferenceRelationshipRequest) req); >+ } else if (req instanceof ReorientRelationshipRequest) { >+ return getReorientRelationshipCommand((ReorientRelationshipRequest) req); >+ } else if (req instanceof SetRequest) { >+ return getSetCommand((SetRequest) req); >+ } >+ return null; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getConfigureCommand(ConfigureRequest req) { >+ return null; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateRelationshipCommand(CreateRelationshipRequest req) { >+ return null; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCommand(CreateElementRequest req) { >+ return null; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getSetCommand(SetRequest req) { >+ return null; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getEditContextCommand(GetEditContextRequest req) { >+ return null; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getDestroyElementCommand(DestroyElementRequest req) { >+ return null; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getDestroyReferenceCommand(DestroyReferenceRequest req) { >+ return null; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getDuplicateCommand(DuplicateElementsRequest req) { >+ return null; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getMoveCommand(MoveRequest req) { >+ return null; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getReorientReferenceRelationshipCommand(ReorientReferenceRelationshipRequest req) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getReorientRelationshipCommand(ReorientRelationshipRequest req) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getMSLWrapper(ICommand cmd) { >+ return new ICommandProxy(cmd); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject getSemanticElement() { >+ return ViewUtil.resolveSemanticElement((View) getHost().getModel()); >+ } >+ >+ /** >+ * Finds container element for the new relationship of the specified type. >+ * Default implementation goes up by containment hierarchy starting from >+ * the specified element and returns the first element that is instance of >+ * the specified container class. >+ * >+ * @generated >+ */ >+ protected EObject getRelationshipContainer(EObject element, EClass containerClass, IElementType relationshipType) { >+ for (; element != null; element = element.eContainer()) { >+ if (containerClass.isSuperTypeOf(element.eClass())) { >+ return element; >+ } >+ } >+ return null; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected static class LinkConstraints { >+ >+ /** >+ * @generated >+ */ >+ public static final LinkConstraints InterfaceRealization_4001 = createInterfaceRealization_4001(); >+ >+ /** >+ * @generated >+ */ >+ public static final LinkConstraints PortProvided_4006 = createPortProvided_4006(); >+ >+ /** >+ * @generated >+ */ >+ public static final LinkConstraints PortRequired_4004 = createPortRequired_4004(); >+ >+ /** >+ * @generated >+ */ >+ private static LinkConstraints createInterfaceRealization_4001() { >+ Map sourceEnv = new HashMap(3); >+ sourceEnv.put("oppositeEnd", org.eclipse.uml2.uml.UMLPackage.eINSTANCE.getInterface()); //$NON-NLS-1$ >+ UMLAbstractExpression sourceExpression = UMLOCLFactory.getExpression("self.oclIsKindOf(uml::Component)", //$NON-NLS-1$ >+ UMLPackage.eINSTANCE.getBehavioredClassifier(), sourceEnv); >+ UMLAbstractExpression targetExpression = null; >+ return new LinkConstraints(sourceExpression, targetExpression); >+ } >+ >+ /** >+ * @generated >+ */ >+ private static LinkConstraints createPortProvided_4006() { >+ Map sourceEnv = new HashMap(3); >+ sourceEnv.put("oppositeEnd", org.eclipse.uml2.uml.UMLPackage.eINSTANCE.getInterface()); //$NON-NLS-1$ >+ UMLAbstractExpression sourceExpression = UMLOCLFactory.getExpression("self.oclIsKindOf(uml::Port)", //$NON-NLS-1$ >+ UMLPackage.eINSTANCE.getPort(), sourceEnv); >+ UMLAbstractExpression targetExpression = null; >+ return new LinkConstraints(sourceExpression, targetExpression); >+ } >+ >+ /** >+ * @generated >+ */ >+ private static LinkConstraints createPortRequired_4004() { >+ Map sourceEnv = new HashMap(3); >+ sourceEnv.put("oppositeEnd", org.eclipse.uml2.uml.UMLPackage.eINSTANCE.getInterface()); //$NON-NLS-1$ >+ UMLAbstractExpression sourceExpression = UMLOCLFactory.getExpression("self.oclIsKindOf(uml::Port)", //$NON-NLS-1$ >+ UMLPackage.eINSTANCE.getPort(), sourceEnv); >+ UMLAbstractExpression targetExpression = null; >+ return new LinkConstraints(sourceExpression, targetExpression); >+ } >+ >+ /** >+ * @generated >+ */ >+ private static final String OPPOSITE_END_VAR = "oppositeEnd"; //$NON-NLS-1$ >+ >+ /** >+ * @generated >+ */ >+ private UMLAbstractExpression srcEndInv; >+ >+ /** >+ * @generated >+ */ >+ private UMLAbstractExpression targetEndInv; >+ >+ /** >+ * @generated >+ */ >+ public LinkConstraints(UMLAbstractExpression sourceEnd, UMLAbstractExpression targetEnd) { >+ this.srcEndInv = sourceEnd; >+ this.targetEndInv = targetEnd; >+ } >+ >+ /** >+ * @generated >+ */ >+ public boolean canCreateLink(CreateRelationshipRequest req, boolean isBackDirected) { >+ Object source = req.getSource(); >+ Object target = req.getTarget(); >+ >+ UMLAbstractExpression sourceConstraint = isBackDirected ? targetEndInv : srcEndInv; >+ UMLAbstractExpression targetConstraint = null; >+ if (req.getTarget() != null) { >+ targetConstraint = isBackDirected ? srcEndInv : targetEndInv; >+ } >+ boolean isSourceAccepted = sourceConstraint != null ? evaluate(sourceConstraint, source, target, false) : true; >+ if (isSourceAccepted && targetConstraint != null) { >+ return evaluate(targetConstraint, target, source, true); >+ } >+ return isSourceAccepted; >+ } >+ >+ /** >+ * @generated >+ */ >+ private static boolean evaluate(UMLAbstractExpression constraint, Object sourceEnd, Object oppositeEnd, boolean clearEnv) { >+ Map evalEnv = Collections.singletonMap(OPPOSITE_END_VAR, oppositeEnd); >+ try { >+ Object val = constraint.evaluate(sourceEnd, evalEnv); >+ return (val instanceof Boolean) ? ((Boolean) val).booleanValue() : false; >+ } catch (Exception e) { >+ UMLDiagramEditorPlugin.getInstance().logError("Link constraint evaluation error", e); //$NON-NLS-1$ >+ return false; >+ } >+ } >+ } >+} >Index: src/org/eclipse/uml2/diagram/component/edit/policies/ComponentContentsItemSemanticEditPolicy.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/component/edit/policies/ComponentContentsItemSemanticEditPolicy.java >diff -N src/org/eclipse/uml2/diagram/component/edit/policies/ComponentContentsItemSemanticEditPolicy.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/component/edit/policies/ComponentContentsItemSemanticEditPolicy.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,224 @@ >+package org.eclipse.uml2.diagram.component.edit.policies; >+ >+import org.eclipse.emf.ecore.EClass; >+import org.eclipse.emf.ecore.EObject; >+ >+import org.eclipse.gef.commands.Command; >+ >+import org.eclipse.gmf.runtime.emf.type.core.commands.CreateElementCommand; >+ >+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest; >+ >+import org.eclipse.gmf.runtime.notation.View; >+ >+import org.eclipse.uml2.diagram.component.providers.UMLElementTypes; >+import org.eclipse.uml2.uml.Artifact; >+import org.eclipse.uml2.uml.Component; >+import org.eclipse.uml2.uml.Interface; >+import org.eclipse.uml2.uml.UMLPackage; >+ >+/** >+ * @generated >+ */ >+public class ComponentContentsItemSemanticEditPolicy extends UMLBaseItemSemanticEditPolicy { >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCommand(CreateElementRequest req) { >+ if (UMLElementTypes.Component_3001 == req.getElementType()) { >+ if (req.getContainmentFeature() == null) { >+ req.setContainmentFeature(UMLPackage.eINSTANCE.getComponent_PackagedElement()); >+ } >+ return getMSLWrapper(new CreateComponent_3001Command(req)); >+ } >+ if (UMLElementTypes.Artifact_3003 == req.getElementType()) { >+ if (req.getContainmentFeature() == null) { >+ req.setContainmentFeature(UMLPackage.eINSTANCE.getComponent_PackagedElement()); >+ } >+ return getMSLWrapper(new CreateArtifact_3003Command(req)); >+ } >+ if (UMLElementTypes.Class_3004 == req.getElementType()) { >+ if (req.getContainmentFeature() == null) { >+ req.setContainmentFeature(UMLPackage.eINSTANCE.getComponent_PackagedElement()); >+ } >+ return getMSLWrapper(new CreateClass_3004Command(req)); >+ } >+ if (UMLElementTypes.Interface_3005 == req.getElementType()) { >+ if (req.getContainmentFeature() == null) { >+ req.setContainmentFeature(UMLPackage.eINSTANCE.getComponent_PackagedElement()); >+ } >+ return getMSLWrapper(new CreateInterface_3005Command(req)); >+ } >+ return super.getCreateCommand(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ private static class CreateComponent_3001Command extends CreateElementCommand { >+ >+ /** >+ * @generated >+ */ >+ public CreateComponent_3001Command(CreateElementRequest req) { >+ super(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EClass getEClassToEdit() { >+ return UMLPackage.eINSTANCE.getComponent(); >+ }; >+ >+ /** >+ * @generated >+ */ >+ protected EObject getElementToEdit() { >+ EObject container = ((CreateElementRequest) getRequest()).getContainer(); >+ if (container instanceof View) { >+ container = ((View) container).getElement(); >+ } >+ return container; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject doDefaultElementCreation() { >+ Component newElement = (Component) super.doDefaultElementCreation(); >+ if (newElement != null) { >+ UMLElementTypes.Initializers.Component_3001.init(newElement); >+ } >+ return newElement; >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ private static class CreateArtifact_3003Command extends CreateElementCommand { >+ >+ /** >+ * @generated >+ */ >+ public CreateArtifact_3003Command(CreateElementRequest req) { >+ super(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EClass getEClassToEdit() { >+ return UMLPackage.eINSTANCE.getComponent(); >+ }; >+ >+ /** >+ * @generated >+ */ >+ protected EObject getElementToEdit() { >+ EObject container = ((CreateElementRequest) getRequest()).getContainer(); >+ if (container instanceof View) { >+ container = ((View) container).getElement(); >+ } >+ return container; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject doDefaultElementCreation() { >+ Artifact newElement = (Artifact) super.doDefaultElementCreation(); >+ if (newElement != null) { >+ UMLElementTypes.Initializers.Artifact_3003.init(newElement); >+ } >+ return newElement; >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ private static class CreateClass_3004Command extends CreateElementCommand { >+ >+ /** >+ * @generated >+ */ >+ public CreateClass_3004Command(CreateElementRequest req) { >+ super(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EClass getEClassToEdit() { >+ return UMLPackage.eINSTANCE.getComponent(); >+ }; >+ >+ /** >+ * @generated >+ */ >+ protected EObject getElementToEdit() { >+ EObject container = ((CreateElementRequest) getRequest()).getContainer(); >+ if (container instanceof View) { >+ container = ((View) container).getElement(); >+ } >+ return container; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject doDefaultElementCreation() { >+ org.eclipse.uml2.uml.Class newElement = (org.eclipse.uml2.uml.Class) super.doDefaultElementCreation(); >+ if (newElement != null) { >+ UMLElementTypes.Initializers.Class_3004.init(newElement); >+ } >+ return newElement; >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ private static class CreateInterface_3005Command extends CreateElementCommand { >+ >+ /** >+ * @generated >+ */ >+ public CreateInterface_3005Command(CreateElementRequest req) { >+ super(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EClass getEClassToEdit() { >+ return UMLPackage.eINSTANCE.getComponent(); >+ }; >+ >+ /** >+ * @generated >+ */ >+ protected EObject getElementToEdit() { >+ EObject container = ((CreateElementRequest) getRequest()).getContainer(); >+ if (container instanceof View) { >+ container = ((View) container).getElement(); >+ } >+ return container; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject doDefaultElementCreation() { >+ Interface newElement = (Interface) super.doDefaultElementCreation(); >+ if (newElement != null) { >+ UMLElementTypes.Initializers.Interface_3005.init(newElement); >+ } >+ return newElement; >+ } >+ } >+ >+} >Index: src/org/eclipse/uml2/diagram/component/edit/policies/UMLExtNodeLabelHostLayoutEditPolicy.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/component/edit/policies/UMLExtNodeLabelHostLayoutEditPolicy.java >diff -N src/org/eclipse/uml2/diagram/component/edit/policies/UMLExtNodeLabelHostLayoutEditPolicy.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/component/edit/policies/UMLExtNodeLabelHostLayoutEditPolicy.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,211 @@ >+package org.eclipse.uml2.diagram.component.edit.policies; >+ >+import java.util.ArrayList; >+import java.util.Iterator; >+import java.util.List; >+ >+import org.eclipse.draw2d.geometry.Rectangle; >+import org.eclipse.gef.EditPart; >+import org.eclipse.gef.GraphicalEditPart; >+import org.eclipse.gef.Request; >+import org.eclipse.gef.commands.Command; >+import org.eclipse.gef.editpolicies.LayoutEditPolicy; >+import org.eclipse.gef.requests.ChangeBoundsRequest; >+import org.eclipse.gef.requests.GroupRequest; >+import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.XYLayoutEditPolicy; >+import org.eclipse.gmf.runtime.notation.NotationPackage; >+import org.eclipse.gmf.runtime.notation.View; >+ >+/** >+ * @generated >+ */ >+public class UMLExtNodeLabelHostLayoutEditPolicy extends XYLayoutEditPolicy { >+ >+ /** >+ * @generated >+ */ >+ private LayoutEditPolicy realLayoutEditPolicy; >+ >+ /** >+ * @generated >+ */ >+ public LayoutEditPolicy getRealLayoutEditPolicy() { >+ return realLayoutEditPolicy; >+ } >+ >+ /** >+ * @generated >+ */ >+ public void setRealLayoutEditPolicy(LayoutEditPolicy realLayoutEditPolicy) { >+ this.realLayoutEditPolicy = realLayoutEditPolicy; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected boolean isExternalLabel(EditPart editPart) { >+ return false; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected final List getExternalLabels(GroupRequest request) { >+ List editParts = new ArrayList(); >+ if (request.getEditParts() != null) { >+ for (Iterator it = request.getEditParts().iterator(); it.hasNext();) { >+ EditPart editPart = (EditPart) it.next(); >+ if (isExternalLabel(editPart)) { >+ editParts.add(editPart); >+ } >+ } >+ } >+ return editParts; >+ } >+ >+ /** >+ * @generated >+ */ >+ public Command getCommand(Request request) { >+ if (REQ_MOVE_CHILDREN.equals(request.getType())) { >+ ChangeBoundsRequest cbRequest = (ChangeBoundsRequest) request; >+ List extLabels = getExternalLabels(cbRequest); >+ if (!extLabels.isEmpty()) { >+ List editParts = cbRequest.getEditParts(); >+ Command cmd = null; >+ if (realLayoutEditPolicy != null && editParts.size() > extLabels.size()) { >+ List other = new ArrayList(editParts); >+ other.removeAll(extLabels); >+ cbRequest.setEditParts(other); >+ cmd = realLayoutEditPolicy.getCommand(request); >+ } >+ cbRequest.setEditParts(extLabels); >+ Command extLabelsCmd = getMoveChildrenCommand(request); >+ cbRequest.setEditParts(editParts); >+ return cmd == null ? extLabelsCmd : cmd.chain(extLabelsCmd); >+ } >+ } >+ if (request instanceof GroupRequest) { >+ List extLabels = getExternalLabels((GroupRequest) request); >+ if (!extLabels.isEmpty()) { >+ return null; >+ } >+ } >+ return realLayoutEditPolicy == null ? null : realLayoutEditPolicy.getCommand(request); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Object getConstraintFor(ChangeBoundsRequest request, GraphicalEditPart child) { >+ int dx = ((Integer) ViewUtil.getStructuralFeatureValue((View) child.getModel(), NotationPackage.eINSTANCE.getLocation_X())).intValue(); >+ int dy = ((Integer) ViewUtil.getStructuralFeatureValue((View) child.getModel(), NotationPackage.eINSTANCE.getLocation_Y())).intValue(); >+ Rectangle r = new Rectangle(dx, dy, 0, 0); >+ child.getFigure().translateToAbsolute(r); >+ r.translate(request.getMoveDelta()); >+ child.getFigure().translateToRelative(r); >+ return r; >+ } >+ >+ /** >+ * @generated >+ */ >+ public boolean understandsRequest(Request req) { >+ if (realLayoutEditPolicy != null && realLayoutEditPolicy.understandsRequest(req)) { >+ return true; >+ } >+ return super.understandsRequest(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void decorateChild(EditPart child) { >+ } >+ >+ /** >+ * @generated >+ */ >+ public void setHost(EditPart host) { >+ super.setHost(host); >+ if (realLayoutEditPolicy != null) { >+ realLayoutEditPolicy.setHost(host); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ public void activate() { >+ super.activate(); >+ if (realLayoutEditPolicy != null) { >+ realLayoutEditPolicy.activate(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ public void deactivate() { >+ super.deactivate(); >+ if (realLayoutEditPolicy != null) { >+ realLayoutEditPolicy.deactivate(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ public EditPart getTargetEditPart(Request request) { >+ if (realLayoutEditPolicy != null) { >+ return realLayoutEditPolicy.getTargetEditPart(request); >+ } else { >+ return super.getTargetEditPart(request); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ public void showSourceFeedback(Request request) { >+ if (realLayoutEditPolicy != null) { >+ realLayoutEditPolicy.showSourceFeedback(request); >+ } else { >+ super.showSourceFeedback(request); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ public void eraseSourceFeedback(Request request) { >+ if (realLayoutEditPolicy != null) { >+ realLayoutEditPolicy.eraseSourceFeedback(request); >+ } else { >+ super.eraseSourceFeedback(request); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ public void showTargetFeedback(Request request) { >+ if (realLayoutEditPolicy != null) { >+ realLayoutEditPolicy.showTargetFeedback(request); >+ } else { >+ super.showTargetFeedback(request); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ public void eraseTargetFeedback(Request request) { >+ if (realLayoutEditPolicy != null) { >+ realLayoutEditPolicy.eraseTargetFeedback(request); >+ } else { >+ super.eraseTargetFeedback(request); >+ } >+ } >+} >Index: src/org/eclipse/uml2/diagram/component/edit/parts/ComponentContents2EditPart.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/component/edit/parts/ComponentContents2EditPart.java >diff -N src/org/eclipse/uml2/diagram/component/edit/parts/ComponentContents2EditPart.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/component/edit/parts/ComponentContents2EditPart.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,76 @@ >+package org.eclipse.uml2.diagram.component.edit.parts; >+ >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.draw2d.IFigure; >+ >+import org.eclipse.gef.EditPolicy; >+ >+import org.eclipse.gmf.runtime.diagram.ui.editparts.ShapeCompartmentEditPart; >+ >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.ResizableCompartmentEditPolicy; >+ >+import org.eclipse.gmf.runtime.diagram.ui.figures.ResizableCompartmentFigure; >+ >+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout; >+ >+import org.eclipse.uml2.diagram.component.edit.policies.ComponentContents2CanonicalEditPolicy; >+import org.eclipse.uml2.diagram.component.edit.policies.ComponentContents2ItemSemanticEditPolicy; >+ >+/** >+ * @generated >+ */ >+public class ComponentContents2EditPart extends ShapeCompartmentEditPart { >+ >+ /** >+ * @generated >+ */ >+ public static final int VISUAL_ID = 7002; >+ >+ /** >+ * @generated >+ */ >+ public ComponentContents2EditPart(View view) { >+ super(view); >+ } >+ >+ /** >+ * @generated >+ */ >+ public String getCompartmentName() { >+ return "contents"; >+ } >+ >+ /** >+ * @generated >+ */ >+ public IFigure createFigure() { >+ ResizableCompartmentFigure result = (ResizableCompartmentFigure) super.createFigure(); >+ result.setTitleVisibility(false); >+ return result; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void createDefaultEditPolicies() { >+ super.createDefaultEditPolicies(); >+ installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE, new ResizableCompartmentEditPolicy()); >+ installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE, new ComponentContents2ItemSemanticEditPolicy()); >+ installEditPolicy(EditPolicyRoles.CREATION_ROLE, new CreationEditPolicy()); >+ installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE, new DragDropEditPolicy()); >+ installEditPolicy(EditPolicyRoles.CANONICAL_ROLE, new ComponentContents2CanonicalEditPolicy()); >+ >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setRatio(Double ratio) { >+ if (getFigure().getParent().getLayoutManager() instanceof ConstrainedToolbarLayout) { >+ super.setRatio(ratio); >+ } >+ } >+} >Index: src/org/eclipse/uml2/diagram/component/edit/parts/ArtifactNameEditPart.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/component/edit/parts/ArtifactNameEditPart.java >diff -N src/org/eclipse/uml2/diagram/component/edit/parts/ArtifactNameEditPart.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/component/edit/parts/ArtifactNameEditPart.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,574 @@ >+package org.eclipse.uml2.diagram.component.edit.parts; >+ >+import java.util.ArrayList; >+import java.util.List; >+import org.eclipse.gef.EditPolicy; >+import org.eclipse.gef.GraphicalEditPart; >+import org.eclipse.gef.Request; >+import org.eclipse.gef.commands.Command; >+import org.eclipse.gef.editpolicies.NonResizableEditPolicy; >+import org.eclipse.gef.handles.NonResizableHandleKit; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.ITextAwareEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.LabelDirectEditPolicy; >+import org.eclipse.gmf.runtime.notation.View; >+import java.util.Collections; >+ >+import org.eclipse.draw2d.IFigure; >+import org.eclipse.draw2d.Label; >+ >+import org.eclipse.draw2d.geometry.Point; >+ >+import org.eclipse.emf.common.notify.Notification; >+ >+import org.eclipse.emf.ecore.EObject; >+ >+import org.eclipse.emf.transaction.RunnableWithResult; >+ >+import org.eclipse.gef.AccessibleEditPart; >+ >+import org.eclipse.gef.requests.DirectEditRequest; >+ >+import org.eclipse.gef.tools.DirectEditManager; >+ >+import org.eclipse.gmf.runtime.common.ui.services.parser.IParser; >+import org.eclipse.gmf.runtime.common.ui.services.parser.IParserEditStatus; >+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserEditStatus; >+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserOptions; >+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserService; >+ >+import org.eclipse.gmf.runtime.diagram.ui.editparts.CompartmentEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart; >+ >+import org.eclipse.gmf.runtime.diagram.ui.l10n.DiagramColorRegistry; >+ >+import org.eclipse.gmf.runtime.diagram.ui.requests.RequestConstants; >+ >+import org.eclipse.gmf.runtime.diagram.ui.tools.TextDirectEditManager; >+ >+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel; >+ >+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter; >+ >+import org.eclipse.gmf.runtime.emf.type.core.IElementType; >+ >+import org.eclipse.gmf.runtime.emf.ui.services.parser.ISemanticParser; >+import org.eclipse.gmf.runtime.emf.ui.services.parser.ParserHintAdapter; >+ >+import org.eclipse.gmf.runtime.notation.FontStyle; >+import org.eclipse.gmf.runtime.notation.NotationPackage; >+ >+import org.eclipse.jface.resource.ImageDescriptor; >+ >+import org.eclipse.jface.text.contentassist.IContentAssistProcessor; >+ >+import org.eclipse.jface.viewers.ICellEditorValidator; >+ >+import org.eclipse.swt.SWT; >+ >+import org.eclipse.swt.accessibility.AccessibleEvent; >+ >+import org.eclipse.swt.graphics.Color; >+import org.eclipse.swt.graphics.FontData; >+import org.eclipse.swt.graphics.Image; >+import org.eclipse.uml2.diagram.component.edit.policies.UMLTextSelectionEditPolicy; >+import org.eclipse.uml2.diagram.component.part.UMLDiagramEditorPlugin; >+import org.eclipse.uml2.diagram.component.providers.UMLElementTypes; >+ >+/** >+ * @generated >+ */ >+public class ArtifactNameEditPart extends CompartmentEditPart implements ITextAwareEditPart { >+ >+ /** >+ * @generated >+ */ >+ public static final int VISUAL_ID = 5006; >+ >+ /** >+ * @generated >+ */ >+ private DirectEditManager manager; >+ >+ /** >+ * @generated >+ */ >+ private IParser parser; >+ >+ /** >+ * @generated >+ */ >+ private List parserElements; >+ >+ /** >+ * @generated >+ */ >+ private String defaultText; >+ >+ /** >+ * @generated >+ */ >+ public ArtifactNameEditPart(View view) { >+ super(view); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void createDefaultEditPolicies() { >+ super.createDefaultEditPolicies(); >+ installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE, new LabelDirectEditPolicy()); >+ installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE, new NonResizableEditPolicy() { >+ >+ protected List createSelectionHandles() { >+ List handles = new ArrayList(); >+ NonResizableHandleKit.addMoveHandle((GraphicalEditPart) getHost(), handles); >+ return handles; >+ } >+ >+ public Command getCommand(Request request) { >+ return null; >+ } >+ >+ public boolean understandsRequest(Request request) { >+ return false; >+ } >+ }); >+ >+ } >+ >+ /** >+ * @generated >+ */ >+ protected String getLabelTextHelper(IFigure figure) { >+ if (figure instanceof WrapLabel) { >+ return ((WrapLabel) figure).getText(); >+ } else { >+ return ((Label) figure).getText(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setLabelTextHelper(IFigure figure, String text) { >+ if (figure instanceof WrapLabel) { >+ ((WrapLabel) figure).setText(text); >+ } else { >+ ((Label) figure).setText(text); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Image getLabelIconHelper(IFigure figure) { >+ if (figure instanceof WrapLabel) { >+ return ((WrapLabel) figure).getIcon(); >+ } else { >+ return ((Label) figure).getIcon(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setLabelIconHelper(IFigure figure, Image icon) { >+ if (figure instanceof WrapLabel) { >+ ((WrapLabel) figure).setIcon(icon); >+ } else { >+ ((Label) figure).setIcon(icon); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ public void setLabel(WrapLabel figure) { >+ unregisterVisuals(); >+ setFigure(figure); >+ defaultText = getLabelTextHelper(figure); >+ registerVisuals(); >+ refreshVisuals(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected List getModelChildren() { >+ return Collections.EMPTY_LIST; >+ } >+ >+ /** >+ * @generated >+ */ >+ public IGraphicalEditPart getChildBySemanticHint(String semanticHint) { >+ return null; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject getParserElement() { >+ EObject element = resolveSemanticElement(); >+ return element != null ? element : (View) getModel(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Image getLabelIcon() { >+ EObject parserElement = getParserElement(); >+ if (parserElement == null) { >+ return null; >+ } >+ return UMLElementTypes.getImage(parserElement.eClass()); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected String getLabelText() { >+ String text = null; >+ if (getParser() != null) { >+ text = getParser().getPrintString(new EObjectAdapter(getParserElement()), getParserOptions().intValue()); >+ } >+ if (text == null || text.length() == 0) { >+ text = defaultText; >+ } >+ return text; >+ } >+ >+ /** >+ * @generated >+ */ >+ public void setLabelText(String text) { >+ setLabelTextHelper(getFigure(), text); >+ Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE); >+ if (pdEditPolicy instanceof UMLTextSelectionEditPolicy) { >+ ((UMLTextSelectionEditPolicy) pdEditPolicy).refreshFeedback(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ public String getEditText() { >+ if (getParser() == null) { >+ return ""; //$NON-NLS-1$ >+ } >+ return getParser().getEditString(new EObjectAdapter(getParserElement()), getParserOptions().intValue()); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected boolean isEditable() { >+ return getEditText() != null; >+ } >+ >+ /** >+ * @generated >+ */ >+ public ICellEditorValidator getEditTextValidator() { >+ return new ICellEditorValidator() { >+ >+ public String isValid(final Object value) { >+ if (value instanceof String) { >+ final EObject element = getParserElement(); >+ final IParser parser = getParser(); >+ try { >+ IParserEditStatus valid = (IParserEditStatus) getEditingDomain().runExclusive(new RunnableWithResult.Impl() { >+ >+ public void run() { >+ setResult(parser.isValidEditString(new EObjectAdapter(element), (String) value)); >+ } >+ }); >+ return valid.getCode() == ParserEditStatus.EDITABLE ? null : valid.getMessage(); >+ } catch (InterruptedException ie) { >+ ie.printStackTrace(); >+ } >+ } >+ >+ // shouldn't get here >+ return null; >+ } >+ }; >+ } >+ >+ /** >+ * @generated >+ */ >+ public IContentAssistProcessor getCompletionProcessor() { >+ if (getParser() == null) { >+ return null; >+ } >+ return getParser().getCompletionProcessor(new EObjectAdapter(getParserElement())); >+ } >+ >+ /** >+ * @generated >+ */ >+ public ParserOptions getParserOptions() { >+ return ParserOptions.NONE; >+ } >+ >+ /** >+ * @generated >+ */ >+ public IParser getParser() { >+ if (parser == null) { >+ String parserHint = ((View) getModel()).getType(); >+ ParserHintAdapter hintAdapter = new ParserHintAdapter(getParserElement(), parserHint) { >+ >+ public Object getAdapter(Class adapter) { >+ if (IElementType.class.equals(adapter)) { >+ return UMLElementTypes.Artifact_3003; >+ } >+ return super.getAdapter(adapter); >+ } >+ }; >+ parser = ParserService.getInstance().getParser(hintAdapter); >+ } >+ return parser; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected DirectEditManager getManager() { >+ if (manager == null) { >+ setManager(new TextDirectEditManager(this, TextDirectEditManager.getTextCellEditorClass(this), UMLEditPartFactory.getTextCellEditorLocator(this))); >+ } >+ return manager; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setManager(DirectEditManager manager) { >+ this.manager = manager; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void performDirectEdit() { >+ getManager().show(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void performDirectEdit(Point eventLocation) { >+ if (getManager().getClass() == TextDirectEditManager.class) { >+ ((TextDirectEditManager) getManager()).show(eventLocation.getSWTPoint()); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ private void performDirectEdit(char initialCharacter) { >+ if (getManager() instanceof TextDirectEditManager) { >+ ((TextDirectEditManager) getManager()).show(initialCharacter); >+ } else { >+ performDirectEdit(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void performDirectEditRequest(Request request) { >+ final Request theRequest = request; >+ try { >+ getEditingDomain().runExclusive(new Runnable() { >+ >+ public void run() { >+ if (isActive() && isEditable()) { >+ if (theRequest.getExtendedData().get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR) instanceof Character) { >+ Character initialChar = (Character) theRequest.getExtendedData().get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR); >+ performDirectEdit(initialChar.charValue()); >+ } else if ((theRequest instanceof DirectEditRequest) && (getEditText().equals(getLabelText()))) { >+ DirectEditRequest editRequest = (DirectEditRequest) theRequest; >+ performDirectEdit(editRequest.getLocation()); >+ } else { >+ performDirectEdit(); >+ } >+ } >+ } >+ }); >+ } catch (InterruptedException e) { >+ e.printStackTrace(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshVisuals() { >+ super.refreshVisuals(); >+ refreshLabel(); >+ refreshFont(); >+ refreshFontColor(); >+ refreshUnderline(); >+ refreshStrikeThrough(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshLabel() { >+ setLabelTextHelper(getFigure(), getLabelText()); >+ setLabelIconHelper(getFigure(), getLabelIcon()); >+ Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE); >+ if (pdEditPolicy instanceof UMLTextSelectionEditPolicy) { >+ ((UMLTextSelectionEditPolicy) pdEditPolicy).refreshFeedback(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshUnderline() { >+ FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle()); >+ if (style != null && getFigure() instanceof WrapLabel) { >+ ((WrapLabel) getFigure()).setTextUnderline(style.isUnderline()); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshStrikeThrough() { >+ FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle()); >+ if (style != null && getFigure() instanceof WrapLabel) { >+ ((WrapLabel) getFigure()).setTextStrikeThrough(style.isStrikeThrough()); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshFont() { >+ FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle()); >+ if (style != null) { >+ FontData fontData = new FontData(style.getFontName(), style.getFontHeight(), (style.isBold() ? SWT.BOLD : SWT.NORMAL) | (style.isItalic() ? SWT.ITALIC : SWT.NORMAL)); >+ setFont(fontData); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setFontColor(Color color) { >+ getFigure().setForegroundColor(color); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void addSemanticListeners() { >+ if (getParser() instanceof ISemanticParser) { >+ EObject element = resolveSemanticElement(); >+ parserElements = ((ISemanticParser) getParser()).getSemanticElementsBeingParsed(element); >+ for (int i = 0; i < parserElements.size(); i++) { >+ addListenerFilter("SemanticModel" + i, this, (EObject) parserElements.get(i)); //$NON-NLS-1$ >+ } >+ } else { >+ super.addSemanticListeners(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void removeSemanticListeners() { >+ if (parserElements != null) { >+ for (int i = 0; i < parserElements.size(); i++) { >+ removeListenerFilter("SemanticModel" + i); //$NON-NLS-1$ >+ } >+ } else { >+ super.removeSemanticListeners(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected AccessibleEditPart getAccessibleEditPart() { >+ if (accessibleEP == null) { >+ accessibleEP = new AccessibleGraphicalEditPart() { >+ >+ public void getName(AccessibleEvent e) { >+ e.result = getLabelTextHelper(getFigure()); >+ } >+ }; >+ } >+ return accessibleEP; >+ } >+ >+ /** >+ * @generated >+ */ >+ private View getFontStyleOwnerView() { >+ return getPrimaryView(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void addNotationalListeners() { >+ super.addNotationalListeners(); >+ addListenerFilter("PrimaryView", this, getPrimaryView()); //$NON-NLS-1$ >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void removeNotationalListeners() { >+ super.removeNotationalListeners(); >+ removeListenerFilter("PrimaryView"); //$NON-NLS-1$ >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void handleNotificationEvent(Notification event) { >+ Object feature = event.getFeature(); >+ if (NotationPackage.eINSTANCE.getFontStyle_FontColor().equals(feature)) { >+ Integer c = (Integer) event.getNewValue(); >+ setFontColor(DiagramColorRegistry.getInstance().getColor(c)); >+ } else if (NotationPackage.eINSTANCE.getFontStyle_Underline().equals(feature)) { >+ refreshUnderline(); >+ } else if (NotationPackage.eINSTANCE.getFontStyle_StrikeThrough().equals(feature)) { >+ refreshStrikeThrough(); >+ } else if (NotationPackage.eINSTANCE.getFontStyle_FontHeight().equals(feature) || NotationPackage.eINSTANCE.getFontStyle_FontName().equals(feature) >+ || NotationPackage.eINSTANCE.getFontStyle_Bold().equals(feature) || NotationPackage.eINSTANCE.getFontStyle_Italic().equals(feature)) { >+ refreshFont(); >+ } else { >+ if (getParser() != null && getParser().isAffectingEvent(event, getParserOptions().intValue())) { >+ refreshLabel(); >+ } >+ if (getParser() instanceof ISemanticParser) { >+ ISemanticParser modelParser = (ISemanticParser) getParser(); >+ if (modelParser.areSemanticElementsAffected(null, event)) { >+ removeSemanticListeners(); >+ if (resolveSemanticElement() != null) { >+ addSemanticListeners(); >+ } >+ refreshLabel(); >+ } >+ } >+ } >+ super.handleNotificationEvent(event); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected IFigure createFigure() { >+ // Parent should assign one using setLabel method >+ return null; >+ } >+} >Index: src/org/eclipse/uml2/diagram/component/providers/UMLPaletteProvider.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/component/providers/UMLPaletteProvider.java >diff -N src/org/eclipse/uml2/diagram/component/providers/UMLPaletteProvider.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/component/providers/UMLPaletteProvider.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,38 @@ >+package org.eclipse.uml2.diagram.component.providers; >+ >+import java.util.Map; >+import org.eclipse.core.runtime.IConfigurationElement; >+import org.eclipse.gef.palette.PaletteRoot; >+import org.eclipse.gmf.runtime.common.core.service.AbstractProvider; >+import org.eclipse.gmf.runtime.common.core.service.IOperation; >+import org.eclipse.gmf.runtime.diagram.ui.services.palette.IPaletteProvider; >+import org.eclipse.ui.IEditorPart; >+import org.eclipse.uml2.diagram.component.part.UMLPaletteFactory; >+ >+/** >+ * @generated >+ */ >+public class UMLPaletteProvider extends AbstractProvider implements IPaletteProvider { >+ >+ /** >+ * @generated >+ */ >+ public void contributeToPalette(IEditorPart editor, Object content, PaletteRoot root, Map predefinedEntries) { >+ UMLPaletteFactory factory = new UMLPaletteFactory(); >+ factory.fillPalette(root); >+ } >+ >+ /** >+ * @generated >+ */ >+ public void setContributions(IConfigurationElement configElement) { >+ // no configuration >+ } >+ >+ /** >+ * @generated >+ */ >+ public boolean provides(IOperation operation) { >+ return false; // all logic is done in the service >+ } >+} >Index: src/org/eclipse/uml2/diagram/component/edit/parts/UMLEditPartFactory.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/component/edit/parts/UMLEditPartFactory.java >diff -N src/org/eclipse/uml2/diagram/component/edit/parts/UMLEditPartFactory.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/component/edit/parts/UMLEditPartFactory.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,195 @@ >+package org.eclipse.uml2.diagram.component.edit.parts; >+ >+import org.eclipse.draw2d.FigureUtilities; >+import org.eclipse.draw2d.IFigure; >+import org.eclipse.draw2d.Label; >+import org.eclipse.draw2d.geometry.Dimension; >+import org.eclipse.draw2d.geometry.Rectangle; >+import org.eclipse.gef.EditPart; >+import org.eclipse.gef.EditPartFactory; >+import org.eclipse.gef.tools.CellEditorLocator; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.ITextAwareEditPart; >+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.jface.viewers.CellEditor; >+import org.eclipse.swt.SWT; >+import org.eclipse.swt.widgets.Text; >+import org.eclipse.uml2.diagram.component.part.UMLVisualIDRegistry; >+ >+/** >+ * @generated >+ */ >+public class UMLEditPartFactory implements EditPartFactory { >+ >+ /** >+ * @generated >+ */ >+ public static final String EXTERNAL_NODE_LABELS_LAYER = "External Node Labels"; //$NON-NLS-1$ >+ >+ /** >+ * @generated >+ */ >+ public EditPart createEditPart(EditPart context, Object model) { >+ if (model instanceof View) { >+ View view = (View) model; >+ int viewVisualID = UMLVisualIDRegistry.getVisualID(view); >+ switch (viewVisualID) { >+ case ComponentEditPart.VISUAL_ID: >+ return new ComponentEditPart(view); >+ case ComponentName2EditPart.VISUAL_ID: >+ return new ComponentName2EditPart(view); >+ case Artifact2EditPart.VISUAL_ID: >+ return new Artifact2EditPart(view); >+ case ArtifactName2EditPart.VISUAL_ID: >+ return new ArtifactName2EditPart(view); >+ case Interface2EditPart.VISUAL_ID: >+ return new Interface2EditPart(view); >+ case InterfaceName2EditPart.VISUAL_ID: >+ return new InterfaceName2EditPart(view); >+ case Class2EditPart.VISUAL_ID: >+ return new Class2EditPart(view); >+ case ClassName2EditPart.VISUAL_ID: >+ return new ClassName2EditPart(view); >+ case Component2EditPart.VISUAL_ID: >+ return new Component2EditPart(view); >+ case ComponentNameEditPart.VISUAL_ID: >+ return new ComponentNameEditPart(view); >+ case PortEditPart.VISUAL_ID: >+ return new PortEditPart(view); >+ case PortNameEditPart.VISUAL_ID: >+ return new PortNameEditPart(view); >+ case ArtifactEditPart.VISUAL_ID: >+ return new ArtifactEditPart(view); >+ case ArtifactNameEditPart.VISUAL_ID: >+ return new ArtifactNameEditPart(view); >+ case ClassEditPart.VISUAL_ID: >+ return new ClassEditPart(view); >+ case ClassNameEditPart.VISUAL_ID: >+ return new ClassNameEditPart(view); >+ case InterfaceEditPart.VISUAL_ID: >+ return new InterfaceEditPart(view); >+ case InterfaceNameEditPart.VISUAL_ID: >+ return new InterfaceNameEditPart(view); >+ case ComponentContentsEditPart.VISUAL_ID: >+ return new ComponentContentsEditPart(view); >+ case ComponentContents2EditPart.VISUAL_ID: >+ return new ComponentContents2EditPart(view); >+ case PackageEditPart.VISUAL_ID: >+ return new PackageEditPart(view); >+ case InterfaceRealizationEditPart.VISUAL_ID: >+ return new InterfaceRealizationEditPart(view); >+ case PortProvidedEditPart.VISUAL_ID: >+ return new PortProvidedEditPart(view); >+ case PortRequiredEditPart.VISUAL_ID: >+ return new PortRequiredEditPart(view); >+ } >+ } >+ return createUnrecognizedEditPart(context, model); >+ } >+ >+ /** >+ * @generated >+ */ >+ private EditPart createUnrecognizedEditPart(EditPart context, Object model) { >+ // Handle creation of unrecognized child node EditParts here >+ return null; >+ } >+ >+ /** >+ * @generated >+ */ >+ public static CellEditorLocator getTextCellEditorLocator(ITextAwareEditPart source) { >+ if (source.getFigure() instanceof WrapLabel) >+ return new TextCellEditorLocator((WrapLabel) source.getFigure()); >+ else { >+ IFigure figure = source.getFigure(); >+ return new LabelCellEditorLocator((Label) figure); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ static private class TextCellEditorLocator implements CellEditorLocator { >+ >+ /** >+ * @generated >+ */ >+ private WrapLabel wrapLabel; >+ >+ /** >+ * @generated >+ */ >+ public TextCellEditorLocator(WrapLabel wrapLabel) { >+ super(); >+ this.wrapLabel = wrapLabel; >+ } >+ >+ /** >+ * @generated >+ */ >+ public WrapLabel getWrapLabel() { >+ return wrapLabel; >+ } >+ >+ /** >+ * @generated >+ */ >+ public void relocate(CellEditor celleditor) { >+ Text text = (Text) celleditor.getControl(); >+ Rectangle rect = getWrapLabel().getTextBounds().getCopy(); >+ getWrapLabel().translateToAbsolute(rect); >+ >+ if (getWrapLabel().isTextWrapped() && getWrapLabel().getText().length() > 0) >+ rect.setSize(new Dimension(text.computeSize(rect.width, SWT.DEFAULT))); >+ else { >+ int avr = FigureUtilities.getFontMetrics(text.getFont()).getAverageCharWidth(); >+ rect.setSize(new Dimension(text.computeSize(SWT.DEFAULT, SWT.DEFAULT)).expand(avr * 2, 0)); >+ } >+ >+ if (!rect.equals(new Rectangle(text.getBounds()))) >+ text.setBounds(rect.x, rect.y, rect.width, rect.height); >+ } >+ >+ } >+ >+ /** >+ * @generated >+ */ >+ private static class LabelCellEditorLocator implements CellEditorLocator { >+ >+ /** >+ * @generated >+ */ >+ private Label label; >+ >+ /** >+ * @generated >+ */ >+ public LabelCellEditorLocator(Label label) { >+ this.label = label; >+ } >+ >+ /** >+ * @generated >+ */ >+ public Label getLabel() { >+ return label; >+ } >+ >+ /** >+ * @generated >+ */ >+ public void relocate(CellEditor celleditor) { >+ Text text = (Text) celleditor.getControl(); >+ Rectangle rect = getLabel().getTextBounds().getCopy(); >+ getLabel().translateToAbsolute(rect); >+ >+ int avr = FigureUtilities.getFontMetrics(text.getFont()).getAverageCharWidth(); >+ rect.setSize(new Dimension(text.computeSize(SWT.DEFAULT, SWT.DEFAULT)).expand(avr * 2, 0)); >+ >+ if (!rect.equals(new Rectangle(text.getBounds()))) >+ text.setBounds(rect.x, rect.y, rect.width, rect.height); >+ } >+ } >+} >Index: src/org/eclipse/uml2/diagram/component/edit/helpers/ArtifactEditHelperAdvice.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/component/edit/helpers/ArtifactEditHelperAdvice.java >diff -N src/org/eclipse/uml2/diagram/component/edit/helpers/ArtifactEditHelperAdvice.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/component/edit/helpers/ArtifactEditHelperAdvice.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,9 @@ >+package org.eclipse.uml2.diagram.component.edit.helpers; >+ >+import org.eclipse.gmf.runtime.emf.type.core.edithelper.AbstractEditHelperAdvice; >+ >+/** >+ * @generated >+ */ >+public class ArtifactEditHelperAdvice extends AbstractEditHelperAdvice { >+} >Index: src/org/eclipse/uml2/diagram/component/edit/parts/ArtifactEditPart.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/component/edit/parts/ArtifactEditPart.java >diff -N src/org/eclipse/uml2/diagram/component/edit/parts/ArtifactEditPart.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/component/edit/parts/ArtifactEditPart.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,359 @@ >+package org.eclipse.uml2.diagram.component.edit.parts; >+ >+import org.eclipse.draw2d.IFigure; >+import org.eclipse.draw2d.StackLayout; >+ >+import org.eclipse.gef.EditPart; >+import org.eclipse.gef.EditPolicy; >+import org.eclipse.gef.Request; >+ >+import org.eclipse.gef.commands.Command; >+ >+import org.eclipse.gef.editpolicies.LayoutEditPolicy; >+import org.eclipse.gef.editpolicies.NonResizableEditPolicy; >+ >+import org.eclipse.gef.requests.CreateRequest; >+ >+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.ShapeNodeEditPart; >+ >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles; >+ >+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout; >+ >+import org.eclipse.gmf.runtime.gef.ui.figures.DefaultSizeNodeFigure; >+import org.eclipse.gmf.runtime.gef.ui.figures.NodeFigure; >+ >+import org.eclipse.gmf.runtime.notation.View; >+ >+import org.eclipse.uml2.diagram.component.edit.policies.ArtifactItemSemanticEditPolicy; >+import org.eclipse.uml2.diagram.component.part.UMLVisualIDRegistry; >+ >+/** >+ * @generated >+ */ >+public class ArtifactEditPart extends ShapeNodeEditPart { >+ >+ /** >+ * @generated >+ */ >+ public static final int VISUAL_ID = 3003; >+ >+ /** >+ * @generated >+ */ >+ protected IFigure contentPane; >+ >+ /** >+ * @generated >+ */ >+ protected IFigure primaryShape; >+ >+ /** >+ * @generated >+ */ >+ public ArtifactEditPart(View view) { >+ super(view); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void createDefaultEditPolicies() { >+ super.createDefaultEditPolicies(); >+ installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE, new ArtifactItemSemanticEditPolicy()); >+ installEditPolicy(EditPolicy.LAYOUT_ROLE, createLayoutEditPolicy()); >+ >+ } >+ >+ /** >+ * @generated >+ */ >+ protected LayoutEditPolicy createLayoutEditPolicy() { >+ LayoutEditPolicy lep = new LayoutEditPolicy() { >+ >+ protected EditPolicy createChildEditPolicy(EditPart child) { >+ EditPolicy result = child.getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE); >+ if (result == null) { >+ result = new NonResizableEditPolicy(); >+ } >+ return result; >+ } >+ >+ protected Command getMoveChildrenCommand(Request request) { >+ return null; >+ } >+ >+ protected Command getCreateCommand(CreateRequest request) { >+ return null; >+ } >+ }; >+ return lep; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected IFigure createNodeShape() { >+ ArtifactFigure figure = new ArtifactFigure(); >+ return primaryShape = figure; >+ } >+ >+ /** >+ * @generated >+ */ >+ public ArtifactFigure getPrimaryShape() { >+ return (ArtifactFigure) primaryShape; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected IFigure getContentPaneFor(IGraphicalEditPart editPart) { >+ >+ return super.getContentPaneFor(editPart); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected boolean addFixedChild(EditPart childEditPart) { >+ if (childEditPart instanceof ArtifactNameEditPart) { >+ ((ArtifactNameEditPart) childEditPart).setLabel(getPrimaryShape().getFigureArtifactFigure_name()); >+ return true; >+ } >+ return false; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected boolean removeFixedChild(EditPart childEditPart) { >+ return false; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected NodeFigure createNodePlate() { >+ DefaultSizeNodeFigure result = new DefaultSizeNodeFigure(getMapMode().DPtoLP(80), getMapMode().DPtoLP(60)); >+ return result; >+ } >+ >+ /** >+ * Creates figure for this edit part. >+ * >+ * Body of this method does not depend on settings in generation model >+ * so you may safely remove <i>generated</i> tag and modify it. >+ * >+ * @generated >+ */ >+ protected NodeFigure createNodeFigure() { >+ NodeFigure figure = createNodePlate(); >+ figure.setLayoutManager(new StackLayout()); >+ IFigure shape = createNodeShape(); >+ figure.add(shape); >+ contentPane = setupContentPane(shape); >+ return figure; >+ } >+ >+ /** >+ * Default implementation treats passed figure as content pane. >+ * Respects layout one may have set for generated figure. >+ * @param nodeShape instance of generated figure class >+ * @generated >+ */ >+ protected IFigure setupContentPane(IFigure nodeShape) { >+ if (nodeShape.getLayoutManager() == null) { >+ ConstrainedToolbarLayout layout = new ConstrainedToolbarLayout(); >+ layout.setSpacing(getMapMode().DPtoLP(5)); >+ nodeShape.setLayoutManager(layout); >+ } >+ return nodeShape; // use nodeShape itself as contentPane >+ } >+ >+ /** >+ * @generated >+ */ >+ public IFigure getContentPane() { >+ if (contentPane != null) { >+ return contentPane; >+ } >+ return super.getContentPane(); >+ } >+ >+ /** >+ * @generated >+ */ >+ public EditPart getPrimaryChildEditPart() { >+ return getChildBySemanticHint(UMLVisualIDRegistry.getType(ArtifactNameEditPart.VISUAL_ID)); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void addChildVisual(EditPart childEditPart, int index) { >+ if (addFixedChild(childEditPart)) { >+ return; >+ } >+ super.addChildVisual(childEditPart, -1); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void removeChildVisual(EditPart childEditPart) { >+ if (removeFixedChild(childEditPart)) { >+ return; >+ } >+ super.removeChildVisual(childEditPart); >+ } >+ >+ /** >+ * @generated >+ */ >+ public class ArtifactFigure extends org.eclipse.draw2d.RectangleFigure { >+ >+ /** >+ * @generated >+ */ >+ public ArtifactFigure() { >+ >+ org.eclipse.gmf.internal.codegen.draw2d.GridLayout myGenLayoutManager = new org.eclipse.gmf.internal.codegen.draw2d.GridLayout(); >+ myGenLayoutManager.numColumns = 1; >+ myGenLayoutManager.makeColumnsEqualWidth = true; >+ myGenLayoutManager.marginWidth = 0; >+ myGenLayoutManager.marginHeight = 0; >+ myGenLayoutManager.horizontalSpacing = 0; >+ myGenLayoutManager.verticalSpacing = 0; >+ >+ this.setLayoutManager(myGenLayoutManager); >+ >+ createContents(); >+ } >+ >+ /** >+ * @generated >+ */ >+ private void createContents() { >+ org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel fig_0 = new org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel(); >+ fig_0.setText("\u00ABartifact\u00BB"); >+ >+ setFigureArtifactFigure_fixed_artifact(fig_0); >+ org.eclipse.gmf.internal.codegen.draw2d.GridLayoutData layData0 = new org.eclipse.gmf.internal.codegen.draw2d.GridLayoutData(); >+ layData0.verticalAlignment = org.eclipse.gmf.internal.codegen.draw2d.GridLayoutData.CENTER; >+ layData0.horizontalAlignment = org.eclipse.gmf.internal.codegen.draw2d.GridLayoutData.CENTER; >+ layData0.horizontalIndent = 0; >+ layData0.horizontalSpan = 1; >+ layData0.verticalSpan = 1; >+ layData0.grabExcessHorizontalSpace = true; >+ layData0.grabExcessVerticalSpace = false; >+ >+ this.add(fig_0, layData0); >+ org.eclipse.draw2d.RectangleFigure fig_1 = new org.eclipse.draw2d.RectangleFigure(); >+ fig_1.setFill(false); >+ fig_1.setOutline(false); >+ >+ org.eclipse.uml2.diagram.common.draw2d.CenterLayout layouter1 = new org.eclipse.uml2.diagram.common.draw2d.CenterLayout(); >+ >+ fig_1.setLayoutManager(layouter1); >+ >+ setFigureArtifactFigure_NameContainer(fig_1); >+ org.eclipse.gmf.internal.codegen.draw2d.GridLayoutData layData1 = new org.eclipse.gmf.internal.codegen.draw2d.GridLayoutData(); >+ layData1.verticalAlignment = org.eclipse.gmf.internal.codegen.draw2d.GridLayoutData.FILL; >+ layData1.horizontalAlignment = org.eclipse.gmf.internal.codegen.draw2d.GridLayoutData.FILL; >+ layData1.horizontalIndent = 0; >+ layData1.horizontalSpan = 1; >+ layData1.verticalSpan = 1; >+ layData1.grabExcessHorizontalSpace = true; >+ layData1.grabExcessVerticalSpace = true; >+ >+ this.add(fig_1, layData1); >+ org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel fig_2 = new org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel(); >+ >+ setFigureArtifactFigure_name(fig_2); >+ >+ Object layData2 = null; >+ >+ fig_1.add(fig_2, layData2); >+ } >+ >+ /** >+ * @generated >+ */ >+ private org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel fArtifactFigure_fixed_artifact; >+ >+ /** >+ * @generated >+ */ >+ public org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel getFigureArtifactFigure_fixed_artifact() { >+ return fArtifactFigure_fixed_artifact; >+ } >+ >+ /** >+ * @generated >+ */ >+ private void setFigureArtifactFigure_fixed_artifact(org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel fig) { >+ fArtifactFigure_fixed_artifact = fig; >+ } >+ >+ /** >+ * @generated >+ */ >+ private org.eclipse.draw2d.RectangleFigure fArtifactFigure_NameContainer; >+ >+ /** >+ * @generated >+ */ >+ public org.eclipse.draw2d.RectangleFigure getFigureArtifactFigure_NameContainer() { >+ return fArtifactFigure_NameContainer; >+ } >+ >+ /** >+ * @generated >+ */ >+ private void setFigureArtifactFigure_NameContainer(org.eclipse.draw2d.RectangleFigure fig) { >+ fArtifactFigure_NameContainer = fig; >+ } >+ >+ /** >+ * @generated >+ */ >+ private org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel fArtifactFigure_name; >+ >+ /** >+ * @generated >+ */ >+ public org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel getFigureArtifactFigure_name() { >+ return fArtifactFigure_name; >+ } >+ >+ /** >+ * @generated >+ */ >+ private void setFigureArtifactFigure_name(org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel fig) { >+ fArtifactFigure_name = fig; >+ } >+ >+ /** >+ * @generated >+ */ >+ private boolean myUseLocalCoordinates = false; >+ >+ /** >+ * @generated >+ */ >+ protected boolean useLocalCoordinates() { >+ return myUseLocalCoordinates; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setUseLocalCoordinates(boolean useLocalCoordinates) { >+ myUseLocalCoordinates = useLocalCoordinates; >+ } >+ >+ } >+ >+} >Index: src/org/eclipse/uml2/diagram/component/edit/policies/PackageCanonicalEditPolicy.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/component/edit/policies/PackageCanonicalEditPolicy.java >diff -N src/org/eclipse/uml2/diagram/component/edit/policies/PackageCanonicalEditPolicy.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/component/edit/policies/PackageCanonicalEditPolicy.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,445 @@ >+package org.eclipse.uml2.diagram.component.edit.policies; >+ >+import java.util.List; >+import java.util.Collection; >+import org.eclipse.gmf.runtime.notation.Edge; >+import org.eclipse.emf.ecore.EObject; >+import java.util.Collections; >+import java.util.HashMap; >+import java.util.Iterator; >+import java.util.LinkedList; >+import java.util.Map; >+ >+import org.eclipse.core.runtime.IAdaptable; >+ >+import org.eclipse.emf.ecore.EClass; >+ >+import org.eclipse.gef.EditPart; >+ >+import org.eclipse.gef.commands.Command; >+ >+import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil; >+ >+import org.eclipse.gmf.runtime.diagram.ui.commands.DeferredLayoutCommand; >+import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy; >+ >+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart; >+ >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalConnectionEditPolicy; >+ >+import org.eclipse.gmf.runtime.diagram.ui.requests.CreateConnectionViewRequest; >+import org.eclipse.gmf.runtime.diagram.ui.requests.RequestConstants; >+ >+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter; >+ >+import org.eclipse.gmf.runtime.emf.type.core.IElementType; >+ >+import org.eclipse.gmf.runtime.notation.Diagram; >+import org.eclipse.gmf.runtime.notation.View; >+ >+import org.eclipse.uml2.diagram.component.edit.parts.Artifact2EditPart; >+import org.eclipse.uml2.diagram.component.edit.parts.ArtifactEditPart; >+import org.eclipse.uml2.diagram.component.edit.parts.Class2EditPart; >+import org.eclipse.uml2.diagram.component.edit.parts.ClassEditPart; >+import org.eclipse.uml2.diagram.component.edit.parts.Component2EditPart; >+import org.eclipse.uml2.diagram.component.edit.parts.ComponentEditPart; >+import org.eclipse.uml2.diagram.component.edit.parts.Interface2EditPart; >+import org.eclipse.uml2.diagram.component.edit.parts.InterfaceEditPart; >+import org.eclipse.uml2.diagram.component.edit.parts.InterfaceRealizationEditPart; >+import org.eclipse.uml2.diagram.component.edit.parts.PackageEditPart; >+import org.eclipse.uml2.diagram.component.edit.parts.PortEditPart; >+import org.eclipse.uml2.diagram.component.edit.parts.PortProvidedEditPart; >+import org.eclipse.uml2.diagram.component.edit.parts.PortRequiredEditPart; >+import org.eclipse.uml2.diagram.component.part.UMLVisualIDRegistry; >+import org.eclipse.uml2.diagram.component.providers.UMLElementTypes; >+import org.eclipse.uml2.uml.BehavioredClassifier; >+import org.eclipse.uml2.uml.InterfaceRealization; >+import org.eclipse.uml2.uml.Port; >+import org.eclipse.uml2.uml.UMLPackage; >+ >+/** >+ * @generated >+ */ >+public class PackageCanonicalEditPolicy extends CanonicalConnectionEditPolicy { >+ >+ /** >+ * @generated >+ */ >+ protected List getSemanticChildrenList() { >+ List result = new LinkedList(); >+ EObject modelObject = ((View) getHost().getModel()).getElement(); >+ View viewObject = (View) getHost().getModel(); >+ EObject nextValue; >+ int nodeVID; >+ for (Iterator values = ((org.eclipse.uml2.uml.Package) modelObject).getOwnedTypes().iterator(); values.hasNext();) { >+ nextValue = (EObject) values.next(); >+ nodeVID = UMLVisualIDRegistry.getNodeVisualID(viewObject, nextValue); >+ switch (nodeVID) { >+ case ComponentEditPart.VISUAL_ID: { >+ result.add(nextValue); >+ break; >+ } >+ case Artifact2EditPart.VISUAL_ID: { >+ result.add(nextValue); >+ break; >+ } >+ case Interface2EditPart.VISUAL_ID: { >+ result.add(nextValue); >+ break; >+ } >+ case Class2EditPart.VISUAL_ID: { >+ result.add(nextValue); >+ break; >+ } >+ } >+ } >+ return result; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected boolean shouldDeleteView(View view) { >+ return view.isSetElement() && view.getElement() != null && view.getElement().eIsProxy(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected String getDefaultFactoryHint() { >+ return null; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected List getSemanticConnectionsList() { >+ return Collections.EMPTY_LIST; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject getSourceElement(EObject relationship) { >+ return null; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject getTargetElement(EObject relationship) { >+ return null; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected boolean shouldIncludeConnection(Edge connector, Collection children) { >+ return false; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshSemantic() { >+ List createdViews = new LinkedList(); >+ createdViews.addAll(refreshSemanticChildren()); >+ List createdConnectionViews = new LinkedList(); >+ createdConnectionViews.addAll(refreshSemanticConnections()); >+ createdConnectionViews.addAll(refreshConnections()); >+ >+ if (createdViews.size() > 1) { >+ // perform a layout of the container >+ DeferredLayoutCommand layoutCmd = new DeferredLayoutCommand(host().getEditingDomain(), createdViews, host()); >+ executeCommand(new ICommandProxy(layoutCmd)); >+ } >+ >+ createdViews.addAll(createdConnectionViews); >+ makeViewsImmutable(createdViews); >+ } >+ >+ /** >+ * @generated >+ */ >+ private Collection myLinkDescriptors = new LinkedList(); >+ >+ /** >+ * @generated >+ */ >+ private Map myEObject2ViewMap = new HashMap(); >+ >+ /** >+ * @generated >+ */ >+ private Collection refreshConnections() { >+ try { >+ collectAllLinks(getDiagram()); >+ Collection existingLinks = new LinkedList(getDiagram().getEdges()); >+ for (Iterator diagramLinks = existingLinks.iterator(); diagramLinks.hasNext();) { >+ Edge nextDiagramLink = (Edge) diagramLinks.next(); >+ EObject diagramLinkObject = nextDiagramLink.getElement(); >+ EObject diagramLinkSrc = nextDiagramLink.getSource().getElement(); >+ EObject diagramLinkDst = nextDiagramLink.getTarget().getElement(); >+ int diagramLinkVisualID = UMLVisualIDRegistry.getVisualID(nextDiagramLink); >+ for (Iterator modelLinkDescriptors = myLinkDescriptors.iterator(); modelLinkDescriptors.hasNext();) { >+ LinkDescriptor nextLinkDescriptor = (LinkDescriptor) modelLinkDescriptors.next(); >+ if (diagramLinkObject == nextLinkDescriptor.getLinkElement() && diagramLinkSrc == nextLinkDescriptor.getSource() && diagramLinkDst == nextLinkDescriptor.getDestination() >+ && diagramLinkVisualID == nextLinkDescriptor.getVisualID()) { >+ diagramLinks.remove(); >+ modelLinkDescriptors.remove(); >+ } >+ } >+ } >+ deleteViews(existingLinks.iterator()); >+ return createConnections(myLinkDescriptors); >+ } finally { >+ myLinkDescriptors.clear(); >+ myEObject2ViewMap.clear(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ private void collectAllLinks(View view) { >+ EObject modelElement = view.getElement(); >+ int diagramElementVisualID = UMLVisualIDRegistry.getVisualID(view); >+ switch (diagramElementVisualID) { >+ case ComponentEditPart.VISUAL_ID: >+ case Artifact2EditPart.VISUAL_ID: >+ case Interface2EditPart.VISUAL_ID: >+ case Class2EditPart.VISUAL_ID: >+ case Component2EditPart.VISUAL_ID: >+ case PortEditPart.VISUAL_ID: >+ case ArtifactEditPart.VISUAL_ID: >+ case ClassEditPart.VISUAL_ID: >+ case InterfaceEditPart.VISUAL_ID: >+ case PackageEditPart.VISUAL_ID: { >+ myEObject2ViewMap.put(modelElement, view); >+ storeLinks(modelElement, getDiagram()); >+ } >+ default: { >+ } >+ for (Iterator children = view.getChildren().iterator(); children.hasNext();) { >+ View childView = (View) children.next(); >+ collectAllLinks(childView); >+ } >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ private Collection createConnections(Collection linkDescriptors) { >+ if (linkDescriptors.isEmpty()) { >+ return Collections.EMPTY_LIST; >+ } >+ List adapters = new LinkedList(); >+ for (Iterator linkDescriptorsIterator = linkDescriptors.iterator(); linkDescriptorsIterator.hasNext();) { >+ final LinkDescriptor nextLinkDescriptor = (LinkDescriptor) linkDescriptorsIterator.next(); >+ EditPart sourceEditPart = getEditPartFor(nextLinkDescriptor.getSource()); >+ EditPart targetEditPart = getEditPartFor(nextLinkDescriptor.getDestination()); >+ if (sourceEditPart == null || targetEditPart == null) { >+ continue; >+ } >+ CreateConnectionViewRequest.ConnectionViewDescriptor descriptor = new CreateConnectionViewRequest.ConnectionViewDescriptor(nextLinkDescriptor.getSemanticAdapter(), null, ViewUtil.APPEND, >+ false, ((IGraphicalEditPart) getHost()).getDiagramPreferencesHint()); >+ CreateConnectionViewRequest ccr = new CreateConnectionViewRequest(descriptor); >+ ccr.setType(RequestConstants.REQ_CONNECTION_START); >+ ccr.setSourceEditPart(sourceEditPart); >+ sourceEditPart.getCommand(ccr); >+ ccr.setTargetEditPart(targetEditPart); >+ ccr.setType(RequestConstants.REQ_CONNECTION_END); >+ Command cmd = targetEditPart.getCommand(ccr); >+ if (cmd != null && cmd.canExecute()) { >+ executeCommand(cmd); >+ IAdaptable viewAdapter = (IAdaptable) ccr.getNewObject(); >+ if (viewAdapter != null) { >+ adapters.add(viewAdapter); >+ } >+ } >+ } >+ return adapters; >+ } >+ >+ /** >+ * @generated >+ */ >+ private EditPart getEditPartFor(EObject modelElement) { >+ View view = (View) myEObject2ViewMap.get(modelElement); >+ if (view != null) { >+ return (EditPart) getHost().getViewer().getEditPartRegistry().get(view); >+ } >+ return null; >+ } >+ >+ /** >+ *@generated >+ */ >+ private void storeLinks(EObject container, Diagram diagram) { >+ EClass containerMetaclass = container.eClass(); >+ storeFeatureModelFacetLinks(container, containerMetaclass, diagram); >+ storeTypeModelFacetLinks(container, containerMetaclass); >+ } >+ >+ /** >+ * @generated >+ */ >+ private void storeTypeModelFacetLinks(EObject container, EClass containerMetaclass) { >+ storeTypeModelFacetLinks_InterfaceRealization_4001(container, containerMetaclass); >+ } >+ >+ /** >+ * @generated >+ */ >+ private void storeTypeModelFacetLinks_InterfaceRealization_4001(EObject container, EClass containerMetaclass) { >+ if (UMLPackage.eINSTANCE.getBehavioredClassifier().isSuperTypeOf(containerMetaclass)) { >+ for (Iterator values = ((BehavioredClassifier) container).getInterfaceRealizations().iterator(); values.hasNext();) { >+ EObject nextValue = ((EObject) values.next()); >+ int linkVID = UMLVisualIDRegistry.getLinkWithClassVisualID(nextValue); >+ if (InterfaceRealizationEditPart.VISUAL_ID == linkVID) { >+ Object structuralFeatureResult = ((InterfaceRealization) nextValue).getContract(); >+ if (structuralFeatureResult instanceof EObject) { >+ EObject dst = (EObject) structuralFeatureResult; >+ structuralFeatureResult = ((InterfaceRealization) nextValue).getImplementingClassifier(); >+ if (structuralFeatureResult instanceof EObject) { >+ EObject src = (EObject) structuralFeatureResult; >+ myLinkDescriptors.add(new LinkDescriptor(src, dst, nextValue, linkVID)); >+ } >+ } >+ } >+ } >+ } >+ } >+ >+ /** >+ *@generated >+ */ >+ private void storeFeatureModelFacetLinks(EObject container, EClass containerMetaclass, Diagram diagram) { >+ >+ if (UMLPackage.eINSTANCE.getPort().isSuperTypeOf(containerMetaclass)) { >+ for (Iterator destinations = ((Port) container).getProvideds().iterator(); destinations.hasNext();) { >+ EObject nextDestination = (EObject) destinations.next(); >+ myLinkDescriptors.add(new LinkDescriptor(container, nextDestination, UMLElementTypes.PortProvided_4006, PortProvidedEditPart.VISUAL_ID)); >+ >+ } >+ } >+ if (UMLPackage.eINSTANCE.getPort().isSuperTypeOf(containerMetaclass)) { >+ for (Iterator destinations = ((Port) container).getRequireds().iterator(); destinations.hasNext();) { >+ EObject nextDestination = (EObject) destinations.next(); >+ myLinkDescriptors.add(new LinkDescriptor(container, nextDestination, UMLElementTypes.PortRequired_4004, PortRequiredEditPart.VISUAL_ID)); >+ >+ } >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ private Diagram getDiagram() { >+ return ((View) getHost().getModel()).getDiagram(); >+ } >+ >+ /** >+ * @generated >+ */ >+ private class LinkDescriptor { >+ >+ /** >+ * @generated >+ */ >+ private EObject mySource; >+ >+ /** >+ * @generated >+ */ >+ private EObject myDestination; >+ >+ /** >+ * @generated >+ */ >+ private EObject myLinkElement; >+ >+ /** >+ * @generated >+ */ >+ private int myVisualID; >+ >+ /** >+ * @generated >+ */ >+ private IAdaptable mySemanticAdapter; >+ >+ /** >+ * @generated >+ */ >+ protected LinkDescriptor(EObject source, EObject destination, EObject linkElement, int linkVID) { >+ this(source, destination, linkVID); >+ myLinkElement = linkElement; >+ mySemanticAdapter = new EObjectAdapter(linkElement); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected LinkDescriptor(EObject source, EObject destination, IElementType elementType, int linkVID) { >+ this(source, destination, linkVID); >+ myLinkElement = null; >+ final IElementType elementTypeCopy = elementType; >+ mySemanticAdapter = new IAdaptable() { >+ >+ public Object getAdapter(Class adapter) { >+ if (IElementType.class.equals(adapter)) { >+ return elementTypeCopy; >+ } >+ return null; >+ } >+ }; >+ } >+ >+ /** >+ * @generated >+ */ >+ private LinkDescriptor(EObject source, EObject destination, int linkVID) { >+ mySource = source; >+ myDestination = destination; >+ myVisualID = linkVID; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject getSource() { >+ return mySource; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject getDestination() { >+ return myDestination; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject getLinkElement() { >+ return myLinkElement; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected int getVisualID() { >+ return myVisualID; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected IAdaptable getSemanticAdapter() { >+ return mySemanticAdapter; >+ } >+ } >+ >+} >Index: src/org/eclipse/uml2/diagram/component/view/factories/PortNameViewFactory.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/component/view/factories/PortNameViewFactory.java >diff -N src/org/eclipse/uml2/diagram/component/view/factories/PortNameViewFactory.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/component/view/factories/PortNameViewFactory.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,40 @@ >+package org.eclipse.uml2.diagram.component.view.factories; >+ >+import java.util.ArrayList; >+import java.util.List; >+import org.eclipse.core.runtime.IAdaptable; >+import org.eclipse.gmf.runtime.diagram.core.preferences.PreferencesHint; >+import org.eclipse.gmf.runtime.diagram.ui.view.factories.AbstractLabelViewFactory; >+import org.eclipse.gmf.runtime.notation.Node; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.gmf.runtime.diagram.ui.util.MeasurementUnitHelper; >+ >+import org.eclipse.gmf.runtime.draw2d.ui.mapmode.IMapMode; >+ >+import org.eclipse.gmf.runtime.notation.Location; >+ >+/** >+ * @generated >+ */ >+public class PortNameViewFactory extends AbstractLabelViewFactory { >+ >+ /** >+ * @generated >+ */ >+ public View createView(IAdaptable semanticAdapter, View containerView, String semanticHint, int index, boolean persisted, PreferencesHint preferencesHint) { >+ Node view = (Node) super.createView(semanticAdapter, containerView, semanticHint, index, persisted, preferencesHint); >+ Location location = (Location) view.getLayoutConstraint(); >+ IMapMode mapMode = MeasurementUnitHelper.getMapMode(containerView.getDiagram().getMeasurementUnit()); >+ location.setX(mapMode.DPtoLP(0)); >+ location.setY(mapMode.DPtoLP(5)); >+ return view; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected List createStyles(View view) { >+ List styles = new ArrayList(); >+ return styles; >+ } >+} >Index: src/org/eclipse/uml2/diagram/component/edit/parts/ComponentContentsEditPart.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/component/edit/parts/ComponentContentsEditPart.java >diff -N src/org/eclipse/uml2/diagram/component/edit/parts/ComponentContentsEditPart.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/component/edit/parts/ComponentContentsEditPart.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,76 @@ >+package org.eclipse.uml2.diagram.component.edit.parts; >+ >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.draw2d.IFigure; >+ >+import org.eclipse.gef.EditPolicy; >+ >+import org.eclipse.gmf.runtime.diagram.ui.editparts.ShapeCompartmentEditPart; >+ >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.ResizableCompartmentEditPolicy; >+ >+import org.eclipse.gmf.runtime.diagram.ui.figures.ResizableCompartmentFigure; >+ >+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout; >+ >+import org.eclipse.uml2.diagram.component.edit.policies.ComponentContentsCanonicalEditPolicy; >+import org.eclipse.uml2.diagram.component.edit.policies.ComponentContentsItemSemanticEditPolicy; >+ >+/** >+ * @generated >+ */ >+public class ComponentContentsEditPart extends ShapeCompartmentEditPart { >+ >+ /** >+ * @generated >+ */ >+ public static final int VISUAL_ID = 7001; >+ >+ /** >+ * @generated >+ */ >+ public ComponentContentsEditPart(View view) { >+ super(view); >+ } >+ >+ /** >+ * @generated >+ */ >+ public String getCompartmentName() { >+ return "contents"; >+ } >+ >+ /** >+ * @generated >+ */ >+ public IFigure createFigure() { >+ ResizableCompartmentFigure result = (ResizableCompartmentFigure) super.createFigure(); >+ result.setTitleVisibility(false); >+ return result; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void createDefaultEditPolicies() { >+ super.createDefaultEditPolicies(); >+ installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE, new ResizableCompartmentEditPolicy()); >+ installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE, new ComponentContentsItemSemanticEditPolicy()); >+ installEditPolicy(EditPolicyRoles.CREATION_ROLE, new CreationEditPolicy()); >+ installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE, new DragDropEditPolicy()); >+ installEditPolicy(EditPolicyRoles.CANONICAL_ROLE, new ComponentContentsCanonicalEditPolicy()); >+ >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setRatio(Double ratio) { >+ if (getFigure().getParent().getLayoutManager() instanceof ConstrainedToolbarLayout) { >+ super.setRatio(ratio); >+ } >+ } >+} >Index: src/org/eclipse/uml2/diagram/component/part/UMLDiagramEditorPlugin.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/component/part/UMLDiagramEditorPlugin.java >diff -N src/org/eclipse/uml2/diagram/component/part/UMLDiagramEditorPlugin.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/component/part/UMLDiagramEditorPlugin.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,221 @@ >+package org.eclipse.uml2.diagram.component.part; >+ >+import java.util.ArrayList; >+import java.util.List; >+ >+import org.eclipse.core.runtime.IPath; >+import org.eclipse.core.runtime.IStatus; >+import org.eclipse.core.runtime.Path; >+import org.eclipse.core.runtime.Status; >+ >+import org.eclipse.emf.common.notify.AdapterFactory; >+import org.eclipse.emf.edit.provider.ComposedAdapterFactory; >+import org.eclipse.emf.edit.provider.IItemLabelProvider; >+import org.eclipse.emf.edit.provider.ReflectiveItemProviderAdapterFactory; >+import org.eclipse.emf.edit.provider.resource.ResourceItemProviderAdapterFactory; >+import org.eclipse.emf.edit.ui.provider.ExtendedImageRegistry; >+import org.eclipse.gmf.runtime.diagram.core.preferences.PreferencesHint; >+import org.eclipse.jface.resource.ImageDescriptor; >+import org.eclipse.swt.graphics.Image; >+import org.eclipse.ui.plugin.AbstractUIPlugin; >+import org.osgi.framework.BundleContext; >+import org.eclipse.emf.ecore.provider.EcoreItemProviderAdapterFactory; >+ >+import org.eclipse.uml2.uml.edit.providers.UMLItemProviderAdapterFactory; >+ >+/** >+ * @generated >+ */ >+public class UMLDiagramEditorPlugin extends AbstractUIPlugin { >+ >+ /** >+ * @generated >+ */ >+ public static final String ID = "org.eclipse.uml2.diagram.component"; //$NON-NLS-1$ >+ >+ /** >+ * @generated >+ */ >+ public static final PreferencesHint DIAGRAM_PREFERENCES_HINT = new PreferencesHint(ID); >+ >+ /** >+ * @generated >+ */ >+ private static UMLDiagramEditorPlugin instance; >+ >+ /** >+ * @generated >+ */ >+ private ComposedAdapterFactory adapterFactory; >+ >+ /** >+ * @generated >+ */ >+ public UMLDiagramEditorPlugin() { >+ } >+ >+ /** >+ * @generated >+ */ >+ public void start(BundleContext context) throws Exception { >+ super.start(context); >+ instance = this; >+ PreferencesHint.registerPreferenceStore(DIAGRAM_PREFERENCES_HINT, getPreferenceStore()); >+ adapterFactory = createAdapterFactory(); >+ } >+ >+ /** >+ * @generated >+ */ >+ public void stop(BundleContext context) throws Exception { >+ adapterFactory.dispose(); >+ adapterFactory = null; >+ instance = null; >+ super.stop(context); >+ } >+ >+ /** >+ * @generated >+ */ >+ public static UMLDiagramEditorPlugin getInstance() { >+ return instance; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected ComposedAdapterFactory createAdapterFactory() { >+ List factories = new ArrayList(); >+ fillItemProviderFactories(factories); >+ return new ComposedAdapterFactory(factories); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void fillItemProviderFactories(List factories) { >+ factories.add(new UMLItemProviderAdapterFactory()); >+ factories.add(new EcoreItemProviderAdapterFactory()); >+ factories.add(new ResourceItemProviderAdapterFactory()); >+ factories.add(new ReflectiveItemProviderAdapterFactory()); >+ } >+ >+ /** >+ * @generated >+ */ >+ public AdapterFactory getItemProvidersAdapterFactory() { >+ return adapterFactory; >+ } >+ >+ /** >+ * @generated >+ */ >+ public ImageDescriptor getItemImageDescriptor(Object item) { >+ IItemLabelProvider labelProvider = (IItemLabelProvider) adapterFactory.adapt(item, IItemLabelProvider.class); >+ if (labelProvider != null) { >+ return ExtendedImageRegistry.getInstance().getImageDescriptor(labelProvider.getImage(item)); >+ } >+ return null; >+ } >+ >+ /** >+ * Returns an image descriptor for the image file at the given >+ * plug-in relative path. >+ * >+ * @generated >+ * @param path the path >+ * @return the image descriptor >+ */ >+ public static ImageDescriptor getBundledImageDescriptor(String path) { >+ return AbstractUIPlugin.imageDescriptorFromPlugin(ID, path); >+ } >+ >+ /** >+ * Respects images residing in any plug-in. If path is relative, >+ * then this bundle is looked up for the image, otherwise, for absolute >+ * path, first segment is taken as id of plug-in with image >+ * >+ * @generated >+ * @param path the path to image, either absolute (with plug-in id as first segment), or relative for bundled images >+ * @return the image descriptor >+ */ >+ public static ImageDescriptor findImageDescriptor(String path) { >+ final IPath p = new Path(path); >+ if (p.isAbsolute() && p.segmentCount() > 1) { >+ return AbstractUIPlugin.imageDescriptorFromPlugin(p.segment(0), p.removeFirstSegments(1).makeAbsolute().toString()); >+ } else { >+ return getBundledImageDescriptor(p.makeAbsolute().toString()); >+ } >+ } >+ >+ /** >+ * Returns an image for the image file at the given plug-in relative path. >+ * Client do not need to dispose this image. Images will be disposed automatically. >+ * >+ * @generated >+ * @param path the path >+ * @return image instance >+ */ >+ public Image getBundledImage(String path) { >+ Image image = getImageRegistry().get(path); >+ if (image == null) { >+ getImageRegistry().put(path, getBundledImageDescriptor(path)); >+ image = getImageRegistry().get(path); >+ } >+ return image; >+ } >+ >+ /** >+ * @generated >+ */ >+ public void logError(String error) { >+ logError(error, null); >+ } >+ >+ /** >+ * @param throwable actual error or null could be passed >+ * @generated >+ */ >+ public void logError(String error, Throwable throwable) { >+ if (error == null && throwable != null) { >+ error = throwable.getMessage(); >+ } >+ getLog().log(new Status(IStatus.ERROR, UMLDiagramEditorPlugin.ID, IStatus.OK, error, throwable)); >+ debug(error, throwable); >+ } >+ >+ /** >+ * @generated >+ */ >+ public void logInfo(String message) { >+ logInfo(message, null); >+ } >+ >+ /** >+ * @param throwable actual error or null could be passed >+ * @generated >+ */ >+ public void logInfo(String message, Throwable throwable) { >+ if (message == null && throwable != null) { >+ message = throwable.getMessage(); >+ } >+ getLog().log(new Status(IStatus.INFO, UMLDiagramEditorPlugin.ID, IStatus.OK, message, throwable)); >+ debug(message, throwable); >+ } >+ >+ /** >+ * @generated >+ */ >+ private void debug(String message, Throwable throwable) { >+ if (!isDebugging()) { >+ return; >+ } >+ if (message != null) { >+ System.err.println(message); >+ } >+ if (throwable != null) { >+ throwable.printStackTrace(); >+ } >+ } >+ >+} >Index: src/org/eclipse/uml2/diagram/component/view/factories/Interface2ViewFactory.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/component/view/factories/Interface2ViewFactory.java >diff -N src/org/eclipse/uml2/diagram/component/view/factories/Interface2ViewFactory.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/component/view/factories/Interface2ViewFactory.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,57 @@ >+package org.eclipse.uml2.diagram.component.view.factories; >+ >+import java.util.ArrayList; >+import java.util.List; >+ >+import org.eclipse.core.runtime.IAdaptable; >+ >+import org.eclipse.emf.ecore.EAnnotation; >+import org.eclipse.emf.ecore.EcoreFactory; >+ >+import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil; >+ >+import org.eclipse.gmf.runtime.diagram.ui.view.factories.AbstractShapeViewFactory; >+ >+import org.eclipse.gmf.runtime.notation.NotationFactory; >+import org.eclipse.gmf.runtime.notation.View; >+ >+import org.eclipse.uml2.diagram.component.edit.parts.InterfaceName2EditPart; >+import org.eclipse.uml2.diagram.component.edit.parts.PackageEditPart; >+import org.eclipse.uml2.diagram.component.part.UMLVisualIDRegistry; >+ >+/** >+ * @generated >+ */ >+public class Interface2ViewFactory extends AbstractShapeViewFactory { >+ >+ /** >+ * @generated >+ */ >+ protected List createStyles(View view) { >+ List styles = new ArrayList(); >+ styles.add(NotationFactory.eINSTANCE.createFontStyle()); >+ styles.add(NotationFactory.eINSTANCE.createDescriptionStyle()); >+ styles.add(NotationFactory.eINSTANCE.createFillStyle()); >+ styles.add(NotationFactory.eINSTANCE.createLineStyle()); >+ return styles; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void decorateView(View containerView, View view, IAdaptable semanticAdapter, String semanticHint, int index, boolean persisted) { >+ if (semanticHint == null) { >+ semanticHint = UMLVisualIDRegistry.getType(org.eclipse.uml2.diagram.component.edit.parts.Interface2EditPart.VISUAL_ID); >+ view.setType(semanticHint); >+ } >+ super.decorateView(containerView, view, semanticAdapter, semanticHint, index, persisted); >+ if (!PackageEditPart.MODEL_ID.equals(UMLVisualIDRegistry.getModelID(containerView))) { >+ EAnnotation shortcutAnnotation = EcoreFactory.eINSTANCE.createEAnnotation(); >+ shortcutAnnotation.setSource("Shortcut"); //$NON-NLS-1$ >+ shortcutAnnotation.getDetails().put("modelID", PackageEditPart.MODEL_ID); //$NON-NLS-1$ >+ view.getEAnnotations().add(shortcutAnnotation); >+ } >+ getViewService().createNode(semanticAdapter, view, UMLVisualIDRegistry.getType(InterfaceName2EditPart.VISUAL_ID), ViewUtil.APPEND, true, getPreferencesHint()); >+ } >+ >+} >Index: src/org/eclipse/uml2/diagram/component/view/factories/ComponentContents2ViewFactory.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/component/view/factories/ComponentContents2ViewFactory.java >diff -N src/org/eclipse/uml2/diagram/component/view/factories/ComponentContents2ViewFactory.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/component/view/factories/ComponentContents2ViewFactory.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,77 @@ >+package org.eclipse.uml2.diagram.component.view.factories; >+ >+import java.util.ArrayList; >+import java.util.List; >+ >+import org.eclipse.core.runtime.IAdaptable; >+ >+import org.eclipse.emf.ecore.EAnnotation; >+import org.eclipse.emf.ecore.EcoreFactory; >+ >+import org.eclipse.gmf.runtime.diagram.ui.view.factories.ListCompartmentViewFactory; >+ >+import org.eclipse.gmf.runtime.notation.DrawerStyle; >+import org.eclipse.gmf.runtime.notation.NotationFactory; >+import org.eclipse.gmf.runtime.notation.NotationPackage; >+import org.eclipse.gmf.runtime.notation.TitleStyle; >+import org.eclipse.gmf.runtime.notation.View; >+ >+import org.eclipse.uml2.diagram.component.edit.parts.PackageEditPart; >+import org.eclipse.uml2.diagram.component.part.UMLVisualIDRegistry; >+ >+/** >+ * @generated >+ */ >+public class ComponentContents2ViewFactory extends ListCompartmentViewFactory { >+ >+ /** >+ * @generated >+ */ >+ protected List createStyles(View view) { >+ List styles = new ArrayList(); >+ styles.add(NotationFactory.eINSTANCE.createDrawerStyle()); >+ styles.add(NotationFactory.eINSTANCE.createSortingStyle()); >+ styles.add(NotationFactory.eINSTANCE.createFilteringStyle()); >+ return styles; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void decorateView(View containerView, View view, IAdaptable semanticAdapter, String semanticHint, int index, boolean persisted) { >+ if (semanticHint == null) { >+ semanticHint = UMLVisualIDRegistry.getType(org.eclipse.uml2.diagram.component.edit.parts.ComponentContents2EditPart.VISUAL_ID); >+ view.setType(semanticHint); >+ } >+ super.decorateView(containerView, view, semanticAdapter, semanticHint, index, persisted); >+ setupCompartmentTitle(view); >+ setupCompartmentCollapsed(view); >+ if (!PackageEditPart.MODEL_ID.equals(UMLVisualIDRegistry.getModelID(containerView))) { >+ EAnnotation shortcutAnnotation = EcoreFactory.eINSTANCE.createEAnnotation(); >+ shortcutAnnotation.setSource("Shortcut"); //$NON-NLS-1$ >+ shortcutAnnotation.getDetails().put("modelID", PackageEditPart.MODEL_ID); //$NON-NLS-1$ >+ view.getEAnnotations().add(shortcutAnnotation); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setupCompartmentTitle(View view) { >+ TitleStyle titleStyle = (TitleStyle) view.getStyle(NotationPackage.eINSTANCE.getTitleStyle()); >+ if (titleStyle != null) { >+ titleStyle.setShowTitle(true); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setupCompartmentCollapsed(View view) { >+ DrawerStyle drawerStyle = (DrawerStyle) view.getStyle(NotationPackage.eINSTANCE.getDrawerStyle()); >+ if (drawerStyle != null) { >+ drawerStyle.setCollapsed(false); >+ } >+ } >+ >+} >Index: src/org/eclipse/uml2/diagram/component/sheet/UMLPropertySection.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/component/sheet/UMLPropertySection.java >diff -N src/org/eclipse/uml2/diagram/component/sheet/UMLPropertySection.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/component/sheet/UMLPropertySection.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,112 @@ >+package org.eclipse.uml2.diagram.component.sheet; >+ >+import java.util.ArrayList; >+import java.util.Iterator; >+ >+import org.eclipse.ui.IWorkbenchPart; >+import org.eclipse.core.runtime.IAdaptable; >+import org.eclipse.emf.common.notify.AdapterFactory; >+import org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain; >+import org.eclipse.emf.edit.provider.IItemPropertySource; >+import org.eclipse.emf.edit.ui.provider.PropertySource; >+import org.eclipse.jface.viewers.ISelection; >+import org.eclipse.jface.viewers.StructuredSelection; >+import org.eclipse.emf.transaction.TransactionalEditingDomain; >+ >+import org.eclipse.emf.transaction.util.TransactionUtil; >+ >+import org.eclipse.gef.EditPart; >+ >+import org.eclipse.gmf.runtime.diagram.ui.properties.sections.AdvancedPropertySection; >+ >+import org.eclipse.gmf.runtime.notation.View; >+ >+import org.eclipse.ui.views.properties.IPropertySource; >+import org.eclipse.ui.views.properties.IPropertySourceProvider; >+ >+/** >+ * @generated >+ */ >+public class UMLPropertySection extends AdvancedPropertySection implements IPropertySourceProvider { >+ >+ /** >+ * @generated >+ */ >+ public IPropertySource getPropertySource(Object object) { >+ if (object instanceof IPropertySource) { >+ return (IPropertySource) object; >+ } >+ AdapterFactory af = getAdapterFactory(object); >+ if (af != null) { >+ IItemPropertySource ips = (IItemPropertySource) af.adapt(object, IItemPropertySource.class); >+ if (ips != null) { >+ return new PropertySource(object, ips); >+ } >+ } >+ if (object instanceof IAdaptable) { >+ return (IPropertySource) ((IAdaptable) object).getAdapter(IPropertySource.class); >+ } >+ return null; >+ } >+ >+ /** >+ * Modify/unwrap selection. >+ * @generated >+ */ >+ protected Object transformSelection(Object selected) { >+ if (selected instanceof EditPart) { >+ Object model = ((EditPart) selected).getModel(); >+ return model instanceof View ? ((View) model).getElement() : null; >+ } >+ if (selected instanceof View) { >+ return ((View) selected).getElement(); >+ } >+ if (selected instanceof IAdaptable) { >+ View view = (View) ((IAdaptable) selected).getAdapter(View.class); >+ if (view != null) { >+ return view.getElement(); >+ } >+ } >+ return selected; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected IPropertySourceProvider getPropertySourceProvider() { >+ return this; >+ } >+ >+ /** >+ * @generated >+ */ >+ public void setInput(IWorkbenchPart part, ISelection selection) { >+ if (selection.isEmpty() || false == selection instanceof StructuredSelection) { >+ super.setInput(part, selection); >+ return; >+ } >+ final StructuredSelection structuredSelection = ((StructuredSelection) selection); >+ ArrayList transformedSelection = new ArrayList(structuredSelection.size()); >+ for (Iterator it = structuredSelection.iterator(); it.hasNext();) { >+ Object r = transformSelection(it.next()); >+ if (r != null) { >+ transformedSelection.add(r); >+ } >+ } >+ super.setInput(part, new StructuredSelection(transformedSelection)); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected AdapterFactory getAdapterFactory(Object object) { >+ if (getEditingDomain() instanceof AdapterFactoryEditingDomain) { >+ return ((AdapterFactoryEditingDomain) getEditingDomain()).getAdapterFactory(); >+ } >+ TransactionalEditingDomain editingDomain = TransactionUtil.getEditingDomain(object); >+ if (editingDomain != null) { >+ return ((AdapterFactoryEditingDomain) editingDomain).getAdapterFactory(); >+ } >+ return null; >+ } >+} >Index: src/org/eclipse/uml2/diagram/component/edit/helpers/ClassEditHelper.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/component/edit/helpers/ClassEditHelper.java >diff -N src/org/eclipse/uml2/diagram/component/edit/helpers/ClassEditHelper.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/component/edit/helpers/ClassEditHelper.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,7 @@ >+package org.eclipse.uml2.diagram.component.edit.helpers; >+ >+/** >+ * @generated >+ */ >+public class ClassEditHelper extends UMLBaseEditHelper { >+} >Index: src/org/eclipse/uml2/diagram/component/edit/policies/UMLTextNonResizableEditPolicy.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/component/edit/policies/UMLTextNonResizableEditPolicy.java >diff -N src/org/eclipse/uml2/diagram/component/edit/policies/UMLTextNonResizableEditPolicy.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/component/edit/policies/UMLTextNonResizableEditPolicy.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,207 @@ >+package org.eclipse.uml2.diagram.component.edit.policies; >+ >+import java.util.Collections; >+import java.util.List; >+import org.eclipse.draw2d.ColorConstants; >+import org.eclipse.draw2d.Figure; >+import org.eclipse.draw2d.Graphics; >+import org.eclipse.draw2d.IFigure; >+import org.eclipse.draw2d.Label; >+import org.eclipse.draw2d.RectangleFigure; >+import org.eclipse.draw2d.geometry.Rectangle; >+import org.eclipse.gef.GraphicalEditPart; >+import org.eclipse.gef.LayerConstants; >+import org.eclipse.gef.handles.MoveHandle; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.NonResizableEditPolicyEx; >+import org.eclipse.gmf.runtime.diagram.ui.tools.DragEditPartsTrackerEx; >+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel; >+ >+/** >+ * @generated >+ */ >+public class UMLTextNonResizableEditPolicy extends NonResizableEditPolicyEx { >+ >+ /** >+ * @generated >+ */ >+ private IFigure selectionFeedbackFigure; >+ >+ /** >+ * @generated >+ */ >+ private IFigure focusFeedbackFigure; >+ >+ /** >+ * @generated >+ */ >+ protected void showPrimarySelection() { >+ if (getHostFigure() instanceof WrapLabel) { >+ ((WrapLabel) getHostFigure()).setSelected(true); >+ ((WrapLabel) getHostFigure()).setFocus(true); >+ } else { >+ showSelection(); >+ showFocus(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void showSelection() { >+ if (getHostFigure() instanceof WrapLabel) { >+ ((WrapLabel) getHostFigure()).setSelected(true); >+ ((WrapLabel) getHostFigure()).setFocus(false); >+ } else { >+ hideSelection(); >+ addFeedback(selectionFeedbackFigure = createSelectionFeedbackFigure()); >+ refreshSelectionFeedback(); >+ hideFocus(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void hideSelection() { >+ if (getHostFigure() instanceof WrapLabel) { >+ ((WrapLabel) getHostFigure()).setSelected(false); >+ ((WrapLabel) getHostFigure()).setFocus(false); >+ } else { >+ if (selectionFeedbackFigure != null) { >+ removeFeedback(selectionFeedbackFigure); >+ selectionFeedbackFigure = null; >+ } >+ hideFocus(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void showFocus() { >+ if (getHostFigure() instanceof WrapLabel) { >+ ((WrapLabel) getHostFigure()).setFocus(true); >+ } else { >+ hideFocus(); >+ addFeedback(focusFeedbackFigure = createFocusFeedbackFigure()); >+ refreshFocusFeedback(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void hideFocus() { >+ if (getHostFigure() instanceof WrapLabel) { >+ ((WrapLabel) getHostFigure()).setFocus(false); >+ } else { >+ if (focusFeedbackFigure != null) { >+ removeFeedback(focusFeedbackFigure); >+ focusFeedbackFigure = null; >+ } >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected IFigure getFeedbackLayer() { >+ return getLayer(LayerConstants.SCALED_FEEDBACK_LAYER); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Rectangle getFeedbackBounds() { >+ Rectangle bounds; >+ if (getHostFigure() instanceof Label) { >+ bounds = ((Label) getHostFigure()).getTextBounds(); >+ bounds.intersect(getHostFigure().getBounds()); >+ } else { >+ bounds = getHostFigure().getBounds().getCopy(); >+ } >+ getHostFigure().getParent().translateToAbsolute(bounds); >+ getFeedbackLayer().translateToRelative(bounds); >+ return bounds; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected IFigure createSelectionFeedbackFigure() { >+ if (getHostFigure() instanceof Label) { >+ Label feedbackFigure = new Label(); >+ feedbackFigure.setOpaque(true); >+ feedbackFigure.setBackgroundColor(ColorConstants.menuBackgroundSelected); >+ feedbackFigure.setForegroundColor(ColorConstants.menuForegroundSelected); >+ return feedbackFigure; >+ } else { >+ RectangleFigure feedbackFigure = new RectangleFigure(); >+ feedbackFigure.setFill(false); >+ return feedbackFigure; >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected IFigure createFocusFeedbackFigure() { >+ return new Figure() { >+ >+ protected void paintFigure(Graphics graphics) { >+ graphics.drawFocus(getBounds().getResized(-1, -1)); >+ } >+ }; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void updateLabel(Label target) { >+ Label source = (Label) getHostFigure(); >+ target.setText(source.getText()); >+ target.setTextAlignment(source.getTextAlignment()); >+ target.setFont(source.getFont()); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshSelectionFeedback() { >+ if (selectionFeedbackFigure != null) { >+ if (selectionFeedbackFigure instanceof Label) { >+ updateLabel((Label) selectionFeedbackFigure); >+ selectionFeedbackFigure.setBounds(getFeedbackBounds()); >+ } else { >+ selectionFeedbackFigure.setBounds(getFeedbackBounds().expand(5, 5)); >+ } >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshFocusFeedback() { >+ if (focusFeedbackFigure != null) { >+ focusFeedbackFigure.setBounds(getFeedbackBounds()); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ public void refreshFeedback() { >+ refreshSelectionFeedback(); >+ refreshFocusFeedback(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected List createSelectionHandles() { >+ MoveHandle moveHandle = new MoveHandle((GraphicalEditPart) getHost()); >+ moveHandle.setBorder(null); >+ moveHandle.setDragTracker(new DragEditPartsTrackerEx(getHost())); >+ return Collections.singletonList(moveHandle); >+ } >+} >Index: src/org/eclipse/uml2/diagram/component/view/factories/ComponentViewFactory.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/component/view/factories/ComponentViewFactory.java >diff -N src/org/eclipse/uml2/diagram/component/view/factories/ComponentViewFactory.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/component/view/factories/ComponentViewFactory.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,59 @@ >+package org.eclipse.uml2.diagram.component.view.factories; >+ >+import java.util.ArrayList; >+import java.util.List; >+ >+import org.eclipse.core.runtime.IAdaptable; >+ >+import org.eclipse.emf.ecore.EAnnotation; >+import org.eclipse.emf.ecore.EcoreFactory; >+ >+import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil; >+ >+import org.eclipse.gmf.runtime.diagram.ui.view.factories.AbstractShapeViewFactory; >+ >+import org.eclipse.gmf.runtime.notation.NotationFactory; >+import org.eclipse.gmf.runtime.notation.View; >+ >+import org.eclipse.uml2.diagram.component.edit.parts.ComponentContentsEditPart; >+import org.eclipse.uml2.diagram.component.edit.parts.ComponentName2EditPart; >+import org.eclipse.uml2.diagram.component.edit.parts.PackageEditPart; >+import org.eclipse.uml2.diagram.component.part.UMLVisualIDRegistry; >+ >+/** >+ * @generated >+ */ >+public class ComponentViewFactory extends AbstractShapeViewFactory { >+ >+ /** >+ * @generated >+ */ >+ protected List createStyles(View view) { >+ List styles = new ArrayList(); >+ styles.add(NotationFactory.eINSTANCE.createFontStyle()); >+ styles.add(NotationFactory.eINSTANCE.createDescriptionStyle()); >+ styles.add(NotationFactory.eINSTANCE.createFillStyle()); >+ styles.add(NotationFactory.eINSTANCE.createLineStyle()); >+ return styles; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void decorateView(View containerView, View view, IAdaptable semanticAdapter, String semanticHint, int index, boolean persisted) { >+ if (semanticHint == null) { >+ semanticHint = UMLVisualIDRegistry.getType(org.eclipse.uml2.diagram.component.edit.parts.ComponentEditPart.VISUAL_ID); >+ view.setType(semanticHint); >+ } >+ super.decorateView(containerView, view, semanticAdapter, semanticHint, index, persisted); >+ if (!PackageEditPart.MODEL_ID.equals(UMLVisualIDRegistry.getModelID(containerView))) { >+ EAnnotation shortcutAnnotation = EcoreFactory.eINSTANCE.createEAnnotation(); >+ shortcutAnnotation.setSource("Shortcut"); //$NON-NLS-1$ >+ shortcutAnnotation.getDetails().put("modelID", PackageEditPart.MODEL_ID); //$NON-NLS-1$ >+ view.getEAnnotations().add(shortcutAnnotation); >+ } >+ getViewService().createNode(semanticAdapter, view, UMLVisualIDRegistry.getType(ComponentName2EditPart.VISUAL_ID), ViewUtil.APPEND, true, getPreferencesHint()); >+ getViewService().createNode(semanticAdapter, view, UMLVisualIDRegistry.getType(ComponentContentsEditPart.VISUAL_ID), ViewUtil.APPEND, true, getPreferencesHint()); >+ } >+ >+} >Index: src/org/eclipse/uml2/diagram/component/edit/helpers/InterfaceRealizationEditHelper.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/component/edit/helpers/InterfaceRealizationEditHelper.java >diff -N src/org/eclipse/uml2/diagram/component/edit/helpers/InterfaceRealizationEditHelper.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/component/edit/helpers/InterfaceRealizationEditHelper.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,7 @@ >+package org.eclipse.uml2.diagram.component.edit.helpers; >+ >+/** >+ * @generated >+ */ >+public class InterfaceRealizationEditHelper extends UMLBaseEditHelper { >+} >Index: plugin.properties >=================================================================== >RCS file: plugin.properties >diff -N plugin.properties >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ plugin.properties 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,19 @@ >+pluginName=UML Plugin >+providerName=Sample Plugin Provider, Inc >+ >+editorName=UMLComponent Diagram Editor >+newWizardName=UMLComponent Diagram >+newWizardDesc=Creates UMLComponent diagram. >+ >+initDiagramActionLabel=Initialize umlcomponent_diagram diagram file >+loadResourceActionLabel=Load Resource... >+ >+navigatorContentName=*.umlcomponent_diagram diagram contents >+### >+# Property Sheet >+ >+tab.appearance=Appearance >+tab.diagram=Rulers & Grid >+tab.domain=Core >+### >+ >Index: icons/linkSourceNavigatorGroup.gif >=================================================================== >RCS file: icons/linkSourceNavigatorGroup.gif >diff -N icons/linkSourceNavigatorGroup.gif >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ icons/linkSourceNavigatorGroup.gif 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,5 @@ >+GIF89aÕÿÿr/GøØf'øÐxøàøÐf>2èÆøè°èÐøðÈÿÿÿÃ6úöºøà øØ?]FøèÒ«üößãϹ´2àÀxr+ðØ?¥l$yO@_l$?R¼2ï߯¼ 2à 6!ù,s@pH,?È#âèh:¨T0ô4® >+à?p©Ñd¢Y`B¡p8G AØ%%HÁçW¶ _B???B¥¦¥ B®©C³´µI·¸FA;Content-Type: image/gif >+ >+GIF89aÕÿÿr/GøØf'øÐxøàøÐf>2èÆøè°èÐøðÈÿÿÿÃ6úöºøà øØ?]FøèÒ«üößãϹ´2àÀxr+ðØ?¥l$yO@_l$?R¼2ï߯¼ 2à 6!ù,s@pH,?È#âèh:¨T0ô4® >+à?p©Ñd¢Y`B¡p8G AØ%%HÁçW¶ _B???B¥¦¥ B®©C³´µI·¸FA; >Index: src/org/eclipse/uml2/diagram/component/part/UMLPaletteFactory.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/component/part/UMLPaletteFactory.java >diff -N src/org/eclipse/uml2/diagram/component/part/UMLPaletteFactory.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/component/part/UMLPaletteFactory.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,242 @@ >+package org.eclipse.uml2.diagram.component.part; >+ >+import java.util.List; >+import org.eclipse.gef.Tool; >+import org.eclipse.gef.palette.PaletteContainer; >+import org.eclipse.gef.palette.PaletteRoot; >+import org.eclipse.gef.palette.ToolEntry; >+import org.eclipse.jface.resource.ImageDescriptor; >+import java.util.ArrayList; >+ >+import org.eclipse.gef.palette.PaletteGroup; >+ >+import org.eclipse.gmf.runtime.diagram.ui.tools.UnspecifiedTypeConnectionTool; >+import org.eclipse.gmf.runtime.diagram.ui.tools.UnspecifiedTypeCreationTool; >+ >+import org.eclipse.uml2.diagram.component.providers.UMLElementTypes; >+ >+/** >+ * @generated >+ */ >+public class UMLPaletteFactory { >+ >+ /** >+ * @generated >+ */ >+ public void fillPalette(PaletteRoot paletteRoot) { >+ paletteRoot.add(createNodes1Group()); >+ paletteRoot.add(createLinks2Group()); >+ } >+ >+ /** >+ * @generated >+ */ >+ private PaletteContainer createNodes1Group() { >+ PaletteContainer paletteContainer = new PaletteGroup("Nodes"); >+ paletteContainer.setDescription("Diagram Nodes"); >+ paletteContainer.add(createComponent1CreationTool()); >+ paletteContainer.add(createArtifact2CreationTool()); >+ paletteContainer.add(createInterface3CreationTool()); >+ paletteContainer.add(createPort4CreationTool()); >+ paletteContainer.add(createClass5CreationTool()); >+ return paletteContainer; >+ } >+ >+ /** >+ * @generated >+ */ >+ private PaletteContainer createLinks2Group() { >+ PaletteContainer paletteContainer = new PaletteGroup("Links"); >+ paletteContainer.setDescription("Diagram Links"); >+ paletteContainer.add(createProvidedInterface1CreationTool()); >+ paletteContainer.add(createRequiredInterface2CreationTool()); >+ return paletteContainer; >+ } >+ >+ /** >+ * @generated >+ */ >+ private ToolEntry createComponent1CreationTool() { >+ ImageDescriptor smallImage; >+ ImageDescriptor largeImage; >+ >+ smallImage = UMLElementTypes.getImageDescriptor(UMLElementTypes.Component_2001); >+ >+ largeImage = smallImage; >+ >+ final List elementTypes = new ArrayList(); >+ elementTypes.add(UMLElementTypes.Component_2001); >+ elementTypes.add(UMLElementTypes.Component_3001); >+ ToolEntry result = new NodeToolEntry("Component", "Create Component", smallImage, largeImage, elementTypes); >+ >+ return result; >+ } >+ >+ /** >+ * @generated >+ */ >+ private ToolEntry createArtifact2CreationTool() { >+ ImageDescriptor smallImage; >+ ImageDescriptor largeImage; >+ >+ smallImage = UMLElementTypes.getImageDescriptor(UMLElementTypes.Artifact_3003); >+ >+ largeImage = smallImage; >+ >+ final List elementTypes = new ArrayList(); >+ elementTypes.add(UMLElementTypes.Artifact_3003); >+ elementTypes.add(UMLElementTypes.Artifact_2002); >+ ToolEntry result = new NodeToolEntry("Artifact", "Create Artifact", smallImage, largeImage, elementTypes); >+ >+ return result; >+ } >+ >+ /** >+ * @generated >+ */ >+ private ToolEntry createInterface3CreationTool() { >+ ImageDescriptor smallImage; >+ ImageDescriptor largeImage; >+ >+ smallImage = UMLElementTypes.getImageDescriptor(UMLElementTypes.Interface_3005); >+ >+ largeImage = smallImage; >+ >+ final List elementTypes = new ArrayList(); >+ elementTypes.add(UMLElementTypes.Interface_3005); >+ elementTypes.add(UMLElementTypes.Interface_2003); >+ ToolEntry result = new NodeToolEntry("Interface", "Create Component Interface", smallImage, largeImage, elementTypes); >+ >+ return result; >+ } >+ >+ /** >+ * @generated >+ */ >+ private ToolEntry createPort4CreationTool() { >+ ImageDescriptor smallImage; >+ ImageDescriptor largeImage; >+ >+ smallImage = UMLElementTypes.getImageDescriptor(UMLElementTypes.Port_3002); >+ >+ largeImage = smallImage; >+ >+ final List elementTypes = new ArrayList(); >+ elementTypes.add(UMLElementTypes.Port_3002); >+ ToolEntry result = new NodeToolEntry("Port", "Create Port", smallImage, largeImage, elementTypes); >+ >+ return result; >+ } >+ >+ /** >+ * @generated >+ */ >+ private ToolEntry createClass5CreationTool() { >+ ImageDescriptor smallImage; >+ ImageDescriptor largeImage; >+ >+ smallImage = UMLElementTypes.getImageDescriptor(UMLElementTypes.Class_3004); >+ >+ largeImage = smallImage; >+ >+ final List elementTypes = new ArrayList(); >+ elementTypes.add(UMLElementTypes.Class_3004); >+ elementTypes.add(UMLElementTypes.Class_2004); >+ ToolEntry result = new NodeToolEntry("Class", "Create Class", smallImage, largeImage, elementTypes); >+ >+ return result; >+ } >+ >+ /** >+ * @generated >+ */ >+ private ToolEntry createProvidedInterface1CreationTool() { >+ ImageDescriptor smallImage; >+ ImageDescriptor largeImage; >+ >+ smallImage = UMLElementTypes.getImageDescriptor(UMLElementTypes.InterfaceRealization_4001); >+ >+ largeImage = smallImage; >+ >+ final List relationshipTypes = new ArrayList(); >+ relationshipTypes.add(UMLElementTypes.InterfaceRealization_4001); >+ relationshipTypes.add(UMLElementTypes.PortProvided_4006); >+ ToolEntry result = new LinkToolEntry("Provided Interface", "Create Provided Interface", smallImage, largeImage, relationshipTypes); >+ >+ return result; >+ } >+ >+ /** >+ * @generated >+ */ >+ private ToolEntry createRequiredInterface2CreationTool() { >+ ImageDescriptor smallImage; >+ ImageDescriptor largeImage; >+ >+ smallImage = UMLElementTypes.getImageDescriptor(UMLElementTypes.PortRequired_4004); >+ >+ largeImage = smallImage; >+ >+ final List relationshipTypes = new ArrayList(); >+ relationshipTypes.add(UMLElementTypes.PortRequired_4004); >+ ToolEntry result = new LinkToolEntry("Required Interface", "Create Required Interface", smallImage, largeImage, relationshipTypes); >+ >+ return result; >+ } >+ >+ /** >+ * @generated >+ */ >+ private static class NodeToolEntry extends ToolEntry { >+ >+ /** >+ * @generated >+ */ >+ private final List elementTypes; >+ >+ /** >+ * @generated >+ */ >+ private NodeToolEntry(String title, String description, ImageDescriptor smallIcon, ImageDescriptor largeIcon, List elementTypes) { >+ super(title, description, smallIcon, largeIcon); >+ this.elementTypes = elementTypes; >+ } >+ >+ /** >+ * @generated >+ */ >+ public Tool createTool() { >+ Tool tool = new UnspecifiedTypeCreationTool(elementTypes); >+ tool.setProperties(getToolProperties()); >+ return tool; >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ private static class LinkToolEntry extends ToolEntry { >+ >+ /** >+ * @generated >+ */ >+ private final List relationshipTypes; >+ >+ /** >+ * @generated >+ */ >+ private LinkToolEntry(String title, String description, ImageDescriptor smallIcon, ImageDescriptor largeIcon, List relationshipTypes) { >+ super(title, description, smallIcon, largeIcon); >+ this.relationshipTypes = relationshipTypes; >+ } >+ >+ /** >+ * @generated >+ */ >+ public Tool createTool() { >+ Tool tool = new UnspecifiedTypeConnectionTool(relationshipTypes); >+ tool.setProperties(getToolProperties()); >+ return tool; >+ } >+ } >+} >Index: src/org/eclipse/uml2/diagram/component/edit/policies/ClassItemSemanticEditPolicy.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/component/edit/policies/ClassItemSemanticEditPolicy.java >diff -N src/org/eclipse/uml2/diagram/component/edit/policies/ClassItemSemanticEditPolicy.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/component/edit/policies/ClassItemSemanticEditPolicy.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,120 @@ >+package org.eclipse.uml2.diagram.component.edit.policies; >+ >+import org.eclipse.gef.commands.Command; >+import org.eclipse.gmf.runtime.emf.type.core.commands.DestroyElementCommand; >+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateRelationshipRequest; >+import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest; >+import org.eclipse.emf.ecore.EObject; >+import org.eclipse.emf.ecore.EAnnotation; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.emf.ecore.EClass; >+ >+import org.eclipse.gef.commands.UnexecutableCommand; >+ >+import org.eclipse.gmf.runtime.emf.type.core.commands.CreateElementCommand; >+ >+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest; >+ >+import org.eclipse.uml2.diagram.component.providers.UMLElementTypes; >+import org.eclipse.uml2.uml.Port; >+import org.eclipse.uml2.uml.UMLPackage; >+ >+/** >+ * @generated >+ */ >+public class ClassItemSemanticEditPolicy extends UMLBaseItemSemanticEditPolicy { >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCommand(CreateElementRequest req) { >+ if (UMLElementTypes.Port_3002 == req.getElementType()) { >+ if (req.getContainmentFeature() == null) { >+ req.setContainmentFeature(UMLPackage.eINSTANCE.getStructuredClassifier_OwnedAttribute()); >+ } >+ return getMSLWrapper(new CreatePort_3002Command(req)); >+ } >+ return super.getCreateCommand(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ private static class CreatePort_3002Command extends CreateElementCommand { >+ >+ /** >+ * @generated >+ */ >+ public CreatePort_3002Command(CreateElementRequest req) { >+ super(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EClass getEClassToEdit() { >+ return UMLPackage.eINSTANCE.getClass_(); >+ }; >+ >+ /** >+ * @generated >+ */ >+ protected EObject getElementToEdit() { >+ EObject container = ((CreateElementRequest) getRequest()).getContainer(); >+ if (container instanceof View) { >+ container = ((View) container).getElement(); >+ } >+ return container; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject doDefaultElementCreation() { >+ Port newElement = (Port) super.doDefaultElementCreation(); >+ if (newElement != null) { >+ UMLElementTypes.Initializers.Port_3002.init(newElement); >+ } >+ return newElement; >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getDestroyElementCommand(DestroyElementRequest req) { >+ return getMSLWrapper(new DestroyElementCommand(req) { >+ >+ protected EObject getElementToDestroy() { >+ View view = (View) getHost().getModel(); >+ EAnnotation annotation = view.getEAnnotation("Shortcut"); //$NON-NLS-1$ >+ if (annotation != null) { >+ return view; >+ } >+ return super.getElementToDestroy(); >+ } >+ >+ }); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateRelationshipCommand(CreateRelationshipRequest req) { >+ if (UMLElementTypes.InterfaceRealization_4001 == req.getElementType()) { >+ return req.getTarget() == null ? getCreateStartOutgoingInterfaceRealization4001Command(req) : null; >+ } >+ return super.getCreateRelationshipCommand(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateStartOutgoingInterfaceRealization4001Command(CreateRelationshipRequest req) { >+ if (!UMLBaseItemSemanticEditPolicy.LinkConstraints.InterfaceRealization_4001.canCreateLink(req, false)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ return new Command() { >+ }; >+ } >+} >Index: icons/outgoingLinksNavigatorGroup.gif >=================================================================== >RCS file: icons/outgoingLinksNavigatorGroup.gif >diff -N icons/outgoingLinksNavigatorGroup.gif >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ icons/outgoingLinksNavigatorGroup.gif 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,5 @@ >+GIF89aÕÿÿr/GøØf'øÐxøàøÐf>2èÆøè°èÐøðÈÿÿÿÃ6úöºøà øØ?]FøèÒ«üößãϹ´2àÀxr+ðØ?¥l$yO@_l$?R¼2ï߯¼ 2à 6!ù,s@pH,?È#âèh:¨T0ô4® >+à?p©Ñd¢Y`B¡p8G AØ%%HÁçW¶ _B???B¥¦¥ B®©C³´µI·¸FA;Content-Type: image/gif >+ >+GIF89aÕÿÿr/GøØf'øÐxøàøÐf>2èÆøè°èÐøðÈÿÿÿÃ6úöºøà øØ?]FøèÒ«üößãϹ´2àÀxr+ðØ?¥l$yO@_l$?R¼2ï߯¼ 2à 6!ù,s@pH,?È#âèh:¨T0ô4® >+à?p©Ñd¢Y`B¡p8G AØ%%HÁçW¶ _B???B¥¦¥ B®©C³´µI·¸FA; >Index: src/org/eclipse/uml2/diagram/component/sheet/UMLSheetLabelProvider.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/component/sheet/UMLSheetLabelProvider.java >diff -N src/org/eclipse/uml2/diagram/component/sheet/UMLSheetLabelProvider.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/component/sheet/UMLSheetLabelProvider.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,80 @@ >+package org.eclipse.uml2.diagram.component.sheet; >+ >+import org.eclipse.gef.EditPart; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.jface.viewers.IStructuredSelection; >+import org.eclipse.swt.graphics.Image; >+import org.eclipse.uml2.diagram.component.navigator.UMLNavigatorGroup; >+import org.eclipse.uml2.diagram.component.part.UMLDiagramEditorPlugin; >+import org.eclipse.core.runtime.IAdaptable; >+ >+import org.eclipse.emf.edit.ui.provider.AdapterFactoryLabelProvider; >+ >+import org.eclipse.jface.viewers.DecoratingLabelProvider; >+ >+/** >+ * @generated >+ */ >+public class UMLSheetLabelProvider extends DecoratingLabelProvider { >+ >+ /** >+ * @generated >+ */ >+ public UMLSheetLabelProvider() { >+ super(new AdapterFactoryLabelProvider(UMLDiagramEditorPlugin.getInstance().getItemProvidersAdapterFactory()), null); >+ } >+ >+ /** >+ * @generated >+ */ >+ public String getText(Object element) { >+ Object selected = unwrap(element); >+ if (selected instanceof UMLNavigatorGroup) { >+ return ((UMLNavigatorGroup) selected).getGroupName(); >+ } >+ return super.getText(selected); >+ } >+ >+ /** >+ * @generated >+ */ >+ public Image getImage(Object element) { >+ return super.getImage(unwrap(element)); >+ } >+ >+ /** >+ * @generated >+ */ >+ private Object unwrap(Object element) { >+ if (element instanceof IStructuredSelection) { >+ return unwrap(((IStructuredSelection) element).getFirstElement()); >+ } >+ if (element instanceof EditPart) { >+ return unwrapEditPart((EditPart) element); >+ } >+ if (element instanceof IAdaptable) { >+ View view = (View) ((IAdaptable) element).getAdapter(View.class); >+ if (view != null) { >+ return unwrapView(view); >+ } >+ } >+ return element; >+ } >+ >+ /** >+ * @generated >+ */ >+ private Object unwrapEditPart(EditPart p) { >+ if (p.getModel() instanceof View) { >+ return unwrapView((View) p.getModel()); >+ } >+ return p.getModel(); >+ } >+ >+ /** >+ * @generated >+ */ >+ private Object unwrapView(View view) { >+ return view.getElement() == null ? view : view.getElement(); >+ } >+} >Index: src/org/eclipse/uml2/diagram/component/edit/parts/ClassEditPart.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/component/edit/parts/ClassEditPart.java >diff -N src/org/eclipse/uml2/diagram/component/edit/parts/ClassEditPart.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/component/edit/parts/ClassEditPart.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,304 @@ >+package org.eclipse.uml2.diagram.component.edit.parts; >+ >+import org.eclipse.draw2d.IFigure; >+import org.eclipse.draw2d.PositionConstants; >+import org.eclipse.draw2d.StackLayout; >+ >+import org.eclipse.gef.EditPart; >+import org.eclipse.gef.EditPolicy; >+import org.eclipse.gef.Request; >+ >+import org.eclipse.gef.commands.Command; >+ >+import org.eclipse.gef.editpolicies.LayoutEditPolicy; >+import org.eclipse.gef.editpolicies.NonResizableEditPolicy; >+ >+import org.eclipse.gef.requests.CreateRequest; >+ >+import org.eclipse.gmf.runtime.diagram.ui.editparts.AbstractBorderedShapeEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart; >+ >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles; >+ >+import org.eclipse.gmf.runtime.diagram.ui.figures.BorderItemLocator; >+ >+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout; >+ >+import org.eclipse.gmf.runtime.gef.ui.figures.DefaultSizeNodeFigure; >+import org.eclipse.gmf.runtime.gef.ui.figures.NodeFigure; >+ >+import org.eclipse.gmf.runtime.notation.View; >+ >+import org.eclipse.uml2.diagram.component.edit.policies.ClassCanonicalEditPolicy; >+import org.eclipse.uml2.diagram.component.edit.policies.ClassItemSemanticEditPolicy; >+import org.eclipse.uml2.diagram.component.part.UMLVisualIDRegistry; >+ >+/** >+ * @generated >+ */ >+public class ClassEditPart extends AbstractBorderedShapeEditPart { >+ >+ /** >+ * @generated >+ */ >+ public static final int VISUAL_ID = 3004; >+ >+ /** >+ * @generated >+ */ >+ protected IFigure contentPane; >+ >+ /** >+ * @generated >+ */ >+ protected IFigure primaryShape; >+ >+ /** >+ * @generated >+ */ >+ public ClassEditPart(View view) { >+ super(view); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void createDefaultEditPolicies() { >+ installEditPolicy(EditPolicyRoles.CREATION_ROLE, new CreationEditPolicy()); >+ super.createDefaultEditPolicies(); >+ installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE, new ClassItemSemanticEditPolicy()); >+ installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE, new DragDropEditPolicy()); >+ installEditPolicy(EditPolicyRoles.CANONICAL_ROLE, new ClassCanonicalEditPolicy()); >+ installEditPolicy(EditPolicy.LAYOUT_ROLE, createLayoutEditPolicy()); >+ >+ } >+ >+ /** >+ * @generated >+ */ >+ protected LayoutEditPolicy createLayoutEditPolicy() { >+ LayoutEditPolicy lep = new LayoutEditPolicy() { >+ >+ protected EditPolicy createChildEditPolicy(EditPart child) { >+ EditPolicy result = child.getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE); >+ if (result == null) { >+ result = new NonResizableEditPolicy(); >+ } >+ return result; >+ } >+ >+ protected Command getMoveChildrenCommand(Request request) { >+ return null; >+ } >+ >+ protected Command getCreateCommand(CreateRequest request) { >+ return null; >+ } >+ }; >+ return lep; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected IFigure createNodeShape() { >+ ComponentClassFigure figure = new ComponentClassFigure(); >+ return primaryShape = figure; >+ } >+ >+ /** >+ * @generated >+ */ >+ public ComponentClassFigure getPrimaryShape() { >+ return (ComponentClassFigure) primaryShape; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected IFigure getContentPaneFor(IGraphicalEditPart editPart) { >+ if (editPart instanceof PortEditPart) { >+ return getBorderedFigure().getBorderItemContainer(); >+ } >+ >+ return super.getContentPaneFor(editPart); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected boolean addFixedChild(EditPart childEditPart) { >+ if (childEditPart instanceof ClassNameEditPart) { >+ ((ClassNameEditPart) childEditPart).setLabel(getPrimaryShape().getFigureComponentClassFigure_name()); >+ return true; >+ } >+ if (childEditPart instanceof PortEditPart) { >+ BorderItemLocator locator = new BorderItemLocator(getMainFigure(), PositionConstants.NONE); >+ getBorderedFigure().getBorderItemContainer().add(((PortEditPart) childEditPart).getFigure(), locator); >+ return true; >+ } >+ return false; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected boolean removeFixedChild(EditPart childEditPart) { >+ if (childEditPart instanceof PortEditPart) { >+ getBorderedFigure().getBorderItemContainer().remove(((PortEditPart) childEditPart).getFigure()); >+ return true; >+ } >+ return false; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected NodeFigure createNodePlate() { >+ DefaultSizeNodeFigure result = new DefaultSizeNodeFigure(getMapMode().DPtoLP(80), getMapMode().DPtoLP(60)); >+ return result; >+ } >+ >+ /** >+ * Creates figure for this edit part. >+ * >+ * Body of this method does not depend on settings in generation model >+ * so you may safely remove <i>generated</i> tag and modify it. >+ * >+ * @generated >+ */ >+ protected NodeFigure createMainFigure() { >+ NodeFigure figure = createNodePlate(); >+ figure.setLayoutManager(new StackLayout()); >+ IFigure shape = createNodeShape(); >+ figure.add(shape); >+ contentPane = setupContentPane(shape); >+ return figure; >+ } >+ >+ /** >+ * Default implementation treats passed figure as content pane. >+ * Respects layout one may have set for generated figure. >+ * @param nodeShape instance of generated figure class >+ * @generated >+ */ >+ protected IFigure setupContentPane(IFigure nodeShape) { >+ if (nodeShape.getLayoutManager() == null) { >+ ConstrainedToolbarLayout layout = new ConstrainedToolbarLayout(); >+ layout.setSpacing(getMapMode().DPtoLP(5)); >+ nodeShape.setLayoutManager(layout); >+ } >+ return nodeShape; // use nodeShape itself as contentPane >+ } >+ >+ /** >+ * @generated >+ */ >+ public IFigure getContentPane() { >+ if (contentPane != null) { >+ return contentPane; >+ } >+ return super.getContentPane(); >+ } >+ >+ /** >+ * @generated >+ */ >+ public EditPart getPrimaryChildEditPart() { >+ return getChildBySemanticHint(UMLVisualIDRegistry.getType(ClassNameEditPart.VISUAL_ID)); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void addChildVisual(EditPart childEditPart, int index) { >+ if (addFixedChild(childEditPart)) { >+ return; >+ } >+ super.addChildVisual(childEditPart, -1); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void removeChildVisual(EditPart childEditPart) { >+ if (removeFixedChild(childEditPart)) { >+ return; >+ } >+ super.removeChildVisual(childEditPart); >+ } >+ >+ /** >+ * @generated >+ */ >+ public class ComponentClassFigure extends org.eclipse.draw2d.RectangleFigure { >+ >+ /** >+ * @generated >+ */ >+ public ComponentClassFigure() { >+ >+ org.eclipse.uml2.diagram.common.draw2d.CenterLayout myGenLayoutManager = new org.eclipse.uml2.diagram.common.draw2d.CenterLayout(); >+ >+ this.setLayoutManager(myGenLayoutManager); >+ >+ createContents(); >+ } >+ >+ /** >+ * @generated >+ */ >+ private void createContents() { >+ org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel fig_0 = new org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel(); >+ fig_0.setText(""); >+ >+ setFigureComponentClassFigure_name(fig_0); >+ >+ Object layData0 = null; >+ >+ this.add(fig_0, layData0); >+ } >+ >+ /** >+ * @generated >+ */ >+ private org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel fComponentClassFigure_name; >+ >+ /** >+ * @generated >+ */ >+ public org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel getFigureComponentClassFigure_name() { >+ return fComponentClassFigure_name; >+ } >+ >+ /** >+ * @generated >+ */ >+ private void setFigureComponentClassFigure_name(org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel fig) { >+ fComponentClassFigure_name = fig; >+ } >+ >+ /** >+ * @generated >+ */ >+ private boolean myUseLocalCoordinates = false; >+ >+ /** >+ * @generated >+ */ >+ protected boolean useLocalCoordinates() { >+ return myUseLocalCoordinates; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setUseLocalCoordinates(boolean useLocalCoordinates) { >+ myUseLocalCoordinates = useLocalCoordinates; >+ } >+ >+ } >+ >+} >Index: plugin.xml >=================================================================== >RCS file: plugin.xml >diff -N plugin.xml >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ plugin.xml 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,548 @@ >+<?xml version="1.0" encoding="UTF-8"?> >+<?eclipse version="3.0"?> >+ >+<plugin> >+ >+<!-- gmf generator persistent region begin --> >+<!-- gmf generator persistent region end --> >+ >+ <extension point="org.eclipse.core.runtime.preferences"> >+ <initializer class="org.eclipse.uml2.diagram.component.part.UMLDiagramPreferenceInitializer"/> >+ </extension> >+ >+ <extension point="org.eclipse.team.core.fileTypes"> >+ <fileTypes >+ type="text" >+ extension="umlcomponent_diagram"> >+ </fileTypes> >+ </extension> >+ >+ <extension point="org.eclipse.emf.ecore.extension_parser"> >+ <parser >+ type="umlcomponent_diagram" >+ class="org.eclipse.gmf.runtime.emf.core.resources.GMFResourceFactory"> >+ </parser> >+ </extension> >+ >+ <extension point="org.eclipse.ui.editors"> >+ <editor >+ id="org.eclipse.uml2.diagram.component.part.UMLDiagramEditorID" >+ name="%editorName" >+ icon="icons/obj16/UMLDiagramFile.gif" >+ extensions="umlcomponent_diagram" >+ default="true" >+ class="org.eclipse.uml2.diagram.component.part.UMLDiagramEditor" >+ matchingStrategy="org.eclipse.uml2.diagram.component.part.UMLMatchingStrategy" >+ contributorClass="org.eclipse.uml2.diagram.component.part.UMLDiagramActionBarContributor"> >+ </editor> >+ </extension> >+ >+ <extension point="org.eclipse.ui.newWizards"> >+ <wizard >+ name="%newWizardName" >+ icon="icons/obj16/UMLDiagramFile.gif" >+ category="org.eclipse.ui.Examples" >+ class="org.eclipse.uml2.diagram.component.part.UMLCreationWizard" >+ id="org.eclipse.uml2.diagram.component.part.UMLCreationWizardID"> >+ <description>%newWizardDesc</description> >+ </wizard> >+ </extension> >+ >+ <extension point="org.eclipse.ui.popupMenus"> >+ <objectContribution >+ id="org.eclipse.uml2.diagram.component.ui.objectContribution.IFile1" >+ nameFilter="*.uml" >+ objectClass="org.eclipse.core.resources.IFile"> >+ <action >+ label="%initDiagramActionLabel" >+ class="org.eclipse.uml2.diagram.component.part.UMLInitDiagramFileAction" >+ menubarPath="additions" >+ enablesFor="1" >+ id="org.eclipse.uml2.diagram.component.part.UMLInitDiagramFileActionID"> >+ </action> >+ </objectContribution> >+ <objectContribution >+ adaptable="false" >+ id="org.eclipse.uml2.diagram.component.ui.objectContribution.PackageEditPart2" >+ objectClass="org.eclipse.uml2.diagram.component.edit.parts.PackageEditPart"> >+ <action >+ class="org.eclipse.uml2.diagram.component.part.UMLLoadResourceAction" >+ enablesFor="1" >+ id="org.eclipse.uml2.diagram.component.part.UMLLoadResourceActionID" >+ label="%loadResourceActionLabel" >+ menubarPath="additions"> >+ </action> >+ </objectContribution> >+ </extension> >+ >+ <extension point="org.eclipse.gmf.runtime.common.ui.services.action.contributionItemProviders"> >+ <contributionItemProvider >+ class="org.eclipse.gmf.runtime.diagram.ui.providers.DiagramContributionItemProvider" >+ checkPluginLoaded="false"> >+ <Priority name="Low"/> >+ <popupContribution class="org.eclipse.gmf.runtime.diagram.ui.providers.DiagramContextMenuProvider"> >+ <popupStructuredContributionCriteria objectClass="org.eclipse.uml2.diagram.component.edit.parts.Component2EditPart"/> >+ <popupPredefinedItem id="deleteFromDiagramAction" remove="true"/> >+ </popupContribution> >+ <popupContribution class="org.eclipse.gmf.runtime.diagram.ui.providers.DiagramContextMenuProvider"> >+ <popupStructuredContributionCriteria objectClass="org.eclipse.uml2.diagram.component.edit.parts.ComponentNameEditPart"/> >+ <popupPredefinedItem id="deleteFromDiagramAction" remove="true"/> >+ </popupContribution> >+ <popupContribution class="org.eclipse.gmf.runtime.diagram.ui.providers.DiagramContextMenuProvider"> >+ <popupStructuredContributionCriteria objectClass="org.eclipse.uml2.diagram.component.edit.parts.PortEditPart"/> >+ <popupPredefinedItem id="deleteFromDiagramAction" remove="true"/> >+ </popupContribution> >+ <popupContribution class="org.eclipse.gmf.runtime.diagram.ui.providers.DiagramContextMenuProvider"> >+ <popupStructuredContributionCriteria objectClass="org.eclipse.uml2.diagram.component.edit.parts.PortNameEditPart"/> >+ <popupPredefinedItem id="deleteFromDiagramAction" remove="true"/> >+ <popupPredefinedItem id="deleteFromModelAction" remove="true"/> >+ </popupContribution> >+ <popupContribution class="org.eclipse.gmf.runtime.diagram.ui.providers.DiagramContextMenuProvider"> >+ <popupStructuredContributionCriteria objectClass="org.eclipse.uml2.diagram.component.edit.parts.ArtifactEditPart"/> >+ <popupPredefinedItem id="deleteFromDiagramAction" remove="true"/> >+ </popupContribution> >+ <popupContribution class="org.eclipse.gmf.runtime.diagram.ui.providers.DiagramContextMenuProvider"> >+ <popupStructuredContributionCriteria objectClass="org.eclipse.uml2.diagram.component.edit.parts.ArtifactNameEditPart"/> >+ <popupPredefinedItem id="deleteFromDiagramAction" remove="true"/> >+ </popupContribution> >+ <popupContribution class="org.eclipse.gmf.runtime.diagram.ui.providers.DiagramContextMenuProvider"> >+ <popupStructuredContributionCriteria objectClass="org.eclipse.uml2.diagram.component.edit.parts.ClassEditPart"/> >+ <popupPredefinedItem id="deleteFromDiagramAction" remove="true"/> >+ </popupContribution> >+ <popupContribution class="org.eclipse.gmf.runtime.diagram.ui.providers.DiagramContextMenuProvider"> >+ <popupStructuredContributionCriteria objectClass="org.eclipse.uml2.diagram.component.edit.parts.ClassNameEditPart"/> >+ <popupPredefinedItem id="deleteFromDiagramAction" remove="true"/> >+ </popupContribution> >+ <popupContribution class="org.eclipse.gmf.runtime.diagram.ui.providers.DiagramContextMenuProvider"> >+ <popupStructuredContributionCriteria objectClass="org.eclipse.uml2.diagram.component.edit.parts.InterfaceEditPart"/> >+ <popupPredefinedItem id="deleteFromDiagramAction" remove="true"/> >+ </popupContribution> >+ <popupContribution class="org.eclipse.gmf.runtime.diagram.ui.providers.DiagramContextMenuProvider"> >+ <popupStructuredContributionCriteria objectClass="org.eclipse.uml2.diagram.component.edit.parts.InterfaceNameEditPart"/> >+ <popupPredefinedItem id="deleteFromDiagramAction" remove="true"/> >+ <popupPredefinedItem id="deleteFromModelAction" remove="true"/> >+ </popupContribution> >+ <popupContribution class="org.eclipse.gmf.runtime.diagram.ui.providers.DiagramContextMenuProvider"> >+ <popupStructuredContributionCriteria objectClass="org.eclipse.uml2.diagram.component.edit.parts.ComponentEditPart"/> >+ <popupPredefinedItem id="deleteFromDiagramAction" remove="true"/> >+ </popupContribution> >+ <popupContribution class="org.eclipse.gmf.runtime.diagram.ui.providers.DiagramContextMenuProvider"> >+ <popupStructuredContributionCriteria objectClass="org.eclipse.uml2.diagram.component.edit.parts.ComponentName2EditPart"/> >+ <popupPredefinedItem id="deleteFromDiagramAction" remove="true"/> >+ </popupContribution> >+ <popupContribution class="org.eclipse.gmf.runtime.diagram.ui.providers.DiagramContextMenuProvider"> >+ <popupStructuredContributionCriteria objectClass="org.eclipse.uml2.diagram.component.edit.parts.Artifact2EditPart"/> >+ <popupPredefinedItem id="deleteFromDiagramAction" remove="true"/> >+ </popupContribution> >+ <popupContribution class="org.eclipse.gmf.runtime.diagram.ui.providers.DiagramContextMenuProvider"> >+ <popupStructuredContributionCriteria objectClass="org.eclipse.uml2.diagram.component.edit.parts.ArtifactName2EditPart"/> >+ <popupPredefinedItem id="deleteFromDiagramAction" remove="true"/> >+ </popupContribution> >+ <popupContribution class="org.eclipse.gmf.runtime.diagram.ui.providers.DiagramContextMenuProvider"> >+ <popupStructuredContributionCriteria objectClass="org.eclipse.uml2.diagram.component.edit.parts.Interface2EditPart"/> >+ <popupPredefinedItem id="deleteFromDiagramAction" remove="true"/> >+ </popupContribution> >+ <popupContribution class="org.eclipse.gmf.runtime.diagram.ui.providers.DiagramContextMenuProvider"> >+ <popupStructuredContributionCriteria objectClass="org.eclipse.uml2.diagram.component.edit.parts.InterfaceName2EditPart"/> >+ <popupPredefinedItem id="deleteFromDiagramAction" remove="true"/> >+ <popupPredefinedItem id="deleteFromModelAction" remove="true"/> >+ </popupContribution> >+ <popupContribution class="org.eclipse.gmf.runtime.diagram.ui.providers.DiagramContextMenuProvider"> >+ <popupStructuredContributionCriteria objectClass="org.eclipse.uml2.diagram.component.edit.parts.Class2EditPart"/> >+ <popupPredefinedItem id="deleteFromDiagramAction" remove="true"/> >+ </popupContribution> >+ <popupContribution class="org.eclipse.gmf.runtime.diagram.ui.providers.DiagramContextMenuProvider"> >+ <popupStructuredContributionCriteria objectClass="org.eclipse.uml2.diagram.component.edit.parts.ClassName2EditPart"/> >+ <popupPredefinedItem id="deleteFromDiagramAction" remove="true"/> >+ </popupContribution> >+ <popupContribution class="org.eclipse.gmf.runtime.diagram.ui.providers.DiagramContextMenuProvider"> >+ <popupStructuredContributionCriteria objectClass="org.eclipse.uml2.diagram.component.edit.parts.InterfaceRealizationEditPart"/> >+ <popupPredefinedItem id="deleteFromDiagramAction" remove="true"/> >+ </popupContribution> >+ <popupContribution class="org.eclipse.gmf.runtime.diagram.ui.providers.DiagramContextMenuProvider"> >+ <popupStructuredContributionCriteria objectClass="org.eclipse.uml2.diagram.component.edit.parts.PortProvidedEditPart"/> >+ <popupAction path="/editGroup" id="deleteFromModelAction"/> >+ <popupPredefinedItem id="deleteFromDiagramAction" remove="true"/> >+ </popupContribution> >+ <popupContribution class="org.eclipse.gmf.runtime.diagram.ui.providers.DiagramContextMenuProvider"> >+ <popupStructuredContributionCriteria objectClass="org.eclipse.uml2.diagram.component.edit.parts.PortRequiredEditPart"/> >+ <popupAction path="/editGroup" id="deleteFromModelAction"/> >+ <popupPredefinedItem id="deleteFromDiagramAction" remove="true"/> >+ </popupContribution> >+ </contributionItemProvider> >+ </extension> >+ >+ <extension point="org.eclipse.gmf.runtime.common.ui.services.action.globalActionHandlerProviders"> >+ <GlobalActionHandlerProvider >+ class="org.eclipse.gmf.runtime.diagram.ui.providers.DiagramGlobalActionHandlerProvider" >+ id="UMLComponentPresentation"> >+ <Priority name="Lowest"/> >+ <ViewId id="org.eclipse.uml2.diagram.component.part.UMLDiagramEditorID"> >+ <ElementType class="org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart"> >+ <GlobalActionId actionId="delete"/> >+ </ElementType> >+ <ElementType class="org.eclipse.gmf.runtime.diagram.ui.editparts.DiagramEditPart"> >+ <GlobalActionId actionId="save"/> >+ </ElementType> >+ </ViewId> >+ </GlobalActionHandlerProvider> >+ <GlobalActionHandlerProvider >+ class="org.eclipse.gmf.runtime.diagram.ui.providers.ide.providers.DiagramIDEGlobalActionHandlerProvider" >+ id="UMLComponentPresentationIDE"> >+ <Priority name="Lowest"/> >+ <ViewId id="org.eclipse.uml2.diagram.component.part.UMLDiagramEditorID"> >+ <ElementType class="org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart"> >+ <GlobalActionId actionId="bookmark"/> >+ </ElementType> >+ </ViewId> >+ </GlobalActionHandlerProvider> >+ <GlobalActionHandlerProvider >+ class="org.eclipse.gmf.runtime.diagram.ui.render.providers.DiagramUIRenderGlobalActionHandlerProvider" >+ id="UMLComponentRender"> >+ <Priority name="Lowest"/> >+ <ViewId id="org.eclipse.uml2.diagram.component.part.UMLDiagramEditorID"> >+ <ElementType class="org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart"> >+ <GlobalActionId actionId="cut"/> >+ <GlobalActionId actionId="copy"/> >+ <GlobalActionId actionId="paste"/> >+ </ElementType> >+ </ViewId> >+ </GlobalActionHandlerProvider> >+ </extension> >+ >+ <extension point="org.eclipse.gmf.runtime.diagram.core.viewProviders"> >+ <viewProvider class="org.eclipse.uml2.diagram.component.providers.UMLViewProvider"> >+ <Priority name="Lowest"/> >+ <context viewClass="org.eclipse.gmf.runtime.notation.Diagram" semanticHints="UMLComponent"/> >+ <context viewClass="org.eclipse.gmf.runtime.notation.Node" semanticHints=""/> >+ <context viewClass="org.eclipse.gmf.runtime.notation.Edge" semanticHints=""/> >+ </viewProvider> >+ </extension> >+ >+ <extension point="org.eclipse.gmf.runtime.diagram.ui.editpartProviders"> >+ <editpartProvider class="org.eclipse.uml2.diagram.component.providers.UMLEditPartProvider"> >+ <Priority name="Lowest"/> >+ </editpartProvider> >+ </extension> >+ >+ <extension point="org.eclipse.gmf.runtime.diagram.ui.paletteProviders"> >+ <paletteProvider class="org.eclipse.uml2.diagram.component.providers.UMLPaletteProvider"> >+ <Priority name="Lowest"/> >+ <editor id="org.eclipse.uml2.diagram.component.part.UMLDiagramEditorID"/> >+ </paletteProvider> >+ </extension> >+ >+ <extension point="org.eclipse.gmf.runtime.emf.ui.modelingAssistantProviders"> >+ <modelingAssistantProvider class="org.eclipse.uml2.diagram.component.providers.UMLModelingAssistantProvider"> >+ <Priority name="Lowest"/> >+ </modelingAssistantProvider> >+ </extension> >+ >+ <extension point="org.eclipse.gmf.runtime.common.ui.services.iconProviders"> >+ <IconProvider class="org.eclipse.uml2.diagram.component.providers.UMLIconProvider"> >+ <Priority name="Low"/> >+ </IconProvider> >+ </extension> >+ >+ <extension point="org.eclipse.gmf.runtime.common.ui.services.parserProviders"> >+ <ParserProvider class="org.eclipse.uml2.diagram.component.providers.UMLParserProvider"> >+ <Priority name="Lowest"/> >+ </ParserProvider> >+ </extension> >+ >+ <extension point="org.eclipse.gmf.runtime.emf.type.core.elementTypes"> >+ >+ <metamodel nsURI="http://www.eclipse.org/uml2/2.0.0/UML"> >+ <metamodelType >+ id="org.eclipse.uml2.diagram.component.Package_1000" >+ name="Undefined" >+ kind="org.eclipse.gmf.runtime.emf.type.core.IHintedType" >+ eclass="Package" >+ edithelper="org.eclipse.uml2.diagram.component.edit.helpers.PackageEditHelper"> >+ <param name="semanticHint" value="1000"/> >+ </metamodelType> >+ </metamodel> >+ >+ <metamodel nsURI="http://www.eclipse.org/uml2/2.0.0/UML"> >+ <specializationType >+ id="org.eclipse.uml2.diagram.component.Component_3001" >+ name="Component" >+ kind="org.eclipse.gmf.runtime.emf.type.core.IHintedType" >+ edithelperadvice="org.eclipse.uml2.diagram.component.edit.helpers.ComponentEditHelperAdvice"> >+ <specializes id="org.eclipse.uml2.diagram.component.Component_2001"/> >+ <param name="semanticHint" value="3001"/> >+ </specializationType> >+ </metamodel> >+ >+ <metamodel nsURI="http://www.eclipse.org/uml2/2.0.0/UML"> >+ <metamodelType >+ id="org.eclipse.uml2.diagram.component.Port_3002" >+ name="Port" >+ kind="org.eclipse.gmf.runtime.emf.type.core.IHintedType" >+ eclass="Port" >+ edithelper="org.eclipse.uml2.diagram.component.edit.helpers.PortEditHelper"> >+ <param name="semanticHint" value="3002"/> >+ </metamodelType> >+ </metamodel> >+ >+ <metamodel nsURI="http://www.eclipse.org/uml2/2.0.0/UML"> >+ <metamodelType >+ id="org.eclipse.uml2.diagram.component.Artifact_3003" >+ name="Artifact" >+ kind="org.eclipse.gmf.runtime.emf.type.core.IHintedType" >+ eclass="Artifact" >+ edithelper="org.eclipse.uml2.diagram.component.edit.helpers.ArtifactEditHelper"> >+ <param name="semanticHint" value="3003"/> >+ </metamodelType> >+ </metamodel> >+ >+ <metamodel nsURI="http://www.eclipse.org/uml2/2.0.0/UML"> >+ <metamodelType >+ id="org.eclipse.uml2.diagram.component.Class_3004" >+ name="Class" >+ kind="org.eclipse.gmf.runtime.emf.type.core.IHintedType" >+ eclass="Class" >+ edithelper="org.eclipse.uml2.diagram.component.edit.helpers.ClassEditHelper"> >+ <param name="semanticHint" value="3004"/> >+ </metamodelType> >+ </metamodel> >+ >+ <metamodel nsURI="http://www.eclipse.org/uml2/2.0.0/UML"> >+ <metamodelType >+ id="org.eclipse.uml2.diagram.component.Interface_3005" >+ name="Interface" >+ kind="org.eclipse.gmf.runtime.emf.type.core.IHintedType" >+ eclass="Interface" >+ edithelper="org.eclipse.uml2.diagram.component.edit.helpers.InterfaceEditHelper"> >+ <param name="semanticHint" value="3005"/> >+ </metamodelType> >+ </metamodel> >+ >+ <metamodel nsURI="http://www.eclipse.org/uml2/2.0.0/UML"> >+ <metamodelType >+ id="org.eclipse.uml2.diagram.component.Component_2001" >+ name="Component" >+ kind="org.eclipse.gmf.runtime.emf.type.core.IHintedType" >+ eclass="Component" >+ edithelper="org.eclipse.uml2.diagram.component.edit.helpers.ComponentEditHelper"> >+ <param name="semanticHint" value="2001"/> >+ </metamodelType> >+ </metamodel> >+ >+ <metamodel nsURI="http://www.eclipse.org/uml2/2.0.0/UML"> >+ <specializationType >+ id="org.eclipse.uml2.diagram.component.Artifact_2002" >+ name="Artifact" >+ kind="org.eclipse.gmf.runtime.emf.type.core.IHintedType" >+ edithelperadvice="org.eclipse.uml2.diagram.component.edit.helpers.ArtifactEditHelperAdvice"> >+ <specializes id="org.eclipse.uml2.diagram.component.Artifact_3003"/> >+ <param name="semanticHint" value="2002"/> >+ </specializationType> >+ </metamodel> >+ >+ <metamodel nsURI="http://www.eclipse.org/uml2/2.0.0/UML"> >+ <specializationType >+ id="org.eclipse.uml2.diagram.component.Interface_2003" >+ name="Interface" >+ kind="org.eclipse.gmf.runtime.emf.type.core.IHintedType" >+ edithelperadvice="org.eclipse.uml2.diagram.component.edit.helpers.InterfaceEditHelperAdvice"> >+ <specializes id="org.eclipse.uml2.diagram.component.Interface_3005"/> >+ <param name="semanticHint" value="2003"/> >+ </specializationType> >+ </metamodel> >+ >+ <metamodel nsURI="http://www.eclipse.org/uml2/2.0.0/UML"> >+ <specializationType >+ id="org.eclipse.uml2.diagram.component.Class_2004" >+ name="Class" >+ kind="org.eclipse.gmf.runtime.emf.type.core.IHintedType" >+ edithelperadvice="org.eclipse.uml2.diagram.component.edit.helpers.ClassEditHelperAdvice"> >+ <specializes id="org.eclipse.uml2.diagram.component.Class_3004"/> >+ <param name="semanticHint" value="2004"/> >+ </specializationType> >+ </metamodel> >+ >+ <metamodel nsURI="http://www.eclipse.org/uml2/2.0.0/UML"> >+ <metamodelType >+ id="org.eclipse.uml2.diagram.component.InterfaceRealization_4001" >+ name="InterfaceRealization" >+ kind="org.eclipse.gmf.runtime.emf.type.core.IHintedType" >+ eclass="InterfaceRealization" >+ edithelper="org.eclipse.uml2.diagram.component.edit.helpers.InterfaceRealizationEditHelper"> >+ <param name="semanticHint" value="4001"/> >+ </metamodelType> >+ </metamodel> >+ >+ <metamodel nsURI="http://www.eclipse.org/uml2/2.0.0/UML"> >+ <specializationType >+ id="org.eclipse.uml2.diagram.component.PortProvided_4006" >+ name="Undefined" >+ kind="org.eclipse.gmf.runtime.emf.type.core.IHintedType" >+ edithelperadvice="org.eclipse.uml2.diagram.component.edit.helpers.PortProvidedEditHelperAdvice"> >+ <specializes id="org.eclipse.gmf.runtime.emf.type.core.null"/> >+ <param name="semanticHint" value="4006"/> >+ </specializationType> >+ </metamodel> >+ >+ <metamodel nsURI="http://www.eclipse.org/uml2/2.0.0/UML"> >+ <specializationType >+ id="org.eclipse.uml2.diagram.component.PortRequired_4004" >+ name="Undefined" >+ kind="org.eclipse.gmf.runtime.emf.type.core.IHintedType" >+ edithelperadvice="org.eclipse.uml2.diagram.component.edit.helpers.PortRequiredEditHelperAdvice"> >+ <specializes id="org.eclipse.gmf.runtime.emf.type.core.null"/> >+ <param name="semanticHint" value="4004"/> >+ </specializationType> >+ </metamodel> >+ </extension> >+ >+ <extension point="org.eclipse.gmf.runtime.emf.type.core.elementTypeBindings"> >+ <clientContext id="UMLComponentClientContext"> >+ <enablement> >+ <test >+ property="org.eclipse.gmf.runtime.emf.core.editingDomain" >+ value="org.eclipse.uml2.diagram.component.EditingDomain"/> >+ </enablement> >+ </clientContext> >+ <binding context="UMLComponentClientContext"> >+ <elementType ref="org.eclipse.uml2.diagram.component.Package_1000"/> >+ <elementType ref="org.eclipse.uml2.diagram.component.Component_3001"/> >+ <elementType ref="org.eclipse.uml2.diagram.component.Port_3002"/> >+ <elementType ref="org.eclipse.uml2.diagram.component.Artifact_3003"/> >+ <elementType ref="org.eclipse.uml2.diagram.component.Class_3004"/> >+ <elementType ref="org.eclipse.uml2.diagram.component.Interface_3005"/> >+ <elementType ref="org.eclipse.uml2.diagram.component.Component_2001"/> >+ <elementType ref="org.eclipse.uml2.diagram.component.Artifact_2002"/> >+ <elementType ref="org.eclipse.uml2.diagram.component.Interface_2003"/> >+ <elementType ref="org.eclipse.uml2.diagram.component.Class_2004"/> >+ <elementType ref="org.eclipse.uml2.diagram.component.InterfaceRealization_4001"/> >+ <elementType ref="org.eclipse.uml2.diagram.component.PortProvided_4006"/> >+ <elementType ref="org.eclipse.uml2.diagram.component.PortRequired_4004"/> >+ <advice ref="org.eclipse.gmf.runtime.diagram.core.advice.notationDepdendents"/> >+ </binding> >+ </extension> >+ >+ <extension point="org.eclipse.ui.navigator.viewer"> >+ <viewerContentBinding viewerId="org.eclipse.ui.navigator.ProjectExplorer"> >+ <includes> >+ <contentExtension pattern="org.eclipse.uml2.diagram.component.resourceContent"/> >+ <contentExtension pattern="org.eclipse.uml2.diagram.component.navigatorLinkHelper"/> >+ </includes> >+ </viewerContentBinding> >+ </extension> >+ >+ <extension point="org.eclipse.ui.navigator.navigatorContent"> >+ <navigatorContent >+ id="org.eclipse.uml2.diagram.component.resourceContent" >+ name="%navigatorContentName" >+ priority="normal" >+ contentProvider="org.eclipse.uml2.diagram.component.navigator.UMLNavigatorContentProvider" >+ labelProvider="org.eclipse.uml2.diagram.component.navigator.UMLNavigatorLabelProvider" >+ icon="icons/obj16/UMLDiagramFile.gif" >+ activeByDefault="true"> >+ <triggerPoints> >+ <or> >+ <and> >+ <instanceof value="org.eclipse.core.resources.IFile"/> >+ <test property="org.eclipse.core.resources.extension" value="umlcomponent_diagram"/> >+ </and> >+ <instanceof value="org.eclipse.uml2.diagram.component.navigator.UMLAbstractNavigatorItem"/> >+ </or> >+ </triggerPoints> >+ <possibleChildren> >+ <instanceof value="org.eclipse.uml2.diagram.component.navigator.UMLAbstractNavigatorItem"/> >+ </possibleChildren> >+ <commonSorter >+ id="org.eclipse.uml2.diagram.component.navigatorSorter" >+ class="org.eclipse.uml2.diagram.component.navigator.UMLNavigatorSorter"> >+ <parentExpression> >+ <or> >+ <and> >+ <instanceof value="org.eclipse.core.resources.IFile"/> >+ <test property="org.eclipse.core.resources.extension" value="umlcomponent_diagram"/> >+ </and> >+ <instanceof value="org.eclipse.uml2.diagram.component.navigator.UMLAbstractNavigatorItem"/> >+ </or> >+ </parentExpression> >+ </commonSorter> >+ <actionProvider >+ id="org.eclipse.uml2.diagram.component.navigatorActionProvider" >+ class="org.eclipse.uml2.diagram.component.navigator.UMLNavigatorActionProvider"> >+ </actionProvider> >+ </navigatorContent> >+ </extension> >+ >+ <extension point="org.eclipse.ui.navigator.linkHelper"> >+ <linkHelper >+ id="org.eclipse.uml2.diagram.component.navigatorLinkHelper" >+ class="org.eclipse.uml2.diagram.component.navigator.UMLNavigatorLinkHelper"> >+ <editorInputEnablement> >+ <instanceof value="org.eclipse.gmf.runtime.diagram.ui.resources.editor.ide.document.FileEditorInputProxy"/> >+ </editorInputEnablement> >+ <selectionEnablement> >+ <instanceof value="org.eclipse.uml2.diagram.component.navigator.UMLAbstractNavigatorItem"/> >+ </selectionEnablement> >+ </linkHelper> >+ </extension> >+ >+ <extension point="org.eclipse.ui.views.properties.tabbed.propertyContributor"> >+ <propertyContributor contributorId="org.eclipse.uml2.diagram.component" >+ labelProvider="org.eclipse.uml2.diagram.component.sheet.UMLSheetLabelProvider"> >+ <propertyCategory category="domain"/> >+ <propertyCategory category="visual"/> >+ <propertyCategory category="extra"/> >+ </propertyContributor> >+ </extension> >+ >+ <extension point="org.eclipse.ui.views.properties.tabbed.propertyTabs"> >+ <propertyTabs contributorId="org.eclipse.uml2.diagram.component"> >+ <propertyTab >+ category="visual" >+ id="property.tab.AppearancePropertySection" >+ label="%tab.appearance"/> >+ <propertyTab >+ category="visual" >+ id="property.tab.DiagramPropertySection" >+ label="%tab.diagram"/> >+ <propertyTab >+ category="domain" >+ id="property.tab.domain" >+ label="%tab.domain"/> >+ </propertyTabs> >+ </extension> >+ >+ <extension point="org.eclipse.ui.views.properties.tabbed.propertySections"> >+ <propertySections contributorId="org.eclipse.uml2.diagram.component"> >+ >+ <propertySection id="property.section.ConnectorAppearancePropertySection" >+ filter="org.eclipse.gmf.runtime.diagram.ui.properties.filters.ConnectionEditPartPropertySectionFilter" >+ class="org.eclipse.gmf.runtime.diagram.ui.properties.sections.appearance.ConnectionAppearancePropertySection" >+ tab="property.tab.AppearancePropertySection"> >+ </propertySection> >+ <propertySection id="property.section.ShapeColorAndFontPropertySection" >+ filter="org.eclipse.gmf.runtime.diagram.ui.properties.filters.ShapeEditPartPropertySectionFilter" >+ class="org.eclipse.gmf.runtime.diagram.ui.properties.sections.appearance.ShapeColorsAndFontsPropertySection" >+ tab="property.tab.AppearancePropertySection"> >+ </propertySection> >+ <propertySection id="property.section.DiagramColorsAndFontsPropertySection" >+ filter="org.eclipse.gmf.runtime.diagram.ui.properties.filters.DiagramEditPartPropertySectionFilter" >+ class="org.eclipse.gmf.runtime.diagram.ui.properties.sections.appearance.DiagramColorsAndFontsPropertySection" >+ tab="property.tab.AppearancePropertySection"> >+ </propertySection> >+ >+ <propertySection id="property.section.RulerGridPropertySection" >+ filter="org.eclipse.gmf.runtime.diagram.ui.properties.filters.DiagramEditPartPropertySectionFilter" >+ class="org.eclipse.gmf.runtime.diagram.ui.properties.sections.grid.RulerGridPropertySection" >+ tab="property.tab.DiagramPropertySection"> >+ </propertySection> >+ <propertySection >+ id="property.section.domain" >+ tab="property.tab.domain" >+ class="org.eclipse.uml2.diagram.component.sheet.UMLPropertySection"> >+ <input type="org.eclipse.gmf.runtime.notation.View"/> >+ <input type="org.eclipse.gef.EditPart"/> >+ <input type="org.eclipse.uml2.diagram.component.navigator.UMLAbstractNavigatorItem"/> >+ </propertySection> >+ </propertySections> >+ </extension> >+</plugin> >Index: src/org/eclipse/uml2/diagram/component/part/UMLDiagramEditor.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/component/part/UMLDiagramEditor.java >diff -N src/org/eclipse/uml2/diagram/component/part/UMLDiagramEditor.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/component/part/UMLDiagramEditor.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,220 @@ >+package org.eclipse.uml2.diagram.component.part; >+ >+import org.eclipse.draw2d.DelegatingLayout; >+import org.eclipse.draw2d.FreeformLayer; >+import org.eclipse.draw2d.LayeredPane; >+import org.eclipse.gef.LayerConstants; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.DiagramRootEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.resources.editor.parts.DiagramDocumentEditor; >+import org.eclipse.emf.transaction.TransactionalEditingDomain; >+import org.eclipse.core.resources.IFile; >+import org.eclipse.core.resources.IMarker; >+import org.eclipse.core.resources.IWorkspaceRoot; >+import org.eclipse.core.resources.ResourcesPlugin; >+ >+import org.eclipse.core.runtime.CoreException; >+import org.eclipse.core.runtime.IPath; >+import org.eclipse.core.runtime.IProgressMonitor; >+import org.eclipse.core.runtime.IStatus; >+import org.eclipse.core.runtime.NullProgressMonitor; >+ >+import org.eclipse.gmf.runtime.common.ui.services.marker.MarkerNavigationService; >+ >+import org.eclipse.gmf.runtime.diagram.core.preferences.PreferencesHint; >+ >+import org.eclipse.gmf.runtime.diagram.ui.resources.editor.document.IDocumentProvider; >+ >+import org.eclipse.gmf.runtime.diagram.ui.resources.editor.ide.document.StorageDiagramDocumentProvider; >+ >+import org.eclipse.jface.dialogs.ErrorDialog; >+import org.eclipse.jface.dialogs.IMessageProvider; >+import org.eclipse.jface.dialogs.MessageDialog; >+ >+import org.eclipse.jface.window.Window; >+ >+import org.eclipse.osgi.util.NLS; >+ >+import org.eclipse.swt.widgets.Shell; >+ >+import org.eclipse.ui.IEditorInput; >+import org.eclipse.ui.IEditorMatchingStrategy; >+import org.eclipse.ui.IEditorReference; >+import org.eclipse.ui.IFileEditorInput; >+import org.eclipse.ui.PlatformUI; >+ >+import org.eclipse.ui.dialogs.SaveAsDialog; >+ >+import org.eclipse.ui.ide.IGotoMarker; >+ >+import org.eclipse.ui.part.FileEditorInput; >+import org.eclipse.uml2.diagram.component.edit.parts.UMLEditPartFactory; >+ >+/** >+ * @generated >+ */ >+public class UMLDiagramEditor extends DiagramDocumentEditor implements IGotoMarker { >+ >+ /** >+ * @generated >+ */ >+ public static final String ID = "org.eclipse.uml2.diagram.component.part.UMLDiagramEditorID"; //$NON-NLS-1$ >+ >+ /** >+ * @generated >+ */ >+ public UMLDiagramEditor() { >+ super(true); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected String getEditingDomainID() { >+ return "org.eclipse.uml2.diagram.component.EditingDomain"; //$NON-NLS-1$ >+ } >+ >+ /** >+ * @generated >+ */ >+ protected TransactionalEditingDomain createEditingDomain() { >+ TransactionalEditingDomain domain = super.createEditingDomain(); >+ domain.setID(getEditingDomainID()); >+ return domain; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void configureGraphicalViewer() { >+ super.configureGraphicalViewer(); >+ DiagramRootEditPart root = (DiagramRootEditPart) getDiagramGraphicalViewer().getRootEditPart(); >+ LayeredPane printableLayers = (LayeredPane) root.getLayer(LayerConstants.PRINTABLE_LAYERS); >+ FreeformLayer extLabelsLayer = new FreeformLayer(); >+ extLabelsLayer.setLayoutManager(new DelegatingLayout()); >+ printableLayers.addLayerAfter(extLabelsLayer, UMLEditPartFactory.EXTERNAL_NODE_LABELS_LAYER, LayerConstants.PRIMARY_LAYER); >+ LayeredPane scalableLayers = (LayeredPane) root.getLayer(LayerConstants.SCALABLE_LAYERS); >+ FreeformLayer scaledFeedbackLayer = new FreeformLayer(); >+ scaledFeedbackLayer.setEnabled(false); >+ scalableLayers.addLayerAfter(scaledFeedbackLayer, LayerConstants.SCALED_FEEDBACK_LAYER, DiagramRootEditPart.DECORATION_UNPRINTABLE_LAYER); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected PreferencesHint getPreferencesHint() { >+ return UMLDiagramEditorPlugin.DIAGRAM_PREFERENCES_HINT; >+ } >+ >+ /** >+ * @generated >+ */ >+ public String getContributorId() { >+ return UMLDiagramEditorPlugin.ID; >+ } >+ >+ /** >+ * @generated >+ */ >+ private String contentObjectURI; >+ >+ /** >+ * @generated >+ */ >+ protected void setDocumentProvider(IEditorInput input) { >+ if (input instanceof IFileEditorInput) { >+ setDocumentProvider(new UMLDocumentProvider(contentObjectURI)); >+ } else { >+ setDocumentProvider(new StorageDiagramDocumentProvider()); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ public void gotoMarker(IMarker marker) { >+ MarkerNavigationService.getInstance().gotoMarker(this, marker); >+ } >+ >+ /** >+ * @generated >+ */ >+ public boolean isSaveAsAllowed() { >+ return true; >+ } >+ >+ /** >+ * @generated >+ */ >+ public void doSaveAs() { >+ performSaveAs(new NullProgressMonitor()); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void performSaveAs(IProgressMonitor progressMonitor) { >+ Shell shell = getSite().getShell(); >+ IEditorInput input = getEditorInput(); >+ SaveAsDialog dialog = new SaveAsDialog(shell); >+ IFile original = input instanceof IFileEditorInput ? ((IFileEditorInput) input).getFile() : null; >+ if (original != null) { >+ dialog.setOriginalFile(original); >+ } >+ dialog.create(); >+ IDocumentProvider provider = getDocumentProvider(); >+ if (provider == null) { >+ // editor has been programmatically closed while the dialog was open >+ return; >+ } >+ if (provider.isDeleted(input) && original != null) { >+ String message = NLS.bind("The original file ''{0}'' has been deleted.", original.getName()); >+ dialog.setErrorMessage(null); >+ dialog.setMessage(message, IMessageProvider.WARNING); >+ } >+ if (dialog.open() == Window.CANCEL) { >+ if (progressMonitor != null) { >+ progressMonitor.setCanceled(true); >+ } >+ return; >+ } >+ IPath filePath = dialog.getResult(); >+ if (filePath == null) { >+ if (progressMonitor != null) { >+ progressMonitor.setCanceled(true); >+ } >+ return; >+ } >+ IWorkspaceRoot workspaceRoot = ResourcesPlugin.getWorkspace().getRoot(); >+ IFile file = workspaceRoot.getFile(filePath); >+ final IEditorInput newInput = new FileEditorInput(file); >+ // Check if the editor is already open >+ IEditorMatchingStrategy matchingStrategy = getEditorDescriptor().getEditorMatchingStrategy(); >+ IEditorReference[] editorRefs = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getEditorReferences(); >+ for (int i = 0; i < editorRefs.length; i++) { >+ if (matchingStrategy.matches(editorRefs[i], newInput)) { >+ MessageDialog.openWarning(shell, "Problem During Save As...", "Save could not be completed. Target file is already open in another editor."); >+ return; >+ } >+ } >+ boolean success = false; >+ try { >+ provider.aboutToChange(newInput); >+ getDocumentProvider(newInput).saveDocument(progressMonitor, newInput, getDocumentProvider().getDocument(getEditorInput()), true); >+ success = true; >+ } catch (CoreException x) { >+ IStatus status = x.getStatus(); >+ if (status == null || status.getSeverity() != IStatus.CANCEL) { >+ ErrorDialog.openError(shell, "Save Problems", "Could not save file.", x.getStatus()); >+ } >+ } finally { >+ provider.changed(newInput); >+ if (success) { >+ setInput(newInput); >+ } >+ } >+ if (progressMonitor != null) { >+ progressMonitor.setCanceled(!success); >+ } >+ } >+ >+} >Index: src/org/eclipse/uml2/diagram/component/view/factories/ComponentName2ViewFactory.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/component/view/factories/ComponentName2ViewFactory.java >diff -N src/org/eclipse/uml2/diagram/component/view/factories/ComponentName2ViewFactory.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/component/view/factories/ComponentName2ViewFactory.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,29 @@ >+package org.eclipse.uml2.diagram.component.view.factories; >+ >+import org.eclipse.core.runtime.IAdaptable; >+import org.eclipse.gmf.runtime.notation.View; >+import java.util.ArrayList; >+import java.util.List; >+ >+import org.eclipse.gmf.runtime.diagram.ui.view.factories.BasicNodeViewFactory; >+ >+/** >+ * @generated >+ */ >+public class ComponentName2ViewFactory extends BasicNodeViewFactory { >+ >+ /** >+ * @generated >+ */ >+ protected void decorateView(View containerView, View view, IAdaptable semanticAdapter, String semanticHint, int index, boolean persisted) { >+ super.decorateView(containerView, view, semanticAdapter, semanticHint, index, persisted); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected List createStyles(View view) { >+ List styles = new ArrayList(); >+ return styles; >+ } >+} >Index: src/org/eclipse/uml2/diagram/component/view/factories/Component2ViewFactory.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/component/view/factories/Component2ViewFactory.java >diff -N src/org/eclipse/uml2/diagram/component/view/factories/Component2ViewFactory.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/component/view/factories/Component2ViewFactory.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,59 @@ >+package org.eclipse.uml2.diagram.component.view.factories; >+ >+import java.util.ArrayList; >+import java.util.List; >+ >+import org.eclipse.core.runtime.IAdaptable; >+ >+import org.eclipse.emf.ecore.EAnnotation; >+import org.eclipse.emf.ecore.EcoreFactory; >+ >+import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil; >+ >+import org.eclipse.gmf.runtime.diagram.ui.view.factories.AbstractShapeViewFactory; >+ >+import org.eclipse.gmf.runtime.notation.NotationFactory; >+import org.eclipse.gmf.runtime.notation.View; >+ >+import org.eclipse.uml2.diagram.component.edit.parts.ComponentContents2EditPart; >+import org.eclipse.uml2.diagram.component.edit.parts.ComponentNameEditPart; >+import org.eclipse.uml2.diagram.component.edit.parts.PackageEditPart; >+import org.eclipse.uml2.diagram.component.part.UMLVisualIDRegistry; >+ >+/** >+ * @generated >+ */ >+public class Component2ViewFactory extends AbstractShapeViewFactory { >+ >+ /** >+ * @generated >+ */ >+ protected List createStyles(View view) { >+ List styles = new ArrayList(); >+ styles.add(NotationFactory.eINSTANCE.createFontStyle()); >+ styles.add(NotationFactory.eINSTANCE.createDescriptionStyle()); >+ styles.add(NotationFactory.eINSTANCE.createFillStyle()); >+ styles.add(NotationFactory.eINSTANCE.createLineStyle()); >+ return styles; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void decorateView(View containerView, View view, IAdaptable semanticAdapter, String semanticHint, int index, boolean persisted) { >+ if (semanticHint == null) { >+ semanticHint = UMLVisualIDRegistry.getType(org.eclipse.uml2.diagram.component.edit.parts.Component2EditPart.VISUAL_ID); >+ view.setType(semanticHint); >+ } >+ super.decorateView(containerView, view, semanticAdapter, semanticHint, index, persisted); >+ if (!PackageEditPart.MODEL_ID.equals(UMLVisualIDRegistry.getModelID(containerView))) { >+ EAnnotation shortcutAnnotation = EcoreFactory.eINSTANCE.createEAnnotation(); >+ shortcutAnnotation.setSource("Shortcut"); //$NON-NLS-1$ >+ shortcutAnnotation.getDetails().put("modelID", PackageEditPart.MODEL_ID); //$NON-NLS-1$ >+ view.getEAnnotations().add(shortcutAnnotation); >+ } >+ getViewService().createNode(semanticAdapter, view, UMLVisualIDRegistry.getType(ComponentNameEditPart.VISUAL_ID), ViewUtil.APPEND, true, getPreferencesHint()); >+ getViewService().createNode(semanticAdapter, view, UMLVisualIDRegistry.getType(ComponentContents2EditPart.VISUAL_ID), ViewUtil.APPEND, true, getPreferencesHint()); >+ } >+ >+} >Index: src/org/eclipse/uml2/diagram/component/view/factories/Class2ViewFactory.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/component/view/factories/Class2ViewFactory.java >diff -N src/org/eclipse/uml2/diagram/component/view/factories/Class2ViewFactory.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/component/view/factories/Class2ViewFactory.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,57 @@ >+package org.eclipse.uml2.diagram.component.view.factories; >+ >+import java.util.ArrayList; >+import java.util.List; >+ >+import org.eclipse.core.runtime.IAdaptable; >+ >+import org.eclipse.emf.ecore.EAnnotation; >+import org.eclipse.emf.ecore.EcoreFactory; >+ >+import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil; >+ >+import org.eclipse.gmf.runtime.diagram.ui.view.factories.AbstractShapeViewFactory; >+ >+import org.eclipse.gmf.runtime.notation.NotationFactory; >+import org.eclipse.gmf.runtime.notation.View; >+ >+import org.eclipse.uml2.diagram.component.edit.parts.ClassName2EditPart; >+import org.eclipse.uml2.diagram.component.edit.parts.PackageEditPart; >+import org.eclipse.uml2.diagram.component.part.UMLVisualIDRegistry; >+ >+/** >+ * @generated >+ */ >+public class Class2ViewFactory extends AbstractShapeViewFactory { >+ >+ /** >+ * @generated >+ */ >+ protected List createStyles(View view) { >+ List styles = new ArrayList(); >+ styles.add(NotationFactory.eINSTANCE.createFontStyle()); >+ styles.add(NotationFactory.eINSTANCE.createDescriptionStyle()); >+ styles.add(NotationFactory.eINSTANCE.createFillStyle()); >+ styles.add(NotationFactory.eINSTANCE.createLineStyle()); >+ return styles; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void decorateView(View containerView, View view, IAdaptable semanticAdapter, String semanticHint, int index, boolean persisted) { >+ if (semanticHint == null) { >+ semanticHint = UMLVisualIDRegistry.getType(org.eclipse.uml2.diagram.component.edit.parts.Class2EditPart.VISUAL_ID); >+ view.setType(semanticHint); >+ } >+ super.decorateView(containerView, view, semanticAdapter, semanticHint, index, persisted); >+ if (!PackageEditPart.MODEL_ID.equals(UMLVisualIDRegistry.getModelID(containerView))) { >+ EAnnotation shortcutAnnotation = EcoreFactory.eINSTANCE.createEAnnotation(); >+ shortcutAnnotation.setSource("Shortcut"); //$NON-NLS-1$ >+ shortcutAnnotation.getDetails().put("modelID", PackageEditPart.MODEL_ID); //$NON-NLS-1$ >+ view.getEAnnotations().add(shortcutAnnotation); >+ } >+ getViewService().createNode(semanticAdapter, view, UMLVisualIDRegistry.getType(ClassName2EditPart.VISUAL_ID), ViewUtil.APPEND, true, getPreferencesHint()); >+ } >+ >+} >Index: .cvsignore >=================================================================== >RCS file: .cvsignore >diff -N .cvsignore >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ .cvsignore 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,2 @@ >+bin >+.settings >Index: src/org/eclipse/uml2/diagram/component/part/UMLMatchingStrategy.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/component/part/UMLMatchingStrategy.java >diff -N src/org/eclipse/uml2/diagram/component/part/UMLMatchingStrategy.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/component/part/UMLMatchingStrategy.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,64 @@ >+package org.eclipse.uml2.diagram.component.part; >+ >+import org.eclipse.emf.common.util.URI; >+ >+import org.eclipse.emf.ecore.resource.Resource; >+ >+import org.eclipse.gmf.runtime.diagram.ui.parts.DiagramEditorInput; >+ >+import org.eclipse.gmf.runtime.notation.Diagram; >+ >+import org.eclipse.ui.IEditorInput; >+import org.eclipse.ui.IEditorMatchingStrategy; >+import org.eclipse.ui.IEditorPart; >+import org.eclipse.ui.IEditorReference; >+import org.eclipse.ui.PartInitException; >+ >+import org.eclipse.gmf.runtime.diagram.ui.resources.editor.parts.DiagramDocumentEditorMatchingStrategy; >+ >+/** >+ * @generated >+ */ >+public class UMLMatchingStrategy implements IEditorMatchingStrategy { >+ >+ /** >+ * @generated >+ */ >+ public boolean matches(IEditorReference editorRef, IEditorInput input) { >+ IEditorInput editorInput; >+ try { >+ editorInput = editorRef.getEditorInput(); >+ } catch (PartInitException e) { >+ return false; >+ } >+ >+ if (editorInput.equals(input)) { >+ return true; >+ } >+ >+ IEditorPart editor = editorRef.getEditor(false); >+ if (input instanceof DiagramEditorInput && editor instanceof UMLDiagramEditor) { >+ Diagram editorDiagram = ((UMLDiagramEditor) editor).getDiagram(); >+ Diagram otherDiagram = ((DiagramEditorInput) input).getDiagram(); >+ return equals(editorDiagram, otherDiagram); >+ } >+ return false; >+ } >+ >+ /** >+ * @generated >+ */ >+ private boolean equals(Diagram editorDiagram, Diagram otherDiagram) { >+ Resource editorResource = editorDiagram.eResource(); >+ Resource otherResource = otherDiagram.eResource(); >+ if (editorResource != null && otherResource != null) { >+ URI editorURI = editorResource.getURI(); >+ URI otherURI = otherResource.getURI(); >+ String editorURIFragment = editorResource.getURIFragment(editorDiagram); >+ String otherURIFragment = otherResource.getURIFragment(otherDiagram); >+ return editorURI.equals(otherURI) && editorURIFragment.equals(otherURIFragment); >+ } >+ return false; >+ } >+ >+} >Index: src/org/eclipse/uml2/diagram/component/edit/policies/Artifact2ItemSemanticEditPolicy.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/component/edit/policies/Artifact2ItemSemanticEditPolicy.java >diff -N src/org/eclipse/uml2/diagram/component/edit/policies/Artifact2ItemSemanticEditPolicy.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/component/edit/policies/Artifact2ItemSemanticEditPolicy.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,40 @@ >+package org.eclipse.uml2.diagram.component.edit.policies; >+ >+import org.eclipse.gef.commands.Command; >+import org.eclipse.gmf.runtime.emf.type.core.commands.DestroyElementCommand; >+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateRelationshipRequest; >+import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest; >+import org.eclipse.emf.ecore.EObject; >+import org.eclipse.emf.ecore.EAnnotation; >+import org.eclipse.gmf.runtime.notation.View; >+ >+/** >+ * @generated >+ */ >+public class Artifact2ItemSemanticEditPolicy extends UMLBaseItemSemanticEditPolicy { >+ >+ /** >+ * @generated >+ */ >+ protected Command getDestroyElementCommand(DestroyElementRequest req) { >+ return getMSLWrapper(new DestroyElementCommand(req) { >+ >+ protected EObject getElementToDestroy() { >+ View view = (View) getHost().getModel(); >+ EAnnotation annotation = view.getEAnnotation("Shortcut"); //$NON-NLS-1$ >+ if (annotation != null) { >+ return view; >+ } >+ return super.getElementToDestroy(); >+ } >+ >+ }); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateRelationshipCommand(CreateRelationshipRequest req) { >+ return super.getCreateRelationshipCommand(req); >+ } >+} >Index: src/org/eclipse/uml2/diagram/component/edit/policies/ComponentItemSemanticEditPolicy.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/component/edit/policies/ComponentItemSemanticEditPolicy.java >diff -N src/org/eclipse/uml2/diagram/component/edit/policies/ComponentItemSemanticEditPolicy.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/component/edit/policies/ComponentItemSemanticEditPolicy.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,120 @@ >+package org.eclipse.uml2.diagram.component.edit.policies; >+ >+import org.eclipse.gef.commands.Command; >+import org.eclipse.gmf.runtime.emf.type.core.commands.DestroyElementCommand; >+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateRelationshipRequest; >+import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest; >+import org.eclipse.emf.ecore.EObject; >+import org.eclipse.emf.ecore.EAnnotation; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.emf.ecore.EClass; >+ >+import org.eclipse.gef.commands.UnexecutableCommand; >+ >+import org.eclipse.gmf.runtime.emf.type.core.commands.CreateElementCommand; >+ >+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest; >+ >+import org.eclipse.uml2.diagram.component.providers.UMLElementTypes; >+import org.eclipse.uml2.uml.Port; >+import org.eclipse.uml2.uml.UMLPackage; >+ >+/** >+ * @generated >+ */ >+public class ComponentItemSemanticEditPolicy extends UMLBaseItemSemanticEditPolicy { >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCommand(CreateElementRequest req) { >+ if (UMLElementTypes.Port_3002 == req.getElementType()) { >+ if (req.getContainmentFeature() == null) { >+ req.setContainmentFeature(UMLPackage.eINSTANCE.getStructuredClassifier_OwnedAttribute()); >+ } >+ return getMSLWrapper(new CreatePort_3002Command(req)); >+ } >+ return super.getCreateCommand(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ private static class CreatePort_3002Command extends CreateElementCommand { >+ >+ /** >+ * @generated >+ */ >+ public CreatePort_3002Command(CreateElementRequest req) { >+ super(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EClass getEClassToEdit() { >+ return UMLPackage.eINSTANCE.getComponent(); >+ }; >+ >+ /** >+ * @generated >+ */ >+ protected EObject getElementToEdit() { >+ EObject container = ((CreateElementRequest) getRequest()).getContainer(); >+ if (container instanceof View) { >+ container = ((View) container).getElement(); >+ } >+ return container; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject doDefaultElementCreation() { >+ Port newElement = (Port) super.doDefaultElementCreation(); >+ if (newElement != null) { >+ UMLElementTypes.Initializers.Port_3002.init(newElement); >+ } >+ return newElement; >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getDestroyElementCommand(DestroyElementRequest req) { >+ return getMSLWrapper(new DestroyElementCommand(req) { >+ >+ protected EObject getElementToDestroy() { >+ View view = (View) getHost().getModel(); >+ EAnnotation annotation = view.getEAnnotation("Shortcut"); //$NON-NLS-1$ >+ if (annotation != null) { >+ return view; >+ } >+ return super.getElementToDestroy(); >+ } >+ >+ }); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateRelationshipCommand(CreateRelationshipRequest req) { >+ if (UMLElementTypes.InterfaceRealization_4001 == req.getElementType()) { >+ return req.getTarget() == null ? getCreateStartOutgoingInterfaceRealization4001Command(req) : null; >+ } >+ return super.getCreateRelationshipCommand(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateStartOutgoingInterfaceRealization4001Command(CreateRelationshipRequest req) { >+ if (!UMLBaseItemSemanticEditPolicy.LinkConstraints.InterfaceRealization_4001.canCreateLink(req, false)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ return new Command() { >+ }; >+ } >+} >Index: src/org/eclipse/uml2/diagram/component/view/factories/ClassNameViewFactory.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/component/view/factories/ClassNameViewFactory.java >diff -N src/org/eclipse/uml2/diagram/component/view/factories/ClassNameViewFactory.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/component/view/factories/ClassNameViewFactory.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,29 @@ >+package org.eclipse.uml2.diagram.component.view.factories; >+ >+import org.eclipse.core.runtime.IAdaptable; >+import org.eclipse.gmf.runtime.notation.View; >+import java.util.ArrayList; >+import java.util.List; >+ >+import org.eclipse.gmf.runtime.diagram.ui.view.factories.BasicNodeViewFactory; >+ >+/** >+ * @generated >+ */ >+public class ClassNameViewFactory extends BasicNodeViewFactory { >+ >+ /** >+ * @generated >+ */ >+ protected void decorateView(View containerView, View view, IAdaptable semanticAdapter, String semanticHint, int index, boolean persisted) { >+ super.decorateView(containerView, view, semanticAdapter, semanticHint, index, persisted); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected List createStyles(View view) { >+ List styles = new ArrayList(); >+ return styles; >+ } >+} >Index: src/org/eclipse/uml2/diagram/component/edit/policies/InterfaceItemSemanticEditPolicy.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/component/edit/policies/InterfaceItemSemanticEditPolicy.java >diff -N src/org/eclipse/uml2/diagram/component/edit/policies/InterfaceItemSemanticEditPolicy.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/component/edit/policies/InterfaceItemSemanticEditPolicy.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,164 @@ >+package org.eclipse.uml2.diagram.component.edit.policies; >+ >+import org.eclipse.gef.commands.Command; >+import org.eclipse.gmf.runtime.emf.type.core.commands.DestroyElementCommand; >+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateRelationshipRequest; >+import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest; >+import org.eclipse.emf.ecore.EObject; >+import org.eclipse.emf.ecore.EAnnotation; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.emf.ecore.EClass; >+ >+import org.eclipse.gef.commands.UnexecutableCommand; >+ >+import org.eclipse.gmf.runtime.emf.type.core.commands.CreateRelationshipCommand; >+import org.eclipse.gmf.runtime.emf.type.core.commands.SetValueCommand; >+ >+import org.eclipse.gmf.runtime.emf.type.core.requests.SetRequest; >+ >+import org.eclipse.uml2.diagram.component.providers.UMLElementTypes; >+import org.eclipse.uml2.uml.BehavioredClassifier; >+import org.eclipse.uml2.uml.Interface; >+import org.eclipse.uml2.uml.InterfaceRealization; >+import org.eclipse.uml2.uml.Port; >+import org.eclipse.uml2.uml.UMLPackage; >+ >+/** >+ * @generated >+ */ >+public class InterfaceItemSemanticEditPolicy extends UMLBaseItemSemanticEditPolicy { >+ >+ /** >+ * @generated >+ */ >+ protected Command getDestroyElementCommand(DestroyElementRequest req) { >+ return getMSLWrapper(new DestroyElementCommand(req) { >+ >+ protected EObject getElementToDestroy() { >+ View view = (View) getHost().getModel(); >+ EAnnotation annotation = view.getEAnnotation("Shortcut"); //$NON-NLS-1$ >+ if (annotation != null) { >+ return view; >+ } >+ return super.getElementToDestroy(); >+ } >+ >+ }); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateRelationshipCommand(CreateRelationshipRequest req) { >+ if (UMLElementTypes.InterfaceRealization_4001 == req.getElementType()) { >+ return req.getTarget() == null ? null : getCreateCompleteIncomingInterfaceRealization4001Command(req); >+ } >+ if (UMLElementTypes.PortProvided_4006 == req.getElementType()) { >+ return req.getTarget() == null ? null : getCreateCompleteIncomingPort_Provided4006Command(req); >+ } >+ if (UMLElementTypes.PortRequired_4004 == req.getElementType()) { >+ return req.getTarget() == null ? null : getCreateCompleteIncomingPort_Required4004Command(req); >+ } >+ return super.getCreateRelationshipCommand(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingInterfaceRealization4001Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof BehavioredClassifier)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ final BehavioredClassifier element = (BehavioredClassifier) getRelationshipContainer(req.getSource(), UMLPackage.eINSTANCE.getBehavioredClassifier(), req.getElementType()); >+ if (element == null) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ if (!UMLBaseItemSemanticEditPolicy.LinkConstraints.InterfaceRealization_4001.canCreateLink(req, false)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ if (req.getContainmentFeature() == null) { >+ req.setContainmentFeature(UMLPackage.eINSTANCE.getBehavioredClassifier_InterfaceRealization()); >+ } >+ return getMSLWrapper(new CreateIncomingInterfaceRealization4001Command(req) { >+ >+ protected EObject getElementToEdit() { >+ return element; >+ } >+ }); >+ } >+ >+ /** >+ * @generated >+ */ >+ private static class CreateIncomingInterfaceRealization4001Command extends CreateRelationshipCommand { >+ >+ /** >+ * @generated >+ */ >+ public CreateIncomingInterfaceRealization4001Command(CreateRelationshipRequest req) { >+ super(req); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EClass getEClassToEdit() { >+ return UMLPackage.eINSTANCE.getBehavioredClassifier(); >+ }; >+ >+ /** >+ * @generated >+ */ >+ protected void setElementToEdit(EObject element) { >+ throw new UnsupportedOperationException(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject doDefaultElementCreation() { >+ InterfaceRealization newElement = (InterfaceRealization) super.doDefaultElementCreation(); >+ if (newElement != null) { >+ newElement.setContract((Interface) getTarget()); >+ newElement.setImplementingClassifier((BehavioredClassifier) getSource()); >+ } >+ return newElement; >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingPort_Provided4006Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof Port)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ Port element = (Port) req.getSource(); >+ if (element.getProvideds().contains(req.getTarget())) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ if (!UMLBaseItemSemanticEditPolicy.LinkConstraints.PortProvided_4006.canCreateLink(req, false)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ SetRequest setReq = new SetRequest(req.getSource(), UMLPackage.eINSTANCE.getPort_Provided(), req.getTarget()); >+ return getMSLWrapper(new SetValueCommand(setReq)); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateCompleteIncomingPort_Required4004Command(CreateRelationshipRequest req) { >+ if (!(req.getSource() instanceof Port)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ Port element = (Port) req.getSource(); >+ if (element.getRequireds().contains(req.getTarget())) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ if (!UMLBaseItemSemanticEditPolicy.LinkConstraints.PortRequired_4004.canCreateLink(req, false)) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ SetRequest setReq = new SetRequest(req.getSource(), UMLPackage.eINSTANCE.getPort_Required(), req.getTarget()); >+ return getMSLWrapper(new SetValueCommand(setReq)); >+ } >+} >Index: src/org/eclipse/uml2/diagram/component/view/factories/ComponentNameViewFactory.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/component/view/factories/ComponentNameViewFactory.java >diff -N src/org/eclipse/uml2/diagram/component/view/factories/ComponentNameViewFactory.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/component/view/factories/ComponentNameViewFactory.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,29 @@ >+package org.eclipse.uml2.diagram.component.view.factories; >+ >+import org.eclipse.core.runtime.IAdaptable; >+import org.eclipse.gmf.runtime.notation.View; >+import java.util.ArrayList; >+import java.util.List; >+ >+import org.eclipse.gmf.runtime.diagram.ui.view.factories.BasicNodeViewFactory; >+ >+/** >+ * @generated >+ */ >+public class ComponentNameViewFactory extends BasicNodeViewFactory { >+ >+ /** >+ * @generated >+ */ >+ protected void decorateView(View containerView, View view, IAdaptable semanticAdapter, String semanticHint, int index, boolean persisted) { >+ super.decorateView(containerView, view, semanticAdapter, semanticHint, index, persisted); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected List createStyles(View view) { >+ List styles = new ArrayList(); >+ return styles; >+ } >+} >Index: src/org/eclipse/uml2/diagram/component/navigator/UMLNavigatorLinkHelper.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/component/navigator/UMLNavigatorLinkHelper.java >diff -N src/org/eclipse/uml2/diagram/component/navigator/UMLNavigatorLinkHelper.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/component/navigator/UMLNavigatorLinkHelper.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,92 @@ >+package org.eclipse.uml2.diagram.component.navigator; >+ >+import org.eclipse.core.resources.IFile; >+ >+import org.eclipse.emf.ecore.EObject; >+ >+import org.eclipse.emf.ecore.resource.Resource; >+ >+import org.eclipse.gef.EditPart; >+ >+import org.eclipse.gmf.runtime.notation.View; >+ >+import org.eclipse.jface.viewers.IStructuredSelection; >+import org.eclipse.jface.viewers.StructuredSelection; >+ >+import org.eclipse.ui.IEditorInput; >+import org.eclipse.ui.IEditorPart; >+import org.eclipse.ui.IWorkbenchPage; >+ >+import org.eclipse.ui.navigator.ILinkHelper; >+ >+import org.eclipse.ui.part.FileEditorInput; >+import org.eclipse.uml2.diagram.component.edit.parts.PackageEditPart; >+import org.eclipse.uml2.diagram.component.part.UMLDiagramEditor; >+ >+/** >+ * @generated >+ */ >+public class UMLNavigatorLinkHelper implements ILinkHelper { >+ >+ /** >+ * @generated >+ */ >+ public IStructuredSelection findSelection(IEditorInput anInput) { >+ return StructuredSelection.EMPTY; >+ } >+ >+ /** >+ * @generated >+ */ >+ public void activateEditor(IWorkbenchPage aPage, IStructuredSelection aSelection) { >+ if (aSelection == null || aSelection.isEmpty()) { >+ return; >+ } >+ if (aSelection.getFirstElement() instanceof UMLAbstractNavigatorItem) { >+ UMLAbstractNavigatorItem navigatorItem = (UMLAbstractNavigatorItem) aSelection.getFirstElement(); >+ if (!PackageEditPart.MODEL_ID.equals(navigatorItem.getModelID())) { >+ return; >+ } >+ Object parentFile = navigatorItem.getParent(); >+ while (parentFile instanceof UMLAbstractNavigatorItem) { >+ parentFile = ((UMLAbstractNavigatorItem) parentFile).getParent(); >+ } >+ if (false == parentFile instanceof IFile) { >+ return; >+ } >+ IEditorInput fileInput = new FileEditorInput((IFile) parentFile); >+ IEditorPart editor = aPage.findEditor(fileInput); >+ if (editor == null) { >+ return; >+ } >+ aPage.bringToTop(editor); >+ if (editor instanceof UMLDiagramEditor) { >+ UMLDiagramEditor diagramEditor = (UMLDiagramEditor) editor; >+ Resource diagramResource = diagramEditor.getDiagram().eResource(); >+ >+ View navigatorView = null; >+ if (navigatorItem instanceof UMLNavigatorItem) { >+ navigatorView = ((UMLNavigatorItem) navigatorItem).getView(); >+ } else if (navigatorItem instanceof UMLNavigatorGroup) { >+ UMLNavigatorGroup group = (UMLNavigatorGroup) navigatorItem; >+ if (group.getParent() instanceof UMLNavigatorItem) { >+ navigatorView = ((UMLNavigatorItem) group.getParent()).getView(); >+ } >+ } >+ >+ if (navigatorView == null) { >+ return; >+ } >+ EObject selectedView = diagramResource.getEObject(navigatorView.eResource().getURIFragment(navigatorView)); >+ if (selectedView == null) { >+ return; >+ } >+ EditPart selectedEditPart = (EditPart) diagramEditor.getDiagramGraphicalViewer().getEditPartRegistry().get(selectedView); >+ if (selectedEditPart != null) { >+ diagramEditor.getDiagramGraphicalViewer().select(selectedEditPart); >+ } >+ } >+ } >+ } >+ >+} >Index: icons/linkTargetNavigatorGroup.gif >=================================================================== >RCS file: icons/linkTargetNavigatorGroup.gif >diff -N icons/linkTargetNavigatorGroup.gif >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ icons/linkTargetNavigatorGroup.gif 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,5 @@ >+GIF89aÕÿÿr/GøØf'øÐxøàøÐf>2èÆøè°èÐøðÈÿÿÿÃ6úöºøà øØ?]FøèÒ«üößãϹ´2àÀxr+ðØ?¥l$yO@_l$?R¼2ï߯¼ 2à 6!ù,s@pH,?È#âèh:¨T0ô4® >+à?p©Ñd¢Y`B¡p8G AØ%%HÁçW¶ _B???B¥¦¥ B®©C³´µI·¸FA;Content-Type: image/gif >+ >+GIF89aÕÿÿr/GøØf'øÐxøàøÐf>2èÆøè°èÐøðÈÿÿÿÃ6úöºøà øØ?]FøèÒ«üößãϹ´2àÀxr+ðØ?¥l$yO@_l$?R¼2ï߯¼ 2à 6!ù,s@pH,?È#âèh:¨T0ô4® >+à?p©Ñd¢Y`B¡p8G AØ%%HÁçW¶ _B???B¥¦¥ B®©C³´µI·¸FA; >Index: META-INF/MANIFEST.MF >=================================================================== >RCS file: META-INF/MANIFEST.MF >diff -N META-INF/MANIFEST.MF >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ META-INF/MANIFEST.MF 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,46 @@ >+Manifest-Version: 1.0 >+Bundle-ManifestVersion: 2 >+Bundle-Name: %pluginName >+Bundle-SymbolicName: org.eclipse.uml2.diagram.component; singleton:=true >+Bundle-Version: 1.0.0.qualifier >+Bundle-ClassPath: . >+Bundle-Activator: org.eclipse.uml2.diagram.component.part.UMLDiagramEditorPlugin >+Bundle-Vendor: %providerName >+Bundle-Localization: plugin >+Export-Package: org.eclipse.uml2.diagram.component.edit.parts, >+ org.eclipse.uml2.diagram.component.part, >+ org.eclipse.uml2.diagram.component.providers >+Require-Bundle: org.eclipse.core.runtime, >+ org.eclipse.core.resources, >+ org.eclipse.jface, >+ org.eclipse.ui.ide, >+ org.eclipse.ui.views, >+ org.eclipse.ui.workbench, >+ org.eclipse.ui.workbench.texteditor, >+ org.eclipse.ui.navigator, >+ org.eclipse.emf.ecore, >+ org.eclipse.emf.ecore.xmi, >+ org.eclipse.emf.edit.ui, >+ org.eclipse.gef;visibility:=reexport, >+ org.eclipse.gmf.runtime.emf.core, >+ org.eclipse.gmf.runtime.emf.commands.core, >+ org.eclipse.gmf.runtime.emf.ui.properties, >+ org.eclipse.gmf.runtime.diagram.ui, >+ org.eclipse.gmf.runtime.diagram.ui.properties, >+ org.eclipse.gmf.runtime.diagram.ui.providers, >+ org.eclipse.gmf.runtime.diagram.ui.providers.ide, >+ org.eclipse.gmf.runtime.diagram.ui.render, >+ org.eclipse.gmf.runtime.diagram.ui.resources.editor, >+ org.eclipse.gmf.runtime.diagram.ui.resources.editor.ide, >+ org.eclipse.gmf.runtime.notation.providers, >+ org.eclipse.uml2.uml;visibility:=reexport, >+ org.eclipse.uml2.uml.edit;visibility:=reexport, >+ org.eclipse.emf.ecore;visibility:=reexport, >+ org.eclipse.emf.ecore.edit;visibility:=reexport, >+ org.eclipse.emf.query.ocl;visibility:=reexport, >+ org.eclipse.emf.ocl;visibility:=reexport, >+ org.eclipse.gmf.runtime.draw2d.ui;visibility:=reexport, >+ org.eclipse.draw2d;visibility:=reexport, >+ org.eclipse.uml2.diagram.common;visibility:=reexport, >+ org.eclipse.uml2.diagram.parser >+Eclipse-LazyStart: true >Index: src/org/eclipse/uml2/diagram/component/edit/parts/PortNameEditPart.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/component/edit/parts/PortNameEditPart.java >diff -N src/org/eclipse/uml2/diagram/component/edit/parts/PortNameEditPart.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/component/edit/parts/PortNameEditPart.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,544 @@ >+package org.eclipse.uml2.diagram.component.edit.parts; >+ >+import org.eclipse.draw2d.Label; >+import org.eclipse.draw2d.IFigure; >+import org.eclipse.draw2d.geometry.Point; >+import org.eclipse.gef.EditPolicy; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.ITextAwareEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.LabelDirectEditPolicy; >+import org.eclipse.gmf.runtime.notation.View; >+import java.util.Collections; >+import java.util.List; >+ >+import org.eclipse.emf.common.notify.Notification; >+ >+import org.eclipse.emf.ecore.EObject; >+ >+import org.eclipse.emf.transaction.RunnableWithResult; >+ >+import org.eclipse.gef.AccessibleEditPart; >+import org.eclipse.gef.Request; >+ >+import org.eclipse.gef.requests.DirectEditRequest; >+ >+import org.eclipse.gef.tools.DirectEditManager; >+ >+import org.eclipse.gmf.runtime.common.ui.services.parser.IParser; >+import org.eclipse.gmf.runtime.common.ui.services.parser.IParserEditStatus; >+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserEditStatus; >+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserOptions; >+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserService; >+ >+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart; >+ >+import org.eclipse.gmf.runtime.diagram.ui.l10n.DiagramColorRegistry; >+ >+import org.eclipse.gmf.runtime.diagram.ui.requests.RequestConstants; >+ >+import org.eclipse.gmf.runtime.diagram.ui.tools.TextDirectEditManager; >+ >+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel; >+ >+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter; >+ >+import org.eclipse.gmf.runtime.emf.type.core.IElementType; >+ >+import org.eclipse.gmf.runtime.emf.ui.services.parser.ISemanticParser; >+import org.eclipse.gmf.runtime.emf.ui.services.parser.ParserHintAdapter; >+ >+import org.eclipse.gmf.runtime.notation.FontStyle; >+import org.eclipse.gmf.runtime.notation.NotationPackage; >+ >+import org.eclipse.jface.text.contentassist.IContentAssistProcessor; >+ >+import org.eclipse.jface.viewers.ICellEditorValidator; >+ >+import org.eclipse.swt.SWT; >+ >+import org.eclipse.swt.accessibility.AccessibleEvent; >+ >+import org.eclipse.swt.graphics.Color; >+import org.eclipse.swt.graphics.FontData; >+import org.eclipse.swt.graphics.Image; >+import org.eclipse.uml2.diagram.component.edit.policies.UMLTextSelectionEditPolicy; >+import org.eclipse.uml2.diagram.component.part.UMLVisualIDRegistry; >+import org.eclipse.uml2.diagram.component.providers.UMLElementTypes; >+ >+/** >+ * @generated >+ */ >+public class PortNameEditPart extends UMLExtNodeLabelEditPart implements ITextAwareEditPart { >+ >+ /** >+ * @generated >+ */ >+ public static final int VISUAL_ID = 5003; >+ >+ /** >+ * @generated >+ */ >+ private DirectEditManager manager; >+ >+ /** >+ * @generated >+ */ >+ private IParser parser; >+ >+ /** >+ * @generated >+ */ >+ private List parserElements; >+ >+ /** >+ * @generated >+ */ >+ private String defaultText; >+ >+ /** >+ * @generated >+ */ >+ static { >+ registerSnapBackPosition(UMLVisualIDRegistry.getType(PortNameEditPart.VISUAL_ID), new Point(0, 0)); >+ } >+ >+ /** >+ * @generated >+ */ >+ public PortNameEditPart(View view) { >+ super(view); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void createDefaultEditPolicies() { >+ super.createDefaultEditPolicies(); >+ installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE, new LabelDirectEditPolicy()); >+ >+ } >+ >+ /** >+ * @generated >+ */ >+ protected String getLabelTextHelper(IFigure figure) { >+ if (figure instanceof WrapLabel) { >+ return ((WrapLabel) figure).getText(); >+ } else { >+ return ((Label) figure).getText(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setLabelTextHelper(IFigure figure, String text) { >+ if (figure instanceof WrapLabel) { >+ ((WrapLabel) figure).setText(text); >+ } else { >+ ((Label) figure).setText(text); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Image getLabelIconHelper(IFigure figure) { >+ if (figure instanceof WrapLabel) { >+ return ((WrapLabel) figure).getIcon(); >+ } else { >+ return ((Label) figure).getIcon(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setLabelIconHelper(IFigure figure, Image icon) { >+ if (figure instanceof WrapLabel) { >+ ((WrapLabel) figure).setIcon(icon); >+ } else { >+ ((Label) figure).setIcon(icon); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ public void setLabel(IFigure figure) { >+ unregisterVisuals(); >+ setFigure(figure); >+ defaultText = getLabelTextHelper(figure); >+ registerVisuals(); >+ refreshVisuals(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected List getModelChildren() { >+ return Collections.EMPTY_LIST; >+ } >+ >+ /** >+ * @generated >+ */ >+ public IGraphicalEditPart getChildBySemanticHint(String semanticHint) { >+ return null; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject getParserElement() { >+ EObject element = resolveSemanticElement(); >+ return element != null ? element : (View) getModel(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Image getLabelIcon() { >+ return null; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected String getLabelText() { >+ String text = null; >+ if (getParser() != null) { >+ text = getParser().getPrintString(new EObjectAdapter(getParserElement()), getParserOptions().intValue()); >+ } >+ if (text == null || text.length() == 0) { >+ text = defaultText; >+ } >+ return text; >+ } >+ >+ /** >+ * @generated >+ */ >+ public void setLabelText(String text) { >+ setLabelTextHelper(getFigure(), text); >+ Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE); >+ if (pdEditPolicy instanceof UMLTextSelectionEditPolicy) { >+ ((UMLTextSelectionEditPolicy) pdEditPolicy).refreshFeedback(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ public String getEditText() { >+ if (getParser() == null) { >+ return ""; //$NON-NLS-1$ >+ } >+ return getParser().getEditString(new EObjectAdapter(getParserElement()), getParserOptions().intValue()); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected boolean isEditable() { >+ return getEditText() != null; >+ } >+ >+ /** >+ * @generated >+ */ >+ public ICellEditorValidator getEditTextValidator() { >+ return new ICellEditorValidator() { >+ >+ public String isValid(final Object value) { >+ if (value instanceof String) { >+ final EObject element = getParserElement(); >+ final IParser parser = getParser(); >+ try { >+ IParserEditStatus valid = (IParserEditStatus) getEditingDomain().runExclusive(new RunnableWithResult.Impl() { >+ >+ public void run() { >+ setResult(parser.isValidEditString(new EObjectAdapter(element), (String) value)); >+ } >+ }); >+ return valid.getCode() == ParserEditStatus.EDITABLE ? null : valid.getMessage(); >+ } catch (InterruptedException ie) { >+ ie.printStackTrace(); >+ } >+ } >+ >+ // shouldn't get here >+ return null; >+ } >+ }; >+ } >+ >+ /** >+ * @generated >+ */ >+ public IContentAssistProcessor getCompletionProcessor() { >+ if (getParser() == null) { >+ return null; >+ } >+ return getParser().getCompletionProcessor(new EObjectAdapter(getParserElement())); >+ } >+ >+ /** >+ * @generated >+ */ >+ public ParserOptions getParserOptions() { >+ return ParserOptions.NONE; >+ } >+ >+ /** >+ * @generated >+ */ >+ public IParser getParser() { >+ if (parser == null) { >+ String parserHint = ((View) getModel()).getType(); >+ ParserHintAdapter hintAdapter = new ParserHintAdapter(getParserElement(), parserHint) { >+ >+ public Object getAdapter(Class adapter) { >+ if (IElementType.class.equals(adapter)) { >+ return UMLElementTypes.Port_3002; >+ } >+ return super.getAdapter(adapter); >+ } >+ }; >+ parser = ParserService.getInstance().getParser(hintAdapter); >+ } >+ return parser; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected DirectEditManager getManager() { >+ if (manager == null) { >+ setManager(new TextDirectEditManager(this, TextDirectEditManager.getTextCellEditorClass(this), UMLEditPartFactory.getTextCellEditorLocator(this))); >+ } >+ return manager; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setManager(DirectEditManager manager) { >+ this.manager = manager; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void performDirectEdit() { >+ getManager().show(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void performDirectEdit(Point eventLocation) { >+ if (getManager().getClass() == TextDirectEditManager.class) { >+ ((TextDirectEditManager) getManager()).show(eventLocation.getSWTPoint()); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ private void performDirectEdit(char initialCharacter) { >+ if (getManager() instanceof TextDirectEditManager) { >+ ((TextDirectEditManager) getManager()).show(initialCharacter); >+ } else { >+ performDirectEdit(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void performDirectEditRequest(Request request) { >+ final Request theRequest = request; >+ try { >+ getEditingDomain().runExclusive(new Runnable() { >+ >+ public void run() { >+ if (isActive() && isEditable()) { >+ if (theRequest.getExtendedData().get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR) instanceof Character) { >+ Character initialChar = (Character) theRequest.getExtendedData().get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR); >+ performDirectEdit(initialChar.charValue()); >+ } else if ((theRequest instanceof DirectEditRequest) && (getEditText().equals(getLabelText()))) { >+ DirectEditRequest editRequest = (DirectEditRequest) theRequest; >+ performDirectEdit(editRequest.getLocation()); >+ } else { >+ performDirectEdit(); >+ } >+ } >+ } >+ }); >+ } catch (InterruptedException e) { >+ e.printStackTrace(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshVisuals() { >+ super.refreshVisuals(); >+ refreshLabel(); >+ refreshFont(); >+ refreshFontColor(); >+ refreshUnderline(); >+ refreshStrikeThrough(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshLabel() { >+ setLabelTextHelper(getFigure(), getLabelText()); >+ setLabelIconHelper(getFigure(), getLabelIcon()); >+ Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE); >+ if (pdEditPolicy instanceof UMLTextSelectionEditPolicy) { >+ ((UMLTextSelectionEditPolicy) pdEditPolicy).refreshFeedback(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshUnderline() { >+ FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle()); >+ if (style != null && getFigure() instanceof WrapLabel) { >+ ((WrapLabel) getFigure()).setTextUnderline(style.isUnderline()); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshStrikeThrough() { >+ FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle()); >+ if (style != null && getFigure() instanceof WrapLabel) { >+ ((WrapLabel) getFigure()).setTextStrikeThrough(style.isStrikeThrough()); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshFont() { >+ FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle()); >+ if (style != null) { >+ FontData fontData = new FontData(style.getFontName(), style.getFontHeight(), (style.isBold() ? SWT.BOLD : SWT.NORMAL) | (style.isItalic() ? SWT.ITALIC : SWT.NORMAL)); >+ setFont(fontData); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setFontColor(Color color) { >+ getFigure().setForegroundColor(color); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void addSemanticListeners() { >+ if (getParser() instanceof ISemanticParser) { >+ EObject element = resolveSemanticElement(); >+ parserElements = ((ISemanticParser) getParser()).getSemanticElementsBeingParsed(element); >+ for (int i = 0; i < parserElements.size(); i++) { >+ addListenerFilter("SemanticModel" + i, this, (EObject) parserElements.get(i)); //$NON-NLS-1$ >+ } >+ } else { >+ super.addSemanticListeners(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void removeSemanticListeners() { >+ if (parserElements != null) { >+ for (int i = 0; i < parserElements.size(); i++) { >+ removeListenerFilter("SemanticModel" + i); //$NON-NLS-1$ >+ } >+ } else { >+ super.removeSemanticListeners(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected AccessibleEditPart getAccessibleEditPart() { >+ if (accessibleEP == null) { >+ accessibleEP = new AccessibleGraphicalEditPart() { >+ >+ public void getName(AccessibleEvent e) { >+ e.result = getLabelTextHelper(getFigure()); >+ } >+ }; >+ } >+ return accessibleEP; >+ } >+ >+ /** >+ * @generated >+ */ >+ private View getFontStyleOwnerView() { >+ return getPrimaryView(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void handleNotificationEvent(Notification event) { >+ Object feature = event.getFeature(); >+ if (NotationPackage.eINSTANCE.getFontStyle_FontColor().equals(feature)) { >+ Integer c = (Integer) event.getNewValue(); >+ setFontColor(DiagramColorRegistry.getInstance().getColor(c)); >+ } else if (NotationPackage.eINSTANCE.getFontStyle_Underline().equals(feature)) { >+ refreshUnderline(); >+ } else if (NotationPackage.eINSTANCE.getFontStyle_StrikeThrough().equals(feature)) { >+ refreshStrikeThrough(); >+ } else if (NotationPackage.eINSTANCE.getFontStyle_FontHeight().equals(feature) || NotationPackage.eINSTANCE.getFontStyle_FontName().equals(feature) >+ || NotationPackage.eINSTANCE.getFontStyle_Bold().equals(feature) || NotationPackage.eINSTANCE.getFontStyle_Italic().equals(feature)) { >+ refreshFont(); >+ } else { >+ if (getParser() != null && getParser().isAffectingEvent(event, getParserOptions().intValue())) { >+ refreshLabel(); >+ } >+ if (getParser() instanceof ISemanticParser) { >+ ISemanticParser modelParser = (ISemanticParser) getParser(); >+ if (modelParser.areSemanticElementsAffected(null, event)) { >+ removeSemanticListeners(); >+ if (resolveSemanticElement() != null) { >+ addSemanticListeners(); >+ } >+ refreshLabel(); >+ } >+ } >+ } >+ super.handleNotificationEvent(event); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected IFigure createFigure() { >+ IFigure label = createFigurePrim(); >+ defaultText = getLabelTextHelper(label); >+ return label; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected IFigure createFigurePrim() { >+ return new WrapLabel(); >+ } >+ >+} >Index: src/org/eclipse/uml2/diagram/component/edit/helpers/ArtifactEditHelper.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/component/edit/helpers/ArtifactEditHelper.java >diff -N src/org/eclipse/uml2/diagram/component/edit/helpers/ArtifactEditHelper.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/component/edit/helpers/ArtifactEditHelper.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,7 @@ >+package org.eclipse.uml2.diagram.component.edit.helpers; >+ >+/** >+ * @generated >+ */ >+public class ArtifactEditHelper extends UMLBaseEditHelper { >+} >Index: src/org/eclipse/uml2/diagram/component/edit/helpers/InterfaceEditHelperAdvice.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/component/edit/helpers/InterfaceEditHelperAdvice.java >diff -N src/org/eclipse/uml2/diagram/component/edit/helpers/InterfaceEditHelperAdvice.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/component/edit/helpers/InterfaceEditHelperAdvice.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,9 @@ >+package org.eclipse.uml2.diagram.component.edit.helpers; >+ >+import org.eclipse.gmf.runtime.emf.type.core.edithelper.AbstractEditHelperAdvice; >+ >+/** >+ * @generated >+ */ >+public class InterfaceEditHelperAdvice extends AbstractEditHelperAdvice { >+} >Index: src/org/eclipse/uml2/diagram/component/edit/policies/ComponentContents2CanonicalEditPolicy.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/component/edit/policies/ComponentContents2CanonicalEditPolicy.java >diff -N src/org/eclipse/uml2/diagram/component/edit/policies/ComponentContents2CanonicalEditPolicy.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/component/edit/policies/ComponentContents2CanonicalEditPolicy.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,71 @@ >+package org.eclipse.uml2.diagram.component.edit.policies; >+ >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy; >+import org.eclipse.gmf.runtime.notation.View; >+import java.util.Iterator; >+import java.util.LinkedList; >+import java.util.List; >+ >+import org.eclipse.emf.ecore.EObject; >+ >+import org.eclipse.uml2.diagram.component.edit.parts.ArtifactEditPart; >+import org.eclipse.uml2.diagram.component.edit.parts.ClassEditPart; >+import org.eclipse.uml2.diagram.component.edit.parts.Component2EditPart; >+import org.eclipse.uml2.diagram.component.edit.parts.InterfaceEditPart; >+import org.eclipse.uml2.diagram.component.part.UMLVisualIDRegistry; >+import org.eclipse.uml2.uml.Component; >+ >+/** >+ * @generated >+ */ >+public class ComponentContents2CanonicalEditPolicy extends CanonicalEditPolicy { >+ >+ /** >+ * @generated >+ */ >+ protected List getSemanticChildrenList() { >+ List result = new LinkedList(); >+ EObject modelObject = ((View) getHost().getModel()).getElement(); >+ View viewObject = (View) getHost().getModel(); >+ EObject nextValue; >+ int nodeVID; >+ for (Iterator values = ((Component) modelObject).getPackagedElements().iterator(); values.hasNext();) { >+ nextValue = (EObject) values.next(); >+ nodeVID = UMLVisualIDRegistry.getNodeVisualID(viewObject, nextValue); >+ switch (nodeVID) { >+ case Component2EditPart.VISUAL_ID: { >+ result.add(nextValue); >+ break; >+ } >+ case ArtifactEditPart.VISUAL_ID: { >+ result.add(nextValue); >+ break; >+ } >+ case ClassEditPart.VISUAL_ID: { >+ result.add(nextValue); >+ break; >+ } >+ case InterfaceEditPart.VISUAL_ID: { >+ result.add(nextValue); >+ break; >+ } >+ } >+ } >+ return result; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected boolean shouldDeleteView(View view) { >+ return view.isSetElement() && view.getElement() != null && view.getElement().eIsProxy(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected String getDefaultFactoryHint() { >+ return null; >+ } >+ >+} >Index: src/org/eclipse/uml2/diagram/component/edit/parts/ArtifactName2EditPart.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/component/edit/parts/ArtifactName2EditPart.java >diff -N src/org/eclipse/uml2/diagram/component/edit/parts/ArtifactName2EditPart.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/component/edit/parts/ArtifactName2EditPart.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,574 @@ >+package org.eclipse.uml2.diagram.component.edit.parts; >+ >+import java.util.ArrayList; >+import java.util.List; >+import org.eclipse.gef.EditPolicy; >+import org.eclipse.gef.GraphicalEditPart; >+import org.eclipse.gef.Request; >+import org.eclipse.gef.commands.Command; >+import org.eclipse.gef.editpolicies.NonResizableEditPolicy; >+import org.eclipse.gef.handles.NonResizableHandleKit; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.ITextAwareEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.LabelDirectEditPolicy; >+import org.eclipse.gmf.runtime.notation.View; >+import java.util.Collections; >+ >+import org.eclipse.draw2d.IFigure; >+import org.eclipse.draw2d.Label; >+ >+import org.eclipse.draw2d.geometry.Point; >+ >+import org.eclipse.emf.common.notify.Notification; >+ >+import org.eclipse.emf.ecore.EObject; >+ >+import org.eclipse.emf.transaction.RunnableWithResult; >+ >+import org.eclipse.gef.AccessibleEditPart; >+ >+import org.eclipse.gef.requests.DirectEditRequest; >+ >+import org.eclipse.gef.tools.DirectEditManager; >+ >+import org.eclipse.gmf.runtime.common.ui.services.parser.IParser; >+import org.eclipse.gmf.runtime.common.ui.services.parser.IParserEditStatus; >+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserEditStatus; >+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserOptions; >+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserService; >+ >+import org.eclipse.gmf.runtime.diagram.ui.editparts.CompartmentEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart; >+ >+import org.eclipse.gmf.runtime.diagram.ui.l10n.DiagramColorRegistry; >+ >+import org.eclipse.gmf.runtime.diagram.ui.requests.RequestConstants; >+ >+import org.eclipse.gmf.runtime.diagram.ui.tools.TextDirectEditManager; >+ >+import org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel; >+ >+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter; >+ >+import org.eclipse.gmf.runtime.emf.type.core.IElementType; >+ >+import org.eclipse.gmf.runtime.emf.ui.services.parser.ISemanticParser; >+import org.eclipse.gmf.runtime.emf.ui.services.parser.ParserHintAdapter; >+ >+import org.eclipse.gmf.runtime.notation.FontStyle; >+import org.eclipse.gmf.runtime.notation.NotationPackage; >+ >+import org.eclipse.jface.resource.ImageDescriptor; >+ >+import org.eclipse.jface.text.contentassist.IContentAssistProcessor; >+ >+import org.eclipse.jface.viewers.ICellEditorValidator; >+ >+import org.eclipse.swt.SWT; >+ >+import org.eclipse.swt.accessibility.AccessibleEvent; >+ >+import org.eclipse.swt.graphics.Color; >+import org.eclipse.swt.graphics.FontData; >+import org.eclipse.swt.graphics.Image; >+import org.eclipse.uml2.diagram.component.edit.policies.UMLTextSelectionEditPolicy; >+import org.eclipse.uml2.diagram.component.part.UMLDiagramEditorPlugin; >+import org.eclipse.uml2.diagram.component.providers.UMLElementTypes; >+ >+/** >+ * @generated >+ */ >+public class ArtifactName2EditPart extends CompartmentEditPart implements ITextAwareEditPart { >+ >+ /** >+ * @generated >+ */ >+ public static final int VISUAL_ID = 5004; >+ >+ /** >+ * @generated >+ */ >+ private DirectEditManager manager; >+ >+ /** >+ * @generated >+ */ >+ private IParser parser; >+ >+ /** >+ * @generated >+ */ >+ private List parserElements; >+ >+ /** >+ * @generated >+ */ >+ private String defaultText; >+ >+ /** >+ * @generated >+ */ >+ public ArtifactName2EditPart(View view) { >+ super(view); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void createDefaultEditPolicies() { >+ super.createDefaultEditPolicies(); >+ installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE, new LabelDirectEditPolicy()); >+ installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE, new NonResizableEditPolicy() { >+ >+ protected List createSelectionHandles() { >+ List handles = new ArrayList(); >+ NonResizableHandleKit.addMoveHandle((GraphicalEditPart) getHost(), handles); >+ return handles; >+ } >+ >+ public Command getCommand(Request request) { >+ return null; >+ } >+ >+ public boolean understandsRequest(Request request) { >+ return false; >+ } >+ }); >+ >+ } >+ >+ /** >+ * @generated >+ */ >+ protected String getLabelTextHelper(IFigure figure) { >+ if (figure instanceof WrapLabel) { >+ return ((WrapLabel) figure).getText(); >+ } else { >+ return ((Label) figure).getText(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setLabelTextHelper(IFigure figure, String text) { >+ if (figure instanceof WrapLabel) { >+ ((WrapLabel) figure).setText(text); >+ } else { >+ ((Label) figure).setText(text); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Image getLabelIconHelper(IFigure figure) { >+ if (figure instanceof WrapLabel) { >+ return ((WrapLabel) figure).getIcon(); >+ } else { >+ return ((Label) figure).getIcon(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setLabelIconHelper(IFigure figure, Image icon) { >+ if (figure instanceof WrapLabel) { >+ ((WrapLabel) figure).setIcon(icon); >+ } else { >+ ((Label) figure).setIcon(icon); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ public void setLabel(WrapLabel figure) { >+ unregisterVisuals(); >+ setFigure(figure); >+ defaultText = getLabelTextHelper(figure); >+ registerVisuals(); >+ refreshVisuals(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected List getModelChildren() { >+ return Collections.EMPTY_LIST; >+ } >+ >+ /** >+ * @generated >+ */ >+ public IGraphicalEditPart getChildBySemanticHint(String semanticHint) { >+ return null; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject getParserElement() { >+ EObject element = resolveSemanticElement(); >+ return element != null ? element : (View) getModel(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Image getLabelIcon() { >+ EObject parserElement = getParserElement(); >+ if (parserElement == null) { >+ return null; >+ } >+ return UMLElementTypes.getImage(parserElement.eClass()); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected String getLabelText() { >+ String text = null; >+ if (getParser() != null) { >+ text = getParser().getPrintString(new EObjectAdapter(getParserElement()), getParserOptions().intValue()); >+ } >+ if (text == null || text.length() == 0) { >+ text = defaultText; >+ } >+ return text; >+ } >+ >+ /** >+ * @generated >+ */ >+ public void setLabelText(String text) { >+ setLabelTextHelper(getFigure(), text); >+ Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE); >+ if (pdEditPolicy instanceof UMLTextSelectionEditPolicy) { >+ ((UMLTextSelectionEditPolicy) pdEditPolicy).refreshFeedback(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ public String getEditText() { >+ if (getParser() == null) { >+ return ""; //$NON-NLS-1$ >+ } >+ return getParser().getEditString(new EObjectAdapter(getParserElement()), getParserOptions().intValue()); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected boolean isEditable() { >+ return getEditText() != null; >+ } >+ >+ /** >+ * @generated >+ */ >+ public ICellEditorValidator getEditTextValidator() { >+ return new ICellEditorValidator() { >+ >+ public String isValid(final Object value) { >+ if (value instanceof String) { >+ final EObject element = getParserElement(); >+ final IParser parser = getParser(); >+ try { >+ IParserEditStatus valid = (IParserEditStatus) getEditingDomain().runExclusive(new RunnableWithResult.Impl() { >+ >+ public void run() { >+ setResult(parser.isValidEditString(new EObjectAdapter(element), (String) value)); >+ } >+ }); >+ return valid.getCode() == ParserEditStatus.EDITABLE ? null : valid.getMessage(); >+ } catch (InterruptedException ie) { >+ ie.printStackTrace(); >+ } >+ } >+ >+ // shouldn't get here >+ return null; >+ } >+ }; >+ } >+ >+ /** >+ * @generated >+ */ >+ public IContentAssistProcessor getCompletionProcessor() { >+ if (getParser() == null) { >+ return null; >+ } >+ return getParser().getCompletionProcessor(new EObjectAdapter(getParserElement())); >+ } >+ >+ /** >+ * @generated >+ */ >+ public ParserOptions getParserOptions() { >+ return ParserOptions.NONE; >+ } >+ >+ /** >+ * @generated >+ */ >+ public IParser getParser() { >+ if (parser == null) { >+ String parserHint = ((View) getModel()).getType(); >+ ParserHintAdapter hintAdapter = new ParserHintAdapter(getParserElement(), parserHint) { >+ >+ public Object getAdapter(Class adapter) { >+ if (IElementType.class.equals(adapter)) { >+ return UMLElementTypes.Artifact_2002; >+ } >+ return super.getAdapter(adapter); >+ } >+ }; >+ parser = ParserService.getInstance().getParser(hintAdapter); >+ } >+ return parser; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected DirectEditManager getManager() { >+ if (manager == null) { >+ setManager(new TextDirectEditManager(this, TextDirectEditManager.getTextCellEditorClass(this), UMLEditPartFactory.getTextCellEditorLocator(this))); >+ } >+ return manager; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setManager(DirectEditManager manager) { >+ this.manager = manager; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void performDirectEdit() { >+ getManager().show(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void performDirectEdit(Point eventLocation) { >+ if (getManager().getClass() == TextDirectEditManager.class) { >+ ((TextDirectEditManager) getManager()).show(eventLocation.getSWTPoint()); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ private void performDirectEdit(char initialCharacter) { >+ if (getManager() instanceof TextDirectEditManager) { >+ ((TextDirectEditManager) getManager()).show(initialCharacter); >+ } else { >+ performDirectEdit(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void performDirectEditRequest(Request request) { >+ final Request theRequest = request; >+ try { >+ getEditingDomain().runExclusive(new Runnable() { >+ >+ public void run() { >+ if (isActive() && isEditable()) { >+ if (theRequest.getExtendedData().get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR) instanceof Character) { >+ Character initialChar = (Character) theRequest.getExtendedData().get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR); >+ performDirectEdit(initialChar.charValue()); >+ } else if ((theRequest instanceof DirectEditRequest) && (getEditText().equals(getLabelText()))) { >+ DirectEditRequest editRequest = (DirectEditRequest) theRequest; >+ performDirectEdit(editRequest.getLocation()); >+ } else { >+ performDirectEdit(); >+ } >+ } >+ } >+ }); >+ } catch (InterruptedException e) { >+ e.printStackTrace(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshVisuals() { >+ super.refreshVisuals(); >+ refreshLabel(); >+ refreshFont(); >+ refreshFontColor(); >+ refreshUnderline(); >+ refreshStrikeThrough(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshLabel() { >+ setLabelTextHelper(getFigure(), getLabelText()); >+ setLabelIconHelper(getFigure(), getLabelIcon()); >+ Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE); >+ if (pdEditPolicy instanceof UMLTextSelectionEditPolicy) { >+ ((UMLTextSelectionEditPolicy) pdEditPolicy).refreshFeedback(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshUnderline() { >+ FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle()); >+ if (style != null && getFigure() instanceof WrapLabel) { >+ ((WrapLabel) getFigure()).setTextUnderline(style.isUnderline()); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshStrikeThrough() { >+ FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle()); >+ if (style != null && getFigure() instanceof WrapLabel) { >+ ((WrapLabel) getFigure()).setTextStrikeThrough(style.isStrikeThrough()); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void refreshFont() { >+ FontStyle style = (FontStyle) getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle()); >+ if (style != null) { >+ FontData fontData = new FontData(style.getFontName(), style.getFontHeight(), (style.isBold() ? SWT.BOLD : SWT.NORMAL) | (style.isItalic() ? SWT.ITALIC : SWT.NORMAL)); >+ setFont(fontData); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setFontColor(Color color) { >+ getFigure().setForegroundColor(color); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void addSemanticListeners() { >+ if (getParser() instanceof ISemanticParser) { >+ EObject element = resolveSemanticElement(); >+ parserElements = ((ISemanticParser) getParser()).getSemanticElementsBeingParsed(element); >+ for (int i = 0; i < parserElements.size(); i++) { >+ addListenerFilter("SemanticModel" + i, this, (EObject) parserElements.get(i)); //$NON-NLS-1$ >+ } >+ } else { >+ super.addSemanticListeners(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void removeSemanticListeners() { >+ if (parserElements != null) { >+ for (int i = 0; i < parserElements.size(); i++) { >+ removeListenerFilter("SemanticModel" + i); //$NON-NLS-1$ >+ } >+ } else { >+ super.removeSemanticListeners(); >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected AccessibleEditPart getAccessibleEditPart() { >+ if (accessibleEP == null) { >+ accessibleEP = new AccessibleGraphicalEditPart() { >+ >+ public void getName(AccessibleEvent e) { >+ e.result = getLabelTextHelper(getFigure()); >+ } >+ }; >+ } >+ return accessibleEP; >+ } >+ >+ /** >+ * @generated >+ */ >+ private View getFontStyleOwnerView() { >+ return getPrimaryView(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void addNotationalListeners() { >+ super.addNotationalListeners(); >+ addListenerFilter("PrimaryView", this, getPrimaryView()); //$NON-NLS-1$ >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void removeNotationalListeners() { >+ super.removeNotationalListeners(); >+ removeListenerFilter("PrimaryView"); //$NON-NLS-1$ >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void handleNotificationEvent(Notification event) { >+ Object feature = event.getFeature(); >+ if (NotationPackage.eINSTANCE.getFontStyle_FontColor().equals(feature)) { >+ Integer c = (Integer) event.getNewValue(); >+ setFontColor(DiagramColorRegistry.getInstance().getColor(c)); >+ } else if (NotationPackage.eINSTANCE.getFontStyle_Underline().equals(feature)) { >+ refreshUnderline(); >+ } else if (NotationPackage.eINSTANCE.getFontStyle_StrikeThrough().equals(feature)) { >+ refreshStrikeThrough(); >+ } else if (NotationPackage.eINSTANCE.getFontStyle_FontHeight().equals(feature) || NotationPackage.eINSTANCE.getFontStyle_FontName().equals(feature) >+ || NotationPackage.eINSTANCE.getFontStyle_Bold().equals(feature) || NotationPackage.eINSTANCE.getFontStyle_Italic().equals(feature)) { >+ refreshFont(); >+ } else { >+ if (getParser() != null && getParser().isAffectingEvent(event, getParserOptions().intValue())) { >+ refreshLabel(); >+ } >+ if (getParser() instanceof ISemanticParser) { >+ ISemanticParser modelParser = (ISemanticParser) getParser(); >+ if (modelParser.areSemanticElementsAffected(null, event)) { >+ removeSemanticListeners(); >+ if (resolveSemanticElement() != null) { >+ addSemanticListeners(); >+ } >+ refreshLabel(); >+ } >+ } >+ } >+ super.handleNotificationEvent(event); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected IFigure createFigure() { >+ // Parent should assign one using setLabel method >+ return null; >+ } >+} >Index: src/org/eclipse/uml2/diagram/component/view/factories/Artifact2ViewFactory.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/component/view/factories/Artifact2ViewFactory.java >diff -N src/org/eclipse/uml2/diagram/component/view/factories/Artifact2ViewFactory.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/component/view/factories/Artifact2ViewFactory.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,57 @@ >+package org.eclipse.uml2.diagram.component.view.factories; >+ >+import java.util.ArrayList; >+import java.util.List; >+ >+import org.eclipse.core.runtime.IAdaptable; >+ >+import org.eclipse.emf.ecore.EAnnotation; >+import org.eclipse.emf.ecore.EcoreFactory; >+ >+import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil; >+ >+import org.eclipse.gmf.runtime.diagram.ui.view.factories.AbstractShapeViewFactory; >+ >+import org.eclipse.gmf.runtime.notation.NotationFactory; >+import org.eclipse.gmf.runtime.notation.View; >+ >+import org.eclipse.uml2.diagram.component.edit.parts.ArtifactName2EditPart; >+import org.eclipse.uml2.diagram.component.edit.parts.PackageEditPart; >+import org.eclipse.uml2.diagram.component.part.UMLVisualIDRegistry; >+ >+/** >+ * @generated >+ */ >+public class Artifact2ViewFactory extends AbstractShapeViewFactory { >+ >+ /** >+ * @generated >+ */ >+ protected List createStyles(View view) { >+ List styles = new ArrayList(); >+ styles.add(NotationFactory.eINSTANCE.createFontStyle()); >+ styles.add(NotationFactory.eINSTANCE.createDescriptionStyle()); >+ styles.add(NotationFactory.eINSTANCE.createFillStyle()); >+ styles.add(NotationFactory.eINSTANCE.createLineStyle()); >+ return styles; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void decorateView(View containerView, View view, IAdaptable semanticAdapter, String semanticHint, int index, boolean persisted) { >+ if (semanticHint == null) { >+ semanticHint = UMLVisualIDRegistry.getType(org.eclipse.uml2.diagram.component.edit.parts.Artifact2EditPart.VISUAL_ID); >+ view.setType(semanticHint); >+ } >+ super.decorateView(containerView, view, semanticAdapter, semanticHint, index, persisted); >+ if (!PackageEditPart.MODEL_ID.equals(UMLVisualIDRegistry.getModelID(containerView))) { >+ EAnnotation shortcutAnnotation = EcoreFactory.eINSTANCE.createEAnnotation(); >+ shortcutAnnotation.setSource("Shortcut"); //$NON-NLS-1$ >+ shortcutAnnotation.getDetails().put("modelID", PackageEditPart.MODEL_ID); //$NON-NLS-1$ >+ view.getEAnnotations().add(shortcutAnnotation); >+ } >+ getViewService().createNode(semanticAdapter, view, UMLVisualIDRegistry.getType(ArtifactName2EditPart.VISUAL_ID), ViewUtil.APPEND, true, getPreferencesHint()); >+ } >+ >+} >Index: src/org/eclipse/uml2/diagram/component/edit/parts/UMLExtNodeLabelEditPart.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/component/edit/parts/UMLExtNodeLabelEditPart.java >diff -N src/org/eclipse/uml2/diagram/component/edit/parts/UMLExtNodeLabelEditPart.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/component/edit/parts/UMLExtNodeLabelEditPart.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,85 @@ >+package org.eclipse.uml2.diagram.component.edit.parts; >+ >+import org.eclipse.draw2d.IFigure; >+import org.eclipse.draw2d.geometry.Dimension; >+import org.eclipse.draw2d.geometry.Point; >+import org.eclipse.gef.EditPolicy; >+import org.eclipse.gef.GraphicalEditPart; >+import org.eclipse.gef.Handle; >+import org.eclipse.gef.handles.AbstractHandle; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.LabelEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.NonResizableLabelEditPolicy; >+import org.eclipse.gmf.runtime.diagram.ui.figures.LabelLocator; >+import org.eclipse.gmf.runtime.diagram.ui.tools.DragEditPartsTrackerEx; >+import org.eclipse.gmf.runtime.notation.NotationPackage; >+import org.eclipse.gmf.runtime.notation.View; >+ >+/** >+ * @generated >+ */ >+public class UMLExtNodeLabelEditPart extends LabelEditPart { >+ >+ /** >+ * @generated >+ */ >+ public UMLExtNodeLabelEditPart(View view) { >+ super(view); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void createDefaultEditPolicies() { >+ super.createDefaultEditPolicies(); >+ installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE, new NonResizableLabelEditPolicy() { >+ >+ protected void replaceHandleDragEditPartsTracker(Handle handle) { >+ if (handle instanceof AbstractHandle) { >+ ((AbstractHandle) handle).setDragTracker(new DragEditPartsTrackerEx(getHost()) { >+ >+ protected boolean isMove() { >+ return true; >+ } >+ }); >+ } >+ } >+ }); >+ } >+ >+ /** >+ * @generated >+ */ >+ public void refreshBounds() { >+ IFigure refFigure = ((GraphicalEditPart) getParent()).getFigure(); >+ int dx = ((Integer) getStructuralFeatureValue(NotationPackage.eINSTANCE.getLocation_X())).intValue(); >+ int dy = ((Integer) getStructuralFeatureValue(NotationPackage.eINSTANCE.getLocation_Y())).intValue(); >+ Point offset = new Point(dx, dy); >+ getFigure().getParent().setConstraint(getFigure(), new LabelLocator(refFigure, offset, getKeyPoint()) { >+ >+ public void relocate(IFigure target) { >+ Point location = getReferencePoint().getTranslated(getOffset()); >+ location.translate(-target.getBounds().width / 2, 0); >+ target.setLocation(location); >+ target.setSize(new Dimension(target.getPreferredSize().width, target.getPreferredSize().height)); >+ } >+ >+ protected Point getReferencePoint() { >+ return getLabelLocation(parent); >+ } >+ }); >+ } >+ >+ /** >+ * @generated >+ */ >+ public Point getReferencePoint() { >+ return getLabelLocation(((GraphicalEditPart) getParent()).getFigure()); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Point getLabelLocation(IFigure parent) { >+ return parent.getBounds().getBottom(); >+ } >+} >Index: src/org/eclipse/uml2/diagram/component/view/factories/InterfaceViewFactory.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/component/view/factories/InterfaceViewFactory.java >diff -N src/org/eclipse/uml2/diagram/component/view/factories/InterfaceViewFactory.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/component/view/factories/InterfaceViewFactory.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,57 @@ >+package org.eclipse.uml2.diagram.component.view.factories; >+ >+import java.util.ArrayList; >+import java.util.List; >+ >+import org.eclipse.core.runtime.IAdaptable; >+ >+import org.eclipse.emf.ecore.EAnnotation; >+import org.eclipse.emf.ecore.EcoreFactory; >+ >+import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil; >+ >+import org.eclipse.gmf.runtime.diagram.ui.view.factories.AbstractShapeViewFactory; >+ >+import org.eclipse.gmf.runtime.notation.NotationFactory; >+import org.eclipse.gmf.runtime.notation.View; >+ >+import org.eclipse.uml2.diagram.component.edit.parts.InterfaceNameEditPart; >+import org.eclipse.uml2.diagram.component.edit.parts.PackageEditPart; >+import org.eclipse.uml2.diagram.component.part.UMLVisualIDRegistry; >+ >+/** >+ * @generated >+ */ >+public class InterfaceViewFactory extends AbstractShapeViewFactory { >+ >+ /** >+ * @generated >+ */ >+ protected List createStyles(View view) { >+ List styles = new ArrayList(); >+ styles.add(NotationFactory.eINSTANCE.createFontStyle()); >+ styles.add(NotationFactory.eINSTANCE.createDescriptionStyle()); >+ styles.add(NotationFactory.eINSTANCE.createFillStyle()); >+ styles.add(NotationFactory.eINSTANCE.createLineStyle()); >+ return styles; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void decorateView(View containerView, View view, IAdaptable semanticAdapter, String semanticHint, int index, boolean persisted) { >+ if (semanticHint == null) { >+ semanticHint = UMLVisualIDRegistry.getType(org.eclipse.uml2.diagram.component.edit.parts.InterfaceEditPart.VISUAL_ID); >+ view.setType(semanticHint); >+ } >+ super.decorateView(containerView, view, semanticAdapter, semanticHint, index, persisted); >+ if (!PackageEditPart.MODEL_ID.equals(UMLVisualIDRegistry.getModelID(containerView))) { >+ EAnnotation shortcutAnnotation = EcoreFactory.eINSTANCE.createEAnnotation(); >+ shortcutAnnotation.setSource("Shortcut"); //$NON-NLS-1$ >+ shortcutAnnotation.getDetails().put("modelID", PackageEditPart.MODEL_ID); //$NON-NLS-1$ >+ view.getEAnnotations().add(shortcutAnnotation); >+ } >+ getViewService().createNode(semanticAdapter, view, UMLVisualIDRegistry.getType(InterfaceNameEditPart.VISUAL_ID), ViewUtil.APPEND, true, getPreferencesHint()); >+ } >+ >+} >Index: src/org/eclipse/uml2/diagram/component/part/UMLVisualIDRegistry.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/component/part/UMLVisualIDRegistry.java >diff -N src/org/eclipse/uml2/diagram/component/part/UMLVisualIDRegistry.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/component/part/UMLVisualIDRegistry.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,600 @@ >+package org.eclipse.uml2.diagram.component.part; >+ >+import org.eclipse.core.runtime.Platform; >+ >+import org.eclipse.emf.ecore.EAnnotation; >+import org.eclipse.emf.ecore.EClass; >+import org.eclipse.emf.ecore.EObject; >+ >+import org.eclipse.gmf.runtime.notation.Diagram; >+import org.eclipse.gmf.runtime.notation.View; >+ >+import org.eclipse.uml2.diagram.component.edit.parts.Artifact2EditPart; >+import org.eclipse.uml2.diagram.component.edit.parts.ArtifactEditPart; >+import org.eclipse.uml2.diagram.component.edit.parts.ArtifactName2EditPart; >+import org.eclipse.uml2.diagram.component.edit.parts.ArtifactNameEditPart; >+import org.eclipse.uml2.diagram.component.edit.parts.Class2EditPart; >+import org.eclipse.uml2.diagram.component.edit.parts.ClassEditPart; >+import org.eclipse.uml2.diagram.component.edit.parts.ClassName2EditPart; >+import org.eclipse.uml2.diagram.component.edit.parts.ClassNameEditPart; >+import org.eclipse.uml2.diagram.component.edit.parts.Component2EditPart; >+import org.eclipse.uml2.diagram.component.edit.parts.ComponentContents2EditPart; >+import org.eclipse.uml2.diagram.component.edit.parts.ComponentContentsEditPart; >+import org.eclipse.uml2.diagram.component.edit.parts.ComponentEditPart; >+import org.eclipse.uml2.diagram.component.edit.parts.ComponentName2EditPart; >+import org.eclipse.uml2.diagram.component.edit.parts.ComponentNameEditPart; >+import org.eclipse.uml2.diagram.component.edit.parts.Interface2EditPart; >+import org.eclipse.uml2.diagram.component.edit.parts.InterfaceEditPart; >+import org.eclipse.uml2.diagram.component.edit.parts.InterfaceName2EditPart; >+import org.eclipse.uml2.diagram.component.edit.parts.InterfaceNameEditPart; >+import org.eclipse.uml2.diagram.component.edit.parts.InterfaceRealizationEditPart; >+import org.eclipse.uml2.diagram.component.edit.parts.PackageEditPart; >+import org.eclipse.uml2.diagram.component.edit.parts.PortEditPart; >+import org.eclipse.uml2.diagram.component.edit.parts.PortNameEditPart; >+import org.eclipse.uml2.diagram.component.expressions.UMLAbstractExpression; >+import org.eclipse.uml2.diagram.component.expressions.UMLOCLFactory; >+import org.eclipse.uml2.uml.Artifact; >+import org.eclipse.uml2.uml.Component; >+import org.eclipse.uml2.uml.Interface; >+import org.eclipse.uml2.uml.InterfaceRealization; >+import org.eclipse.uml2.uml.Port; >+import org.eclipse.uml2.uml.UMLPackage; >+ >+/** >+ * This registry is used to determine which type of visual object should be >+ * created for the corresponding Diagram, Node, ChildNode or Link represented >+ * by a domain model object. >+ * >+ * @generated >+ */ >+public class UMLVisualIDRegistry { >+ >+ /** >+ * @generated >+ */ >+ private static final String DEBUG_KEY = UMLDiagramEditorPlugin.getInstance().getBundle().getSymbolicName() + "/debug/visualID"; //$NON-NLS-1$ >+ >+ /** >+ * @generated >+ */ >+ public static int getVisualID(View view) { >+ if (view instanceof Diagram) { >+ if (PackageEditPart.MODEL_ID.equals(view.getType())) { >+ return PackageEditPart.VISUAL_ID; >+ } else { >+ return -1; >+ } >+ } >+ return getVisualID(view.getType()); >+ } >+ >+ /** >+ * @generated >+ */ >+ public static String getModelID(View view) { >+ View diagram = view.getDiagram(); >+ while (view != diagram) { >+ EAnnotation annotation = view.getEAnnotation("Shortcut"); //$NON-NLS-1$ >+ if (annotation != null) { >+ return (String) annotation.getDetails().get("modelID"); //$NON-NLS-1$ >+ } >+ view = (View) view.eContainer(); >+ } >+ return diagram != null ? diagram.getType() : null; >+ } >+ >+ /** >+ * @generated >+ */ >+ public static int getVisualID(String type) { >+ try { >+ return Integer.parseInt(type); >+ } catch (NumberFormatException e) { >+ if (Boolean.TRUE.toString().equalsIgnoreCase(Platform.getDebugOption(DEBUG_KEY))) { >+ UMLDiagramEditorPlugin.getInstance().logError("Unable to parse view type as a visualID number: " + type); >+ } >+ } >+ return -1; >+ } >+ >+ /** >+ * @generated >+ */ >+ public static String getType(int visualID) { >+ return String.valueOf(visualID); >+ } >+ >+ /** >+ * @generated >+ */ >+ public static int getDiagramVisualID(EObject domainElement) { >+ if (domainElement == null) { >+ return -1; >+ } >+ EClass domainElementMetaclass = domainElement.eClass(); >+ return getDiagramVisualID(domainElement, domainElementMetaclass); >+ } >+ >+ /** >+ * @generated >+ */ >+ private static int getDiagramVisualID(EObject domainElement, EClass domainElementMetaclass) { >+ if (UMLPackage.eINSTANCE.getPackage().isSuperTypeOf(domainElementMetaclass) && isDiagramPackage_1000((org.eclipse.uml2.uml.Package) domainElement)) { >+ return PackageEditPart.VISUAL_ID; >+ } >+ return getUnrecognizedDiagramID(domainElement); >+ } >+ >+ /** >+ * @generated >+ */ >+ public static int getNodeVisualID(View containerView, EObject domainElement) { >+ if (domainElement == null) { >+ return -1; >+ } >+ EClass domainElementMetaclass = domainElement.eClass(); >+ return getNodeVisualID(containerView, domainElement, domainElementMetaclass, null); >+ } >+ >+ /** >+ * @generated >+ */ >+ public static int getNodeVisualID(View containerView, EObject domainElement, EClass domainElementMetaclass, String semanticHint) { >+ String containerModelID = getModelID(containerView); >+ if (!PackageEditPart.MODEL_ID.equals(containerModelID)) { >+ return -1; >+ } >+ int containerVisualID; >+ if (PackageEditPart.MODEL_ID.equals(containerModelID)) { >+ containerVisualID = getVisualID(containerView); >+ } else { >+ if (containerView instanceof Diagram) { >+ containerVisualID = PackageEditPart.VISUAL_ID; >+ } else { >+ return -1; >+ } >+ } >+ int nodeVisualID = semanticHint != null ? getVisualID(semanticHint) : -1; >+ switch (containerVisualID) { >+ case ComponentEditPart.VISUAL_ID: >+ if (ComponentName2EditPart.VISUAL_ID == nodeVisualID) { >+ return ComponentName2EditPart.VISUAL_ID; >+ } >+ if (ComponentContentsEditPart.VISUAL_ID == nodeVisualID) { >+ return ComponentContentsEditPart.VISUAL_ID; >+ } >+ if ((semanticHint == null || PortEditPart.VISUAL_ID == nodeVisualID) && UMLPackage.eINSTANCE.getPort().isSuperTypeOf(domainElementMetaclass) >+ && (domainElement == null || isNodePort_3002((Port) domainElement))) { >+ return PortEditPart.VISUAL_ID; >+ } >+ return getUnrecognizedComponent_2001ChildNodeID(domainElement, semanticHint); >+ case Artifact2EditPart.VISUAL_ID: >+ if (ArtifactName2EditPart.VISUAL_ID == nodeVisualID) { >+ return ArtifactName2EditPart.VISUAL_ID; >+ } >+ return getUnrecognizedArtifact_2002ChildNodeID(domainElement, semanticHint); >+ case Interface2EditPart.VISUAL_ID: >+ if (InterfaceName2EditPart.VISUAL_ID == nodeVisualID) { >+ return InterfaceName2EditPart.VISUAL_ID; >+ } >+ return getUnrecognizedInterface_2003ChildNodeID(domainElement, semanticHint); >+ case Class2EditPart.VISUAL_ID: >+ if (ClassName2EditPart.VISUAL_ID == nodeVisualID) { >+ return ClassName2EditPart.VISUAL_ID; >+ } >+ if ((semanticHint == null || PortEditPart.VISUAL_ID == nodeVisualID) && UMLPackage.eINSTANCE.getPort().isSuperTypeOf(domainElementMetaclass) >+ && (domainElement == null || isNodePort_3002((Port) domainElement))) { >+ return PortEditPart.VISUAL_ID; >+ } >+ return getUnrecognizedClass_2004ChildNodeID(domainElement, semanticHint); >+ case Component2EditPart.VISUAL_ID: >+ if (ComponentNameEditPart.VISUAL_ID == nodeVisualID) { >+ return ComponentNameEditPart.VISUAL_ID; >+ } >+ if (ComponentContents2EditPart.VISUAL_ID == nodeVisualID) { >+ return ComponentContents2EditPart.VISUAL_ID; >+ } >+ if ((semanticHint == null || PortEditPart.VISUAL_ID == nodeVisualID) && UMLPackage.eINSTANCE.getPort().isSuperTypeOf(domainElementMetaclass) >+ && (domainElement == null || isNodePort_3002((Port) domainElement))) { >+ return PortEditPart.VISUAL_ID; >+ } >+ return getUnrecognizedComponent_3001ChildNodeID(domainElement, semanticHint); >+ case PortEditPart.VISUAL_ID: >+ if (PortNameEditPart.VISUAL_ID == nodeVisualID) { >+ return PortNameEditPart.VISUAL_ID; >+ } >+ return getUnrecognizedPort_3002ChildNodeID(domainElement, semanticHint); >+ case ArtifactEditPart.VISUAL_ID: >+ if (ArtifactNameEditPart.VISUAL_ID == nodeVisualID) { >+ return ArtifactNameEditPart.VISUAL_ID; >+ } >+ return getUnrecognizedArtifact_3003ChildNodeID(domainElement, semanticHint); >+ case ClassEditPart.VISUAL_ID: >+ if (ClassNameEditPart.VISUAL_ID == nodeVisualID) { >+ return ClassNameEditPart.VISUAL_ID; >+ } >+ if ((semanticHint == null || PortEditPart.VISUAL_ID == nodeVisualID) && UMLPackage.eINSTANCE.getPort().isSuperTypeOf(domainElementMetaclass) >+ && (domainElement == null || isNodePort_3002((Port) domainElement))) { >+ return PortEditPart.VISUAL_ID; >+ } >+ return getUnrecognizedClass_3004ChildNodeID(domainElement, semanticHint); >+ case InterfaceEditPart.VISUAL_ID: >+ if (InterfaceNameEditPart.VISUAL_ID == nodeVisualID) { >+ return InterfaceNameEditPart.VISUAL_ID; >+ } >+ return getUnrecognizedInterface_3005ChildNodeID(domainElement, semanticHint); >+ case ComponentContentsEditPart.VISUAL_ID: >+ if ((semanticHint == null || Component2EditPart.VISUAL_ID == nodeVisualID) && UMLPackage.eINSTANCE.getComponent().isSuperTypeOf(domainElementMetaclass) >+ && (domainElement == null || isNodeComponent_3001((Component) domainElement))) { >+ return Component2EditPart.VISUAL_ID; >+ } >+ if ((semanticHint == null || ArtifactEditPart.VISUAL_ID == nodeVisualID) && UMLPackage.eINSTANCE.getArtifact().isSuperTypeOf(domainElementMetaclass) >+ && (domainElement == null || isNodeArtifact_3003((Artifact) domainElement))) { >+ return ArtifactEditPart.VISUAL_ID; >+ } >+ if ((semanticHint == null || ClassEditPart.VISUAL_ID == nodeVisualID) && UMLPackage.eINSTANCE.getClass_().isSuperTypeOf(domainElementMetaclass) >+ && (domainElement == null || isNodeClass_3004((org.eclipse.uml2.uml.Class) domainElement))) { >+ return ClassEditPart.VISUAL_ID; >+ } >+ if ((semanticHint == null || InterfaceEditPart.VISUAL_ID == nodeVisualID) && UMLPackage.eINSTANCE.getInterface().isSuperTypeOf(domainElementMetaclass) >+ && (domainElement == null || isNodeInterface_3005((Interface) domainElement))) { >+ return InterfaceEditPart.VISUAL_ID; >+ } >+ return getUnrecognizedComponentContents_7001ChildNodeID(domainElement, semanticHint); >+ case ComponentContents2EditPart.VISUAL_ID: >+ if ((semanticHint == null || Component2EditPart.VISUAL_ID == nodeVisualID) && UMLPackage.eINSTANCE.getComponent().isSuperTypeOf(domainElementMetaclass) >+ && (domainElement == null || isNodeComponent_3001((Component) domainElement))) { >+ return Component2EditPart.VISUAL_ID; >+ } >+ if ((semanticHint == null || ArtifactEditPart.VISUAL_ID == nodeVisualID) && UMLPackage.eINSTANCE.getArtifact().isSuperTypeOf(domainElementMetaclass) >+ && (domainElement == null || isNodeArtifact_3003((Artifact) domainElement))) { >+ return ArtifactEditPart.VISUAL_ID; >+ } >+ if ((semanticHint == null || ClassEditPart.VISUAL_ID == nodeVisualID) && UMLPackage.eINSTANCE.getClass_().isSuperTypeOf(domainElementMetaclass) >+ && (domainElement == null || isNodeClass_3004((org.eclipse.uml2.uml.Class) domainElement))) { >+ return ClassEditPart.VISUAL_ID; >+ } >+ if ((semanticHint == null || InterfaceEditPart.VISUAL_ID == nodeVisualID) && UMLPackage.eINSTANCE.getInterface().isSuperTypeOf(domainElementMetaclass) >+ && (domainElement == null || isNodeInterface_3005((Interface) domainElement))) { >+ return InterfaceEditPart.VISUAL_ID; >+ } >+ return getUnrecognizedComponentContents_7002ChildNodeID(domainElement, semanticHint); >+ case PackageEditPart.VISUAL_ID: >+ if ((semanticHint == null || ComponentEditPart.VISUAL_ID == nodeVisualID) && UMLPackage.eINSTANCE.getComponent().isSuperTypeOf(domainElementMetaclass) >+ && (domainElement == null || isNodeComponent_2001((Component) domainElement))) { >+ return ComponentEditPart.VISUAL_ID; >+ } >+ if ((semanticHint == null || Artifact2EditPart.VISUAL_ID == nodeVisualID) && UMLPackage.eINSTANCE.getArtifact().isSuperTypeOf(domainElementMetaclass) >+ && (domainElement == null || isNodeArtifact_2002((Artifact) domainElement))) { >+ return Artifact2EditPart.VISUAL_ID; >+ } >+ if ((semanticHint == null || Interface2EditPart.VISUAL_ID == nodeVisualID) && UMLPackage.eINSTANCE.getInterface().isSuperTypeOf(domainElementMetaclass) >+ && (domainElement == null || isNodeInterface_2003((Interface) domainElement))) { >+ return Interface2EditPart.VISUAL_ID; >+ } >+ if ((semanticHint == null || Class2EditPart.VISUAL_ID == nodeVisualID) && UMLPackage.eINSTANCE.getClass_().isSuperTypeOf(domainElementMetaclass) >+ && (domainElement == null || isNodeClass_2004((org.eclipse.uml2.uml.Class) domainElement))) { >+ return Class2EditPart.VISUAL_ID; >+ } >+ return getUnrecognizedPackage_1000ChildNodeID(domainElement, semanticHint); >+ } >+ return -1; >+ } >+ >+ /** >+ * @generated >+ */ >+ public static int getLinkWithClassVisualID(EObject domainElement) { >+ if (domainElement == null) { >+ return -1; >+ } >+ EClass domainElementMetaclass = domainElement.eClass(); >+ return getLinkWithClassVisualID(domainElement, domainElementMetaclass); >+ } >+ >+ /** >+ * @generated >+ */ >+ public static int getLinkWithClassVisualID(EObject domainElement, EClass domainElementMetaclass) { >+ if (UMLPackage.eINSTANCE.getInterfaceRealization().isSuperTypeOf(domainElementMetaclass) >+ && (domainElement == null || isLinkWithClassInterfaceRealization_4001((InterfaceRealization) domainElement))) { >+ return InterfaceRealizationEditPart.VISUAL_ID; >+ } else { >+ return getUnrecognizedLinkWithClassID(domainElement); >+ } >+ } >+ >+ /** >+ * User can change implementation of this method to check some additional >+ * conditions here. >+ * >+ * @generated >+ */ >+ private static boolean isDiagramPackage_1000(org.eclipse.uml2.uml.Package element) { >+ return true; >+ } >+ >+ /** >+ * User can change implementation of this method to handle some specific >+ * situations not covered by default logic. >+ * >+ * @generated >+ */ >+ private static int getUnrecognizedDiagramID(EObject domainElement) { >+ return -1; >+ } >+ >+ /** >+ * User can change implementation of this method to check some additional >+ * conditions here. >+ * >+ * @generated >+ */ >+ private static boolean isNodeComponent_2001(Component element) { >+ return true; >+ } >+ >+ /** >+ * User can change implementation of this method to check some additional >+ * conditions here. >+ * >+ * @generated >+ */ >+ private static boolean isNodeArtifact_2002(Artifact element) { >+ return true; >+ } >+ >+ /** >+ * User can change implementation of this method to check some additional >+ * conditions here. >+ * >+ * @generated >+ */ >+ private static boolean isNodeInterface_2003(Interface element) { >+ return true; >+ } >+ >+ /** >+ * User can change implementation of this method to check some additional >+ * conditions here. >+ * >+ * @generated >+ */ >+ private static boolean isNodeClass_2004(org.eclipse.uml2.uml.Class element) { >+ return Class_2004.matches(element); >+ } >+ >+ /** >+ * User can change implementation of this method to check some additional >+ * conditions here. >+ * >+ * @generated >+ */ >+ private static boolean isNodeComponent_3001(Component element) { >+ return true; >+ } >+ >+ /** >+ * User can change implementation of this method to check some additional >+ * conditions here. >+ * >+ * @generated >+ */ >+ private static boolean isNodePort_3002(Port element) { >+ return true; >+ } >+ >+ /** >+ * User can change implementation of this method to check some additional >+ * conditions here. >+ * >+ * @generated >+ */ >+ private static boolean isNodeArtifact_3003(Artifact element) { >+ return true; >+ } >+ >+ /** >+ * User can change implementation of this method to check some additional >+ * conditions here. >+ * >+ * @generated >+ */ >+ private static boolean isNodeClass_3004(org.eclipse.uml2.uml.Class element) { >+ return Class_3004.matches(element); >+ } >+ >+ /** >+ * User can change implementation of this method to check some additional >+ * conditions here. >+ * >+ * @generated >+ */ >+ private static boolean isNodeInterface_3005(Interface element) { >+ return true; >+ } >+ >+ /** >+ * User can change implementation of this method to handle some specific >+ * situations not covered by default logic. >+ * >+ * @generated >+ */ >+ private static int getUnrecognizedComponent_2001ChildNodeID(EObject domainElement, String semanticHint) { >+ return -1; >+ } >+ >+ /** >+ * User can change implementation of this method to handle some specific >+ * situations not covered by default logic. >+ * >+ * @generated >+ */ >+ private static int getUnrecognizedArtifact_2002ChildNodeID(EObject domainElement, String semanticHint) { >+ return -1; >+ } >+ >+ /** >+ * User can change implementation of this method to handle some specific >+ * situations not covered by default logic. >+ * >+ * @generated >+ */ >+ private static int getUnrecognizedInterface_2003ChildNodeID(EObject domainElement, String semanticHint) { >+ return -1; >+ } >+ >+ /** >+ * User can change implementation of this method to handle some specific >+ * situations not covered by default logic. >+ * >+ * @generated >+ */ >+ private static int getUnrecognizedClass_2004ChildNodeID(EObject domainElement, String semanticHint) { >+ return -1; >+ } >+ >+ /** >+ * User can change implementation of this method to handle some specific >+ * situations not covered by default logic. >+ * >+ * @generated >+ */ >+ private static int getUnrecognizedComponent_3001ChildNodeID(EObject domainElement, String semanticHint) { >+ return -1; >+ } >+ >+ /** >+ * User can change implementation of this method to handle some specific >+ * situations not covered by default logic. >+ * >+ * @generated >+ */ >+ private static int getUnrecognizedPort_3002ChildNodeID(EObject domainElement, String semanticHint) { >+ return -1; >+ } >+ >+ /** >+ * User can change implementation of this method to handle some specific >+ * situations not covered by default logic. >+ * >+ * @generated >+ */ >+ private static int getUnrecognizedArtifact_3003ChildNodeID(EObject domainElement, String semanticHint) { >+ return -1; >+ } >+ >+ /** >+ * User can change implementation of this method to handle some specific >+ * situations not covered by default logic. >+ * >+ * @generated >+ */ >+ private static int getUnrecognizedClass_3004ChildNodeID(EObject domainElement, String semanticHint) { >+ return -1; >+ } >+ >+ /** >+ * User can change implementation of this method to handle some specific >+ * situations not covered by default logic. >+ * >+ * @generated >+ */ >+ private static int getUnrecognizedInterface_3005ChildNodeID(EObject domainElement, String semanticHint) { >+ return -1; >+ } >+ >+ /** >+ * User can change implementation of this method to handle some specific >+ * situations not covered by default logic. >+ * >+ * @generated >+ */ >+ private static int getUnrecognizedComponentContents_7001ChildNodeID(EObject domainElement, String semanticHint) { >+ return -1; >+ } >+ >+ /** >+ * User can change implementation of this method to handle some specific >+ * situations not covered by default logic. >+ * >+ * @generated >+ */ >+ private static int getUnrecognizedComponentContents_7002ChildNodeID(EObject domainElement, String semanticHint) { >+ return -1; >+ } >+ >+ /** >+ * User can change implementation of this method to handle some specific >+ * situations not covered by default logic. >+ * >+ * @generated >+ */ >+ private static int getUnrecognizedPackage_1000ChildNodeID(EObject domainElement, String semanticHint) { >+ return -1; >+ } >+ >+ /** >+ * User can change implementation of this method to handle some specific >+ * situations not covered by default logic. >+ * >+ * @generated >+ */ >+ private static int getUnrecognizedLinkWithClassID(EObject domainElement) { >+ return -1; >+ } >+ >+ /** >+ * User can change implementation of this method to check some additional >+ * conditions here. >+ * >+ * @generated >+ */ >+ private static boolean isLinkWithClassInterfaceRealization_4001(InterfaceRealization element) { >+ return InterfaceRealization_4001.matches(element); >+ } >+ >+ /** >+ * @generated >+ */ >+ private static final Matcher Class_3004 = new Matcher(UMLOCLFactory.getExpression("self.oclIsKindOf(uml::Class)", //$NON-NLS-1$ >+ UMLPackage.eINSTANCE.getClass_())); >+ >+ /** >+ * @generated >+ */ >+ private static final Matcher Class_2004 = new Matcher(UMLOCLFactory.getExpression("self.oclIsKindOf(uml::Class)", //$NON-NLS-1$ >+ UMLPackage.eINSTANCE.getClass_())); >+ >+ /** >+ * @generated >+ */ >+ private static final Matcher InterfaceRealization_4001 = new Matcher(UMLOCLFactory.getExpression("self.implementingClassifier.oclIsKindOf(uml::Component)", //$NON-NLS-1$ >+ UMLPackage.eINSTANCE.getInterfaceRealization())); >+ >+ /** >+ * @generated >+ */ >+ static class Matcher { >+ >+ /** >+ * @generated >+ */ >+ private UMLAbstractExpression condition; >+ >+ /** >+ * @generated >+ */ >+ Matcher(UMLAbstractExpression conditionExpression) { >+ this.condition = conditionExpression; >+ } >+ >+ /** >+ * @generated >+ */ >+ boolean matches(EObject object) { >+ Object result = condition.evaluate(object); >+ return result instanceof Boolean && ((Boolean) result).booleanValue(); >+ } >+ }// Matcher >+} >Index: src/org/eclipse/uml2/diagram/component/providers/UMLStructuralFeatureParser.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/component/providers/UMLStructuralFeatureParser.java >diff -N src/org/eclipse/uml2/diagram/component/providers/UMLStructuralFeatureParser.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/component/providers/UMLStructuralFeatureParser.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,132 @@ >+package org.eclipse.uml2.diagram.component.providers; >+ >+import java.text.FieldPosition; >+import java.text.MessageFormat; >+import java.util.Collections; >+ >+import org.eclipse.core.runtime.IAdaptable; >+import org.eclipse.emf.common.notify.Notification; >+import org.eclipse.emf.ecore.EObject; >+import org.eclipse.emf.ecore.EStructuralFeature; >+import org.eclipse.emf.transaction.TransactionalEditingDomain; >+import org.eclipse.emf.transaction.util.TransactionUtil; >+import org.eclipse.gmf.runtime.common.core.command.ICommand; >+import org.eclipse.gmf.runtime.common.core.command.UnexecutableCommand; >+import org.eclipse.gmf.runtime.common.ui.services.parser.IParserEditStatus; >+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserEditStatus; >+import org.eclipse.gmf.runtime.emf.commands.core.command.CompositeTransactionalCommand; >+import org.eclipse.uml2.diagram.component.part.UMLDiagramEditorPlugin; >+ >+/** >+ * @generated >+ */ >+public class UMLStructuralFeatureParser extends UMLAbstractParser { >+ >+ /** >+ * @generated >+ */ >+ public static final MessageFormat DEFAULT_PROCESSOR = new MessageFormat("{0}"); //$NON-NLS-1$ >+ >+ /** >+ * @generated >+ */ >+ private EStructuralFeature feature; >+ >+ /** >+ * @generated >+ */ >+ public UMLStructuralFeatureParser(EStructuralFeature feature) { >+ this.feature = feature; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected MessageFormat getViewProcessor() { >+ MessageFormat processor = super.getViewProcessor(); >+ return processor == null ? DEFAULT_PROCESSOR : processor; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected MessageFormat getEditProcessor() { >+ MessageFormat processor = super.getEditProcessor(); >+ return processor == null ? DEFAULT_PROCESSOR : processor; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected EObject getDomainElement(EObject element) { >+ return element; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected String getStringByPattern(IAdaptable adapter, int flags, String pattern, MessageFormat processor) { >+ EObject element = (EObject) adapter.getAdapter(EObject.class); >+ element = getDomainElement(element); >+ return getStringByPattern(element, feature, processor); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected String getStringByPattern(EObject element, EStructuralFeature feature, MessageFormat processor) { >+ Object value = element == null ? null : element.eGet(feature); >+ value = getValidValue(feature, value); >+ return processor.format(new Object[] { value }, new StringBuffer(), new FieldPosition(0)).toString(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected IParserEditStatus validateValues(Object[] values) { >+ if (values.length > 1) { >+ return ParserEditStatus.UNEDITABLE_STATUS; >+ } >+ Object value = values.length == 1 ? values[0] : null; >+ value = getValidNewValue(feature, value); >+ if (value instanceof InvalidValue) { >+ return new ParserEditStatus(UMLDiagramEditorPlugin.ID, IParserEditStatus.UNEDITABLE, value.toString()); >+ } >+ return ParserEditStatus.EDITABLE_STATUS; >+ } >+ >+ /** >+ * @generated >+ */ >+ public ICommand getParseCommand(IAdaptable adapter, Object[] values) { >+ EObject element = (EObject) adapter.getAdapter(EObject.class); >+ element = getDomainElement(element); >+ if (element == null) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ TransactionalEditingDomain editingDomain = TransactionUtil.getEditingDomain(element); >+ if (editingDomain == null) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ Object value = values.length == 1 ? values[0] : null; >+ ICommand command = getModificationCommand(element, feature, value); >+ return new CompositeTransactionalCommand(editingDomain, command.getLabel(), Collections.singletonList(command)); >+ } >+ >+ /** >+ * @generated >+ */ >+ public boolean isAffectingEvent(Object event, int flags) { >+ if (event instanceof Notification) { >+ return isAffectingFeature(((Notification) event).getFeature()); >+ } >+ return false; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected boolean isAffectingFeature(Object eventFeature) { >+ return feature == eventFeature; >+ } >+} >Index: src/org/eclipse/uml2/diagram/component/edit/parts/Class2EditPart.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/component/edit/parts/Class2EditPart.java >diff -N src/org/eclipse/uml2/diagram/component/edit/parts/Class2EditPart.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/component/edit/parts/Class2EditPart.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,304 @@ >+package org.eclipse.uml2.diagram.component.edit.parts; >+ >+import org.eclipse.draw2d.IFigure; >+import org.eclipse.draw2d.PositionConstants; >+import org.eclipse.draw2d.StackLayout; >+ >+import org.eclipse.gef.EditPart; >+import org.eclipse.gef.EditPolicy; >+import org.eclipse.gef.Request; >+ >+import org.eclipse.gef.commands.Command; >+ >+import org.eclipse.gef.editpolicies.LayoutEditPolicy; >+import org.eclipse.gef.editpolicies.NonResizableEditPolicy; >+ >+import org.eclipse.gef.requests.CreateRequest; >+ >+import org.eclipse.gmf.runtime.diagram.ui.editparts.AbstractBorderedShapeEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart; >+ >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy; >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles; >+ >+import org.eclipse.gmf.runtime.diagram.ui.figures.BorderItemLocator; >+ >+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout; >+ >+import org.eclipse.gmf.runtime.gef.ui.figures.DefaultSizeNodeFigure; >+import org.eclipse.gmf.runtime.gef.ui.figures.NodeFigure; >+ >+import org.eclipse.gmf.runtime.notation.View; >+ >+import org.eclipse.uml2.diagram.component.edit.policies.Class2CanonicalEditPolicy; >+import org.eclipse.uml2.diagram.component.edit.policies.Class2ItemSemanticEditPolicy; >+import org.eclipse.uml2.diagram.component.part.UMLVisualIDRegistry; >+ >+/** >+ * @generated >+ */ >+public class Class2EditPart extends AbstractBorderedShapeEditPart { >+ >+ /** >+ * @generated >+ */ >+ public static final int VISUAL_ID = 2004; >+ >+ /** >+ * @generated >+ */ >+ protected IFigure contentPane; >+ >+ /** >+ * @generated >+ */ >+ protected IFigure primaryShape; >+ >+ /** >+ * @generated >+ */ >+ public Class2EditPart(View view) { >+ super(view); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void createDefaultEditPolicies() { >+ installEditPolicy(EditPolicyRoles.CREATION_ROLE, new CreationEditPolicy()); >+ super.createDefaultEditPolicies(); >+ installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE, new Class2ItemSemanticEditPolicy()); >+ installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE, new DragDropEditPolicy()); >+ installEditPolicy(EditPolicyRoles.CANONICAL_ROLE, new Class2CanonicalEditPolicy()); >+ installEditPolicy(EditPolicy.LAYOUT_ROLE, createLayoutEditPolicy()); >+ >+ } >+ >+ /** >+ * @generated >+ */ >+ protected LayoutEditPolicy createLayoutEditPolicy() { >+ LayoutEditPolicy lep = new LayoutEditPolicy() { >+ >+ protected EditPolicy createChildEditPolicy(EditPart child) { >+ EditPolicy result = child.getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE); >+ if (result == null) { >+ result = new NonResizableEditPolicy(); >+ } >+ return result; >+ } >+ >+ protected Command getMoveChildrenCommand(Request request) { >+ return null; >+ } >+ >+ protected Command getCreateCommand(CreateRequest request) { >+ return null; >+ } >+ }; >+ return lep; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected IFigure createNodeShape() { >+ ComponentClassFigure figure = new ComponentClassFigure(); >+ return primaryShape = figure; >+ } >+ >+ /** >+ * @generated >+ */ >+ public ComponentClassFigure getPrimaryShape() { >+ return (ComponentClassFigure) primaryShape; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected IFigure getContentPaneFor(IGraphicalEditPart editPart) { >+ if (editPart instanceof PortEditPart) { >+ return getBorderedFigure().getBorderItemContainer(); >+ } >+ >+ return super.getContentPaneFor(editPart); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected boolean addFixedChild(EditPart childEditPart) { >+ if (childEditPart instanceof ClassName2EditPart) { >+ ((ClassName2EditPart) childEditPart).setLabel(getPrimaryShape().getFigureComponentClassFigure_name()); >+ return true; >+ } >+ if (childEditPart instanceof PortEditPart) { >+ BorderItemLocator locator = new BorderItemLocator(getMainFigure(), PositionConstants.NONE); >+ getBorderedFigure().getBorderItemContainer().add(((PortEditPart) childEditPart).getFigure(), locator); >+ return true; >+ } >+ return false; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected boolean removeFixedChild(EditPart childEditPart) { >+ if (childEditPart instanceof PortEditPart) { >+ getBorderedFigure().getBorderItemContainer().remove(((PortEditPart) childEditPart).getFigure()); >+ return true; >+ } >+ return false; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected NodeFigure createNodePlate() { >+ DefaultSizeNodeFigure result = new DefaultSizeNodeFigure(getMapMode().DPtoLP(80), getMapMode().DPtoLP(60)); >+ return result; >+ } >+ >+ /** >+ * Creates figure for this edit part. >+ * >+ * Body of this method does not depend on settings in generation model >+ * so you may safely remove <i>generated</i> tag and modify it. >+ * >+ * @generated >+ */ >+ protected NodeFigure createMainFigure() { >+ NodeFigure figure = createNodePlate(); >+ figure.setLayoutManager(new StackLayout()); >+ IFigure shape = createNodeShape(); >+ figure.add(shape); >+ contentPane = setupContentPane(shape); >+ return figure; >+ } >+ >+ /** >+ * Default implementation treats passed figure as content pane. >+ * Respects layout one may have set for generated figure. >+ * @param nodeShape instance of generated figure class >+ * @generated >+ */ >+ protected IFigure setupContentPane(IFigure nodeShape) { >+ if (nodeShape.getLayoutManager() == null) { >+ ConstrainedToolbarLayout layout = new ConstrainedToolbarLayout(); >+ layout.setSpacing(getMapMode().DPtoLP(5)); >+ nodeShape.setLayoutManager(layout); >+ } >+ return nodeShape; // use nodeShape itself as contentPane >+ } >+ >+ /** >+ * @generated >+ */ >+ public IFigure getContentPane() { >+ if (contentPane != null) { >+ return contentPane; >+ } >+ return super.getContentPane(); >+ } >+ >+ /** >+ * @generated >+ */ >+ public EditPart getPrimaryChildEditPart() { >+ return getChildBySemanticHint(UMLVisualIDRegistry.getType(ClassName2EditPart.VISUAL_ID)); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void addChildVisual(EditPart childEditPart, int index) { >+ if (addFixedChild(childEditPart)) { >+ return; >+ } >+ super.addChildVisual(childEditPart, -1); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void removeChildVisual(EditPart childEditPart) { >+ if (removeFixedChild(childEditPart)) { >+ return; >+ } >+ super.removeChildVisual(childEditPart); >+ } >+ >+ /** >+ * @generated >+ */ >+ public class ComponentClassFigure extends org.eclipse.draw2d.RectangleFigure { >+ >+ /** >+ * @generated >+ */ >+ public ComponentClassFigure() { >+ >+ org.eclipse.uml2.diagram.common.draw2d.CenterLayout myGenLayoutManager = new org.eclipse.uml2.diagram.common.draw2d.CenterLayout(); >+ >+ this.setLayoutManager(myGenLayoutManager); >+ >+ createContents(); >+ } >+ >+ /** >+ * @generated >+ */ >+ private void createContents() { >+ org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel fig_0 = new org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel(); >+ fig_0.setText(""); >+ >+ setFigureComponentClassFigure_name(fig_0); >+ >+ Object layData0 = null; >+ >+ this.add(fig_0, layData0); >+ } >+ >+ /** >+ * @generated >+ */ >+ private org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel fComponentClassFigure_name; >+ >+ /** >+ * @generated >+ */ >+ public org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel getFigureComponentClassFigure_name() { >+ return fComponentClassFigure_name; >+ } >+ >+ /** >+ * @generated >+ */ >+ private void setFigureComponentClassFigure_name(org.eclipse.gmf.runtime.draw2d.ui.figures.WrapLabel fig) { >+ fComponentClassFigure_name = fig; >+ } >+ >+ /** >+ * @generated >+ */ >+ private boolean myUseLocalCoordinates = false; >+ >+ /** >+ * @generated >+ */ >+ protected boolean useLocalCoordinates() { >+ return myUseLocalCoordinates; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setUseLocalCoordinates(boolean useLocalCoordinates) { >+ myUseLocalCoordinates = useLocalCoordinates; >+ } >+ >+ } >+ >+} >Index: src/org/eclipse/uml2/diagram/component/view/factories/ArtifactViewFactory.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/component/view/factories/ArtifactViewFactory.java >diff -N src/org/eclipse/uml2/diagram/component/view/factories/ArtifactViewFactory.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/component/view/factories/ArtifactViewFactory.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,57 @@ >+package org.eclipse.uml2.diagram.component.view.factories; >+ >+import java.util.ArrayList; >+import java.util.List; >+ >+import org.eclipse.core.runtime.IAdaptable; >+ >+import org.eclipse.emf.ecore.EAnnotation; >+import org.eclipse.emf.ecore.EcoreFactory; >+ >+import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil; >+ >+import org.eclipse.gmf.runtime.diagram.ui.view.factories.AbstractShapeViewFactory; >+ >+import org.eclipse.gmf.runtime.notation.NotationFactory; >+import org.eclipse.gmf.runtime.notation.View; >+ >+import org.eclipse.uml2.diagram.component.edit.parts.ArtifactNameEditPart; >+import org.eclipse.uml2.diagram.component.edit.parts.PackageEditPart; >+import org.eclipse.uml2.diagram.component.part.UMLVisualIDRegistry; >+ >+/** >+ * @generated >+ */ >+public class ArtifactViewFactory extends AbstractShapeViewFactory { >+ >+ /** >+ * @generated >+ */ >+ protected List createStyles(View view) { >+ List styles = new ArrayList(); >+ styles.add(NotationFactory.eINSTANCE.createFontStyle()); >+ styles.add(NotationFactory.eINSTANCE.createDescriptionStyle()); >+ styles.add(NotationFactory.eINSTANCE.createFillStyle()); >+ styles.add(NotationFactory.eINSTANCE.createLineStyle()); >+ return styles; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void decorateView(View containerView, View view, IAdaptable semanticAdapter, String semanticHint, int index, boolean persisted) { >+ if (semanticHint == null) { >+ semanticHint = UMLVisualIDRegistry.getType(org.eclipse.uml2.diagram.component.edit.parts.ArtifactEditPart.VISUAL_ID); >+ view.setType(semanticHint); >+ } >+ super.decorateView(containerView, view, semanticAdapter, semanticHint, index, persisted); >+ if (!PackageEditPart.MODEL_ID.equals(UMLVisualIDRegistry.getModelID(containerView))) { >+ EAnnotation shortcutAnnotation = EcoreFactory.eINSTANCE.createEAnnotation(); >+ shortcutAnnotation.setSource("Shortcut"); //$NON-NLS-1$ >+ shortcutAnnotation.getDetails().put("modelID", PackageEditPart.MODEL_ID); //$NON-NLS-1$ >+ view.getEAnnotations().add(shortcutAnnotation); >+ } >+ getViewService().createNode(semanticAdapter, view, UMLVisualIDRegistry.getType(ArtifactNameEditPart.VISUAL_ID), ViewUtil.APPEND, true, getPreferencesHint()); >+ } >+ >+} >Index: src/org/eclipse/uml2/diagram/component/providers/UMLParserProvider.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/component/providers/UMLParserProvider.java >diff -N src/org/eclipse/uml2/diagram/component/providers/UMLParserProvider.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/component/providers/UMLParserProvider.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,306 @@ >+package org.eclipse.uml2.diagram.component.providers; >+ >+import org.eclipse.core.runtime.IAdaptable; >+import org.eclipse.gmf.runtime.common.core.service.AbstractProvider; >+import org.eclipse.gmf.runtime.common.core.service.IOperation; >+import org.eclipse.gmf.runtime.common.ui.services.parser.GetParserOperation; >+import org.eclipse.gmf.runtime.common.ui.services.parser.IParser; >+import org.eclipse.gmf.runtime.common.ui.services.parser.IParserProvider; >+import org.eclipse.gmf.runtime.emf.type.core.IElementType; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.uml2.diagram.common.parser.port.PortParser; >+import org.eclipse.uml2.diagram.common.parser.port.PortToString; >+import org.eclipse.uml2.diagram.component.edit.parts.ArtifactName2EditPart; >+import org.eclipse.uml2.diagram.component.edit.parts.ArtifactNameEditPart; >+import org.eclipse.uml2.diagram.component.edit.parts.ClassName2EditPart; >+import org.eclipse.uml2.diagram.component.edit.parts.ClassNameEditPart; >+import org.eclipse.uml2.diagram.component.edit.parts.ComponentName2EditPart; >+import org.eclipse.uml2.diagram.component.edit.parts.ComponentNameEditPart; >+import org.eclipse.uml2.diagram.component.edit.parts.InterfaceName2EditPart; >+import org.eclipse.uml2.diagram.component.edit.parts.InterfaceNameEditPart; >+import org.eclipse.uml2.diagram.component.edit.parts.PortNameEditPart; >+import org.eclipse.uml2.diagram.component.expressions.UMLOCLFactory; >+import org.eclipse.uml2.diagram.component.part.UMLVisualIDRegistry; >+import org.eclipse.uml2.diagram.parser.BasicApplyStrategy; >+import org.eclipse.uml2.diagram.parser.SemanticParserAdapter; >+import org.eclipse.uml2.diagram.parser.lookup.LookupSuiteImpl; >+import org.eclipse.uml2.diagram.parser.lookup.OCLLookup; >+import org.eclipse.uml2.uml.Type; >+import org.eclipse.uml2.uml.UMLPackage; >+ >+/** >+ * @generated >+ */ >+public class UMLParserProvider extends AbstractProvider implements IParserProvider { >+ >+ public static final OCLLookup<Type> TYPE_LOOKUP = new OCLLookup<Type>(// >+ UMLOCLFactory.getOCLLookupExpression("self.getNearestPackage().ownedType", UMLPackage.eINSTANCE.getNamedElement()), // >+ new IElementType[] { // >+ /* >+ UMLElementTypes.Class_2004, // >+ */ >+ }); >+ >+ /** >+ * @generated >+ */ >+ private IParser componentComponentName_5002Parser; >+ >+ /** >+ * @generated >+ */ >+ private IParser getComponentComponentName_5002Parser() { >+ if (componentComponentName_5002Parser == null) { >+ componentComponentName_5002Parser = createComponentComponentName_5002Parser(); >+ } >+ return componentComponentName_5002Parser; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected IParser createComponentComponentName_5002Parser() { >+ UMLStructuralFeatureParser parser = new UMLStructuralFeatureParser(UMLPackage.eINSTANCE.getNamedElement_Name()); >+ return parser; >+ } >+ >+ /** >+ * @generated >+ */ >+ private IParser portPortName_5003Parser; >+ >+ /** >+ * @generated >+ */ >+ private IParser getPortPortName_5003Parser() { >+ if (portPortName_5003Parser == null) { >+ portPortName_5003Parser = createPortPortName_5003Parser(); >+ } >+ return portPortName_5003Parser; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected IParser createPortPortName_5003Parser() { >+ UMLStructuralFeatureParser parser = new UMLStructuralFeatureParser(UMLPackage.eINSTANCE.getNamedElement_Name()); >+ return parser; >+ } >+ >+ /** >+ * @generated >+ */ >+ private IParser artifactArtifactName_5006Parser; >+ >+ /** >+ * @generated >+ */ >+ private IParser getArtifactArtifactName_5006Parser() { >+ if (artifactArtifactName_5006Parser == null) { >+ artifactArtifactName_5006Parser = createArtifactArtifactName_5006Parser(); >+ } >+ return artifactArtifactName_5006Parser; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected IParser createArtifactArtifactName_5006Parser() { >+ UMLStructuralFeatureParser parser = new UMLStructuralFeatureParser(UMLPackage.eINSTANCE.getNamedElement_Name()); >+ return parser; >+ } >+ >+ /** >+ * @generated >+ */ >+ private IParser classClassName_5007Parser; >+ >+ /** >+ * @generated >+ */ >+ private IParser getClassClassName_5007Parser() { >+ if (classClassName_5007Parser == null) { >+ classClassName_5007Parser = createClassClassName_5007Parser(); >+ } >+ return classClassName_5007Parser; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected IParser createClassClassName_5007Parser() { >+ UMLStructuralFeatureParser parser = new UMLStructuralFeatureParser(UMLPackage.eINSTANCE.getNamedElement_Name()); >+ return parser; >+ } >+ >+ /** >+ * @generated >+ */ >+ private IParser interfaceInterfaceName_5009Parser; >+ >+ /** >+ * @generated >+ */ >+ private IParser getInterfaceInterfaceName_5009Parser() { >+ if (interfaceInterfaceName_5009Parser == null) { >+ interfaceInterfaceName_5009Parser = createInterfaceInterfaceName_5009Parser(); >+ } >+ return interfaceInterfaceName_5009Parser; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected IParser createInterfaceInterfaceName_5009Parser() { >+ UMLStructuralFeatureParser parser = new UMLStructuralFeatureParser(UMLPackage.eINSTANCE.getNamedElement_Name()); >+ return parser; >+ } >+ >+ /** >+ * @generated >+ */ >+ private IParser componentComponentName_5001Parser; >+ >+ /** >+ * @generated >+ */ >+ private IParser getComponentComponentName_5001Parser() { >+ if (componentComponentName_5001Parser == null) { >+ componentComponentName_5001Parser = createComponentComponentName_5001Parser(); >+ } >+ return componentComponentName_5001Parser; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected IParser createComponentComponentName_5001Parser() { >+ UMLStructuralFeatureParser parser = new UMLStructuralFeatureParser(UMLPackage.eINSTANCE.getNamedElement_Name()); >+ return parser; >+ } >+ >+ /** >+ * @generated >+ */ >+ private IParser artifactArtifactName_5004Parser; >+ >+ /** >+ * @generated >+ */ >+ private IParser getArtifactArtifactName_5004Parser() { >+ if (artifactArtifactName_5004Parser == null) { >+ artifactArtifactName_5004Parser = createArtifactArtifactName_5004Parser(); >+ } >+ return artifactArtifactName_5004Parser; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected IParser createArtifactArtifactName_5004Parser() { >+ UMLStructuralFeatureParser parser = new UMLStructuralFeatureParser(UMLPackage.eINSTANCE.getNamedElement_Name()); >+ return parser; >+ } >+ >+ /** >+ * @generated >+ */ >+ private IParser interfaceInterfaceName_5005Parser; >+ >+ /** >+ * @generated >+ */ >+ private IParser getInterfaceInterfaceName_5005Parser() { >+ if (interfaceInterfaceName_5005Parser == null) { >+ interfaceInterfaceName_5005Parser = createInterfaceInterfaceName_5005Parser(); >+ } >+ return interfaceInterfaceName_5005Parser; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected IParser createInterfaceInterfaceName_5005Parser() { >+ UMLStructuralFeatureParser parser = new UMLStructuralFeatureParser(UMLPackage.eINSTANCE.getNamedElement_Name()); >+ return parser; >+ } >+ >+ /** >+ * @generated >+ */ >+ private IParser classClassName_5008Parser; >+ >+ /** >+ * @generated >+ */ >+ private IParser getClassClassName_5008Parser() { >+ if (classClassName_5008Parser == null) { >+ classClassName_5008Parser = createClassClassName_5008Parser(); >+ } >+ return classClassName_5008Parser; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected IParser createClassClassName_5008Parser() { >+ UMLStructuralFeatureParser parser = new UMLStructuralFeatureParser(UMLPackage.eINSTANCE.getNamedElement_Name()); >+ return parser; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected IParser getParser(int visualID) { >+ switch (visualID) { >+ case ComponentNameEditPart.VISUAL_ID: >+ return getComponentComponentName_5002Parser(); >+ case PortNameEditPart.VISUAL_ID: >+ return getPortPortName_5003Parser(); >+ case ArtifactNameEditPart.VISUAL_ID: >+ return getArtifactArtifactName_5006Parser(); >+ case ClassNameEditPart.VISUAL_ID: >+ return getClassClassName_5007Parser(); >+ case InterfaceNameEditPart.VISUAL_ID: >+ return getInterfaceInterfaceName_5009Parser(); >+ case ComponentName2EditPart.VISUAL_ID: >+ return getComponentComponentName_5001Parser(); >+ case ArtifactName2EditPart.VISUAL_ID: >+ return getArtifactArtifactName_5004Parser(); >+ case InterfaceName2EditPart.VISUAL_ID: >+ return getInterfaceInterfaceName_5005Parser(); >+ case ClassName2EditPart.VISUAL_ID: >+ return getClassClassName_5008Parser(); >+ } >+ return null; >+ } >+ >+ /** >+ * @generated >+ */ >+ public IParser getParser(IAdaptable hint) { >+ String vid = (String) hint.getAdapter(String.class); >+ if (vid != null) { >+ return getParser(UMLVisualIDRegistry.getVisualID(vid)); >+ } >+ View view = (View) hint.getAdapter(View.class); >+ if (view != null) { >+ return getParser(UMLVisualIDRegistry.getVisualID(view)); >+ } >+ return null; >+ } >+ >+ /** >+ * @generated >+ */ >+ public boolean provides(IOperation operation) { >+ if (operation instanceof GetParserOperation) { >+ IAdaptable hint = ((GetParserOperation) operation).getHint(); >+ if (UMLElementTypes.getElement(hint) == null) { >+ return false; >+ } >+ return getParser(hint) != null; >+ } >+ return false; >+ } >+} >Index: src/org/eclipse/uml2/diagram/component/edit/parts/InterfaceEditPart.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/component/edit/parts/InterfaceEditPart.java >diff -N src/org/eclipse/uml2/diagram/component/edit/parts/InterfaceEditPart.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/component/edit/parts/InterfaceEditPart.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,312 @@ >+package org.eclipse.uml2.diagram.component.edit.parts; >+ >+import java.util.Iterator; >+ >+import org.eclipse.draw2d.IFigure; >+import org.eclipse.draw2d.PositionConstants; >+import org.eclipse.draw2d.StackLayout; >+ >+import org.eclipse.gef.EditPart; >+import org.eclipse.gef.EditPolicy; >+import org.eclipse.gef.GraphicalEditPart; >+import org.eclipse.gef.Request; >+ >+import org.eclipse.gef.commands.Command; >+ >+import org.eclipse.gef.editparts.LayerManager; >+ >+import org.eclipse.gef.editpolicies.LayoutEditPolicy; >+import org.eclipse.gef.editpolicies.NonResizableEditPolicy; >+import org.eclipse.gef.editpolicies.ResizableEditPolicy; >+ >+import org.eclipse.gef.requests.CreateRequest; >+ >+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.ShapeNodeEditPart; >+ >+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles; >+ >+import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout; >+ >+import org.eclipse.gmf.runtime.gef.ui.figures.DefaultSizeNodeFigure; >+import org.eclipse.gmf.runtime.gef.ui.figures.NodeFigure; >+ >+import org.eclipse.gmf.runtime.notation.View; >+ >+import org.eclipse.uml2.diagram.component.edit.policies.InterfaceItemSemanticEditPolicy; >+import org.eclipse.uml2.diagram.component.edit.policies.UMLExtNodeLabelHostLayoutEditPolicy; >+import org.eclipse.uml2.diagram.component.part.UMLVisualIDRegistry; >+ >+/** >+ * @generated >+ */ >+public class InterfaceEditPart extends ShapeNodeEditPart { >+ >+ /** >+ * @generated >+ */ >+ public static final int VISUAL_ID = 3005; >+ >+ /** >+ * @generated >+ */ >+ protected IFigure contentPane; >+ >+ /** >+ * @generated >+ */ >+ protected IFigure primaryShape; >+ >+ /** >+ * @generated >+ */ >+ public InterfaceEditPart(View view) { >+ super(view); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void createDefaultEditPolicies() { >+ super.createDefaultEditPolicies(); >+ installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE, new InterfaceItemSemanticEditPolicy()); >+ installEditPolicy(EditPolicy.LAYOUT_ROLE, createLayoutEditPolicy()); >+ >+ } >+ >+ /** >+ * @generated >+ */ >+ protected LayoutEditPolicy createLayoutEditPolicy() { >+ LayoutEditPolicy lep = new LayoutEditPolicy() { >+ >+ protected void decorateChild(EditPart child) { >+ if (isExternalLabel(child)) { >+ return; >+ } >+ super.decorateChild(child); >+ } >+ >+ protected EditPolicy createChildEditPolicy(EditPart child) { >+ EditPolicy result = child.getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE); >+ if (result == null) { >+ result = new NonResizableEditPolicy(); >+ } >+ return result; >+ } >+ >+ protected Command getMoveChildrenCommand(Request request) { >+ return null; >+ } >+ >+ protected Command getCreateCommand(CreateRequest request) { >+ return null; >+ } >+ }; >+ UMLExtNodeLabelHostLayoutEditPolicy xlep = new UMLExtNodeLabelHostLayoutEditPolicy() { >+ >+ protected boolean isExternalLabel(EditPart editPart) { >+ return InterfaceEditPart.this.isExternalLabel(editPart); >+ } >+ }; >+ xlep.setRealLayoutEditPolicy(lep); >+ return xlep; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected IFigure createNodeShape() { >+ ProvidedInterfaceCircleFigure figure = new ProvidedInterfaceCircleFigure(); >+ return primaryShape = figure; >+ } >+ >+ /** >+ * @generated >+ */ >+ public ProvidedInterfaceCircleFigure getPrimaryShape() { >+ return (ProvidedInterfaceCircleFigure) primaryShape; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected IFigure getContentPaneFor(IGraphicalEditPart editPart) { >+ if (isExternalLabel(editPart)) { >+ return getExternalLabelsContainer(); >+ } >+ >+ return super.getContentPaneFor(editPart); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected NodeFigure createNodePlate() { >+ DefaultSizeNodeFigure result = new DefaultSizeNodeFigure(getMapMode().DPtoLP(15), getMapMode().DPtoLP(15)); >+ return result; >+ } >+ >+ /** >+ * @generated >+ */ >+ public EditPolicy getPrimaryDragEditPolicy() { >+ EditPolicy result = super.getPrimaryDragEditPolicy(); >+ if (result instanceof ResizableEditPolicy) { >+ ResizableEditPolicy ep = (ResizableEditPolicy) result; >+ >+ ep.setResizeDirections(PositionConstants.NONE); >+ >+ } >+ return result; >+ } >+ >+ /** >+ * Creates figure for this edit part. >+ * >+ * Body of this method does not depend on settings in generation model >+ * so you may safely remove <i>generated</i> tag and modify it. >+ * >+ * @generated >+ */ >+ protected NodeFigure createNodeFigure() { >+ NodeFigure figure = createNodePlate(); >+ figure.setLayoutManager(new StackLayout()); >+ IFigure shape = createNodeShape(); >+ figure.add(shape); >+ contentPane = setupContentPane(shape); >+ return figure; >+ } >+ >+ /** >+ * Default implementation treats passed figure as content pane. >+ * Respects layout one may have set for generated figure. >+ * @param nodeShape instance of generated figure class >+ * @generated >+ */ >+ protected IFigure setupContentPane(IFigure nodeShape) { >+ if (nodeShape.getLayoutManager() == null) { >+ ConstrainedToolbarLayout layout = new ConstrainedToolbarLayout(); >+ layout.setSpacing(getMapMode().DPtoLP(5)); >+ nodeShape.setLayoutManager(layout); >+ } >+ return nodeShape; // use nodeShape itself as contentPane >+ } >+ >+ /** >+ * @generated >+ */ >+ public IFigure getContentPane() { >+ if (contentPane != null) { >+ return contentPane; >+ } >+ return super.getContentPane(); >+ } >+ >+ /** >+ * @generated >+ */ >+ public EditPart getPrimaryChildEditPart() { >+ return getChildBySemanticHint(UMLVisualIDRegistry.getType(InterfaceNameEditPart.VISUAL_ID)); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected boolean isExternalLabel(EditPart childEditPart) { >+ if (childEditPart instanceof InterfaceNameEditPart) { >+ return true; >+ } >+ return false; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected IFigure getExternalLabelsContainer() { >+ LayerManager root = (LayerManager) getRoot(); >+ return root.getLayer(UMLEditPartFactory.EXTERNAL_NODE_LABELS_LAYER); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void addChildVisual(EditPart childEditPart, int index) { >+ if (isExternalLabel(childEditPart)) { >+ IFigure labelFigure = ((GraphicalEditPart) childEditPart).getFigure(); >+ getExternalLabelsContainer().add(labelFigure); >+ return; >+ } >+ super.addChildVisual(childEditPart, -1); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void removeChildVisual(EditPart childEditPart) { >+ if (isExternalLabel(childEditPart)) { >+ IFigure labelFigure = ((GraphicalEditPart) childEditPart).getFigure(); >+ getExternalLabelsContainer().remove(labelFigure); >+ return; >+ } >+ super.removeChildVisual(childEditPart); >+ } >+ >+ /** >+ * @generated >+ */ >+ public void removeNotify() { >+ for (Iterator it = getChildren().iterator(); it.hasNext();) { >+ EditPart childEditPart = (EditPart) it.next(); >+ if (isExternalLabel(childEditPart)) { >+ IFigure labelFigure = ((GraphicalEditPart) childEditPart).getFigure(); >+ getExternalLabelsContainer().remove(labelFigure); >+ } >+ } >+ super.removeNotify(); >+ } >+ >+ /** >+ * @generated >+ */ >+ public class ProvidedInterfaceCircleFigure extends org.eclipse.draw2d.Ellipse { >+ >+ /** >+ * @generated >+ */ >+ public ProvidedInterfaceCircleFigure() { >+ >+ this.setPreferredSize(getMapMode().DPtoLP(15), getMapMode().DPtoLP(15)); >+ this.setMaximumSize(new org.eclipse.draw2d.geometry.Dimension(getMapMode().DPtoLP(15), getMapMode().DPtoLP(15))); >+ this.setMinimumSize(new org.eclipse.draw2d.geometry.Dimension(getMapMode().DPtoLP(15), getMapMode().DPtoLP(15))); >+ createContents(); >+ } >+ >+ /** >+ * @generated >+ */ >+ private void createContents() { >+ } >+ >+ /** >+ * @generated >+ */ >+ private boolean myUseLocalCoordinates = false; >+ >+ /** >+ * @generated >+ */ >+ protected boolean useLocalCoordinates() { >+ return myUseLocalCoordinates; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setUseLocalCoordinates(boolean useLocalCoordinates) { >+ myUseLocalCoordinates = useLocalCoordinates; >+ } >+ >+ } >+ >+} >Index: .options >=================================================================== >RCS file: .options >diff -N .options >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ .options 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,7 @@ >+# Debugging options for the org.eclipse.uml2.diagram.component plug-in >+ >+# Turn on general debugging for the org.eclipse.uml2.diagram.component plug-in >+org.eclipse.uml2.diagram.component/debug=false >+ >+# Turn on debugging of visualID processing >+org.eclipse.uml2.diagram.component/debug/visualID=true >Index: src/org/eclipse/uml2/diagram/component/providers/UMLEditPartProvider.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/component/providers/UMLEditPartProvider.java >diff -N src/org/eclipse/uml2/diagram/component/providers/UMLEditPartProvider.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/component/providers/UMLEditPartProvider.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,142 @@ >+package org.eclipse.uml2.diagram.component.providers; >+ >+import java.lang.ref.WeakReference; >+ >+import org.eclipse.gef.EditPart; >+import org.eclipse.gef.EditPartFactory; >+import org.eclipse.gmf.runtime.common.core.service.IOperation; >+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart; >+import org.eclipse.gmf.runtime.diagram.ui.services.editpart.AbstractEditPartProvider; >+import org.eclipse.gmf.runtime.diagram.ui.services.editpart.CreateGraphicEditPartOperation; >+import org.eclipse.gmf.runtime.diagram.ui.services.editpart.IEditPartOperation; >+import org.eclipse.gmf.runtime.notation.View; >+ >+import org.eclipse.uml2.diagram.component.edit.parts.PackageEditPart; >+import org.eclipse.uml2.diagram.component.edit.parts.UMLEditPartFactory; >+import org.eclipse.uml2.diagram.component.part.UMLVisualIDRegistry; >+ >+/** >+ * @generated >+ */ >+public class UMLEditPartProvider extends AbstractEditPartProvider { >+ >+ /** >+ * @generated >+ */ >+ private EditPartFactory factory; >+ >+ /** >+ * @generated >+ */ >+ private boolean allowCaching; >+ >+ /** >+ * @generated >+ */ >+ private WeakReference cachedPart; >+ >+ /** >+ * @generated >+ */ >+ private WeakReference cachedView; >+ >+ /** >+ * @generated >+ */ >+ public UMLEditPartProvider() { >+ setFactory(new UMLEditPartFactory()); >+ setAllowCaching(true); >+ } >+ >+ /** >+ * @generated >+ */ >+ public final EditPartFactory getFactory() { >+ return factory; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void setFactory(EditPartFactory factory) { >+ this.factory = factory; >+ } >+ >+ /** >+ * @generated >+ */ >+ public final boolean isAllowCaching() { >+ return allowCaching; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected synchronized void setAllowCaching(boolean allowCaching) { >+ this.allowCaching = allowCaching; >+ if (!allowCaching) { >+ cachedPart = null; >+ cachedView = null; >+ } >+ } >+ >+ /** >+ * @generated >+ */ >+ protected IGraphicalEditPart createEditPart(View view) { >+ EditPart part = factory.createEditPart(null, view); >+ if (part instanceof IGraphicalEditPart) { >+ return (IGraphicalEditPart) part; >+ } >+ return null; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected IGraphicalEditPart getCachedPart(View view) { >+ if (cachedView != null && cachedView.get() == view) { >+ return (IGraphicalEditPart) cachedPart.get(); >+ } >+ return null; >+ } >+ >+ /** >+ * @generated >+ */ >+ public synchronized IGraphicalEditPart createGraphicEditPart(View view) { >+ if (isAllowCaching()) { >+ IGraphicalEditPart part = getCachedPart(view); >+ cachedPart = null; >+ cachedView = null; >+ if (part != null) { >+ return part; >+ } >+ } >+ return createEditPart(view); >+ } >+ >+ /** >+ * @generated >+ */ >+ public synchronized boolean provides(IOperation operation) { >+ if (operation instanceof CreateGraphicEditPartOperation) { >+ View view = ((IEditPartOperation) operation).getView(); >+ if (!PackageEditPart.MODEL_ID.equals(UMLVisualIDRegistry.getModelID(view))) { >+ return false; >+ } >+ if (isAllowCaching() && getCachedPart(view) != null) { >+ return true; >+ } >+ IGraphicalEditPart part = createEditPart(view); >+ if (part != null) { >+ if (isAllowCaching()) { >+ cachedPart = new WeakReference(part); >+ cachedView = new WeakReference(view); >+ } >+ return true; >+ } >+ } >+ return false; >+ } >+} >Index: src/org/eclipse/uml2/diagram/component/navigator/UMLNavigatorSorter.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/component/navigator/UMLNavigatorSorter.java >diff -N src/org/eclipse/uml2/diagram/component/navigator/UMLNavigatorSorter.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/component/navigator/UMLNavigatorSorter.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,30 @@ >+package org.eclipse.uml2.diagram.component.navigator; >+ >+import org.eclipse.jface.viewers.ViewerSorter; >+ >+import org.eclipse.uml2.diagram.component.edit.parts.PackageEditPart; >+ >+/** >+ * @generated >+ */ >+public class UMLNavigatorSorter extends ViewerSorter { >+ >+ /** >+ * @generated >+ */ >+ private static final int GROUP_CATEGORY = 7003; >+ >+ /** >+ * @generated >+ */ >+ public int category(Object element) { >+ if (element instanceof UMLNavigatorItem) { >+ UMLNavigatorItem item = (UMLNavigatorItem) element; >+ if (PackageEditPart.MODEL_ID.equals(item.getModelID())) { >+ return item.getVisualID(); >+ } >+ } >+ return GROUP_CATEGORY; >+ } >+ >+} >Index: src/org/eclipse/uml2/diagram/component/part/UMLInitDiagramFileAction.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/component/part/UMLInitDiagramFileAction.java >diff -N src/org/eclipse/uml2/diagram/component/part/UMLInitDiagramFileAction.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/component/part/UMLInitDiagramFileAction.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,108 @@ >+package org.eclipse.uml2.diagram.component.part; >+ >+import org.eclipse.core.resources.IFile; >+ >+import org.eclipse.emf.common.util.URI; >+import org.eclipse.emf.common.util.WrappedException; >+ >+import org.eclipse.emf.ecore.EObject; >+ >+import org.eclipse.emf.ecore.resource.Resource; >+import org.eclipse.emf.ecore.resource.ResourceSet; >+ >+import org.eclipse.emf.transaction.TransactionalEditingDomain; >+ >+import org.eclipse.gmf.runtime.emf.core.GMFEditingDomainFactory; >+ >+import org.eclipse.jface.action.IAction; >+ >+import org.eclipse.jface.dialogs.IDialogSettings; >+import org.eclipse.jface.dialogs.MessageDialog; >+ >+import org.eclipse.jface.viewers.ISelection; >+import org.eclipse.jface.viewers.IStructuredSelection; >+import org.eclipse.jface.viewers.StructuredSelection; >+ >+import org.eclipse.jface.wizard.Wizard; >+import org.eclipse.jface.wizard.WizardDialog; >+ >+import org.eclipse.ui.IObjectActionDelegate; >+import org.eclipse.ui.IWorkbenchPart; >+import org.eclipse.uml2.diagram.component.edit.parts.PackageEditPart; >+ >+/** >+ * @generated >+ */ >+public class UMLInitDiagramFileAction implements IObjectActionDelegate { >+ >+ /** >+ * @generated >+ */ >+ private IWorkbenchPart myPart; >+ >+ /** >+ * @generated >+ */ >+ private IFile mySelectedModelFile; >+ >+ /** >+ * @generated >+ */ >+ private IStructuredSelection mySelection; >+ >+ /** >+ * @generated >+ */ >+ public void setActivePart(IAction action, IWorkbenchPart targetPart) { >+ myPart = targetPart; >+ } >+ >+ /** >+ * @generated >+ */ >+ public void selectionChanged(IAction action, ISelection selection) { >+ mySelectedModelFile = null; >+ mySelection = StructuredSelection.EMPTY; >+ action.setEnabled(false); >+ if (selection instanceof IStructuredSelection == false || selection.isEmpty()) { >+ return; >+ } >+ mySelection = (IStructuredSelection) selection; >+ mySelectedModelFile = (IFile) ((IStructuredSelection) selection).getFirstElement(); >+ action.setEnabled(true); >+ } >+ >+ /** >+ * @generated >+ */ >+ public void run(IAction action) { >+ TransactionalEditingDomain editingDomain = GMFEditingDomainFactory.INSTANCE.createEditingDomain(); >+ ResourceSet resourceSet = editingDomain.getResourceSet(); >+ EObject diagramRoot = null; >+ try { >+ Resource resource = resourceSet.getResource(URI.createPlatformResourceURI(mySelectedModelFile.getFullPath().toString()), true); >+ diagramRoot = (EObject) resource.getContents().get(0); >+ } catch (WrappedException ex) { >+ UMLDiagramEditorPlugin.getInstance().logError("Unable to load resource: " + mySelectedModelFile.getFullPath().toString(), ex); //$NON-NLS-1$ >+ } >+ if (diagramRoot == null) { >+ MessageDialog.openError(myPart.getSite().getShell(), "Error", "Model file loading failed"); >+ return; >+ } >+ Wizard wizard = new UMLNewDiagramFileWizard(mySelectedModelFile, myPart.getSite().getPage(), mySelection, diagramRoot, editingDomain); >+ IDialogSettings pluginDialogSettings = UMLDiagramEditorPlugin.getInstance().getDialogSettings(); >+ IDialogSettings initDiagramFileSettings = pluginDialogSettings.getSection("InisDiagramFile"); //$NON-NLS-1$ >+ if (initDiagramFileSettings == null) { >+ initDiagramFileSettings = pluginDialogSettings.addNewSection("InisDiagramFile"); //$NON-NLS-1$ >+ } >+ wizard.setDialogSettings(initDiagramFileSettings); >+ wizard.setForcePreviousAndNextButtons(false); >+ wizard.setWindowTitle("Initialize new " + PackageEditPart.MODEL_ID + " diagram file"); >+ >+ WizardDialog dialog = new WizardDialog(myPart.getSite().getShell(), wizard); >+ dialog.create(); >+ dialog.getShell().setSize(Math.max(500, dialog.getShell().getSize().x), 500); >+ dialog.open(); >+ } >+ >+} >Index: src/org/eclipse/uml2/diagram/component/providers/UMLStructuralFeaturesParser.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/component/providers/UMLStructuralFeaturesParser.java >diff -N src/org/eclipse/uml2/diagram/component/providers/UMLStructuralFeaturesParser.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/component/providers/UMLStructuralFeaturesParser.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,102 @@ >+package org.eclipse.uml2.diagram.component.providers; >+ >+import java.text.FieldPosition; >+import java.text.MessageFormat; >+import java.util.ArrayList; >+import java.util.Iterator; >+import java.util.List; >+ >+import org.eclipse.core.runtime.IAdaptable; >+import org.eclipse.emf.common.notify.Notification; >+import org.eclipse.emf.ecore.EObject; >+import org.eclipse.emf.ecore.EStructuralFeature; >+import org.eclipse.emf.transaction.TransactionalEditingDomain; >+import org.eclipse.emf.transaction.util.TransactionUtil; >+import org.eclipse.gmf.runtime.common.core.command.ICommand; >+import org.eclipse.gmf.runtime.common.core.command.UnexecutableCommand; >+import org.eclipse.gmf.runtime.common.ui.services.parser.IParserEditStatus; >+import org.eclipse.gmf.runtime.common.ui.services.parser.ParserEditStatus; >+import org.eclipse.gmf.runtime.emf.commands.core.command.CompositeTransactionalCommand; >+import org.eclipse.uml2.diagram.component.part.UMLDiagramEditorPlugin; >+ >+/** >+ * @generated >+ */ >+public class UMLStructuralFeaturesParser extends UMLAbstractParser { >+ >+ /** >+ * @generated >+ */ >+ private List features; >+ >+ /** >+ * @generated >+ */ >+ public UMLStructuralFeaturesParser(List features) { >+ this.features = features; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected String getStringByPattern(IAdaptable adapter, int flags, String pattern, MessageFormat processor) { >+ EObject element = (EObject) adapter.getAdapter(EObject.class); >+ List values = new ArrayList(features.size()); >+ for (Iterator it = features.iterator(); it.hasNext();) { >+ EStructuralFeature feature = (EStructuralFeature) it.next(); >+ Object value = element.eGet(feature); >+ value = getValidValue(feature, value); >+ values.add(value); >+ } >+ return processor.format(values.toArray(new Object[values.size()]), new StringBuffer(), new FieldPosition(0)).toString(); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected IParserEditStatus validateValues(Object[] values) { >+ if (values.length != features.size()) { >+ return ParserEditStatus.UNEDITABLE_STATUS; >+ } >+ for (int i = 0; i < values.length; i++) { >+ Object value = getValidNewValue((EStructuralFeature) features.get(i), values[i]); >+ if (value instanceof InvalidValue) { >+ return new ParserEditStatus(UMLDiagramEditorPlugin.ID, IParserEditStatus.UNEDITABLE, value.toString()); >+ } >+ } >+ return ParserEditStatus.EDITABLE_STATUS; >+ } >+ >+ /** >+ * @generated >+ */ >+ public ICommand getParseCommand(IAdaptable adapter, Object[] values) { >+ EObject element = (EObject) adapter.getAdapter(EObject.class); >+ if (element == null) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ TransactionalEditingDomain editingDomain = TransactionUtil.getEditingDomain(element); >+ if (editingDomain == null) { >+ return UnexecutableCommand.INSTANCE; >+ } >+ CompositeTransactionalCommand command = new CompositeTransactionalCommand(editingDomain, "Set Values"); //$NON-NLS-1$ >+ for (int i = 0; i < values.length; i++) { >+ EStructuralFeature feature = (EStructuralFeature) features.get(i); >+ command.compose(getModificationCommand(element, feature, values[i])); >+ } >+ return command; >+ } >+ >+ /** >+ * @generated >+ */ >+ public boolean isAffectingEvent(Object event, int flags) { >+ if (event instanceof Notification) { >+ Object feature = ((Notification) event).getFeature(); >+ if (features.contains(feature)) { >+ return true; >+ } >+ } >+ return false; >+ } >+} >Index: src/org/eclipse/uml2/diagram/component/view/factories/InterfaceRealizationViewFactory.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/component/view/factories/InterfaceRealizationViewFactory.java >diff -N src/org/eclipse/uml2/diagram/component/view/factories/InterfaceRealizationViewFactory.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/component/view/factories/InterfaceRealizationViewFactory.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,52 @@ >+package org.eclipse.uml2.diagram.component.view.factories; >+ >+import java.util.ArrayList; >+import java.util.List; >+ >+import org.eclipse.core.runtime.IAdaptable; >+ >+import org.eclipse.emf.ecore.EAnnotation; >+import org.eclipse.emf.ecore.EcoreFactory; >+ >+import org.eclipse.gmf.runtime.diagram.ui.view.factories.ConnectionViewFactory; >+ >+import org.eclipse.gmf.runtime.notation.NotationFactory; >+import org.eclipse.gmf.runtime.notation.View; >+ >+import org.eclipse.uml2.diagram.component.edit.parts.PackageEditPart; >+import org.eclipse.uml2.diagram.component.part.UMLVisualIDRegistry; >+ >+/** >+ * @generated >+ */ >+public class InterfaceRealizationViewFactory extends ConnectionViewFactory { >+ >+ /** >+ * @generated >+ */ >+ protected List createStyles(View view) { >+ List styles = new ArrayList(); >+ styles.add(NotationFactory.eINSTANCE.createRoutingStyle()); >+ styles.add(NotationFactory.eINSTANCE.createFontStyle()); >+ styles.add(NotationFactory.eINSTANCE.createLineStyle()); >+ return styles; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected void decorateView(View containerView, View view, IAdaptable semanticAdapter, String semanticHint, int index, boolean persisted) { >+ if (semanticHint == null) { >+ semanticHint = UMLVisualIDRegistry.getType(org.eclipse.uml2.diagram.component.edit.parts.InterfaceRealizationEditPart.VISUAL_ID); >+ view.setType(semanticHint); >+ } >+ super.decorateView(containerView, view, semanticAdapter, semanticHint, index, persisted); >+ if (!PackageEditPart.MODEL_ID.equals(UMLVisualIDRegistry.getModelID(containerView))) { >+ EAnnotation shortcutAnnotation = EcoreFactory.eINSTANCE.createEAnnotation(); >+ shortcutAnnotation.setSource("Shortcut"); //$NON-NLS-1$ >+ shortcutAnnotation.getDetails().put("modelID", PackageEditPart.MODEL_ID); //$NON-NLS-1$ >+ view.getEAnnotations().add(shortcutAnnotation); >+ } >+ } >+ >+} >Index: src/org/eclipse/uml2/diagram/component/view/factories/InterfaceNameViewFactory.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/component/view/factories/InterfaceNameViewFactory.java >diff -N src/org/eclipse/uml2/diagram/component/view/factories/InterfaceNameViewFactory.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/component/view/factories/InterfaceNameViewFactory.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,40 @@ >+package org.eclipse.uml2.diagram.component.view.factories; >+ >+import java.util.ArrayList; >+import java.util.List; >+import org.eclipse.core.runtime.IAdaptable; >+import org.eclipse.gmf.runtime.diagram.core.preferences.PreferencesHint; >+import org.eclipse.gmf.runtime.diagram.ui.view.factories.AbstractLabelViewFactory; >+import org.eclipse.gmf.runtime.notation.Node; >+import org.eclipse.gmf.runtime.notation.View; >+import org.eclipse.gmf.runtime.diagram.ui.util.MeasurementUnitHelper; >+ >+import org.eclipse.gmf.runtime.draw2d.ui.mapmode.IMapMode; >+ >+import org.eclipse.gmf.runtime.notation.Location; >+ >+/** >+ * @generated >+ */ >+public class InterfaceNameViewFactory extends AbstractLabelViewFactory { >+ >+ /** >+ * @generated >+ */ >+ public View createView(IAdaptable semanticAdapter, View containerView, String semanticHint, int index, boolean persisted, PreferencesHint preferencesHint) { >+ Node view = (Node) super.createView(semanticAdapter, containerView, semanticHint, index, persisted, preferencesHint); >+ Location location = (Location) view.getLayoutConstraint(); >+ IMapMode mapMode = MeasurementUnitHelper.getMapMode(containerView.getDiagram().getMeasurementUnit()); >+ location.setX(mapMode.DPtoLP(0)); >+ location.setY(mapMode.DPtoLP(5)); >+ return view; >+ } >+ >+ /** >+ * @generated >+ */ >+ protected List createStyles(View view) { >+ List styles = new ArrayList(); >+ return styles; >+ } >+} >Index: src/org/eclipse/uml2/diagram/component/edit/policies/ArtifactItemSemanticEditPolicy.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/component/edit/policies/ArtifactItemSemanticEditPolicy.java >diff -N src/org/eclipse/uml2/diagram/component/edit/policies/ArtifactItemSemanticEditPolicy.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/component/edit/policies/ArtifactItemSemanticEditPolicy.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,40 @@ >+package org.eclipse.uml2.diagram.component.edit.policies; >+ >+import org.eclipse.gef.commands.Command; >+import org.eclipse.gmf.runtime.emf.type.core.commands.DestroyElementCommand; >+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateRelationshipRequest; >+import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest; >+import org.eclipse.emf.ecore.EObject; >+import org.eclipse.emf.ecore.EAnnotation; >+import org.eclipse.gmf.runtime.notation.View; >+ >+/** >+ * @generated >+ */ >+public class ArtifactItemSemanticEditPolicy extends UMLBaseItemSemanticEditPolicy { >+ >+ /** >+ * @generated >+ */ >+ protected Command getDestroyElementCommand(DestroyElementRequest req) { >+ return getMSLWrapper(new DestroyElementCommand(req) { >+ >+ protected EObject getElementToDestroy() { >+ View view = (View) getHost().getModel(); >+ EAnnotation annotation = view.getEAnnotation("Shortcut"); //$NON-NLS-1$ >+ if (annotation != null) { >+ return view; >+ } >+ return super.getElementToDestroy(); >+ } >+ >+ }); >+ } >+ >+ /** >+ * @generated >+ */ >+ protected Command getCreateRelationshipCommand(CreateRelationshipRequest req) { >+ return super.getCreateRelationshipCommand(req); >+ } >+} >Index: src/org/eclipse/uml2/diagram/component/part/UMLCreationWizard.java >=================================================================== >RCS file: src/org/eclipse/uml2/diagram/component/part/UMLCreationWizard.java >diff -N src/org/eclipse/uml2/diagram/component/part/UMLCreationWizard.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/uml2/diagram/component/part/UMLCreationWizard.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,130 @@ >+package org.eclipse.uml2.diagram.component.part; >+ >+import java.lang.reflect.InvocationTargetException; >+ >+import org.eclipse.core.resources.IFile; >+import org.eclipse.core.runtime.CoreException; >+import org.eclipse.core.runtime.IProgressMonitor; >+import org.eclipse.emf.common.util.URI; >+import org.eclipse.jface.dialogs.ErrorDialog; >+import org.eclipse.jface.operation.IRunnableWithProgress; >+import org.eclipse.jface.viewers.IStructuredSelection; >+import org.eclipse.jface.wizard.Wizard; >+import org.eclipse.ui.INewWizard; >+import org.eclipse.ui.IWorkbench; >+ >+import org.eclipse.ui.actions.WorkspaceModifyOperation; >+import org.eclipse.uml2.diagram.component.edit.parts.PackageEditPart; >+ >+/** >+ * @generated >+ */ >+public class UMLCreationWizard extends Wizard implements INewWizard { >+ >+ /** >+ * @generated >+ */ >+ private IWorkbench workbench; >+ >+ /** >+ * @generated >+ */ >+ protected IStructuredSelection selection; >+ >+ /** >+ * @generated >+ */ >+ protected UMLCreationWizardPage page; >+ >+ /** >+ * @generated >+ */ >+ protected URI diagramURI; >+ >+ /** >+ * @generated >+ */ >+ private boolean openNewlyCreatedDiagramEditor = true; >+ >+ /** >+ * @generated >+ */ >+ public IWorkbench getWorkbench() { >+ return workbench; >+ } >+ >+ /** >+ * @generated >+ */ >+ public IStructuredSelection getSelection() { >+ return selection; >+ } >+ >+ /** >+ * @generated >+ */ >+ public final URI getDiagramURI() { >+ return diagramURI; >+ } >+ >+ /** >+ * @generated >+ */ >+ public final boolean isOpenNewlyCreatedDiagramEditor() { >+ return openNewlyCreatedDiagramEditor; >+ } >+ >+ /** >+ * @generated >+ */ >+ public void setOpenNewlyCreatedDiagramEditor(boolean openNewlyCreatedDiagramEditor) { >+ this.openNewlyCreatedDiagramEditor = openNewlyCreatedDiagramEditor; >+ } >+ >+ /** >+ * @generated >+ */ >+ public void init(IWorkbench workbench, IStructuredSelection selection) { >+ this.workbench = workbench; >+ this.selection = selection; >+ setWindowTitle("New UMLComponent Diagram"); >+ setDefaultPageImageDescriptor(UMLDiagramEditorPlugin.getBundledImageDescriptor("icons/wizban/NewUMLWizard.gif")); //$NON-NLS-1$ >+ setNeedsProgressMonitor(true); >+ } >+ >+ /** >+ * @generated >+ */ >+ public void addPages() { >+ page = new UMLCreationWizardPage("CreationWizardPage", getSelection()); //$NON-NLS-1$ >+ page.setTitle("Create UMLComponent Diagram"); >+ page.setDescription("Create a new UMLComponent diagram."); >+ addPage(page); >+ } >+ >+ /** >+ * @generated >+ */ >+ public boolean performFinish() { >+ IRunnableWithProgress op = new WorkspaceModifyOperation(null) { >+ >+ protected void execute(IProgressMonitor monitor) throws CoreException, InterruptedException { >+ diagramURI = UMLDiagramEditorUtil.createAndOpenDiagram(page.getContainerFullPath(), page.getFileName(), getWorkbench().getActiveWorkbenchWindow(), monitor, >+ isOpenNewlyCreatedDiagramEditor(), true); >+ } >+ }; >+ try { >+ getContainer().run(false, true, op); >+ } catch (InterruptedException e) { >+ return false; >+ } catch (InvocationTargetException e) { >+ if (e.getTargetException() instanceof CoreException) { >+ ErrorDialog.openError(getContainer().getShell(), "Creation Problems", null, ((CoreException) e.getTargetException()).getStatus()); >+ } else { >+ UMLDiagramEditorPlugin.getInstance().logError("Error creating diagram", e.getTargetException()); //$NON-NLS-1$ >+ } >+ return false; >+ } >+ return diagramURI != null; >+ } >+} >Index: build.properties >=================================================================== >RCS file: build.properties >diff -N build.properties >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ build.properties 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,7 @@ >+bin.includes = .,\ >+ META-INF/,\ >+ plugin.xml,\ >+ plugin.properties >+jars.compile.order = . >+source.. = src/ >+output.. = bin/
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 161573
: 52855