public ViewsFactory(UI.MainForm mainForm, ModelObjects model) { this.mainForm = mainForm; this.winFormsComponentsInitializer = mainForm; this.model = model; }
/// <summary> /// This function is the callback used to execute a command when the a menu item is clicked. /// See the Initialize method to see how the menu item is associated to this function using /// the OleMenuCommandService service and the MenuCommand class. /// </summary> private void MenuItemCallback(object sender, EventArgs e) { const string Title = "Open in UIMap Toolbox"; DTE dte = this.GetService(typeof(DTE)) as DTE; if (dte == null) { MessageBox.Show("Unable to get DTE instance.", Title, MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } // Get selected file if (dte.SelectedItems.Count == 0) { MessageBox.Show("No items selected.", Title, MessageBoxButtons.OK, MessageBoxIcon.Information); return; } SelectedItem item = dte.SelectedItems.Item(1); ProjectItem pi = item.ProjectItem; if ((pi == null) || (pi.FileCount == 0)) { MessageBox.Show("No filenames in selected item. Cannot continue.", Title, MessageBoxButtons.OK, MessageBoxIcon.Information); return; } string fileName = pi.FileNames[1]; // Open it in UIMapToolbox window UIMapToolbox.UI.MainForm frm = null; int uiMapPane = 0; // left side try { if ((_uiMapToolboxForm == null) || (_uiMapToolboxForm.IsDisposed)) { // first instance, just load it _uiMapToolboxForm = new UI.MainForm(); frm = _uiMapToolboxForm; } else { // ask user if it should be opened in existing instance string msg = "Open file in existing UIMap Toolbox instance (will be opened in right side)?"; DialogResult answer = MessageBox.Show(msg, Title, MessageBoxButtons.YesNo, MessageBoxIcon.Question); if (answer == DialogResult.Yes) { frm = _uiMapToolboxForm; uiMapPane = 1; // right side } else { frm = new UI.MainForm(); } } frm.LoadFile(uiMapPane, fileName); frm.Show(); frm.BringToFront(); } catch (Exception ex) { string msg = String.Format("An error occured while loading UIMap. Please verify that it's a valid UIMap file.\n\nError: {0}", ex.Message); MessageBox.Show(msg, Title, MessageBoxButtons.OK, MessageBoxIcon.Asterisk); if (frm != null) { frm.Dispose(); } } }