diff options
author | cletavernie | 2012-04-17 13:49:23 +0000 |
---|---|---|
committer | cletavernie | 2012-04-17 13:49:23 +0000 |
commit | 7e602e22de6f43ba7c0fe5aae4a361e9b4d3c517 (patch) | |
tree | 87c9870a6ae407b86c5bfd56cd8aadeebeb8fa3d /sandbox | |
parent | 4f33edfc8405b4a2a6fb526314486968c1e0c6cd (diff) | |
download | org.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')
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);
}
|