/// <summary>
        /// Class cosntructor
        /// </summary>
        public SettingsManagerImpl()
        {
            mSettingsDataPanel = new OptionsPanel();
            SessionData        = new Profile();

            Themes = new ThemeInfos();
        }
Example #2
0
        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();
            }
        }
Example #3
0
 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());
        }
Example #5
0
        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();
            }
        }
Example #6
0
        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);
        }
Example #7
0
 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.");
 }
Example #8
0
 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);   
            }
        }
Example #10
0
        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);
 }
Example #12
0
		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.");
		}
Example #13
0
 /// <summary>
 /// Hidden default constructor.
 /// </summary>
 protected SettingsManagerImpl()
 {
     mSettingsDataPanel = new OptionsPanel();
     SessionData        = new Profile();
 }