diff --git a/org.fortiss.tooling.kernel.ui/src/org/fortiss/tooling/kernel/ui/internal/views/.ratings b/org.fortiss.tooling.kernel.ui/src/org/fortiss/tooling/kernel/ui/internal/views/.ratings index 520c2dff37660cd1c389aa491980c5aa599af9ff..883e849ceafc02f378a0859c07a6cc6c3dc8dbf5 100644 --- a/org.fortiss.tooling.kernel.ui/src/org/fortiss/tooling/kernel/ui/internal/views/.ratings +++ b/org.fortiss.tooling.kernel.ui/src/org/fortiss/tooling/kernel/ui/internal/views/.ratings @@ -5,7 +5,7 @@ LibraryView.java 6f7273ee49b9049c7267c129bd59ed27ec5872e2 GREEN LibraryViewDragSourceAdapter.java 56ef61b214ef5d6cb5b751791a92158bda0391ec GREEN LinkWithEditorPartListener.java c5ab74424378e7b158a805c4dd14fc03c8abeded GREEN MarkerViewContentProvider.java 297d9a5c355047796dc938eb909fd1cf27a2cbf3 GREEN -MarkerViewPart.java 074e8e65c46daf50749d26d5eb866eef3eac2f2d GREEN +MarkerViewPart.java cbb650271b6877af205421b7cb11f930440a7ef9 GREEN NavigatorNewMenu.java a35e391960d1dacbe7f77982e53e1891e9382d5a GREEN NavigatorTreeContentProvider.java 1bdefa28c5e2c2619cabbcd1946269a52db34e6c GREEN NavigatorTreeContentSorter.java 76fc94e441ac1a8f2c5ae573f0e2b1e6fa73c31a GREEN diff --git a/org.fortiss.tooling.kernel.ui/src/org/fortiss/tooling/kernel/ui/internal/views/MarkerViewPart.java b/org.fortiss.tooling.kernel.ui/src/org/fortiss/tooling/kernel/ui/internal/views/MarkerViewPart.java index 074e8e65c46daf50749d26d5eb866eef3eac2f2d..cbb650271b6877af205421b7cb11f930440a7ef9 100644 --- a/org.fortiss.tooling.kernel.ui/src/org/fortiss/tooling/kernel/ui/internal/views/MarkerViewPart.java +++ b/org.fortiss.tooling.kernel.ui/src/org/fortiss/tooling/kernel/ui/internal/views/MarkerViewPart.java @@ -38,6 +38,7 @@ import org.eclipse.swt.widgets.Composite; import org.eclipse.ui.part.ViewPart; import org.fortiss.tooling.kernel.extension.data.IConstraintViolation; import org.fortiss.tooling.kernel.extension.data.IConstraintViolation.ESeverity; +import org.fortiss.tooling.kernel.extension.data.ITopLevelElement; import org.fortiss.tooling.kernel.service.IPersistencyService; import org.fortiss.tooling.kernel.ui.extension.IModelElementHandler; import org.fortiss.tooling.kernel.ui.internal.MarkerService; @@ -95,9 +96,9 @@ public class MarkerViewPart extends ViewPart { if(cell.getElement() instanceof IConstraintViolation) { IConstraintViolation<? extends EObject> violation = (IConstraintViolation<? extends EObject>)cell.getElement(); + IModelElementHandlerService hs = IModelElementHandlerService.getInstance(); IModelElementHandler<EObject> handler = - IModelElementHandlerService.getInstance().getModelElementHandler( - violation.getSource()); + hs.getModelElementHandler(violation.getSource()); cell.setText(handler != null ? handler.getName(violation.getSource()) : ""); } else { cell.setText(""); @@ -123,13 +124,17 @@ public class MarkerViewPart extends ViewPart { if(cell.getElement() instanceof IConstraintViolation) { IConstraintViolation<? extends EObject> violation = (IConstraintViolation<? extends EObject>)cell.getElement(); - EObject rootElement = - IPersistencyService.getInstance() - .getTopLevelElementFor(violation.getSource()) - .getRootModelElement(); - IModelElementHandler<EObject> handler = - IModelElementHandlerService.getInstance().getModelElementHandler( - rootElement); + IPersistencyService ps = IPersistencyService.getInstance(); + ITopLevelElement topElement = ps.getTopLevelElementFor(violation.getSource()); + + IModelElementHandler<EObject> handler = null; + EObject rootElement = null; + if(topElement != null) { + rootElement = topElement.getRootModelElement(); + + IModelElementHandlerService hs = IModelElementHandlerService.getInstance(); + handler = hs.getModelElementHandler(rootElement); + } cell.setText(handler != null ? handler.getName(rootElement) : ""); } else { cell.setText(""); diff --git a/org.fortiss.tooling.kernel.ui/src/org/fortiss/tooling/kernel/ui/util/.ratings b/org.fortiss.tooling.kernel.ui/src/org/fortiss/tooling/kernel/ui/util/.ratings index bf1fb819daf15007719007c117f4d2cff7dc5edd..c96e219b793bd221af192ae966734f956cb18def 100644 --- a/org.fortiss.tooling.kernel.ui/src/org/fortiss/tooling/kernel/ui/util/.ratings +++ b/org.fortiss.tooling.kernel.ui/src/org/fortiss/tooling/kernel/ui/util/.ratings @@ -1,6 +1,6 @@ ActionUtils.java 4553e487264e3d1f86f4767da4a7400cce4b9a5d GREEN ConstraintsUIUtils.java 69d5e08bbf768baf2790380e36f1020ef826a33e GREEN -CopyPasteUtils.java 7da2d871bebecc7010e699b4625e1614bf2392ab GREEN +CopyPasteUtils.java 66ff2c44bef3bfecc85a6d3109c6b15a8960fa38 GREEN DataBindingUtils.java 0818014c193a22d5968435e78590368b95138d5e GREEN DragAndDropUtils.java 7aab91518aa12d76533a345bf6ed0be9ac7ff0e5 GREEN EObjectSelectionUtils.java 928280b5dd3bb634debc1ac3be9f15b4e45f2683 GREEN diff --git a/org.fortiss.tooling.kernel.ui/src/org/fortiss/tooling/kernel/ui/util/CopyPasteUtils.java b/org.fortiss.tooling.kernel.ui/src/org/fortiss/tooling/kernel/ui/util/CopyPasteUtils.java index 7da2d871bebecc7010e699b4625e1614bf2392ab..66ff2c44bef3bfecc85a6d3109c6b15a8960fa38 100644 --- a/org.fortiss.tooling.kernel.ui/src/org/fortiss/tooling/kernel/ui/util/CopyPasteUtils.java +++ b/org.fortiss.tooling.kernel.ui/src/org/fortiss/tooling/kernel/ui/util/CopyPasteUtils.java @@ -74,9 +74,9 @@ public class CopyPasteUtils { ((IConstrained)subObj).getConstraintInstances().clear(); } } - copier.copyReferences(); i++; } + copier.copyReferences(); EList<ISpeciallyCopyiable> specialSel = pickInstanceOf(ISpeciallyCopyiable.class, new BasicEList<EObject>(sel)); for(ISpeciallyCopyiable obj : specialSel) { @@ -121,16 +121,23 @@ public class CopyPasteUtils { return; } - EcoreUtil.Copier copier = new EcoreUtil.Copier(); + // canPasteInto() ensures that clip-board is non-empty + boolean sameResource = getClipBoardContent()[0].eResource() == target.eResource(); + + // Use original (non-copied) references only when copying within the same model resource. + // Otherwise, the copy in the destination resource will have a reference to the original + // resource. + EcoreUtil.Copier copier = new EcoreUtil.Copier(true, sameResource); BasicEList<EObject> copiedObjects = new BasicEList<EObject>(); for(EObject obj : getClipBoardContent()) { EObject copy = copier.copy(obj); adaptCopyNames(copy, target); - copier.copyReferences(); IElementCompositorService.getInstance().compose(target, copy, new PasteContext(getEditedEObject(), copier)); copiedObjects.add(copy); } + copier.copyReferences(); + for(EObject obj : getClipBoardContent()) { if(obj instanceof ISpeciallyCopyiable) { ((ISpeciallyCopyiable)obj).specialCopyHook(copier);