1 8 package com.nightlabs.editor2d.tools; 9 10 import java.util.List ; 11 12 import org.eclipse.gef.tools.PanningSelectionTool; 13 import org.eclipse.swt.SWT; 14 import org.eclipse.swt.events.KeyEvent; 15 16 import com.nightlabs.editor2d.EditorStateManager; 17 import com.nightlabs.editor2d.request.EditorRequestConstants; 18 19 20 public class EditorSelectionTool 21 extends PanningSelectionTool 22 implements EditorRequestConstants 23 { 24 protected static final int STATE_ROTATE = PanningSelectionTool.MAX_STATE << 1; 25 protected static final int STATE_ROTATE_IN_PROGRESS = STATE_ROTATE << 1; 26 protected static final int MAX_STATE = STATE_ROTATE; 27 28 public EditorSelectionTool() { 29 super(); 30 } 31 32 protected boolean handleDoubleClick(int button) 33 { 34 if (EditorStateManager.getCurrentState() == EditorStateManager.STATE_NORMAL_SELECTION) 35 { 36 List selectedParts = getCurrentViewer().getSelectedEditParts(); 37 if (!selectedParts.isEmpty()) { 38 stateTransition(STATE_ROTATE, STATE_INITIAL); 39 EditorStateManager.setRotateMode(selectedParts); 40 } 41 } 42 else if (EditorStateManager.getCurrentState() == EditorStateManager.STATE_ROTATE) 43 { 44 List selectedParts = getCurrentViewer().getSelectedEditParts(); 45 if (!selectedParts.isEmpty()) { 46 stateTransition(STATE_ROTATE, STATE_INITIAL); 47 EditorStateManager.setNormalSelectionMode(selectedParts); 48 } 49 } 50 return true; 51 } 52 53 protected String getCommandName() 54 { 55 if (isInState(STATE_ROTATE) || isInState(STATE_ROTATE_IN_PROGRESS)) 56 return REQ_ROTATE; 57 58 return super.getCommandName(); 59 } 60 61 public void activate() 62 { 63 EditorStateManager.setCurrentState(EditorStateManager.STATE_NORMAL_SELECTION); 64 super.activate(); 65 } 66 67 protected boolean handleKeyDown(KeyEvent e) 68 { 69 if (e.character == SWT.ESC) 70 { 71 EditorStateManager.setCurrentState(EditorStateManager.STATE_NORMAL_SELECTION); 72 getCurrentViewer().deselectAll(); 73 } 74 75 return super.handleKeyDown(e); 76 } 77 78 } 79 | Popular Tags |