Exemplo n.º 1
0
 set => SetValue(LayoutProperty, value);
Exemplo n.º 2
0
        public List <ToolStripItem> LoadLayoutMenu()
        {
            var noDatabase       = _session == null;
            var currentMenuLevel = new List <ToolStripItem>();
            ToolStripMenuItem saveMenu;
            ToolStripMenuItem loadMenu;
            ToolStripMenuItem deleteMenu = null;
            var menuList = new List <ToolStripItem>();

            #region Load Options
            //set up user load options
            foreach (var item in _userLayoutList)
            {
                var tempItem  = item;
                var newOption = new ToolStripMenuItem {
                    Text = item.Name + (CurrentLayout.Name == item.Name ? " (current)" : "")
                };
                newOption.Click += (s, e) => CurrentLayout = tempItem;
                currentMenuLevel.Add(newOption);
            }

            //check if more needs to be done
            if (noDatabase)
            {
                loadMenu = new ToolStripMenuItem("Load", null, currentMenuLevel.ToArray());
            }
            else
            {
                currentMenuLevel.Add(new ToolStripSeparator());
                IList <LayoutProperty> databaseLayouts;
                lock (_session)
                    databaseLayouts = _session.QueryOver <LayoutProperty>().List();

                foreach (var item in databaseLayouts)
                {
                    var tempItem  = item;
                    var newOption = new ToolStripMenuItem {
                        Text = item.Name + (CurrentLayout.Name == item.Name ? " (current)" : "")
                    };
                    newOption.Click += (s, e) => CurrentLayout = tempItem;
                    currentMenuLevel.Add(newOption);
                }


                loadMenu = new ToolStripMenuItem("Load", null, currentMenuLevel.ToArray());
            }
            #endregion

            #region Save Options

            //create user save list
            currentMenuLevel = new List <ToolStripItem>();
            foreach (var item in _userLayoutList)
            {
                var tempItem  = item;
                var newOption = new ToolStripMenuItem {
                    Text = item.Name + (CurrentLayout.Name == item.Name ? " (current)" : "")
                };
                newOption.Click += (s, e) =>
                {
                    var saveColumns    = false;
                    var formProperties = new Dictionary <string, FormProperty>();
                    if (MessageBox.Show("Save column settings as well?", "Save", MessageBoxButtons.YesNo) == DialogResult.Yes)
                    {
                        saveColumns = true;
                        foreach (var form in _persistentForms)
                        {
                            formProperties[form.Name] = form.GetCurrentProperties(false);
                        }
                    }
                    updateLayout(tempItem, saveColumns, false, formProperties);
                };
                currentMenuLevel.Add(newOption);
            }

            //replace system default (not editable) with new layout option
            {
                var newLayout = new ToolStripMenuItem("New Local Layout");
                newLayout.Click +=
                    (s, e) =>
                {
                    var textInput = new TextInputPrompt("Layout Name", true, string.Empty);
                    if (textInput.ShowDialog() == DialogResult.OK)
                    {
                        var formProperties = new Dictionary <string, FormProperty>();
                        if (textInput.GetCheckState())
                        {
                            foreach (var form in _persistentForms)
                            {
                                formProperties[form.Name] = form.GetCurrentProperties(false);
                            }
                        }
                        saveNewLayout(textInput.GetText(), textInput.GetCheckState(), false, formProperties);
                    }
                };
                currentMenuLevel.RemoveAt(0);
                currentMenuLevel.Insert(0, newLayout);
            }

            //check if more needs to be done
            if (noDatabase)
            {
                saveMenu = new ToolStripMenuItem("Save", null, currentMenuLevel.ToArray());
            }
            else
            {
                var currentDatabaseMenuLevel = new List <ToolStripItem>();
                currentMenuLevel.Add(new ToolStripSeparator());

                IList <LayoutProperty> databaseLayouts;
                lock (_session)
                    databaseLayouts = _session.QueryOver <LayoutProperty>().List();

                foreach (var item in databaseLayouts)
                {
                    var newOption = new ToolStripMenuItem {
                        Text = item.Name + (CurrentLayout.Name == item.Name ? " (current)" : "")
                    };
                    LayoutProperty tempItem = item;
                    newOption.Click += (s, e) =>
                    {
                        var saveColumns    = false;
                        var formProperties = new Dictionary <string, FormProperty>();
                        if (MessageBox.Show("Save column settings as well?", "Save", MessageBoxButtons.YesNo) == DialogResult.Yes)
                        {
                            saveColumns = true;
                            foreach (var form in _persistentForms)
                            {
                                formProperties[form.Name] = form.GetCurrentProperties(false);
                            }
                        }
                        updateLayout(tempItem, saveColumns, true, formProperties);
                    };
                    currentDatabaseMenuLevel.Add(newOption);
                }

                //Add new layout option
                {
                    var newLayout = new ToolStripMenuItem("New Database Layout");
                    newLayout.Click +=
                        (s, e) =>
                    {
                        var textInput = new TextInputPrompt("Layout Name", true, string.Empty);
                        if (textInput.ShowDialog() == DialogResult.OK)
                        {
                            var formProperties = new Dictionary <string, FormProperty>();
                            if (textInput.GetCheckState())
                            {
                                foreach (var form in _persistentForms)
                                {
                                    formProperties[form.Name] = form.GetCurrentProperties(false);
                                }
                            }
                            saveNewLayout(textInput.GetText(), textInput.GetCheckState(), true, formProperties);
                        }
                    };
                    currentDatabaseMenuLevel.Insert(0, newLayout);
                }
                currentMenuLevel.AddRange(currentDatabaseMenuLevel);

                saveMenu = new ToolStripMenuItem("Save", null, currentMenuLevel.ToArray());
            }

            #endregion

            #region Delete Options
            //set up user delete options
            currentMenuLevel = new List <ToolStripItem>();
            foreach (var item in _userLayoutList)
            {
                var tempItem  = item;
                var newOption = new ToolStripMenuItem {
                    Text = item.Name
                };
                newOption.Click += (s, e) =>
                {
                    if (MessageBox.Show(string.Format("Are you sure you want to delete '{0}'?", tempItem.Name), "Delete", MessageBoxButtons.YesNo) == DialogResult.Yes)
                    {
                        _userLayoutList.Remove(tempItem);
                        SaveUserLayoutList();
                    }
                };
                currentMenuLevel.Add(newOption);
            }
            //Dont allow user to delete defaults
            currentMenuLevel.RemoveRange(0, 2);
            //dont delete if nothing to delete, but check for database first
            if (noDatabase)
            {
                deleteMenu = currentMenuLevel.Count > 0 ?
                             new ToolStripMenuItem("Delete", null, currentMenuLevel.ToArray()) :
                             null;
            }
            else
            {
                var currentDatabaseMenuLevel = new List <ToolStripItem>();
                if (currentMenuLevel.Count > 0)
                {
                    currentMenuLevel.Add(new ToolStripSeparator());
                }

                IList <LayoutProperty> databaseLayouts;
                lock (_session)
                    databaseLayouts = _session.QueryOver <LayoutProperty>().List();

                foreach (var item in databaseLayouts)
                {
                    var tempItem  = item;
                    var newOption = new ToolStripMenuItem {
                        Text = item.Name
                    };
                    newOption.Click += (s, e) =>
                    {
                        if (MessageBox.Show(string.Format("Are you sure you want to delete '{0}'?", tempItem.Name), "Delete", MessageBoxButtons.YesNo) == DialogResult.Yes)
                        {
                            _session.Delete(tempItem);
                            _session.Flush();
                        }
                    };
                    currentDatabaseMenuLevel.Add(newOption);
                }
                currentDatabaseMenuLevel.RemoveAt(0);

                currentMenuLevel.AddRange(currentDatabaseMenuLevel);

                if (currentMenuLevel.Count > 0)
                {
                    deleteMenu = new ToolStripMenuItem("Delete", null, currentMenuLevel.ToArray());
                }
            }

            #endregion

            menuList.Add(saveMenu);
            menuList.Add(loadMenu);
            if (deleteMenu != null)
            {
                menuList.Add(deleteMenu);
            }

            return(menuList);
        }
Exemplo n.º 3
0
 public void Visit(LayoutProperty prop)
 {
     Properties.Add(prop);
 }
Exemplo n.º 4
0
        internal void LoadLayout(LayoutProperty userLayout)
        {
            if (userLayout == null)
                return;

            var tempFilepath = Path.GetTempFileName();
            using (var tempFile = new StreamWriter(tempFilepath, false, Encoding.Unicode))
                tempFile.Write(userLayout.PaneLocations);

            try
            {
                dockPanel.SuspendLayout();
                dockPanel.LoadFromXml(tempFilepath, DeserializeForm);
                dockPanel.ResumeLayout(true, true);
            }
            //catch(InvalidOperationException e)
            //catch(IndexOutOfRangeException e)
            catch(Exception e)
            {
                if (userLayout.Name == "System Default")
                    throw new IndexOutOfRangeException("error setting system default layout", e);

                MessageBox.Show(this, "Error loading layout. Reverting to system default.", "Layout Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                _layoutManager.CurrentLayout = _layoutManager.DefaultSystemLayout;
            }
            finally
            {
                File.Delete(tempFilepath);
            }

            if (userLayout.HasCustomColumnSettings)
                foreach (var form in persistentForms)
                    form.LoadLayout(userLayout.FormProperties[form.Name]);
        }
Exemplo n.º 5
0
        private void updateLayout(LayoutProperty layoutProperty, bool saveColumns, bool isDatabase, IDictionary<string, FormProperty> formProperties)
        {
            layoutProperty.PaneLocations = getPaneLocationXML();
            layoutProperty.HasCustomColumnSettings = saveColumns;
            layoutProperty.FormProperties = formProperties;

            if (isDatabase)
            {
                lock (_session)
                {
                    _session.Save(layoutProperty);
                    _session.Flush();
                }
            }
            else
                SaveUserLayoutList();
        }
Exemplo n.º 6
0
        private LayoutProperty saveNewLayout(string layoutName, bool saveColumns, bool isDatabase, IDictionary<string, FormProperty> formProperties)
        {
            var tempLayout = new LayoutProperty
            {
                Name = layoutName,
                PaneLocations = getPaneLocationXML(),
                HasCustomColumnSettings = saveColumns,
            };

            tempLayout.FormProperties = formProperties;

            if (isDatabase)
            {
                lock (_session)
                {
                    _session.Save(tempLayout);
                    _session.Flush();
                }
            }
            else
            {
                _userLayoutList.Add(tempLayout);
                SaveUserLayoutList();
            }

            return tempLayout;
        }
Exemplo n.º 7
0
        /// <summary>
        /// Populates local list of user layouts with internally stored values. 
        /// Default values are created if no values are stored.
        /// </summary>
        private void refreshUserLayoutList()
        {
            var retrievedList = new List<string>(Util.StringCollectionToStringArray(Properties.Settings.Default.UserLayouts));
            _userLayoutList = new List<LayoutProperty>();

            //stick with an empty list if not in the correct format
            if (retrievedList.Count == 0 || !retrievedList[0].StartsWith("System Default"))
                return;

            for (var x = 0; x < retrievedList.Count; x++)
            {
                var items = retrievedList[x].Split('|');

                var newLayout = new LayoutProperty
                {
                    Name = items[0],
                    PaneLocations = items[1]
                };

                if (!String.IsNullOrEmpty(items[2]))
                {
                    var userType = new FormPropertiesUserType();
                    newLayout.FormProperties = userType.Assemble(items[2], null) as Dictionary<string, FormProperty>;
                    newLayout.HasCustomColumnSettings = true;
                }

                _userLayoutList.Add(newLayout);
            }
        }