2107 lines
64 KiB
C#
2107 lines
64 KiB
C#
using System;
|
|
using System.Drawing;
|
|
using System.Collections;
|
|
using System.ComponentModel;
|
|
using System.Windows.Forms;
|
|
|
|
namespace DevComponents.DotNetBar
|
|
{
|
|
/// <summary>
|
|
/// Summary description for BarEditor.
|
|
/// </summary>
|
|
public class BarEditor : System.Windows.Forms.Form
|
|
{
|
|
private System.Windows.Forms.Panel panel1;
|
|
private System.Windows.Forms.TreeView barTree;
|
|
private System.Windows.Forms.PropertyGrid propertyGrid1;
|
|
private System.Windows.Forms.Splitter splitter1;
|
|
private System.ComponentModel.IContainer components;
|
|
private DevComponents.DotNetBar.DockSite barTopDockSite;
|
|
private DevComponents.DotNetBar.DockSite barBottomDockSite;
|
|
private DevComponents.DotNetBar.DockSite barLeftDockSite;
|
|
private DevComponents.DotNetBar.DockSite barRightDockSite;
|
|
private DevComponents.DotNetBar.DotNetBarManager barManager;
|
|
private System.Windows.Forms.ImageList imageList;
|
|
|
|
private DotNetBarManager m_DotNetBar;
|
|
private Bar m_Bar=null;
|
|
private TreeNode m_BarsNode=null,m_CategoriesNode=null,m_PopupsNode=null;
|
|
|
|
private System.Windows.Forms.Button btnClose;
|
|
private System.Windows.Forms.Button btnCancel;
|
|
private System.Windows.Forms.OpenFileDialog m_OpenFileDialog;
|
|
private Hashtable m_catTable;
|
|
private System.Windows.Forms.SaveFileDialog m_SaveFileDialog;
|
|
private System.Windows.Forms.ImageList m_BarImages;
|
|
private string m_DefinitionFileName="";
|
|
private bool m_ShowItemText=true;
|
|
private GridViewSubclass m_GridViewSubclass=null;
|
|
private bool m_DataChanged=false;
|
|
private HTMLHelp m_HtmlHelp=null;
|
|
|
|
internal IDesignerServices _barDesigner=null;
|
|
|
|
public BarEditor(DotNetBarManager dotnetbar)
|
|
{
|
|
m_DotNetBar=dotnetbar;
|
|
Initialize();
|
|
}
|
|
|
|
public BarEditor(Bar bar)
|
|
{
|
|
m_Bar=bar;
|
|
Initialize();
|
|
}
|
|
|
|
private void Initialize()
|
|
{
|
|
InitializeComponent();
|
|
if(m_Bar!=null)
|
|
propertyGrid1.BrowsableAttributes=new AttributeCollection(new Attribute[] {BrowsableAttribute.Yes});
|
|
else
|
|
propertyGrid1.BrowsableAttributes=new AttributeCollection(new Attribute[] {DevCoBrowsable.Yes});
|
|
propertyGrid1.CommandsVisibleIfAvailable=false;
|
|
LoadResourceImages();
|
|
m_catTable=new Hashtable(20);
|
|
|
|
m_GridViewSubclass=new GridViewSubclass();
|
|
m_GridViewSubclass.OnRightMouseDown+=new EventHandler(this.GridViewMouseDown);
|
|
|
|
foreach(Control ctrl in propertyGrid1.Controls)
|
|
{
|
|
if(ctrl.GetType().ToString().IndexOf("PropertyGridView")>=0)
|
|
{
|
|
m_GridViewSubclass.AssignHandle(ctrl.Handle);
|
|
break;
|
|
}
|
|
}
|
|
|
|
if(m_DotNetBar!=null && !m_DotNetBar.IsDesignTime() || m_Bar!=null)
|
|
{
|
|
btnCancel.Visible=false;
|
|
btnClose.Location=btnCancel.Location;
|
|
}
|
|
|
|
CreateToolbar();
|
|
RefreshView();
|
|
}
|
|
|
|
/// <summary>
|
|
/// Clean up any resources being used.
|
|
/// </summary>
|
|
protected override void Dispose( bool disposing )
|
|
{
|
|
if( disposing )
|
|
{
|
|
if(components != null)
|
|
{
|
|
components.Dispose();
|
|
}
|
|
}
|
|
base.Dispose( disposing );
|
|
}
|
|
|
|
#region Windows Form Designer generated code
|
|
/// <summary>
|
|
/// Required method for Designer support - do not modify
|
|
/// the contents of this method with the code editor.
|
|
/// </summary>
|
|
private void InitializeComponent()
|
|
{
|
|
this.components = new System.ComponentModel.Container();
|
|
System.Resources.ResourceManager resources = new System.Resources.ResourceManager(typeof(BarEditor));
|
|
this.panel1 = new System.Windows.Forms.Panel();
|
|
this.propertyGrid1 = new System.Windows.Forms.PropertyGrid();
|
|
this.splitter1 = new System.Windows.Forms.Splitter();
|
|
this.barTree = new System.Windows.Forms.TreeView();
|
|
this.imageList = new System.Windows.Forms.ImageList(this.components);
|
|
#if TRIAL
|
|
this.barManager = new DevComponents.DotNetBar.DotNetBarManager(this.components);
|
|
#else
|
|
this.barManager = new DevComponents.DotNetBar.DotNetBarManager(this.components,false);
|
|
#endif
|
|
this.barBottomDockSite = new DevComponents.DotNetBar.DockSite();
|
|
this.m_BarImages = new System.Windows.Forms.ImageList(this.components);
|
|
this.barLeftDockSite = new DevComponents.DotNetBar.DockSite();
|
|
this.barRightDockSite = new DevComponents.DotNetBar.DockSite();
|
|
this.barTopDockSite = new DevComponents.DotNetBar.DockSite();
|
|
this.m_OpenFileDialog = new System.Windows.Forms.OpenFileDialog();
|
|
this.m_SaveFileDialog = new System.Windows.Forms.SaveFileDialog();
|
|
this.btnClose = new System.Windows.Forms.Button();
|
|
this.btnCancel = new System.Windows.Forms.Button();
|
|
this.panel1.SuspendLayout();
|
|
this.SuspendLayout();
|
|
//
|
|
// panel1
|
|
//
|
|
this.panel1.Anchor = (((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
|
|
| System.Windows.Forms.AnchorStyles.Left)
|
|
| System.Windows.Forms.AnchorStyles.Right);
|
|
this.panel1.Controls.AddRange(new System.Windows.Forms.Control[] {
|
|
this.propertyGrid1,
|
|
this.splitter1,
|
|
this.barTree});
|
|
this.panel1.Location = new System.Drawing.Point(8, 48);
|
|
this.panel1.Name = "panel1";
|
|
this.panel1.Size = new System.Drawing.Size(520, 232);
|
|
this.panel1.TabIndex = 5;
|
|
//
|
|
// propertyGrid1
|
|
//
|
|
this.propertyGrid1.CommandsVisibleIfAvailable = true;
|
|
this.propertyGrid1.Dock = System.Windows.Forms.DockStyle.Fill;
|
|
this.propertyGrid1.LargeButtons = false;
|
|
this.propertyGrid1.LineColor = System.Drawing.SystemColors.ScrollBar;
|
|
this.propertyGrid1.Location = new System.Drawing.Point(182, 0);
|
|
this.propertyGrid1.Name = "propertyGrid1";
|
|
this.propertyGrid1.Size = new System.Drawing.Size(338, 232);
|
|
this.propertyGrid1.TabIndex = 1;
|
|
this.propertyGrid1.Text = "propertyGrid1";
|
|
this.propertyGrid1.ViewBackColor = System.Drawing.SystemColors.Window;
|
|
this.propertyGrid1.ViewForeColor = System.Drawing.SystemColors.WindowText;
|
|
this.propertyGrid1.PropertyValueChanged += new System.Windows.Forms.PropertyValueChangedEventHandler(this.OnPropertyValueChanged);
|
|
//
|
|
// splitter1
|
|
//
|
|
this.splitter1.Location = new System.Drawing.Point(176, 0);
|
|
this.splitter1.Name = "splitter1";
|
|
this.splitter1.Size = new System.Drawing.Size(6, 232);
|
|
this.splitter1.TabIndex = 2;
|
|
this.splitter1.TabStop = false;
|
|
//
|
|
// barTree
|
|
//
|
|
this.barTree.Dock = System.Windows.Forms.DockStyle.Left;
|
|
this.barTree.HideSelection = false;
|
|
this.barTree.ImageList = this.imageList;
|
|
this.barTree.Name = "barTree";
|
|
this.barTree.Size = new System.Drawing.Size(176, 232);
|
|
this.barTree.TabIndex = 0;
|
|
this.barTree.KeyDown += new System.Windows.Forms.KeyEventHandler(this.TreeKeyDown);
|
|
this.barTree.MouseDown += new System.Windows.Forms.MouseEventHandler(this.TreeMouseDown);
|
|
this.barTree.AfterSelect += new System.Windows.Forms.TreeViewEventHandler(this.ItemSelected);
|
|
this.barTree.BeforeSelect += new System.Windows.Forms.TreeViewCancelEventHandler(this.BeforeItemSelect);
|
|
this.barTree.AfterLabelEdit += new System.Windows.Forms.NodeLabelEditEventHandler(this.ItemEdited);
|
|
this.barTree.BeforeCollapse += new System.Windows.Forms.TreeViewCancelEventHandler(this.NodeCollapsing);
|
|
this.barTree.BeforeExpand += new System.Windows.Forms.TreeViewCancelEventHandler(this.NodeExpanding);
|
|
//
|
|
// imageList
|
|
//
|
|
this.imageList.ColorDepth = System.Windows.Forms.ColorDepth.Depth8Bit;
|
|
this.imageList.ImageSize = new System.Drawing.Size(16, 16);
|
|
this.imageList.TransparentColor = System.Drawing.Color.Magenta;
|
|
//
|
|
// barManager
|
|
//
|
|
this.barManager.BottomDockSite = this.barBottomDockSite;
|
|
this.barManager.Images = this.m_BarImages;
|
|
this.barManager.ImagesLarge = null;
|
|
this.barManager.ImagesMedium = null;
|
|
this.barManager.LeftDockSite = this.barLeftDockSite;
|
|
this.barManager.ParentForm = this;
|
|
this.barManager.RightDockSite = this.barRightDockSite;
|
|
this.barManager.TopDockSite = this.barTopDockSite;
|
|
this.barManager.UseHook = true;
|
|
this.barManager.ItemClick += new System.EventHandler(this.BarItemClick);
|
|
//
|
|
// barBottomDockSite
|
|
//
|
|
this.barBottomDockSite.Dock = System.Windows.Forms.DockStyle.Bottom;
|
|
this.barBottomDockSite.Location = new System.Drawing.Point(0, 325);
|
|
this.barBottomDockSite.Name = "barBottomDockSite";
|
|
this.barBottomDockSite.Size = new System.Drawing.Size(536, 0);
|
|
this.barBottomDockSite.TabIndex = 8;
|
|
this.barBottomDockSite.TabStop = false;
|
|
//
|
|
// m_BarImages
|
|
//
|
|
this.m_BarImages.ColorDepth = System.Windows.Forms.ColorDepth.Depth8Bit;
|
|
this.m_BarImages.ImageSize = new System.Drawing.Size(16, 16);
|
|
this.m_BarImages.TransparentColor = System.Drawing.Color.Magenta;
|
|
//
|
|
// barLeftDockSite
|
|
//
|
|
this.barLeftDockSite.Dock = System.Windows.Forms.DockStyle.Left;
|
|
this.barLeftDockSite.Name = "barLeftDockSite";
|
|
this.barLeftDockSite.Size = new System.Drawing.Size(0, 325);
|
|
this.barLeftDockSite.TabIndex = 9;
|
|
this.barLeftDockSite.TabStop = false;
|
|
//
|
|
// barRightDockSite
|
|
//
|
|
this.barRightDockSite.Dock = System.Windows.Forms.DockStyle.Right;
|
|
this.barRightDockSite.Location = new System.Drawing.Point(536, 0);
|
|
this.barRightDockSite.Name = "barRightDockSite";
|
|
this.barRightDockSite.Size = new System.Drawing.Size(0, 325);
|
|
this.barRightDockSite.TabIndex = 10;
|
|
this.barRightDockSite.TabStop = false;
|
|
//
|
|
// barTopDockSite
|
|
//
|
|
this.barTopDockSite.Dock = System.Windows.Forms.DockStyle.Top;
|
|
this.barTopDockSite.Name = "barTopDockSite";
|
|
this.barTopDockSite.Size = new System.Drawing.Size(536, 0);
|
|
this.barTopDockSite.TabIndex = 7;
|
|
this.barTopDockSite.TabStop = false;
|
|
//
|
|
// m_OpenFileDialog
|
|
//
|
|
this.m_OpenFileDialog.Filter = "DotNetBar Files (*.dnb)|*.dnb|All Files (*.*)|*.*";
|
|
this.m_OpenFileDialog.ShowReadOnly = true;
|
|
this.m_OpenFileDialog.Title = "Open DotNetBar Definition File";
|
|
//
|
|
// m_SaveFileDialog
|
|
//
|
|
this.m_SaveFileDialog.CreatePrompt = false;
|
|
this.m_SaveFileDialog.DefaultExt = "dnb";
|
|
this.m_SaveFileDialog.FileName = "dotnetbardefinition";
|
|
this.m_SaveFileDialog.Filter = "DotNetBar Files (*.dnb)|*.dnb|XML Files (*.xml)|*.xml|All Files (*.*)|*.*";
|
|
this.m_SaveFileDialog.Title = "Save DotNetBar Definition";
|
|
//
|
|
// btnClose
|
|
//
|
|
this.btnClose.Anchor = (System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right);
|
|
this.btnClose.DialogResult = System.Windows.Forms.DialogResult.OK;
|
|
this.btnClose.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
|
this.btnClose.Location = new System.Drawing.Point(376, 291);
|
|
this.btnClose.Name = "btnClose";
|
|
this.btnClose.Size = new System.Drawing.Size(73, 24);
|
|
this.btnClose.TabIndex = 6;
|
|
this.btnClose.Text = "OK";
|
|
this.btnClose.Click += new System.EventHandler(this.CloseClick);
|
|
//
|
|
// btnCancel
|
|
//
|
|
this.btnCancel.Anchor = (System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right);
|
|
this.btnCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel;
|
|
this.btnCancel.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
|
this.btnCancel.Location = new System.Drawing.Point(455, 291);
|
|
this.btnCancel.Name = "btnCancel";
|
|
this.btnCancel.Size = new System.Drawing.Size(73, 24);
|
|
this.btnCancel.TabIndex = 7;
|
|
this.btnCancel.Text = "Cancel";
|
|
this.btnCancel.Click += new System.EventHandler(this.CloseClick);
|
|
//
|
|
// BarEditor
|
|
//
|
|
//this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
|
|
this.ClientSize = new System.Drawing.Size(536, 325);
|
|
this.Controls.AddRange(new System.Windows.Forms.Control[] {
|
|
this.panel1,
|
|
this.btnClose,
|
|
this.btnCancel,
|
|
this.barTopDockSite,
|
|
this.barBottomDockSite,
|
|
this.barLeftDockSite,
|
|
this.barRightDockSite});
|
|
this.MinimizeBox = false;
|
|
this.Name = "BarEditor";
|
|
this.Text = "DotNetBar Editor";
|
|
this.Closing += new System.ComponentModel.CancelEventHandler(this.FormClosing);
|
|
this.Load += new EventHandler(this.FormLoad);
|
|
this.panel1.ResumeLayout(false);
|
|
this.ResumeLayout(false);
|
|
|
|
}
|
|
#endregion
|
|
|
|
private void FormLoad(object sender, EventArgs e)
|
|
{
|
|
try
|
|
{
|
|
Microsoft.Win32.RegistryKey key=Microsoft.Win32.Registry.LocalMachine;
|
|
string helpfile="";
|
|
try
|
|
{
|
|
key=key.OpenSubKey("Software\\DevComponents\\DotNetBar");
|
|
helpfile=key.GetValue("InstallationFolder","").ToString();
|
|
}
|
|
finally{key.Close();}
|
|
|
|
if(helpfile.Substring(helpfile.Length-1,1)!="\\")
|
|
helpfile+="\\";
|
|
|
|
if(System.IO.File.Exists(helpfile+"dotnetbar.chm"))
|
|
helpfile+="dotnetbar.chm";
|
|
else
|
|
helpfile="";
|
|
|
|
if(helpfile!="")
|
|
m_HtmlHelp=new HTMLHelp(this,helpfile);
|
|
}
|
|
catch(Exception)
|
|
{
|
|
}
|
|
|
|
// Load position if any
|
|
try
|
|
{
|
|
Microsoft.Win32.RegistryKey key=Microsoft.Win32.Registry.CurrentUser;
|
|
key=key.OpenSubKey("Software\\DevComponents\\DotNetBar");
|
|
if(key!=null)
|
|
{
|
|
try
|
|
{
|
|
string s=key.GetValue("DesignerPosition","").ToString();
|
|
if(s!="")
|
|
{
|
|
if(s=="1")
|
|
{
|
|
this.WindowState=FormWindowState.Maximized;
|
|
}
|
|
else
|
|
{
|
|
string[] arr=s.Split(',');
|
|
if(arr.Length==4)
|
|
{
|
|
Rectangle r=new Rectangle(int.Parse(arr[0]),int.Parse(arr[1]),int.Parse(arr[2]),int.Parse(arr[3]));
|
|
foreach(Screen screen in Screen.AllScreens)
|
|
{
|
|
if(screen.Bounds.IntersectsWith(r))
|
|
{
|
|
this.StartPosition=FormStartPosition.Manual;
|
|
this.DesktopLocation=r.Location;
|
|
this.Size=r.Size;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
s=key.GetValue("DesignerPanelSize","").ToString();
|
|
barTree.Width=int.Parse(s);
|
|
}
|
|
finally
|
|
{
|
|
key.Close();
|
|
}
|
|
}
|
|
}
|
|
catch(Exception)
|
|
{
|
|
}
|
|
}
|
|
|
|
#region Toolbar Definition Code
|
|
private void CreateToolbar()
|
|
{
|
|
Bar bar, barToolbar;
|
|
ButtonItem item, item2, item3, popupmain;
|
|
ButtonItem popup=new ButtonItem("popup");
|
|
barManager.Items.Add(popup);
|
|
bar=new Bar("Main Menu");
|
|
barManager.Bars.Add(bar);
|
|
bar.MenuBar=true;
|
|
bar.Stretch=true;
|
|
|
|
barToolbar=new Bar("Item Navigation");
|
|
barManager.Bars.Add(barToolbar);
|
|
|
|
// File Menu
|
|
item=new ButtonItem("file");
|
|
item.Text="&File";
|
|
item.PopupType=ePopupType.Menu;
|
|
bar.Items.Add(item);
|
|
item2=new ButtonItem("open");
|
|
item2.Shortcuts.Add(eShortcut.CtrlO);
|
|
item.SubItems.Add(item2);
|
|
item2.Text="&Open definition...";
|
|
item2.ImageIndex=4;
|
|
barToolbar.Items.Add(item2.Copy());
|
|
|
|
item2=new ButtonItem("save");
|
|
item2.Shortcuts.Add(eShortcut.CtrlS);
|
|
item.SubItems.Add(item2);
|
|
item2.Text="&Save definition...";
|
|
item2.ImageIndex=5;
|
|
barToolbar.Items.Add(item2.Copy());
|
|
item2.BeginGroup=true;
|
|
|
|
item2=new ButtonItem("saveas");
|
|
item2.Text="&Save definition as...";
|
|
item.SubItems.Add(item2);
|
|
|
|
item2=new ButtonItem("loadbar");
|
|
item2.Shortcuts.Add(eShortcut.CtrlL);
|
|
item.SubItems.Add(item2);
|
|
item2.Text="Load Bar...";
|
|
barManager.Items.Add(item2.Copy());
|
|
item2.BeginGroup=true;
|
|
item2.Enabled=true;
|
|
|
|
item2=new ButtonItem("savebaras");
|
|
item2.Shortcuts.Add(eShortcut.CtrlD);
|
|
item.SubItems.Add(item2);
|
|
item2.Text="Save Bar as...";
|
|
barManager.Items.Add(item2.Copy());
|
|
item2.Enabled=false;
|
|
|
|
item2=new ButtonItem("close");
|
|
item2.Text="&Close Designer";
|
|
item2.BeginGroup=true;
|
|
item.SubItems.Add(item2);
|
|
|
|
// Tools
|
|
item=new ButtonItem("tools");
|
|
item.Text="&Tools";
|
|
item.PopupType=ePopupType.Menu;
|
|
bar.Items.Add(item);
|
|
item2=new ButtonItem("barscreation","Create Bar");
|
|
item.SubItems.Add(item2);
|
|
popupmain=item2.Copy() as ButtonItem;
|
|
popup.SubItems.Add(popupmain);
|
|
if(m_Bar!=null)
|
|
item2.Visible=false;
|
|
else if(m_DotNetBar.LeftDockSite==null && m_DotNetBar.RightDockSite==null && m_DotNetBar.TopDockSite==null && m_DotNetBar.BottomDockSite==null)
|
|
item2.Enabled=false;
|
|
item3=new ButtonItem("createbar");
|
|
item3.Text="&Toolbar";
|
|
item2.SubItems.Add(item3);
|
|
popupmain.SubItems.Add(item3.Copy());
|
|
item3=new ButtonItem("createmenubar");
|
|
item3.Text="&Menu Bar";
|
|
item2.SubItems.Add(item3);
|
|
popupmain.SubItems.Add(item3.Copy());
|
|
item3=new ButtonItem("createstatusbar","&Status Bar");
|
|
item2.SubItems.Add(item3);
|
|
popupmain.SubItems.Add(item3.Copy());
|
|
item3=new ButtonItem("createdockwindow","&Dockable Window");
|
|
item2.SubItems.Add(item3);
|
|
popupmain.SubItems.Add(item3.Copy());
|
|
item3=new ButtonItem("createtaskpane","&Task Pane");
|
|
item2.SubItems.Add(item3);
|
|
popupmain.SubItems.Add(item3.Copy());
|
|
|
|
item2=new ButtonItem("buttonitem");
|
|
item2.Text="Add &ButtonItem";
|
|
item2.BeginGroup=true;
|
|
item.SubItems.Add(item2);
|
|
popup.SubItems.Add(item2.Copy());
|
|
item2=new ButtonItem("textboxitem");
|
|
item2.Text="Add &TextBoxItem";
|
|
item.SubItems.Add(item2);
|
|
popup.SubItems.Add(item2.Copy());
|
|
item2=new ButtonItem("comboboxitem");
|
|
item2.Text="Add &ComboBoxItem";
|
|
item.SubItems.Add(item2);
|
|
popup.SubItems.Add(item2.Copy());
|
|
item2=new ButtonItem("labelitem");
|
|
item2.Text="Add &LabelItem";
|
|
item.SubItems.Add(item2);
|
|
popup.SubItems.Add(item2.Copy());
|
|
// Progress Bar Item
|
|
item2=new ButtonItem("progressbaritem");
|
|
item2.Tooltip="Displays a progress bar.";
|
|
item2.Text="Add &ProgressBarItem";
|
|
item.SubItems.Add(item2);
|
|
popup.SubItems.Add(item2.Copy());
|
|
|
|
item2=new ButtonItem("customizeitem");
|
|
item2.BeginGroup=true;
|
|
item2.Tooltip="Lets end users hide/show Bar items as well as open the Customize dialog.";
|
|
item2.Text="Add Custo&mizeItem";
|
|
item.SubItems.Add(item2);
|
|
popup.SubItems.Add(item2.Copy());
|
|
item2=new ButtonItem("mdiwindowlistitem");
|
|
item2.Tooltip="Displays list of MDI Child forms.";
|
|
item2.Text="Add &MdiWindowListItem";
|
|
item.SubItems.Add(item2);
|
|
popup.SubItems.Add(item2.Copy());
|
|
item2=new ButtonItem("controlcontaineritem");
|
|
item2.Tooltip="Allows you to host any Control on Bar or Menu-bar.";
|
|
item2.Text="Add &ControlContainerItem";
|
|
item.SubItems.Add(item2);
|
|
popup.SubItems.Add(item2.Copy());
|
|
item2=new ButtonItem("dockcontaineritem");
|
|
item2.Tooltip="Helps you create dockable windows.";
|
|
item2.Text="Add &DockContainerItem";
|
|
item.SubItems.Add(item2);
|
|
popup.SubItems.Add(item2.Copy());
|
|
|
|
// Pop-up specific items
|
|
item2=new ButtonItem("copyto");
|
|
item2.Text="Copy To";
|
|
item2.BeginGroup=true;
|
|
item2.PopupType=ePopupType.Menu;
|
|
popup.SubItems.Add(item2);
|
|
item2=new ButtonItem("moveto");
|
|
item2.Text="Move To";
|
|
item2.PopupType=ePopupType.Menu;
|
|
popup.SubItems.Add(item2);
|
|
|
|
item2=new ButtonItem("delselected");
|
|
item.SubItems.Add(item2);
|
|
item2.Text="&Delete Selected Item";
|
|
item2.BeginGroup=true;
|
|
item2.ImageIndex=7;
|
|
popup.SubItems.Add(item2.Copy());
|
|
|
|
// Help
|
|
item=new ButtonItem("help");
|
|
item.Text="&Help";
|
|
item.PopupType=ePopupType.Menu;
|
|
bar.Items.Add(item);
|
|
item2=new ButtonItem("contents");
|
|
item2.Text="&Contents...";
|
|
item.SubItems.Add(item2);
|
|
// item2=new ButtonItem("index");
|
|
// item2.Text="&Index...";
|
|
// item.SubItems.Add(item2);
|
|
// item2=new ButtonItem("search");
|
|
// item2.Text="&Search...";
|
|
// item.SubItems.Add(item2);
|
|
item2=new ButtonItem("about");
|
|
item2.Text="&About";
|
|
item2.BeginGroup=true;
|
|
item.SubItems.Add(item2);
|
|
|
|
bar.DockSide=eDockSide.Top;
|
|
|
|
// Create left bar with the item navigation buttons
|
|
item=new ButtonItem("addnewitems");
|
|
barToolbar.Items.Add(item);
|
|
item.PopupType=ePopupType.Menu;
|
|
item.ImageIndex=6;
|
|
item.Text="Create new item";
|
|
item.Tooltip="Press to see available items that can be created";
|
|
item.BeginGroup=true;
|
|
item.Enabled=true;
|
|
item.SubItems.Add(barManager.Items["buttonitem"].Copy());
|
|
item.SubItems.Add(barManager.Items["textboxitem"].Copy());
|
|
item.SubItems.Add(barManager.Items["comboboxitem"].Copy());
|
|
item.SubItems.Add(barManager.Items["customizeitem"].Copy());
|
|
item.SubItems.Add(barManager.Items["mdiwindowlistitem"].Copy());
|
|
item.SubItems.Add(barManager.Items["controlcontaineritem"].Copy());
|
|
item.SubItems.Add(barManager.Items["dockcontaineritem"].Copy());
|
|
item.SubItems.Add(barManager.Items["progressbaritem"].Copy());
|
|
barToolbar.Items.Add(barManager.Items["delselected"].Copy());
|
|
|
|
|
|
item=new ButtonItem("moveleft");
|
|
barToolbar.Items.Add(item);
|
|
item.ImageIndex=0;
|
|
item.Text="Move Left";
|
|
item.Tooltip="Move selected item left";
|
|
item.BeginGroup=true;
|
|
item.Enabled=false;
|
|
item.ClickAutoRepeat=true;
|
|
barManager.Items.Add(item.Copy());
|
|
|
|
item=new ButtonItem("moveright");
|
|
barToolbar.Items.Add(item);
|
|
item.ImageIndex=1;
|
|
item.Text="Move Right";
|
|
item.Tooltip="Move selected item right";
|
|
item.Enabled=false;
|
|
item.ClickAutoRepeat=true;
|
|
barManager.Items.Add(item.Copy());
|
|
|
|
item=new ButtonItem("moveup");
|
|
barToolbar.Items.Add(item);
|
|
item.ImageIndex=2;
|
|
item.Text="Move Up";
|
|
item.Tooltip="Move selected item up";
|
|
item.Enabled=false;
|
|
item.ClickAutoRepeat=true;
|
|
barManager.Items.Add(item.Copy());
|
|
|
|
item=new ButtonItem("movedown");
|
|
barToolbar.Items.Add(item);
|
|
item.ImageIndex=3;
|
|
item.Text="Move Down";
|
|
item.Tooltip="Move selected item down";
|
|
item.Enabled=false;
|
|
item.ClickAutoRepeat=true;
|
|
barManager.Items.Add(item.Copy());
|
|
|
|
item=new ButtonItem("synccat");
|
|
barToolbar.Items.Add(item);
|
|
item.ImageIndex=8;
|
|
item.Text="Sync Categories";
|
|
item.Tooltip="Recreates Categories from your current definition.";
|
|
item.Enabled=true;
|
|
item.ButtonStyle=eButtonStyle.ImageAndText;
|
|
item.ClickAutoRepeat=false;
|
|
|
|
barToolbar.DockLine=1;
|
|
barToolbar.DockSide=eDockSide.Top;
|
|
|
|
popup=new ButtonItem("resetimagepopup");
|
|
item=new ButtonItem("resetimage","Reset");
|
|
popup.SubItems.Add(item);
|
|
barManager.ContextMenus.Add(popup);
|
|
|
|
barManager.Style=eDotNetBarStyle.Office2003;
|
|
|
|
}
|
|
#endregion
|
|
|
|
protected void CloseClick (object sender, System.EventArgs e)
|
|
{
|
|
this.Close();
|
|
}
|
|
|
|
private void RefreshView()
|
|
{
|
|
barTree.Nodes.Clear();
|
|
|
|
if(m_Bar!=null)
|
|
{
|
|
try
|
|
{
|
|
this.Cursor=Cursors.WaitCursor;
|
|
m_BarsNode=barTree.Nodes.Add("Bar");
|
|
m_BarsNode.ImageIndex=2;
|
|
m_BarsNode.SelectedImageIndex=2;
|
|
|
|
TreeNode barNode=m_BarsNode.Nodes.Add(m_Bar.Text);
|
|
barNode.Tag=m_Bar;
|
|
barNode.ImageIndex=1;
|
|
barNode.SelectedImageIndex=1;
|
|
foreach(BaseItem objItem in m_Bar.Items)
|
|
{
|
|
TreeNode itemNode=barNode.Nodes.Add(GetTreeItemText(objItem));
|
|
itemNode.Tag=objItem;
|
|
|
|
itemNode.ImageIndex=GetItemImageIndex(objItem);
|
|
itemNode.SelectedImageIndex=itemNode.ImageIndex;
|
|
|
|
AddSubItems(objItem,itemNode);
|
|
}
|
|
m_BarsNode.Expand();
|
|
barNode.Expand();
|
|
}
|
|
finally
|
|
{
|
|
this.Cursor=Cursors.Arrow;
|
|
}
|
|
return;
|
|
}
|
|
|
|
if(m_DotNetBar==null)
|
|
return;
|
|
|
|
this.Cursor=Cursors.WaitCursor;
|
|
|
|
if(m_DotNetBar.TopDockSite==null && m_DotNetBar.BottomDockSite==null && m_DotNetBar.LeftDockSite==null && m_DotNetBar.RightDockSite==null)
|
|
{
|
|
m_CategoriesNode=null;
|
|
m_BarsNode=null;
|
|
}
|
|
else
|
|
{
|
|
m_CategoriesNode=barTree.Nodes.Add("Categories");
|
|
m_CategoriesNode.ImageIndex=5;
|
|
m_CategoriesNode.SelectedImageIndex=5;
|
|
|
|
m_BarsNode=barTree.Nodes.Add("Bars");
|
|
m_BarsNode.ImageIndex=2;
|
|
m_BarsNode.SelectedImageIndex=2;
|
|
}
|
|
|
|
m_PopupsNode=barTree.Nodes.Add("Context Menus");
|
|
m_PopupsNode.ImageIndex=12;
|
|
m_PopupsNode.SelectedImageIndex=12;
|
|
|
|
if(m_BarsNode!=null)
|
|
{
|
|
foreach(Bar bar in m_DotNetBar.Bars)
|
|
{
|
|
TreeNode barNode=m_BarsNode.Nodes.Add(bar.Text);
|
|
barNode.Tag=bar;
|
|
barNode.ImageIndex=1;
|
|
barNode.SelectedImageIndex=1;
|
|
foreach(BaseItem objItem in bar.Items)
|
|
{
|
|
TreeNode itemNode=barNode.Nodes.Add(GetTreeItemText(objItem));
|
|
itemNode.Tag=objItem;
|
|
|
|
itemNode.ImageIndex=GetItemImageIndex(objItem);
|
|
itemNode.SelectedImageIndex=itemNode.ImageIndex;
|
|
|
|
AddSubItems(objItem,itemNode);
|
|
}
|
|
}
|
|
}
|
|
|
|
// Load nodes from items
|
|
m_catTable.Clear();
|
|
if(m_CategoriesNode!=null)
|
|
{
|
|
foreach(DictionaryEntry o in m_DotNetBar.Items)
|
|
{
|
|
BaseItem objItem=o.Value as BaseItem;
|
|
TreeNode itemNode=CategorizeItem(objItem);
|
|
itemNode.Tag=objItem;
|
|
|
|
itemNode.ImageIndex=GetItemImageIndex(objItem);
|
|
itemNode.SelectedImageIndex=itemNode.ImageIndex;
|
|
|
|
AddSubItems(objItem,itemNode);
|
|
}
|
|
}
|
|
|
|
// Load all popups
|
|
foreach(BaseItem objItem in m_DotNetBar.ContextMenus)
|
|
{
|
|
TreeNode itemNode=m_PopupsNode.Nodes.Add(GetTreeItemText(objItem));
|
|
itemNode.Tag=objItem;
|
|
|
|
itemNode.ImageIndex=GetItemImageIndex(objItem);
|
|
itemNode.SelectedImageIndex=itemNode.ImageIndex;
|
|
|
|
AddSubItems(objItem,itemNode);
|
|
}
|
|
|
|
if(m_BarsNode!=null)
|
|
m_BarsNode.Expand();
|
|
if(m_CategoriesNode!=null)
|
|
m_CategoriesNode.Expand();
|
|
m_PopupsNode.Expand();
|
|
|
|
this.Cursor=Cursors.Arrow;
|
|
}
|
|
private void AddSubItems(BaseItem objItem, TreeNode parentNode)
|
|
{
|
|
if(objItem.SubItems.Count==0)
|
|
return;
|
|
foreach(BaseItem objChild in objItem.SubItems)
|
|
{
|
|
TreeNode itemNode=parentNode.Nodes.Add(GetTreeItemText(objChild));
|
|
itemNode.Tag=objChild;
|
|
|
|
itemNode.ImageIndex=GetItemImageIndex(objChild);
|
|
itemNode.SelectedImageIndex=itemNode.ImageIndex;
|
|
|
|
AddSubItems(objChild,itemNode);
|
|
}
|
|
}
|
|
// TODO: Make sure that when designing the Menu Bar when new item is added default
|
|
// PopupType is MENU not TOOLBAR
|
|
private void ItemSelected(object sender,TreeViewEventArgs e)
|
|
{
|
|
barTree.LabelEdit=false;
|
|
if(e.Node.Tag==null)
|
|
{
|
|
propertyGrid1.SelectedObject=null;
|
|
return;
|
|
}
|
|
|
|
if(e.Node.Tag is BaseItem)
|
|
{
|
|
propertyGrid1.SelectedObject=e.Node.Tag;
|
|
barTree.LabelEdit=true;
|
|
|
|
// Now way to detect when Items collection has changed, reset changed flag if combo box is selected...
|
|
if(e.Node.Tag is ComboBoxItem)
|
|
m_DataChanged=true;
|
|
}
|
|
else if(e.Node.Tag is Bar)
|
|
{
|
|
propertyGrid1.SelectedObject=(Bar)e.Node.Tag;
|
|
|
|
}
|
|
else
|
|
{
|
|
propertyGrid1.SelectedObject=null;
|
|
}
|
|
|
|
}
|
|
|
|
private void BeforeItemSelect(object sender, System.Windows.Forms.TreeViewCancelEventArgs e)
|
|
{
|
|
// Disable/Enable toolbar items...
|
|
bool bLeftEnabled=false, bRightEnabled=false, bUpEnabled=false, bDownEnabled=false;
|
|
|
|
BaseItem popupItem=barManager.Items["popup"];
|
|
|
|
if(e.Node!=null && e.Node.Tag is BaseItem)
|
|
{
|
|
if(e.Node.Parent==m_PopupsNode)
|
|
{
|
|
bRightEnabled=true;
|
|
}
|
|
else
|
|
{
|
|
BaseItem objItem=e.Node.Tag as BaseItem;
|
|
int i=0;
|
|
if(objItem.Parent!=null)
|
|
i=objItem.Parent.SubItems.IndexOf(objItem);
|
|
else
|
|
i=e.Node.Index;
|
|
if(i>0)
|
|
{
|
|
bUpEnabled=true;
|
|
bRightEnabled=true;
|
|
}
|
|
int iCount=0;
|
|
if(objItem.Parent!=null)
|
|
iCount=objItem.Parent.SubItems.Count-1;
|
|
else
|
|
iCount=e.Node.Parent.Nodes.Count-1;
|
|
|
|
if(i<iCount)
|
|
bDownEnabled=true;
|
|
|
|
if((objItem.Parent!=null && !objItem.Parent.SystemItem && (!(objItem.Parent is GenericItemContainer) || !((GenericItemContainer)objItem.Parent).SystemContainer)) || (e.Node.Parent!=null && e.Node.Parent.Tag is BaseItem))
|
|
bLeftEnabled=true;
|
|
}
|
|
}
|
|
|
|
barManager.Items["moveleft"].Enabled=bLeftEnabled;
|
|
barManager.Items["moveright"].Enabled=bRightEnabled;
|
|
barManager.Items["moveup"].Enabled=bUpEnabled;
|
|
barManager.Items["movedown"].Enabled=bDownEnabled;
|
|
|
|
if(e.Node!=null && e.Node.Tag is BaseItem)
|
|
{
|
|
popupItem.SubItems["copyto"].Visible=true;
|
|
popupItem.SubItems["moveto"].Visible=true;
|
|
}
|
|
else
|
|
{
|
|
popupItem.SubItems["copyto"].Visible=false;
|
|
popupItem.SubItems["moveto"].Visible=false;
|
|
}
|
|
|
|
if(e.Node==null || m_BarsNode!=null && e.Node==m_BarsNode)
|
|
{
|
|
barManager.Items["buttonitem"].Enabled=false;
|
|
barManager.Items["textboxitem"].Enabled=false;
|
|
barManager.Items["comboboxitem"].Enabled=false;
|
|
barManager.Items["customizeitem"].Enabled=false;
|
|
barManager.Items["labelitem"].Enabled=false;
|
|
barManager.Items["mdiwindowlistitem"].Enabled=false;
|
|
barManager.Items["controlcontaineritem"].Enabled=false;
|
|
barManager.Items["dockcontaineritem"].Enabled=false;
|
|
barManager.Items["progressbaritem"].Enabled=false;
|
|
barManager.Items["delselected"].Enabled=false;
|
|
return;
|
|
}
|
|
else if(m_CategoriesNode!=null && e.Node==m_CategoriesNode)
|
|
{
|
|
barManager.Items["buttonitem"].Enabled=true;
|
|
barManager.Items["textboxitem"].Enabled=true;
|
|
barManager.Items["comboboxitem"].Enabled=true;
|
|
barManager.Items["customizeitem"].Enabled=true;
|
|
barManager.Items["labelitem"].Enabled=true;
|
|
barManager.Items["mdiwindowlistitem"].Enabled=true;
|
|
barManager.Items["controlcontaineritem"].Enabled=true;
|
|
barManager.Items["dockcontaineritem"].Enabled=true;
|
|
barManager.Items["progressbaritem"].Enabled=true;
|
|
barManager.Items["delselected"].Enabled=false;
|
|
return;
|
|
}
|
|
|
|
if(e.Node!=null && e.Node.Tag is Bar)
|
|
barManager.Items["savebaras"].Enabled=true;
|
|
else
|
|
barManager.Items["savebaras"].Enabled=false;
|
|
|
|
barManager.Items["buttonitem"].Enabled=true;
|
|
barManager.Items["textboxitem"].Enabled=true;
|
|
barManager.Items["comboboxitem"].Enabled=true;
|
|
barManager.Items["customizeitem"].Enabled=true;
|
|
barManager.Items["labelitem"].Enabled=true;
|
|
barManager.Items["mdiwindowlistitem"].Enabled=true;
|
|
barManager.Items["controlcontaineritem"].Enabled=true;
|
|
barManager.Items["dockcontaineritem"].Enabled=true;
|
|
barManager.Items["progressbaritem"].Enabled=true;
|
|
|
|
if(m_CategoriesNode!=null && e.Node.Parent==m_CategoriesNode || e.Node.Tag is BaseItem || e.Node.Tag is Bar)
|
|
barManager.Items["delselected"].Enabled=true;
|
|
else
|
|
barManager.Items["delselected"].Enabled=false;
|
|
}
|
|
|
|
private void TreeMouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
|
|
{
|
|
if(e.Button!=MouseButtons.Right)
|
|
return;
|
|
|
|
TreeNode node=barTree.GetNodeAt(e.X,e.Y);
|
|
if(node!=null)
|
|
barTree.SelectedNode=node;
|
|
|
|
// Popup menu
|
|
ButtonItem popup=barManager.Items["popup"] as ButtonItem;
|
|
|
|
// If MoveTo and CopyTo are visible add items to them
|
|
if(popup.SubItems["copyto"].Visible)
|
|
{
|
|
BaseItem itemCopyTo=popup.SubItems["copyto"];
|
|
BaseItem itemMoveTo=popup.SubItems["moveto"];
|
|
BaseItem itemSel=barTree.SelectedNode.Tag as BaseItem;
|
|
itemCopyTo.SubItems.Clear();
|
|
itemMoveTo.SubItems.Clear();
|
|
bool bBars=true,bCategories=false, bPopups=false;
|
|
// Don't show categories for category items...
|
|
node=barTree.SelectedNode;
|
|
while(node.Parent!=null)
|
|
node=node.Parent;
|
|
if(m_PopupsNode!=null && node!=m_PopupsNode)
|
|
bPopups=true;
|
|
if(m_CategoriesNode!=null && node!=m_CategoriesNode)
|
|
bCategories=true;
|
|
|
|
if(bBars && m_BarsNode!=null)
|
|
{
|
|
foreach(TreeNode barNode in m_BarsNode.Nodes)
|
|
{
|
|
BaseItem newItem=new ButtonItem();
|
|
newItem.Text=barNode.Text;
|
|
newItem.Tag=barNode;
|
|
newItem.Click+=new System.EventHandler(this.CopyMoveToClick);
|
|
itemCopyTo.SubItems.Add(newItem);
|
|
itemMoveTo.SubItems.Add(newItem.Copy());
|
|
}
|
|
}
|
|
if(bCategories && m_CategoriesNode!=null)
|
|
{
|
|
ButtonItem cat=new ButtonItem("tocategories");
|
|
cat.Text="Categories";
|
|
cat.BeginGroup=true;
|
|
cat.Click+=new System.EventHandler(this.CopyMoveToClick);
|
|
itemCopyTo.SubItems.Add(cat);
|
|
itemMoveTo.SubItems.Add(cat.Copy());
|
|
|
|
foreach(TreeNode catNode in m_CategoriesNode.Nodes)
|
|
{
|
|
BaseItem newItem=new ButtonItem();
|
|
newItem.Text=catNode.Text;
|
|
newItem.Click+=new System.EventHandler(this.CopyMoveToClick);
|
|
newItem.Tag="cat";
|
|
itemCopyTo.SubItems.Add(newItem);
|
|
itemMoveTo.SubItems.Add(newItem.Copy());
|
|
}
|
|
}
|
|
if(bPopups)
|
|
{
|
|
BaseItem pi=new ButtonItem("topopups");
|
|
pi.BeginGroup=true;
|
|
pi.Text="Popups";
|
|
pi.Click+=new System.EventHandler(this.CopyMoveToClick);
|
|
itemCopyTo.SubItems.Add(pi);
|
|
itemMoveTo.SubItems.Add(pi.Copy());
|
|
|
|
foreach(BaseItem objItem in m_DotNetBar.ContextMenus)
|
|
{
|
|
BaseItem newItem=new ButtonItem();
|
|
newItem.Text=(objItem.Text=="")?objItem.Name:objItem.Text;
|
|
newItem.Tag=objItem;
|
|
newItem.Click+=new System.EventHandler(this.CopyMoveToClick);
|
|
itemCopyTo.SubItems.Add(newItem);
|
|
itemMoveTo.SubItems.Add(newItem.Copy());
|
|
}
|
|
}
|
|
}
|
|
|
|
Point pt=new Point(e.X,e.Y);
|
|
pt=barTree.PointToScreen(pt);
|
|
popup.PopupMenu(pt);
|
|
}
|
|
|
|
private void NodeExpanding(object sender, System.Windows.Forms.TreeViewCancelEventArgs e)
|
|
{
|
|
if(e.Node.ImageIndex==5)
|
|
{
|
|
e.Node.ImageIndex=6;
|
|
e.Node.SelectedImageIndex=6;
|
|
}
|
|
}
|
|
|
|
private void NodeCollapsing(object sender, System.Windows.Forms.TreeViewCancelEventArgs e)
|
|
{
|
|
if(e.Node.ImageIndex==6)
|
|
{
|
|
e.Node.ImageIndex=5;
|
|
e.Node.SelectedImageIndex=5;
|
|
}
|
|
}
|
|
|
|
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();
|
|
}
|
|
|
|
public void RescanCategories()
|
|
{
|
|
if(m_DotNetBar==null)
|
|
return;
|
|
if(m_DotNetBar.Bars.Count==0)
|
|
return;
|
|
m_DotNetBar.Items.Clear();
|
|
foreach(Bar bar in m_DotNetBar.Bars)
|
|
{
|
|
foreach(BaseItem item in bar.Items)
|
|
AutoCategorizeItem(item);
|
|
}
|
|
m_DataChanged=true;
|
|
RefreshView();
|
|
}
|
|
|
|
private void AutoCategorizeItem(BaseItem item)
|
|
{
|
|
if(item.Category!="" && item.Name!="" && !m_DotNetBar.Items.Contains(item.Name))
|
|
m_DotNetBar.Items.Add(item.Copy());
|
|
foreach(BaseItem i in item.SubItems)
|
|
AutoCategorizeItem(i);
|
|
}
|
|
|
|
private void MoveSelectedItem(string Direction)
|
|
{
|
|
if(barTree.SelectedNode==null)
|
|
return;
|
|
m_DataChanged=true;
|
|
BaseItem objItem=barTree.SelectedNode.Tag as BaseItem;
|
|
if(objItem==null)
|
|
return;
|
|
|
|
bool bCategoryItem=false;
|
|
if(barTree.SelectedNode.Parent==m_CategoriesNode)
|
|
bCategoryItem=true;
|
|
|
|
bool bPopupsItem=false;
|
|
if(barTree.SelectedNode.Parent==m_PopupsNode)
|
|
bPopupsItem=true;
|
|
|
|
|
|
TreeNode selNode=barTree.SelectedNode;
|
|
TreeNode parentNode=selNode.Parent;
|
|
|
|
BaseItem objParent=objItem.Parent;
|
|
|
|
int i=0;
|
|
if(objParent!=null)
|
|
i=objParent.SubItems.IndexOf(objItem);
|
|
else
|
|
i=selNode.Index;
|
|
|
|
if(Direction=="moveup" && i>0)
|
|
{
|
|
if(objParent!=null)
|
|
{
|
|
objParent.SubItems.Remove(objItem);
|
|
objParent.SubItems.Add(objItem,i-1);
|
|
if(objParent.ContainerControl is Bar)
|
|
((Bar)objParent.ContainerControl).RecalcLayout();
|
|
}
|
|
|
|
i=selNode.Index;
|
|
selNode.Remove();
|
|
parentNode.Nodes.Insert(i-1,selNode);
|
|
barTree.SelectedNode=selNode;
|
|
selNode.EnsureVisible();
|
|
}
|
|
else if(Direction=="moveright" && i>0)
|
|
{
|
|
BaseItem objNewParent=null;
|
|
|
|
if(bCategoryItem)
|
|
m_DotNetBar.Items.Remove(objItem);
|
|
else if(bPopupsItem)
|
|
m_DotNetBar.ContextMenus.Remove(objItem);
|
|
|
|
if(objParent!=null)
|
|
{
|
|
objNewParent=objParent.SubItems[i-1];
|
|
objParent.SubItems.Remove(objItem);
|
|
if(objParent.ContainerControl is Bar)
|
|
((Bar)objParent.ContainerControl).RecalcLayout();
|
|
}
|
|
else
|
|
{
|
|
objNewParent=selNode.PrevNode.Tag as BaseItem;
|
|
}
|
|
objNewParent.SubItems.Add(objItem,GetAppendPosition(objNewParent));
|
|
objNewParent.Refresh();
|
|
if(objNewParent.ContainerControl is Bar)
|
|
((Bar)objNewParent.ContainerControl).RecalcLayout();
|
|
|
|
i=selNode.Index;
|
|
TreeNode newParent=selNode.PrevNode;
|
|
selNode.Remove();
|
|
newParent.Nodes.Add(selNode);
|
|
barTree.SelectedNode=selNode;
|
|
selNode.EnsureVisible();
|
|
}
|
|
else if(Direction=="movedown" && ((objParent!=null && i<objParent.SubItems.Count-1) || (objParent==null && selNode.Index<selNode.Parent.Nodes.Count-1)))
|
|
{
|
|
if(objParent!=null)
|
|
{
|
|
objParent.SubItems.Remove(objItem);
|
|
objParent.SubItems.Add(objItem,i+1);
|
|
if(objParent.ContainerControl is Bar)
|
|
((Bar)objParent.ContainerControl).RecalcLayout();
|
|
}
|
|
|
|
i=selNode.Index;
|
|
selNode.Remove();
|
|
parentNode.Nodes.Insert(i+1,selNode);
|
|
barTree.SelectedNode=selNode;
|
|
selNode.EnsureVisible();
|
|
}
|
|
if(Direction=="moveleft" && objParent!=null && (!(objParent is GenericItemContainer) || !((GenericItemContainer)objParent).SystemItem))
|
|
{
|
|
BaseItem objNewParent=null;
|
|
objNewParent=objParent.Parent;
|
|
if(objNewParent!=null)
|
|
{
|
|
i=objNewParent.SubItems.IndexOf(objParent)+1;
|
|
objParent.SubItems.Remove(objItem);
|
|
if(objParent.ContainerControl is Bar)
|
|
((Bar)objParent.ContainerControl).RecalcLayout();
|
|
objNewParent.SubItems.Add(objItem,i);
|
|
if(objNewParent.ContainerControl is Bar)
|
|
((Bar)objNewParent.ContainerControl).RecalcLayout();
|
|
}
|
|
else
|
|
{
|
|
objParent.SubItems.Remove(objItem);
|
|
if(objParent.ContainerControl is Bar)
|
|
((Bar)objParent.ContainerControl).RecalcLayout();
|
|
}
|
|
|
|
if(parentNode.Parent==m_CategoriesNode)
|
|
m_DotNetBar.Items.Add(objItem);
|
|
else if(parentNode.Parent==m_PopupsNode)
|
|
m_DotNetBar.ContextMenus.Add(objItem);
|
|
|
|
selNode.Remove();
|
|
parentNode.Parent.Nodes.Insert(parentNode.Index+1,selNode);
|
|
barTree.SelectedNode=selNode;
|
|
selNode.EnsureVisible();
|
|
}
|
|
}
|
|
|
|
private int GetAppendPosition(BaseItem objParent)
|
|
{
|
|
int iPos=-1;
|
|
for(int i=objParent.SubItems.Count-1;i>=0;i--)
|
|
{
|
|
if(objParent.SubItems[i].SystemItem)
|
|
iPos=i;
|
|
else
|
|
break;
|
|
}
|
|
return iPos;
|
|
}
|
|
|
|
private void OnPropertyValueChanged(object s, System.Windows.Forms.PropertyValueChangedEventArgs e)
|
|
{
|
|
m_DataChanged=true;
|
|
// If user changes the category of the item that is in categories we need to
|
|
// reflect that change and move item to the right category
|
|
TreeNode node=barTree.SelectedNode;
|
|
BaseItem item=node.Tag as BaseItem;
|
|
|
|
if(e.ChangedItem.PropertyDescriptor.Name=="Category" && e.ChangedItem.Value!=e.OldValue)
|
|
{
|
|
if(node.Tag==null || !(node.Tag is BaseItem))
|
|
return;
|
|
while(node.Parent!=null)
|
|
node=node.Parent;
|
|
if(node!=m_CategoriesNode)
|
|
return;
|
|
|
|
node=barTree.SelectedNode;
|
|
BaseItem objItem=node.Tag as BaseItem;
|
|
node.Remove();
|
|
node=CategorizeItem(objItem);
|
|
node.ImageIndex=GetItemImageIndex(objItem);
|
|
node.SelectedImageIndex=node.ImageIndex;
|
|
AddSubItems(objItem,node);
|
|
node.EnsureVisible();
|
|
barTree.SelectedNode=node;
|
|
}
|
|
else if(e.ChangedItem.PropertyDescriptor.Name=="Name" && e.ChangedItem.Value!=e.OldValue && !m_ShowItemText)
|
|
{
|
|
node.Text=(string)e.ChangedItem.Value;
|
|
}
|
|
else if(e.ChangedItem.PropertyDescriptor.Name=="Text" && e.ChangedItem.Value!=e.OldValue && m_ShowItemText)
|
|
{
|
|
node.Text=(string)e.ChangedItem.Value;
|
|
}
|
|
else if(e.ChangedItem.PropertyDescriptor.Name=="DockLine" || e.ChangedItem.PropertyDescriptor.Name=="DockOffset")
|
|
{
|
|
Bar bar=node.Tag as Bar;
|
|
if(bar!=null)
|
|
bar.RecalcLayout();
|
|
}
|
|
|
|
if(e.ChangedItem.PropertyDescriptor.Name=="Name" && m_DotNetBar!=null)
|
|
{
|
|
TreeNode parent=node;
|
|
while(parent.Parent!=null)
|
|
parent=parent.Parent;
|
|
if(parent==m_CategoriesNode)
|
|
{
|
|
if(m_DotNetBar.Items.Contains(e.ChangedItem.Value.ToString()))
|
|
{
|
|
item.Name=e.OldValue.ToString();
|
|
propertyGrid1.Refresh();
|
|
MessageBox.Show("Item with that name already exists.");
|
|
}
|
|
else
|
|
{
|
|
m_DotNetBar.Items.Remove(e.OldValue.ToString());
|
|
m_DotNetBar.Items.Add(item);
|
|
}
|
|
}
|
|
}
|
|
|
|
if(item!=null)
|
|
{
|
|
Bar barContainer=item.ContainerControl as Bar;
|
|
if(barContainer!=null)
|
|
barContainer.RecalcLayout();
|
|
}
|
|
}
|
|
|
|
private TreeNode CategorizeItem(BaseItem newItem)
|
|
{
|
|
// Assign item to category
|
|
if(newItem.Category=="")
|
|
newItem.Category="(Untitled)";
|
|
|
|
TreeNode parentNode=null;
|
|
if(m_catTable.ContainsKey(newItem.Category))
|
|
parentNode=m_catTable[newItem.Category] as TreeNode;
|
|
else
|
|
{
|
|
parentNode=m_CategoriesNode.Nodes.Add(newItem.Category);
|
|
parentNode.ImageIndex=5;
|
|
parentNode.SelectedImageIndex=5;
|
|
m_catTable.Add(newItem.Category,parentNode);
|
|
}
|
|
|
|
TreeNode newNode=parentNode.Nodes.Add(GetTreeItemText(newItem));
|
|
newNode.ImageIndex=GetItemImageIndex(newItem);
|
|
newNode.SelectedImageIndex=newNode.ImageIndex;
|
|
newNode.Tag=newItem;
|
|
return newNode;
|
|
}
|
|
|
|
private void CopyMoveToClick(object sender, System.EventArgs e)
|
|
{
|
|
BaseItem item=sender as BaseItem;
|
|
BaseItem itemSel=barTree.SelectedNode.Tag as BaseItem;
|
|
BaseItem itemOriginal=barTree.SelectedNode.Tag as BaseItem;
|
|
|
|
bool bMove=(item.Parent.Name=="moveto");
|
|
if(!bMove)
|
|
{
|
|
itemSel=itemSel.Copy();
|
|
if((Control.ModifierKeys & Keys.Control)==Keys.Control)
|
|
itemSel.Name=itemOriginal.Name;
|
|
else
|
|
itemSel.Name="item_"+itemSel.Id;
|
|
}
|
|
|
|
if((item.Tag is string && (string)item.Tag=="cat") || item.Name=="tocategories")
|
|
{
|
|
// To Categories
|
|
if(item.Name!="tocategories")
|
|
itemSel.Category=item.Text;
|
|
if(bMove)
|
|
{
|
|
if(itemSel.Parent!=null)
|
|
itemSel.Parent.SubItems.Remove(itemSel);
|
|
barTree.SelectedNode.Remove();
|
|
}
|
|
if(m_DotNetBar.Items.Contains(itemSel.Name))
|
|
{
|
|
string sDupName=itemSel.Name;
|
|
itemSel.Name="item_"+itemSel.Id;
|
|
MessageBox.Show("Item with name: '"+sDupName+"' already exists. Item that you are trying to move will be renamed.");
|
|
}
|
|
m_DotNetBar.Items.Add(itemSel);
|
|
barTree.SelectedNode=CategorizeItem(itemSel);
|
|
barTree.SelectedNode.EnsureVisible();
|
|
}
|
|
else if(item.Name=="topopups" || item.Tag is BaseItem)
|
|
{
|
|
if(bMove)
|
|
{
|
|
if(itemSel.Parent!=null)
|
|
itemSel.Parent.SubItems.Remove(itemSel);
|
|
barTree.SelectedNode.Remove();
|
|
}
|
|
|
|
if(item.Name=="topopups")
|
|
{
|
|
TreeNode itemNode=m_PopupsNode.Nodes.Add(GetTreeItemText(itemSel));
|
|
itemNode.Tag=itemSel;
|
|
itemNode.ImageIndex=GetItemImageIndex(itemSel);
|
|
itemNode.SelectedImageIndex=itemNode.ImageIndex;
|
|
AddSubItems(itemSel,itemNode);
|
|
m_DotNetBar.ContextMenus.Add(itemSel);
|
|
itemNode.EnsureVisible();
|
|
}
|
|
else
|
|
{
|
|
BaseItem objParent=item.Tag as BaseItem;
|
|
objParent.SubItems.Add(itemSel);
|
|
foreach(TreeNode node in m_PopupsNode.Nodes)
|
|
{
|
|
if(node.Tag==objParent)
|
|
{
|
|
TreeNode itemNode=node.Nodes.Add(GetTreeItemText(itemSel));
|
|
itemNode.Tag=itemSel;
|
|
itemNode.ImageIndex=GetItemImageIndex(itemSel);
|
|
itemNode.SelectedImageIndex=itemNode.ImageIndex;
|
|
AddSubItems(itemSel,itemNode);
|
|
itemNode.EnsureVisible();
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
else if(item.Tag is TreeNode)
|
|
{
|
|
// To Bar
|
|
TreeNode barNode=item.Tag as TreeNode;
|
|
Bar bar=barNode.Tag as Bar;
|
|
if(bMove)
|
|
{
|
|
if(itemSel.Parent!=null)
|
|
itemSel.Parent.SubItems.Remove(itemSel);
|
|
barTree.SelectedNode.Remove();
|
|
}
|
|
|
|
bar.Items.Add(itemSel,GetAppendPosition(bar.ItemsContainer));
|
|
TreeNode itemNode=barNode.Nodes.Add(GetTreeItemText(itemSel));
|
|
itemNode.Tag=itemSel;
|
|
itemNode.ImageIndex=GetItemImageIndex(itemSel);
|
|
itemNode.SelectedImageIndex=itemNode.ImageIndex;
|
|
AddSubItems(itemSel,itemNode);
|
|
barTree.SelectedNode=itemNode;
|
|
barTree.SelectedNode.EnsureVisible();
|
|
bar.RecalcLayout();
|
|
}
|
|
|
|
// Clear Copy To and Move To
|
|
item=barManager.Items["popup"];
|
|
item.SubItems["copyto"].SubItems.Clear();
|
|
item.SubItems["moveto"].SubItems.Clear();
|
|
}
|
|
|
|
private void ItemEdited(object sender, System.Windows.Forms.NodeLabelEditEventArgs e)
|
|
{
|
|
if(e.CancelEdit)
|
|
return;
|
|
|
|
BaseItem objItem=e.Node.Tag as BaseItem;
|
|
if(m_ShowItemText)
|
|
objItem.Text=e.Label;
|
|
else
|
|
objItem.Name=e.Label;
|
|
|
|
propertyGrid1.Refresh();
|
|
m_DataChanged=true;
|
|
}
|
|
|
|
private string GetTreeItemText(BaseItem objItem)
|
|
{
|
|
if(objItem==null)
|
|
return "";
|
|
|
|
if(m_ShowItemText)
|
|
return objItem.Text;
|
|
else
|
|
return objItem.Name;
|
|
}
|
|
|
|
private int GetItemImageIndex(BaseItem objItem)
|
|
{
|
|
int index=0;
|
|
if(objItem is ButtonItem)
|
|
{
|
|
index=7;
|
|
}
|
|
else if(objItem is ComboBoxItem)
|
|
{
|
|
index=8;
|
|
}
|
|
else if(objItem is TextBoxItem)
|
|
{
|
|
index=9;
|
|
}
|
|
else if(objItem is CustomizeItem)
|
|
{
|
|
index=10;
|
|
}
|
|
else if(objItem is LabelItem)
|
|
{
|
|
index=11;
|
|
}
|
|
return index;
|
|
}
|
|
|
|
private void TreeKeyDown(object sender, System.Windows.Forms.KeyEventArgs e)
|
|
{
|
|
if(e.KeyCode==Keys.F2 && barTree.SelectedNode!=null && barTree.LabelEdit)
|
|
barTree.SelectedNode.BeginEdit();
|
|
}
|
|
|
|
private void GridViewMouseDown(object sender, EventArgs e)
|
|
{
|
|
if(propertyGrid1.SelectedGridItem==null)
|
|
return;
|
|
if(!(propertyGrid1.SelectedGridItem.PropertyDescriptor.PropertyType==typeof(System.Drawing.Image)))
|
|
return;
|
|
PopupItem popup=barManager.ContextMenus["resetimagepopup"] as PopupItem;
|
|
popup.PopupMenu(Control.MousePosition);
|
|
}
|
|
|
|
private void FormClosing(object sender, System.ComponentModel.CancelEventArgs e)
|
|
{
|
|
m_GridViewSubclass.ReleaseHandle();
|
|
m_GridViewSubclass=null;
|
|
|
|
if(m_HtmlHelp!=null)
|
|
m_HtmlHelp.CloseHelpWindow();
|
|
|
|
// ColorScheme property when changed is not detected, so try to fix it here...
|
|
if(m_DotNetBar!=null)
|
|
{
|
|
foreach(Bar bar in m_DotNetBar.Bars)
|
|
{
|
|
if(bar.ColorScheme._DesignTimeSchemeChanged)
|
|
{
|
|
m_DataChanged=true;
|
|
bar.ColorScheme._DesignTimeSchemeChanged=false;
|
|
}
|
|
}
|
|
}
|
|
else if(m_Bar!=null)
|
|
{
|
|
if(m_Bar.ColorScheme._DesignTimeSchemeChanged)
|
|
{
|
|
m_DataChanged=true;
|
|
m_Bar.ColorScheme._DesignTimeSchemeChanged=false;
|
|
}
|
|
}
|
|
|
|
|
|
// Save form position
|
|
if(this.WindowState!=FormWindowState.Minimized)
|
|
{
|
|
string s="";
|
|
if(this.WindowState==FormWindowState.Maximized)
|
|
{
|
|
s="1";
|
|
}
|
|
else
|
|
{
|
|
s=this.DesktopLocation.X+","+this.DesktopLocation.Y+","+this.Width+","+this.Height;
|
|
}
|
|
try
|
|
{
|
|
Microsoft.Win32.RegistryKey key=Microsoft.Win32.Registry.CurrentUser;
|
|
key=key.CreateSubKey("Software\\DevComponents\\DotNetBar");
|
|
key.SetValue("DesignerPosition",s);
|
|
// Save Panel size
|
|
key.SetValue("DesignerPanelSize",barTree.Width);
|
|
key.Close();
|
|
}
|
|
catch(Exception)
|
|
{
|
|
}
|
|
}
|
|
}
|
|
|
|
private class GridViewSubclass:NativeWindow
|
|
{
|
|
public event EventHandler OnRightMouseDown;
|
|
protected override void WndProc(ref Message m)
|
|
{
|
|
if(m.Msg==NativeFunctions.WM_CONTEXTMENU)
|
|
{
|
|
if(OnRightMouseDown!=null)
|
|
OnRightMouseDown(this,new EventArgs());
|
|
return;
|
|
}
|
|
base.WndProc(ref m);
|
|
}
|
|
}
|
|
|
|
public bool DataChanged
|
|
{
|
|
get { return m_DataChanged;}
|
|
set { m_DataChanged=value;}
|
|
}
|
|
|
|
public DotNetBarManager FormBarManager
|
|
{
|
|
get
|
|
{
|
|
return barManager;
|
|
}
|
|
}
|
|
|
|
private void LoadResourceImages()
|
|
{
|
|
Image img=null;
|
|
try
|
|
{
|
|
m_BarImages.Images.Clear();
|
|
img=new Bitmap(typeof(DevComponents.DotNetBar.DotNetBarManager),"BarEditorImages.MoveItemLeft.bmp");
|
|
m_BarImages.Images.Add(img,Color.Magenta);
|
|
img=new Bitmap(typeof(DevComponents.DotNetBar.DotNetBarManager),"BarEditorImages.MoveItemRight.bmp");
|
|
m_BarImages.Images.Add(img,Color.Magenta);
|
|
img=new Bitmap(typeof(DevComponents.DotNetBar.DotNetBarManager),"BarEditorImages.MoveItemUp.bmp");
|
|
m_BarImages.Images.Add(img,Color.Magenta);
|
|
img=new Bitmap(typeof(DevComponents.DotNetBar.DotNetBarManager),"BarEditorImages.MoveItemDown.bmp");
|
|
m_BarImages.Images.Add(img,Color.Magenta);
|
|
img=new Bitmap(typeof(DevComponents.DotNetBar.DotNetBarManager),"BarEditorImages.FileOpen.bmp");
|
|
m_BarImages.Images.Add(img,Color.Magenta);
|
|
img=new Bitmap(typeof(DevComponents.DotNetBar.DotNetBarManager),"BarEditorImages.FileSave.bmp");
|
|
m_BarImages.Images.Add(img,Color.Magenta);
|
|
img=new Bitmap(typeof(DevComponents.DotNetBar.DotNetBarManager),"BarEditorImages.CreateItem.bmp");
|
|
m_BarImages.Images.Add(img,Color.Magenta);
|
|
img=new Bitmap(typeof(DevComponents.DotNetBar.DotNetBarManager),"BarEditorImages.DeleteItem.bmp");
|
|
m_BarImages.Images.Add(img,Color.Magenta);
|
|
img=new Bitmap(typeof(DevComponents.DotNetBar.DotNetBarManager),"BarEditorImages.RescanCategories.bmp");
|
|
m_BarImages.Images.Add(img,Color.Magenta);
|
|
|
|
imageList.Images.Clear();
|
|
img=new Bitmap(typeof(DevComponents.DotNetBar.DotNetBarManager),"BarEditorImages.Item.bmp");
|
|
imageList.Images.Add(img,Color.Magenta);
|
|
img=new Bitmap(typeof(DevComponents.DotNetBar.DotNetBarManager),"BarEditorImages.Toolbar.bmp");
|
|
imageList.Images.Add(img,Color.Magenta);
|
|
img=new Bitmap(typeof(DevComponents.DotNetBar.DotNetBarManager),"BarEditorImages.Toolbars.bmp");
|
|
imageList.Images.Add(img,Color.Magenta);
|
|
img=new Bitmap(typeof(DevComponents.DotNetBar.DotNetBarManager),"BarEditorImages.Toolbar.bmp");
|
|
imageList.Images.Add(img,Color.Magenta);
|
|
img=new Bitmap(typeof(DevComponents.DotNetBar.DotNetBarManager),"BarEditorImages.Item.bmp");
|
|
imageList.Images.Add(img,Color.Magenta);
|
|
img=new Bitmap(typeof(DevComponents.DotNetBar.DotNetBarManager),"BarEditorImages.Folder.bmp");
|
|
imageList.Images.Add(img,Color.Magenta);
|
|
img=new Bitmap(typeof(DevComponents.DotNetBar.DotNetBarManager),"BarEditorImages.FolderOpen.bmp");
|
|
imageList.Images.Add(img,Color.Magenta);
|
|
img=new Bitmap(typeof(DevComponents.DotNetBar.DotNetBarManager),"BarEditorImages.ButtonItem.bmp");
|
|
imageList.Images.Add(img,Color.Magenta);
|
|
img=new Bitmap(typeof(DevComponents.DotNetBar.DotNetBarManager),"BarEditorImages.ComboItem.bmp");
|
|
imageList.Images.Add(img,Color.Magenta);
|
|
img=new Bitmap(typeof(DevComponents.DotNetBar.DotNetBarManager),"BarEditorImages.TextBoxItem.bmp");
|
|
imageList.Images.Add(img,Color.Magenta);
|
|
img=new Bitmap(typeof(DevComponents.DotNetBar.DotNetBarManager),"BarEditorImages.CustomizeItem.bmp");
|
|
imageList.Images.Add(img,Color.Magenta);
|
|
img=new Bitmap(typeof(DevComponents.DotNetBar.DotNetBarManager),"BarEditorImages.LableItem.bmp");
|
|
imageList.Images.Add(img,Color.Magenta);
|
|
img=new Bitmap(typeof(DevComponents.DotNetBar.DotNetBarManager),"BarEditorImages.PopupMenu.bmp");
|
|
imageList.Images.Add(img,Color.Magenta);
|
|
|
|
}
|
|
catch(Exception e)
|
|
{
|
|
MessageBox.Show("Could not load resource images. Exception was thrown: "+e.ToString());
|
|
}
|
|
}
|
|
|
|
private object CreateObject(Type type)
|
|
{
|
|
if(_barDesigner!=null)
|
|
return _barDesigner.CreateComponent(type);
|
|
else
|
|
return type.Assembly.CreateInstance(type.FullName);
|
|
}
|
|
}
|
|
}
|