//singleton implementation
 private WorkbenchWindow()
 {
     InitializeComponent();
     _controller = new WorkbenchListViewsController();
     _controller.Configure(mainGrid);
     _menu = new MenuController();
     _menu.Configure(mainMenu);
     this.Closing += Workbench_Closing;
     WorkbenchWindowController.Instance.ConfigureClosingEvent(this);
     new WorkbenchMenuController().Configure(this, _controller);
 }
 public void Configure(WorkbenchWindow w, 
                       WorkbenchListViewsController wc)
 {
     this.w = w;
     this.wc = wc;
     w.Menu.AddMenuItem("List Operations",
                        "Fuzzy Intersection {x, y} => x++",
                        FuzzyIntersectionXYtoXpp);
     w.Menu.AddMenuItem("List Operations",
                        "Set Selected {x, y} => x++",
                        SetSelectedXYtoXpp);
     w.Menu.AddMenuItem("List Operations",
                        "Merge {x, y, z1, z2} => {x, y, z}",
                        MergeXYZZtoXYZ);
     w.Menu.AddMenuItem("List Operations",
                        "Mark Fuzzy Intersection Unprocessed {x}",
                        MarkFuzzyIntersectionUnprocessed);
     w.Menu.AddMenuItem("Workbench",
                        "Send First",
                        SendFirst);
     w.Menu.AddMenuItem("Workbench",
                        "Send Last",
                        SendLast);
     w.Menu.AddMenuItem("Workbench",
                        "Remove Last",
                        RemoveLast);
     w.Menu.AddMenuItem("Workbench",
                        "Remove First",
                        RemoveFirst);
     w.Menu.AddMenuItem("Fragment",
                        "Display Selected {x}",
                        DisplayFragmentX);
     w.Menu.AddMenuItem("Fragment",
                        "Display Selected {y}",
                        DisplayFragmentY);
     w.Menu.AddMenuItem("Fragment",
                        "Display Selected {z}",
                        DisplayFragmentZ);
 }