Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorcletavernie2012-04-17 13:49:23 +0000
committercletavernie2012-04-17 13:49:23 +0000
commit7e602e22de6f43ba7c0fe5aae4a361e9b4d3c517 (patch)
tree87c9870a6ae407b86c5bfd56cd8aadeebeb8fa3d /sandbox
parent4f33edfc8405b4a2a6fb526314486968c1e0c6cd (diff)
downloadorg.eclipse.papyrus-7e602e22de6f43ba7c0fe5aae4a361e9b4d3c517.tar.gz
org.eclipse.papyrus-7e602e22de6f43ba7c0fe5aae4a361e9b4d3c517.tar.xz
org.eclipse.papyrus-7e602e22de6f43ba7c0fe5aae4a361e9b4d3c517.zip
370819: [Global] A Flexible Drag & Drop framework
https://bugs.eclipse.org/bugs/show_bug.cgi?id=370819 Sandbox commit
Diffstat (limited to 'sandbox')
-rw-r--r--sandbox/org.eclipse.papyrus.infra.gmfdiag.dnd/src/org/eclipse/papyrus/infra/gmfdiag/dnd/policy/CustomizableDropEditPolicy.java27
-rw-r--r--sandbox/org.eclipse.papyrus.infra.gmfdiag.dnd/src/org/eclipse/papyrus/infra/gmfdiag/dnd/policy/CustomizableDropEditPolicyProvider.java7
2 files changed, 22 insertions, 12 deletions
diff --git a/sandbox/org.eclipse.papyrus.infra.gmfdiag.dnd/src/org/eclipse/papyrus/infra/gmfdiag/dnd/policy/CustomizableDropEditPolicy.java b/sandbox/org.eclipse.papyrus.infra.gmfdiag.dnd/src/org/eclipse/papyrus/infra/gmfdiag/dnd/policy/CustomizableDropEditPolicy.java
index d8262708c8c..43a6fca73ec 100644
--- a/sandbox/org.eclipse.papyrus.infra.gmfdiag.dnd/src/org/eclipse/papyrus/infra/gmfdiag/dnd/policy/CustomizableDropEditPolicy.java
+++ b/sandbox/org.eclipse.papyrus.infra.gmfdiag.dnd/src/org/eclipse/papyrus/infra/gmfdiag/dnd/policy/CustomizableDropEditPolicy.java
@@ -21,6 +21,7 @@ import org.eclipse.gef.EditPolicy;
import org.eclipse.gef.Request;
import org.eclipse.gef.commands.Command;
import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy;
+import org.eclipse.gmf.runtime.diagram.ui.editparts.DiagramEditPart;
import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy;
import org.eclipse.gmf.runtime.diagram.ui.requests.DropObjectsRequest;
import org.eclipse.gmf.runtime.diagram.ui.requests.RequestConstants;
@@ -58,6 +59,7 @@ public class CustomizableDropEditPolicy extends DragDropEditPolicy {
*/
public CustomizableDropEditPolicy(EditPolicy defaultDropEditPolicy, EditPolicy defaultCreationEditPolicy) {
this.defaultDropEditPolicy = defaultDropEditPolicy;
+ this.defaultCreationEditPolicy = defaultCreationEditPolicy;
dropStrategies = new TreeMap<Integer, List<DropStrategy>>();
addStrategy(new DefaultDropStrategy(defaultDropEditPolicy, defaultCreationEditPolicy));
}
@@ -77,19 +79,16 @@ public class CustomizableDropEditPolicy extends DragDropEditPolicy {
public Command getCommand(final Request request) {
final Command command;
- //Drag & Drop request
if(super.understandsRequest(request)) {
+ //Drag & Drop request
command = super.getCommand(request); //Will call this.getDropObjectsCommand() eventually
- } else
-
- //Add request
- if(this.understands(request)) {
+ } else if(this.understands(request)) {
+ //Add request
command = getCreationCommand(request);
} else if(defaultCreationEditPolicy != null) {
+ //Creation request
command = defaultCreationEditPolicy.getCommand(request);
- }
-
- else {
+ } else {
command = null;
}
@@ -102,7 +101,7 @@ public class CustomizableDropEditPolicy extends DragDropEditPolicy {
@Override
public boolean understandsRequest(Request request) {
- return super.understandsRequest(request) || (defaultCreationEditPolicy != null && defaultCreationEditPolicy.understandsRequest(request)) || this.understands(request);
+ return this.understands(request) || (defaultCreationEditPolicy != null && defaultCreationEditPolicy.understandsRequest(request)) || (defaultDropEditPolicy != null && defaultDropEditPolicy.understandsRequest(request));
}
protected boolean understands(Request request) {
@@ -169,4 +168,14 @@ public class CustomizableDropEditPolicy extends DragDropEditPolicy {
return matchingStrategies;
}
+
+ /**
+ * @see org.eclipse.gef.EditPolicy#showTargetFeedback(org.eclipse.gef.Request)
+ */
+ @Override
+ public void showTargetFeedback(Request request) {
+ if(!(getHost() instanceof DiagramEditPart)) {
+ super.showTargetFeedback(request);
+ }
+ }
}
diff --git a/sandbox/org.eclipse.papyrus.infra.gmfdiag.dnd/src/org/eclipse/papyrus/infra/gmfdiag/dnd/policy/CustomizableDropEditPolicyProvider.java b/sandbox/org.eclipse.papyrus.infra.gmfdiag.dnd/src/org/eclipse/papyrus/infra/gmfdiag/dnd/policy/CustomizableDropEditPolicyProvider.java
index 3f4c3409bc4..3eaa41d59de 100644
--- a/sandbox/org.eclipse.papyrus.infra.gmfdiag.dnd/src/org/eclipse/papyrus/infra/gmfdiag/dnd/policy/CustomizableDropEditPolicyProvider.java
+++ b/sandbox/org.eclipse.papyrus.infra.gmfdiag.dnd/src/org/eclipse/papyrus/infra/gmfdiag/dnd/policy/CustomizableDropEditPolicyProvider.java
@@ -15,7 +15,6 @@ import org.eclipse.gef.EditPart;
import org.eclipse.gef.EditPolicy;
import org.eclipse.gmf.runtime.common.core.service.AbstractProvider;
import org.eclipse.gmf.runtime.common.core.service.IOperation;
-import org.eclipse.gmf.runtime.diagram.ui.editparts.DiagramEditPart;
import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;
import org.eclipse.gmf.runtime.diagram.ui.services.editpolicy.CreateEditPoliciesOperation;
import org.eclipse.gmf.runtime.diagram.ui.services.editpolicy.IEditPolicyProvider;
@@ -27,7 +26,9 @@ public class CustomizableDropEditPolicyProvider extends AbstractProvider impleme
// return false;
CreateEditPoliciesOperation epOperation = (CreateEditPoliciesOperation)operation;
- return !(epOperation.getEditPart() instanceof DiagramEditPart); //TODO: Detect Papyrus diagrams
+ return true;
+
+ // return !(epOperation.getEditPart() instanceof DiagramEditPart); //TODO: Detect Papyrus diagrams
}
public void createEditPolicies(EditPart editPart) {
@@ -36,7 +37,7 @@ public class CustomizableDropEditPolicyProvider extends AbstractProvider impleme
CustomizableDropEditPolicy dropEditPolicy = new CustomizableDropEditPolicy(defaultDropEditPolicy, defaultCreationEditPolicy);
- editPart.installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE, dropEditPolicy);
+ editPart.installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE, null);
editPart.installEditPolicy(EditPolicyRoles.CREATION_ROLE, dropEditPolicy);
}

Back to the top