using System; using System.IO; using System.Windows; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Diagnostics; using System.Globalization; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading; using ActiproSoftware.Windows.Controls.Docking; using ActiproSoftware.Windows.Controls.Ribbon.Input; using agree; using SysType = System.Type; namespace agree.Wpf { abstract public class CommandBase : RoutedUICommand { protected MainWindow w; public CommandBase(MainWindow w, String text, String name, SysType t) : base(text, name, t) { this.w = w; Debug.Assert(t == this.GetType()); } CommandBinding _b = null; public CommandBinding CommandBinding { get { return _b = (_b ?? new CommandBinding(this, OnExecute, OnCanExecute)); } } protected abstract void OnExecute(object target, ExecutedRoutedEventArgs args); protected virtual void OnCanExecute(object target, CanExecuteRoutedEventArgs args) { args.Handled = true; args.CanExecute = true; } }; public class ShowCommand : CommandBase { public ShowCommand(MainWindow w) : base(w, "Show", "Show", typeof(ShowCommand)) { } protected override void OnExecute(object target, ExecutedRoutedEventArgs args) { args.Handled = true; } #if false private void CanExecute(object target, CanExecuteRoutedEventArgs args) { args.Handled = true; args.CanExecute = true; } #endif }; public class ShowItemCommand : CommandBase { public ShowItemCommand(MainWindow w) : base(w, "Show Item", "ShowItem", typeof(ShowItemCommand)) { } public static void BetterExecute(Object parent, Object arg) { MyDockSite mds = MyDockSite.g_docksite; if (arg is Instance) { Instance inst = arg as Instance; ExpandedWindow etw = mds.DocumentWindows.OfType<ExpandedWindow>().FirstOrDefault(d => d.Inst == inst); if (etw == null) { etw = new ExpandedWindow(inst); mds.wksp.tmc.Items.Add(etw); } //etw.Open(); //wksp.tmc.SelectedItem = etw; etw.Activate(); } else if (arg is Tfs) { Tfs tfs = (Tfs)arg; var etw = new ExpandedWindow(tfs); mds.wksp.tmc.Items.Add(etw); etw.Activate(); } else if (arg is ParseChart) { ParseChart pc = arg as ParseChart; AgreeGrammarDocument etw = mds.DocumentWindows.OfType<ParseChartWindow>().FirstOrDefault(d => d.ParseChart == pc); if (etw == null) { etw = new ParseChartWindow(pc.ctrl,null); // etw = new MultiParseTreeWindow(pc); mds.wksp.tmc.Items.Add(etw); } etw.Activate(); } else if (arg is ParseControl) { ParseControl ctrl = arg as ParseControl; AgreeGrammarDocument etw = mds.DocumentWindows.OfType<ParseChartWindow>().FirstOrDefault(d => d.ParseChart == ctrl.chart); if (etw == null) { etw = new ParseChartWindow(ctrl, null); // etw = new MultiParseTreeWindow(pc); mds.wksp.tmc.Items.Add(etw); } etw.Activate(); } else if (arg is IDerivation) { ParseChart pc = parent as ParseChart; IDerivation cp = arg as IDerivation; ParseTreeWindow etw = mds.DocumentWindows.OfType<ParseTreeWindow>().FirstOrDefault(d => d.ParseTree == cp); if (etw == null) { etw = new ParseTreeWindow(pc.ctrl, cp); mds.wksp.tmc.Items.Add(etw); } etw.Activate(); } //else if (arg is PassiveEdge.Completed) //{ // ParseChart pc = parent as ParseChart; // PassiveEdge.Completed cp = arg as PassiveEdge.Completed; // ParseTreeWindow etw = mds.DocumentWindows.OfType<ParseTreeWindow>().FirstOrDefault(d => d.ParseTree == cp); // if (etw == null) // { // etw = new ParseTreeWindow(pc.ctrl, cp); // mds.wksp.tmc.Items.Add(etw); // } // etw.Activate(); //} } protected override void OnExecute(object target, ExecutedRoutedEventArgs args) { BetterExecute(target, args.Parameter); args.Handled = true; } #if false private void CanExecute(object target, CanExecuteRoutedEventArgs args) { args.Handled = true; args.CanExecute = true; } #endif }; public class ShowHighlightedItemCommand : CommandBase { ISysObj o1; ISysObj o_hl; public ShowHighlightedItemCommand(MainWindow w, ISysObj o1, ISysObj o_hl) : base(w, "Show Highlighted Item", "ShowHighlightedItem", typeof(ShowHighlightedItemCommand)) { this.o1 = o1; this.o_hl = o_hl; } protected override void OnExecute(object target, ExecutedRoutedEventArgs args) { MyDockSite mds = MyDockSite.g_docksite; var etw = new ExpandedWindow((Tfs)o1, (Tfs)o_hl); mds.wksp.tmc.Items.Add(etw); etw.Activate(); args.Handled = true; } #if false private void CanExecute(object target, CanExecuteRoutedEventArgs args) { args.Handled = true; args.CanExecute = true; } #endif }; #if false public class OpenEdgeWindow : CommandBase { public OpenEdgeWindow(MainWindow w) : base(w, "Show Edge Type", "ShowEdgeType", typeof(OpenEdgeWindow)) { } public class CommandArgs { public TfsEdge e; public String title; } protected override void OnExecute(object target, ExecutedRoutedEventArgs args) { CommandArgs ca = args.Parameter as CommandArgs; if (ca != null) { MyDockSite mds = MyDockSite.g_docksite; EdgeWindow etw = mds.DocumentWindows.OfType<EdgeWindow>().FirstOrDefault(d => d.Edge == ca.e); if (etw == null) { etw = new EdgeWindow(ca.e, ca.title); mds.wksp.tmc.Items.Add(etw); } //etw.Open(); //wksp.tmc.SelectedItem = etw; etw.Activate(); } args.Handled = true; } #if false private void CanExecute(object target, CanExecuteRoutedEventArgs args) { args.Handled = true; args.CanExecute = true; } #endif }; #endif public class Open3dWindow : CommandBase { public Open3dWindow(MainWindow w) : base(w, "Show 3d Window", "Show3dWindow", typeof(Open3dWindow)) { } protected override void OnExecute(object target, ExecutedRoutedEventArgs args) { agree.Type t = args.Parameter as agree.Type; if (t != null) { MyDockSite mds = MyDockSite.g_docksite; T3dWindow etw = mds.DocumentWindows.OfType<T3dWindow>().FirstOrDefault(d => d.Type == t); if (etw == null) { etw = new T3dWindow(t); mds.wksp.tmc.Items.Add(etw); } //etw.Open(); //wksp.tmc.SelectedItem = etw; etw.Activate(); } args.Handled = true; } #if false private void CanExecute(object target, CanExecuteRoutedEventArgs args) { args.Handled = true; args.CanExecute = true; } #endif }; }