diff options
| author | jlescot | 2007-12-03 10:44:07 +0000 |
|---|---|---|
| committer | jlescot | 2007-12-03 10:44:07 +0000 |
| commit | 790a1286afdd36fa3395ce885a3fe91c524d34a6 (patch) | |
| tree | 11c4d467dcd2a458ada6905cba508523c12875f1 | |
| parent | 061121f27e3bebe1ab8cbd775aa2a77a1717384c (diff) | |
| download | org.eclipse.ecoretools-790a1286afdd36fa3395ce885a3fe91c524d34a6.tar.gz org.eclipse.ecoretools-790a1286afdd36fa3395ce885a3fe91c524d34a6.tar.xz org.eclipse.ecoretools-790a1286afdd36fa3395ce885a3fe91c524d34a6.zip | |
Regenerate from the *.gmfgen by adding Validation feedback and support and Printing capabilities
10 files changed, 319 insertions, 77 deletions
diff --git a/plugins/org.eclipse.emf.ecoretools.diagram/META-INF/MANIFEST.MF b/plugins/org.eclipse.emf.ecoretools.diagram/META-INF/MANIFEST.MF index e889f9b..76b8342 100644 --- a/plugins/org.eclipse.emf.ecoretools.diagram/META-INF/MANIFEST.MF +++ b/plugins/org.eclipse.emf.ecoretools.diagram/META-INF/MANIFEST.MF @@ -1,7 +1,7 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: %pluginName -Bundle-SymbolicName: org.eclipse.emf.ecoretools.diagram;singleton:=true +Bundle-SymbolicName: org.eclipse.emf.ecoretools.diagram; singleton:=true Bundle-Version: 0.8.0.qualifier Bundle-ClassPath: . Bundle-Activator: org.eclipse.emf.ecoretools.diagram.part.EcoreDiagramEditorPlugin @@ -47,6 +47,9 @@ Require-Bundle: org.eclipse.core.runtime, org.eclipse.gmf.runtime.draw2d.ui;visibility:=reexport, org.eclipse.gef;visibility:=reexport, org.eclipse.ui.navigator.resources, - org.eclipse.gmf.runtime.diagram.ui.outline + org.eclipse.gmf.runtime.diagram.ui.outline, + org.eclipse.gmf.runtime.diagram.ui.printing, + org.eclipse.gmf.runtime.diagram.ui.printing.render, + org.eclipse.emf.validation;visibility:=reexport Eclipse-LazyStart: true Bundle-RequiredExecutionEnvironment: J2SE-1.5 diff --git a/plugins/org.eclipse.emf.ecoretools.diagram/models/ecore.gmfgen b/plugins/org.eclipse.emf.ecoretools.diagram/models/ecore.gmfgen index a0c41fe..13fb351 100644 --- a/plugins/org.eclipse.emf.ecoretools.diagram/models/ecore.gmfgen +++ b/plugins/org.eclipse.emf.ecoretools.diagram/models/ecore.gmfgen @@ -13,7 +13,10 @@ canonicalEditPolicyClassName="EPackageCanonicalEditPolicy" iconProviderPriority="Low" creationWizardIconPath="icons/Ecore.gif" - validationProviderPriority="Low"> + validationProviderPriority="Low" + validationEnabled="true" + validationDecorators="true" + liveValidationUIFeedback="true"> <diagramRunTimeClass href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Diagram"/> <elementType @@ -995,8 +998,8 @@ </palette> <preferencePages xsi:type="gmfgen:GenStandardPreferencePage" - iD="org.eclipse.emf.ecore.ediagram.general" - name="Ecore Diagram (2)"> + iD="org.eclipse.emf.ecoretools.diagram.general" + name="Ecore Tools Diagram"> <children xsi:type="gmfgen:GenStandardPreferencePage" iD="org.eclipse.emf.ecoretools.diagram.appearance" @@ -1028,7 +1031,8 @@ iD="org.eclipse.emf.ecoretools.diagram" name="Ecore Tools Diagram (Incubation)" provider="Eclipse.org" - version="0.8.0.qualifier"/> + version="0.8.0.qualifier" + printingEnabled="true"/> <editor iconPath="icons/Ecore.gif"/> <navigator> @@ -1393,8 +1397,8 @@ iD="diagram"/> <tabs xsi:type="gmfgen:GenCustomPropertyTab" - iD="domain" - label="Core"> + iD="all" + label="All"> <filter xsi:type="gmfgen:TypeTabFilter"> <types>org.eclipse.gmf.runtime.notation.View</types> diff --git a/plugins/org.eclipse.emf.ecoretools.diagram/plugin.xml b/plugins/org.eclipse.emf.ecoretools.diagram/plugin.xml index 98d39fe..b90f9b4 100644 --- a/plugins/org.eclipse.emf.ecoretools.diagram/plugin.xml +++ b/plugins/org.eclipse.emf.ecoretools.diagram/plugin.xml @@ -125,6 +125,16 @@ </ViewId> </GlobalActionHandlerProvider> <GlobalActionHandlerProvider + class="org.eclipse.gmf.runtime.diagram.ui.printing.render.providers.DiagramWithPrintGlobalActionHandlerProvider" + id="EcorePresentationPrint"> + <Priority name="Lowest"/> + <ViewId id="org.eclipse.emf.ecoretools.diagram.part.EcoreDiagramEditorID"> + <ElementType class="org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart"> + <GlobalActionId actionId="print"/> + </ElementType> + </ViewId> + </GlobalActionHandlerProvider> + <GlobalActionHandlerProvider class="org.eclipse.gmf.runtime.diagram.ui.providers.ide.providers.DiagramIDEGlobalActionHandlerProvider" id="EcorePresentationIDE"> <Priority name="Lowest"/> @@ -692,10 +702,12 @@ sequence="F5"/> </extension> - <extension point="org.eclipse.gmf.runtime.diagram.ui.decoratorProviders"> + <extension id="validationDecoratorProvider" name="ValidationDecorations" point="org.eclipse.gmf.runtime.diagram.ui.decoratorProviders"> <?gmfgen generated="true"?> - <decoratorProvider class="org.eclipse.emf.ecoretools.diagram.providers.EcoreShortcutsDecoratorProvider"> + <decoratorProvider class="org.eclipse.emf.ecoretools.diagram.providers.EcoreValidationDecoratorProvider"> <Priority name="Lowest"/> + <object class="org.eclipse.gmf.runtime.diagram.ui.editparts.IPrimaryEditPart(org.eclipse.gmf.runtime.diagram.ui)" id="PRIMARY_VIEW"/> + <context decoratorTargets="PRIMARY_VIEW"/> </decoratorProvider> </extension> @@ -712,6 +724,14 @@ <extension point="org.eclipse.gmf.runtime.common.ui.services.action.contributionItemProviders"> <?gmfgen generated="true"?> + <contributionItemProvider class="org.eclipse.emf.ecoretools.diagram.providers.EcoreContributionItemProvider"> + <Priority name="Low"> + </Priority> + <partContribution id="org.eclipse.emf.ecoretools.diagram.part.EcoreDiagramEditorID"> + <partAction menubarPath="/file/print" id="printPreviewAction"> + </partAction> + </partContribution> + </contributionItemProvider> <contributionItemProvider class="org.eclipse.gmf.runtime.diagram.ui.providers.DiagramContributionItemProvider" checkPluginLoaded="false"> @@ -738,14 +758,36 @@ </popupContribution> </contributionItemProvider> </extension> - - - - - - - - - + <extension id="ValidationContributionItemProvider" name="Validation" + point="org.eclipse.gmf.runtime.common.ui.services.action.contributionItemProviders"> + <?gmfgen generated="true"?> + <contributionItemProvider + class="org.eclipse.emf.ecoretools.diagram.providers.EcoreValidationProvider"> + <Priority name="Low"/> + <partContribution id="org.eclipse.emf.ecoretools.diagram.part.EcoreDiagramEditorID"> + <partMenuGroup menubarPath="/diagramMenu/" id="validationGroup"/> + <partAction id="validateAction" menubarPath="/diagramMenu/validationGroup"/> + </partContribution> + </contributionItemProvider> + </extension> + <extension point="org.eclipse.gmf.runtime.common.ui.services.markerNavigationProviders"> + <?gmfgen generated="true"?> + <MarkerNavigationProvider class="org.eclipse.emf.ecoretools.diagram.providers.EcoreMarkerNavigationProvider"> + <MarkerType name="org.eclipse.emf.ecoretools.diagram.diagnostic"/> + <Priority name="Lowest"/> + </MarkerNavigationProvider> + </extension> + <extension id="diagnostic" name="Ecore Tools Diagram (Incubation) problems" point="org.eclipse.core.resources.markers"> + <?gmfgen generated="true"?> + <super type="org.eclipse.core.resources.problemmarker"/> + <super type="org.eclipse.gmf.runtime.common.ui.services.marker"/> + <persistent value="true"/> + </extension> + <extension point="org.eclipse.gmf.runtime.diagram.ui.decoratorProviders"> + <?gmfgen generated="true"?> + <decoratorProvider class="org.eclipse.emf.ecoretools.diagram.providers.EcoreShortcutsDecoratorProvider"> + <Priority name="Lowest"/> + </decoratorProvider> + </extension> </plugin> diff --git a/plugins/org.eclipse.emf.ecoretools.diagram/src/org/eclipse/emf/ecoretools/diagram/edit/parts/EDataType2EditPart.java b/plugins/org.eclipse.emf.ecoretools.diagram/src/org/eclipse/emf/ecoretools/diagram/edit/parts/EDataType2EditPart.java index e41101f..4a5f6cb 100644 --- a/plugins/org.eclipse.emf.ecoretools.diagram/src/org/eclipse/emf/ecoretools/diagram/edit/parts/EDataType2EditPart.java +++ b/plugins/org.eclipse.emf.ecoretools.diagram/src/org/eclipse/emf/ecoretools/diagram/edit/parts/EDataType2EditPart.java @@ -258,7 +258,7 @@ public class EDataType2EditPart extends ShapeNodeEditPart { } /** - * @generated + * @generated NOT */ private void createContents() { diff --git a/plugins/org.eclipse.emf.ecoretools.diagram/src/org/eclipse/emf/ecoretools/diagram/edit/policies/EClassAttributes2ItemSemanticEditPolicy.java b/plugins/org.eclipse.emf.ecoretools.diagram/src/org/eclipse/emf/ecoretools/diagram/edit/policies/EClassAttributes2ItemSemanticEditPolicy.java index 723d980..b15da6e 100644 --- a/plugins/org.eclipse.emf.ecoretools.diagram/src/org/eclipse/emf/ecoretools/diagram/edit/policies/EClassAttributes2ItemSemanticEditPolicy.java +++ b/plugins/org.eclipse.emf.ecoretools.diagram/src/org/eclipse/emf/ecoretools/diagram/edit/policies/EClassAttributes2ItemSemanticEditPolicy.java @@ -29,7 +29,7 @@ public class EClassAttributes2ItemSemanticEditPolicy extends EcoreBaseItemSemant protected Command getCreateCommand(CreateElementRequest req) { if (EcoreElementTypes.EAttribute_2001 == req.getElementType()) { if (req.getContainmentFeature() == null) { - req.setContainmentFeature(EcorePackage.eINSTANCE.getEClass_EStructuralFeatures()); + req.setContainmentFeature(EcorePackage.eINSTANCE.getEClass_EAttributes()); } return getGEFWrapper(new EAttributeCreateCommand(req)); } diff --git a/plugins/org.eclipse.emf.ecoretools.diagram/src/org/eclipse/emf/ecoretools/diagram/edit/policies/EPackageCanonicalEditPolicy.java b/plugins/org.eclipse.emf.ecoretools.diagram/src/org/eclipse/emf/ecoretools/diagram/edit/policies/EPackageCanonicalEditPolicy.java index 1f2dc81..b5dd1f9 100644 --- a/plugins/org.eclipse.emf.ecoretools.diagram/src/org/eclipse/emf/ecoretools/diagram/edit/policies/EPackageCanonicalEditPolicy.java +++ b/plugins/org.eclipse.emf.ecoretools.diagram/src/org/eclipse/emf/ecoretools/diagram/edit/policies/EPackageCanonicalEditPolicy.java @@ -26,19 +26,15 @@ import org.eclipse.core.runtime.IAdaptable; import org.eclipse.emf.ecore.EObject; import org.eclipse.emf.ecore.EcorePackage; import org.eclipse.emf.ecoretools.diagram.edit.parts.EAnnotationEditPart; -import org.eclipse.emf.ecoretools.diagram.edit.parts.EAttributeEditPart; import org.eclipse.emf.ecoretools.diagram.edit.parts.EClass2EditPart; import org.eclipse.emf.ecoretools.diagram.edit.parts.EClassEditPart; import org.eclipse.emf.ecoretools.diagram.edit.parts.EDataType2EditPart; import org.eclipse.emf.ecoretools.diagram.edit.parts.EDataTypeEditPart; import org.eclipse.emf.ecoretools.diagram.edit.parts.EEnum2EditPart; import org.eclipse.emf.ecoretools.diagram.edit.parts.EEnumEditPart; -import org.eclipse.emf.ecoretools.diagram.edit.parts.EEnumLiteralEditPart; -import org.eclipse.emf.ecoretools.diagram.edit.parts.EOperationEditPart; import org.eclipse.emf.ecoretools.diagram.edit.parts.EPackage2EditPart; import org.eclipse.emf.ecoretools.diagram.edit.parts.EPackageEditPart; import org.eclipse.emf.ecoretools.diagram.edit.parts.EReferenceEditPart; -import org.eclipse.emf.ecoretools.diagram.edit.parts.EStringToStringMapEntryEditPart; import org.eclipse.emf.ecoretools.diagram.part.EcoreDiagramUpdater; import org.eclipse.emf.ecoretools.diagram.part.EcoreLinkDescriptor; import org.eclipse.emf.ecoretools.diagram.part.EcoreNodeDescriptor; @@ -188,10 +184,16 @@ public class EPackageCanonicalEditPolicy extends CanonicalConnectionEditPolicy { Collection existingLinks = new LinkedList(getDiagram().getEdges()); for (Iterator linksIterator = existingLinks.iterator(); linksIterator.hasNext();) { Edge nextDiagramLink = (Edge) linksIterator.next(); + int diagramLinkVisualID = EcoreVisualIDRegistry.getVisualID(nextDiagramLink); + if (diagramLinkVisualID == -1) { + if (nextDiagramLink.getSource() != null && nextDiagramLink.getTarget() != null) { + linksIterator.remove(); + } + continue; + } EObject diagramLinkObject = nextDiagramLink.getElement(); EObject diagramLinkSrc = nextDiagramLink.getSource().getElement(); EObject diagramLinkDst = nextDiagramLink.getTarget().getElement(); - int diagramLinkVisualID = EcoreVisualIDRegistry.getVisualID(nextDiagramLink); for (Iterator LinkDescriptorsIterator = linkDescriptors.iterator(); LinkDescriptorsIterator.hasNext();) { EcoreLinkDescriptor nextLinkDescriptor = (EcoreLinkDescriptor) LinkDescriptorsIterator.next(); if (diagramLinkObject == nextLinkDescriptor.getModelElement() && diagramLinkSrc == nextLinkDescriptor.getSource() && diagramLinkDst == nextLinkDescriptor.getDestination() @@ -215,73 +217,93 @@ public class EPackageCanonicalEditPolicy extends CanonicalConnectionEditPolicy { Collection result = new LinkedList(); switch (EcoreVisualIDRegistry.getVisualID(view)) { case EPackageEditPart.VISUAL_ID: { - domain2NotationMap.put(view.getElement(), view); - result.addAll(EcoreDiagramUpdater.getEPackage_79ContainedLinks(view)); + if (!domain2NotationMap.containsKey(view.getElement())) { + result.addAll(EcoreDiagramUpdater.getEPackage_79ContainedLinks(view)); + } + if (!domain2NotationMap.containsKey(view.getElement()) || view.getEAnnotation("Shortcut") == null) { //$NON-NLS-1$ + domain2NotationMap.put(view.getElement(), view); + } break; } case EClassEditPart.VISUAL_ID: { - domain2NotationMap.put(view.getElement(), view); - result.addAll(EcoreDiagramUpdater.getEClass_1001ContainedLinks(view)); + if (!domain2NotationMap.containsKey(view.getElement())) { + result.addAll(EcoreDiagramUpdater.getEClass_1001ContainedLinks(view)); + } + if (!domain2NotationMap.containsKey(view.getElement()) || view.getEAnnotation("Shortcut") == null) { //$NON-NLS-1$ + domain2NotationMap.put(view.getElement(), view); + } break; } case EPackage2EditPart.VISUAL_ID: { - domain2NotationMap.put(view.getElement(), view); - result.addAll(EcoreDiagramUpdater.getEPackage_1002ContainedLinks(view)); + if (!domain2NotationMap.containsKey(view.getElement())) { + result.addAll(EcoreDiagramUpdater.getEPackage_1002ContainedLinks(view)); + } + if (!domain2NotationMap.containsKey(view.getElement()) || view.getEAnnotation("Shortcut") == null) { //$NON-NLS-1$ + domain2NotationMap.put(view.getElement(), view); + } break; } case EAnnotationEditPart.VISUAL_ID: { - domain2NotationMap.put(view.getElement(), view); - result.addAll(EcoreDiagramUpdater.getEAnnotation_1003ContainedLinks(view)); + if (!domain2NotationMap.containsKey(view.getElement())) { + result.addAll(EcoreDiagramUpdater.getEAnnotation_1003ContainedLinks(view)); + } + if (!domain2NotationMap.containsKey(view.getElement()) || view.getEAnnotation("Shortcut") == null) { //$NON-NLS-1$ + domain2NotationMap.put(view.getElement(), view); + } break; } case EDataTypeEditPart.VISUAL_ID: { - domain2NotationMap.put(view.getElement(), view); - result.addAll(EcoreDiagramUpdater.getEDataType_1004ContainedLinks(view)); + if (!domain2NotationMap.containsKey(view.getElement())) { + result.addAll(EcoreDiagramUpdater.getEDataType_1004ContainedLinks(view)); + } + if (!domain2NotationMap.containsKey(view.getElement()) || view.getEAnnotation("Shortcut") == null) { //$NON-NLS-1$ + domain2NotationMap.put(view.getElement(), view); + } break; } case EEnumEditPart.VISUAL_ID: { - domain2NotationMap.put(view.getElement(), view); - result.addAll(EcoreDiagramUpdater.getEEnum_1005ContainedLinks(view)); - break; - } - case EAttributeEditPart.VISUAL_ID: { - domain2NotationMap.put(view.getElement(), view); - result.addAll(EcoreDiagramUpdater.getEAttribute_2001ContainedLinks(view)); - break; - } - case EOperationEditPart.VISUAL_ID: { - domain2NotationMap.put(view.getElement(), view); - result.addAll(EcoreDiagramUpdater.getEOperation_2002ContainedLinks(view)); + if (!domain2NotationMap.containsKey(view.getElement())) { + result.addAll(EcoreDiagramUpdater.getEEnum_1005ContainedLinks(view)); + } + if (!domain2NotationMap.containsKey(view.getElement()) || view.getEAnnotation("Shortcut") == null) { //$NON-NLS-1$ + domain2NotationMap.put(view.getElement(), view); + } break; } case EClass2EditPart.VISUAL_ID: { - domain2NotationMap.put(view.getElement(), view); - result.addAll(EcoreDiagramUpdater.getEClass_2003ContainedLinks(view)); + if (!domain2NotationMap.containsKey(view.getElement())) { + result.addAll(EcoreDiagramUpdater.getEClass_2003ContainedLinks(view)); + } + if (!domain2NotationMap.containsKey(view.getElement()) || view.getEAnnotation("Shortcut") == null) { //$NON-NLS-1$ + domain2NotationMap.put(view.getElement(), view); + } break; } case EDataType2EditPart.VISUAL_ID: { - domain2NotationMap.put(view.getElement(), view); - result.addAll(EcoreDiagramUpdater.getEDataType_2004ContainedLinks(view)); + if (!domain2NotationMap.containsKey(view.getElement())) { + result.addAll(EcoreDiagramUpdater.getEDataType_2004ContainedLinks(view)); + } + if (!domain2NotationMap.containsKey(view.getElement()) || view.getEAnnotation("Shortcut") == null) { //$NON-NLS-1$ + domain2NotationMap.put(view.getElement(), view); + } break; } case EEnum2EditPart.VISUAL_ID: { - domain2NotationMap.put(view.getElement(), view); - result.addAll(EcoreDiagramUpdater.getEEnum_2005ContainedLinks(view)); - break; - } - case EEnumLiteralEditPart.VISUAL_ID: { - domain2NotationMap.put(view.getElement(), view); - result.addAll(EcoreDiagramUpdater.getEEnumLiteral_2006ContainedLinks(view)); - break; - } - case EStringToStringMapEntryEditPart.VISUAL_ID: { - domain2NotationMap.put(view.getElement(), view); - result.addAll(EcoreDiagramUpdater.getEStringToStringMapEntry_2007ContainedLinks(view)); + if (!domain2NotationMap.containsKey(view.getElement())) { + result.addAll(EcoreDiagramUpdater.getEEnum_2005ContainedLinks(view)); + } + if (!domain2NotationMap.containsKey(view.getElement()) || view.getEAnnotation("Shortcut") == null) { //$NON-NLS-1$ + domain2NotationMap.put(view.getElement(), view); + } break; } case EReferenceEditPart.VISUAL_ID: { - domain2NotationMap.put(view.getElement(), view); - result.addAll(EcoreDiagramUpdater.getEReference_3002ContainedLinks(view)); + if (!domain2NotationMap.containsKey(view.getElement())) { + result.addAll(EcoreDiagramUpdater.getEReference_3002ContainedLinks(view)); + } + if (!domain2NotationMap.containsKey(view.getElement()) || view.getEAnnotation("Shortcut") == null) { //$NON-NLS-1$ + domain2NotationMap.put(view.getElement(), view); + } break; } } diff --git a/plugins/org.eclipse.emf.ecoretools.diagram/src/org/eclipse/emf/ecoretools/diagram/part/EcoreDiagramEditorUtil.java b/plugins/org.eclipse.emf.ecoretools.diagram/src/org/eclipse/emf/ecoretools/diagram/part/EcoreDiagramEditorUtil.java index 860aff9..4bd709c 100644 --- a/plugins/org.eclipse.emf.ecoretools.diagram/src/org/eclipse/emf/ecoretools/diagram/part/EcoreDiagramEditorUtil.java +++ b/plugins/org.eclipse.emf.ecoretools.diagram/src/org/eclipse/emf/ecoretools/diagram/part/EcoreDiagramEditorUtil.java @@ -200,15 +200,19 @@ public class EcoreDiagramEditorUtil { /** * This method should be called within a workspace modify operation since it * creates resources.<br> - * <b>Updated</b> : here we only need to create the diagram resource, the domain - * resource already exist, we just load it + * <b>Updated</b> : here we only need to create the diagram resource, the + * domain resource already exist, we just load it * - * @param diagramURI the diagram model EMF URI - * @param modelURI the domain model EMF URI - * @param domainElement the domain element that should be associated with the Diagram - * @param progressMonitor the progressMonitor + * @param diagramURI + * the diagram model EMF URI + * @param modelURI + * the domain model EMF URI + * @param domainElement + * the domain element that should be associated with the Diagram + * @param progressMonitor + * the progressMonitor * - * @return Resource the diagram resource + * @return Resource the diagram resource */ public static Resource createDiagramOnly(URI diagramURI, URI modelURI, EObject domainElement, boolean initializeDiagram, IProgressMonitor progressMonitor) { TransactionalEditingDomain editingDomain = WorkspaceEditingDomainFactory.INSTANCE.createEditingDomain(); @@ -395,10 +399,10 @@ public class EcoreDiagramEditorUtil { View view = (View) element; if (view.getDiagram() == scope.getDiagram()) { element2ViewMap.put(element, element); // take only - // those - // that part - // of our - // diagram + // those + // that part + // of our + // diagram } } } diff --git a/plugins/org.eclipse.emf.ecoretools.diagram/src/org/eclipse/emf/ecoretools/diagram/providers/EcoreContributionItemProvider.java b/plugins/org.eclipse.emf.ecoretools.diagram/src/org/eclipse/emf/ecoretools/diagram/providers/EcoreContributionItemProvider.java new file mode 100644 index 0000000..b3c7a03 --- /dev/null +++ b/plugins/org.eclipse.emf.ecoretools.diagram/src/org/eclipse/emf/ecoretools/diagram/providers/EcoreContributionItemProvider.java @@ -0,0 +1,35 @@ +/* + * Copyright (c) 2007 Anyware Technologies + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Anyware Technologies - initial API and implementation + */ +package org.eclipse.emf.ecoretools.diagram.providers; + +import org.eclipse.gmf.runtime.common.ui.services.action.contributionitem.AbstractContributionItemProvider; +import org.eclipse.gmf.runtime.common.ui.util.IWorkbenchPartDescriptor; +import org.eclipse.gmf.runtime.diagram.ui.printing.actions.PrintPreviewAction; +import org.eclipse.gmf.runtime.diagram.ui.printing.render.actions.EnhancedPrintActionHelper; +import org.eclipse.gmf.runtime.diagram.ui.printing.render.actions.RenderedPrintPreviewAction; +import org.eclipse.jface.action.IAction; + +/** + * @generated + */ +public class EcoreContributionItemProvider extends AbstractContributionItemProvider { + + /** + * @generated + */ + protected IAction createAction(String actionId, IWorkbenchPartDescriptor partDescriptor) { + if (actionId.equals(PrintPreviewAction.ID)) { + return new RenderedPrintPreviewAction(new EnhancedPrintActionHelper()); + } + return super.createAction(actionId, partDescriptor); + } +} diff --git a/plugins/org.eclipse.emf.ecoretools.diagram/src/org/eclipse/emf/ecoretools/diagram/providers/EcoreValidationProvider.java b/plugins/org.eclipse.emf.ecoretools.diagram/src/org/eclipse/emf/ecoretools/diagram/providers/EcoreValidationProvider.java index 46279d4..3acfdfe 100644 --- a/plugins/org.eclipse.emf.ecoretools.diagram/src/org/eclipse/emf/ecoretools/diagram/providers/EcoreValidationProvider.java +++ b/plugins/org.eclipse.emf.ecoretools.diagram/src/org/eclipse/emf/ecoretools/diagram/providers/EcoreValidationProvider.java @@ -12,12 +12,21 @@ package org.eclipse.emf.ecoretools.diagram.providers; +import java.util.Collection; +import java.util.HashMap; +import java.util.Map; + +import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.core.runtime.IStatus; +import org.eclipse.emf.ecore.EObject; import org.eclipse.emf.ecoretools.diagram.edit.parts.EPackageEditPart; import org.eclipse.emf.ecoretools.diagram.part.EcoreDiagramEditorPlugin; import org.eclipse.emf.ecoretools.diagram.part.EcoreVisualIDRegistry; import org.eclipse.emf.ecoretools.diagram.part.ValidateAction; import org.eclipse.emf.transaction.TransactionalEditingDomain; import org.eclipse.emf.transaction.util.TransactionUtil; +import org.eclipse.emf.validation.service.IBatchValidator; +import org.eclipse.emf.validation.service.ITraversalStrategy; import org.eclipse.gmf.runtime.common.ui.services.action.contributionitem.AbstractContributionItemProvider; import org.eclipse.gmf.runtime.common.ui.util.IWorkbenchPartDescriptor; import org.eclipse.gmf.runtime.notation.View; @@ -91,4 +100,120 @@ public class EcoreValidationProvider extends AbstractContributionItemProvider { return true; } + /** + * @generated + */ + static final Map semanticCtxIdMap = new HashMap(); + + /** + * @generated + */ + public static ITraversalStrategy getNotationTraversalStrategy(IBatchValidator validator) { + return new CtxSwitchStrategy(validator); + } + + /** + * @generated + */ + private static class CtxSwitchStrategy implements ITraversalStrategy { + + /** + * @generated + */ + private ITraversalStrategy defaultStrategy; + + /** + * @generated + */ + private String currentSemanticCtxId; + + /** + * @generated + */ + private boolean ctxChanged = true; + + /** + * @generated + */ + private EObject currentTarget; + + /** + * @generated + */ + private EObject preFetchedNextTarget; + + /** + * @generated + */ + CtxSwitchStrategy(IBatchValidator validator) { + this.defaultStrategy = validator.getDefaultTraversalStrategy(); + } + + /** + * @generated + */ + public void elementValidated(EObject element, IStatus status) { + defaultStrategy.elementValidated(element, status); + } + + /** + * @generated + */ + public boolean hasNext() { + return defaultStrategy.hasNext(); + } + + /** + * @generated + */ + public boolean isClientContextChanged() { + if (preFetchedNextTarget == null) { + preFetchedNextTarget = next(); + prepareNextClientContext(preFetchedNextTarget); + } + return ctxChanged; + } + + /** + * @generated + */ + public EObject next() { + EObject nextTarget = preFetchedNextTarget; + if (nextTarget == null) { + nextTarget = defaultStrategy.next(); + } + this.preFetchedNextTarget = null; + return this.currentTarget = nextTarget; + } + + /** + * @generated + */ + public void startTraversal(Collection traversalRoots, IProgressMonitor monitor) { + defaultStrategy.startTraversal(traversalRoots, monitor); + } + + /** + * @generated + */ + private void prepareNextClientContext(EObject nextTarget) { + if (nextTarget != null && currentTarget != null) { + if (nextTarget instanceof View) { + String id = ((View) nextTarget).getType(); + String nextSemanticId = id != null && semanticCtxIdMap.containsKey(id) ? id : null; + if ((currentSemanticCtxId != null && !currentSemanticCtxId.equals(nextSemanticId)) || (nextSemanticId != null && !nextSemanticId.equals(currentSemanticCtxId))) { + this.ctxChanged = true; + } + currentSemanticCtxId = nextSemanticId; + } else { + // context of domain model + this.ctxChanged = currentSemanticCtxId != null; + currentSemanticCtxId = null; + } + } else { + this.ctxChanged = false; + } + } + } + } // EcoreValidationProvider diff --git a/plugins/org.eclipse.emf.ecoretools.diagram/src/org/eclipse/emf/ecoretools/diagram/view/factories/EReferenceNameViewFactory.java b/plugins/org.eclipse.emf.ecoretools.diagram/src/org/eclipse/emf/ecoretools/diagram/view/factories/EReferenceNameViewFactory.java index d73954b..be1d11b 100644 --- a/plugins/org.eclipse.emf.ecoretools.diagram/src/org/eclipse/emf/ecoretools/diagram/view/factories/EReferenceNameViewFactory.java +++ b/plugins/org.eclipse.emf.ecoretools.diagram/src/org/eclipse/emf/ecoretools/diagram/view/factories/EReferenceNameViewFactory.java @@ -17,7 +17,10 @@ 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.util.MeasurementUnitHelper; import org.eclipse.gmf.runtime.diagram.ui.view.factories.AbstractLabelViewFactory; +import org.eclipse.gmf.runtime.draw2d.ui.mapmode.IMapMode; +import org.eclipse.gmf.runtime.notation.Location; import org.eclipse.gmf.runtime.notation.Node; import org.eclipse.gmf.runtime.notation.View; @@ -31,6 +34,10 @@ public class EReferenceNameViewFactory extends AbstractLabelViewFactory { */ 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(-10)); + location.setY(mapMode.DPtoLP(-10)); return view; } |
