diff --git a/plugins/org.jkiss.dbeaver.ext.erd/src/org/jkiss/dbeaver/ext/erd/directedit/ExtendedDirectEditManager.java b/plugins/org.jkiss.dbeaver.ext.erd/src/org/jkiss/dbeaver/ext/erd/directedit/ExtendedDirectEditManager.java index 283c5028e65ba1936929f7f79fe59f44d85794f1..a022b30bc261c3f87eb436f1896db705393c9666 100644 --- a/plugins/org.jkiss.dbeaver.ext.erd/src/org/jkiss/dbeaver/ext/erd/directedit/ExtendedDirectEditManager.java +++ b/plugins/org.jkiss.dbeaver.ext.erd/src/org/jkiss/dbeaver/ext/erd/directedit/ExtendedDirectEditManager.java @@ -22,9 +22,11 @@ package org.jkiss.dbeaver.ext.erd.directedit; import org.eclipse.draw2d.IFigure; import org.eclipse.draw2d.Label; import org.eclipse.draw2d.geometry.Dimension; +import org.eclipse.gef.EditPolicy; import org.eclipse.gef.GraphicalEditPart; import org.eclipse.gef.commands.Command; import org.eclipse.gef.commands.CommandStack; +import org.eclipse.gef.editpolicies.DirectEditPolicy; import org.eclipse.gef.tools.CellEditorLocator; import org.eclipse.gef.tools.DirectEditManager; import org.eclipse.jface.viewers.ICellEditorValidator; @@ -170,10 +172,16 @@ public class ExtendedDirectEditManager extends DirectEditManager { getCellEditor().getControl().setVisible(false); if (isDirty()) { CommandStack stack = getEditPart().getViewer().getEditDomain().getCommandStack(); - Command command = getEditPart().getCommand(getDirectEditRequest()); - - if (command != null && command.canExecute()) + EditPolicy editPolicy = getEditPart().getEditPolicy(EditPolicy.DIRECT_EDIT_ROLE); + Command command; + if (editPolicy != null) { + command = editPolicy.getCommand(getDirectEditRequest()); + } else { + command = getEditPart().getCommand(getDirectEditRequest()); + } + if (command != null && command.canExecute()) { stack.execute(command); + } } } finally { bringDown(); diff --git a/plugins/org.jkiss.dbeaver.ext.erd/src/org/jkiss/dbeaver/ext/erd/part/NotePart.java b/plugins/org.jkiss.dbeaver.ext.erd/src/org/jkiss/dbeaver/ext/erd/part/NotePart.java index dc2107809bd30aeb8cf07cc930678cb1cb4e7d28..288eb989968c86e8f8e105b53724c9eb95a47cb2 100644 --- a/plugins/org.jkiss.dbeaver.ext.erd/src/org/jkiss/dbeaver/ext/erd/part/NotePart.java +++ b/plugins/org.jkiss.dbeaver.ext.erd/src/org/jkiss/dbeaver/ext/erd/part/NotePart.java @@ -26,6 +26,7 @@ import org.eclipse.gef.ConnectionEditPart; import org.eclipse.gef.EditPolicy; import org.eclipse.gef.Request; import org.eclipse.gef.RequestConstants; +import org.eclipse.gef.commands.Command; import org.eclipse.gef.requests.DirectEditRequest; import org.eclipse.gef.tools.DirectEditManager; import org.jkiss.dbeaver.ext.erd.directedit.ExtendedDirectEditManager; @@ -69,6 +70,7 @@ public class NotePart extends NodePart //installEditPolicy(EditPolicy.CONTAINER_ROLE, new EntityContainerEditPolicy()); //installEditPolicy(EditPolicy.COMPONENT_ROLE, new NoteEditPolicy()); installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE, new NoteDirectEditPolicy()); + //installEditPolicy(EditPolicy.COMPONENT_ROLE, new NoteDirectEditPolicy()); //installEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE, new ResizableEditPolicy()); } @@ -87,6 +89,14 @@ public class NotePart extends NodePart } } + @Override + public Command getCommand(Request request) { + if (request.getType() == RequestConstants.REQ_DIRECT_EDIT) { + performDirectEdit(); + } + return null; + } + private boolean directEditHitTest(Point requestLoc) { NoteFigure figure = (NoteFigure) getFigure(); figure.translateToRelative(requestLoc);