Search in sources :

Example 1 with XSDElementDragAndDropCommand

use of org.eclipse.wst.xsd.ui.internal.commands.XSDElementDragAndDropCommand in project webtools.sourceediting by eclipse.

the class DragAndDropEditPolicy method getCommand.

public org.eclipse.gef.commands.Command getCommand(Request request) {
    BaseDragAndDropCommand command = null;
    if (request instanceof ChangeBoundsRequest) {
        ChangeBoundsRequest changeBoundsRequest = (ChangeBoundsRequest) request;
        Point location = changeBoundsRequest.getLocation();
        GraphicalEditPart target = (GraphicalEditPart) viewer.findObjectAt(location);
        location = getPointerLocation(changeBoundsRequest.getLocation());
        ((GraphicalEditPart) viewer.getRootEditPart()).getFigure().translateToRelative(location);
        List list = changeBoundsRequest.getEditParts();
        // allow drag and drop of only one selected object
        if (list.size() == 1) {
            Object itemToDrag = list.get(0);
            if (itemToDrag instanceof XSDBaseFieldEditPart) {
                XSDBaseFieldEditPart selected = (XSDBaseFieldEditPart) itemToDrag;
                if (selected.getModel() instanceof XSDElementDeclarationAdapter) {
                    command = new XSDElementDragAndDropCommand(viewer, (ChangeBoundsRequest) request, target, selected, location);
                    selectionHandlesEditPolicy.setDragAndDropCommand(command);
                } else if (selected.getModel() instanceof XSDBaseAttributeAdapter) {
                    command = new XSDAttributeDragAndDropCommand(viewer, (ChangeBoundsRequest) request, target, selected, location);
                    selectionHandlesEditPolicy.setDragAndDropCommand(command);
                }
            }
        }
    }
    return command;
}
Also used : ChangeBoundsRequest(org.eclipse.gef.requests.ChangeBoundsRequest) XSDElementDragAndDropCommand(org.eclipse.wst.xsd.ui.internal.commands.XSDElementDragAndDropCommand) XSDBaseFieldEditPart(org.eclipse.wst.xsd.ui.internal.design.editparts.XSDBaseFieldEditPart) XSDBaseAttributeAdapter(org.eclipse.wst.xsd.ui.internal.adapters.XSDBaseAttributeAdapter) BaseDragAndDropCommand(org.eclipse.wst.xsd.ui.internal.commands.BaseDragAndDropCommand) List(java.util.List) Point(org.eclipse.draw2d.geometry.Point) XSDAttributeDragAndDropCommand(org.eclipse.wst.xsd.ui.internal.commands.XSDAttributeDragAndDropCommand) GraphicalEditPart(org.eclipse.gef.GraphicalEditPart) XSDElementDeclarationAdapter(org.eclipse.wst.xsd.ui.internal.adapters.XSDElementDeclarationAdapter)

Example 2 with XSDElementDragAndDropCommand

use of org.eclipse.wst.xsd.ui.internal.commands.XSDElementDragAndDropCommand in project webtools.sourceediting by eclipse.

the class KeyboardDragImpl method performKeyboardDrag.

public void performKeyboardDrag(GraphicalEditPart movingElement, int direction) {
    KeyBoardAccessibilityEditPolicy policy = (KeyBoardAccessibilityEditPolicy) movingElement.getEditPolicy(KeyBoardAccessibilityEditPolicy.KEY);
    EditPart rightElement = policy.getRelativeEditPart(movingElement, direction);
    policy = (KeyBoardAccessibilityEditPolicy) rightElement.getEditPolicy(KeyBoardAccessibilityEditPolicy.KEY);
    EditPart leftElement = (policy != null) ? policy.getRelativeEditPart(rightElement, direction) : null;
    // TODO: add support for extenders
    if (!(movingElement instanceof XSDBaseFieldEditPart))
        return;
    XSDBaseFieldEditPart movingField = (XSDBaseFieldEditPart) movingElement;
    XSDBaseFieldEditPart leftField = (XSDBaseFieldEditPart) leftElement;
    XSDBaseFieldEditPart rightField = (XSDBaseFieldEditPart) rightElement;
    Object movingObject = movingField.getModel();
    BaseDragAndDropCommand command = null;
    if (movingObject instanceof XSDElementDeclarationAdapter || movingObject instanceof XSDWildcard) {
        command = new XSDElementDragAndDropCommand(movingField, leftField, rightField, direction);
    } else if (movingObject instanceof XSDAttributeDeclarationAdapter) {
        command = new XSDAttributeDragAndDropCommand(movingField, leftField, rightField, direction);
    }
    if (command != null && command.canExecute()) {
        command.execute();
        // This is to reselect the moved item
        try {
            IEditorPart editor = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor();
            if (editor != null && editor.getAdapter(ISelectionProvider.class) != null) {
                ISelectionProvider provider = (ISelectionProvider) editor.getAdapter(ISelectionProvider.class);
                if (provider != null) {
                    provider.setSelection(new StructuredSelection(movingElement.getModel()));
                }
            }
        } catch (Exception e) {
        }
    }
}
Also used : KeyBoardAccessibilityEditPolicy(org.eclipse.wst.xsd.ui.internal.adt.design.editpolicies.KeyBoardAccessibilityEditPolicy) XSDBaseFieldEditPart(org.eclipse.wst.xsd.ui.internal.design.editparts.XSDBaseFieldEditPart) XSDAttributeDeclarationAdapter(org.eclipse.wst.xsd.ui.internal.adapters.XSDAttributeDeclarationAdapter) XSDBaseFieldEditPart(org.eclipse.wst.xsd.ui.internal.design.editparts.XSDBaseFieldEditPart) GraphicalEditPart(org.eclipse.gef.GraphicalEditPart) EditPart(org.eclipse.gef.EditPart) StructuredSelection(org.eclipse.jface.viewers.StructuredSelection) XSDWildcard(org.eclipse.xsd.XSDWildcard) IEditorPart(org.eclipse.ui.IEditorPart) XSDAttributeDragAndDropCommand(org.eclipse.wst.xsd.ui.internal.commands.XSDAttributeDragAndDropCommand) XSDElementDeclarationAdapter(org.eclipse.wst.xsd.ui.internal.adapters.XSDElementDeclarationAdapter) XSDElementDragAndDropCommand(org.eclipse.wst.xsd.ui.internal.commands.XSDElementDragAndDropCommand) ISelectionProvider(org.eclipse.jface.viewers.ISelectionProvider) BaseDragAndDropCommand(org.eclipse.wst.xsd.ui.internal.commands.BaseDragAndDropCommand)

Aggregations

GraphicalEditPart (org.eclipse.gef.GraphicalEditPart)2 XSDElementDeclarationAdapter (org.eclipse.wst.xsd.ui.internal.adapters.XSDElementDeclarationAdapter)2 BaseDragAndDropCommand (org.eclipse.wst.xsd.ui.internal.commands.BaseDragAndDropCommand)2 XSDAttributeDragAndDropCommand (org.eclipse.wst.xsd.ui.internal.commands.XSDAttributeDragAndDropCommand)2 XSDElementDragAndDropCommand (org.eclipse.wst.xsd.ui.internal.commands.XSDElementDragAndDropCommand)2 XSDBaseFieldEditPart (org.eclipse.wst.xsd.ui.internal.design.editparts.XSDBaseFieldEditPart)2 List (java.util.List)1 Point (org.eclipse.draw2d.geometry.Point)1 EditPart (org.eclipse.gef.EditPart)1 ChangeBoundsRequest (org.eclipse.gef.requests.ChangeBoundsRequest)1 ISelectionProvider (org.eclipse.jface.viewers.ISelectionProvider)1 StructuredSelection (org.eclipse.jface.viewers.StructuredSelection)1 IEditorPart (org.eclipse.ui.IEditorPart)1 XSDAttributeDeclarationAdapter (org.eclipse.wst.xsd.ui.internal.adapters.XSDAttributeDeclarationAdapter)1 XSDBaseAttributeAdapter (org.eclipse.wst.xsd.ui.internal.adapters.XSDBaseAttributeAdapter)1 KeyBoardAccessibilityEditPolicy (org.eclipse.wst.xsd.ui.internal.adt.design.editpolicies.KeyBoardAccessibilityEditPolicy)1 XSDWildcard (org.eclipse.xsd.XSDWildcard)1