diff options
Diffstat (limited to 'bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/commands/XSDAttributeDragAndDropCommand.java')
-rw-r--r-- | bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/commands/XSDAttributeDragAndDropCommand.java | 259 |
1 files changed, 0 insertions, 259 deletions
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/commands/XSDAttributeDragAndDropCommand.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/commands/XSDAttributeDragAndDropCommand.java deleted file mode 100644 index 7c09eb072b..0000000000 --- a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/commands/XSDAttributeDragAndDropCommand.java +++ /dev/null @@ -1,259 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2007, 2009 IBM Corporation and others. - * 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: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.wst.xsd.ui.internal.commands; - -import java.util.ArrayList; -import java.util.Iterator; -import java.util.List; - -import org.eclipse.draw2d.PositionConstants; -import org.eclipse.draw2d.geometry.Point; -import org.eclipse.gef.EditPart; -import org.eclipse.gef.EditPartViewer; -import org.eclipse.gef.GraphicalEditPart; -import org.eclipse.gef.requests.ChangeBoundsRequest; -import org.eclipse.wst.xsd.ui.internal.actions.MoveXSDAttributeAction; -import org.eclipse.wst.xsd.ui.internal.adapters.XSDAttributeDeclarationAdapter; -import org.eclipse.wst.xsd.ui.internal.adapters.XSDWildcardAdapter; -import org.eclipse.wst.xsd.ui.internal.adt.design.editparts.BaseFieldEditPart; -import org.eclipse.wst.xsd.ui.internal.adt.design.editparts.CompartmentEditPart; -import org.eclipse.wst.xsd.ui.internal.adt.design.editparts.ComplexTypeEditPart; -import org.eclipse.wst.xsd.ui.internal.design.editparts.AttributeGroupDefinitionEditPart; -import org.eclipse.wst.xsd.ui.internal.design.editparts.TargetConnectionSpacingFigureEditPart; -import org.eclipse.wst.xsd.ui.internal.design.editparts.XSDAttributesForAnnotationEditPart; -import org.eclipse.wst.xsd.ui.internal.design.editparts.XSDBaseFieldEditPart; -import org.eclipse.wst.xsd.ui.internal.design.figures.GenericGroupFigure; -import org.eclipse.wst.xsd.ui.internal.editor.Messages; -import org.eclipse.xsd.XSDAttributeDeclaration; -import org.eclipse.xsd.XSDConcreteComponent; -import org.eclipse.xsd.XSDWildcard; -import org.w3c.dom.Element; - -public class XSDAttributeDragAndDropCommand extends BaseDragAndDropCommand -{ - public XSDAttributeDragAndDropCommand(EditPartViewer viewer, ChangeBoundsRequest request, GraphicalEditPart target, XSDBaseFieldEditPart itemToDrag, Point location) - { - super(viewer, request); - setLabel(Messages._UI_ACTION_DRAG_DROP_ATTRIBUTE); - this.target = target; - this.itemToDrag = itemToDrag; - this.location = location; - setup(); - } - - public XSDAttributeDragAndDropCommand(XSDBaseFieldEditPart itemToDrag, XSDBaseFieldEditPart leftField, XSDBaseFieldEditPart rightField, int direction) - { - super(itemToDrag.getViewer(), null); - setLabel(Messages._UI_ACTION_DRAG_DROP_ATTRIBUTE); - this.itemToDrag = itemToDrag; - canExecute = false; - handleKeyboardDragAndDrop(leftField, rightField, direction); - } - - protected void handleKeyboardDragAndDrop(XSDBaseFieldEditPart leftField, XSDBaseFieldEditPart rightField, int direction) - { - super.handleKeyboardDragAndDrop(leftField, rightField, direction); - if (direction == PositionConstants.NORTH) - { - if (target == null) - { - target = rightField; - this.location = target.getFigure().getBounds().getTop(); - } - else if (!(leftField.getModel() instanceof XSDAttributeDeclarationAdapter) - || leftField.getModel() instanceof XSDWildcardAdapter) - { - target = rightField; - this.location = target.getFigure().getBounds().getTop(); - } - } - if (location == null) return; - setup(); - } - - protected void setup() - { - canExecute = false; - - // Drop target is attribute group ref - if (target instanceof AttributeGroupDefinitionEditPart) - { - parentEditPart = (AttributeGroupDefinitionEditPart) target; - if (((GenericGroupFigure) parentEditPart.getFigure()).getIconFigure().getBounds().contains(location)) - { - xsdComponentToDrag = (XSDConcreteComponent) ((XSDAttributeDeclarationAdapter) itemToDrag.getModel()).getTarget(); - action = new MoveXSDAttributeAction(((AttributeGroupDefinitionEditPart) parentEditPart).getXSDAttributeGroupDefinition(), xsdComponentToDrag, null, null); - canExecute = action.canMove(); - } - } - else if (target instanceof BaseFieldEditPart) - { - targetSpacesList = new ArrayList(); - // Calculate the list of all sibling field edit parts; - List targetEditPartSiblings = calculateFieldEditParts(); - calculateAttributeGroupList(); - - // Get 'left' and 'right' siblings - doDrop(targetEditPartSiblings, itemToDrag); - } - } - - /* - * (non-Javadoc) - * @see org.eclipse.wst.xsd.ui.internal.commands.BaseDragAndDropCommand#getElement() - */ - protected Element getElement() - { - XSDAttributeDeclarationAdapter adapter = (XSDAttributeDeclarationAdapter) itemToDrag.getModel(); - XSDAttributeDeclaration target = (XSDAttributeDeclaration)adapter.getTarget(); - XSDConcreteComponent parent = (XSDConcreteComponent)target.eContainer(); - return parent.getElement(); - } - - protected void doDrop(List siblings, GraphicalEditPart movingEditPart) - { - commonSetup(siblings, movingEditPart); - - if ((previousRefComponent instanceof XSDAttributeDeclaration || previousRefComponent instanceof XSDWildcard) - && (nextRefComponent instanceof XSDAttributeDeclaration || nextRefComponent instanceof XSDWildcard)) - { - XSDConcreteComponent parent = previousRefComponent.getContainer().getContainer(); - if (closerSibling == BELOW_IS_CLOSER) - { - parent = nextRefComponent.getContainer().getContainer(); - } - action = new MoveXSDAttributeAction(parent, xsdComponentToDrag, previousRefComponent, nextRefComponent); - } - else if (previousRefComponent == null && (nextRefComponent instanceof XSDAttributeDeclaration || nextRefComponent instanceof XSDWildcard)) - { - XSDConcreteComponent parent = nextRefComponent.getContainer().getContainer(); - if (closerSibling == ABOVE_IS_CLOSER) - { - if (leftSiblingEditPart == null) - { - action = new MoveXSDAttributeAction(parent, xsdComponentToDrag, previousRefComponent, nextRefComponent); - } - else if (parentEditPart != null) - { - action = new MoveXSDAttributeAction(parentEditPart.getXSDConcreteComponent(), xsdComponentToDrag, previousRefComponent, nextRefComponent); - } - } - else - { - action = new MoveXSDAttributeAction(parent, xsdComponentToDrag, previousRefComponent, nextRefComponent); - } - } - else if (previousRefComponent instanceof XSDAttributeDeclaration && nextRefComponent == null) - { - XSDConcreteComponent parent = previousRefComponent.getContainer().getContainer(); - if (closerSibling == ABOVE_IS_CLOSER) - { - action = new MoveXSDAttributeAction(parent, xsdComponentToDrag, previousRefComponent, nextRefComponent); - } - else - { - if (rightSiblingEditPart == null) - { - action = new MoveXSDAttributeAction(parent, xsdComponentToDrag, previousRefComponent, nextRefComponent); - } - else - { - action = new MoveXSDAttributeAction(parent, xsdComponentToDrag, previousRefComponent, nextRefComponent); - } - } - } - - if (action != null) - canExecute = action.canMove(); - } - - - // Attribute Group related helper method - - protected void calculateAttributeGroupList() - { - EditPart editPart = target; - while (editPart != null) - { - if (editPart instanceof ComplexTypeEditPart) - { - List list = editPart.getChildren(); - for (Iterator i = list.iterator(); i.hasNext();) - { - Object child = i.next(); - if (child instanceof CompartmentEditPart) - { - List compartmentList = ((CompartmentEditPart) child).getChildren(); - for (Iterator it = compartmentList.iterator(); it.hasNext();) - { - Object obj = it.next(); - if (obj instanceof XSDAttributesForAnnotationEditPart) - { - XSDAttributesForAnnotationEditPart groups = (XSDAttributesForAnnotationEditPart) obj; - List groupList = groups.getChildren(); - for (Iterator iter = groupList.iterator(); iter.hasNext();) - { - Object groupChild = iter.next(); - if (groupChild instanceof TargetConnectionSpacingFigureEditPart) - { - targetSpacesList.add(groupChild); - } - else if (groupChild instanceof AttributeGroupDefinitionEditPart) - { - getAttributeGroupEditParts((AttributeGroupDefinitionEditPart) groupChild); - } - } - } - } - } - } - } - editPart = editPart.getParent(); - } - - } - - // Attribute Group related helper method - - protected List getAttributeGroupEditParts(AttributeGroupDefinitionEditPart attributeGroupEditPart) - { - List groupList = new ArrayList(); - List list = attributeGroupEditPart.getChildren(); - for (Iterator i = list.iterator(); i.hasNext();) - { - Object object = i.next(); - if (object instanceof TargetConnectionSpacingFigureEditPart) - { - targetSpacesList.add(object); - } - else if (object instanceof AttributeGroupDefinitionEditPart) - { - AttributeGroupDefinitionEditPart groupRef = (AttributeGroupDefinitionEditPart) object; - List groupRefChildren = groupRef.getChildren(); - for (Iterator it = groupRefChildren.iterator(); it.hasNext();) - { - Object o = it.next(); - if (o instanceof TargetConnectionSpacingFigureEditPart) - { - targetSpacesList.add(o); - } - else if (o instanceof AttributeGroupDefinitionEditPart) - { - AttributeGroupDefinitionEditPart aGroup = (AttributeGroupDefinitionEditPart) o; - groupList.add(aGroup); - groupList.addAll(getAttributeGroupEditParts(aGroup)); - } - } - } - } - return groupList; - } -} |