1 8 package com.nightlabs.editor2d.tools; 9 10 import java.util.List ; 11 12 import org.eclipse.draw2d.PositionConstants; 13 import org.eclipse.gef.GraphicalEditPart; 14 import org.eclipse.gef.Request; 15 import org.eclipse.swt.graphics.Cursor; 16 17 import com.nightlabs.editor2d.custom.EditorCursors; 18 import com.nightlabs.editor2d.edit.AbstractDrawComponentEditPart; 19 import com.nightlabs.editor2d.request.EditorShearRequest; 20 import com.nightlabs.editor2d.util.J2DUtil; 21 22 23 public class ShearTracker 24 extends AbstractDragTracker 25 { 26 protected int direction; 27 28 31 public ShearTracker(GraphicalEditPart owner, int direction) { 32 super(owner); 33 this.direction = direction; 34 } 35 36 39 protected Request createSourceRequest() 40 { 41 EditorShearRequest request = new EditorShearRequest(); 42 request.setType(REQ_SHEAR); 43 request.setLocation(getLocation()); 44 request.setDirection(direction); 45 List selectedParts = getCurrentViewer().getSelectedEditParts(); 46 if (!selectedParts.isEmpty()) { 47 AbstractDrawComponentEditPart part = (AbstractDrawComponentEditPart) selectedParts.get(0); 48 request.setShearBounds(J2DUtil.toDraw2D(part.getDrawComponent().getBounds())); 49 } 50 request.setEditParts(selectedParts); 51 return request; 52 } 53 54 57 protected void updateSourceRequest() 58 { 59 getEditorShearRequest().setLocation(getLocation()); 63 } 64 65 protected EditorShearRequest getEditorShearRequest() { 66 return (EditorShearRequest) getSourceRequest(); 67 } 68 69 72 protected String getCommandName() { 73 return REQ_SHEAR; 74 } 75 76 79 protected Cursor getDefaultCursor() 80 { 81 switch(direction) 82 { 83 case(PositionConstants.NORTH): 84 case(PositionConstants.SOUTH): 85 return EditorCursors.SHEAR_HORIZONTAL; 86 case(PositionConstants.WEST): 87 case(PositionConstants.EAST): 88 return EditorCursors.SHEAR_VERTICAL; 89 } 90 return EditorCursors.NO; 91 } 92 } 93 | Popular Tags |