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
};
}