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> /// Docks the bar to the specified side of the reference bar. /// </summary> /// <param name="barToDock">Bar to dock.</param> /// <param name="referenceBar">Reference bar.</param> /// <param name="dockToReferenceBarSide">Side of the reference bar to dock the bar to.</param> public void Dock(Bar barToDock, Bar referenceBar, eDockSide dockToReferenceBarSide) { if (dockToReferenceBarSide == eDockSide.None) throw new ArgumentException("eDockSide.None is not supported value for dockToReferenceBarSide parameter. Use Float method to make floating bar."); if (referenceBar.DockSide == eDockSide.None) throw new ArgumentException("referenceBar must be docked to be used as reference for docking."); if (barToDock.LayoutType != eLayoutType.DockContainer) { barToDock.DockSide = dockToReferenceBarSide; return; } if (dockToReferenceBarSide == eDockSide.Document) { System.Collections.ArrayList list = new System.Collections.ArrayList(barToDock.Items.Count); barToDock.Items.CopyTo(list); DockContainerItem firstItem = null; foreach (BaseItem item in list) { DockContainerItem dockitem = item as DockContainerItem; if (dockitem != null) { if (firstItem == null) firstItem = dockitem; dockitem.Displayed = false; if (dockitem.OriginalBarName == "") { dockitem.OriginalBarName = barToDock.Name; dockitem.OriginalPosition = barToDock.Items.IndexOf(dockitem); } barToDock.Items.Remove(dockitem); referenceBar.Items.Add(dockitem); } } referenceBar.RecalcLayout(); if (firstItem != null) referenceBar.SelectedDockContainerItem = firstItem; referenceBar.InvokeBarDockEvents(); if (barToDock.CustomBar) { this.Bars.Remove(barToDock); barToDock.Dispose(); } else { barToDock.Visible = false; } } else { DocumentDockUIManager dockManager = GetDocumentUIManager(referenceBar.DockSide); if (!this.Bars.Contains(barToDock)) this.Bars.Add(barToDock); dockManager.Dock(referenceBar, barToDock, dockToReferenceBarSide); } }