示例#1
0
		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();
		}
示例#2
0
        /// <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);
            }
        }