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
+
+
+