/*******************************************************************************
* Copyright (c) 2000, 2005 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.gef.handles;
import java.util.List;
import org.eclipse.swt.graphics.Cursor;
import org.eclipse.draw2d.PositionConstants;
import org.eclipse.gef.DragTracker;
import org.eclipse.gef.GraphicalEditPart;
import org.eclipse.gef.Handle;
/**
* A set of utility methods to create Handles for the common
* locations on a figure's bounds.
* @see Handle
*/
public class ResizableHandleKit {
/**
* Adds a single handle in the given direction to the given List.
*
* @param part the owner GraphicalEditPart of the handle
* @param handles the List to add the handle to
* @param direction the integer constant from PositionConstants that refers to the handle
* direction
*/
public static void addHandle(GraphicalEditPart part, List handles, int direction) {
handles.add(createHandle(part, direction));
}
/**
* Adds a single handle in the given direction to the given List with the given
* DragTracker
*
* @param tracker the DragTracker to assign to this handle
* @param part the owner GraphicalEditPart of the handle
* @param handles the List to add the handle to
* @param direction the integer constant from PositionConstants that refers to the handle
* direction
* @param cursor the Cursor to use when hovering over this handle
*/
public static void addHandle(GraphicalEditPart part, List handles, int direction,
DragTracker tracker, Cursor cursor) {
handles.add(createHandle(part, direction, tracker, cursor));
}
/**
* Fills the given List with handles at each corner
* and the north, south, east, and west of the GraphicalEditPart.
* @param part the owner GraphicalEditPart of the handles
* @param handles the List to add the handles to
*/
public static void addHandles(GraphicalEditPart part, List handles) {
addMoveHandle(part, handles);
handles.add(createHandle(part, PositionConstants.EAST));
handles.add(createHandle(part, PositionConstants.SOUTH_EAST));
handles.add(createHandle(part, PositionConstants.SOUTH));
handles.add(createHandle(part, PositionConstants.SOUTH_WEST));
handles.add(createHandle(part, PositionConstants.WEST));
handles.add(createHandle(part, PositionConstants.NORTH_WEST));
handles.add(createHandle(part, PositionConstants.NORTH));
handles.add(createHandle(part, PositionConstants.NORTH_EAST));
}
/**
* Fills the given List with move borders at each side of a
* figure.
* @param f the GraphicalEditPart thatis the owner of the handles
* @param handles the List to add the handles to
*/
public static void addMoveHandle(GraphicalEditPart f, List handles) {
handles.add(moveHandle(f));
}
/**
* Fills the given List with move borders with the given DragTracker at each side of a
* figure.
* @param tracker the DragTracker to assign to this handle
* @param f the GraphicalEditPart thatis the owner of the handles
* @param handles the List to add the handles to
* @param cursor the Cursor to use when hovering over this handle
*/
public static void addMoveHandle(GraphicalEditPart f, List handles, DragTracker tracker,
Cursor cursor) {
handles.add(moveHandle(f, tracker, cursor));
}
static Handle createHandle(GraphicalEditPart owner, int direction) {
ResizeHandle handle = new ResizeHandle(owner, direction);
// handle.setDragTracker(new ResizeTracker(direction));
return handle;
}
static Handle createHandle(GraphicalEditPart owner, int direction, DragTracker tracker,
Cursor cursor) {
ResizeHandle handle = new ResizeHandle(owner, direction);
handle.setDragTracker(tracker);
handle.setCursor(cursor);
return handle;
}
/**
* Returns a new {@link MoveHandle} with the given owner.
* @param owner the GraphicalEditPart that is the owner of the new MoveHandle
* @return the new MoveHandle
*/
public static Handle moveHandle(GraphicalEditPart owner) {
return new MoveHandle(owner);
}
/**
* Returns a new {@link MoveHandle} with the given owner and DragTracker.
*
* @param tracker the DragTracker to assign to this handle
* @param owner the GraphicalEditPart that is the owner of the new MoveHandle
* @return the new MoveHandle
* @param cursor the Cursor to use when hovering over this handle
*/
public static Handle moveHandle(GraphicalEditPart owner, DragTracker tracker,
Cursor cursor) {
MoveHandle moveHandle = new MoveHandle(owner);
moveHandle.setDragTracker(tracker);
moveHandle.setCursor(cursor);
return moveHandle;
}
}