Пример #1
0
		/// ------------------------------------------------------------------------------------
		/// <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 { }
					}
				}
			}
		}
Пример #2
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();
		}
Пример #3
0
		/// ------------------------------------------------------------------------------------
		/// <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;
		}