/// <summary> /// Called on selection of a ToolboxItem. (A selection is a double-click, or pressing Enter). /// The selection cannot be null; this method is not called when the "Pointer" mode is selected. /// Upon double-click, a single-click is fired first, followed by a double-click. I.e. OnToolboxSelectionChanged /// will be called, followed by OnToolboxitemSelected (if the selected item is not "Pointer"). /// </summary> /// <param name="toolboxItem">Selected toolbox item.</param> public override bool OnToolboxItemSelected(DslDesign::ModelingToolboxItem toolboxItem) { // Save the current sticky item choice. this.stickyToolboxItemId = toolboxItem.Id; // Return true to indicate that the toolbox selection action is handled. Otherwise the old // behavior of creating new element on double-click will be carried out. return true; }
private string stickyToolboxItemId = null; // Id of the last-selected sticky toolbox item. /// <summary> /// Called when the selection on toolbox changed (through a single-click, or pressing up/down arrow keys). /// Base implementation does nothing. /// Upon double-click, a single-click is fired first, followed by a double-click. I.e. OnToolboxSelectionChanged /// will be called, followed by OnToolboxitemSelected (if the selected item is not "Pointer"). /// </summary> /// <param name="toolboxItem">New toolbox item with selection. This can be null, if "Pointer" mode is selected.</param> public override void OnToolboxSelectionChanged(DslDesign::ModelingToolboxItem toolboxItem) { base.OnToolboxSelectionChanged(toolboxItem); // When a toolbox item is single-clicked, we need to turn off the sticky mode. this.stickyToolboxItemId = null; if (this.ActiveDiagramView != null) { DslDiagrams::CreateAction createAction = this.ActiveDiagramView.ActiveMouseAction as DslDiagrams::CreateAction; if (createAction != null) { createAction.StickyMode = false; } else { DslDiagrams::ConnectAction connectAction = this.ActiveDiagramView.ActiveMouseAction as DslDiagrams::ConnectAction; if (connectAction != null) { connectAction.StickyMode = false; } } } }