SourceCode/PROMS/DotNetBar Source Code/DotNetBarDesigner.cs

2986 lines
99 KiB
C#

using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
namespace DevComponents.DotNetBar.Design
{
/// <summary>
/// Summary description for Form1.
/// </summary>
public class DotNetBarDesigner : System.Windows.Forms.Form
{
#region Private variables
private IDesignerServices m_Designer=null;
internal DevComponents.DotNetBar.NavigationPane navigationPane1;
internal DevComponents.DotNetBar.NavigationPanePanel navigationPanePanel1;
internal DevComponents.DotNetBar.NavigationPanePanel navigationPanePanel2;
internal DevComponents.DotNetBar.ButtonItem buttonBars;
internal DevComponents.DotNetBar.ButtonItem buttonContext;
private DevComponents.DotNetBar.NavigationPanePanel navigationPanePanel3;
private DevComponents.DotNetBar.ButtonItem buttonCategories;
private ExpandableSplitter splitter1;
private DevComponents.DotNetBar.PanelEx panelEx1;
private ExpandableSplitter splitter2;
private DevComponents.DotNetBar.DotNetBarManager dotNetBarManager1;
private DevComponents.DotNetBar.DockSite barLeftDockSite;
private DevComponents.DotNetBar.DockSite barRightDockSite;
private DevComponents.DotNetBar.DockSite barTopDockSite;
private DevComponents.DotNetBar.DockSite barBottomDockSite;
private System.Windows.Forms.PropertyGrid propertyBars;
private System.Windows.Forms.TreeView treeBars;
private DevComponents.DotNetBar.Design.DefinitionPreviewControl definitionPreview;
private System.ComponentModel.IContainer components;
private System.Windows.Forms.PropertyGrid propertyCategories;
private DevComponents.DotNetBar.ExpandableSplitter splitterOffice20031;
private System.Windows.Forms.TreeView treeCategories;
private bool m_DataChanged=false;
private bool m_ShowItemText=true;
private System.Windows.Forms.OpenFileDialog m_OpenFileDialog;
private string m_DefinitionFileName="";
private System.Windows.Forms.ImageList imageList;
private System.Windows.Forms.PropertyGrid propertyMenus;
private DevComponents.DotNetBar.ExpandableSplitter splitterOffice20032;
private System.Windows.Forms.TreeView treeMenus;
private Bar m_DesignBar=null;
private Hashtable m_catTable;
private HTMLHelp m_HtmlHelp=null;
private GridViewSubclass m_GridSubclassBars=null;
private GridViewSubclass m_GridSubclassMenus=null;
private GridViewSubclass m_GridSubclassCategories=null;
private System.Windows.Forms.SaveFileDialog m_SaveFileDialog;
private DotNetBarManager m_ExternalManager=null;
private Bar m_ExternalBar=null;
private Timer m_LoadTimer=null;
private bool m_Loaded=false;
private ArrayList m_CommandLinksDeleted = new ArrayList();
private ArrayList m_CommandLinksCreated = new ArrayList();
#endregion
#region Command Constants
const string NEW_BUTTON="buttonNewButton";
const string NEW_LABEL="buttonNewLabel";
const string NEW_COLORPICKER="buttonNewColorPicker";
const string NEW_COMBO="buttonNewCombo";
const string NEW_PROGRESS="buttonNewProgress";
const string NEW_TEXTBOX="buttonNewTextBox";
const string NEW_DOCK="buttonNewDock";
const string NEW_CUSTOMIZE="buttonNewCustomize";
const string NEW_MDILIST="buttonNewMdiList";
const string NEW_CONTROLCONT="buttonNewControlCont";
const string SAVE_CLOSE = "buttonSaveAndClose";
const string CONTEXT_MENU="popup";
const string MOVE_TO="buttonMoveTo";
const string COPY_TO="buttonCopyTo";
const string MOVE_LEFT="buttonMoveLeft";
const string MOVE_RIGHT="buttonMoveRight";
const string MOVE_UP="buttonMoveUp";
const string MOVE_DOWN="buttonMoveDown";
const string DELETE="buttonDelete";
const string SAVE_DEFINITION_AS="buttonSaveAs";
const string SAVE_DEFINITION="buttonSave";
const string SAVE_BAR_AS="buttonSaveBar";
const string LOAD_BAR="buttonLoadBar";
const string SYNC_CATEGORIES="buttonSyncCategories";
const string TO_CATEGORIES="buttonToCategories";
const string TO_CONTEXTMENUS="buttonToContextMenus";
const string RESET_IMAGE_POPUP="resetimagepopup";
const string RESET_IMAGE="buttonResetImage";
const string NEW_DEFINITION="buttonNewDefinition";
const string OPEN_DEFINITION="buttonOpen";
const string CLOSE_DESIGNER="buttonClose";
const string SHOW_HELP="buttonHelpContents";
const string SHOW_HELP_SEARCH="buttonHelpSearch";
const string NEW_TOOLBAR="buttonNewToolbar";
const string NEW_MENUBAR="buttonNewMenubar";
const string NEW_STATUSBAR="buttonNewStatusbar";
const string NEW_DOCKBAR="buttonNewDockWindow";
const string NEW_TASKBAR="buttonNewTaskPane";
const string CREATE_BARS_PARENT="buttonCreateBar";
#endregion
#region Constructor, load, unload and dispose
public DotNetBarDesigner()
{
//
// Required for Windows Form Designer support
//
InitializeComponent();
InitializeInternal();
this.GetDesignManager().MouseDown += new MouseEventHandler(PreviewManagerMouseDown);
}
private void PreviewManagerMouseDown(object sender, MouseEventArgs e)
{
if (sender is BaseItem)
{
if (!((BaseItem)sender).SystemItem && !(sender is GenericItemContainer && ((GenericItemContainer)sender).SystemContainer))
SelectObjectInPropertyGrid(sender);
else
{
Bar bar = ((BaseItem)sender).ContainerControl as Bar;
if (bar != null)
SelectObjectInPropertyGrid(bar);
else
SelectObjectInPropertyGrid(null);
}
}
else if (sender is Bar)
SelectObjectInPropertyGrid(sender);
else
SelectObjectInPropertyGrid(null);
}
private void InitializeInternal()
{
propertyBars.CommandsVisibleIfAvailable=false;
propertyMenus.CommandsVisibleIfAvailable=false;
propertyCategories.CommandsVisibleIfAvailable=false;
m_catTable=new Hashtable(20);
m_GridSubclassBars=new GridViewSubclass();
m_GridSubclassBars.ParentGrid=propertyBars;
m_GridSubclassBars.OnRightMouseDown+=new EventHandler(this.GridViewMouseDown);
m_GridSubclassMenus=new GridViewSubclass();
m_GridSubclassMenus.ParentGrid=propertyMenus;
m_GridSubclassMenus.OnRightMouseDown+=new EventHandler(this.GridViewMouseDown);
m_GridSubclassCategories=new GridViewSubclass();
m_GridSubclassCategories.ParentGrid=propertyCategories;
m_GridSubclassCategories.OnRightMouseDown+=new EventHandler(this.GridViewMouseDown);
foreach(Control ctrl in propertyBars.Controls)
{
if(ctrl.GetType().ToString().IndexOf("PropertyGridView")>=0)
{
m_GridSubclassBars.AssignHandle(ctrl.Handle);
break;
}
}
foreach(Control ctrl in propertyMenus.Controls)
{
if(ctrl.GetType().ToString().IndexOf("PropertyGridView")>=0)
{
m_GridSubclassMenus.AssignHandle(ctrl.Handle);
break;
}
}
foreach(Control ctrl in propertyCategories.Controls)
{
if(ctrl.GetType().ToString().IndexOf("PropertyGridView")>=0)
{
m_GridSubclassCategories.AssignHandle(ctrl.Handle);
break;
}
}
}
private void DotNetBarDesigner_Load(object sender, System.EventArgs e)
{
dotNetBarManager1.Style = eDotNetBarStyle.Office2003;
try
{
Microsoft.Win32.RegistryKey key=Microsoft.Win32.Registry.LocalMachine;
string helpfile="";
try
{
if(key!=null)
key=key.OpenSubKey("Software\\DevComponents\\DotNetBar");
if(key!=null)
helpfile=key.GetValue("InstallationFolder","").ToString();
}
finally{if(key!=null) key.Close();}
if(helpfile!="")
{
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)
{
}
LoadFormLayout();
SetupProperties();
this.RefreshView();
SetupToolbars();
if(m_LoadTimer!=null)
m_LoadTimer.Enabled=true;
m_Loaded=true;
}
private void CheckColorSchemeDataChanged()
{
if(m_DataChanged)
return;
if(this.GetDesignManager()!=null)
{
foreach(Bar bar in this.GetDesignManager().Bars)
{
if(bar.ColorScheme!=null && bar.ColorScheme.SchemeChanged)
{
m_DataChanged=true;
break;
}
}
}
else if(this.GetDesignBar()!=null)
{
if(this.GetDesignBar().ColorScheme!=null && this.GetDesignBar().ColorScheme.SchemeChanged)
m_DataChanged=true;
}
}
private void DotNetBarDesigner_Closing(object sender, System.ComponentModel.CancelEventArgs e)
{
CheckColorSchemeDataChanged();
if(m_DataChanged)
{
DialogResult result=DialogResult.No;
if(m_ExternalManager!=null)
{
result=MessageBox.Show("Definition has changed. Would you like to keep changes?","DotNetBar Designer",MessageBoxButtons.YesNoCancel,MessageBoxIcon.Question,MessageBoxDefaultButton.Button1);
}
else if(m_ExternalBar==null)
{
// Stand-alone editing
result=MessageBox.Show("Definition has changed. Would you like to save changes?","DotNetBar Desinger",MessageBoxButtons.YesNoCancel,MessageBoxIcon.Question,MessageBoxDefaultButton.Button1);
}
if(result==DialogResult.Cancel)
{
e.Cancel=true;
return;
}
if(result==DialogResult.Yes)
{
if(m_ExternalManager!=null)
m_ExternalManager.Definition=this.GetDesignManager().Definition;
else
{
if(SaveDefinition(false)==DialogResult.Cancel)
{
e.Cancel=true;
return;
}
}
this.DialogResult=DialogResult.Yes;
}
else
this.DialogResult=DialogResult.No;
}
SaveFormLayout();
}
private void DotNetBarDesigner_Closed(object sender, EventArgs e)
{
//ProcessCommandLinks((this.DialogResult == DialogResult.Yes));
}
private void ProcessCommandLinks(bool saveDefinition)
{
//if (m_Designer == null)
// return;
//if (saveDefinition)
//{
// // Delete removed CommandLinks when definition is saved
// foreach (CommandLink link in m_CommandLinksDeleted)
// {
// link.Manager = null;
// m_Designer.DestroyComponent(link);
// }
//}
//else
//{
// // Delete created CommandLinks when definition is saved
// foreach (CommandLink link in m_CommandLinksCreated)
// {
// link.Manager = null;
// m_Designer.DestroyComponent(link);
// }
//}
}
private void LoadFormLayout()
{
// 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("Designer2Position","").ToString();
if(s!="")
{
if(s=="1")
{
this.WindowState=FormWindowState.Maximized;
}
else
{
string[] arr=s.Split(',');
if(arr.Length==4)
{
Rectangle r=new Rectangle(System.Xml.XmlConvert.ToInt32(arr[0]),System.Xml.XmlConvert.ToInt32(arr[1]),System.Xml.XmlConvert.ToInt32(arr[2]),System.Xml.XmlConvert.ToInt32(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("Designer2PanelSize","").ToString();
navigationPane1.Width=System.Xml.XmlConvert.ToInt32(s);
s=key.GetValue("Designer2TreeHeight","").ToString();
treeBars.Height=System.Xml.XmlConvert.ToInt32(s);
treeMenus.Height=System.Xml.XmlConvert.ToInt32(s);
treeCategories.Height=System.Xml.XmlConvert.ToInt32(s);
s=key.GetValue("Designer2PropSortBars","").ToString();
if(s=="1")
propertyBars.PropertySort=PropertySort.Alphabetical;
s=key.GetValue("Designer2PropSortCat","").ToString();
if(s=="1")
propertyCategories.PropertySort=PropertySort.Alphabetical;
s=key.GetValue("Designer2PropSortMenus","").ToString();
if(s=="1")
propertyMenus.PropertySort=PropertySort.Alphabetical;
}
finally
{
key.Close();
}
}
}
catch(Exception)
{
}
}
private void SaveFormLayout()
{
// 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("Designer2Position",s);
// Save Panel size
key.SetValue("Designer2PanelSize",navigationPane1.Width);
key.SetValue("Designer2TreeHeight",treeBars.Height);
key.SetValue("Designer2PropSortBars",(propertyBars.PropertySort==PropertySort.Alphabetical?"1":"0"));
key.SetValue("Designer2PropSortCat",(propertyCategories.PropertySort==PropertySort.Alphabetical?"1":"0"));
key.SetValue("Designer2PropSortMenus",(propertyMenus.PropertySort==PropertySort.Alphabetical?"1":"0"));
key.Close();
}
catch(Exception)
{
}
}
}
/// <summary>
/// Clean up any resources being used.
/// </summary>
protected override void Dispose( bool disposing )
{
if( disposing )
{
if (components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}
#endregion
#region Preview Support
private DotNetBarManager GetDesignManager()
{
if(m_ExternalBar!=null)
return null;
return definitionPreview.previewManager;
}
private Bar GetDesignBar()
{
return m_ExternalBar;
}
#endregion
#region Categories Support
public void RescanCategories()
{
DotNetBarManager manager=GetDesignManager();
if(manager==null)
return;
if(manager.Bars.Count==0)
return;
manager.Items.Clear();
treeCategories.Nodes.Clear();
foreach(Bar bar in manager.Bars)
{
foreach(BaseItem item in bar.Items)
AutoCategorizeItem(item);
}
m_DataChanged=true;
RefreshCategories();
}
private void AutoCategorizeItem(BaseItem item)
{
DotNetBarManager manager=GetDesignManager();
if(item.Category!="" && item.Name!="" && !manager.Items.Contains(item.Name))
manager.Items.Add(item.Copy());
foreach(BaseItem i in item.SubItems)
AutoCategorizeItem(i);
}
private void RefreshCategories()
{
DotNetBarManager manager=this.GetDesignManager();
if(manager==null)
return;
// Load nodes from items
m_catTable.Clear();
foreach(DictionaryEntry o in manager.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);
}
}
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=treeCategories.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;
}
#endregion
#region Bars Support
private void RefreshBars()
{
treeBars.Nodes.Clear();
if(GetDesignBar()!=null)
{
try
{
Bar bar=this.GetDesignBar();
this.Cursor=Cursors.WaitCursor;
TreeNode barNode=treeBars.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);
}
barNode.Expand();
}
finally
{
this.Cursor=Cursors.Arrow;
}
return;
}
if(this.GetDesignManager()==null)
return;
this.Cursor=Cursors.WaitCursor;
DotNetBarManager manager=this.GetDesignManager();
if(manager.TopDockSite==null && manager.BottomDockSite==null && manager.LeftDockSite==null && manager.RightDockSite==null)
{
// Context Menu editing ONLY
}
else
{
}
foreach(Bar bar in manager.Bars)
{
DisplayTreeBar(bar);
}
this.Cursor=Cursors.Arrow;
}
private void DisplayTreeBar(Bar bar)
{
TreeNode barNode=treeBars.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);
}
}
#endregion
#region Context Menus Support
private void RefreshContextMenus()
{
treeMenus.Nodes.Clear();
DotNetBarManager manager=this.GetDesignManager();
if(manager==null)
return;
this.Cursor=Cursors.WaitCursor;
try
{
// Load all popups
foreach(BaseItem objItem in manager.ContextMenus)
{
TreeNode itemNode=treeMenus.Nodes.Add(GetTreeItemText(objItem));
itemNode.Tag=objItem;
itemNode.ImageIndex=GetItemImageIndex(objItem);
itemNode.SelectedImageIndex=itemNode.ImageIndex;
AddSubItems(objItem,itemNode);
}
}
finally
{
this.Cursor=Cursors.Arrow;
}
}
#endregion
#region Item Tree Loading
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);
}
}
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 RefreshView()
{
this.RefreshBars();
this.RefreshContextMenus();
this.RefreshCategories();
propertyBars.SelectedObject=null;
propertyCategories.SelectedObject=null;
propertyMenus.SelectedObject=null;
}
private void SetupToolbars()
{
if(!dotNetBarManager1.IsDefinitionLoaded)
return;
bool bVisible=true;
if(m_ExternalBar!=null)
bVisible=false;
dotNetBarManager1.GetItem(CREATE_BARS_PARENT,true).Visible=bVisible;
dotNetBarManager1.GetItem(SYNC_CATEGORIES,true).Visible=bVisible;
dotNetBarManager1.GetItem(NEW_DOCK,true).Visible=bVisible;
dotNetBarManager1.GetItem(NEW_DEFINITION,true).Visible=bVisible;
dotNetBarManager1.GetItem(OPEN_DEFINITION,true).Visible=bVisible;
dotNetBarManager1.GetItem(SAVE_DEFINITION,true).Visible=bVisible;
dotNetBarManager1.GetItem(SAVE_DEFINITION_AS,true).Visible=bVisible;
dotNetBarManager1.GetItem(LOAD_BAR,true).Visible=bVisible;
}
private void OnExternalManagerChanged()
{
if(m_ExternalManager!=null)
{
if(!dotNetBarManager1.IsDefinitionLoaded)
dotNetBarManager1.ForceDefinitionLoad();
this.GetDesignManager().Style=m_ExternalManager.Style;
this.GetDesignManager().ThemeAware=m_ExternalManager.ThemeAware;
this.GetDesignManager().UseGlobalColorScheme=m_ExternalManager.UseGlobalColorScheme;
this.GetDesignManager().ColorScheme=m_ExternalManager.ColorScheme;
this.GetDesignManager().ShowCustomizeContextMenu=m_ExternalManager.ShowCustomizeContextMenu;
this.GetDesignManager().ShowResetButton=m_ExternalManager.ShowResetButton;
this.GetDesignManager().ShowToolTips=m_ExternalManager.ShowToolTips;
this.GetDesignManager().Images=m_ExternalManager.Images;
this.GetDesignManager().ImagesLarge=m_ExternalManager.ImagesLarge;
this.GetDesignManager().ImagesMedium=m_ExternalManager.ImagesMedium;
if(this.Visible || !this.HasFloatingBars(m_ExternalManager))
this.GetDesignManager().Definition=m_ExternalManager.Definition;
else
this.CreateLoadTimer();
}
SetupNavigationPane();
SetupProperties();
m_DataChanged=false;
}
private void CreateLoadTimer()
{
m_LoadTimer=new Timer();
m_LoadTimer.Enabled=false;
m_LoadTimer.Interval=100;
m_LoadTimer.Tick+=new EventHandler(LoadTimerTick);
if(m_Loaded)
m_LoadTimer.Enabled=true;
}
private void LoadTimerTick(object sender, EventArgs e)
{
if(m_Loaded)
{
m_LoadTimer.Enabled=false;
this.GetDesignManager().Definition=m_ExternalManager.Definition;
m_LoadTimer.Dispose();
m_LoadTimer=null;
m_DataChanged=false;
this.RefreshView();
}
}
private bool HasFloatingBars(DotNetBarManager manager)
{
bool bRet=false;
foreach(Bar bar in manager.Bars)
{
if(bar.DockSide==eDockSide.None && !bar.AutoHide)
{
bRet=true;
break;
}
}
return bRet;
}
private void OnExternalBarChanged()
{
if(m_ExternalBar!=null)
{
DotNetBarManager manager=definitionPreview.previewManager;
manager.SuspendLayout=true;
manager.Bars.ClearNonDocumentBars();
manager.Items.Clear();
manager.ContextMenus.Clear();
manager.Images=m_ExternalBar.Images;
manager.ImagesLarge=m_ExternalBar.ImagesLarge;
manager.ImagesMedium=m_ExternalBar.ImagesMedium;
manager.SuspendLayout=false;
manager.Bars.Add(new Bar(m_ExternalBar.Text));
manager.Bars[0].DockSide=eDockSide.Top;
m_DesignBar=manager.Bars[0];
RefreshDesignBar();
}
else
{
m_DesignBar=null;
}
SetupNavigationPane();
SetupProperties();
m_DataChanged=false;
}
private void RefreshDesignBar()
{
if(m_DesignBar!=null && m_ExternalBar!=null)
{
m_DesignBar.Definition=m_ExternalBar.Definition;
m_DesignBar.DockSide=eDockSide.Top;
}
}
private void SetupNavigationPane()
{
if(m_ExternalBar!=null)
{
buttonContext.Visible=false;
buttonCategories.Visible=false;
buttonBars.Checked=true;
}
else
{
if(m_ExternalManager.TopDockSite==null &&
m_ExternalManager.BottomDockSite==null &&
m_ExternalManager.LeftDockSite==null &&
m_ExternalManager.RightDockSite==null)
{
// Manager provides popups only
buttonContext.Visible=true;
buttonContext.Checked=true;
buttonCategories.Visible=false;
buttonBars.Visible=false;
}
else
{
buttonContext.Visible=true;
buttonCategories.Visible=true;
buttonBars.Checked=true;
}
}
navigationPane1.RecalcLayout();
}
private void SetupProperties()
{
if(m_ExternalBar!=null)
{
propertyBars.BrowsableAttributes=new AttributeCollection(new Attribute[] {BrowsableAttribute.Yes});
propertyMenus.BrowsableAttributes=new AttributeCollection(new Attribute[] {BrowsableAttribute.Yes});
propertyCategories.BrowsableAttributes=new AttributeCollection(new Attribute[] {BrowsableAttribute.Yes});
}
else
{
propertyBars.BrowsableAttributes = new AttributeCollection(new Attribute[] { DevCoBrowsable.Yes });
propertyMenus.BrowsableAttributes = new AttributeCollection(new Attribute[] { DevCoBrowsable.Yes });
propertyCategories.BrowsableAttributes = new AttributeCollection(new Attribute[] { DevCoBrowsable.Yes });
}
}
#endregion
#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(DotNetBarDesigner));
this.navigationPane1 = new DevComponents.DotNetBar.NavigationPane();
this.navigationPanePanel1 = new DevComponents.DotNetBar.NavigationPanePanel();
this.propertyBars = new System.Windows.Forms.PropertyGrid();
this.splitter1 = new DevComponents.DotNetBar.ExpandableSplitter();
this.treeBars = new System.Windows.Forms.TreeView();
this.imageList = new System.Windows.Forms.ImageList(this.components);
this.buttonBars = new DevComponents.DotNetBar.ButtonItem();
this.navigationPanePanel3 = new DevComponents.DotNetBar.NavigationPanePanel();
this.propertyCategories = new System.Windows.Forms.PropertyGrid();
this.splitterOffice20031 = new DevComponents.DotNetBar.ExpandableSplitter();
this.treeCategories = new System.Windows.Forms.TreeView();
this.buttonCategories = new DevComponents.DotNetBar.ButtonItem();
this.navigationPanePanel2 = new DevComponents.DotNetBar.NavigationPanePanel();
this.propertyMenus = new System.Windows.Forms.PropertyGrid();
this.splitterOffice20032 = new DevComponents.DotNetBar.ExpandableSplitter();
this.treeMenus = new System.Windows.Forms.TreeView();
this.buttonContext = new DevComponents.DotNetBar.ButtonItem();
this.panelEx1 = new DevComponents.DotNetBar.PanelEx();
this.definitionPreview = new DevComponents.DotNetBar.Design.DefinitionPreviewControl();
this.splitter2 = new DevComponents.DotNetBar.ExpandableSplitter();
#if !TRIAL
this.dotNetBarManager1 = new DevComponents.DotNetBar.DotNetBarManager(this.components,true);
#else
this.dotNetBarManager1 = new DevComponents.DotNetBar.DotNetBarManager(this.components);
#endif
this.barBottomDockSite = new DevComponents.DotNetBar.DockSite();
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.navigationPane1.SuspendLayout();
this.navigationPanePanel1.SuspendLayout();
this.navigationPanePanel3.SuspendLayout();
this.navigationPanePanel2.SuspendLayout();
this.SuspendLayout();
//
// navigationPane1
//
this.navigationPane1.ConfigureAddRemoveVisible = false;
this.navigationPane1.ConfigureNavOptionsVisible = false;
this.navigationPane1.Controls.AddRange(new System.Windows.Forms.Control[] {
this.navigationPanePanel1,
this.navigationPanePanel3,
this.navigationPanePanel2,
this.navigationPane1.TitlePanel});
this.navigationPane1.Dock = System.Windows.Forms.DockStyle.Left;
this.navigationPane1.ItemPaddingBottom = 2;
this.navigationPane1.ItemPaddingTop = 2;
this.navigationPane1.Items.AddRange(new DevComponents.DotNetBar.BaseItem[] {
this.buttonBars,
this.buttonContext,
this.buttonCategories});
this.navigationPane1.Location = new System.Drawing.Point(0, 48);
this.navigationPane1.Name = "navigationPane1";
this.navigationPane1.NavigationBarHeight = 88;
this.navigationPane1.Size = new System.Drawing.Size(304, 468);
this.navigationPane1.TabIndex = 1;
//
// navigationPane1.TitlePanel
//
this.navigationPane1.TitlePanel.Dock = System.Windows.Forms.DockStyle.Top;
this.navigationPane1.TitlePanel.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((System.Byte)(0)));
this.navigationPane1.TitlePanel.Name = "panelEx1";
this.navigationPane1.TitlePanel.Size = new System.Drawing.Size(304, 24);
this.navigationPane1.TitlePanel.Style.BackColor1.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBackground;
this.navigationPane1.TitlePanel.Style.BackColor2.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBackground2;
this.navigationPane1.TitlePanel.Style.Border = DevComponents.DotNetBar.eBorderType.SingleLine;
this.navigationPane1.TitlePanel.Style.BorderColor.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBorder;
this.navigationPane1.TitlePanel.Style.ForeColor.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelText;
this.navigationPane1.TitlePanel.Style.GradientAngle = 90;
this.navigationPane1.TitlePanel.Style.MarginLeft = 4;
this.navigationPane1.TitlePanel.TabIndex = 0;
this.navigationPane1.TitlePanel.Text = "Bars";
this.navigationPane1.PanelChanging += new DevComponents.DotNetBar.PanelChangingEventHandler(this.navigationPane1_PanelChanging);
//
// navigationPanePanel1
//
this.navigationPanePanel1.Controls.AddRange(new System.Windows.Forms.Control[] {
this.propertyBars,
this.splitter1,
this.treeBars});
this.navigationPanePanel1.Dock = System.Windows.Forms.DockStyle.Fill;
this.navigationPanePanel1.DockPadding.Left = 1;
this.navigationPanePanel1.DockPadding.Right = 1;
this.navigationPanePanel1.DockPadding.Top = 1;
this.navigationPanePanel1.Location = new System.Drawing.Point(0, 24);
this.navigationPanePanel1.Name = "navigationPanePanel1";
this.navigationPanePanel1.ParentItem = this.buttonBars;
this.navigationPanePanel1.Size = new System.Drawing.Size(304, 356);
this.navigationPanePanel1.Style.Alignment = System.Drawing.StringAlignment.Center;
this.navigationPanePanel1.Style.BackColor1.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.BarBackground;
this.navigationPanePanel1.Style.BackColor2.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.BarBackground2;
this.navigationPanePanel1.Style.BackgroundImagePosition = DevComponents.DotNetBar.eBackgroundImagePosition.Tile;
this.navigationPanePanel1.Style.Border = DevComponents.DotNetBar.eBorderType.SingleLine;
this.navigationPanePanel1.Style.BorderColor.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBorder;
this.navigationPanePanel1.Style.ForeColor.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.ItemText;
this.navigationPanePanel1.Style.GradientAngle = 90;
this.navigationPanePanel1.TabIndex = 2;
//
// propertyBars
//
this.propertyBars.BackColor = System.Drawing.SystemColors.Control;
this.propertyBars.CommandsBackColor = System.Drawing.SystemColors.Window;
this.propertyBars.CommandsVisibleIfAvailable = true;
this.propertyBars.Dock = System.Windows.Forms.DockStyle.Fill;
this.propertyBars.HelpBackColor = System.Drawing.SystemColors.ControlLight;
this.propertyBars.LargeButtons = false;
this.propertyBars.LineColor = System.Drawing.SystemColors.ControlLight;
this.propertyBars.Location = new System.Drawing.Point(1, 150);
this.propertyBars.Name = "propertyBars";
this.propertyBars.Size = new System.Drawing.Size(302, 206);
this.propertyBars.TabIndex = 3;
this.propertyBars.Text = "propertyGrid1";
this.propertyBars.ViewBackColor = System.Drawing.SystemColors.Window;
this.propertyBars.ViewForeColor = System.Drawing.SystemColors.WindowText;
this.propertyBars.PropertyValueChanged += new System.Windows.Forms.PropertyValueChangedEventHandler(this.GridPropertyValueChanged);
//
// splitter1
//
this.splitter1.Expandable = false;
this.splitter1.Dock = System.Windows.Forms.DockStyle.Top;
this.splitter1.Location = new System.Drawing.Point(1, 144);
this.splitter1.Name = "splitter1";
this.splitter1.Size = new System.Drawing.Size(302, 6);
this.splitter1.TabIndex = 4;
this.splitter1.TabStop = false;
//
// treeBars
//
this.treeBars.BorderStyle = System.Windows.Forms.BorderStyle.None;
this.treeBars.Dock = System.Windows.Forms.DockStyle.Top;
this.treeBars.ImageList = this.imageList;
this.treeBars.Location = new System.Drawing.Point(1, 1);
this.treeBars.Name = "treeBars";
this.treeBars.Size = new System.Drawing.Size(302, 143);
this.treeBars.TabIndex = 2;
this.treeBars.KeyDown += new System.Windows.Forms.KeyEventHandler(this.TreeKeyDown);
this.treeBars.MouseDown += new System.Windows.Forms.MouseEventHandler(this.TreeMouseDown);
this.treeBars.AfterSelect += new System.Windows.Forms.TreeViewEventHandler(this.TreeAfterSelect);
this.treeBars.BeforeSelect += new System.Windows.Forms.TreeViewCancelEventHandler(this.TreeBeforeSelect);
this.treeBars.AfterLabelEdit += new System.Windows.Forms.NodeLabelEditEventHandler(this.TreeAfterLabelEdit);
this.treeBars.BeforeCollapse += new System.Windows.Forms.TreeViewCancelEventHandler(this.TreeBeforeCollapse);
this.treeBars.BeforeExpand += new System.Windows.Forms.TreeViewCancelEventHandler(this.TreeBeforeExpand);
this.treeBars.HideSelection=false;
//
// imageList
//
this.imageList.ColorDepth = System.Windows.Forms.ColorDepth.Depth8Bit;
this.imageList.ImageSize = new System.Drawing.Size(16, 16);
this.imageList.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("imageList.ImageStream")));
this.imageList.TransparentColor = System.Drawing.Color.Magenta;
//
// buttonBars
//
this.buttonBars.ButtonStyle = DevComponents.DotNetBar.eButtonStyle.ImageAndText;
this.buttonBars.Checked = true;
this.buttonBars.Image = ((System.Drawing.Bitmap)(resources.GetObject("buttonBars.Image")));
this.buttonBars.Name = "buttonBars";
this.buttonBars.OptionGroup = "navBar";
this.buttonBars.Style = DevComponents.DotNetBar.eDotNetBarStyle.Office2003;
this.buttonBars.Text = "Bars";
this.buttonBars.Tooltip = "View Toolbars, Menu bars and dockable windows";
//
// navigationPanePanel3
//
this.navigationPanePanel3.Controls.AddRange(new System.Windows.Forms.Control[] {
this.propertyCategories,
this.splitterOffice20031,
this.treeCategories});
this.navigationPanePanel3.Dock = System.Windows.Forms.DockStyle.Fill;
this.navigationPanePanel3.DockPadding.Left = 1;
this.navigationPanePanel3.DockPadding.Right = 1;
this.navigationPanePanel3.DockPadding.Top = 1;
this.navigationPanePanel3.Location = new System.Drawing.Point(0, 24);
this.navigationPanePanel3.Name = "navigationPanePanel3";
this.navigationPanePanel3.ParentItem = this.buttonCategories;
this.navigationPanePanel3.Size = new System.Drawing.Size(304, 356);
this.navigationPanePanel3.Style.Alignment = System.Drawing.StringAlignment.Center;
this.navigationPanePanel3.Style.BackColor1.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.BarBackground;
this.navigationPanePanel3.Style.BackColor2.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.BarBackground2;
this.navigationPanePanel3.Style.BackgroundImagePosition = DevComponents.DotNetBar.eBackgroundImagePosition.Tile;
this.navigationPanePanel3.Style.Border = DevComponents.DotNetBar.eBorderType.SingleLine;
this.navigationPanePanel3.Style.BorderColor.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBorder;
this.navigationPanePanel3.Style.ForeColor.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.ItemText;
this.navigationPanePanel3.Style.GradientAngle = 90;
this.navigationPanePanel3.TabIndex = 4;
//
// propertyCategories
//
this.propertyCategories.BackColor = System.Drawing.SystemColors.Control;
this.propertyCategories.CommandsBackColor = System.Drawing.SystemColors.Window;
this.propertyCategories.CommandsVisibleIfAvailable = true;
this.propertyCategories.Dock = System.Windows.Forms.DockStyle.Fill;
this.propertyCategories.HelpBackColor = System.Drawing.SystemColors.ControlLight;
this.propertyCategories.HelpVisible = false;
this.propertyCategories.LargeButtons = false;
this.propertyCategories.LineColor = System.Drawing.SystemColors.ControlLight;
this.propertyCategories.Location = new System.Drawing.Point(1, 150);
this.propertyCategories.Name = "propertyCategories";
this.propertyCategories.Size = new System.Drawing.Size(302, 206);
this.propertyCategories.TabIndex = 6;
this.propertyCategories.Text = "propertyGrid1";
this.propertyCategories.ToolbarVisible = false;
this.propertyCategories.ViewBackColor = System.Drawing.SystemColors.Window;
this.propertyCategories.ViewForeColor = System.Drawing.SystemColors.WindowText;
this.propertyCategories.PropertyValueChanged += new System.Windows.Forms.PropertyValueChangedEventHandler(this.GridPropertyValueChanged);
//
// splitterOffice20031
//
this.splitterOffice20031.Dock = System.Windows.Forms.DockStyle.Top;
this.splitterOffice20031.Location = new System.Drawing.Point(1, 144);
this.splitterOffice20031.Name = "splitterOffice20031";
this.splitterOffice20031.Size = new System.Drawing.Size(302, 6);
this.splitterOffice20031.Expandable=false;
this.splitterOffice20031.TabIndex = 7;
this.splitterOffice20031.TabStop = false;
//
// treeCategories
//
this.treeCategories.BorderStyle = System.Windows.Forms.BorderStyle.None;
this.treeCategories.Dock = System.Windows.Forms.DockStyle.Top;
this.treeCategories.ImageList = this.imageList;
this.treeCategories.Location = new System.Drawing.Point(1, 1);
this.treeCategories.Name = "treeCategories";
this.treeCategories.Size = new System.Drawing.Size(302, 143);
this.treeCategories.TabIndex = 5;
this.treeCategories.KeyDown += new System.Windows.Forms.KeyEventHandler(this.TreeKeyDown);
this.treeCategories.MouseDown += new System.Windows.Forms.MouseEventHandler(this.TreeMouseDown);
this.treeCategories.AfterSelect += new System.Windows.Forms.TreeViewEventHandler(this.TreeAfterSelect);
this.treeCategories.BeforeSelect += new System.Windows.Forms.TreeViewCancelEventHandler(this.TreeBeforeSelect);
this.treeCategories.AfterLabelEdit += new System.Windows.Forms.NodeLabelEditEventHandler(this.TreeAfterLabelEdit);
this.treeCategories.BeforeCollapse += new System.Windows.Forms.TreeViewCancelEventHandler(this.TreeBeforeCollapse);
this.treeCategories.BeforeExpand += new System.Windows.Forms.TreeViewCancelEventHandler(this.TreeBeforeExpand);
this.treeCategories.HideSelection=false;
//
// buttonCategories
//
this.buttonCategories.Image = ((System.Drawing.Bitmap)(resources.GetObject("buttonCategories.Image")));
this.buttonCategories.Name = "buttonCategories";
this.buttonCategories.OptionGroup = "navBar";
this.buttonCategories.Style = DevComponents.DotNetBar.eDotNetBarStyle.Office2003;
this.buttonCategories.Text = "Categories";
this.buttonCategories.Tooltip = "View Command Categories";
//
// navigationPanePanel2
//
this.navigationPanePanel2.Controls.AddRange(new System.Windows.Forms.Control[] {
this.propertyMenus,
this.splitterOffice20032,
this.treeMenus});
this.navigationPanePanel2.Dock = System.Windows.Forms.DockStyle.Fill;
this.navigationPanePanel2.DockPadding.Left = 1;
this.navigationPanePanel2.DockPadding.Right = 1;
this.navigationPanePanel2.DockPadding.Top = 1;
this.navigationPanePanel2.Location = new System.Drawing.Point(0, 24);
this.navigationPanePanel2.Name = "navigationPanePanel2";
this.navigationPanePanel2.ParentItem = this.buttonContext;
this.navigationPanePanel2.Size = new System.Drawing.Size(304, 356);
this.navigationPanePanel2.Style.Alignment = System.Drawing.StringAlignment.Center;
this.navigationPanePanel2.Style.BackColor1.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.BarBackground;
this.navigationPanePanel2.Style.BackColor2.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.BarBackground2;
this.navigationPanePanel2.Style.BackgroundImagePosition = DevComponents.DotNetBar.eBackgroundImagePosition.Tile;
this.navigationPanePanel2.Style.Border = DevComponents.DotNetBar.eBorderType.SingleLine;
this.navigationPanePanel2.Style.BorderColor.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBorder;
this.navigationPanePanel2.Style.ForeColor.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.ItemText;
this.navigationPanePanel2.Style.GradientAngle = 90;
this.navigationPanePanel2.TabIndex = 3;
//
// propertyMenus
//
this.propertyMenus.BackColor = System.Drawing.SystemColors.Control;
this.propertyMenus.CommandsBackColor = System.Drawing.SystemColors.Window;
this.propertyMenus.CommandsVisibleIfAvailable = true;
this.propertyMenus.Dock = System.Windows.Forms.DockStyle.Fill;
this.propertyMenus.HelpBackColor = System.Drawing.SystemColors.ControlLight;
this.propertyMenus.HelpVisible = false;
this.propertyMenus.LargeButtons = false;
this.propertyMenus.LineColor = System.Drawing.SystemColors.ControlLight;
this.propertyMenus.Location = new System.Drawing.Point(1, 150);
this.propertyMenus.Name = "propertyMenus";
this.propertyMenus.Size = new System.Drawing.Size(302, 206);
this.propertyMenus.TabIndex = 6;
this.propertyMenus.Text = "propertyGrid1";
this.propertyMenus.ToolbarVisible = false;
this.propertyMenus.ViewBackColor = System.Drawing.SystemColors.Window;
this.propertyMenus.ViewForeColor = System.Drawing.SystemColors.WindowText;
this.propertyMenus.PropertyValueChanged += new System.Windows.Forms.PropertyValueChangedEventHandler(this.GridPropertyValueChanged);
//
// splitterOffice20032
//
this.splitterOffice20032.Expandable = false;
this.splitterOffice20032.Dock = System.Windows.Forms.DockStyle.Top;
this.splitterOffice20032.Location = new System.Drawing.Point(1, 144);
this.splitterOffice20032.Name = "splitterOffice20032";
this.splitterOffice20032.Size = new System.Drawing.Size(302, 6);
this.splitterOffice20032.TabIndex = 7;
this.splitterOffice20032.TabStop = false;
//
// treeMenus
//
this.treeMenus.BorderStyle = System.Windows.Forms.BorderStyle.None;
this.treeMenus.Dock = System.Windows.Forms.DockStyle.Top;
this.treeMenus.ImageList = this.imageList;
this.treeMenus.Location = new System.Drawing.Point(1, 1);
this.treeMenus.Name = "treeMenus";
this.treeMenus.Size = new System.Drawing.Size(302, 143);
this.treeMenus.TabIndex = 5;
this.treeMenus.KeyDown += new System.Windows.Forms.KeyEventHandler(this.TreeKeyDown);
this.treeMenus.MouseDown += new System.Windows.Forms.MouseEventHandler(this.TreeMouseDown);
this.treeMenus.AfterSelect += new System.Windows.Forms.TreeViewEventHandler(this.TreeAfterSelect);
this.treeMenus.BeforeSelect += new System.Windows.Forms.TreeViewCancelEventHandler(this.TreeBeforeSelect);
this.treeMenus.AfterLabelEdit += new System.Windows.Forms.NodeLabelEditEventHandler(this.TreeAfterLabelEdit);
this.treeMenus.BeforeCollapse += new System.Windows.Forms.TreeViewCancelEventHandler(this.TreeBeforeCollapse);
this.treeMenus.BeforeExpand += new System.Windows.Forms.TreeViewCancelEventHandler(this.TreeBeforeExpand);
this.treeMenus.HideSelection=false;
//
// buttonContext
//
this.buttonContext.ButtonStyle = DevComponents.DotNetBar.eButtonStyle.ImageAndText;
this.buttonContext.Image = ((System.Drawing.Bitmap)(resources.GetObject("buttonContext.Image")));
this.buttonContext.Name = "buttonContext";
this.buttonContext.OptionGroup = "navBar";
this.buttonContext.Style = DevComponents.DotNetBar.eDotNetBarStyle.Office2003;
this.buttonContext.Text = "Context Menus";
this.buttonContext.Tooltip = "View Context Menus";
//
// panelEx1
//
this.panelEx1.Dock = System.Windows.Forms.DockStyle.Top;
this.panelEx1.Font = new System.Drawing.Font("Arial", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((System.Byte)(0)));
this.panelEx1.Location = new System.Drawing.Point(310, 48);
this.panelEx1.Name = "panelEx1";
this.panelEx1.Size = new System.Drawing.Size(432, 25);
this.panelEx1.Style.Alignment = System.Drawing.StringAlignment.Center;
this.panelEx1.Style.BackColor1.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBackground;
this.panelEx1.Style.BackColor2.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBackground2;
this.panelEx1.Style.Border = DevComponents.DotNetBar.eBorderType.SingleLine;
this.panelEx1.Style.BorderColor.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBorder;
this.panelEx1.Style.ForeColor.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelText;
this.panelEx1.Style.GradientAngle = 90;
this.panelEx1.TabIndex = 2;
this.panelEx1.Text = "Layout Preview";
//
// definitionPreview
//
this.definitionPreview.BackColor = System.Drawing.SystemColors.Control;
this.definitionPreview.Dock = System.Windows.Forms.DockStyle.Fill;
this.definitionPreview.Location = new System.Drawing.Point(310, 73);
this.definitionPreview.Name = "definitionPreview";
this.definitionPreview.Size = new System.Drawing.Size(432, 443);
this.definitionPreview.TabIndex = 3;
this.definitionPreview.DataChanged+=new EventHandler(this.PreviewDataChanged);
//
// splitter2
//
this.splitter2.Location = new System.Drawing.Point(304, 48);
this.splitter2.Name = "splitter2";
this.splitter2.Size = new System.Drawing.Size(8, 468);
this.splitter2.TabIndex = 4;
this.splitter2.TabStop = false;
this.splitter2.Dock=DockStyle.Left;
this.splitter2.ExpandableControl=navigationPane1;
//
// dotNetBarManager1
//
this.dotNetBarManager1.AutoDispatchShortcuts.Add(DevComponents.DotNetBar.eShortcut.F1);
this.dotNetBarManager1.AutoDispatchShortcuts.Add(DevComponents.DotNetBar.eShortcut.CtrlC);
this.dotNetBarManager1.AutoDispatchShortcuts.Add(DevComponents.DotNetBar.eShortcut.CtrlA);
this.dotNetBarManager1.AutoDispatchShortcuts.Add(DevComponents.DotNetBar.eShortcut.CtrlV);
this.dotNetBarManager1.AutoDispatchShortcuts.Add(DevComponents.DotNetBar.eShortcut.CtrlX);
this.dotNetBarManager1.AutoDispatchShortcuts.Add(DevComponents.DotNetBar.eShortcut.CtrlZ);
this.dotNetBarManager1.AutoDispatchShortcuts.Add(DevComponents.DotNetBar.eShortcut.Del);
this.dotNetBarManager1.AutoDispatchShortcuts.Add(DevComponents.DotNetBar.eShortcut.Ins);
this.dotNetBarManager1.BottomDockSite = this.barBottomDockSite;
this.dotNetBarManager1.DefinitionName = "DotNetBarDesigner.dotNetBarManager1.xml";
this.dotNetBarManager1.LeftDockSite = this.barLeftDockSite;
this.dotNetBarManager1.ParentForm = this;
this.dotNetBarManager1.RightDockSite = this.barRightDockSite;
this.dotNetBarManager1.Style = DevComponents.DotNetBar.eDotNetBarStyle.Office2003;
this.dotNetBarManager1.TopDockSite = this.barTopDockSite;
this.dotNetBarManager1.ItemClick += new System.EventHandler(this.dotNetBarManager1_ItemClick);
this.dotNetBarManager1.UseHook=true;
//
// barBottomDockSite
//
this.barBottomDockSite.AccessibleRole = System.Windows.Forms.AccessibleRole.Window;
this.barBottomDockSite.BackgroundImageAlpha = ((System.Byte)(255));
this.barBottomDockSite.Dock = System.Windows.Forms.DockStyle.Bottom;
this.barBottomDockSite.Location = new System.Drawing.Point(0, 516);
this.barBottomDockSite.Name = "barBottomDockSite";
this.barBottomDockSite.Size = new System.Drawing.Size(742, 0);
this.barBottomDockSite.TabIndex = 8;
this.barBottomDockSite.TabStop = false;
//
// barLeftDockSite
//
this.barLeftDockSite.AccessibleRole = System.Windows.Forms.AccessibleRole.Window;
this.barLeftDockSite.BackgroundImageAlpha = ((System.Byte)(255));
this.barLeftDockSite.Dock = System.Windows.Forms.DockStyle.Left;
this.barLeftDockSite.Location = new System.Drawing.Point(0, 48);
this.barLeftDockSite.Name = "barLeftDockSite";
this.barLeftDockSite.Size = new System.Drawing.Size(0, 468);
this.barLeftDockSite.TabIndex = 5;
this.barLeftDockSite.TabStop = false;
//
// barRightDockSite
//
this.barRightDockSite.AccessibleRole = System.Windows.Forms.AccessibleRole.Window;
this.barRightDockSite.BackgroundImageAlpha = ((System.Byte)(255));
this.barRightDockSite.Dock = System.Windows.Forms.DockStyle.Right;
this.barRightDockSite.Location = new System.Drawing.Point(742, 48);
this.barRightDockSite.Name = "barRightDockSite";
this.barRightDockSite.Size = new System.Drawing.Size(0, 468);
this.barRightDockSite.TabIndex = 6;
this.barRightDockSite.TabStop = false;
//
// barTopDockSite
//
this.barTopDockSite.AccessibleRole = System.Windows.Forms.AccessibleRole.Window;
this.barTopDockSite.BackgroundImageAlpha = ((System.Byte)(255));
this.barTopDockSite.Dock = System.Windows.Forms.DockStyle.Top;
this.barTopDockSite.Name = "barTopDockSite";
this.barTopDockSite.Size = new System.Drawing.Size(742, 48);
this.barTopDockSite.TabIndex = 7;
this.barTopDockSite.TabStop = false;
//
// m_OpenFileDialog
//
this.m_OpenFileDialog.Filter = "DotNetBar Files (*.dnb, *.xml)|*.dnb;*.xml|All Files (*.*)|*.*";
this.m_OpenFileDialog.ShowReadOnly = true;
this.m_OpenFileDialog.Title = "Open DotNetBar Definition File";
//
// m_SaveFileDialog
//
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";
//
// DotNetBarDesigner
//
this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
this.ClientSize = new System.Drawing.Size(742, 516);
this.Controls.AddRange(new System.Windows.Forms.Control[] {
this.definitionPreview,
this.panelEx1,
this.splitter2,
this.navigationPane1,
this.barLeftDockSite,
this.barRightDockSite,
this.barTopDockSite,
this.barBottomDockSite});
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.Name = "DotNetBarDesigner";
this.Text = "DotNetBar Designer";
this.Closing += new System.ComponentModel.CancelEventHandler(this.DotNetBarDesigner_Closing);
this.Closed += new EventHandler(DotNetBarDesigner_Closed);
this.Load += new System.EventHandler(this.DotNetBarDesigner_Load);
this.navigationPane1.ResumeLayout(false);
this.navigationPanePanel1.ResumeLayout(false);
this.navigationPanePanel3.ResumeLayout(false);
this.navigationPanePanel2.ResumeLayout(false);
this.ResumeLayout(false);
}
#endregion
#region Toolbar and menu bar support
private void dotNetBarManager1_ItemClick(object sender, System.EventArgs e)
{
BaseItem item=sender as BaseItem;
if(item==null)
return;
PropertyGrid grid=propertyBars;
if(navigationPane1.SelectedPanel==navigationPanePanel2)
grid=propertyMenus;
if(navigationPane1.SelectedPanel==navigationPanePanel3)
grid=propertyCategories;
switch(item.Name)
{
case CREATE_BARS_PARENT:
{
if (!item.Expanded)
item.Expanded = true;
break;
}
case OPEN_DEFINITION:
{
if(m_OpenFileDialog.ShowDialog()==DialogResult.OK && System.IO.File.Exists(m_OpenFileDialog.FileName))
{
DotNetBarManager manager=this.GetDesignManager();
manager.LoadDefinition(m_OpenFileDialog.FileName);
m_DefinitionFileName=m_OpenFileDialog.FileName;
SetupProperties();
RefreshView();
m_DataChanged=true;
}
break;
}
case RESET_IMAGE:
{
m_DataChanged=true;
if(grid.SelectedGridItem!=null && (grid.SelectedGridItem.PropertyDescriptor.PropertyType==typeof(System.Drawing.Image) || grid.SelectedGridItem.PropertyDescriptor.PropertyType==typeof(System.Drawing.Icon)))
{
grid.SelectedGridItem.PropertyDescriptor.SetValue(grid.SelectedObject,null);
}
grid.Refresh();
break;
}
case CLOSE_DESIGNER:
{
this.DialogResult=DialogResult.OK;
this.Close();
break;
}
case SHOW_HELP:
{
if(m_HtmlHelp!=null)
m_HtmlHelp.ShowContents();
break;
}
case SHOW_HELP_SEARCH:
{
if(m_HtmlHelp!=null)
m_HtmlHelp.ShowSearch();
break;
}
case NEW_TOOLBAR:
case NEW_MENUBAR:
case NEW_STATUSBAR:
case NEW_TASKBAR:
{
m_DataChanged=true;
Bar bar;
if(item.Name==NEW_MENUBAR)
{
bar=CreateObject(typeof(Bar)) as Bar;
bar.Text="Main Menu";
bar.MenuBar=true;
bar.Stretch=true;
bar.Name="mainmenu";
}
else if(item.Name==NEW_STATUSBAR)
{
bar=CreateObject(typeof(Bar)) as Bar;
bar.Text="Status";
bar.Stretch=true;
bar.Name="statusBar"+((int)this.GetDesignManager().Bars.Count+1).ToString();
bar.LayoutType=eLayoutType.Toolbar;
bar.GrabHandleStyle=eGrabHandleStyle.ResizeHandle;
bar.ItemSpacing=2;
}
else if(item.Name==NEW_TASKBAR)
{
bar=CreateObject(typeof(Bar)) as Bar;
bar.Text="Task Pane";
bar.Stretch=true;
bar.Name="taskbar"+((int)this.GetDesignManager().Bars.Count+1).ToString();
bar.LayoutType=eLayoutType.TaskList;
bar.GrabHandleStyle=eGrabHandleStyle.Caption;
}
else
{
bar=CreateObject(typeof(Bar)) as Bar;
bar.Text="My Bar";
bar.Name="bar"+((int)this.GetDesignManager().Bars.Count+1).ToString();
}
//bar.SetDesignMode(true);
TreeNode barNode=treeBars.Nodes.Add(bar.Text);
barNode.Tag=bar;
barNode.ImageIndex=3;
barNode.SelectedImageIndex=3;
bar.DockLine=this.GetDesignManager().Bars.Count;
this.GetDesignManager().Bars.Add(bar);
if(item.Name==NEW_TASKBAR)
bar.DockSide=eDockSide.Right;
else if(item.Name==NEW_STATUSBAR)
bar.DockSide=eDockSide.Bottom;
else
bar.DockSide=eDockSide.Top;
if(item.Name==NEW_MENUBAR || item.Name==NEW_TOOLBAR)
{
ButtonItem button=CreateObject(typeof(ButtonItem)) as ButtonItem;
AssignItemName(button);
button.Text=button.Name;
//button.GenerateCommandLink = true;
//UpdateCommandLink(button);
bar.Items.Add(button);
bar.RecalcLayout();
TreeNode itemTreeNode=barNode.Nodes.Add(GetTreeItemText(button));
itemTreeNode.Tag=button;
itemTreeNode.ImageIndex=GetItemImageIndex(button);
itemTreeNode.SelectedImageIndex=itemTreeNode.ImageIndex;
itemTreeNode.EnsureVisible();
treeBars.SelectedNode=barNode;
barNode.EnsureVisible();
}
else if(item.Name==NEW_STATUSBAR)
{
LabelItem status=CreateObject(typeof(LabelItem)) as LabelItem;
AssignItemName(status);
status.Text="Status Ready...";
status.BorderType=eBorderType.SingleLine;
status.Width=136;
bar.Items.Add(status);
bar.RecalcLayout();
TreeNode itemTreeNode=barNode.Nodes.Add(GetTreeItemText(status));
itemTreeNode.Tag=status;
itemTreeNode.ImageIndex=GetItemImageIndex(status);
itemTreeNode.SelectedImageIndex=itemTreeNode.ImageIndex;
itemTreeNode.EnsureVisible();
treeBars.SelectedNode=barNode;
barNode.EnsureVisible();
}
else
{
treeBars.SelectedNode=barNode;
barNode.EnsureVisible();
}
break;
}
case NEW_DOCKBAR:
{
m_DataChanged=true;
Bar bar=CreateObject(typeof(Bar)) as Bar;;
bar.Text="Dockable Window";
bar.Stretch=true;
bar.LayoutType=eLayoutType.DockContainer;
bar.GrabHandleStyle=eGrabHandleStyle.Caption;
bar.Name="dockwindow"+this.GetDesignManager().Bars.Count.ToString();
DockContainerItem dockItem=CreateObject(typeof(DockContainerItem)) as DockContainerItem;
AssignItemName(dockItem);
dockItem.Text="Dock Container";
bar.Items.Add(dockItem);
TreeNode barNode=treeBars.Nodes.Add(bar.Text);
barNode.Tag=bar;
barNode.ImageIndex=3;
barNode.SelectedImageIndex=3;
bar.DockLine=this.GetDesignManager().Bars.Count;
this.GetDesignManager().Bars.Add(bar);
bar.DockSide=eDockSide.Left;
TreeNode itemTreeNode=barNode.Nodes.Add(GetTreeItemText(dockItem));
itemTreeNode.Tag=dockItem;
itemTreeNode.ImageIndex=GetItemImageIndex(dockItem);
itemTreeNode.SelectedImageIndex=itemTreeNode.ImageIndex;
itemTreeNode.EnsureVisible();
treeBars.SelectedNode=barNode;
barNode.EnsureVisible();
break;
}
case DELETE:
{
TreeView tree=GetSelectedTreeView();
DotNetBarManager manager=this.GetDesignManager();
if(tree.SelectedNode==null)
break;
m_DataChanged=true;
if(tree.SelectedNode.Nodes.Count>0)
{
if(MessageBox.Show(this,"Are you sure you want to delete selected item?","DotNetBar Editor",MessageBoxButtons.YesNo,MessageBoxIcon.Question)==DialogResult.No)
break;
}
TreeNode nextNode=tree.SelectedNode.NextVisibleNode;
if(tree.SelectedNode.Tag is BaseItem)
{
BaseItem selectedItem=tree.SelectedNode.Tag as BaseItem;
Bar cont=selectedItem.ContainerControl as Bar;
TreeNode topParentNode=tree.SelectedNode;
while(topParentNode.Parent!=null)
topParentNode=topParentNode.Parent;
if(selectedItem.Parent!=null)
selectedItem.Parent.SubItems.Remove(selectedItem);
else if(tree==treeCategories)
manager.Items.Remove(selectedItem);
else if(tree==treeMenus)
manager.ContextMenus.Remove(selectedItem);
DeleteComponent(selectedItem);
tree.SelectedNode.Tag=null;
TreeNode parentNode=tree.SelectedNode.Parent;
tree.Nodes.Remove(tree.SelectedNode);
// If it is last node under one of the categories remove parent too
if(parentNode!=null && parentNode.Parent==null && parentNode.Nodes.Count==0 && tree==treeCategories)
tree.Nodes.Remove(parentNode);
if(cont!=null)
cont.RecalcLayout();
}
else if(tree.SelectedNode.Tag is Bar)
{
Bar bar=tree.SelectedNode.Tag as Bar;
manager.Bars.Remove(bar);
DeleteComponent(bar);
tree.SelectedNode.Tag=null;
tree.Nodes.Remove(tree.SelectedNode);
}
else if(tree==treeCategories && tree.SelectedNode.Parent==null)
{
// Delete all items within this category
foreach(TreeNode node in tree.SelectedNode.Nodes)
{
BaseItem childItem=node.Tag as BaseItem;
if(childItem!=null)
{
manager.Items.Remove(childItem);
DeleteComponent(childItem);
}
node.Tag=null;
}
tree.SelectedNode.Remove();
}
if(tree.Nodes.Count==0)
{
propertyBars.SelectedObject=null;
propertyMenus.SelectedObject=null;
propertyCategories.SelectedObject=null;
}
RefreshDesignBar();
EnableCommands(tree, tree.SelectedNode);
break;
}
case NEW_DEFINITION:
{
DotNetBarManager manager=this.GetDesignManager();
if(manager!=null)
{
manager.SuspendLayout=true;
manager.Bars.ClearNonDocumentBars();
manager.Items.Clear();
manager.ContextMenus.Clear();
manager.SuspendLayout=false;
SetupProperties();
this.RefreshView();
}
break;
}
case SAVE_DEFINITION:
case SAVE_DEFINITION_AS:
{
SaveDefinition((item.Name==SAVE_DEFINITION_AS));
break;
}
case SAVE_CLOSE:
{
if (m_ExternalManager != null)
m_ExternalManager.Definition = this.GetDesignManager().Definition;
else
{
if (SaveDefinition(false) == DialogResult.Cancel)
return;
}
m_DataChanged = false;
this.DialogResult = DialogResult.Yes;
this.Close();
break;
}
case SAVE_BAR_AS:
{
TreeView tree=GetSelectedTreeView();
// Save currently selected bar
if(tree.SelectedNode==null || !(tree.SelectedNode.Tag is Bar))
return;
Bar bar=tree.SelectedNode.Tag as Bar;
string stitle=m_SaveFileDialog.Title;
string defaultExt=m_SaveFileDialog.DefaultExt;
string fileName=m_SaveFileDialog.FileName;
string filter=m_SaveFileDialog.Filter;
m_SaveFileDialog.Title="Save Bar Definition";
m_SaveFileDialog.DefaultExt = "xml";
m_SaveFileDialog.FileName = (bar.Name!=""?bar.Name:"MyBar");
m_SaveFileDialog.Filter = "DotNetBar Bar Files (*.xml)|*.xml|All Files (*.*)|*.*";
if(m_SaveFileDialog.ShowDialog()==DialogResult.OK)
{
bar.SaveDefinition(m_SaveFileDialog.FileName);
}
m_SaveFileDialog.Title=stitle;
m_SaveFileDialog.DefaultExt=defaultExt;
m_SaveFileDialog.FileName=fileName;
m_SaveFileDialog.Filter=filter;
break;
}
case LOAD_BAR:
{
string defaultExt=m_OpenFileDialog.DefaultExt;
string filter=m_OpenFileDialog.Filter;
m_OpenFileDialog.DefaultExt="xml";
m_OpenFileDialog.Filter = "DotNetBar Bar Files (*.xml)|*.xml|All Files (*.*)|*.*";
if(m_OpenFileDialog.ShowDialog()==DialogResult.OK && System.IO.File.Exists(m_OpenFileDialog.FileName))
{
Bar bar=new Bar();
try
{
bar.LoadDefinition(m_OpenFileDialog.FileName);
}
catch(Exception ex)
{
MessageBox.Show("File '"+m_OpenFileDialog.FileName+"' does not appear to be valid Bar file.\n\rException has been generated while loading: "+ex.Source+": "+ex.Message+"\n\r"+ex.StackTrace);
return;
}
bar.Dispose();
bar=new Bar();
this.GetDesignManager().SuspendLayout=true;
this.GetDesignManager().Bars.Add(bar);
bar.LoadDefinition(m_OpenFileDialog.FileName);
this.GetDesignManager().SuspendLayout=false;
this.DisplayTreeBar(bar);
}
m_OpenFileDialog.DefaultExt=defaultExt;
m_OpenFileDialog.Filter=filter;
break;
}
case MOVE_LEFT:
case MOVE_RIGHT:
case MOVE_UP:
case MOVE_DOWN:
{
MoveSelectedItem(item.Name);
RefreshDesignBar();
break;
}
case SYNC_CATEGORIES:
{
RescanCategories();
break;
}
case NEW_BUTTON:
{
ButtonItem btn=CreateObject(typeof(ButtonItem)) as ButtonItem;
AssignItemName(btn);
btn.Text=btn.Name;
AddNewItem(btn);
RefreshDesignBar();
//if ((btn.ContainerControl is Bar || btn.Parent != null) && navigationPane1.CheckedButton != buttonCategories)
//{
// btn.GenerateCommandLink = true;
// UpdateCommandLink(btn);
//}
break;
}
case NEW_TEXTBOX:
{
TextBoxItem tb=CreateObject(typeof(TextBoxItem)) as TextBoxItem;
AssignItemName(tb);
tb.Text=tb.Name;
AddNewItem(tb);
RefreshDesignBar();
break;
}
case NEW_COMBO:
{
ComboBoxItem cb=CreateObject(typeof(ComboBoxItem)) as ComboBoxItem;
TypeDescriptor.GetProperties(cb)["DisplayMember"].SetValue(cb, "Text");
AssignItemName(cb);
cb.Text=cb.Name;
AddNewItem(cb);
RefreshDesignBar();
break;
}
case NEW_CUSTOMIZE:
{
CustomizeItem cust=CreateObject(typeof(CustomizeItem)) as CustomizeItem;
AssignItemName(cust);
AddNewItem(cust);
RefreshDesignBar();
break;
}
case NEW_LABEL:
{
LabelItem li=CreateObject(typeof(LabelItem)) as LabelItem;
li.BorderType=eBorderType.SingleLine;
AssignItemName(li);
li.Text=li.Name;
AddNewItem(li);
RefreshDesignBar();
break;
}
case NEW_COLORPICKER:
{
ColorPickerDropDown cp=CreateObject(typeof(ColorPickerDropDown)) as ColorPickerDropDown;
AssignItemName(cp);
cp.Text=cp.Name;
AddNewItem(cp);
RefreshDesignBar();
break;
}
case NEW_MDILIST:
{
MdiWindowListItem mdi=CreateObject(typeof(MdiWindowListItem)) as MdiWindowListItem;
mdi.Text="MDI Window List";
AssignItemName(mdi);
AddNewItem(mdi);
RefreshDesignBar();
break;
}
case NEW_CONTROLCONT:
{
ControlContainerItem cci=CreateObject(typeof(ControlContainerItem)) as ControlContainerItem;
AssignItemName(cci);
AddNewItem(cci);
RefreshDesignBar();
break;
}
case NEW_DOCK:
{
DockContainerItem dci=CreateObject(typeof(DockContainerItem)) as DockContainerItem;
dci.Text="Dockable Window";
AssignItemName(dci);
AddNewItem(dci);
RefreshDesignBar();
break;
}
case NEW_PROGRESS:
{
ProgressBarItem pb=CreateObject(typeof(ProgressBarItem)) as ProgressBarItem;
pb.SetDesignMode(true);
if(this.GetDesignManager()!=null)
pb.Style=this.GetDesignManager().Style;
else if(this.GetDesignBar()!=null)
pb.Style=this.GetDesignBar().Style;
pb.ResetBackgroundStyle();
pb.SetDesignMode(false);
AssignItemName(pb);
pb.Text=pb.Name;
AddNewItem(pb);
RefreshDesignBar();
break;
}
}
}
private DialogResult SaveDefinition(bool saveAs)
{
DialogResult result=DialogResult.OK;
if(m_DefinitionFileName!="" && !saveAs)
this.GetDesignManager().SaveDefinition(m_DefinitionFileName);
else
{
result=m_SaveFileDialog.ShowDialog();
// Save definition as...
if(result==DialogResult.OK)
{
this.GetDesignManager().SaveDefinition(m_SaveFileDialog.FileName);
m_DefinitionFileName=m_SaveFileDialog.FileName;
}
}
return result;
}
private void AssignItemName(BaseItem newItem)
{
DotNetBarManager manager=this.GetDesignManager();
Bar bar=this.GetDesignBar();
if(m_Designer==null || bar==null)
{
string name=newItem.GetType().Name;
long id=1;
if(manager!=null)
{
while(manager.GetItem(name+id,true)!=null)
id++;
}
else if(bar!=null)
{
while(bar.GetItem(name+id)!=null)
id++;
}
newItem.Name=name+id;
}
}
private void AddNewItem(BaseItem newItem)
{
m_DataChanged=true;
TreeView tree=GetSelectedTreeView();
DotNetBarManager manager=this.GetDesignManager();
if(tree.SelectedNode!=null && tree.SelectedNode.Tag is BaseItem)
{
newItem.Style=((BaseItem)tree.SelectedNode.Tag).Style;
if(tree.SelectedNode.Tag is PopupItem && newItem is PopupItem)
((PopupItem)newItem).PopupType=((PopupItem)tree.SelectedNode.Tag).PopupType;
}
else if(tree.SelectedNode!=null && tree.SelectedNode.Tag is Bar)
{
newItem.Style=((Bar)tree.SelectedNode.Tag).Style;
if(newItem is PopupItem && ((Bar)tree.SelectedNode.Tag).MenuBar)
((PopupItem)newItem).PopupType=ePopupType.Menu;
}
// We need to determine is new item being added to the Categories
TreeNode itemNode=null;
if(tree==treeCategories)
{
// Assign category to new item
if(tree.SelectedNode==null)
newItem.Category="(Untitled)";
else if(tree.SelectedNode.Parent==null)
newItem.Category=tree.SelectedNode.Text;
else
newItem.Category=((BaseItem)tree.SelectedNode.Tag).Category;
manager.Items.Add(newItem);
itemNode=CategorizeItem(newItem);
}
else if(tree==treeMenus)
{
if(tree.SelectedNode!=null && tree.SelectedNode.Tag is BaseItem)
{
itemNode=tree.SelectedNode.Nodes.Add(GetTreeItemText(newItem));
BaseItem objParent=(BaseItem)tree.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=tree.Nodes.Add(GetTreeItemText(newItem));
manager.ContextMenus.Add(newItem);
}
}
else if(tree.SelectedNode!=null)
{
Control cont=null;
if(tree.SelectedNode.Tag is BaseItem)
{
BaseItem objParent=(BaseItem)tree.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);
itemNode=new TreeNode(GetTreeItemText(newItem));
if(iPos!=-1)
tree.SelectedNode.Nodes.Insert(iPos,itemNode);
else
tree.SelectedNode.Nodes.Add(itemNode);
cont=newItem.ContainerControl as Control;
if(cont==null)
((BaseItem)tree.SelectedNode.Tag).Refresh();
}
else if(tree.SelectedNode.Tag is Bar)
{
Bar bar=(Bar)tree.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);
itemNode=new TreeNode(GetTreeItemText(newItem));
if(iPos!=-1)
tree.SelectedNode.Nodes.Insert(iPos,itemNode);
else
tree.SelectedNode.Nodes.Add(itemNode);
cont=bar;
}
if(cont!=null && cont is Bar)
((Bar)cont).RecalcLayout();
}
itemNode.Tag=newItem;
itemNode.ImageIndex=GetItemImageIndex(newItem);
itemNode.SelectedImageIndex=itemNode.ImageIndex;
itemNode.EnsureVisible();
tree.SelectedNode=itemNode;
}
private TreeView GetPanelTreeView(NavigationPanePanel panel)
{
TreeView tree=treeBars;
if(panel==navigationPanePanel2)
tree=treeMenus;
else if(panel==navigationPanePanel3)
tree=treeCategories;
return tree;
}
private TreeView GetSelectedTreeView()
{
TreeView tree=treeBars;
if(navigationPane1.SelectedPanel==navigationPanePanel2)
tree=treeMenus;
else if(navigationPane1.SelectedPanel==navigationPanePanel3)
tree=treeCategories;
return tree;
}
private void MoveSelectedItem(string Direction)
{
TreeView tree=GetSelectedTreeView();
if(tree.SelectedNode==null)
return;
BaseItem objItem=tree.SelectedNode.Tag as BaseItem;
if(objItem==null)
return;
m_DataChanged=true;
DotNetBarManager manager=this.GetDesignManager();
bool bCategoryItem=false;
if(tree==treeCategories)
bCategoryItem=true;
bool bPopupsItem=false;
if(tree==treeMenus)
bPopupsItem=true;
TreeNode selNode=tree.SelectedNode;
TreeNodeCollection parentCollection=null;
if(selNode.Parent==null)
parentCollection=tree.Nodes;
else
parentCollection=selNode.Parent.Nodes;
BaseItem objParent=objItem.Parent;
int i=0;
if(objParent!=null)
i=objParent.SubItems.IndexOf(objItem);
else
i=selNode.Index;
if(Direction==MOVE_UP && 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();
parentCollection.Insert(i-1,selNode);
tree.SelectedNode=selNode;
selNode.EnsureVisible();
}
else if(Direction==MOVE_RIGHT && i>0)
{
BaseItem objNewParent=null;
if(bCategoryItem)
manager.Items.Remove(objItem);
else if(bPopupsItem)
manager.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);
tree.SelectedNode=selNode;
selNode.EnsureVisible();
}
else if(Direction==MOVE_DOWN && ((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();
parentCollection.Insert(i+1,selNode);
tree.SelectedNode=selNode;
selNode.EnsureVisible();
}
if(Direction==MOVE_LEFT && 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(tree==treeCategories)
manager.Items.Add(objItem);
else if(tree==treeMenus)
manager.ContextMenus.Add(objItem);
TreeNode nodeParent=selNode.Parent;
selNode.Remove();
if(nodeParent!=null && nodeParent.Parent!=null)
{
nodeParent.Parent.Nodes.Insert(nodeParent.Index+1,selNode);
tree.SelectedNode=selNode;
selNode.EnsureVisible();
}
else if(bPopupsItem)
{
if(nodeParent!=null)
{
tree.Nodes.Insert(nodeParent.Index+1,selNode);
}
else
tree.Nodes.Add(selNode);
tree.SelectedNode=selNode;
selNode.EnsureVisible();
}
}
}
private void CopyMoveToClick(object sender, System.EventArgs e)
{
TreeView tree=GetSelectedTreeView();
BaseItem item=sender as BaseItem;
BaseItem itemSel=tree.SelectedNode.Tag as BaseItem;
BaseItem itemOriginal=itemSel;
bool bMove=(item.Parent.Name==MOVE_TO);
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==TO_CATEGORIES)
{
// To Categories
if(item.Name!=TO_CATEGORIES)
itemSel.Category=item.Text;
if(bMove)
{
if(itemSel.Parent!=null)
itemSel.Parent.SubItems.Remove(itemSel);
tree.SelectedNode.Remove();
}
if(this.GetDesignManager().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.");
}
this.GetDesignManager().Items.Add(itemSel);
treeCategories.SelectedNode=CategorizeItem(itemSel);
treeCategories.SelectedNode.EnsureVisible();
}
else if(item.Name==TO_CONTEXTMENUS || item.Tag is BaseItem)
{
if(bMove)
{
if(itemSel.Parent!=null)
itemSel.Parent.SubItems.Remove(itemSel);
tree.SelectedNode.Remove();
}
if(item.Name==TO_CONTEXTMENUS)
{
TreeNode itemNode=treeMenus.Nodes.Add(GetTreeItemText(itemSel));
itemNode.Tag=itemSel;
itemNode.ImageIndex=GetItemImageIndex(itemSel);
itemNode.SelectedImageIndex=itemNode.ImageIndex;
AddSubItems(itemSel,itemNode);
this.GetDesignManager().ContextMenus.Add(itemSel);
itemNode.EnsureVisible();
}
else
{
BaseItem objParent=item.Tag as BaseItem;
objParent.SubItems.Add(itemSel);
foreach(TreeNode node in treeMenus.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);
tree.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);
treeBars.SelectedNode=itemNode;
treeBars.SelectedNode.EnsureVisible();
bar.RecalcLayout();
}
// Clear Copy To and Move To
item=dotNetBarManager1.ContextMenus[CONTEXT_MENU];
item.SubItems[COPY_TO].SubItems.Clear();
item.SubItems[MOVE_TO].SubItems.Clear();
}
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 object CreateObject(Type type)
{
if(m_Designer!=null && m_ExternalBar!=null)
return m_Designer.CreateComponent(type);
else
return type.Assembly.CreateInstance(type.FullName);
}
private object CreateObject(Type type, string name)
{
if (m_Designer != null)
{
return m_Designer.CreateComponent(type, name);
}
return null;
}
private void DeleteComponent(IComponent o)
{
if (m_Designer != null)
{
if (o is BaseItem)
{
RemoveCommandLinks(o as BaseItem);
}
else if (o is Bar)
{
Bar bar = o as Bar;
foreach (BaseItem item in bar.Items)
RemoveCommandLinks(item);
}
}
if(m_Designer!=null && m_ExternalBar!=null)
m_Designer.DestroyComponent(o);
else
o.Dispose();
}
private void RemoveCommandLinks(BaseItem item)
{
//CommandLink link = GetCommandLink(GetCommandLinkName(item));
//if (link != null && !m_CommandLinksDeleted.Contains(link))
// m_CommandLinksDeleted.Add(link);
//foreach (BaseItem sub in item.SubItems)
//{
// RemoveCommandLinks(sub);
//}
}
#endregion
#region Grid and Tree support
private void PreviewDataChanged(object sender, EventArgs e)
{
m_DataChanged=true;
}
private void GridViewMouseDown(object sender, EventArgs e)
{
PropertyGrid grid=sender as PropertyGrid;
if(grid.SelectedGridItem==null)
return;
if(!(grid.SelectedGridItem.PropertyDescriptor.PropertyType==typeof(System.Drawing.Image)) && !(grid.SelectedGridItem.PropertyDescriptor.PropertyType==typeof(System.Drawing.Icon)))
return;
PopupItem popup=dotNetBarManager1.ContextMenus[RESET_IMAGE_POPUP] as PopupItem;
popup.PopupMenu(Control.MousePosition);
}
private void GridPropertyValueChanged(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=null;
if(s==propertyBars)
node=treeBars.SelectedNode;
else if(s==propertyCategories)
node=treeCategories.SelectedNode;
else if(s==propertyMenus)
node=treeMenus.SelectedNode;
if (node == null)
return;
BaseItem item=node.Tag as BaseItem;
if (e.ChangedItem.PropertyDescriptor.Name == "Name" && e.ChangedItem.Value != e.OldValue && item!=null)
{
//if (item.GenerateCommandLink)
//{
// CommandLink link = GetCommandLink(GetCommandLinkName(e.OldValue.ToString()));
// if (link != null)
// m_CommandLinksDeleted.Add(link);
// UpdateCommandLink(item);
//}
}
if(e.ChangedItem.PropertyDescriptor.Name=="Category" && e.ChangedItem.Value!=e.OldValue && s==propertyCategories)
{
if(node.Tag==null || !(node.Tag is BaseItem))
return;
BaseItem objItem=node.Tag as BaseItem;
node.Remove();
node=CategorizeItem(objItem);
node.ImageIndex=GetItemImageIndex(objItem);
node.SelectedImageIndex=node.ImageIndex;
AddSubItems(objItem,node);
node.EnsureVisible();
treeCategories.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.DockLine=bar.DockLine;
bar.RecalcLayout();
}
}
else if (e.ChangedItem.PropertyDescriptor.Name == "GenerateCommandLink" && e.ChangedItem.Value != e.OldValue)
{
UpdateCommandLink(item);
}
DotNetBarManager manager=this.GetDesignManager();
if(e.ChangedItem.PropertyDescriptor.Name=="Name" && manager!=null && s==propertyCategories)
{
if(manager.Items.Contains(e.ChangedItem.Value.ToString()))
{
item.Name=e.OldValue.ToString();
((PropertyGrid)s).Refresh();
MessageBox.Show("Item with that name already exists.");
}
else
{
manager.Items.Remove(e.OldValue.ToString());
manager.Items.Add(item);
}
}
if(item!=null)
{
Bar barContainer=item.ContainerControl as Bar;
if(barContainer!=null)
barContainer.RecalcLayout();
}
RefreshDesignBar();
}
//private string GetCommandLinkName(string itemName)
//{
// return CommandLink.GetCommandLinkName(itemName);
//}
//private string GetCommandLinkName(BaseItem item)
//{
// return GetCommandLinkName(item.Name);
//}
//private Type GetCommandLinkType(BaseItem item)
//{
// if (item is ButtonItem)
// return typeof(CommandLinkButtonItem);
// else if (item is LabelItem)
// return typeof(CommandLinkLabelItem);
// else if (item is TextBoxItem)
// return typeof(CommandLinkTextBoxItem);
// else if (item is ColorPickerDropDown)
// return typeof(CommandLinkColorPickerDropDown);
// else if (item is ControlContainerItem)
// return typeof(CommandLinkControlContainerItem);
// else if (item is DockContainerItem)
// return typeof(CommandLinkDockContainerItem);
// else if (item is ProgressBarItem)
// return typeof(CommandLinkProgressBarItem);
// else if (item is ComboBoxItem)
// return typeof(CommandLinkComboBoxItem);
// else
// return null;
//}
/// <summary>
/// Updates design-time command link for the item
/// </summary>
/// <param name="item"></param>
private void UpdateCommandLink(BaseItem item)
{
if (m_Designer == null)
{
MessageBox.Show("Designer for the DotNetBarManager not assigned. This could be becouse you are using design in stand-alone mode. To use command links open designer by double-clicking DotNetBarManager in VS.NET");
return;
}
//if (item.GenerateCommandLink)
//{
// CommandLink link = GetCommandLink(GetCommandLinkName(item));
// if (link != null)
// {
// if (m_CommandLinksDeleted.Contains(link))
// m_CommandLinksDeleted.Remove(link);
// else
// {
// if (GetCommandLinkType(item) != link.GetType())
// {
// item.GenerateCommandLink = false;
// MessageBox.Show("Command Link with this item name already exists and is of different type. Change your item name to generate correct Command Link.");
// }
// }
// return;
// }
// try
// {
// Type linkType = GetCommandLinkType(item);
// if(linkType!=null)
// link = CreateObject(linkType, GetCommandLinkName(item.Name)) as CommandLink;
// else
// {
// MessageBox.Show("Selected item does not support Command Links.");
// item.GenerateCommandLink = false;
// }
// }
// catch
// {
// MessageBox.Show("Cannot create command link with the name '" + GetCommandLinkName(item.Name) + "' becouse object with that name already exists on the form. Please change the name of the item.");
// link = null;
// item.GenerateCommandLink = false;
// }
// if (link != null)
// {
// m_CommandLinksCreated.Add(link);
// TypeDescriptor.GetProperties(link)["Manager"].SetValue(link, m_ExternalManager);
// }
//}
//else
//{
// // Remove the CommandLink
// CommandLink link = GetCommandLink(GetCommandLinkName(item.Name));
// if (link != null)
// {
// m_CommandLinksDeleted.Add(link);
// if (m_CommandLinksCreated.Contains(link))
// m_CommandLinksCreated.Remove(link);
// }
//}
}
//private CommandLink GetCommandLink(string name)
//{
// foreach (CommandLink link in m_ExternalManager.CommandLinks)
// {
// if (link.Name == name)
// return link;
// }
// return null;
//}
private void TreeKeyDown(object sender, System.Windows.Forms.KeyEventArgs e)
{
TreeView tree=sender as TreeView;
if(e.KeyCode==Keys.F2 && tree.SelectedNode!=null && tree.LabelEdit)
tree.SelectedNode.BeginEdit();
}
private void TreeMouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
{
if(e.Button!=MouseButtons.Right)
return;
TreeView tree=sender as TreeView;
TreeNode node=tree.GetNodeAt(e.X,e.Y);
if(node!=null)
tree.SelectedNode=node;
else if(tree==treeMenus)
tree.SelectedNode=null;
// Popup menu
ButtonItem popup=dotNetBarManager1.ContextMenus[CONTEXT_MENU] as ButtonItem;
// If MoveTo and CopyTo are visible add items to them
if(popup.SubItems[COPY_TO].Visible)
{
BaseItem itemCopyTo=popup.SubItems[COPY_TO];
BaseItem itemMoveTo=popup.SubItems[MOVE_TO];
itemCopyTo.SubItems.Clear();
itemMoveTo.SubItems.Clear();
bool bBars=true,bCategories=false, bPopups=false;
// Don't show categories for category items...
if(buttonContext.Visible)
bPopups=true;
if(buttonCategories.Visible)
bCategories=true;
if(bBars)
{
foreach(TreeNode barNode in treeBars.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)
{
ButtonItem cat=new ButtonItem(TO_CATEGORIES);
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 treeCategories.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(TO_CONTEXTMENUS);
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 this.GetDesignManager().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=tree.PointToScreen(pt);
popup.PopupMenu(pt);
}
private void SelectObjectInPropertyGrid(object obj)
{
PropertyGrid propertyGrid=null;
TreeView tree = null;
if (navigationPane1.CheckedButton == buttonBars)
{
propertyGrid = propertyBars;
tree = treeBars;
}
else if (navigationPane1.CheckedButton == buttonCategories)
{
propertyGrid = propertyCategories;
tree = treeCategories;
}
else if (navigationPane1.CheckedButton == buttonContext)
{
propertyGrid = propertyMenus;
tree = treeMenus;
}
propertyGrid.SelectedObject = obj;
// Find object in tree and select it
if (tree.SelectedNode != null && tree.SelectedNode.Tag == obj)
return;
TreeNode node = FindObjectInNodes(tree.Nodes, obj);
tree.SelectedNode = node;
if (node != null)
node.EnsureVisible();
}
private TreeNode FindObjectInNodes(TreeNodeCollection col, object obj)
{
foreach (TreeNode node in col)
{
if (node.Tag == obj)
return node;
else if (node.Nodes.Count > 0)
{
TreeNode tn = FindObjectInNodes(node.Nodes, obj);
if (tn != null)
return tn;
}
}
return null;
}
private void TreeAfterSelect(object sender, System.Windows.Forms.TreeViewEventArgs e)
{
TreeView tree=sender as TreeView;
PropertyGrid propertyGrid=null;
if(tree==treeBars)
propertyGrid=propertyBars;
else if(tree==treeCategories)
propertyGrid=propertyCategories;
else if(tree==treeMenus)
propertyGrid=propertyMenus;
tree.LabelEdit=false;
if(e.Node.Tag==null)
{
propertyGrid.SelectedObject=null;
return;
}
if(e.Node.Tag is BaseItem)
{
propertyGrid.SelectedObject=e.Node.Tag;
tree.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)
{
propertyGrid.SelectedObject=(Bar)e.Node.Tag;
}
else
{
propertyGrid.SelectedObject=null;
}
}
private void TreeBeforeSelect(object sender, System.Windows.Forms.TreeViewCancelEventArgs e)
{
EnableCommands(sender as TreeView,e.Node);
}
private void EnableCommands(TreeView tree, TreeNode selectedNode)
{
// Disable/Enable toolbar items...
bool bLeftEnabled=false, bRightEnabled=false, bUpEnabled=false, bDownEnabled=false;
DotNetBarManager manager=this.GetDesignManager();
BaseItem popupItem=dotNetBarManager1.ContextMenus[CONTEXT_MENU];
if(selectedNode!=null && selectedNode.Tag is BaseItem)
{
BaseItem objItem=selectedNode.Tag as BaseItem;
int i=0;
if(objItem.Parent!=null)
i=objItem.Parent.SubItems.IndexOf(objItem);
else
i=selectedNode.Index;
if(i>0)
{
bUpEnabled=true;
bRightEnabled=true;
}
int iCount=0;
if(objItem.Parent!=null)
iCount=objItem.Parent.SubItems.Count-1;
else if(selectedNode.Parent!=null)
iCount=selectedNode.Parent.Nodes.Count-1;
else
iCount=selectedNode.TreeView.Nodes.Count-1;
if(i<iCount)
bDownEnabled=true;
if((objItem.Parent!=null && !objItem.Parent.SystemItem && (!(objItem.Parent is GenericItemContainer) || !((GenericItemContainer)objItem.Parent).SystemContainer)) || (selectedNode.Parent!=null && selectedNode.Parent.Tag is BaseItem))
bLeftEnabled=true;
}
dotNetBarManager1.GetItem(MOVE_LEFT).Enabled=bLeftEnabled;
dotNetBarManager1.GetItem(MOVE_RIGHT).Enabled=bRightEnabled;
dotNetBarManager1.GetItem(MOVE_UP).Enabled=bUpEnabled;
dotNetBarManager1.GetItem(MOVE_DOWN).Enabled=bDownEnabled;
if(selectedNode!=null && selectedNode.Tag is BaseItem)
{
popupItem.SubItems[COPY_TO].Visible=true;
popupItem.SubItems[MOVE_TO].Visible=true;
}
else
{
popupItem.SubItems[COPY_TO].Visible=false;
popupItem.SubItems[MOVE_TO].Visible=false;
}
if(selectedNode==null && tree==treeBars)
{
dotNetBarManager1.GetItem(NEW_BUTTON).Enabled=false;
dotNetBarManager1.GetItem(NEW_TEXTBOX).Enabled=false;
dotNetBarManager1.GetItem(NEW_COMBO).Enabled=false;
dotNetBarManager1.GetItem(NEW_CUSTOMIZE).Enabled=false;
dotNetBarManager1.GetItem(NEW_LABEL).Enabled=false;
dotNetBarManager1.GetItem(NEW_COLORPICKER).Enabled=false;
dotNetBarManager1.GetItem(NEW_MDILIST).Enabled=false;
dotNetBarManager1.GetItem(NEW_CONTROLCONT).Enabled=false;
dotNetBarManager1.GetItem(NEW_DOCK).Enabled=false;
dotNetBarManager1.GetItem(NEW_PROGRESS).Enabled=false;
dotNetBarManager1.GetItem(DELETE).Enabled=false;
return;
}
else if(tree==treeCategories)
{
dotNetBarManager1.GetItem(NEW_BUTTON).Enabled=true;
dotNetBarManager1.GetItem(NEW_TEXTBOX).Enabled=true;
dotNetBarManager1.GetItem(NEW_COMBO).Enabled=true;
dotNetBarManager1.GetItem(NEW_CUSTOMIZE).Enabled=true;
dotNetBarManager1.GetItem(NEW_LABEL).Enabled=true;
dotNetBarManager1.GetItem(NEW_COLORPICKER).Enabled=true;
dotNetBarManager1.GetItem(NEW_MDILIST).Enabled=true;
dotNetBarManager1.GetItem(NEW_CONTROLCONT).Enabled=true;
dotNetBarManager1.GetItem(NEW_DOCK).Enabled=true;
dotNetBarManager1.GetItem(NEW_PROGRESS).Enabled=true;
if(selectedNode!=null && selectedNode.Tag is BaseItem)
dotNetBarManager1.GetItem(DELETE).Enabled=true;
else
dotNetBarManager1.GetItem(DELETE).Enabled=false;
return;
}
if(selectedNode!=null && selectedNode.Tag is Bar)
dotNetBarManager1.GetItem(SAVE_BAR_AS).Enabled=true;
else
dotNetBarManager1.GetItem(SAVE_BAR_AS).Enabled=false;
bool newButton=true, newTextBox=true, newCombo=true, newCustomize=true, newLabel=true, newMdiList=true, newControlCont=true,
newDock=false, newProgress=true;
if(selectedNode!=null && selectedNode.Tag is Bar && ((Bar)selectedNode.Tag).LayoutType==eLayoutType.DockContainer)
{
newButton=false;
newTextBox=false;
newCombo=false;
newCustomize=false;
newLabel=false;
newMdiList=false;
newControlCont=false;
newDock=true;
newProgress=false;
}
else if(selectedNode!=null && selectedNode.Tag is DockContainerItem)
{
newButton=false;
newTextBox=false;
newCombo=false;
newCustomize=false;
newLabel=false;
newMdiList=false;
newControlCont=false;
newDock=false;
newProgress=false;
}
dotNetBarManager1.GetItem(NEW_BUTTON).Enabled=newButton;
dotNetBarManager1.GetItem(NEW_TEXTBOX).Enabled=newTextBox;
dotNetBarManager1.GetItem(NEW_COMBO).Enabled=newCombo;
dotNetBarManager1.GetItem(NEW_CUSTOMIZE).Enabled=newCustomize;
dotNetBarManager1.GetItem(NEW_LABEL).Enabled=newLabel;
dotNetBarManager1.GetItem(NEW_COLORPICKER).Enabled=newLabel;
dotNetBarManager1.GetItem(NEW_MDILIST).Enabled=newMdiList;
dotNetBarManager1.GetItem(NEW_CONTROLCONT).Enabled=newControlCont;
dotNetBarManager1.GetItem(NEW_DOCK).Enabled=newDock;
dotNetBarManager1.GetItem(NEW_PROGRESS).Enabled=newProgress;
if(selectedNode!=null && (selectedNode.Tag is BaseItem || selectedNode.Tag is Bar) && !(this.GetDesignBar()!=null && selectedNode!=null && selectedNode.Tag is Bar))
dotNetBarManager1.GetItem(DELETE).Enabled=true;
else
dotNetBarManager1.GetItem(DELETE).Enabled=false;
}
private void TreeAfterLabelEdit(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;
propertyBars.Refresh();
propertyMenus.Refresh();
propertyCategories.Refresh();
m_DataChanged=true;
}
private void TreeBeforeCollapse(object sender, System.Windows.Forms.TreeViewCancelEventArgs e)
{
if(e.Node.ImageIndex==6)
{
e.Node.ImageIndex=5;
e.Node.SelectedImageIndex=5;
}
}
private void TreeBeforeExpand(object sender, System.Windows.Forms.TreeViewCancelEventArgs e)
{
if(e.Node.ImageIndex==5)
{
e.Node.ImageIndex=6;
e.Node.SelectedImageIndex=6;
}
}
private void navigationPane1_PanelChanging(object sender, DevComponents.DotNetBar.PanelChangingEventArgs e)
{
if(this.dotNetBarManager1.GetItem(CREATE_BARS_PARENT,true)==null)
return;
TreeView tree=GetPanelTreeView(e.NewPanel);
if(tree.Nodes.Count==0)
EnableCommands(tree,null);
if(e.NewPanel==navigationPanePanel1)
this.dotNetBarManager1.GetItem(CREATE_BARS_PARENT,true).Enabled=true;
else
this.dotNetBarManager1.GetItem(CREATE_BARS_PARENT,true).Enabled=false;
}
#endregion
#region GridViewSubclass
private class GridViewSubclass:NativeWindow
{
const int WM_CONTEXTMENU=0x007B;
public event EventHandler OnRightMouseDown;
public PropertyGrid ParentGrid;
protected override void WndProc(ref Message m)
{
if(m.Msg==WM_CONTEXTMENU)
{
if(OnRightMouseDown!=null)
OnRightMouseDown(this.ParentGrid,new EventArgs());
return;
}
base.WndProc(ref m);
}
}
#endregion
#region Public Interface
/// <summary>
/// Gets or sets the DotNetBar manager that is being designed by this designer.
/// </summary>
public DotNetBarManager ExternalManager
{
get {return m_ExternalManager;}
set
{
m_ExternalManager=value;
this.OnExternalManagerChanged();
}
}
/// <summary>
/// Gets or sets the external bar that is designed by this designer.
/// </summary>
public Bar ExternalBar
{
get {return m_ExternalBar;}
set
{
m_ExternalBar=value;
this.OnExternalBarChanged();
}
}
/// <summary>
/// Gets or sets design-time designer services used to interact with design-time environment.
/// </summary>
public DevComponents.DotNetBar.Design.IDesignerServices DesignerServices
{
get {return m_Designer;}
set {m_Designer=value;}
}
#endregion
}
}