001: /*
002: * uDig - User Friendly Desktop Internet GIS client
003: * http://udig.refractions.net
004: * (C) 2004, Refractions Research Inc.
005: *
006: * This library is free software; you can redistribute it and/or
007: * modify it under the terms of the GNU Lesser General Public
008: * License as published by the Free Software Foundation;
009: * version 2.1 of the License.
010: *
011: * This library is distributed in the hope that it will be useful,
012: * but WITHOUT ANY WARRANTY; without even the implied warranty of
013: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
014: * Lesser General Public License for more details.
015: *
016: */
017: package net.refractions.udig.project.ui.tool;
018:
019: /**
020: * A ModalTool is a tool which "takes control" of operation. An example is the zoom tool. If the
021: * zoom tool is "on" then other tools modal tools must be off.
022: * <p>
023: * Must have a public default constructor so that the plugin frame work can instantiate the class.
024: * </p>
025: * Contains the following properties:
026: * <ul>
027: * <li><b>ToolConstants.DEFAULT_CURSOR_ID_KEY</b> - the cursor ID value from "toolCursorId"
028: * attribute of "modalTool" extension</li>
029: *
030: * </ul>
031: * <p>
032: *
033: * @see net.refractions.udig.project.ui.tool.AbstractModalTool
034: * @author Jesse Eichar
035: * @version $Revision: 1.9 $
036: */
037: public interface ModalTool extends Tool {
038:
039: /**
040: * The default cursor type (gets set if no cursor is defined).
041: */
042: public static final String DEFAULT_CURSOR = "default"; //$NON-NLS-1$
043:
044: /**
045: * The crosshair cursor type.
046: */
047: public static final String CROSSHAIR_CURSOR = "crosshair"; //$NON-NLS-1$
048:
049: /**
050: * The text cursor type.
051: */
052: public static final String TEXT_CURSOR = "text"; //$NON-NLS-1$
053:
054: /**
055: * The wait cursor type.
056: */
057: public static final String WAIT_CURSOR = "wait"; //$NON-NLS-1$
058:
059: /**
060: * The south-west-resize cursor type.
061: */
062: public static final String SW_RESIZE_CURSOR = "sw_resize"; //$NON-NLS-1$
063:
064: /**
065: * The south-east-resize cursor type.
066: */
067: public static final String SE_RESIZE_CURSOR = "se_resize"; //$NON-NLS-1$
068:
069: /**
070: * The north-west-resize cursor type.
071: */
072: public static final String NW_RESIZE_CURSOR = "nw_resize"; //$NON-NLS-1$
073:
074: /**
075: * The north-east-resize cursor type.
076: */
077: public static final String NE_RESIZE_CURSOR = "ne_resize"; //$NON-NLS-1$
078:
079: /**
080: * The north-resize cursor type.
081: */
082: public static final String N_RESIZE_CURSOR = "n_resize"; //$NON-NLS-1$
083:
084: /**
085: * The south-resize cursor type.
086: */
087: public static final String S_RESIZE_CURSOR = "s_resize"; //$NON-NLS-1$
088:
089: /**
090: * The west-resize cursor type.
091: */
092: public static final String W_RESIZE_CURSOR = "w_resize"; //$NON-NLS-1$
093:
094: /**
095: * The east-resize cursor type.
096: */
097: public static final String E_RESIZE_CURSOR = "e_resize"; //$NON-NLS-1$
098:
099: /**
100: * The hand cursor type.
101: */
102: public static final String HAND_CURSOR = "hand"; //$NON-NLS-1$
103:
104: /**
105: * The move cursor type.
106: */
107: public static final String MOVE_CURSOR = "move"; //$NON-NLS-1$
108:
109: public static final String NO_CURSOR = "no"; //$NON-NLS-1$
110:
111: /**
112: * Called when tool button is pressed. If active is set to true the tool is Registered with the
113: * source Component so that it receives events and will begin operating If active is set to
114: * false the tool is set as inactive and deregistered with the component.
115: *
116: * @param active if true the tool is Registered with the source Component so that it receives
117: * events and will begin operating. if false the tool is set as inactive and deregistered
118: * with the component.
119: */
120: public void setActive(boolean active);
121:
122: /**
123: * Returns true if the current tool is active.
124: *
125: * @return
126: */
127: public boolean isActive();
128:
129: /**
130: * Returns current cursor ID of the modal tool.
131: *
132: * @return
133: */
134: public String getCursorID();
135:
136: /**
137: * Sets the current cursor ID for the modal tool. If it is needed
138: * the actual updating of the mouse cursor is performed automatically.
139: *
140: *
141: * @param id the cursor ID from <code>net.refractions.udig.project.ui.tool.toolCursor</code>
142: * extension or the constant from <code>ModalTool</code> interface.
143: *
144: */
145: public void setCursorID(String id);
146:
147: /**
148: * Sets tool's selection provider.
149: * <p>
150: * Usually it is configured through extension point.
151: *
152: * @param selectionProvider
153: */
154: public void setSelectionProvider(
155: IMapEditorSelectionProvider selectionProvider);
156:
157: /**
158: * Returns tool's selection provider.
159: * <p>
160: * Now the modal tool may have 0..1 of selection providers.
161: *
162: *
163: * @return the modal tool's selection provider.
164: */
165: public IMapEditorSelectionProvider getSelectionProvider();
166:
167: }
|