private void dotNetBarManager1_ItemClick(object sender, System.EventArgs e) { BaseItem item=sender as BaseItem; if(item==null) return; PropertyGrid grid=propertyBars; if(navigationPane1.SelectedPanel==navigationPanePanel2) grid=propertyMenus; if(navigationPane1.SelectedPanel==navigationPanePanel3) grid=propertyCategories; switch(item.Name) { case CREATE_BARS_PARENT: { if (!item.Expanded) item.Expanded = true; break; } case OPEN_DEFINITION: { if(m_OpenFileDialog.ShowDialog()==DialogResult.OK && System.IO.File.Exists(m_OpenFileDialog.FileName)) { DotNetBarManager manager=this.GetDesignManager(); manager.LoadDefinition(m_OpenFileDialog.FileName); m_DefinitionFileName=m_OpenFileDialog.FileName; SetupProperties(); RefreshView(); m_DataChanged=true; } break; } case RESET_IMAGE: { m_DataChanged=true; if(grid.SelectedGridItem!=null && (grid.SelectedGridItem.PropertyDescriptor.PropertyType==typeof(System.Drawing.Image) || grid.SelectedGridItem.PropertyDescriptor.PropertyType==typeof(System.Drawing.Icon))) { grid.SelectedGridItem.PropertyDescriptor.SetValue(grid.SelectedObject,null); } grid.Refresh(); break; } case CLOSE_DESIGNER: { this.DialogResult=DialogResult.OK; this.Close(); break; } case SHOW_HELP: { if(m_HtmlHelp!=null) m_HtmlHelp.ShowContents(); break; } case SHOW_HELP_SEARCH: { if(m_HtmlHelp!=null) m_HtmlHelp.ShowSearch(); break; } case NEW_TOOLBAR: case NEW_MENUBAR: case NEW_STATUSBAR: case NEW_TASKBAR: { m_DataChanged=true; Bar bar; if(item.Name==NEW_MENUBAR) { bar=CreateObject(typeof(Bar)) as Bar; bar.Text="Main Menu"; bar.MenuBar=true; bar.Stretch=true; bar.Name="mainmenu"; } else if(item.Name==NEW_STATUSBAR) { bar=CreateObject(typeof(Bar)) as Bar; bar.Text="Status"; bar.Stretch=true; bar.Name="statusBar"+((int)this.GetDesignManager().Bars.Count+1).ToString(); bar.LayoutType=eLayoutType.Toolbar; bar.GrabHandleStyle=eGrabHandleStyle.ResizeHandle; bar.ItemSpacing=2; } else if(item.Name==NEW_TASKBAR) { bar=CreateObject(typeof(Bar)) as Bar; bar.Text="Task Pane"; bar.Stretch=true; bar.Name="taskbar"+((int)this.GetDesignManager().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)this.GetDesignManager().Bars.Count+1).ToString(); } //bar.SetDesignMode(true); TreeNode barNode=treeBars.Nodes.Add(bar.Text); barNode.Tag=bar; barNode.ImageIndex=3; barNode.SelectedImageIndex=3; bar.DockLine=this.GetDesignManager().Bars.Count; this.GetDesignManager().Bars.Add(bar); if(item.Name==NEW_TASKBAR) bar.DockSide=eDockSide.Right; else if(item.Name==NEW_STATUSBAR) bar.DockSide=eDockSide.Bottom; else bar.DockSide=eDockSide.Top; if(item.Name==NEW_MENUBAR || item.Name==NEW_TOOLBAR) { ButtonItem button=CreateObject(typeof(ButtonItem)) as ButtonItem; AssignItemName(button); button.Text=button.Name; //button.GenerateCommandLink = true; //UpdateCommandLink(button); bar.Items.Add(button); bar.RecalcLayout(); TreeNode itemTreeNode=barNode.Nodes.Add(GetTreeItemText(button)); itemTreeNode.Tag=button; itemTreeNode.ImageIndex=GetItemImageIndex(button); itemTreeNode.SelectedImageIndex=itemTreeNode.ImageIndex; itemTreeNode.EnsureVisible(); treeBars.SelectedNode=barNode; barNode.EnsureVisible(); } else if(item.Name==NEW_STATUSBAR) { LabelItem status=CreateObject(typeof(LabelItem)) as LabelItem; AssignItemName(status); 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(); treeBars.SelectedNode=barNode; barNode.EnsureVisible(); } else { treeBars.SelectedNode=barNode; barNode.EnsureVisible(); } break; } case NEW_DOCKBAR: { 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"+this.GetDesignManager().Bars.Count.ToString(); DockContainerItem dockItem=CreateObject(typeof(DockContainerItem)) as DockContainerItem; AssignItemName(dockItem); dockItem.Text="Dock Container"; bar.Items.Add(dockItem); TreeNode barNode=treeBars.Nodes.Add(bar.Text); barNode.Tag=bar; barNode.ImageIndex=3; barNode.SelectedImageIndex=3; bar.DockLine=this.GetDesignManager().Bars.Count; this.GetDesignManager().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(); treeBars.SelectedNode=barNode; barNode.EnsureVisible(); break; } case DELETE: { TreeView tree=GetSelectedTreeView(); DotNetBarManager manager=this.GetDesignManager(); if(tree.SelectedNode==null) break; m_DataChanged=true; if(tree.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) break; } TreeNode nextNode=tree.SelectedNode.NextVisibleNode; if(tree.SelectedNode.Tag is BaseItem) { BaseItem selectedItem=tree.SelectedNode.Tag as BaseItem; Bar cont=selectedItem.ContainerControl as Bar; TreeNode topParentNode=tree.SelectedNode; while(topParentNode.Parent!=null) topParentNode=topParentNode.Parent; if(selectedItem.Parent!=null) selectedItem.Parent.SubItems.Remove(selectedItem); else if(tree==treeCategories) manager.Items.Remove(selectedItem); else if(tree==treeMenus) manager.ContextMenus.Remove(selectedItem); DeleteComponent(selectedItem); tree.SelectedNode.Tag=null; TreeNode parentNode=tree.SelectedNode.Parent; tree.Nodes.Remove(tree.SelectedNode); // If it is last node under one of the categories remove parent too if(parentNode!=null && parentNode.Parent==null && parentNode.Nodes.Count==0 && tree==treeCategories) tree.Nodes.Remove(parentNode); if(cont!=null) cont.RecalcLayout(); } else if(tree.SelectedNode.Tag is Bar) { Bar bar=tree.SelectedNode.Tag as Bar; manager.Bars.Remove(bar); DeleteComponent(bar); tree.SelectedNode.Tag=null; tree.Nodes.Remove(tree.SelectedNode); } else if(tree==treeCategories && tree.SelectedNode.Parent==null) { // Delete all items within this category foreach(TreeNode node in tree.SelectedNode.Nodes) { BaseItem childItem=node.Tag as BaseItem; if(childItem!=null) { manager.Items.Remove(childItem); DeleteComponent(childItem); } node.Tag=null; } tree.SelectedNode.Remove(); } if(tree.Nodes.Count==0) { propertyBars.SelectedObject=null; propertyMenus.SelectedObject=null; propertyCategories.SelectedObject=null; } RefreshDesignBar(); EnableCommands(tree, tree.SelectedNode); break; } case NEW_DEFINITION: { DotNetBarManager manager=this.GetDesignManager(); if(manager!=null) { manager.SuspendLayout=true; manager.Bars.ClearNonDocumentBars(); manager.Items.Clear(); manager.ContextMenus.Clear(); manager.SuspendLayout=false; SetupProperties(); this.RefreshView(); } break; } case SAVE_DEFINITION: case SAVE_DEFINITION_AS: { SaveDefinition((item.Name==SAVE_DEFINITION_AS)); break; } case SAVE_CLOSE: { if (m_ExternalManager != null) m_ExternalManager.Definition = this.GetDesignManager().Definition; else { if (SaveDefinition(false) == DialogResult.Cancel) return; } m_DataChanged = false; this.DialogResult = DialogResult.Yes; this.Close(); break; } case SAVE_BAR_AS: { TreeView tree=GetSelectedTreeView(); // Save currently selected bar if(tree.SelectedNode==null || !(tree.SelectedNode.Tag is Bar)) return; Bar bar=tree.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; break; } case LOAD_BAR: { 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(); this.GetDesignManager().SuspendLayout=true; this.GetDesignManager().Bars.Add(bar); bar.LoadDefinition(m_OpenFileDialog.FileName); this.GetDesignManager().SuspendLayout=false; this.DisplayTreeBar(bar); } m_OpenFileDialog.DefaultExt=defaultExt; m_OpenFileDialog.Filter=filter; break; } case MOVE_LEFT: case MOVE_RIGHT: case MOVE_UP: case MOVE_DOWN: { MoveSelectedItem(item.Name); RefreshDesignBar(); break; } case SYNC_CATEGORIES: { RescanCategories(); break; } case NEW_BUTTON: { ButtonItem btn=CreateObject(typeof(ButtonItem)) as ButtonItem; AssignItemName(btn); btn.Text=btn.Name; AddNewItem(btn); RefreshDesignBar(); //if ((btn.ContainerControl is Bar || btn.Parent != null) && navigationPane1.CheckedButton != buttonCategories) //{ // btn.GenerateCommandLink = true; // UpdateCommandLink(btn); //} break; } case NEW_TEXTBOX: { TextBoxItem tb=CreateObject(typeof(TextBoxItem)) as TextBoxItem; AssignItemName(tb); tb.Text=tb.Name; AddNewItem(tb); RefreshDesignBar(); break; } case NEW_COMBO: { ComboBoxItem cb=CreateObject(typeof(ComboBoxItem)) as ComboBoxItem; TypeDescriptor.GetProperties(cb)["DisplayMember"].SetValue(cb, "Text"); AssignItemName(cb); cb.Text=cb.Name; AddNewItem(cb); RefreshDesignBar(); break; } case NEW_CUSTOMIZE: { CustomizeItem cust=CreateObject(typeof(CustomizeItem)) as CustomizeItem; AssignItemName(cust); AddNewItem(cust); RefreshDesignBar(); break; } case NEW_LABEL: { LabelItem li=CreateObject(typeof(LabelItem)) as LabelItem; li.BorderType=eBorderType.SingleLine; AssignItemName(li); li.Text=li.Name; AddNewItem(li); RefreshDesignBar(); break; } case NEW_COLORPICKER: { ColorPickerDropDown cp=CreateObject(typeof(ColorPickerDropDown)) as ColorPickerDropDown; AssignItemName(cp); cp.Text=cp.Name; AddNewItem(cp); RefreshDesignBar(); break; } case NEW_MDILIST: { MdiWindowListItem mdi=CreateObject(typeof(MdiWindowListItem)) as MdiWindowListItem; mdi.Text="MDI Window List"; AssignItemName(mdi); AddNewItem(mdi); RefreshDesignBar(); break; } case NEW_CONTROLCONT: { ControlContainerItem cci=CreateObject(typeof(ControlContainerItem)) as ControlContainerItem; AssignItemName(cci); AddNewItem(cci); RefreshDesignBar(); break; } case NEW_DOCK: { DockContainerItem dci=CreateObject(typeof(DockContainerItem)) as DockContainerItem; dci.Text="Dockable Window"; AssignItemName(dci); AddNewItem(dci); RefreshDesignBar(); break; } case NEW_PROGRESS: { ProgressBarItem pb=CreateObject(typeof(ProgressBarItem)) as ProgressBarItem; pb.SetDesignMode(true); if(this.GetDesignManager()!=null) pb.Style=this.GetDesignManager().Style; else if(this.GetDesignBar()!=null) pb.Style=this.GetDesignBar().Style; pb.ResetBackgroundStyle(); pb.SetDesignMode(false); AssignItemName(pb); pb.Text=pb.Name; AddNewItem(pb); RefreshDesignBar(); break; } } }