/// ------------------------------------------------------------------------------------ /// <summary> /// /// </summary> /// ------------------------------------------------------------------------------------ private void LoadCustomBarsFromSettings() { for (int i = 0; m_settingFiles != null && i < m_settingFiles.Length; i++) { if (m_settingFiles[i] != null && File.Exists(m_settingFiles[i])) { Bar bar = new Bar(); m_dnbMngr.Bars.Add(bar); try { // This should never throw an error. However, according to TE-6485 // there is a case in which we've gotten here and the settings file // was empty. I have no idea how that could happen and it's a lucky // tester that will be able to reproduce the problem. The solution // here is to just throw away the custom toolbar if there is an // error caused by loading its definition file. bar.LoadDefinition(m_settingFiles[i]); } catch { // This should never happen. m_dnbMngr.Bars.Remove(bar); try { File.SetAttributes(m_settingFiles[i], FileAttributes.Normal); File.Delete(m_settingFiles[i]); } catch { } } } } }
private void BarItemClick(object sender, EventArgs e) { BaseItem objItem=sender as BaseItem; BaseItem newItem=null; if(objItem.Name=="file" || objItem.Name=="tools" || objItem.Name=="help" || objItem.Name=="") return; if(objItem.Name=="about") { MessageBox.Show("DotNetBar by DevComponents.com (c) 2001-2003 by DevComponents.com All Rights Reserved."); return; } else if(objItem.Name=="close") { this.DialogResult=DialogResult.OK; this.Close(); return; } else if(objItem.Name=="contents") { if(m_HtmlHelp!=null) m_HtmlHelp.ShowContents(); } else if(objItem.Name=="index") { if(m_HtmlHelp!=null) m_HtmlHelp.ShowContents(); } else if(objItem.Name=="search") { if(m_HtmlHelp!=null) m_HtmlHelp.ShowSearch(); } else if(objItem.Name=="resetimage") { m_DataChanged=true; if(propertyGrid1.SelectedGridItem!=null && propertyGrid1.SelectedGridItem.PropertyDescriptor.PropertyType==typeof(System.Drawing.Image)) { propertyGrid1.SelectedGridItem.PropertyDescriptor.SetValue(propertyGrid1.SelectedObject,null); propertyGrid1.Refresh(); } return; } else if(objItem.Name=="createbar" || objItem.Name=="createmenubar" || objItem.Name=="createstatusbar" || objItem.Name=="createtaskpane") { m_DataChanged=true; Bar bar; if(objItem.Name=="createmenubar") { bar=CreateObject(typeof(Bar)) as Bar; bar.Text="Main Menu"; bar.MenuBar=true; bar.Stretch=true; bar.Name="mainmenu"; } else if(objItem.Name=="createstatusbar") { bar=CreateObject(typeof(Bar)) as Bar; bar.Text="Status"; bar.Stretch=true; bar.Name="statusBar"+((int)m_DotNetBar.Bars.Count+1).ToString(); bar.LayoutType=eLayoutType.Toolbar; bar.GrabHandleStyle=eGrabHandleStyle.ResizeHandle; bar.ItemSpacing=2; } else if(objItem.Name=="createtaskpane") { bar=CreateObject(typeof(Bar)) as Bar; bar.Text="Task Pane"; bar.Stretch=true; bar.Name="taskbar"+((int)m_DotNetBar.Bars.Count+1).ToString(); bar.LayoutType=eLayoutType.TaskList; bar.GrabHandleStyle=eGrabHandleStyle.Caption; } else { bar=CreateObject(typeof(Bar)) as Bar; bar.Text="My Bar"; bar.Name="bar"+((int)m_DotNetBar.Bars.Count+1).ToString(); } bar.SetDesignMode(true); TreeNode barNode=m_BarsNode.Nodes.Add(bar.Text); barNode.Tag=bar; barNode.ImageIndex=3; barNode.SelectedImageIndex=3; bar.DockLine=m_DotNetBar.Bars.Count; m_DotNetBar.Bars.Add(bar); if(objItem.Name=="createtaskpane") bar.DockSide=eDockSide.Right; else if(objItem.Name=="createstatusbar") bar.DockSide=eDockSide.Bottom; else bar.DockSide=eDockSide.Top; if(objItem.Name=="createstatusbar") { LabelItem status=CreateObject(typeof(LabelItem)) as LabelItem; status.Name="label"+status.Id.ToString(); status.Text="Status Ready..."; status.BorderType=eBorderType.SingleLine; status.Width=136; bar.Items.Add(status); bar.RecalcLayout(); TreeNode itemTreeNode=barNode.Nodes.Add(GetTreeItemText(status)); itemTreeNode.Tag=status; itemTreeNode.ImageIndex=GetItemImageIndex(status); itemTreeNode.SelectedImageIndex=itemTreeNode.ImageIndex; itemTreeNode.EnsureVisible(); barTree.SelectedNode=barNode; barNode.EnsureVisible(); } else { barTree.SelectedNode=barNode; barNode.EnsureVisible(); } return; } else if(objItem.Name=="createdockwindow") { m_DataChanged=true; Bar bar=CreateObject(typeof(Bar)) as Bar;; bar.Text="Dockable Window"; bar.Stretch=true; bar.LayoutType=eLayoutType.DockContainer; bar.GrabHandleStyle=eGrabHandleStyle.Caption; bar.Name="dockwindow"+m_DotNetBar.Bars.Count.ToString(); bar.SetDesignMode(true); DockContainerItem dockItem=CreateObject(typeof(DockContainerItem)) as DockContainerItem; dockItem.Name="item_"+dockItem.Id.ToString(); dockItem.Text="Dock Container"; bar.Items.Add(dockItem); TreeNode barNode=m_BarsNode.Nodes.Add(bar.Text); barNode.Tag=bar; barNode.ImageIndex=3; barNode.SelectedImageIndex=3; bar.DockLine=m_DotNetBar.Bars.Count; m_DotNetBar.Bars.Add(bar); bar.DockSide=eDockSide.Left; TreeNode itemTreeNode=barNode.Nodes.Add(GetTreeItemText(dockItem)); itemTreeNode.Tag=dockItem; itemTreeNode.ImageIndex=GetItemImageIndex(dockItem); itemTreeNode.SelectedImageIndex=itemTreeNode.ImageIndex; itemTreeNode.EnsureVisible(); barTree.SelectedNode=barNode; barNode.EnsureVisible(); return; } else if(objItem.Name=="delselected") { if(barTree.SelectedNode==null) return; m_DataChanged=true; if(barTree.SelectedNode.Nodes.Count>0) if(MessageBox.Show(this,"Are you sure you want to delete selected item?","DotNetBar Editor",MessageBoxButtons.YesNo,MessageBoxIcon.Question)==DialogResult.No) return; if(barTree.SelectedNode.Tag is BaseItem) { BaseItem item=barTree.SelectedNode.Tag as BaseItem; Bar cont=item.ContainerControl as Bar; TreeNode topParentNode=barTree.SelectedNode; while(topParentNode.Parent!=null) topParentNode=topParentNode.Parent; if(item.Parent!=null) item.Parent.SubItems.Remove(item); else if(topParentNode==m_CategoriesNode) m_DotNetBar.Items.Remove(item); else if(barTree.SelectedNode.Parent==m_PopupsNode) m_DotNetBar.ContextMenus.Remove(item); if(_barDesigner!=null) _barDesigner.DestroyComponent(item); else item.Dispose(); barTree.SelectedNode.Tag=null; TreeNode parentNode=barTree.SelectedNode.Parent; barTree.Nodes.Remove(barTree.SelectedNode); // If it is last node under one of the categories remove parent too if(parentNode!=null && parentNode.Parent==m_CategoriesNode && parentNode.Nodes.Count==0) barTree.Nodes.Remove(parentNode); if(cont!=null) cont.RecalcLayout(); } else if(barTree.SelectedNode.Tag is Bar) { Bar bar=barTree.SelectedNode.Tag as Bar; m_DotNetBar.Bars.Remove(bar); barTree.SelectedNode.Tag=null; barTree.Nodes.Remove(barTree.SelectedNode); } else if(m_CategoriesNode!=null && barTree.SelectedNode.Parent==m_CategoriesNode) { // Delete all items within this category foreach(TreeNode node in barTree.SelectedNode.Nodes) { objItem=node.Tag as BaseItem; if(objItem!=null) { m_DotNetBar.Items.Remove(objItem); objItem.Dispose(); } node.Tag=null; } barTree.SelectedNode.Remove(); } return; } else if(objItem.Name=="open") { if(m_OpenFileDialog.ShowDialog()==DialogResult.OK && System.IO.File.Exists(m_OpenFileDialog.FileName)) { m_DotNetBar.Bars.Owner.LoadDefinition(m_OpenFileDialog.FileName); m_DefinitionFileName=m_OpenFileDialog.FileName; RefreshView(); m_DataChanged=true; } return; } else if(objItem.Name=="save" && m_DefinitionFileName!="") { m_DotNetBar.Bars.Owner.SaveDefinition(m_DefinitionFileName); return; } else if(objItem.Name=="saveas" || objItem.Name=="save" && m_DefinitionFileName=="") { if(m_SaveFileDialog.ShowDialog()==DialogResult.OK) { m_DotNetBar.Bars.Owner.SaveDefinition(m_SaveFileDialog.FileName); m_DefinitionFileName=m_SaveFileDialog.FileName; } return; } else if(objItem.Name=="savebaras") { // Save currently selected bar if(barTree.SelectedNode==null || !(barTree.SelectedNode.Tag is Bar)) return; Bar bar=barTree.SelectedNode.Tag as Bar; string stitle=m_SaveFileDialog.Title; string defaultExt=m_SaveFileDialog.DefaultExt; string fileName=m_SaveFileDialog.FileName; string filter=m_SaveFileDialog.Filter; m_SaveFileDialog.Title="Save Bar Definition"; m_SaveFileDialog.DefaultExt = "xml"; m_SaveFileDialog.FileName = (bar.Name!=""?bar.Name:"MyBar"); m_SaveFileDialog.Filter = "DotNetBar Bar Files (*.xml)|*.xml|All Files (*.*)|*.*"; if(m_SaveFileDialog.ShowDialog()==DialogResult.OK) { bar.SaveDefinition(m_SaveFileDialog.FileName); } m_SaveFileDialog.Title=stitle; m_SaveFileDialog.DefaultExt=defaultExt; m_SaveFileDialog.FileName=fileName; m_SaveFileDialog.Filter=filter; return; } else if(objItem.Name=="loadbar") { string defaultExt=m_OpenFileDialog.DefaultExt; string filter=m_OpenFileDialog.Filter; m_OpenFileDialog.DefaultExt="xml"; m_OpenFileDialog.Filter = "DotNetBar Bar Files (*.xml)|*.xml|All Files (*.*)|*.*"; if(m_OpenFileDialog.ShowDialog()==DialogResult.OK && System.IO.File.Exists(m_OpenFileDialog.FileName)) { Bar bar=new Bar(); try { bar.LoadDefinition(m_OpenFileDialog.FileName); } catch(Exception ex) { MessageBox.Show("File '"+m_OpenFileDialog.FileName+"' does not appear to be valid Bar file.\n\rException has been generated while loading: "+ex.Source+": "+ex.Message+"\n\r"+ex.StackTrace); return; } bar.Dispose(); bar=new Bar(); m_DotNetBar.SuspendLayout=true; m_DotNetBar.Bars.Add(bar); bar.LoadDefinition(m_OpenFileDialog.FileName); m_DotNetBar.SuspendLayout=false; } m_OpenFileDialog.DefaultExt=defaultExt; m_OpenFileDialog.Filter=filter; } else if(objItem.Name=="moveleft" || objItem.Name=="moveright" || objItem.Name=="moveup" || objItem.Name=="movedown") MoveSelectedItem(objItem.Name); else if(objItem.Name=="addnewitems") objItem.Expanded=true; else if(objItem.Name=="synccat") { RescanCategories(); return; } m_DataChanged=true; // Creation of new items only below this point if(objItem.Name!="buttonitem" && objItem.Name!="textboxitem" && objItem.Name!="comboboxitem" && objItem.Name!="customizeitem" && objItem.Name!="labelitem" && objItem.Name!="mdiwindowlistitem" && objItem.Name!="controlcontaineritem" && objItem.Name!="dockcontaineritem" && objItem.Name!="progressbaritem") return; // Item creation buttons only below!!! if(objItem.Name=="buttonitem") { ButtonItem btn=CreateObject(typeof(ButtonItem)) as ButtonItem; btn.Text="New Button"; newItem=btn; } else if(objItem.Name=="textboxitem") { TextBoxItem tb=CreateObject(typeof(TextBoxItem)) as TextBoxItem; tb.Text="Text Box"; newItem=tb; } else if(objItem.Name=="comboboxitem") { ComboBoxItem cb=CreateObject(typeof(ComboBoxItem)) as ComboBoxItem; cb.Text="Combo Box"; newItem=cb; } else if(objItem.Name=="customizeitem") { CustomizeItem cust=CreateObject(typeof(CustomizeItem)) as CustomizeItem; newItem=cust; } else if(objItem.Name=="labelitem") { LabelItem li=CreateObject(typeof(LabelItem)) as LabelItem; li.Text="Label"; li.BorderType=eBorderType.SingleLine; newItem=li; } else if(objItem.Name=="mdiwindowlistitem") { MdiWindowListItem mdi=CreateObject(typeof(MdiWindowListItem)) as MdiWindowListItem; mdi.Text="MDI Window List"; newItem=mdi; } else if(objItem.Name=="controlcontaineritem") { ControlContainerItem cci=CreateObject(typeof(ControlContainerItem)) as ControlContainerItem; newItem=cci; } else if(objItem.Name=="dockcontaineritem") { DockContainerItem dci=CreateObject(typeof(DockContainerItem)) as DockContainerItem; dci.Text="Dockable Window"; newItem=dci; } else if(objItem.Name=="progressbaritem") { ProgressBarItem pb=CreateObject(typeof(ProgressBarItem)) as ProgressBarItem; pb.Text="Progress Bar"; pb.SetDesignMode(true); pb.Style=m_DotNetBar.Style; pb.ResetBackgroundStyle(); newItem=pb; } if(_barDesigner==null) { string name="item_"; long id=newItem.Id; if(m_DotNetBar!=null) { while(m_DotNetBar.GetItem(name+id,true)!=null) id++; } else if(m_Bar!=null) { while(m_Bar.GetItem(name+id)!=null) id++; } newItem.Name=name+id; } if(barTree.SelectedNode.Tag is BaseItem) { newItem.Style=((BaseItem)barTree.SelectedNode.Tag).Style; if(barTree.SelectedNode.Tag is PopupItem && newItem is PopupItem) ((PopupItem)newItem).PopupType=((PopupItem)barTree.SelectedNode.Tag).PopupType; } else if(barTree.SelectedNode.Tag is Bar) { newItem.Style=((Bar)barTree.SelectedNode.Tag).Style; if(newItem is PopupItem && ((Bar)barTree.SelectedNode.Tag).MenuBar) ((PopupItem)newItem).PopupType=ePopupType.Menu; } // We need to determine is new item being added to the Categories TreeNode itemNode=barTree.SelectedNode; while(itemNode.Parent!=null) itemNode=itemNode.Parent; if(itemNode==m_CategoriesNode) { // Assign category to new item if(barTree.SelectedNode==m_CategoriesNode) newItem.Category="(Untitled)"; else if(barTree.SelectedNode.Parent==m_CategoriesNode) newItem.Category=barTree.SelectedNode.Text; else newItem.Category=((BaseItem)barTree.SelectedNode.Tag).Category; m_DotNetBar.Items.Add(newItem); itemNode=CategorizeItem(newItem); } else if(itemNode==m_PopupsNode) { //if(barTree.SelectedNode.Tag is BaseItem && barTree.SelectedNode.Parent.Tag is BaseItem) if(barTree.SelectedNode.Tag is BaseItem) { //itemNode=barTree.SelectedNode.Parent.Nodes.Add(GetTreeItemText(newItem)); itemNode=barTree.SelectedNode.Nodes.Add(GetTreeItemText(newItem)); //BaseItem objParent=((BaseItem)barTree.SelectedNode.Tag).Parent; BaseItem objParent=(BaseItem)barTree.SelectedNode.Tag; int iPos=-1; // New Items are always added before any system items which are by default kept at the end if(objParent.SubItems.Count>0 && !newItem.SystemItem) { iPos=GetAppendPosition(objParent); } objParent.SubItems.Add(newItem,iPos); } else { itemNode=m_PopupsNode.Nodes.Add(GetTreeItemText(newItem)); m_DotNetBar.ContextMenus.Add(newItem); } } else { Control cont=null; if(barTree.SelectedNode.Tag is BaseItem) { //itemNode=barTree.SelectedNode.Parent.Nodes.Add(GetTreeItemText(newItem)); itemNode=barTree.SelectedNode.Nodes.Add(GetTreeItemText(newItem)); //BaseItem objParent=((BaseItem)barTree.SelectedNode.Tag).Parent; BaseItem objParent=(BaseItem)barTree.SelectedNode.Tag; int iPos=-1; // New Items are always added before any system items which are by default kept at the end if(objParent.SubItems.Count>0 && !newItem.SystemItem) { iPos=GetAppendPosition(objParent); } objParent.SubItems.Add(newItem,iPos); cont=newItem.ContainerControl as Control; if(cont==null) ((BaseItem)barTree.SelectedNode.Tag).Refresh(); } else if(barTree.SelectedNode.Tag is Bar) { itemNode=barTree.SelectedNode.Nodes.Add(GetTreeItemText(newItem)); Bar bar=(Bar)barTree.SelectedNode.Tag; int iPos=-1; // New Items are always added before any system items which are by default kept at the end if(bar.Items.Count>0 && !newItem.SystemItem) { iPos=GetAppendPosition(bar.ItemsContainer); } bar.Items.Add(newItem,iPos); cont=bar; } if(cont!=null && cont is Bar) ((Bar)cont).RecalcLayout(); } itemNode.Tag=newItem; itemNode.ImageIndex=GetItemImageIndex(newItem); itemNode.SelectedImageIndex=itemNode.ImageIndex; itemNode.EnsureVisible(); barTree.SelectedNode=itemNode; //itemNode.BeginEdit(); }
/// ------------------------------------------------------------------------------------ /// <summary> /// If the toolbar has a settings file (i.e. a file that was saved when the /// application was last closed) then restore the toolbar from it. /// </summary> /// <param name="barName"></param> /// <returns>The restored toolbar or null if the toolbar doesn't have a settings /// file.</returns> /// ------------------------------------------------------------------------------------ private Bar BarFromSettingFile(string barName) { string fileSpec = Path.Combine(SettingsFileLocation, m_settingsFilePrefix + "." + barName + ".xml"); if (File.Exists(fileSpec)) { try { Bar bar = new Bar(barName); m_dnbMngr.Bars.Add(bar); bar.LoadDefinition(fileSpec); // Now that we've read the bar specified by barName, remove it's // settings file name from the array storing all of the toolbar // setting files. for (int i = 0; m_settingFiles != null && i < m_settingFiles.Length; i++) { if (m_settingFiles[i] == fileSpec) { m_settingFiles[i] = null; break; } } return bar; } catch {} } return null; }