/// <summary> /// Class cosntructor /// </summary> public SettingsManagerImpl() { mSettingsDataPanel = new OptionsPanel(); SessionData = new Profile(); Themes = new ThemeInfos(); }
private void ShowOptionsPanel(Control control) { using (new Wait()) { IOptionsPanel optionsPanel = (control as IOptionsPanel); if (optionsPanel == null) { throw new ArgumentException("Provided control must be an IOptionsPanel.", "optionsPanel"); } optionsPlaceholderPanel.SuspendLayout(); optionsPlaceholderPanel.Controls.Add(control); control.Dock = DockStyle.Fill; propertiesToolbox.HeaderText = optionsPanel.Title + " Properties"; optionsPanel.SelectedTabIndex = this.LastShownTabPage.ValueOrDefault(optionsPanel.GetType()); optionsPanel.Saved += new SavedDelegate( delegate(object sender, EventArgs e) { _unsavedChanges = true; UpdateTitle(); RefreshSelectedNode(); }); optionsPlaceholderPanel.ResumeLayout(); } }
public void AddPanel(string id, IOptionsPanel panel) { if (panel == null) { throw new ArgumentNullException("panel"); } AddPanel(id, () => panel); }
protected override void OnLoad(EventArgs e) { base.OnLoad(e); var service = This.GetService <IOptionsService>(); var contents = new List <IOptionsPanel>(); if (service != null) { foreach (var id in service.OptionsPanels.Keys) { var creator = service.OptionsPanels[id]; IOptionsPanel content = null; try { content = creator(); } catch (Exception ex) { This.Logger.Error(string.Format( "Unable to instantiate panel {0}: {1}", id, ex.Message), ex); } if (content != null) { if (content is Control) { Control control = ((Control)content); control.Margin = new Padding(3); control.Dock = DockStyle.Fill; contents.Add(content); } else { This.Logger.Error(string.Format( "Unable to load panel {0}: it is not a control.", id)); } } else { This.Logger.Error(string.Format( "Unable to instantiate panel {0}: returned instance is null.", id)); } } } else { var content = new GeneralOptionsPanel(); content.Dock = DockStyle.Fill; contents.Add(content); } AddContents(contents.ToArray()); }
private void projectTreeview_AfterSelect(object sender, TreeViewEventArgs e) { using (new Wait()) { optionsPlaceholderPanel.SuspendLayout(); propertiesToolbox.HeaderText = "Properties"; while (!optionsPlaceholderPanel.Controls.IsNullOrEmpty()) { IOptionsPanel optionsPanel = (optionsPlaceholderPanel.Controls[0] as IOptionsPanel); if (optionsPanel != null) { this.LastShownTabPage[optionsPanel.GetType()] = optionsPanel.SelectedTabIndex; } optionsPlaceholderPanel.Controls[0].Dispose(); } if (e.Node is ProjectTreeNode) { ShowOptionsPanel(new ProjectOptions(((ProjectTreeNode)e.Node).Project)); } if (e.Node is ConnectionTreeNode) { ShowOptionsPanel(new ConnectionOptions(((ConnectionTreeNode)e.Node).ConnectionInfo)); } else if (e.Node is TemplateTreeNode) { ShowOptionsPanel(new TemplateOptions(((TemplateTreeNode)e.Node).Template)); } else if (e.Node is TableOrViewTreeNode) { ShowOptionsPanel(new TableOrViewOptions(((TableOrViewTreeNode)e.Node).TableMapping)); } else if (e.Node is ColumnTreeNode) { ShowOptionsPanel(new ColumnOptions(((ColumnTreeNode)e.Node).ColumnMapping)); } else if (e.Node is UniqueIndexTreeNode) { ShowOptionsPanel(new UniqueIndexOptions(((UniqueIndexTreeNode)e.Node).UniqueIndexMapping)); } else if (e.Node is ForeignKeyTreeNode) { ShowOptionsPanel(new ForeignKeyOptions(((ForeignKeyTreeNode)e.Node).ForeignKeyMapping)); } optionsPlaceholderPanel.ResumeLayout(); } }
public virtual IOptionsPanel CreatePanel() { if (panelType != null) { return((IOptionsPanel)Activator.CreateInstance(panelType)); } IOptionsPanel p = Addin.CreateInstance(typeName, true) as IOptionsPanel; if (p == null) { throw new System.InvalidOperationException("Type '" + typeName + "' does not implement IOptionsPanel"); } return(p); }
internal void AddChildSection(IOptionsPanel parent, OptionsDialogSection section, object dataObject) { foreach (SectionPage page in pages.Values) { foreach (PanelInstance pi in page.Panels) { if (pi.Panel == parent) { AddSection(page.Iter, section, dataObject); return; } } } throw new InvalidOperationException("Parent options panel not found in the dialog."); }
internal void ExpandChildren(IOptionsPanel parent) { foreach (SectionPage page in pages.Values) { foreach (PanelInstance pi in page.Panels) { if (pi.Panel == parent) { tree.ExpandToPath(store.GetPath(page.Iter)); tree.ExpandRow(store.GetPath(page.Iter), false); return; } } } }
private void AddContents(IOptionsPanel[] optionsPanels) { var minimumSize = Size.Empty; Control[] controls = optionsPanels.OfType<Control>().ToArray(); if ((controls == null) || (controls.Length == 0)) return; if (controls.Length == 1) { minimumSize.Width = controls[0].MinimumSize.Width; minimumSize.Height = controls[0].MinimumSize.Height; pnlContent.Controls.Add(controls[0]); panels.Add((IOptionsPanel)controls[0]); ResizeToFit(minimumSize, pnlContent.ClientSize); } else { Controls.Remove(lc); var tc = new CommunityTabControl(); tc.ShowTabSeparator = true; tc.Dock = DockStyle.Fill; pnlContent.Controls.Add(tc); foreach (Control control in controls) { if (control.MinimumSize.Width > minimumSize.Width) minimumSize.Width = control.MinimumSize.Width; if (control.MinimumSize.Height > minimumSize.Height) minimumSize.Height = control.MinimumSize.Height; var tp = new TabPage(control.Text); tp.UseVisualStyleBackColor = true; tp.Margin = new Padding(3); tp.Padding = new Padding(3); tp.Controls.Add(control); tc.TabPages.Add(tp); panels.Add((IOptionsPanel)control); } ResizeToFit(minimumSize, tc.TabPages[0].ClientSize); } }
SectionPage CreatePage(TreeIter it, OptionsDialogSection section, object dataObject) { SectionPage page; if (pages.TryGetValue(section, out page)) { return(page); } page = new SectionPage(); page.Iter = it; page.Panels = new List <PanelInstance> (); pages [section] = page; List <OptionsPanelNode> nodes = new List <OptionsPanelNode> (); if (!string.IsNullOrEmpty(section.TypeName) || section.CustomNode) { nodes.Add(section); } if (!section.CustomNode) { foreach (ExtensionNode nod in section.ChildNodes) { OptionsPanelNode node = nod as OptionsPanelNode; if (node != null && !(node is OptionsDialogSection)) { nodes.Add(node); } } } foreach (OptionsPanelNode node in nodes.ToArray()) { if (!string.IsNullOrEmpty(node.Replaces)) { var replaced = nodes.FindIndex(n => n.Id == node.Replaces); if (replaced != -1) { nodes.Remove(node); nodes [replaced] = node; } } } foreach (OptionsPanelNode node in nodes) { PanelInstance pi = null; if (panels.TryGetValue(node, out pi)) { if (pi.DataObject == dataObject) { // The panel can be reused if (!pi.Panel.IsVisible()) { continue; } } else { // If the data object has changed, this panel instance can't be // reused anymore. Destroy it. panels.Remove(node); if (pi.Widget != null) { pi.Widget.Destroy(); } IDisposable d = pi.Panel as IDisposable; if (d != null) { d.Dispose(); } pi = null; } } if (pi == null) { IOptionsPanel panel = node.CreatePanel(); pi = new PanelInstance(); pi.Panel = panel; pi.Node = node; pi.DataObject = dataObject; page.Panels.Add(pi); panel.Initialize(this, dataObject); if (!panel.IsVisible()) { page.Panels.Remove(pi); continue; } panels [node] = pi; } else { page.Panels.Add(pi); } } return(page); }
public void AddPanel(string id, IOptionsPanel panel) { if (panel == null) throw new ArgumentNullException("panel"); AddPanel(id, () => panel); }
public void AddChildSection (IOptionsPanel parent, OptionsDialogSection section, object dataObject) { foreach (SectionPage page in pages.Values) { foreach (PanelInstance pi in page.Panels) { if (pi.Panel == parent) { AddSection (page.Iter, section, dataObject); return; } } } throw new InvalidOperationException ("Parent options panel not found in the dialog."); }
/// <summary> /// Hidden default constructor. /// </summary> protected SettingsManagerImpl() { mSettingsDataPanel = new OptionsPanel(); SessionData = new Profile(); }