Imports EgtUILib Namespace EgtCAM5 Public Class DrawPanelViewModel Inherits ViewModelBase ' Definizione comandi Private m_cmdPoint As ICommand Private m_cmdLine2P As ICommand Private m_cmdLinePDL As ICommand Private m_cmdCircle As ICommand Private m_cmdArcCSE As ICommand Private m_cmdArc3P As ICommand Private m_cmdArcPDP As ICommand Private m_cmdFillet As ICommand Private m_cmdRectangle2P As ICommand Private m_cmdPolygon As ICommand Private m_cmdText As ICommand Private m_cmdPlane As ICommand Private m_cmdExtrude As ICommand Private m_cmdRevolve As ICommand Private m_cmdScrew As ICommand Private m_cmdRuled As ICommand Private m_cmdMergeSurf As ICommand Private m_cmdExplodeSurf As ICommand Private m_cmdInvertSurf As ICommand Private m_cmdDelete As ICommand Private m_cmdChangeLayer As ICommand Private m_cmdChangeColor As ICommand Private m_cmdInvertCurve As ICommand Private m_cmdChangeStartCurve As ICommand Private m_cmdExtendCurve As ICommand Private m_cmdBreakCurve As ICommand Private m_cmdJoinCurve As ICommand Private m_cmdExplodeCurve As ICommand Private m_cmdSetCurveTh As ICommand Private m_cmdMove As ICommand Private m_cmdRotate As ICommand Private m_cmdMirror As ICommand Private m_cmdScale As ICommand Private m_cmdOffset As ICommand Sub New() End Sub #Region "PointCommand" ''' ''' Returns a command that do Point. ''' Public ReadOnly Property PointCommand As ICommand Get If m_cmdPoint Is Nothing Then m_cmdPoint = New RelayCommand(AddressOf Point, AddressOf CanPoint) End If Return m_cmdPoint End Get End Property ''' ''' Execute the Point. This method is invoked by the PointCommand. ''' Public Sub Point(ByVal param As Object) Application.Msn.NotifyColleagues(Application.POINT) End Sub ''' ''' Returns always true. ''' Private Function CanPoint(ByVal param As Object) As Boolean Return True End Function #End Region ' PointCommand #Region "Line2PCommand" ''' ''' Returns a command that do Line2P. ''' Public ReadOnly Property Line2PCommand As ICommand Get If m_cmdLine2P Is Nothing Then m_cmdLine2P = New RelayCommand(AddressOf Line2P, AddressOf CanLine2P) End If Return m_cmdLine2P End Get End Property ''' ''' Execute the Line2P. This method is invoked by the Line2PCommand. ''' Public Sub Line2P(ByVal param As Object) Application.Msn.NotifyColleagues(Application.LINE2P) End Sub ''' ''' Returns always true. ''' Private Function CanLine2P(ByVal param As Object) As Boolean Return True End Function #End Region ' Line2PCommand #Region "LinePDLCommand" ''' ''' Returns a command that do LinePDL. ''' Public ReadOnly Property LinePDLCommand As ICommand Get If m_cmdLinePDL Is Nothing Then m_cmdLinePDL = New RelayCommand(AddressOf LinePDL, AddressOf CanLinePDL) End If Return m_cmdLinePDL End Get End Property ''' ''' Execute the LinePDL. This method is invoked by the LinePDLCommand. ''' Public Sub LinePDL(ByVal param As Object) Application.Msn.NotifyColleagues(Application.LINEPDL) End Sub ''' ''' Returns always true. ''' Private Function CanLinePDL(ByVal param As Object) As Boolean Return True End Function #End Region ' LinePDLCommand #Region "CircleCommand" ''' ''' Returns a command that do Circle. ''' Public ReadOnly Property CircleCommand As ICommand Get If m_cmdCircle Is Nothing Then m_cmdCircle = New RelayCommand(AddressOf Circle, AddressOf CanCircle) End If Return m_cmdCircle End Get End Property ''' ''' Execute the Circle. This method is invoked by the CircleCommand. ''' Public Sub Circle(ByVal param As Object) Application.Msn.NotifyColleagues(Application.CIRCLE) End Sub ''' ''' Returns always true. ''' Private Function CanCircle(ByVal param As Object) As Boolean Return True End Function #End Region ' CircleCommand #Region "ArcCSECommand" ''' ''' Returns a command that do ArcCSE. ''' Public ReadOnly Property ArcCSECommand As ICommand Get If m_cmdArcCSE Is Nothing Then m_cmdArcCSE = New RelayCommand(AddressOf ArcCSE, AddressOf CanArcCSE) End If Return m_cmdArcCSE End Get End Property ''' ''' Execute the ArcCSE. This method is invoked by the ArcCSECommand. ''' Public Sub ArcCSE(ByVal param As Object) Application.Msn.NotifyColleagues(Application.EXECUTECOMMAND, Controller.CMD.ARCCSE) End Sub ''' ''' Returns always true. ''' Private Function CanArcCSE(ByVal param As Object) As Boolean Return True End Function #End Region ' ArcCSECommand #Region "Arc3PCommand" ''' ''' Returns a command that do Arc3P. ''' Public ReadOnly Property Arc3PCommand As ICommand Get If m_cmdArc3P Is Nothing Then m_cmdArc3P = New RelayCommand(AddressOf Arc3P, AddressOf CanArc3P) End If Return m_cmdArc3P End Get End Property ''' ''' Execute the Arc3P. This method is invoked by the Arc3PCommand. ''' Public Sub Arc3P(ByVal param As Object) Application.Msn.NotifyColleagues(Application.EXECUTECOMMAND, Controller.CMD.ARC3P) End Sub ''' ''' Returns always true. ''' Private Function CanArc3P(ByVal param As Object) As Boolean Return True End Function #End Region ' Arc3PCommand #Region "ArcPDPCommand" ''' ''' Returns a command that do ArcPDP. ''' Public ReadOnly Property ArcPDPCommand As ICommand Get If m_cmdArcPDP Is Nothing Then m_cmdArcPDP = New RelayCommand(AddressOf ArcPDP, AddressOf CanArcPDP) End If Return m_cmdArcPDP End Get End Property ''' ''' Execute the ArcPDP. This method is invoked by the ArcPDPCommand. ''' Public Sub ArcPDP(ByVal param As Object) Application.Msn.NotifyColleagues(Application.ARCPDP) End Sub ''' ''' Returns always true. ''' Private Function CanArcPDP(ByVal param As Object) As Boolean Return True End Function #End Region ' ArcPDPCommand #Region "FilletCommand" ''' ''' Returns a command that do Fillet. ''' Public ReadOnly Property FilletCommand As ICommand Get If m_cmdFillet Is Nothing Then m_cmdFillet = New RelayCommand(AddressOf Fillet, AddressOf CanFillet) End If Return m_cmdFillet End Get End Property ''' ''' Execute the Fillet. This method is invoked by the FilletCommand. ''' Public Sub Fillet(ByVal param As Object) Application.Msn.NotifyColleagues(Application.FILLET) End Sub ''' ''' Returns always true. ''' Private Function CanFillet(ByVal param As Object) As Boolean Return True End Function #End Region ' FilletCommand #Region "Rectangle2PCommand" ''' ''' Returns a command that do Rectangle2P. ''' Public ReadOnly Property Rectangle2PCommand As ICommand Get If m_cmdRectangle2P Is Nothing Then m_cmdRectangle2P = New RelayCommand(AddressOf Rectangle2P, AddressOf CanRectangle2P) End If Return m_cmdRectangle2P End Get End Property ''' ''' Execute the Rectangle2P. This method is invoked by the Rectangle2PCommand. ''' Public Sub Rectangle2P(ByVal param As Object) Application.Msn.NotifyColleagues(Application.EXECUTECOMMAND, Controller.CMD.RECTANGLE2P) End Sub ''' ''' Returns always true. ''' Private Function CanRectangle2P(ByVal param As Object) As Boolean Return True End Function #End Region ' Rectangle2PCommand #Region "PolygonCommand" ''' ''' Returns a command that do Polygon. ''' Public ReadOnly Property PolygonCommand As ICommand Get If m_cmdPolygon Is Nothing Then m_cmdPolygon = New RelayCommand(AddressOf Polygon, AddressOf CanPolygon) End If Return m_cmdPolygon End Get End Property ''' ''' Execute the Polygon. This method is invoked by the PolygonCommand. ''' Public Sub Polygon(ByVal param As Object) Application.Msn.NotifyColleagues(Application.POLYGON) End Sub ''' ''' Returns always true. ''' Private Function CanPolygon(ByVal param As Object) As Boolean Return True End Function #End Region ' PolygonCommand #Region "TextCommand" ''' ''' Returns a command that do Text. ''' Public ReadOnly Property TextCommand As ICommand Get If m_cmdText Is Nothing Then m_cmdText = New RelayCommand(AddressOf Text, AddressOf CanText) End If Return m_cmdText End Get End Property ''' ''' Execute the Text. This method is invoked by the TextCommand. ''' Public Sub Text(ByVal param As Object) Application.Msn.NotifyColleagues(Application.TEXT) End Sub ''' ''' Returns always true. ''' Private Function CanText(ByVal param As Object) As Boolean Return True End Function #End Region ' TextCommand #Region "PlaneCommand" ''' ''' Returns a command that do Plane. ''' Public ReadOnly Property PlaneCommand As ICommand Get If m_cmdPlane Is Nothing Then m_cmdPlane = New RelayCommand(AddressOf Plane, AddressOf CanPlane) End If Return m_cmdPlane End Get End Property ''' ''' Execute the Plane. This method is invoked by the PlaneCommand. ''' Public Sub Plane(ByVal param As Object) Application.Msn.NotifyColleagues(Application.PLANE) End Sub ''' ''' Returns always true. ''' Private Function CanPlane(ByVal param As Object) As Boolean Return True End Function #End Region ' PlaneCommand #Region "ExtrudeCommand" ''' ''' Returns a command that do Extrude. ''' Public ReadOnly Property ExtrudeCommand As ICommand Get If m_cmdExtrude Is Nothing Then m_cmdExtrude = New RelayCommand(AddressOf Extrude, AddressOf CanExtrude) End If Return m_cmdExtrude End Get End Property ''' ''' Execute the Extrude. This method is invoked by the ExtrudeCommand. ''' Public Sub Extrude(ByVal param As Object) Application.Msn.NotifyColleagues(Application.EXECUTECOMMAND, Controller.CMD.EXTRUDE) End Sub ''' ''' Returns always true. ''' Private Function CanExtrude(ByVal param As Object) As Boolean Return True End Function #End Region ' ExtrudeCommand #Region "RevolveCommand" ''' ''' Returns a command that do Revolve. ''' Public ReadOnly Property RevolveCommand As ICommand Get If m_cmdRevolve Is Nothing Then m_cmdRevolve = New RelayCommand(AddressOf Revolve, AddressOf CanRevolve) End If Return m_cmdRevolve End Get End Property ''' ''' Execute the Revolve. This method is invoked by the RevolveCommand. ''' Public Sub Revolve(ByVal param As Object) Application.Msn.NotifyColleagues(Application.EXECUTECOMMAND, Controller.CMD.REVOLVE) End Sub ''' ''' Returns always true. ''' Private Function CanRevolve(ByVal param As Object) As Boolean Return True End Function #End Region ' RevolveCommand #Region "ScrewCommand" ''' ''' Returns a command that do Screw. ''' Public ReadOnly Property ScrewCommand As ICommand Get If m_cmdScrew Is Nothing Then m_cmdScrew = New RelayCommand(AddressOf Screw, AddressOf CanScrew) End If Return m_cmdScrew End Get End Property ''' ''' Execute the Screw. This method is invoked by the ScrewCommand. ''' Public Sub Screw(ByVal param As Object) Application.Msn.NotifyColleagues(Application.EXECUTECOMMAND, Controller.CMD.SCREW) End Sub ''' ''' Returns always true. ''' Private Function CanScrew(ByVal param As Object) As Boolean Return True End Function #End Region ' ScrewCommand #Region "RuledCommand" ''' ''' Returns a command that do Ruled. ''' Public ReadOnly Property RuledCommand As ICommand Get If m_cmdRuled Is Nothing Then m_cmdRuled = New RelayCommand(AddressOf Ruled, AddressOf CanRuled) End If Return m_cmdRuled End Get End Property ''' ''' Execute the Ruled. This method is invoked by the RuledCommand. ''' Public Sub Ruled(ByVal param As Object) Application.Msn.NotifyColleagues(Application.EXECUTECOMMAND, Controller.CMD.RULED) End Sub ''' ''' Returns always true. ''' Private Function CanRuled(ByVal param As Object) As Boolean Return True End Function #End Region ' RuledCommand #Region "MergeSurfCommand" ''' ''' Returns a command that do MergeSurf. ''' Public ReadOnly Property MergeSurfCommand As ICommand Get If m_cmdMergeSurf Is Nothing Then m_cmdMergeSurf = New RelayCommand(AddressOf MergeSurf, AddressOf CanMergeSurf) End If Return m_cmdMergeSurf End Get End Property ''' ''' Execute the MergeSurf. This method is invoked by the MergeSurfCommand. ''' Public Sub MergeSurf(ByVal param As Object) Application.Msn.NotifyColleagues(Application.EXECUTECOMMAND, Controller.CMD.MERGESURF) End Sub ''' ''' Returns always true. ''' Private Function CanMergeSurf(ByVal param As Object) As Boolean Return True End Function #End Region ' MergeSurfCommand #Region "ExplodeSurfCommand" ''' ''' Returns a command that do ExplodeSurf. ''' Public ReadOnly Property ExplodeSurfCommand As ICommand Get If m_cmdExplodeSurf Is Nothing Then m_cmdExplodeSurf = New RelayCommand(AddressOf ExplodeSurf, AddressOf CanExplodeSurf) End If Return m_cmdExplodeSurf End Get End Property ''' ''' Execute the ExplodeSurf. This method is invoked by the ExplodeSurfCommand. ''' Public Sub ExplodeSurf(ByVal param As Object) Application.Msn.NotifyColleagues(Application.EXECUTECOMMAND, Controller.CMD.EXPLODESURF) End Sub ''' ''' Returns always true. ''' Private Function CanExplodeSurf(ByVal param As Object) As Boolean Return True End Function #End Region ' ExplodeSurfCommand #Region "InvertSurfCommand" ''' ''' Returns a command that do InvertSurf. ''' Public ReadOnly Property InvertSurfCommand As ICommand Get If m_cmdInvertSurf Is Nothing Then m_cmdInvertSurf = New RelayCommand(AddressOf InvertSurf, AddressOf CanInvertSurf) End If Return m_cmdInvertSurf End Get End Property ''' ''' Execute the InvertSurf. This method is invoked by the InvertSurfCommand. ''' Public Sub InvertSurf(ByVal param As Object) Application.Msn.NotifyColleagues(Application.EXECUTECOMMAND, Controller.CMD.INVERTSURF) End Sub ''' ''' Returns always true. ''' Private Function CanInvertSurf(ByVal param As Object) As Boolean Return True End Function #End Region ' InvertSurfCommand #Region "DeleteCommand" ''' ''' Returns a command that do Delete. ''' Public ReadOnly Property DeleteCommand As ICommand Get If m_cmdDelete Is Nothing Then m_cmdDelete = New RelayCommand(AddressOf Delete, AddressOf CanDelete) End If Return m_cmdDelete End Get End Property ''' ''' Execute the Delete. This method is invoked by the DeleteCommand. ''' Public Sub Delete(ByVal param As Object) Application.Msn.NotifyColleagues(Application.DELETE) End Sub ''' ''' Returns always true. ''' Private Function CanDelete(ByVal param As Object) As Boolean Return True End Function #End Region ' DeleteCommand #Region "ChangeLayerCommand" ''' ''' Returns a command that do ChangeLayer. ''' Public ReadOnly Property ChangeLayerCommand As ICommand Get If m_cmdChangeLayer Is Nothing Then m_cmdChangeLayer = New RelayCommand(AddressOf ChangeLayer, AddressOf CanChangeLayer) End If Return m_cmdChangeLayer End Get End Property ''' ''' Execute the ChangeLayer. This method is invoked by the ChangeLayerCommand. ''' Public Sub ChangeLayer(ByVal param As Object) Application.Msn.NotifyColleagues(Application.EXECUTECOMMAND, Controller.CMD.CHANGELAYER) End Sub ''' ''' Returns always true. ''' Private Function CanChangeLayer(ByVal param As Object) As Boolean Return True End Function #End Region ' ChangeLayerCommand #Region "ChangeColorCommand" ''' ''' Returns a command that do ChangeColor. ''' Public ReadOnly Property ChangeColorCommand As ICommand Get If m_cmdChangeColor Is Nothing Then m_cmdChangeColor = New RelayCommand(AddressOf ChangeColor, AddressOf CanChangeColor) End If Return m_cmdChangeColor End Get End Property ''' ''' Execute the ChangeColor. This method is invoked by the ChangeColorCommand. ''' Public Sub ChangeColor(ByVal param As Object) Application.Msn.NotifyColleagues(Application.CHANGECOLOR) End Sub ''' ''' Returns always true. ''' Private Function CanChangeColor(ByVal param As Object) As Boolean Return True End Function #End Region ' ChangeColorCommand #Region "InvertCurveCommand" ''' ''' Returns a command that do InvertCurve. ''' Public ReadOnly Property InvertCurveCommand As ICommand Get If m_cmdInvertCurve Is Nothing Then m_cmdInvertCurve = New RelayCommand(AddressOf InvertCurve, AddressOf CanInvertCurve) End If Return m_cmdInvertCurve End Get End Property ''' ''' Execute the InvertCurve. This method is invoked by the InvertCurveCommand. ''' Public Sub InvertCurve(ByVal param As Object) Application.Msn.NotifyColleagues(Application.EXECUTECOMMAND, Controller.CMD.INVERTCURVE) End Sub ''' ''' Returns always true. ''' Private Function CanInvertCurve(ByVal param As Object) As Boolean Return True End Function #End Region ' InvertCurveCommand #Region "ChangeStartCurveCommand" ''' ''' Returns a command that do ChangeStartCurve. ''' Public ReadOnly Property ChangeStartCurveCommand As ICommand Get If m_cmdChangeStartCurve Is Nothing Then m_cmdChangeStartCurve = New RelayCommand(AddressOf ChangeStartCurve, AddressOf CanChangeStartCurve) End If Return m_cmdChangeStartCurve End Get End Property ''' ''' Execute the ChangeStartCurve. This method is invoked by the InvertCurveCommand. ''' Public Sub ChangeStartCurve(ByVal param As Object) Application.Msn.NotifyColleagues(Application.EXECUTECOMMAND, Controller.CMD.CHANGESTARTCURVE) End Sub ''' ''' Returns always true. ''' Private Function CanChangeStartCurve(ByVal param As Object) As Boolean Return True End Function #End Region ' ChangeStartCurveCommand #Region "ExtendCurveCommand" ''' ''' Returns a command that do ExtendCurve. ''' Public ReadOnly Property ExtendCurveCommand As ICommand Get If m_cmdExtendCurve Is Nothing Then m_cmdExtendCurve = New RelayCommand(AddressOf ExtendCurve, AddressOf CanExtendCurve) End If Return m_cmdExtendCurve End Get End Property ''' ''' Execute the ExtendCurve. This method is invoked by the ExtendCurveCommand. ''' Public Sub ExtendCurve(ByVal param As Object) Application.Msn.NotifyColleagues(Application.EXECUTECOMMAND, Controller.CMD.TRIMEXTENDCURVE) End Sub ''' ''' Returns always true. ''' Private Function CanExtendCurve(ByVal param As Object) As Boolean Return True End Function #End Region ' ExtendCurveCommand #Region "BreakCurveCommand" ''' ''' Returns a command that do BreakCurve. ''' Public ReadOnly Property BreakCurveCommand As ICommand Get If m_cmdBreakCurve Is Nothing Then m_cmdBreakCurve = New RelayCommand(AddressOf BreakCurve, AddressOf CanBreakCurve) End If Return m_cmdBreakCurve End Get End Property ''' ''' Execute the BreakCurve. This method is invoked by the BreakCurveCommand. ''' Public Sub BreakCurve(ByVal param As Object) Application.Msn.NotifyColleagues(Application.BREAKCURVE) End Sub ''' ''' Returns always true. ''' Private Function CanBreakCurve(ByVal param As Object) As Boolean Return True End Function #End Region ' BreakCurveCommand #Region "JoinCurveCommand" ''' ''' Returns a command that do JoinCurve. ''' Public ReadOnly Property JoinCurveCommand As ICommand Get If m_cmdJoinCurve Is Nothing Then m_cmdJoinCurve = New RelayCommand(AddressOf JoinCurve, AddressOf CanJoinCurve) End If Return m_cmdJoinCurve End Get End Property ''' ''' Execute the JoinCurve. This method is invoked by the JoinCurveCommand. ''' Public Sub JoinCurve(ByVal param As Object) Application.Msn.NotifyColleagues(Application.JOINCURVE) End Sub ''' ''' Returns always true. ''' Private Function CanJoinCurve(ByVal param As Object) As Boolean Return True End Function #End Region ' JoinCurveCommand #Region "ExplodeCurveCommand" ''' ''' Returns a command that do ExplodeCurve. ''' Public ReadOnly Property ExplodeCurveCommand As ICommand Get If m_cmdExplodeCurve Is Nothing Then m_cmdExplodeCurve = New RelayCommand(AddressOf ExplodeCurve, AddressOf CanExplodeCurve) End If Return m_cmdExplodeCurve End Get End Property ''' ''' Execute the ExplodeCurve. This method is invoked by the ExplodeCurveCommand. ''' Public Sub ExplodeCurve(ByVal param As Object) Application.Msn.NotifyColleagues(Application.EXECUTECOMMAND, Controller.CMD.EXPLODECURVE) End Sub ''' ''' Returns always true. ''' Private Function CanExplodeCurve(ByVal param As Object) As Boolean Return True End Function #End Region ' ExplodeCurveCommand #Region "SetCurveThCommand" ''' ''' Returns a command that do SetCurveTh. ''' Public ReadOnly Property SetCurveThCommand As ICommand Get If m_cmdSetCurveTh Is Nothing Then m_cmdSetCurveTh = New RelayCommand(AddressOf SetCurveTh, AddressOf CanSetCurveTh) End If Return m_cmdSetCurveTh End Get End Property ''' ''' Execute the SetCurveTh. This method is invoked by the SetCurveThCommand. ''' Public Sub SetCurveTh(ByVal param As Object) Application.Msn.NotifyColleagues(Application.EXECUTECOMMAND, Controller.CMD.SETCURVETHICKNESS) End Sub ''' ''' Returns always true. ''' Private Function CanSetCurveTh(ByVal param As Object) As Boolean Return True End Function #End Region ' SetCurveThCommand #Region "MoveCommand" ''' ''' Returns a command that do Move. ''' Public ReadOnly Property MoveCommand As ICommand Get If m_cmdMove Is Nothing Then m_cmdMove = New RelayCommand(AddressOf Move, AddressOf CanMove) End If Return m_cmdMove End Get End Property ''' ''' Execute the Move. This method is invoked by the MoveCommand. ''' Public Sub Move(ByVal param As Object) Application.Msn.NotifyColleagues(Application.EXECUTECOMMAND, Controller.CMD.MOVE) End Sub ''' ''' Returns always true. ''' Private Function CanMove(ByVal param As Object) As Boolean Return True End Function #End Region ' MoveCommand #Region "RotateCommand" ''' ''' Returns a command that do Rotate. ''' Public ReadOnly Property RotateCommand As ICommand Get If m_cmdRotate Is Nothing Then m_cmdRotate = New RelayCommand(AddressOf Rotate, AddressOf CanRotate) End If Return m_cmdRotate End Get End Property ''' ''' Execute the Rotate. This method is invoked by the RotateCommand. ''' Public Sub Rotate(ByVal param As Object) Application.Msn.NotifyColleagues(Application.ROTATE) End Sub ''' ''' Returns always true. ''' Private Function CanRotate(ByVal param As Object) As Boolean Return True End Function #End Region ' RotateCommand #Region "MirrorCommand" ''' ''' Returns a command that do Mirror. ''' Public ReadOnly Property MirrorCommand As ICommand Get If m_cmdMirror Is Nothing Then m_cmdMirror = New RelayCommand(AddressOf Mirror, AddressOf CanMirror) End If Return m_cmdMirror End Get End Property ''' ''' Execute the Mirror. This method is invoked by the MirrorCommand. ''' Public Sub Mirror(ByVal param As Object) Application.Msn.NotifyColleagues(Application.MIRROR) End Sub ''' ''' Returns always true. ''' Private Function CanMirror(ByVal param As Object) As Boolean Return True End Function #End Region ' MirrorCommand #Region "ScaleCommand" ''' ''' Returns a command that do Scale. ''' Public ReadOnly Property ScaleCommand As ICommand Get If m_cmdScale Is Nothing Then m_cmdScale = New RelayCommand(AddressOf Scale, AddressOf CanScale) End If Return m_cmdScale End Get End Property ''' ''' Execute the Scale. This method is invoked by the ScaleCommand. ''' Public Sub Scale(ByVal param As Object) Application.Msn.NotifyColleagues(Application.SCALE) End Sub ''' ''' Returns always true. ''' Private Function CanScale(ByVal param As Object) As Boolean Return True End Function #End Region ' ScaleCommand #Region "OffsetCommand" ''' ''' Returns a command that do Offset. ''' Public ReadOnly Property OffsetCommand As ICommand Get If m_cmdOffset Is Nothing Then m_cmdOffset = New RelayCommand(AddressOf Offset, AddressOf CanOffset) End If Return m_cmdOffset End Get End Property ''' ''' Execute the Offset. This method is invoked by the OffsetCommand. ''' Public Sub Offset(ByVal param As Object) Application.Msn.NotifyColleagues(Application.EXECUTECOMMAND, Controller.CMD.OFFSET) End Sub ''' ''' Returns always true. ''' Private Function CanOffset(ByVal param As Object) As Boolean Return True End Function #End Region ' OffsetCommand End Class End Namespace