1 27 28 package org.nightlabs.editor2d.tools; 29 30 import java.util.List ; 31 32 import org.eclipse.gef.tools.PanningSelectionTool; 33 import org.eclipse.swt.SWT; 34 import org.eclipse.swt.events.KeyEvent; 35 36 import org.nightlabs.editor2d.EditorStateManager; 37 import org.nightlabs.editor2d.request.EditorRequestConstants; 38 39 40 public class EditorSelectionTool 41 extends PanningSelectionTool 42 implements EditorRequestConstants 43 { 44 protected static final int STATE_ROTATE = PanningSelectionTool.MAX_STATE << 1; 45 protected static final int STATE_ROTATE_IN_PROGRESS = STATE_ROTATE << 1; 46 protected static final int MAX_STATE = STATE_ROTATE; 47 48 public EditorSelectionTool() { 49 super(); 50 } 51 52 protected boolean handleDoubleClick(int button) 53 { 54 if (EditorStateManager.getCurrentState() == EditorStateManager.STATE_NORMAL_SELECTION) 55 { 56 List selectedParts = getCurrentViewer().getSelectedEditParts(); 57 if (!selectedParts.isEmpty()) { 58 stateTransition(STATE_ROTATE, STATE_INITIAL); 59 EditorStateManager.setRotateMode(selectedParts); 60 } 61 } 62 else if (EditorStateManager.getCurrentState() == EditorStateManager.STATE_ROTATE) 63 { 64 List selectedParts = getCurrentViewer().getSelectedEditParts(); 65 if (!selectedParts.isEmpty()) { 66 stateTransition(STATE_ROTATE, STATE_INITIAL); 67 EditorStateManager.setNormalSelectionMode(selectedParts); 68 } 69 } 70 return true; 71 } 72 73 protected String getCommandName() 74 { 75 if (isInState(STATE_ROTATE) || isInState(STATE_ROTATE_IN_PROGRESS)) 76 return REQ_ROTATE; 77 78 return super.getCommandName(); 79 } 80 81 public void activate() 82 { 83 EditorStateManager.setCurrentState(EditorStateManager.STATE_NORMAL_SELECTION); 84 super.activate(); 85 } 86 87 protected boolean handleKeyDown(KeyEvent e) 88 { 89 if (e.character == SWT.ESC) 90 { 91 EditorStateManager.setCurrentState(EditorStateManager.STATE_NORMAL_SELECTION); 92 getCurrentViewer().deselectAll(); 93 } 94 95 return super.handleKeyDown(e); 96 } 97 98 } 99 | Popular Tags |