Merge branch 'smaro/feature/officeHandler' of ssh://git.eclipse.org:29418/capra/org.eclipse.capra into smaro/feature/officeHandler
diff --git a/org.eclipse.capra.core/src/org/eclipse/capra/core/handlers/ArtifactHandler.java b/org.eclipse.capra.core/src/org/eclipse/capra/core/handlers/ArtifactHandler.java
index 092fb5f..f429025 100644
--- a/org.eclipse.capra.core/src/org/eclipse/capra/core/handlers/ArtifactHandler.java
+++ b/org.eclipse.capra.core/src/org/eclipse/capra/core/handlers/ArtifactHandler.java
@@ -10,6 +10,7 @@
*******************************************************************************/
package org.eclipse.capra.core.handlers;
+import org.eclipse.capra.core.helpers.EMFHelper;
import org.eclipse.emf.ecore.EObject;
/**
@@ -55,4 +56,20 @@
*/
Object resolveArtifact(EObject artifact);
+ /**
+ *
+ * @param selection
+ * The selected object to be added to the selection view
+ * @return The name that should be displayed in the selection view. This
+ * method has a default implementation but gives flexibility for
+ * each handler to decide how its objects should look like when
+ * dropped to the selection view.
+ */
+ default String getDisplayName(Object selection) {
+ if (selection instanceof EObject) {
+ return EMFHelper.getIdentifier((EObject) selection);
+ } else
+ return selection.toString();
+ }
+
}
diff --git a/org.eclipse.capra.ui/src/org/eclipse/capra/ui/helpers/EMFHelper.java b/org.eclipse.capra.core/src/org/eclipse/capra/core/helpers/EMFHelper.java
similarity index 98%
rename from org.eclipse.capra.ui/src/org/eclipse/capra/ui/helpers/EMFHelper.java
rename to org.eclipse.capra.core/src/org/eclipse/capra/core/helpers/EMFHelper.java
index e498b8e..4b3fcbe 100644
--- a/org.eclipse.capra.ui/src/org/eclipse/capra/ui/helpers/EMFHelper.java
+++ b/org.eclipse.capra.core/src/org/eclipse/capra/core/helpers/EMFHelper.java
@@ -8,7 +8,7 @@
* Contributors:
* Chalmers | University of Gothenburg and rt-labs - initial API and implementation and/or initial documentation
*******************************************************************************/
-package org.eclipse.capra.ui.helpers;
+package org.eclipse.capra.core.helpers;
import java.util.ArrayList;
import java.util.List;
diff --git a/org.eclipse.capra.handler.cdt/src/org/eclipse/capra/handler/cdt/CDTHandler.java b/org.eclipse.capra.handler.cdt/src/org/eclipse/capra/handler/cdt/CDTHandler.java
index 8657e19..18af1d7 100644
--- a/org.eclipse.capra.handler.cdt/src/org/eclipse/capra/handler/cdt/CDTHandler.java
+++ b/org.eclipse.capra.handler.cdt/src/org/eclipse/capra/handler/cdt/CDTHandler.java
@@ -44,4 +44,10 @@
return CoreModel.create(uri);
}
+ @Override
+ public String getDisplayName(Object selection) {
+ ICElement cu = (ICElement) selection;
+ return cu.getElementName();
+ }
+
}
diff --git a/org.eclipse.capra.handler.file/src/org/eclipse/capra/handler/file/IFileHandler.java b/org.eclipse.capra.handler.file/src/org/eclipse/capra/handler/file/IFileHandler.java
index 59593d2..bfd655b 100644
--- a/org.eclipse.capra.handler.file/src/org/eclipse/capra/handler/file/IFileHandler.java
+++ b/org.eclipse.capra.handler.file/src/org/eclipse/capra/handler/file/IFileHandler.java
@@ -37,7 +37,13 @@
@Override
public Object resolveArtifact(EObject artifact) {
- // TODO Auto-generated method stub
+ //TO DO
return null;
}
+
+ @Override
+ public String getDisplayName(Object selection) {
+ IFile selectionAsFile = (IFile) selection;
+ return selectionAsFile.getName();
+ }
}
diff --git a/org.eclipse.capra.handler.hudson/src/org/eclipse/capra/handler/hudson/HudsonHandler.java b/org.eclipse.capra.handler.hudson/src/org/eclipse/capra/handler/hudson/HudsonHandler.java
index 18d064d..4e5b100 100644
--- a/org.eclipse.capra.handler.hudson/src/org/eclipse/capra/handler/hudson/HudsonHandler.java
+++ b/org.eclipse.capra.handler.hudson/src/org/eclipse/capra/handler/hudson/HudsonHandler.java
@@ -56,4 +56,16 @@
return null;
}
+ @Override
+ public String getDisplayName(Object selection) {
+ if (selection instanceof TestElement) {
+ TestElement test = (TestElement) selection;
+ return test.getLabel();
+ } else {
+ BuildElement build = (BuildElement) selection;
+ return build.getName();
+ }
+
+ }
+
}
diff --git a/org.eclipse.capra.handler.jdt/src/org/eclipse/capra/handler/jdt/JavaElementHandler.java b/org.eclipse.capra.handler.jdt/src/org/eclipse/capra/handler/jdt/JavaElementHandler.java
index 45e0d08..df804f1 100644
--- a/org.eclipse.capra.handler.jdt/src/org/eclipse/capra/handler/jdt/JavaElementHandler.java
+++ b/org.eclipse.capra.handler.jdt/src/org/eclipse/capra/handler/jdt/JavaElementHandler.java
@@ -48,4 +48,10 @@
return JavaCore.create(uri);
}
+ @Override
+ public String getDisplayName(Object selection) {
+ IJavaElement cu = (IJavaElement) selection;
+ return cu.getElementName();
+ }
+
}
diff --git a/org.eclipse.capra.handler.mylyn/src/org/eclipse/capra/handler/mylyn/MylynHandler.java b/org.eclipse.capra.handler.mylyn/src/org/eclipse/capra/handler/mylyn/MylynHandler.java
index ca851b2..03ed56e 100644
--- a/org.eclipse.capra.handler.mylyn/src/org/eclipse/capra/handler/mylyn/MylynHandler.java
+++ b/org.eclipse.capra.handler.mylyn/src/org/eclipse/capra/handler/mylyn/MylynHandler.java
@@ -41,4 +41,10 @@
return null;
}
+ @Override
+ public String getDisplayName(Object selection) {
+ ITask task = (ITask) selection;
+ return task.getTaskId() + " : " + task.getSummary();
+ }
+
}
diff --git a/org.eclipse.capra.handler.reqIf/src/org/eclipse/capra/handler/reqif/ReqIfHandler.java b/org.eclipse.capra.handler.reqIf/src/org/eclipse/capra/handler/reqif/ReqIfHandler.java
index d8a5333..af625aa 100644
--- a/org.eclipse.capra.handler.reqIf/src/org/eclipse/capra/handler/reqif/ReqIfHandler.java
+++ b/org.eclipse.capra.handler.reqIf/src/org/eclipse/capra/handler/reqif/ReqIfHandler.java
@@ -13,6 +13,7 @@
import org.eclipse.capra.core.handlers.ArtifactHandler;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.rmf.reqif10.SpecObject;
import org.eclipse.rmf.reqif10.impl.SpecHierarchyImpl;
public class ReqIfHandler implements ArtifactHandler {
@@ -46,4 +47,14 @@
return artifact;
}
+ @Override
+ public String getDisplayName(Object selection) {
+ IStructuredSelection structuredSelection = (IStructuredSelection) selection;
+ Object element = structuredSelection.getFirstElement();
+ SpecHierarchyImpl specification = (SpecHierarchyImpl) element;
+ SpecObject specObject = specification.getObject();
+
+ return specObject.getIdentifier();
+ }
+
}
diff --git a/org.eclipse.capra.testsuite/META-INF/MANIFEST.MF b/org.eclipse.capra.testsuite/META-INF/MANIFEST.MF
index 812f648..bb027ef 100644
--- a/org.eclipse.capra.testsuite/META-INF/MANIFEST.MF
+++ b/org.eclipse.capra.testsuite/META-INF/MANIFEST.MF
@@ -1,7 +1,7 @@
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: Testsuite
-Bundle-SymbolicName: org.eclipse.capra.testsuite
+Bundle-SymbolicName: org.eclipse.capra.testsuite;singleton:=true
Bundle-Version: 0.7.0.qualifier
Export-Package: org.eclipse.capra.testsuite
Require-Bundle: org.junit;bundle-version="4.12.0",
@@ -23,3 +23,4 @@
org.eclipse.capra.handler.emf,
org.eclipse.capra.generic.persistence
Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Import-Package: org.eclipse.swt.dnd
diff --git a/org.eclipse.capra.testsuite/plugin.xml b/org.eclipse.capra.testsuite/plugin.xml
new file mode 100644
index 0000000..1589acc
--- /dev/null
+++ b/org.eclipse.capra.testsuite/plugin.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+ <extension
+ point="org.eclipse.capra.ui.transfers">
+ <transfer
+ class="org.eclipse.capra.testsuite.extension.UiTransferExtensionDummy">
+ </transfer>
+ </extension>
+
+</plugin>
diff --git a/org.eclipse.capra.testsuite/src/org/eclipse/capra/testsuite/TestUiExtensionPoint.java b/org.eclipse.capra.testsuite/src/org/eclipse/capra/testsuite/TestUiExtensionPoint.java
new file mode 100644
index 0000000..31839ad
--- /dev/null
+++ b/org.eclipse.capra.testsuite/src/org/eclipse/capra/testsuite/TestUiExtensionPoint.java
@@ -0,0 +1,47 @@
+/*******************************************************************************
+ * Copyright (c) 2016 Chalmers | University of Gothenburg, rt-labs and others.
+ * 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:
+ * Chalmers | University of Gothenburg and rt-labs - initial API and implementation and/or initial documentation
+ *******************************************************************************/
+package org.eclipse.capra.testsuite;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.stream.Collectors;
+
+import org.eclipse.capra.core.helpers.ExtensionPointHelper;
+import org.eclipse.capra.testsuite.extension.UiTransferExtensionDummy;
+import org.eclipse.swt.dnd.Transfer;
+import org.junit.Assert;
+import org.junit.Test;
+
+/**
+ * Contains an integration test to check if contributions to extension points
+ * are set correctly.
+ *
+ * @author Jan-Philipp Steghöfer
+ *
+ */
+public class TestUiExtensionPoint {
+
+ private static final String TRANSFER_EXTENSION_POINT_ID = "org.eclipse.capra.ui.transfers";
+
+ @Test
+ public void testExtensionPoint() {
+
+ List<Transfer> transfers = new ArrayList<Transfer>();
+
+ // Get all additionally configured transfers from the extension point.
+ transfers.addAll(ExtensionPointHelper.getExtensions(TRANSFER_EXTENSION_POINT_ID, "class").stream()
+ .map(Transfer.class::cast).collect(Collectors.toList()));
+
+ Assert.assertTrue(transfers.size() > 0);
+ Assert.assertTrue(transfers.get(0) instanceof UiTransferExtensionDummy);
+ }
+
+}
diff --git a/org.eclipse.capra.testsuite/src/org/eclipse/capra/testsuite/extension/UiTransferExtensionDummy.java b/org.eclipse.capra.testsuite/src/org/eclipse/capra/testsuite/extension/UiTransferExtensionDummy.java
new file mode 100644
index 0000000..ddba796
--- /dev/null
+++ b/org.eclipse.capra.testsuite/src/org/eclipse/capra/testsuite/extension/UiTransferExtensionDummy.java
@@ -0,0 +1,44 @@
+package org.eclipse.capra.testsuite.extension;
+
+import org.eclipse.swt.dnd.Transfer;
+import org.eclipse.swt.dnd.TransferData;
+
+public class UiTransferExtensionDummy extends Transfer {
+
+ @Override
+ public TransferData[] getSupportedTypes() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public boolean isSupportedType(TransferData transferData) {
+ // TODO Auto-generated method stub
+ return false;
+ }
+
+ @Override
+ protected int[] getTypeIds() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ protected String[] getTypeNames() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ protected void javaToNative(Object object, TransferData transferData) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ protected Object nativeToJava(TransferData transferData) {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+}
diff --git a/org.eclipse.capra.ui.plantuml/src/org/eclipse/capra/ui/plantuml/Connections.java b/org.eclipse.capra.ui.plantuml/src/org/eclipse/capra/ui/plantuml/Connections.java
index 1eab0cc..d36a491 100644
--- a/org.eclipse.capra.ui.plantuml/src/org/eclipse/capra/ui/plantuml/Connections.java
+++ b/org.eclipse.capra.ui.plantuml/src/org/eclipse/capra/ui/plantuml/Connections.java
@@ -19,7 +19,7 @@
import java.util.Set;
import org.eclipse.capra.core.adapters.Connection;
-import org.eclipse.capra.ui.helpers.EMFHelper;
+import org.eclipse.capra.core.helpers.EMFHelper;
import org.eclipse.emf.ecore.EObject;
/**
diff --git a/org.eclipse.capra.ui.plantuml/src/org/eclipse/capra/ui/plantuml/DiagramTextProviderHandler.java b/org.eclipse.capra.ui.plantuml/src/org/eclipse/capra/ui/plantuml/DiagramTextProviderHandler.java
index d2d6d4b..f6d5759 100644
--- a/org.eclipse.capra.ui.plantuml/src/org/eclipse/capra/ui/plantuml/DiagramTextProviderHandler.java
+++ b/org.eclipse.capra.ui.plantuml/src/org/eclipse/capra/ui/plantuml/DiagramTextProviderHandler.java
@@ -17,10 +17,10 @@
import org.eclipse.capra.core.adapters.Connection;
import org.eclipse.capra.core.adapters.TraceMetaModelAdapter;
import org.eclipse.capra.core.adapters.TracePersistenceAdapter;
+import org.eclipse.capra.core.helpers.EMFHelper;
import org.eclipse.capra.core.helpers.ExtensionPointHelper;
-import org.eclipse.capra.ui.helpers.EMFHelper;
-import org.eclipse.capra.ui.helpers.TraceCreationHelper;
import org.eclipse.emf.ecore.EObject;
+import org.eclipse.capra.ui.helpers.TraceCreationHelper;
import org.eclipse.emf.ecore.resource.ResourceSet;
import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
import org.eclipse.jface.viewers.ISelection;
diff --git a/org.eclipse.capra.ui.plantuml/src/org/eclipse/capra/ui/plantuml/VisualizationHelper.xtend b/org.eclipse.capra.ui.plantuml/src/org/eclipse/capra/ui/plantuml/VisualizationHelper.xtend
index 592605d..5e5262d 100644
--- a/org.eclipse.capra.ui.plantuml/src/org/eclipse/capra/ui/plantuml/VisualizationHelper.xtend
+++ b/org.eclipse.capra.ui.plantuml/src/org/eclipse/capra/ui/plantuml/VisualizationHelper.xtend
@@ -4,7 +4,7 @@
import java.util.List
import org.eclipse.capra.core.adapters.Connection
import org.eclipse.capra.core.helpers.ExtensionPointHelper
-import org.eclipse.capra.ui.helpers.EMFHelper
+import org.eclipse.capra.core.helpers.EMFHelper
import org.eclipse.emf.ecore.EObject
class VisualizationHelper {
diff --git a/org.eclipse.capra.ui.plantuml/xtend-gen/org/eclipse/capra/ui/plantuml/.VisualizationHelper.xtendbin b/org.eclipse.capra.ui.plantuml/xtend-gen/org/eclipse/capra/ui/plantuml/.VisualizationHelper.xtendbin
index bb33b88..01ee436 100644
--- a/org.eclipse.capra.ui.plantuml/xtend-gen/org/eclipse/capra/ui/plantuml/.VisualizationHelper.xtendbin
+++ b/org.eclipse.capra.ui.plantuml/xtend-gen/org/eclipse/capra/ui/plantuml/.VisualizationHelper.xtendbin
Binary files differ
diff --git a/org.eclipse.capra.ui.plantuml/xtend-gen/org/eclipse/capra/ui/plantuml/VisualizationHelper.java b/org.eclipse.capra.ui.plantuml/xtend-gen/org/eclipse/capra/ui/plantuml/VisualizationHelper.java
index 5f05224..6e76a6d 100644
--- a/org.eclipse.capra.ui.plantuml/xtend-gen/org/eclipse/capra/ui/plantuml/VisualizationHelper.java
+++ b/org.eclipse.capra.ui.plantuml/xtend-gen/org/eclipse/capra/ui/plantuml/VisualizationHelper.java
@@ -1,116 +1,58 @@
package org.eclipse.capra.ui.plantuml;
-import com.google.common.base.Objects;
import java.util.Collection;
import java.util.List;
-import java.util.Optional;
+
import org.eclipse.capra.core.adapters.Connection;
-import org.eclipse.capra.core.adapters.TraceMetaModelAdapter;
-import org.eclipse.capra.core.helpers.ExtensionPointHelper;
-import org.eclipse.capra.ui.helpers.EMFHelper;
-import org.eclipse.capra.ui.plantuml.Connections;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.xtend2.lib.StringConcatenation;
@SuppressWarnings("all")
public class VisualizationHelper {
- public static String createMatrix(final EObject traceModel, final Collection<EObject> firstElements, final Collection<EObject> secondElements) {
- String _xblockexpression = null;
- {
- Optional<TraceMetaModelAdapter> _traceMetamodelAdapter = ExtensionPointHelper.getTraceMetamodelAdapter();
- final TraceMetaModelAdapter traceAdapter = _traceMetamodelAdapter.get();
- StringConcatenation _builder = new StringConcatenation();
- _builder.append("@startuml");
- _builder.newLine();
- _builder.append("salt");
- _builder.newLine();
- _builder.append("{#");
- _builder.newLine();
- {
- boolean _notEquals = (!Objects.equal(firstElements, null));
- if (_notEquals) {
- _builder.append(".");
- {
- for(final EObject e : secondElements) {
- _builder.append("|");
- String _identifier = EMFHelper.getIdentifier(e);
- _builder.append(_identifier, "");
- }
- }
- _builder.newLineIfNotEmpty();
- {
- for(final EObject first : firstElements) {
- String _identifier_1 = EMFHelper.getIdentifier(first);
- _builder.append(_identifier_1, "");
- _builder.append(" ");
- {
- for(final EObject second : secondElements) {
- _builder.append("|");
- {
- boolean _isThereATraceBetween = traceAdapter.isThereATraceBetween(first, second, traceModel);
- if (_isThereATraceBetween) {
- _builder.append("X");
- } else {
- _builder.append(".");
- }
- }
- }
- }
- _builder.newLineIfNotEmpty();
- }
- }
- } else {
- _builder.append("Choose two containers to show a traceability matrix of their contents.");
- _builder.newLine();
- }
- }
- _builder.append("}");
- _builder.newLine();
- _builder.newLine();
- _builder.append("@enduml");
- _builder.newLine();
- _xblockexpression = _builder.toString();
- }
- return _xblockexpression;
- }
-
- public static String createNeighboursView(final List<Connection> connections, final EObject selectedObject) {
- String _xblockexpression = null;
- {
- Connections helper = new Connections(connections, selectedObject);
- StringConcatenation _builder = new StringConcatenation();
- _builder.append("@startuml");
- _builder.newLine();
- _builder.append("object \"");
- String _originLabel = helper.originLabel();
- _builder.append(_originLabel, "");
- _builder.append("\" as ");
- String _originId = helper.originId();
- _builder.append(_originId, "");
- _builder.append(" #pink");
- _builder.newLineIfNotEmpty();
- {
- Collection<String> _objectIdsWithoutOrigin = helper.objectIdsWithoutOrigin();
- for(final String id : _objectIdsWithoutOrigin) {
- _builder.append("object \"");
- String _label = helper.label(id);
- _builder.append(_label, "");
- _builder.append("\" as ");
- _builder.append(id, "");
- _builder.newLineIfNotEmpty();
- }
- }
- {
- List<String> _arrows = helper.arrows();
- for(final String a : _arrows) {
- _builder.append(a, "");
- _builder.newLineIfNotEmpty();
- }
- }
- _builder.append("@enduml");
- _builder.newLine();
- _xblockexpression = _builder.toString();
- }
- return _xblockexpression;
- }
+ public static String createMatrix(final EObject traceModel, final Collection<EObject> firstElements,
+ final Collection<EObject> secondElements) {
+ throw new Error("Unresolved compilation problems:" + "\nThe method or field EMFHelper is undefined"
+ + "\nThe method or field EMFHelper is undefined" + "\ngetIdentifier cannot be resolved"
+ + "\ngetIdentifier cannot be resolved");
+ }
+
+ public static String createNeighboursView(final List<Connection> connections, final EObject selectedObject) {
+ String _xblockexpression = null;
+ {
+ Connections helper = new Connections(connections, selectedObject);
+ StringConcatenation _builder = new StringConcatenation();
+ _builder.append("@startuml");
+ _builder.newLine();
+ _builder.append("object \"");
+ String _originLabel = helper.originLabel();
+ _builder.append(_originLabel, "");
+ _builder.append("\" as ");
+ String _originId = helper.originId();
+ _builder.append(_originId, "");
+ _builder.append(" #pink");
+ _builder.newLineIfNotEmpty();
+ {
+ Collection<String> _objectIdsWithoutOrigin = helper.objectIdsWithoutOrigin();
+ for (final String id : _objectIdsWithoutOrigin) {
+ _builder.append("object \"");
+ String _label = helper.label(id);
+ _builder.append(_label, "");
+ _builder.append("\" as ");
+ _builder.append(id, "");
+ _builder.newLineIfNotEmpty();
+ }
+ }
+ {
+ List<String> _arrows = helper.arrows();
+ for (final String a : _arrows) {
+ _builder.append(a, "");
+ _builder.newLineIfNotEmpty();
+ }
+ }
+ _builder.append("@enduml");
+ _builder.newLine();
+ _xblockexpression = _builder.toString();
+ }
+ return _xblockexpression;
+ }
}
diff --git a/org.eclipse.capra.ui/META-INF/MANIFEST.MF b/org.eclipse.capra.ui/META-INF/MANIFEST.MF
index 23086b0..e7065ac 100644
--- a/org.eclipse.capra.ui/META-INF/MANIFEST.MF
+++ b/org.eclipse.capra.ui/META-INF/MANIFEST.MF
@@ -22,8 +22,7 @@
org.eclipse.ui.ide;bundle-version="3.10.2",
org.eclipse.ui,
org.eclipse.core.resources,
- org.eclipse.capra.core,
- org.eclipse.capra.ui.office
+ org.eclipse.capra.core
Bundle-ActivationPolicy: lazy
Export-Package: org.eclipse.capra.ui.handlers,
org.eclipse.capra.ui.helpers,
diff --git a/org.eclipse.capra.ui/plugin.xml b/org.eclipse.capra.ui/plugin.xml
index 874525a..b7e46a1 100644
--- a/org.eclipse.capra.ui/plugin.xml
+++ b/org.eclipse.capra.ui/plugin.xml
@@ -12,6 +12,7 @@
-->
<plugin>
+ <extension-point id="org.eclipse.capra.ui.transfers" name="Transfers" schema="schema/org.eclipse.capra.ui.transfers.exsd"/>
<extension
point="org.eclipse.ui.commands">
<command
diff --git a/org.eclipse.capra.ui/schema/org.eclipse.capra.ui.transfers.exsd b/org.eclipse.capra.ui/schema/org.eclipse.capra.ui.transfers.exsd
new file mode 100644
index 0000000..546d8ac
--- /dev/null
+++ b/org.eclipse.capra.ui/schema/org.eclipse.capra.ui.transfers.exsd
@@ -0,0 +1,102 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!-- Schema file written by PDE -->
+<schema targetNamespace="org.eclipse.capra.ui" xmlns="http://www.w3.org/2001/XMLSchema">
+<annotation>
+ <appinfo>
+ <meta.schema plugin="org.eclipse.capra.ui" id="org.eclipse.capra.ui.transfers" name="Transfers"/>
+ </appinfo>
+ <documentation>
+ Defines the transfers needed to support drag&drop operations from and to the selection view.
+ </documentation>
+ </annotation>
+
+ <element name="extension">
+ <annotation>
+ <appinfo>
+ <meta.element />
+ </appinfo>
+ </annotation>
+ <complexType>
+ <choice minOccurs="1" maxOccurs="unbounded">
+ <element ref="transfer"/>
+ </choice>
+ <attribute name="point" type="string" use="required">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="id" type="string">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="name" type="string">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ <appinfo>
+ <meta.attribute translatable="true"/>
+ </appinfo>
+ </annotation>
+ </attribute>
+ </complexType>
+ </element>
+
+ <element name="transfer">
+ <complexType>
+ <attribute name="class" type="string">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ <appinfo>
+ <meta.attribute kind="java" basedOn="org.eclipse.swt.dnd.Transfer:"/>
+ </appinfo>
+ </annotation>
+ </attribute>
+ </complexType>
+ </element>
+
+ <annotation>
+ <appinfo>
+ <meta.section type="since"/>
+ </appinfo>
+ <documentation>
+ [Enter the first release in which this extension point appears.]
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appinfo>
+ <meta.section type="examples"/>
+ </appinfo>
+ <documentation>
+ [Enter extension point usage example here.]
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appinfo>
+ <meta.section type="apiinfo"/>
+ </appinfo>
+ <documentation>
+ [Enter API information here.]
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appinfo>
+ <meta.section type="implementation"/>
+ </appinfo>
+ <documentation>
+ [Enter information about supplied implementation of this extension point.]
+ </documentation>
+ </annotation>
+
+
+</schema>
diff --git a/org.eclipse.capra.ui/src/org/eclipse/capra/ui/handlers/TraceCreationHandler.java b/org.eclipse.capra.ui/src/org/eclipse/capra/ui/handlers/TraceCreationHandler.java
index 83bb544..10d27a1 100644
--- a/org.eclipse.capra.ui/src/org/eclipse/capra/ui/handlers/TraceCreationHandler.java
+++ b/org.eclipse.capra.ui/src/org/eclipse/capra/ui/handlers/TraceCreationHandler.java
@@ -20,8 +20,8 @@
import org.eclipse.capra.core.adapters.TracePersistenceAdapter;
import org.eclipse.capra.core.handlers.ArtifactHandler;
import org.eclipse.capra.core.handlers.PriorityHandler;
+import org.eclipse.capra.core.helpers.EMFHelper;
import org.eclipse.capra.core.helpers.ExtensionPointHelper;
-import org.eclipse.capra.ui.helpers.EMFHelper;
import org.eclipse.capra.ui.views.SelectionView;
import org.eclipse.core.commands.AbstractHandler;
import org.eclipse.core.commands.ExecutionEvent;
diff --git a/org.eclipse.capra.ui/src/org/eclipse/capra/ui/views/SelectionView.java b/org.eclipse.capra.ui/src/org/eclipse/capra/ui/views/SelectionView.java
index fe61708..0c1cce2 100644
--- a/org.eclipse.capra.ui/src/org/eclipse/capra/ui/views/SelectionView.java
+++ b/org.eclipse.capra.ui/src/org/eclipse/capra/ui/views/SelectionView.java
@@ -11,6 +11,7 @@
package org.eclipse.capra.ui.views;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.Collection;
import java.util.LinkedHashSet;
import java.util.List;
@@ -21,8 +22,6 @@
import org.eclipse.capra.core.handlers.ArtifactHandler;
import org.eclipse.capra.core.handlers.PriorityHandler;
import org.eclipse.capra.core.helpers.ExtensionPointHelper;
-import org.eclipse.capra.ui.helpers.EMFHelper;
-import org.eclipse.emf.ecore.EObject;
import org.eclipse.jface.action.IMenuListener;
import org.eclipse.jface.action.IMenuManager;
import org.eclipse.jface.action.MenuManager;
@@ -52,6 +51,21 @@
/** The ID of the view as specified by the extension. */
public static final String ID = "org.eclipse.capra.generic.views.SelectionView";
+ /**
+ * Identifier of the extension point that contains the transfer definitions.
+ */
+ private static final String TRANSFER_EXTENSION_POINT_ID = "org.eclipse.capra.ui.transfers";
+
+ /**
+ * Standard transfers that are always used in the SelectionView.
+ */
+ private static final Transfer[] DEFAULT_TRANSFERS = new Transfer[] {
+ org.eclipse.ui.part.ResourceTransfer.getInstance(), org.eclipse.ui.part.EditorInputTransfer.getInstance(),
+ org.eclipse.swt.dnd.FileTransfer.getInstance(), org.eclipse.swt.dnd.RTFTransfer.getInstance(),
+ org.eclipse.swt.dnd.TextTransfer.getInstance(), org.eclipse.swt.dnd.URLTransfer.getInstance(),
+ org.eclipse.jface.util.LocalSelectionTransfer.getTransfer(),
+ org.eclipse.emf.edit.ui.dnd.LocalTransfer.getInstance() };
+
/** The actual table containing selected elements */
public TableViewer viewer;
@@ -77,11 +91,13 @@
@Override
public String getText(Object element) {
- if (element instanceof EObject) {
- return EMFHelper.getIdentifier((EObject) element);
+ Collection<ArtifactHandler> artifactHandlers = ExtensionPointHelper.getArtifactHandlers();
+ List<ArtifactHandler> availableHandlers = artifactHandlers.stream()
+ .filter(handler -> handler.canHandleSelection(element)).collect(Collectors.toList());
+ if (availableHandlers.size() == 1) {
+ return availableHandlers.get(0).getDisplayName(element);
} else
- return element.toString();
-
+ return null;
};
@Override
@@ -128,6 +144,7 @@
}
+ @Override
public void createPartControl(Composite parent) {
viewer = new TableViewer(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL);
viewer.setContentProvider(new ViewContentProvider());
@@ -139,15 +156,15 @@
hookContextMenu();
int ops = DND.DROP_COPY | DND.DROP_MOVE;
- Transfer[] transfers = new Transfer[] { org.eclipse.ui.part.ResourceTransfer.getInstance(),
- org.eclipse.ui.part.EditorInputTransfer.getInstance(), org.eclipse.swt.dnd.FileTransfer.getInstance(),
- org.eclipse.swt.dnd.RTFTransfer.getInstance(), org.eclipse.swt.dnd.TextTransfer.getInstance(),
- org.eclipse.swt.dnd.URLTransfer.getInstance(),
- org.eclipse.jface.util.LocalSelectionTransfer.getTransfer(),
- org.eclipse.emf.edit.ui.dnd.LocalTransfer.getInstance(),
- org.eclipse.capra.ui.office.utils.OfficeTransferType.getInstance()};
- viewer.addDropSupport(ops, transfers, new SelectionDropAdapter(viewer));
+ List<Transfer> transfers = new ArrayList<Transfer>(Arrays.asList(DEFAULT_TRANSFERS));
+
+ // Get all additionally configured transfers from the extension point.
+ transfers.addAll(ExtensionPointHelper.getExtensions(TRANSFER_EXTENSION_POINT_ID, "class").stream()
+ .map(Transfer.class::cast).collect(Collectors.toList()));
+
+ viewer.addDropSupport(ops, transfers.toArray(DEFAULT_TRANSFERS), new SelectionDropAdapter(viewer));
+
}
private void hookContextMenu() {
@@ -169,7 +186,6 @@
@SuppressWarnings("unchecked")
public void dropToSelection(Object data) {
-
if (data instanceof TreeSelection) {
TreeSelection tree = (TreeSelection) data;
if (tree.toList().stream().allMatch(this::validateSelection))