using System; using JD.Reflection.Attributes; using JD.TeaBoxAddinSystem.Bootstrap; using JD.Timeline.Plugin; using TeaBox; using TeaBox.Actions; using TeaBox.Bootstrap; using TeaBox.Gui; using TD.SandBar; namespace JD.Timeline.View.Actions { public class OpenTapeDropDownMenu : DropDownMenuItemBase { public enum OpenType { OpenFile, OpenMaster, OpenFromEngine } private OpenType _defaultOpenType = OpenType.OpenFile; public OpenTapeDropDownMenu() : base(typeof(OpenType)) { Enabled = true; SelectedMode = _defaultOpenType; } protected override bool EnabledWrapAround { get { return false; } } public override void UpdateState() { if (TimelinePlugin.IsCreated()) _defaultOpenType = TimelinePlugin.Instance.IsConnected ? OpenType.OpenMaster : OpenType.OpenFile; if (SelectedMode == null || (OpenType)SelectedMode != _defaultOpenType) SelectedMode = _defaultOpenType; foreach (MenuButtonItem item in Items) { item.Enabled = IsEnabledAction((Enum)item.Tag); } base.UpdateState(); } protected override bool IsEnabledAction(Enum @enum) { return (OpenType)@enum == OpenType.OpenFile || (TimelinePlugin.IsCreated() && TimelinePlugin.Instance.IsConnected); } protected override void Execute() { switch ((OpenType)SelectedMode) { case OpenType.OpenFromEngine: OpenFromEngine.OpenTape(); break; case OpenType.OpenMaster: TimelinePlugin.Instance.SendGetMasterTape(); break; case OpenType.OpenFile: TeaBox.ObjectModel.Application.Main.Open.FromFile(); break; } SelectedMode = _defaultOpenType; } [Export(typeof(IBootstrapCommand))] public class ToolbarHijacker : IBootstrapCommand { public void Execute() { ((SimpleAction)TeaBox.ObjectModel.Application.Main.Actions[ApplicationActions.OpenFileFromToolbar]).DefaultHandler = new InvisibleHandler(); ((SimpleAction)TeaBox.ObjectModel.Application.Main.Actions[ApplicationActions.OpenFile]).Text = "Open from file..."; } class InvisibleHandler : ActionHandler { public override bool Update(ActionContext context, ActionInfo info) { info.Visible = false; return base.Update(context, info); } } } } }