diff --git a/src/Legacy/DynamoRevitVersionSelector/CommandsBinders.cs b/src/Legacy/DynamoRevitVersionSelector/CommandsBinders.cs new file mode 100644 index 0000000000..bb7da0ffe2 --- /dev/null +++ b/src/Legacy/DynamoRevitVersionSelector/CommandsBinders.cs @@ -0,0 +1,131 @@ +using System; +using System.Collections.Generic; +using Autodesk.Revit.UI; +using System.Linq; +using DynamoRevitVersionSelector.Properties; +using System.IO; +using System.Reflection; +using System.Collections; +using System.Diagnostics; +using Autodesk.Revit.UI.Events; + +namespace Dynamo.Applications +{ + /// + /// Bind/Unbind Ribbons Icon actions + /// + internal class CommandsBinders + { + #region Statics + /// + /// Dynamo Command ID + /// + public static readonly string DYNAMOID = "ID_VISUAL_PROGRAMMING_DYNAMO"; + + /// + /// Dynamo Player Command ID + /// + public static readonly string PLAYERID = "ID_PLAYLIST_DYNAMO"; + #endregion + + public event EventHandler OnDynamoClick; + public event EventHandler OnDynamoPlayerClick; + + private UIControlledApplication uiControlledApplication; + private RevitCommandId DynamoCmdId; + private AddInCommandBinding DynamoCommand = null; + private RevitCommandId DynamoPlayerCmdId; + private AddInCommandBinding DynamoPlayerCommand = null; + + private bool BindDynamoPlayer; + + /// + /// Is Binding has been done + /// + public bool IsBinded { get; private set; } + + /// + /// Constructor, Class to Bind/Unbind Ribbons Icon actions + /// + /// + /// + public CommandsBinders(UIControlledApplication application, bool bindDynamoPlayer) + { + uiControlledApplication = application; + BindDynamoPlayer = bindDynamoPlayer; + DynamoCmdId = RevitCommandId.LookupCommandId(DYNAMOID); + DynamoPlayerCmdId = RevitCommandId.LookupCommandId(PLAYERID); + if (uiControlledApplication == null || DynamoCmdId == null || DynamoPlayerCmdId == null) + throw new ArgumentNullException(); + IsBinded = false; + } + + /// + /// Bind Ribbons Icon actions + /// + public void Bind() + { + if (IsBinded) return; + if (null == DynamoCommand) + { + DynamoCommand = uiControlledApplication.CreateAddInCommandBinding(DynamoCmdId); + DynamoCommand.CanExecute += canExecute; + DynamoCommand.BeforeExecuted += beforeExecuted; + DynamoCommand.Executed += executedDynamo; + } + if (null == DynamoPlayerCommand && BindDynamoPlayer) + { + DynamoPlayerCommand = uiControlledApplication.CreateAddInCommandBinding(DynamoPlayerCmdId); + DynamoPlayerCommand.CanExecute += canExecute; + DynamoPlayerCommand.BeforeExecuted += beforeExecuted; + DynamoPlayerCommand.Executed += executedPlayer; + } + IsBinded = true; + } + + /// + /// UnBind Ribbons Icon actions + /// + public void UnBind() + { + if (!IsBinded) return; + if (null != DynamoCommand) + { + uiControlledApplication.RemoveAddInCommandBinding(DynamoCmdId); + DynamoCommand.BeforeExecuted -= beforeExecuted; + DynamoCommand.CanExecute -= canExecute; + DynamoCommand.Executed -= executedDynamo; + DynamoCommand = null; + } + if (null != DynamoPlayerCommand) + { + uiControlledApplication.RemoveAddInCommandBinding(DynamoPlayerCmdId); + DynamoPlayerCommand.BeforeExecuted -= beforeExecuted; + DynamoPlayerCommand.CanExecute -= canExecute; + DynamoPlayerCommand.Executed -= executedPlayer; + DynamoPlayerCommand = null; + } + IsBinded = false; + } + + private void beforeExecuted(object sender, BeforeExecutedEventArgs e) + { + e.UsingCommandData = true; + } + + private void canExecute(object sender, CanExecuteEventArgs e) + { + e.CanExecute = e.ActiveDocument != null; + } + + private void executedDynamo(object sender, ExecutedEventArgs e) + { + OnDynamoClick(sender, e); + } + + private void executedPlayer(object sender, ExecutedEventArgs e) + { + OnDynamoPlayerClick(sender, e); + } + } +} diff --git a/src/Legacy/DynamoRevitVersionSelector/DynamoRevitVersionSelector.csproj b/src/Legacy/DynamoRevitVersionSelector/DynamoRevitVersionSelector.csproj index 6a4bb2446f..ea6f1f366d 100644 --- a/src/Legacy/DynamoRevitVersionSelector/DynamoRevitVersionSelector.csproj +++ b/src/Legacy/DynamoRevitVersionSelector/DynamoRevitVersionSelector.csproj @@ -35,14 +35,18 @@ - - $(REVITAPI)\RevitAPI.dll + + $(REVITAPI)\AdWindows.dll False $(REVITAPI)\RevitAPIUI.dll False + + $(REVITAPI)\RevitAPI.dll + False + @@ -54,6 +58,9 @@ Properties\AssemblySharedInfo.cs + + + True True @@ -64,21 +71,13 @@ True Resources.en-US.resx + + + + - - DynamoVersionSelector.xaml - - - - - MSBuild:Compile - Designer - - - - - + @@ -90,6 +89,9 @@ Resources.en-US.Designer.cs + + +