set => SetValue(LayoutProperty, value);
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); }
public void Visit(LayoutProperty prop) { Properties.Add(prop); }
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]); }
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(); }
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; }
/// <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); } }