Class RescalingTool
A custom tool for rescaling an object.
Namespace: Northwoods.Go.Tools.Extensions
Assembly: RescalingAvalonia.dll
Syntax
public class RescalingTool : Tool
Remarks
Install the RescalingTool as a mouse-down tool by calling:
myDiagram.ToolManager.MouseDownTools.Add(new RescalingTool());
Normally it would not make sense for the same object to be both resizable and rescalable.
Note that there is no Part.RescaleElementName
property and there is no Part.Rescalable
property.
So although you cannot customize any Node to affect this tool, you can set
RescaleElementName and set IsEnabled to control
whether objects are rescalable and when.
Constructors
RescalingTool()
Constructs a RescalingTool.
Declaration
public RescalingTool()
Properties
AdornedElement
Gets the GraphObject that is being rescaled.
Declaration
public GraphObject AdornedElement { get; set; }
Property Value
Type | Description |
---|---|
GraphObject |
Remarks
This may be the same object as the selected Part or it may be contained within that Part.
This property is also settable, but should only be set when overriding functions in RescalingTool, and not during normal operation.
Handle
This property returns the GraphObject that is the tool handle being dragged by the user.
Declaration
public GraphObject Handle { get; set; }
Property Value
Type | Description |
---|---|
GraphObject |
Remarks
This will be contained by an Adornment whose category is "RescalingTool". Its AdornedElement is the same as the AdornedElement.
This property is also settable, but should only be set either within an override of DoActivate() or prior to calling DoActivate().
HandleArchetype
Gets or sets a small GraphObject that is copied as a rescale handle for the selected part.
Declaration
public Shape HandleArchetype { get; set; }
Property Value
Type | Description |
---|---|
Shape |
Remarks
By default this is a Shape that is a small blue square. Setting this property does not raise any events.
Here is an example of changing the default handle to be green "X":
tool.HandleArchetype =
new Shape("XLine")
{ Width = 8, Height = 8, Stroke = "green", Fill = "transparent" };
RescaleElementName
This property returns the name of the GraphObject that identifies the object to be rescaled by this tool.
Declaration
public string RescaleElementName { get; set; }
Property Value
Type | Description |
---|---|
string |
Remarks
The default value is the empty string, resulting in the whole Node being rescaled. This property is used by FindRescaleElement when calling FindElement(string).
Methods
CanStart()
This tool can start running if the mouse-down happens on a "Rescaling" handle.
Declaration
public override bool CanStart()
Returns
Type | Description |
---|---|
bool |
Overrides
ComputeScale(Point)
Compute the new scale given a point.
Declaration
public double ComputeScale(Point newPoint)
Parameters
Type | Name | Description |
---|---|---|
Point | newPoint |
Returns
Type | Description |
---|---|
double |
Remarks
This method is called by both DoMouseMove() and DoMouseUp(). This method may be overridden. Please read the Introduction page on Extensions for how to override methods and how to call this base method.
DoActivate()
Activating this tool remembers the Handle that was dragged, the AdornedElement that is being rescaled, starts a transaction, and captures the mouse.
Declaration
public override void DoActivate()
Overrides
DoCancel()
Restore the original Scale of the adorned object.
Declaration
public override void DoCancel()
Overrides
DoDeactivate()
Stop the current transaction, forget the Handle and AdornedElement, and release the mouse.
Declaration
public override void DoDeactivate()
Overrides
DoMouseMove()
Call Scale(double) with a new scale determined by the current mouse point. This determines the new scale by calling ComputeScale(Point).
Declaration
public override void DoMouseMove()
Overrides
DoMouseUp()
Call Scale(double) with a new scale determined by the most recent mouse point, and commit the transaction.
Declaration
public override void DoMouseUp()
Overrides
FindRescaleElement(Part)
Return the GraphObject to be rescaled by the user.
Declaration
public GraphObject FindRescaleElement(Part part)
Parameters
Type | Name | Description |
---|---|---|
Part | part |
Returns
Type | Description |
---|---|
GraphObject |
Scale(double)
Set the Scale of the FindRescaleElement(Part).
Declaration
public void Scale(double newScale)
Parameters
Type | Name | Description |
---|---|---|
double | newScale |
UpdateAdornments(Part)
The diagram asks each tool to update any adornments the tool might use for a given part.
Declaration
public override void UpdateAdornments(Part part)
Parameters
Type | Name | Description |
---|---|---|
Part | part |
Overrides
Remarks
If the tool uses its own tool handles, this should display them or hide them as appropriate. Typically this should only show them if the part is selected.
By default this method does nothing.
This method may be overridden. Please read the Introduction page on Extensions for how to override methods and how to call this base method.