Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'extraplugins')
-rw-r--r--extraplugins/cdo/org.eclipse.papyrus.cdo.core/META-INF/MANIFEST.MF22
-rw-r--r--extraplugins/cdo/org.eclipse.papyrus.cdo.core/build.properties1
-rw-r--r--extraplugins/cdo/org.eclipse.papyrus.cdo.core/model/repositories.ecore1
-rw-r--r--extraplugins/cdo/org.eclipse.papyrus.cdo.core/model/repositories.ecorediag4
-rw-r--r--extraplugins/cdo/org.eclipse.papyrus.cdo.core/model/repositories.genmodel1
-rw-r--r--extraplugins/cdo/org.eclipse.papyrus.cdo.core/src-gen/org/eclipse/papyrus/cdo/internal/core/repositories/RepositoriesPackage.java30
-rw-r--r--extraplugins/cdo/org.eclipse.papyrus.cdo.core/src-gen/org/eclipse/papyrus/cdo/internal/core/repositories/Repository.java27
-rw-r--r--extraplugins/cdo/org.eclipse.papyrus.cdo.core/src-gen/org/eclipse/papyrus/cdo/internal/core/repositories/impl/RepositoriesPackageImpl.java11
-rw-r--r--extraplugins/cdo/org.eclipse.papyrus.cdo.core/src-gen/org/eclipse/papyrus/cdo/internal/core/repositories/impl/RepositoryImpl.java54
-rw-r--r--extraplugins/cdo/org.eclipse.papyrus.cdo.core/src/org/eclipse/papyrus/cdo/internal/core/IInternalPapyrusRepositoryManager.java6
-rw-r--r--extraplugins/cdo/org.eclipse.papyrus.cdo.core/src/org/eclipse/papyrus/cdo/internal/core/PapyrusRepository.java37
-rw-r--r--extraplugins/cdo/org.eclipse.papyrus.cdo.core/src/org/eclipse/papyrus/cdo/internal/core/PapyrusRepositoryManager.java29
-rw-r--r--extraplugins/cdo/org.eclipse.papyrus.cdo.ui.hyperlink/META-INF/MANIFEST.MF9
-rw-r--r--extraplugins/cdo/org.eclipse.papyrus.cdo.ui.hyperlink/plugin.xml6
-rw-r--r--extraplugins/cdo/org.eclipse.papyrus.cdo.ui.hyperlink/src/org/eclipse/papyrus/cdo/internal/ui/hyperlink/CDOResourceHyperlink.java4
-rw-r--r--extraplugins/cdo/org.eclipse.papyrus.cdo.ui.hyperlink/src/org/eclipse/papyrus/cdo/internal/ui/hyperlink/CDOResourceURIDropStrategy.java116
-rw-r--r--extraplugins/cdo/org.eclipse.papyrus.cdo.ui.hyperlink/src/org/eclipse/papyrus/cdo/internal/ui/hyperlink/Messages.java3
-rw-r--r--extraplugins/cdo/org.eclipse.papyrus.cdo.ui.hyperlink/src/org/eclipse/papyrus/cdo/internal/ui/hyperlink/messages.properties2
-rw-r--r--extraplugins/cdo/org.eclipse.papyrus.cdo.ui/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--extraplugins/cdo/org.eclipse.papyrus.cdo.ui/META-INF/MANIFEST.MF2
-rw-r--r--extraplugins/cdo/org.eclipse.papyrus.cdo.ui/build.properties6
-rw-r--r--extraplugins/cdo/org.eclipse.papyrus.cdo.ui/model/DND.ecore10
-rw-r--r--extraplugins/cdo/org.eclipse.papyrus.cdo.ui/model/DND.ecorediag32
-rw-r--r--extraplugins/cdo/org.eclipse.papyrus.cdo.ui/plugin.xml7
-rw-r--r--extraplugins/cdo/org.eclipse.papyrus.cdo.ui/src/org/eclipse/papyrus/cdo/internal/ui/dnd/CDOResourceURITransferData.java30
-rw-r--r--extraplugins/cdo/org.eclipse.papyrus.cdo.ui/src/org/eclipse/papyrus/cdo/internal/ui/editors/DawnGraphicalEditorSupport.java137
26 files changed, 535 insertions, 54 deletions
diff --git a/extraplugins/cdo/org.eclipse.papyrus.cdo.core/META-INF/MANIFEST.MF b/extraplugins/cdo/org.eclipse.papyrus.cdo.core/META-INF/MANIFEST.MF
index 0c57fd13be2..955e6ebc178 100644
--- a/extraplugins/cdo/org.eclipse.papyrus.cdo.core/META-INF/MANIFEST.MF
+++ b/extraplugins/cdo/org.eclipse.papyrus.cdo.core/META-INF/MANIFEST.MF
@@ -4,17 +4,7 @@ Export-Package: org.eclipse.papyrus.cdo.core,
org.eclipse.papyrus.cdo.core.importer,
org.eclipse.papyrus.cdo.core.resource,
org.eclipse.papyrus.cdo.core.util,
- org.eclipse.papyrus.cdo.internal.core;
- x-friends:="org.eclipse.papyrus.cdo.core.tests,
- org.eclipse.papyrus.cdo.ui,
- org.eclipse.papyrus.cdo.ui.tests,
- org.eclipse.papyrus.cdo.uml.diagram.ui,
- org.eclipse.papyrus.cdo.uml.ui,
- org.eclipse.papyrus.cdo.ui.customization.properties,
- org.eclipse.papyrus.cdo.uml.ui.tests,
- org.eclipse.papyrus.cdo.uml.search.ui,
- org.eclipse.papyrus.cdo.uml.search.ui.tests,
- org.eclipse.papyrus.cdo.ui.hyperlink",
+ org.eclipse.papyrus.cdo.internal.core;x-friends:="org.eclipse.papyrus.cdo.core.tests, org.eclipse.papyrus.cdo.ui, org.eclipse.papyrus.cdo.ui.tests, org.eclipse.papyrus.cdo.uml.diagram.ui, org.eclipse.papyrus.cdo.uml.ui, org.eclipse.papyrus.cdo.ui.customization.properties, org.eclipse.papyrus.cdo.uml.ui.tests, org.eclipse.papyrus.cdo.uml.search.ui, org.eclipse.papyrus.cdo.uml.search.ui.tests, org.eclipse.papyrus.cdo.ui.hyperlink",
org.eclipse.papyrus.cdo.internal.core.controlmode;x-friends:="org.eclipse.papyrus.cdo.ui,org.eclipse.papyrus.cdo.core.tests",
org.eclipse.papyrus.cdo.internal.core.exporter;x-friends:="org.eclipse.papyrus.cdo.core.tests,org.eclipse.papyrus.cdo.ui",
org.eclipse.papyrus.cdo.internal.core.expressions;x-friends:="org.eclipse.papyrus.cdo.core.tests,org.eclipse.papyrus.cdo.ui",
@@ -32,16 +22,16 @@ Bundle-RequiredExecutionEnvironment: JavaSE-1.6
Require-Bundle: org.eclipse.core.runtime,
org.eclipse.emf.ecore;visibility:=reexport,
org.eclipse.emf.ecore.xmi;visibility:=reexport,
- org.eclipse.emf.cdo;bundle-version="[4.2.0,5.0.0)";visibility:=reexport,
- org.eclipse.papyrus.infra.core;bundle-version="0.10.1";visibility:=reexport,
+ org.eclipse.emf.cdo;visibility:=reexport;bundle-version="[4.2.0,5.0.0)",
+ org.eclipse.papyrus.infra.core;visibility:=reexport;bundle-version="0.10.1",
org.eclipse.papyrus.infra.core.log;bundle-version="0.10.1",
- org.eclipse.papyrus.infra.services.resourceloading;bundle-version="0.10.1";visibility:=reexport,
- org.eclipse.papyrus.infra.emf.readonly;bundle-version="0.10.1";visibility:=reexport,
+ org.eclipse.papyrus.infra.services.resourceloading;visibility:=reexport;bundle-version="0.10.1",
+ org.eclipse.papyrus.infra.emf.readonly;visibility:=reexport;bundle-version="0.10.1",
org.eclipse.emf.workspace;bundle-version="[1.5.1,2.0.0)",
org.eclipse.papyrus.infra.gmfdiag.commands;bundle-version="0.10.1",
org.eclipse.emf.cdo.dawn;bundle-version="[2.0.0,3.0.0)",
org.eclipse.emf.cdo.dawn.gmf;bundle-version="[2.1.0,3.0.0)",
- org.eclipse.emf.transaction;bundle-version="[1.4.0,2.0.0)";visibility:=reexport,
+ org.eclipse.emf.transaction;visibility:=reexport;bundle-version="[1.4.0,2.0.0)",
org.eclipse.gmf.runtime.notation;bundle-version="[1.5.0,2.0.0)",
org.eclipse.equinox.security;bundle-version="[1.1.100,2.0.0)",
org.eclipse.core.expressions;bundle-version="[3.4.0,4.0.0)",
diff --git a/extraplugins/cdo/org.eclipse.papyrus.cdo.core/build.properties b/extraplugins/cdo/org.eclipse.papyrus.cdo.core/build.properties
index 10b29360b0b..5eb998f3bd7 100644
--- a/extraplugins/cdo/org.eclipse.papyrus.cdo.core/build.properties
+++ b/extraplugins/cdo/org.eclipse.papyrus.cdo.core/build.properties
@@ -15,6 +15,7 @@ bin.includes = .,\
plugin.xml,\
plugin.properties,\
about.html
+bin.excludes = model/*.ecorediag
jars.compile.order = .
source.. = src/,\
src-gen/
diff --git a/extraplugins/cdo/org.eclipse.papyrus.cdo.core/model/repositories.ecore b/extraplugins/cdo/org.eclipse.papyrus.cdo.core/model/repositories.ecore
index 05053b86e0e..b400c2ec957 100644
--- a/extraplugins/cdo/org.eclipse.papyrus.cdo.core/model/repositories.ecore
+++ b/extraplugins/cdo/org.eclipse.papyrus.cdo.core/model/repositories.ecore
@@ -14,5 +14,6 @@
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="description" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="uUID" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eClassifiers>
</ecore:EPackage>
diff --git a/extraplugins/cdo/org.eclipse.papyrus.cdo.core/model/repositories.ecorediag b/extraplugins/cdo/org.eclipse.papyrus.cdo.core/model/repositories.ecorediag
index 7e36e89e7d3..3776998e687 100644
--- a/extraplugins/cdo/org.eclipse.papyrus.cdo.core/model/repositories.ecorediag
+++ b/extraplugins/cdo/org.eclipse.papyrus.cdo.core/model/repositories.ecorediag
@@ -31,6 +31,10 @@
<element xmi:type="ecore:EAttribute" href="repositories.ecore#//Repository/uRL"/>
<layoutConstraint xmi:type="notation:Location" xmi:id="_dScfAV5XEeKVz4CWs4rkiA"/>
</children>
+ <children xmi:type="notation:Node" xmi:id="_qfYY4CVhEeOe3PUVH5W0Qg" type="2001">
+ <element xmi:type="ecore:EAttribute" href="repositories.ecore#//Repository/uUID"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_qfYY4SVhEeOe3PUVH5W0Qg"/>
+ </children>
<styles xmi:type="notation:DrawerStyle" xmi:id="_P7MKBV5XEeKVz4CWs4rkiA"/>
<styles xmi:type="notation:SortingStyle" xmi:id="_P7MKBl5XEeKVz4CWs4rkiA"/>
<styles xmi:type="notation:FilteringStyle" xmi:id="_P7MKB15XEeKVz4CWs4rkiA"/>
diff --git a/extraplugins/cdo/org.eclipse.papyrus.cdo.core/model/repositories.genmodel b/extraplugins/cdo/org.eclipse.papyrus.cdo.core/model/repositories.genmodel
index cecd378a307..ea5027fefd1 100644
--- a/extraplugins/cdo/org.eclipse.papyrus.cdo.core/model/repositories.genmodel
+++ b/extraplugins/cdo/org.eclipse.papyrus.cdo.core/model/repositories.genmodel
@@ -15,6 +15,7 @@
<genFeatures createChild="false" ecoreFeature="ecore:EAttribute repositories.ecore#//Repository/name"/>
<genFeatures createChild="false" ecoreFeature="ecore:EAttribute repositories.ecore#//Repository/uRL"/>
<genFeatures createChild="false" ecoreFeature="ecore:EAttribute repositories.ecore#//Repository/description"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute repositories.ecore#//Repository/uUID"/>
</genClasses>
</genPackages>
</genmodel:GenModel>
diff --git a/extraplugins/cdo/org.eclipse.papyrus.cdo.core/src-gen/org/eclipse/papyrus/cdo/internal/core/repositories/RepositoriesPackage.java b/extraplugins/cdo/org.eclipse.papyrus.cdo.core/src-gen/org/eclipse/papyrus/cdo/internal/core/repositories/RepositoriesPackage.java
index 1bd68949237..f4a4423e9ec 100644
--- a/extraplugins/cdo/org.eclipse.papyrus.cdo.core/src-gen/org/eclipse/papyrus/cdo/internal/core/repositories/RepositoriesPackage.java
+++ b/extraplugins/cdo/org.eclipse.papyrus.cdo.core/src-gen/org/eclipse/papyrus/cdo/internal/core/repositories/RepositoriesPackage.java
@@ -141,13 +141,22 @@ public interface RepositoriesPackage extends EPackage {
int REPOSITORY__DESCRIPTION = 2;
/**
+ * The feature id for the '<em><b>UUID</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int REPOSITORY__UUID = 3;
+
+ /**
* The number of structural features of the '<em>Repository</em>' class.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
* @ordered
*/
- int REPOSITORY_FEATURE_COUNT = 3;
+ int REPOSITORY_FEATURE_COUNT = 4;
/**
* The number of operations of the '<em>Repository</em>' class.
@@ -224,6 +233,17 @@ public interface RepositoriesPackage extends EPackage {
EAttribute getRepository_Description();
/**
+ * Returns the meta object for the attribute '{@link org.eclipse.papyrus.cdo.internal.core.repositories.Repository#getUUID <em>UUID</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>UUID</em>'.
+ * @see org.eclipse.papyrus.cdo.internal.core.repositories.Repository#getUUID()
+ * @see #getRepository()
+ * @generated
+ */
+ EAttribute getRepository_UUID();
+
+ /**
* Returns the factory that creates the instances of the model.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
@@ -298,6 +318,14 @@ public interface RepositoriesPackage extends EPackage {
*/
EAttribute REPOSITORY__DESCRIPTION = eINSTANCE.getRepository_Description();
+ /**
+ * The meta object literal for the '<em><b>UUID</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute REPOSITORY__UUID = eINSTANCE.getRepository_UUID();
+
}
} //RepositoriesPackage
diff --git a/extraplugins/cdo/org.eclipse.papyrus.cdo.core/src-gen/org/eclipse/papyrus/cdo/internal/core/repositories/Repository.java b/extraplugins/cdo/org.eclipse.papyrus.cdo.core/src-gen/org/eclipse/papyrus/cdo/internal/core/repositories/Repository.java
index f7fc49f775b..06754111071 100644
--- a/extraplugins/cdo/org.eclipse.papyrus.cdo.core/src-gen/org/eclipse/papyrus/cdo/internal/core/repositories/Repository.java
+++ b/extraplugins/cdo/org.eclipse.papyrus.cdo.core/src-gen/org/eclipse/papyrus/cdo/internal/core/repositories/Repository.java
@@ -25,6 +25,7 @@ import org.eclipse.emf.ecore.EObject;
* <li>{@link org.eclipse.papyrus.cdo.internal.core.repositories.Repository#getName <em>Name</em>}</li>
* <li>{@link org.eclipse.papyrus.cdo.internal.core.repositories.Repository#getURL <em>URL</em>}</li>
* <li>{@link org.eclipse.papyrus.cdo.internal.core.repositories.Repository#getDescription <em>Description</em>}</li>
+ * <li>{@link org.eclipse.papyrus.cdo.internal.core.repositories.Repository#getUUID <em>UUID</em>}</li>
* </ul>
* </p>
*
@@ -112,4 +113,30 @@ public interface Repository extends EObject {
*/
void setDescription(String value);
+ /**
+ * Returns the value of the '<em><b>UUID</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>UUID</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>UUID</em>' attribute.
+ * @see #setUUID(String)
+ * @see org.eclipse.papyrus.cdo.internal.core.repositories.RepositoriesPackage#getRepository_UUID()
+ * @model
+ * @generated
+ */
+ String getUUID();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.cdo.internal.core.repositories.Repository#getUUID <em>UUID</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>UUID</em>' attribute.
+ * @see #getUUID()
+ * @generated
+ */
+ void setUUID(String value);
+
} // Repository
diff --git a/extraplugins/cdo/org.eclipse.papyrus.cdo.core/src-gen/org/eclipse/papyrus/cdo/internal/core/repositories/impl/RepositoriesPackageImpl.java b/extraplugins/cdo/org.eclipse.papyrus.cdo.core/src-gen/org/eclipse/papyrus/cdo/internal/core/repositories/impl/RepositoriesPackageImpl.java
index 9d55633bddb..b863ded1c06 100644
--- a/extraplugins/cdo/org.eclipse.papyrus.cdo.core/src-gen/org/eclipse/papyrus/cdo/internal/core/repositories/impl/RepositoriesPackageImpl.java
+++ b/extraplugins/cdo/org.eclipse.papyrus.cdo.core/src-gen/org/eclipse/papyrus/cdo/internal/core/repositories/impl/RepositoriesPackageImpl.java
@@ -165,6 +165,15 @@ public class RepositoriesPackageImpl extends EPackageImpl implements Repositorie
* <!-- end-user-doc -->
* @generated
*/
+ public EAttribute getRepository_UUID() {
+ return (EAttribute)repositoryEClass.getEStructuralFeatures().get(3);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
public RepositoriesFactory getRepositoriesFactory() {
return (RepositoriesFactory)getEFactoryInstance();
}
@@ -195,6 +204,7 @@ public class RepositoriesPackageImpl extends EPackageImpl implements Repositorie
createEAttribute(repositoryEClass, REPOSITORY__NAME);
createEAttribute(repositoryEClass, REPOSITORY__URL);
createEAttribute(repositoryEClass, REPOSITORY__DESCRIPTION);
+ createEAttribute(repositoryEClass, REPOSITORY__UUID);
}
/**
@@ -234,6 +244,7 @@ public class RepositoriesPackageImpl extends EPackageImpl implements Repositorie
initEAttribute(getRepository_Name(), ecorePackage.getEString(), "name", null, 1, 1, Repository.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
initEAttribute(getRepository_URL(), ecorePackage.getEString(), "uRL", null, 1, 1, Repository.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
initEAttribute(getRepository_Description(), ecorePackage.getEString(), "description", null, 0, 1, Repository.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEAttribute(getRepository_UUID(), ecorePackage.getEString(), "uUID", null, 0, 1, Repository.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
// Create resource
createResource(eNS_URI);
diff --git a/extraplugins/cdo/org.eclipse.papyrus.cdo.core/src-gen/org/eclipse/papyrus/cdo/internal/core/repositories/impl/RepositoryImpl.java b/extraplugins/cdo/org.eclipse.papyrus.cdo.core/src-gen/org/eclipse/papyrus/cdo/internal/core/repositories/impl/RepositoryImpl.java
index 404b6c558e0..2c30f85f077 100644
--- a/extraplugins/cdo/org.eclipse.papyrus.cdo.core/src-gen/org/eclipse/papyrus/cdo/internal/core/repositories/impl/RepositoryImpl.java
+++ b/extraplugins/cdo/org.eclipse.papyrus.cdo.core/src-gen/org/eclipse/papyrus/cdo/internal/core/repositories/impl/RepositoryImpl.java
@@ -32,6 +32,7 @@ import org.eclipse.papyrus.cdo.internal.core.repositories.Repository;
* <li>{@link org.eclipse.papyrus.cdo.internal.core.repositories.impl.RepositoryImpl#getName <em>Name</em>}</li>
* <li>{@link org.eclipse.papyrus.cdo.internal.core.repositories.impl.RepositoryImpl#getURL <em>URL</em>}</li>
* <li>{@link org.eclipse.papyrus.cdo.internal.core.repositories.impl.RepositoryImpl#getDescription <em>Description</em>}</li>
+ * <li>{@link org.eclipse.papyrus.cdo.internal.core.repositories.impl.RepositoryImpl#getUUID <em>UUID</em>}</li>
* </ul>
* </p>
*
@@ -99,6 +100,26 @@ public class RepositoryImpl extends MinimalEObjectImpl.Container implements Repo
protected String description = DESCRIPTION_EDEFAULT;
/**
+ * The default value of the '{@link #getUUID() <em>UUID</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getUUID()
+ * @generated
+ * @ordered
+ */
+ protected static final String UUID_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getUUID() <em>UUID</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getUUID()
+ * @generated
+ * @ordered
+ */
+ protected String uUID = UUID_EDEFAULT;
+
+ /**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
@@ -185,6 +206,27 @@ public class RepositoryImpl extends MinimalEObjectImpl.Container implements Repo
* <!-- end-user-doc -->
* @generated
*/
+ public String getUUID() {
+ return uUID;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setUUID(String newUUID) {
+ String oldUUID = uUID;
+ uUID = newUUID;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, RepositoriesPackage.REPOSITORY__UUID, oldUUID, uUID));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
@Override
public Object eGet(int featureID, boolean resolve, boolean coreType) {
switch (featureID) {
@@ -194,6 +236,8 @@ public class RepositoryImpl extends MinimalEObjectImpl.Container implements Repo
return getURL();
case RepositoriesPackage.REPOSITORY__DESCRIPTION:
return getDescription();
+ case RepositoriesPackage.REPOSITORY__UUID:
+ return getUUID();
}
return super.eGet(featureID, resolve, coreType);
}
@@ -215,6 +259,9 @@ public class RepositoryImpl extends MinimalEObjectImpl.Container implements Repo
case RepositoriesPackage.REPOSITORY__DESCRIPTION:
setDescription((String)newValue);
return;
+ case RepositoriesPackage.REPOSITORY__UUID:
+ setUUID((String)newValue);
+ return;
}
super.eSet(featureID, newValue);
}
@@ -236,6 +283,9 @@ public class RepositoryImpl extends MinimalEObjectImpl.Container implements Repo
case RepositoriesPackage.REPOSITORY__DESCRIPTION:
setDescription(DESCRIPTION_EDEFAULT);
return;
+ case RepositoriesPackage.REPOSITORY__UUID:
+ setUUID(UUID_EDEFAULT);
+ return;
}
super.eUnset(featureID);
}
@@ -254,6 +304,8 @@ public class RepositoryImpl extends MinimalEObjectImpl.Container implements Repo
return URL_EDEFAULT == null ? uRL != null : !URL_EDEFAULT.equals(uRL);
case RepositoriesPackage.REPOSITORY__DESCRIPTION:
return DESCRIPTION_EDEFAULT == null ? description != null : !DESCRIPTION_EDEFAULT.equals(description);
+ case RepositoriesPackage.REPOSITORY__UUID:
+ return UUID_EDEFAULT == null ? uUID != null : !UUID_EDEFAULT.equals(uUID);
}
return super.eIsSet(featureID);
}
@@ -274,6 +326,8 @@ public class RepositoryImpl extends MinimalEObjectImpl.Container implements Repo
result.append(uRL);
result.append(", description: "); //$NON-NLS-1$
result.append(description);
+ result.append(", uUID: "); //$NON-NLS-1$
+ result.append(uUID);
result.append(')');
return result.toString();
}
diff --git a/extraplugins/cdo/org.eclipse.papyrus.cdo.core/src/org/eclipse/papyrus/cdo/internal/core/IInternalPapyrusRepositoryManager.java b/extraplugins/cdo/org.eclipse.papyrus.cdo.core/src/org/eclipse/papyrus/cdo/internal/core/IInternalPapyrusRepositoryManager.java
index d56191076f4..4f20f4c5394 100644
--- a/extraplugins/cdo/org.eclipse.papyrus.cdo.core/src/org/eclipse/papyrus/cdo/internal/core/IInternalPapyrusRepositoryManager.java
+++ b/extraplugins/cdo/org.eclipse.papyrus.cdo.core/src/org/eclipse/papyrus/cdo/internal/core/IInternalPapyrusRepositoryManager.java
@@ -38,12 +38,18 @@ public interface IInternalPapyrusRepositoryManager extends IPapyrusRepositoryMan
// Specializations of inherited API
//
+ @Override
Collection<? extends IInternalPapyrusRepository> getRepositories();
+ @Override
IInternalPapyrusRepository createRepository(String url);
+ @Override
IInternalPapyrusRepository getRepository(String url);
+ @Override
IInternalPapyrusRepository getRepositoryForURI(URI uri);
+ IInternalPapyrusRepository getRepositoryForURI(URI uri, boolean connectedOnly);
+
}
diff --git a/extraplugins/cdo/org.eclipse.papyrus.cdo.core/src/org/eclipse/papyrus/cdo/internal/core/PapyrusRepository.java b/extraplugins/cdo/org.eclipse.papyrus.cdo.core/src/org/eclipse/papyrus/cdo/internal/core/PapyrusRepository.java
index 03ecc930b0b..c44e878c3a5 100644
--- a/extraplugins/cdo/org.eclipse.papyrus.cdo.core/src/org/eclipse/papyrus/cdo/internal/core/PapyrusRepository.java
+++ b/extraplugins/cdo/org.eclipse.papyrus.cdo.core/src/org/eclipse/papyrus/cdo/internal/core/PapyrusRepository.java
@@ -62,6 +62,7 @@ import org.eclipse.papyrus.cdo.core.resource.CDOAwareModelSet;
import org.eclipse.papyrus.cdo.core.resource.PapyrusCDOResourceFactory;
import org.eclipse.papyrus.cdo.internal.core.repositories.Repository;
+import com.google.common.base.Objects;
import com.google.common.base.Predicate;
import com.google.common.base.Strings;
import com.google.common.collect.BiMap;
@@ -109,10 +110,12 @@ public class PapyrusRepository extends Container<CDOResourceNode> implements IIn
activate();
}
+ @Override
public String getName() {
return model.getName();
}
+ @Override
public void setName(String name) {
if(Strings.isNullOrEmpty(name)) {
throw new IllegalArgumentException("null or empty name"); //$NON-NLS-1$
@@ -121,14 +124,17 @@ public class PapyrusRepository extends Container<CDOResourceNode> implements IIn
model.setName(name);
}
+ @Override
public String getURL() {
return model.getURL();
}
+ @Override
public String getUsername() {
return getSecureStorageValue("username"); //$NON-NLS-1$
}
+ @Override
public void setUsername(String username) {
if(username != null) {
username = username.trim();
@@ -140,6 +146,7 @@ public class PapyrusRepository extends Container<CDOResourceNode> implements IIn
setSecureStorageValue("username", username, false); //$NON-NLS-1$
}
+ @Override
public String getPassword() {
return getSecureStorageValue("password"); //$NON-NLS-1$
}
@@ -168,6 +175,7 @@ public class PapyrusRepository extends Container<CDOResourceNode> implements IIn
EncodingUtils.encodeSlashes(getURL()));
}
+ @Override
public void setPassword(String password) {
setSecureStorageValue("password", password, true); //$NON-NLS-1$
}
@@ -185,6 +193,7 @@ public class PapyrusRepository extends Container<CDOResourceNode> implements IIn
}
}
+ @Override
public void clearCredentials() {
ISecurePreferences store = SecurePreferencesFactory.getDefault();
String path = getSecureStorePath();
@@ -193,10 +202,12 @@ public class PapyrusRepository extends Container<CDOResourceNode> implements IIn
}
}
+ @Override
public boolean isConnected() {
return (session != null) && !session.isClosed();
}
+ @Override
public void connect() {
if(!isConnected()) {
ICredentialsProvider2 creds = getCredentialsProvider();
@@ -234,6 +245,13 @@ public class PapyrusRepository extends Container<CDOResourceNode> implements IIn
createReadOnlyView(new ResourceSetImpl());
fireRepositoryEvent(PapyrusRepositoryEvent.CONNECTED);
+
+ // update the last known UUID in the model
+ String uuid = session.getRepositoryInfo().getUUID();
+ if(!Objects.equal(uuid, model.getUUID())) {
+ model.setUUID(uuid);
+ PapyrusRepositoryManager.INSTANCE.saveRepositories();
+ }
}
} finally {
if(creds != null) {
@@ -258,10 +276,12 @@ public class PapyrusRepository extends Container<CDOResourceNode> implements IIn
return result;
}
+ @Override
public void disconnect() throws CommitException {
if(isConnected()) {
ImmutableList<ResourceSet> dirty = ImmutableList.copyOf(Iterables.filter(transactions.keySet(), new Predicate<ResourceSet>() {
+ @Override
public boolean apply(ResourceSet input) {
return transactions.get(input).isDirty();
}
@@ -301,10 +321,12 @@ public class PapyrusRepository extends Container<CDOResourceNode> implements IIn
}
}
+ @Override
public Collection<ResourceSet> getReadOnlyViews() {
return Collections.unmodifiableCollection(readOnlyViews.keySet());
}
+ @Override
public ResourceSet createReadOnlyView(ResourceSet resourceSet) {
checkConnected();
@@ -328,10 +350,12 @@ public class PapyrusRepository extends Container<CDOResourceNode> implements IIn
return result;
}
+ @Override
public Collection<ResourceSet> getTransactions() {
return Collections.unmodifiableCollection(transactions.keySet());
}
+ @Override
public ResourceSet createTransaction(ResourceSet resourceSet) {
checkConnected();
@@ -343,14 +367,17 @@ public class PapyrusRepository extends Container<CDOResourceNode> implements IIn
return result;
}
+ @Override
public CDOSession getCDOSession() {
return session;
}
+ @Override
public CDOView getMasterView() {
return masterView;
}
+ @Override
public CDOView getCDOView(ResourceSet resourceSet) {
CDOView result = readOnlyViews.get(resourceSet);
@@ -374,6 +401,7 @@ public class PapyrusRepository extends Container<CDOResourceNode> implements IIn
return (CDOTransaction)view;
}
+ @Override
public void commit(ResourceSet transaction) throws CommitException {
CDOView cdoView = getCDOView(transaction);
@@ -384,11 +412,13 @@ public class PapyrusRepository extends Container<CDOResourceNode> implements IIn
}
}
+ @Override
public void rollback(ResourceSet transaction) {
CDOView cdoView = getCDOView(transaction);
checkTransaction(cdoView).rollback();
}
+ @Override
public void close(ResourceSet view) {
CDOView cdoView = getCDOView(view);
@@ -487,6 +517,7 @@ public class PapyrusRepository extends Container<CDOResourceNode> implements IIn
if(masterViewListener == null) {
masterViewListener = new IListener() {
+ @Override
public void notifyEvent(IEvent event) {
if(event instanceof CDOViewInvalidationEvent) {
CDOViewInvalidationEvent inval = (CDOViewInvalidationEvent)event;
@@ -507,18 +538,22 @@ public class PapyrusRepository extends Container<CDOResourceNode> implements IIn
view.removeListener(getMasterViewListener());
}
+ @Override
public void addResourceSetDisposalApprover(IResourceSetDisposalApprover approver) {
approvers.addApprover(approver);
}
+ @Override
public void removeResourceSetDisposalApprover(IResourceSetDisposalApprover approver) {
approvers.removeApprover(approver);
}
+ @Override
public void addPapyrusRepositoryListener(IPapyrusRepositoryListener listener) {
listeners.addIfAbsent(listener);
}
+ @Override
public void removePapyrusRepositoryListener(IPapyrusRepositoryListener listener) {
listeners.remove(listener);
}
@@ -545,6 +580,7 @@ public class PapyrusRepository extends Container<CDOResourceNode> implements IIn
return !isActive() || !isConnected() || (masterView == null) || masterView.isEmpty();
}
+ @Override
public CDOResourceNode[] getElements() {
CDOResourceNode[] result = NO_RESOURCE_NODES;
@@ -625,6 +661,7 @@ public class PapyrusRepository extends Container<CDOResourceNode> implements IIn
// IAdaptable protocol
//
+ @Override
public Object getAdapter(@SuppressWarnings("rawtypes") Class adapter) {
Object result = null;
diff --git a/extraplugins/cdo/org.eclipse.papyrus.cdo.core/src/org/eclipse/papyrus/cdo/internal/core/PapyrusRepositoryManager.java b/extraplugins/cdo/org.eclipse.papyrus.cdo.core/src/org/eclipse/papyrus/cdo/internal/core/PapyrusRepositoryManager.java
index 359790fcf02..d3fc0db52e0 100644
--- a/extraplugins/cdo/org.eclipse.papyrus.cdo.core/src/org/eclipse/papyrus/cdo/internal/core/PapyrusRepositoryManager.java
+++ b/extraplugins/cdo/org.eclipse.papyrus.cdo.core/src/org/eclipse/papyrus/cdo/internal/core/PapyrusRepositoryManager.java
@@ -85,14 +85,17 @@ public class PapyrusRepositoryManager extends Container<IPapyrusRepository> impl
return result;
}
+ @Override
public IManagedContainer getSessionsContainer() {
return container;
}
+ @Override
public Collection<? extends IInternalPapyrusRepository> getRepositories() {
return Collections.unmodifiableCollection(repositories.values());
}
+ @Override
public IInternalPapyrusRepository createRepository(String url) {
if(getRepository(url) != null) {
throw new IllegalArgumentException("repository already exists"); //$NON-NLS-1$
@@ -110,6 +113,7 @@ public class PapyrusRepositoryManager extends Container<IPapyrusRepository> impl
return result;
}
+ @Override
public void setURL(IPapyrusRepository repository, String url) {
if(!Objects.equal(repository.getURL(), url)) {
if(getRepository(url) != null) {
@@ -127,6 +131,7 @@ public class PapyrusRepositoryManager extends Container<IPapyrusRepository> impl
}
}
+ @Override
public void removeRepository(IPapyrusRepository repository) {
if(repository.isConnected()) {
throw new IllegalArgumentException("repository is still connected"); //$NON-NLS-1$
@@ -138,11 +143,18 @@ public class PapyrusRepositoryManager extends Container<IPapyrusRepository> impl
fireElementRemovedEvent(repository);
}
+ @Override
public IInternalPapyrusRepository getRepository(String url) {
return repositories.get(url);
}
+ @Override
public IInternalPapyrusRepository getRepositoryForURI(URI uri) {
+ return getRepositoryForURI(uri, true);
+ }
+
+ @Override
+ public IInternalPapyrusRepository getRepositoryForURI(URI uri, boolean connectedOnly) {
IInternalPapyrusRepository result = null;
if(CDOUtils.isCDOURI(uri)) {
@@ -151,16 +163,27 @@ public class PapyrusRepositoryManager extends Container<IPapyrusRepository> impl
for(IInternalPapyrusRepository next : repositories.values()) {
CDOSession session = next.getCDOSession();
if((session != null) && Objects.equal(uuid, session.getRepositoryInfo().getUUID())) {
-
result = next;
break;
}
}
+
+ if((result == null) && !connectedOnly) {
+ // guess based on the last known UUIDs
+ for(IInternalPapyrusRepository next : repositories.values()) {
+ PapyrusRepository repo = CDOUtils.tryCast(next, PapyrusRepository.class);
+ if((repo != null) && Objects.equal(uuid, repo.getModel().getUUID())) {
+ result = next;
+ break;
+ }
+ }
+ }
}
return result;
}
+ @Override
public void saveRepositories() {
if(storage != null) {
try {
@@ -248,15 +271,18 @@ public class PapyrusRepositoryManager extends Container<IPapyrusRepository> impl
return result;
}
+ @Override
public ICredentialsProviderFactory getCredentialsProviderFactory() {
return credentialsProviderFactory;
}
+ @Override
public void setCredentialsProviderFactory(ICredentialsProviderFactory credentialsProviderFactory) {
this.credentialsProviderFactory = credentialsProviderFactory;
}
+ @Override
public IInternalPapyrusRepository getRepository(CDOView view) {
IInternalPapyrusRepository result = null;
@@ -284,6 +310,7 @@ public class PapyrusRepositoryManager extends Container<IPapyrusRepository> impl
return !isActive() || repositories.isEmpty();
}
+ @Override
public IPapyrusRepository[] getElements() {
return Iterables.toArray(repositories.values(), IPapyrusRepository.class);
}
diff --git a/extraplugins/cdo/org.eclipse.papyrus.cdo.ui.hyperlink/META-INF/MANIFEST.MF b/extraplugins/cdo/org.eclipse.papyrus.cdo.ui.hyperlink/META-INF/MANIFEST.MF
index 5f67367a173..4b729c1bdb8 100644
--- a/extraplugins/cdo/org.eclipse.papyrus.cdo.ui.hyperlink/META-INF/MANIFEST.MF
+++ b/extraplugins/cdo/org.eclipse.papyrus.cdo.ui.hyperlink/META-INF/MANIFEST.MF
@@ -13,10 +13,17 @@ Require-Bundle: org.eclipse.ui;bundle-version="3.105.0",
org.eclipse.papyrus.infra.emf;bundle-version="0.10.1",
org.eclipse.papyrus.cdo.ui;bundle-version="0.10.1",
org.eclipse.papyrus.infra.services.labelprovider;bundle-version="0.10.1",
- org.eclipse.papyrus.infra.widgets;bundle-version="0.10.1"
+ org.eclipse.papyrus.infra.widgets;bundle-version="0.10.1",
+ org.eclipse.papyrus.infra.gmfdiag.dnd;bundle-version="0.10.1",
+ org.eclipse.papyrus.infra.gmfdiag.commands;bundle-version="0.10.1",
+ org.eclipse.gmf.runtime.common.core;bundle-version="[1.7.0,2.0.0)",
+ org.eclipse.gmf.runtime.notation;bundle-version="[1.7.0,2.0.0)",
+ org.eclipse.gmf.runtime.diagram.ui;bundle-version="[1.7.0,2.0.0)",
+ org.eclipse.papyrus.infra.gmfdiag.common
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
Bundle-ActivationPolicy: lazy
Bundle-Localization: plugin
Import-Package: com.google.common.base;version="10.0.0",
com.google.common.collect;version="10.0.0"
+Export-Package: org.eclipse.papyrus.cdo.internal.ui.hyperlink;x-internal:=true
diff --git a/extraplugins/cdo/org.eclipse.papyrus.cdo.ui.hyperlink/plugin.xml b/extraplugins/cdo/org.eclipse.papyrus.cdo.ui.hyperlink/plugin.xml
index 506d0c21ce0..096e00b8d9f 100644
--- a/extraplugins/cdo/org.eclipse.papyrus.cdo.ui.hyperlink/plugin.xml
+++ b/extraplugins/cdo/org.eclipse.papyrus.cdo.ui.hyperlink/plugin.xml
@@ -16,5 +16,11 @@
provider="org.eclipse.papyrus.cdo.internal.ui.hyperlink.CDOResourceHyperlinkLabelProvider">
</labelProvider>
</extension>
+ <extension
+ point="org.eclipse.papyrus.infra.gmfdiag.dnd.dropStrategy">
+ <strategy
+ strategy="org.eclipse.papyrus.cdo.internal.ui.hyperlink.CDOResourceURIDropStrategy">
+ </strategy>
+ </extension>
</plugin>
diff --git a/extraplugins/cdo/org.eclipse.papyrus.cdo.ui.hyperlink/src/org/eclipse/papyrus/cdo/internal/ui/hyperlink/CDOResourceHyperlink.java b/extraplugins/cdo/org.eclipse.papyrus.cdo.ui.hyperlink/src/org/eclipse/papyrus/cdo/internal/ui/hyperlink/CDOResourceHyperlink.java
index fb9a1cc73c8..8df258f961a 100644
--- a/extraplugins/cdo/org.eclipse.papyrus.cdo.ui.hyperlink/src/org/eclipse/papyrus/cdo/internal/ui/hyperlink/CDOResourceHyperlink.java
+++ b/extraplugins/cdo/org.eclipse.papyrus.cdo.ui.hyperlink/src/org/eclipse/papyrus/cdo/internal/ui/hyperlink/CDOResourceHyperlink.java
@@ -72,9 +72,9 @@ public class CDOResourceHyperlink extends HyperLinkObject {
// open the appropriate editor
URI uri = getHyperlink();
- IInternalPapyrusRepository repo = PapyrusRepositoryManager.INSTANCE.getRepositoryForURI(uri);
+ IInternalPapyrusRepository repo = PapyrusRepositoryManager.INSTANCE.getRepositoryForURI(uri, false);
if(repo == null) {
- MessageDialog.openError(UIUtil.getActiveWorkbenchWindow().getShell(), Messages.CDOResourceHyperlink_openError, Messages.CDOResourceHyperlink_noSuchRepo);
+ MessageDialog.openError(UIUtil.getActiveWorkbenchWindow().getShell(), Messages.CDOResourceHyperlink_openError, Messages.CDOResourceHyperlink_notConnected);
} else if(!repo.isConnected()) {
repo.connect();
if(!repo.isConnected()) {
diff --git a/extraplugins/cdo/org.eclipse.papyrus.cdo.ui.hyperlink/src/org/eclipse/papyrus/cdo/internal/ui/hyperlink/CDOResourceURIDropStrategy.java b/extraplugins/cdo/org.eclipse.papyrus.cdo.ui.hyperlink/src/org/eclipse/papyrus/cdo/internal/ui/hyperlink/CDOResourceURIDropStrategy.java
new file mode 100644
index 00000000000..107487424d4
--- /dev/null
+++ b/extraplugins/cdo/org.eclipse.papyrus.cdo.ui.hyperlink/src/org/eclipse/papyrus/cdo/internal/ui/hyperlink/CDOResourceURIDropStrategy.java
@@ -0,0 +1,116 @@
+/*****************************************************************************
+ * Copyright (c) 2013 CEA LIST.
+ *
+ * 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:
+ * CEA LIST - Initial API and implementation
+ *****************************************************************************/
+package org.eclipse.papyrus.cdo.internal.ui.hyperlink;
+
+import java.util.List;
+
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EObject;
+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.gmf.runtime.diagram.ui.requests.DropObjectsRequest;
+import org.eclipse.gmf.runtime.notation.Diagram;
+import org.eclipse.gmf.runtime.notation.View;
+import org.eclipse.papyrus.cdo.internal.ui.dnd.CDOResourceURITransferData;
+import org.eclipse.papyrus.commands.Activator;
+import org.eclipse.papyrus.infra.gmfdiag.common.helper.SemanticElementHelper;
+import org.eclipse.papyrus.infra.gmfdiag.dnd.strategy.TransactionalDropStrategy;
+import org.eclipse.swt.graphics.Image;
+
+import com.google.common.collect.Iterables;
+import com.google.common.collect.Lists;
+
+
+/**
+ * A drop strategy that extracts URIs of CDO resources from an Ecore representation of a {@link CDOResourceURITransferData} to create hyperlinks.
+ */
+public class CDOResourceURIDropStrategy extends TransactionalDropStrategy {
+
+ private static final String ID = Activator.PLUGIN_ID + ".cdoResourceURI"; //$NON-NLS-1$
+
+ public CDOResourceURIDropStrategy() {
+ super();
+ }
+
+ @Override
+ public String getLabel() {
+ return Messages.DropStrategy_label;
+ }
+
+ @Override
+ public String getDescription() {
+ return Messages.DropStrategy_desc;
+ }
+
+ @Override
+ public Image getImage() {
+ return null;
+ }
+
+ @Override
+ public String getID() {
+ return ID;
+ }
+
+ @Override
+ public int getPriority() {
+ return 0;
+ }
+
+ @Override
+ protected Command doGetCommand(Request request, EditPart targetEditPart) {
+ if(request instanceof DropObjectsRequest) {
+ View view = getTargetView(targetEditPart);
+ if(view == null) {
+ return null;
+ }
+
+ final View mainView = SemanticElementHelper.findPrimaryView(view);
+ if(mainView instanceof Diagram) {
+ // don't create hyperlinks on the diagram surface
+ return null;
+ }
+
+ final DropObjectsRequest dropRequest = (DropObjectsRequest)request;
+ List<URI> hyperlinkURIs = null;
+
+ for(EObject next : Iterables.filter(dropRequest.getObjects(), EObject.class)) {
+ if(CDOResourceURITransferData.isCDOResourceURITransferData(next)) {
+ if(hyperlinkURIs == null) {
+ hyperlinkURIs = Lists.newArrayListWithCapacity(dropRequest.getObjects().size());
+ }
+ hyperlinkURIs.addAll(CDOResourceURITransferData.fromEObject(next).getURIs());
+ }
+ }
+
+ if(hyperlinkURIs != null) {
+ final TransactionalEditingDomain domain = getTransactionalEditingDomain(targetEditPart);
+
+ final List<URI> _hyperlinkURIs = hyperlinkURIs;
+ return new Command() {
+
+ @Override
+ public void execute() {
+ for(URI next : _hyperlinkURIs) {
+ new CreateCDOResourceHyperlinkCommand(domain, mainView, next.lastSegment(), next, false).execute();
+ }
+ }
+ };
+ }
+ }
+
+ return null;
+ }
+
+}
diff --git a/extraplugins/cdo/org.eclipse.papyrus.cdo.ui.hyperlink/src/org/eclipse/papyrus/cdo/internal/ui/hyperlink/Messages.java b/extraplugins/cdo/org.eclipse.papyrus.cdo.ui.hyperlink/src/org/eclipse/papyrus/cdo/internal/ui/hyperlink/Messages.java
index 74888750ec2..4f3352338a1 100644
--- a/extraplugins/cdo/org.eclipse.papyrus.cdo.ui.hyperlink/src/org/eclipse/papyrus/cdo/internal/ui/hyperlink/Messages.java
+++ b/extraplugins/cdo/org.eclipse.papyrus.cdo.ui.hyperlink/src/org/eclipse/papyrus/cdo/internal/ui/hyperlink/Messages.java
@@ -36,6 +36,9 @@ public class Messages extends NLS {
public static String CDOResourceHyperlinkLabelProvider_tipAndURI;
public static String CDOResourceHyperlinkLabelProvider_uriOnly;
+ public static String DropStrategy_desc;
+
+ public static String DropStrategy_label;
static {
// initialize resource bundle
NLS.initializeMessages(BUNDLE_NAME, Messages.class);
diff --git a/extraplugins/cdo/org.eclipse.papyrus.cdo.ui.hyperlink/src/org/eclipse/papyrus/cdo/internal/ui/hyperlink/messages.properties b/extraplugins/cdo/org.eclipse.papyrus.cdo.ui.hyperlink/src/org/eclipse/papyrus/cdo/internal/ui/hyperlink/messages.properties
index 7e1167de003..eef17e4fba5 100644
--- a/extraplugins/cdo/org.eclipse.papyrus.cdo.ui.hyperlink/src/org/eclipse/papyrus/cdo/internal/ui/hyperlink/messages.properties
+++ b/extraplugins/cdo/org.eclipse.papyrus.cdo.ui.hyperlink/src/org/eclipse/papyrus/cdo/internal/ui/hyperlink/messages.properties
@@ -7,3 +7,5 @@ CDOResourceHyperlinkEditorShell_title=Browse Model Repository
CDOResourceHyperlinkHelper_name=Document in model repository
CDOResourceHyperlinkLabelProvider_tipAndURI={0} - {1}
CDOResourceHyperlinkLabelProvider_uriOnly={1}
+DropStrategy_desc=Create hyperlinks in a diagram to documents in model repositories
+DropStrategy_label=Create hyperlinks
diff --git a/extraplugins/cdo/org.eclipse.papyrus.cdo.ui/.settings/org.eclipse.core.resources.prefs b/extraplugins/cdo/org.eclipse.papyrus.cdo.ui/.settings/org.eclipse.core.resources.prefs
index 6fa757c6f52..c2dc252dd80 100644
--- a/extraplugins/cdo/org.eclipse.papyrus.cdo.ui/.settings/org.eclipse.core.resources.prefs
+++ b/extraplugins/cdo/org.eclipse.papyrus.cdo.ui/.settings/org.eclipse.core.resources.prefs
@@ -1,2 +1,4 @@
eclipse.preferences.version=1
+encoding//model/DND.ecore=UTF-8
+encoding//model/DND.ecorediag=UTF-8
encoding//src/org/eclipse/papyrus/cdo/internal/ui/l10n/messages.properties=ISO-8859-1
diff --git a/extraplugins/cdo/org.eclipse.papyrus.cdo.ui/META-INF/MANIFEST.MF b/extraplugins/cdo/org.eclipse.papyrus.cdo.ui/META-INF/MANIFEST.MF
index 2309e75fa88..f966cd3efcc 100644
--- a/extraplugins/cdo/org.eclipse.papyrus.cdo.ui/META-INF/MANIFEST.MF
+++ b/extraplugins/cdo/org.eclipse.papyrus.cdo.ui/META-INF/MANIFEST.MF
@@ -27,7 +27,7 @@ Export-Package: org.eclipse.papyrus.cdo.internal.ui;x-friends:="org.eclipse.papy
org.eclipse.papyrus.cdo.internal.ui.adapters;x-friends:="org.eclipse.papyrus.cdo.ui.tests",
org.eclipse.papyrus.cdo.internal.ui.decorators;x-friends:="org.eclipse.papyrus.cdo.ui.tests",
org.eclipse.papyrus.cdo.internal.ui.dialogs;x-friends:="org.eclipse.papyrus.cdo.ui.tests,org.eclipse.papyrus.cdo.ui.customization.properties,org.eclipse.papyrus.cdo.ui.hyperlink",
- org.eclipse.papyrus.cdo.internal.ui.dnd;x-friends:="org.eclipse.papyrus.cdo.ui.tests",
+ org.eclipse.papyrus.cdo.internal.ui.dnd;x-friends:="org.eclipse.papyrus.cdo.ui.hyperlink,org.eclipse.papyrus.cdo.ui.tests",
org.eclipse.papyrus.cdo.internal.ui.editors;x-friends:="org.eclipse.papyrus.cdo.ui.tests,org.eclipse.papyrus.cdo.uml.search.ui,org.eclipse.papyrus.cdo.ui.hyperlink",
org.eclipse.papyrus.cdo.internal.ui.expressions;x-friends:="org.eclipse.papyrus.cdo.ui.tests",
org.eclipse.papyrus.cdo.internal.ui.handlers;x-friends:="org.eclipse.papyrus.cdo.ui.tests",
diff --git a/extraplugins/cdo/org.eclipse.papyrus.cdo.ui/build.properties b/extraplugins/cdo/org.eclipse.papyrus.cdo.ui/build.properties
index edf0e6f74bf..758932eaa4d 100644
--- a/extraplugins/cdo/org.eclipse.papyrus.cdo.ui/build.properties
+++ b/extraplugins/cdo/org.eclipse.papyrus.cdo.ui/build.properties
@@ -5,7 +5,9 @@ bin.includes = META-INF/,\
plugin.properties,\
plugin.xml,\
icons/,\
- about.html
-bin.excludes = icons/**/*.pxm
+ about.html,\
+ model/
+bin.excludes = icons/**/*.pxm,\
+ model/*.ecorediag
src.includes = about.html,\
schema/
diff --git a/extraplugins/cdo/org.eclipse.papyrus.cdo.ui/model/DND.ecore b/extraplugins/cdo/org.eclipse.papyrus.cdo.ui/model/DND.ecore
new file mode 100644
index 00000000000..d099ac1494f
--- /dev/null
+++ b/extraplugins/cdo/org.eclipse.papyrus.cdo.ui/model/DND.ecore
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="dnd" nsURI="http://www.eclipse.org/papyrus/1.0.0/cdo/private/dnd"
+ nsPrefix="dnd">
+ <eClassifiers xsi:type="ecore:EClass" name="CDOResourceURITransferData">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="resourceURIs" upperBound="-1"
+ eType="#//URI"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="URI" instanceClassName="org.eclipse.emf.common.util.URI"/>
+</ecore:EPackage>
diff --git a/extraplugins/cdo/org.eclipse.papyrus.cdo.ui/model/DND.ecorediag b/extraplugins/cdo/org.eclipse.papyrus.cdo.ui/model/DND.ecorediag
new file mode 100644
index 00000000000..a04675ec44d
--- /dev/null
+++ b/extraplugins/cdo/org.eclipse.papyrus.cdo.ui/model/DND.ecorediag
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<notation:Diagram xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.2/notation" xmi:id="_yFGb0CVbEeOe3PUVH5W0Qg" type="EcoreTools" name="DND" measurementUnit="Pixel">
+ <children xmi:type="notation:Node" xmi:id="_AjafgCVcEeOe3PUVH5W0Qg" type="1001">
+ <children xmi:type="notation:Node" xmi:id="_Ajc7wCVcEeOe3PUVH5W0Qg" type="4001"/>
+ <children xmi:type="notation:Node" xmi:id="_AjeJ4CVcEeOe3PUVH5W0Qg" type="5001">
+ <children xmi:type="notation:Node" xmi:id="_Gq1wwCVcEeOe3PUVH5W0Qg" type="2001">
+ <element xmi:type="ecore:EAttribute" href="DND.ecore#//CDOResourceURITransferData/resourceURIs"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Gq1wwSVcEeOe3PUVH5W0Qg"/>
+ </children>
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_AjeJ4SVcEeOe3PUVH5W0Qg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_AjeJ4iVcEeOe3PUVH5W0Qg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_AjeJ4yVcEeOe3PUVH5W0Qg"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_Ajew8CVcEeOe3PUVH5W0Qg" type="5002">
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_Ajew8SVcEeOe3PUVH5W0Qg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_Ajew8iVcEeOe3PUVH5W0Qg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_Ajew8yVcEeOe3PUVH5W0Qg"/>
+ </children>
+ <styles xmi:type="notation:ShapeStyle" xmi:id="_AjafgSVcEeOe3PUVH5W0Qg" fontColor="4210752" fontName="Lucida Grande" fontHeight="10" fillColor="13761016" lineColor="8421504"/>
+ <element xmi:type="ecore:EClass" href="DND.ecore#//CDOResourceURITransferData"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AjafgiVcEeOe3PUVH5W0Qg" x="41" y="106"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_N4TdACVcEeOe3PUVH5W0Qg" type="1004">
+ <children xmi:type="notation:Node" xmi:id="_N4UEECVcEeOe3PUVH5W0Qg" type="4008"/>
+ <children xmi:type="notation:Node" xmi:id="_N4UrICVcEeOe3PUVH5W0Qg" type="4009"/>
+ <styles xmi:type="notation:ShapeStyle" xmi:id="_N4TdASVcEeOe3PUVH5W0Qg" fontColor="4210752" fontName="Lucida Grande" fontHeight="10" fillColor="13761016" lineColor="8421504"/>
+ <element xmi:type="ecore:EDataType" href="DND.ecore#//URI"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_N4TdAiVcEeOe3PUVH5W0Qg" x="360" y="108"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_yFGb0SVbEeOe3PUVH5W0Qg"/>
+ <element xmi:type="ecore:EPackage" href="DND.ecore#/"/>
+</notation:Diagram>
diff --git a/extraplugins/cdo/org.eclipse.papyrus.cdo.ui/plugin.xml b/extraplugins/cdo/org.eclipse.papyrus.cdo.ui/plugin.xml
index cd53f34a723..8f74e64e722 100644
--- a/extraplugins/cdo/org.eclipse.papyrus.cdo.ui/plugin.xml
+++ b/extraplugins/cdo/org.eclipse.papyrus.cdo.ui/plugin.xml
@@ -378,4 +378,11 @@
</includes>
</viewerContentBinding>
</extension>
+ <extension
+ point="org.eclipse.emf.ecore.dynamic_package">
+ <resource
+ location="model/DND.ecore"
+ uri="http://www.eclipse.org/papyrus/1.0.0/cdo/private/dnd">
+ </resource>
+ </extension>
</plugin>
diff --git a/extraplugins/cdo/org.eclipse.papyrus.cdo.ui/src/org/eclipse/papyrus/cdo/internal/ui/dnd/CDOResourceURITransferData.java b/extraplugins/cdo/org.eclipse.papyrus.cdo.ui/src/org/eclipse/papyrus/cdo/internal/ui/dnd/CDOResourceURITransferData.java
index 94fde9564d7..57114c8a154 100644
--- a/extraplugins/cdo/org.eclipse.papyrus.cdo.ui/src/org/eclipse/papyrus/cdo/internal/ui/dnd/CDOResourceURITransferData.java
+++ b/extraplugins/cdo/org.eclipse.papyrus.cdo.ui/src/org/eclipse/papyrus/cdo/internal/ui/dnd/CDOResourceURITransferData.java
@@ -11,10 +11,16 @@
*****************************************************************************/
package org.eclipse.papyrus.cdo.internal.ui.dnd;
+import java.util.Collections;
import java.util.List;
import org.eclipse.emf.cdo.eresource.CDOResourceNode;
import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.util.EcoreUtil;
import com.google.common.base.Function;
import com.google.common.collect.ImmutableList;
@@ -29,11 +35,18 @@ import com.google.common.io.ByteStreams;
*/
public final class CDOResourceURITransferData {
+ private static final String NS_URI = "http://www.eclipse.org/papyrus/1.0.0/cdo/private/dnd"; //$NON-NLS-1$
+
+ private static final EClass ECLASS = (EClass)EPackage.Registry.INSTANCE.getEPackage(NS_URI).getEClassifier(CDOResourceURITransferData.class.getSimpleName());
+
+ private static final EAttribute URIS = (EAttribute)ECLASS.getEStructuralFeature("resourceURIs"); //$NON-NLS-1$
+
private final List<URI> uris;
public CDOResourceURITransferData(Iterable<? extends CDOResourceNode> resourceNodes) {
this(ImmutableList.copyOf(Iterables.transform(resourceNodes, new Function<CDOResourceNode, URI>() {
+ @Override
public URI apply(CDOResourceNode input) {
return input.getURI();
}
@@ -70,4 +83,21 @@ public final class CDOResourceURITransferData {
return new CDOResourceURITransferData(uris.build());
}
+
+ public static boolean isCDOResourceURITransferData(EObject object) {
+ return ECLASS.isInstance(object);
+ }
+
+ public static CDOResourceURITransferData fromEObject(EObject object) {
+ @SuppressWarnings("unchecked")
+ List<URI> uris = isCDOResourceURITransferData(object) ? (List<URI>)object.eGet(URIS) : Collections.<URI> emptyList();
+
+ return new CDOResourceURITransferData(uris);
+ }
+
+ public EObject asEObject() {
+ EObject result = EcoreUtil.create(ECLASS);
+ result.eSet(URIS, getURIs());
+ return result;
+ }
}
diff --git a/extraplugins/cdo/org.eclipse.papyrus.cdo.ui/src/org/eclipse/papyrus/cdo/internal/ui/editors/DawnGraphicalEditorSupport.java b/extraplugins/cdo/org.eclipse.papyrus.cdo.ui/src/org/eclipse/papyrus/cdo/internal/ui/editors/DawnGraphicalEditorSupport.java
index 094e46c2855..d848fd8083d 100644
--- a/extraplugins/cdo/org.eclipse.papyrus.cdo.ui/src/org/eclipse/papyrus/cdo/internal/ui/editors/DawnGraphicalEditorSupport.java
+++ b/extraplugins/cdo/org.eclipse.papyrus.cdo.ui/src/org/eclipse/papyrus/cdo/internal/ui/editors/DawnGraphicalEditorSupport.java
@@ -13,6 +13,7 @@ package org.eclipse.papyrus.cdo.internal.ui.editors;
import java.util.Collections;
import java.util.Iterator;
+import java.util.List;
import java.util.Map;
import org.eclipse.emf.cdo.CDOObject;
@@ -25,15 +26,22 @@ import org.eclipse.emf.cdo.view.CDOView;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.util.EcoreUtil;
import org.eclipse.gef.EditPart;
+import org.eclipse.gef.EditPartViewer;
import org.eclipse.gef.ui.parts.GraphicalEditor;
import org.eclipse.gmf.runtime.diagram.ui.editparts.DiagramEditPart;
+import org.eclipse.gmf.runtime.diagram.ui.parts.DiagramDropTargetListener;
import org.eclipse.gmf.runtime.diagram.ui.resources.editor.parts.DiagramDocumentEditor;
import org.eclipse.gmf.runtime.notation.Diagram;
import org.eclipse.gmf.runtime.notation.View;
+import org.eclipse.jface.util.LocalSelectionTransfer;
+import org.eclipse.jface.util.TransferDropTargetListener;
+import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.papyrus.cdo.core.resource.CDOAwareModelSet;
import org.eclipse.papyrus.cdo.internal.core.CDOUtils;
import org.eclipse.papyrus.cdo.internal.ui.Activator;
import org.eclipse.papyrus.cdo.internal.ui.decorators.CDOStateAdapter;
+import org.eclipse.papyrus.cdo.internal.ui.dnd.CDOResourceURITransferData;
+import org.eclipse.papyrus.cdo.internal.ui.dnd.ResourceDropActionDelegate;
import org.eclipse.papyrus.cdo.internal.ui.util.UIUtil;
import org.eclipse.papyrus.infra.core.resource.ModelSet;
import org.eclipse.papyrus.infra.core.services.ServiceException;
@@ -41,14 +49,16 @@ import org.eclipse.papyrus.infra.core.services.ServicesRegistry;
import org.eclipse.papyrus.infra.gmfdiag.common.DefaultGraphicalEditorSupport;
import org.eclipse.papyrus.infra.gmfdiag.common.editpart.IConflictingEditPartFilter;
import org.eclipse.papyrus.infra.gmfdiag.common.editpart.PapyrusDiagramEditPart;
+import org.eclipse.ui.part.PluginTransfer;
+import org.eclipse.ui.part.PluginTransferData;
+import com.google.common.collect.Iterables;
import com.google.common.collect.Maps;
/**
* This is the DawnGraphicalEditorSupport type. Enjoy.
*/
-public class DawnGraphicalEditorSupport
- extends DefaultGraphicalEditorSupport {
+public class DawnGraphicalEditorSupport extends DefaultGraphicalEditorSupport {
private final ServicesRegistry registry;
@@ -58,24 +68,25 @@ public class DawnGraphicalEditorSupport
this.registry = registry;
}
+ @Override
public void initialize(GraphicalEditor editor) {
- if (editor instanceof DiagramDocumentEditor) {
- CDOView view = getCDOView();
- if (view != null) {
- DiagramDocumentEditor diagramEditor = (DiagramDocumentEditor) editor;
+ if(editor instanceof DiagramDocumentEditor) {
+ DiagramDocumentEditor diagramEditor = (DiagramDocumentEditor)editor;
+ CDOView view = getCDOView();
+ if(view != null) {
initialize(diagramEditor, view);
}
+
+ initializeCDOResourceDropSupport(diagramEditor);
}
super.initialize(editor);
}
- protected void initialize(final DiagramDocumentEditor diagramEditor,
- CDOView view) {
+ protected void initialize(final DiagramDocumentEditor diagramEditor, CDOView view) {
DawnEditorAdapter adapter = new DawnEditorAdapter(diagramEditor);
- final DawnGMFEditorSupport dawnSupport = new PapyrusGMFEditorSupport(
- adapter);
+ final DawnGMFEditorSupport dawnSupport = new PapyrusGMFEditorSupport(adapter);
adapter.setEditorSupport(dawnSupport);
adapter.setView(getCDOView());
@@ -85,11 +96,11 @@ public class DawnGraphicalEditorSupport
// part filter
UIUtil.later(new Runnable() {
+ @Override
public void run() {
DiagramEditPart diagramEP = diagramEditor.getDiagramEditPart();
- if (diagramEP instanceof PapyrusDiagramEditPart) {
- ((PapyrusDiagramEditPart) diagramEP)
- .setConflictingEditPartFilter(createConflictingEditPartFilter());
+ if(diagramEP instanceof PapyrusDiagramEditPart) {
+ ((PapyrusDiagramEditPart)diagramEP).setConflictingEditPartFilter(createConflictingEditPartFilter());
}
}
});
@@ -98,19 +109,18 @@ public class DawnGraphicalEditorSupport
// find and process objects locked remotely
final Map<Object, DawnState> remoteLocks = getRemoteLocks(diagramEditor);
- if (!remoteLocks.isEmpty()) {
+ if(!remoteLocks.isEmpty()) {
// post for later because the editor isn't yet connected to its
// editor site in the workbench
UIUtil.later(new Runnable() {
+ @Override
public void run() {
dawnSupport.handleRemoteLockChanges(remoteLocks);
- for (Object next : remoteLocks.keySet()) {
- final EObject element = CDOUtil
- .getEObject((CDOObject) next);
- View view = DawnDiagramUpdater
- .findViewByContainer(element);
+ for(Object next : remoteLocks.keySet()) {
+ final EObject element = CDOUtil.getEObject((CDOObject)next);
+ View view = DawnDiagramUpdater.findViewByContainer(element);
CDOStateAdapter.setState(view, remoteLocks.get(next));
}
@@ -124,8 +134,8 @@ public class DawnGraphicalEditorSupport
try {
ModelSet modelSet = registry.getService(ModelSet.class);
- if (modelSet instanceof CDOAwareModelSet) {
- result = ((CDOAwareModelSet) modelSet).getCDOView();
+ if(modelSet instanceof CDOAwareModelSet) {
+ result = ((CDOAwareModelSet)modelSet).getCDOView();
}
} catch (ServiceException e) {
Activator.log.error(e);
@@ -134,19 +144,17 @@ public class DawnGraphicalEditorSupport
return result;
}
- private Map<Object, DawnState> getRemoteLocks(
- DiagramDocumentEditor diagramEditor) {
+ private Map<Object, DawnState> getRemoteLocks(DiagramDocumentEditor diagramEditor) {
Map<Object, DawnState> result = Maps.newHashMap();
Diagram diagram = diagramEditor.getDiagram();
- if (diagram != null) {
- Iterator<EObject> iter = EcoreUtil.getAllProperContents(
- Collections.singleton(diagram), false);
+ if(diagram != null) {
+ Iterator<EObject> iter = EcoreUtil.getAllProperContents(Collections.singleton(diagram), false);
- while (iter.hasNext()) {
+ while(iter.hasNext()) {
CDOObject next = CDOUtils.getCDOObject(iter.next());
- if ((next != null) && CDOUtils.isLocked(next, true)) {
+ if((next != null) && CDOUtils.isLocked(next, true)) {
result.put(next, DawnState.LOCKED_REMOTELY);
}
}
@@ -158,11 +166,80 @@ public class DawnGraphicalEditorSupport
private IConflictingEditPartFilter createConflictingEditPartFilter() {
return new IConflictingEditPartFilter() {
+ @Override
public boolean isConflicting(EditPart editPart) {
Object model = editPart.getModel();
- return (model instanceof EObject)
- && DawnConflictHelper.isConflicted((EObject) model);
+ return (model instanceof EObject) && DawnConflictHelper.isConflicted((EObject)model);
+ }
+ };
+ }
+
+ protected void initializeCDOResourceDropSupport(final DiagramDocumentEditor diagramEditor) {
+ // after the root edit part has been created, inject drop-target listener for dropping hyperlinks to CDO resources by URI
+ UIUtil.later(new Runnable() {
+
+ @Override
+ public void run() {
+ EditPartViewer viewer = diagramEditor.getDiagramGraphicalViewer();
+ viewer.addDropTargetListener(createCDOResourceURIDropTargetListener(viewer));
+ }
+ });
+ }
+
+ private TransferDropTargetListener createCDOResourceURIDropTargetListener(EditPartViewer viewer) {
+ return new DiagramDropTargetListener(viewer, PluginTransfer.getInstance()) {
+
+ @Override
+ protected boolean isDataTransfered() {
+ // I only have my data when the actual transfer data carrying my URIs is available
+ return getCurrentEvent().data != null;
+ }
+
+ @Override
+ protected List<EObject> getObjectsBeingDropped() {
+ List<EObject> result = null;
+ CDOResourceURITransferData uriData = null;
+
+ if(PluginTransfer.getInstance().isSupportedType(getCurrentEvent().currentDataType) && !localTransferHasObjectFromThisRepo()) {
+ Object data = getCurrentEvent().data;
+ if(data instanceof PluginTransferData) {
+ PluginTransferData ptData = (PluginTransferData)data;
+ if(ResourceDropActionDelegate.DROP_ACTION_ID.equals(ptData.getExtensionId())) {
+ uriData = CDOResourceURITransferData.deserialize(ptData.getData());
+ }
+ }
+ }
+
+ if(uriData == null) {
+ result = Collections.emptyList();
+ } else {
+ // convert the URI transfer data to an EObject so that the drag-and-drop
+ // system doesn't bomb on ClassCastExceptions
+ result = Collections.singletonList(uriData.asEObject());
+ }
+
+ return result;
}
};
}
+
+ boolean localTransferHasObjectFromThisRepo() {
+ boolean result = false;
+
+ CDOView view = getCDOView();
+ if(view != null) {
+ IStructuredSelection sel = CDOUtils.tryCast(LocalSelectionTransfer.getTransfer().getSelection(), IStructuredSelection.class);
+ if((sel != null) && !sel.isEmpty()) {
+ for(EObject next : Iterables.filter(sel.toList(), EObject.class)) {
+ CDOObject cdo = CDOUtils.getCDOObject(next);
+ if((cdo != null) && (cdo.cdoView().getSession() == view.getSession())) {
+ result = true;
+ break;
+ }
+ }
+ }
+ }
+
+ return result;
+ }
}

Back to the top