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: * The general interface for editing tools. Standard tools are the Zoom and Pan tools.
021: * <p>
022: * Must have a public default constructor so that the plugin frame work can instantiate the class.
023: * </p>
024: *
025: * @see net.refractions.udig.project.ui.tool.AbstractTool
026: * @author Jesse Eichar
027: * @version $Revision: 1.9 $
028: */
029: public interface Tool {
030:
031: /** Tool category for tools that do not modify. Examples are Pan and Zoom */
032: public final static String VIEW = "view"; //$NON-NLS-1$
033: /** Tool category for tools that modify. Examples are Add Vertex and Add Feature */
034: public final static String EDIT = "edit"; //$NON-NLS-1$
035: /** The extension point id for tools */
036: public static final String EXTENSION_ID = "net.refractions.udig.project.ui.tool"; //$NON-NLS-1$
037:
038: /**
039: * Releases resource, Cursor and image resources possibly.
040: */
041: public void dispose();
042:
043: /**
044: * Called each time an eclipse editor is activated. The RenderManager and ViewportPane are those
045: * that are associated with the newly actived Eclipse view. Intended to be used if something
046: * other just changing the current state happens. if false the tool is set as inactive and
047: * deregistered with the component.
048: *
049: * @param tools The tools that the tool can use in its operations
050: * @see IToolContext
051: */
052: public void setContext(IToolContext tools);
053:
054: /**
055: * Returns the AbstractContext that a tool can use in its operations.
056: *
057: * @return the AbstractContext that a tool can use in its operations.
058: * @see IToolContext
059: */
060: public IToolContext getContext();
061:
062: /**
063: * Returns the property of the particular tool implementation.
064: * <p>
065: *
066: * @param key the property key.
067: * @return
068: */
069: public Object getProperty(String key);
070:
071: /**
072: * Sets the tool's property value by key.
073: *
074: * @param key
075: * @param value
076: */
077: public void setProperty(String key, Object value);
078:
079: /**
080: * Returns enablement statement of the tool.
081: *
082: * @return
083: */
084: public boolean isEnabled();
085:
086: /**
087: * Sets enablement of the tool.
088: *
089: * @param enable
090: */
091: public void setEnabled(boolean enable);
092:
093: /**
094: * Adds listener of tool's lifecycle.
095: *
096: * @param listener
097: */
098: public void addListener(ToolLifecycleListener listener);
099:
100: /**
101: * Removes a listener of tool's lifecycle.
102: *
103: * @param listener
104: */
105: public void removeListener(ToolLifecycleListener listener);
106:
107: }
|