Diagram for .NET / User's Guide / WinForm Components / Tools

Tools
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 class.
 Common Tool Features

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.
 Types of Tools

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.

 Enabling and Disabling Tools

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)
 Currently Available Drawing Tools

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

 Currently Available Library Tools

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

 Related Examples
Windows Forms: Drawing View - Controller 
Windows Forms: Drawing View - Events Processing, Delegation and Bubbling
See Also