Tools are replaceable controller parts, which are used to process mouse, keyboard and drag and drop events dispatched to them by the controller. The base class for all tools is the abstract
NTool implements the core tool features, which each tool possesses. They are:
-
Name - each tool has a name, which can be modified from the
Name property. It is important to know that the names of the tools, which reside in the
NToolCollection (accessible from the
Tools property of the controller) must be unique. In fact the tools collection will not let you add a tool with a duplicate name.
-
Enabled/disabled state - in order for tools to activate they need to be enabled. This is controlled by the
Enabled property.
- Ability to Activate and Deactivate or Abort - tools can operate in two states - active and inactive. When a tool is active it will receive all view mouse and keyboard events. The transition between these states is performed by the Activate and Deactivate methods. You must call the CanActivate method prior to calling the Activate method and the CanDeactivate method prior to calling the Deactivate method. The actual work performed by tools, which can activate is performed by the Deactivate method. If a tool is active you can always abort it by calling its Abort method.
The type of the tool in general is determined by the interfaces it implements. Currently supported are the following primary types of tools:
Drag tools are Mouse and Keyboard tools, which can be activated and support double pass activation. The base class for such tools is the NDragTool abstract class (derived from NMouseAndKeyboardTool).
Since the controller is assigned to each NView instance, but tools need to know the actual view and document type (drawing or library), the component logically separates the tools by the instancable view type in which they can reside.
In this way all drawing tools derive from the base NDrawingMouseAndKeyboardTool, NDrawingDragDropTool and NDrawingDragTool. Analogously library tools derive from the base NLibraryMouseAndKeyboardTool, NLibraryDragDropTool and NLibraryDragTool.
As already mentioned the tool enabled/disabled state is determined by the value of its Enabled property. The NToolCollection however provides several methods, which help you enable/disable single or multiple tools by their names (that is why the name of the tool must be unique in the context of this collection).
It is important to know that the tool collection maintains a list of the tool names, which are considered to be ambient. The ambient tools are tools, which are by default enabled and are not disabled if you use the SingleEnableTool or SingleEnableTools methods to enable a configuration of tools. For example:
C# |
Copy Code
|
// enable only the rectangle tool, but do not disable the ambient tools
drawingView.Controller.Tools.SingleEnableTool(NDWFR.ToolCreateRectangle);
|
Visual Basic |
Copy Code
|
' enable only the rectangle tool, but do not disable the ambient tools
drawingView.Controller.Tools.SingleEnableTool(NDWFR.ToolCreateRectangle)
|
Following is a list of the currently available drawing tools:
Tool class |
Description |
General tools |
NSelectorTool |
Represents a tool, which is used to modify the selection |
NMoveTool |
Represents a tool, which is used to translate the selected elements inside the document or drag and drop them into another document. If the Control key is pressed it can also duplicate elements. |
NPanTool |
Represents a tool, which is used for the interactive scrolling of the view |
NHandleTool |
Represents a tool, which is used to drag handles |
NContextMenuTool |
Represents a tool, which is used to display context menus |
NInplaceEditTool |
Represents a tool, which is used for the inplace editing of nodes |
NKeyboardTool |
Represents a tool, which is used to process single key actions |
NMouseWheelScrollAndZoomTool
|
Represents a tool, which performs mouse wheel scrolling and zooming. Also implements anchor scrolling. |
Create element tools |
NCreateGuidelineTool |
Represents a tool, which is used to create new horizontal and vertical guidelines |
NCreateBezierCurveTool |
Represents a tool, which is used to create new bezier curves |
NCreateEllipseTool |
Represents a tool, which is used to create new ellipses |
NCreateEllipticalArcTool |
Represents a tool, which is used to create new elliptical arcs |
NCreateLineTool |
Represents a tool, which is used to create new lines |
NCreateRectangleTool |
Represents a tool, which is used to create new rectangles |
NCreateShapeTool |
Represents a tool, which is used to create new shapes |
NCreateTextTool |
Represents a tool, which is used to create new texts |
NCreateClosedCurveTool |
Represents a tool, which is used to create new closed curves |
NCreateCurveTool |
Represents a tool, which is used to create new curves |
NCreatePolygonTool |
Represents a tool, which is used to create new polygons |
NCreatePolylineTool |
Represents a tool, which is used to create new polylines |
Event delegator tools |
NMouseEventDelegatorTool |
Represents a tool, which delegates mouse events to the drawing document |
NKeyboardEventDelegatorTool |
Represents a tool, which delegates keyboard events to the drawing document |
NDragDropEventDelegatorTool |
Represents a tool, which delegates drag and drop events to the drawing document |
Related to drag drop |
NDragDropTargetTool |
Represents a tool, which is used to extend the drawing view as a drag drop target |
Following is a list of the currently available library tools:
Tool class |
Description |
General tools |
NLibrarySelectorTool |
Represents a tool, which is used to select masters |
NLibraryMoveTool |
Represents a tool, which is used to reorder selected masters inside the view, or drag and drop them into another document. If the Control key is pressed it can also duplicate masters. |
NLibraryContextMenuTool |
Represents a tool, which is used to display context menus |
NLibraryKeyboardTool |
Represents a tool, which is used to process single key actions |
NLibraryTooltipsTool |
Represents a tool, which displays tooltips for the library view items |
NLibraryMouseWheelScrollTool
|
Represents a tool which implements mouse wheel scrolling in the context of library views. Supports anchor scrolling. |
Related to drag drop |
NLibraryDropTargetTool |
Represents a tool, which is used to extend the library view as a drag drop target |