void border_Drop(object sender, DragEventArgs e)
 {
     e.Handled = true;
     if (e.Data.GetData("System.Windows.Controls.ListBoxItem") is ListBoxItem) //Drag and drop toolboxitem
     {
         ListBoxItem lbi = (ListBoxItem)e.Data.GetData("System.Windows.Controls.ListBoxItem");
         if (lbi.DataContext is ToolboxItem)
         {
             HandleToolboxItemDrop(sender, e);
         }
         else if (lbi.DataContext is ToolboxGroup)
         {
             ToolboxGroup tbg = (ToolboxGroup)lbi.DataContext;
             if (GroupTypeOrderCollection.Any(x => x.Group.GroupTypeID.Equals(tbg.Group.GroupTypeID)))
             {
                 MessageBox.Show("The group already exists", "Error", MessageBoxButton.OK,
                                 MessageBoxImage.Error);
             }
             else
             {
                 HandleToolboxGroupDrop(tbg);
             }
         }
     }
     if (e.Data.GetData("System.Windows.Controls.Border") is Border) //Drag and drop between items
     {
         HandleItemTypeDrop(sender, e);
     }
     if (e.Data.GetData("System.Windows.Controls.Grid") is Grid) //Drag and drop groups
     {
         HandleGroupTableDrop(sender, e);
     }
     PreviousGroupTypeOrder = null;
 }
        private bool ItemFilter(object item)
        {
            ToolboxGroup tbGroup = item as ToolboxGroup;
            string       header  = tbGroup.Group.GroupHeader;

            return(header.ToLower().Contains(filterString.ToLower())); //Case-insensitive
        }
Example #3
0
        public void DropToolboxGroupOnGroup()
        {
            glvm.PopulateGTList();
            List <ToolboxGroup> tbgList = glvm.DesignItemsView.Cast <ToolboxGroup>().ToList();
            ToolboxGroup        tbg     = tbgList.Find(x => x.Group.GroupTypeID.Equals("16"));
            ObservableCollection <GroupTypeOrder> gtoList           = wvm.PageList[14].GroupTypeOrders; // page 15
            ObservableCollection <GroupTypeOrder> unmodifiedgtoList = DeepCopyGroupTypeOrderList(gtoList);
            GroupTypeOrder targetGroupTypeOrder = gtoList[2];

            gtvm.Group = targetGroupTypeOrder.Group;
            gtvm.GroupTypeOrderCollection = gtoList;
            gtvm.AdjustGroupOrder();
            gtvm.InsertGroup(targetGroupTypeOrder, tbg.Group);
            int targetIndex = gtoList.IndexOf(targetGroupTypeOrder);

            Assert.AreEqual(targetIndex, 3);
            int i = targetIndex + 1;

            while (i < unmodifiedgtoList.Count)
            {
                Assert.AreEqual(unmodifiedgtoList[i].Group, gtoList[i - 1].Group);
                Assert.AreEqual(unmodifiedgtoList[i].GroupOrder + 1, gtoList[i - 1].GroupOrder);
                i++;
            }
        }
        void HandleToolboxGroupDrop(ToolboxGroup tbg)
        {
            GroupTypeOrder targetGroupTypeOrder = MyGroupTypeOrder;
            GroupType      draggedGroupType     = tbg.Group;

            GTViewModel.InsertGroup(targetGroupTypeOrder, draggedGroupType);
        }
        private void RemoveTemplateTool(HeliosTemplate template)
        {
            if (_toolboxGroups.ContainsKey(template.Category))
            {
                ToolboxGroup group = _toolboxGroups[template.Category];

                if (group != null)
                {
                    ToolboxItem removeItem = null;

                    foreach (ToolboxItem item in group)
                    {
                        TemplateToolboxItem templateItem = item as TemplateToolboxItem;
                        if (templateItem != null)
                        {
                            if (templateItem.Template.Equals(template))
                            {
                                removeItem = item;
                                break;
                            }
                        }
                    }

                    if (removeItem != null)
                    {
                        group.Remove(removeItem);
                    }
                }
            }
        }
Example #6
0
        public MainForm()
        {
            InitializeComponent();

            Text += Assembly.GetExecutingAssembly().GetName().Version.ToString(2);

            stickToolBoxToggle = false;

            var allControlsGroup = new ToolboxGroup("All Controls");

            allControlsGroup.Items.Add(new ToolboxItem("Button", 0, ControlType.Button));
            allControlsGroup.Items.Add(new ToolboxItem("CheckBox", 1, ControlType.CheckBox));
            allControlsGroup.Items.Add(new ToolboxItem("ColorBar", 2, ControlType.ColorBar));
            allControlsGroup.Items.Add(new ToolboxItem("ColorPicker", 3, ControlType.ColorPicker));
            allControlsGroup.Items.Add(new ToolboxItem("ComboBox", 4, ControlType.ComboBox));
            allControlsGroup.Items.Add(new ToolboxItem("GroupBox", 5, ControlType.GroupBox));
            allControlsGroup.Items.Add(new ToolboxItem("HotkeyControl", 14, ControlType.HotkeyControl));
            allControlsGroup.Items.Add(new ToolboxItem("Label", 6, ControlType.Label));
            allControlsGroup.Items.Add(new ToolboxItem("LinkLabel", 7, ControlType.LinkLabel));
            allControlsGroup.Items.Add(new ToolboxItem("ListBox", 8, ControlType.ListBox));
            allControlsGroup.Items.Add(new ToolboxItem("Panel", 9, ControlType.Panel));
            allControlsGroup.Items.Add(new ToolboxItem("PictureBox", 10, ControlType.PictureBox));
            allControlsGroup.Items.Add(new ToolboxItem("ProgressBar", 11, ControlType.ProgressBar));
            allControlsGroup.Items.Add(new ToolboxItem("RadioButton", 12, ControlType.RadioButton));
            allControlsGroup.Items.Add(new ToolboxItem("TabControl", 13, ControlType.TabControl));
            allControlsGroup.Items.Add(new ToolboxItem("TextBox", 14, ControlType.TextBox));
            allControlsGroup.Items.Add(new ToolboxItem("Timer", 15, ControlType.Timer));
            allControlsGroup.Items.Add(new ToolboxItem("TrackBar", 16, ControlType.TrackBar));
            allControlsGroup.Expanded = true;
            controlToolbox.Groups.Add(allControlsGroup.Caption, allControlsGroup);

            controlToolbox.MouseLeave += new DelayedEventHandler(300, delegate
            {
                if (!stickToolBoxToggle)
                {
                    controlToolbox.Visible = false;
                }
            }).OnDelay;

            canvasPictureBox.AllowDrop = true;

            Renderer = Graphics.FromHwnd(Handle);
            Renderer.TextRenderingHint = System.Drawing.Text.TextRenderingHint.SingleBitPerPixelGridFit;

            form          = new GuiControls.Form(new Point(6, 6));
            form.Text     = form.Name = "Form1";
            form.DragEnd += control_DragEnd;
            AddControlToList(form);

            var category = controlPropertyGrid.SelectedGridItem;

            while (category.Parent != null)
            {
                category = category.Parent;
            }
            category.GridItems["Events"].Expanded = false;
        }
Example #7
0
        public void DropToolBoxGroupOnPageByDropZone()
        {
            glvm.PopulateGTList();
            List <ToolboxGroup> tbgList = glvm.DesignItemsView.Cast <ToolboxGroup>().ToList();
            ToolboxGroup        tbg     = tbgList.Find(x => x.Group.GroupTypeID.Equals("16"));
            ObservableCollection <GroupTypeOrder> gtoList = wvm.PageList[14].GroupTypeOrders; // page 15

            gtvm.GroupTypeOrderCollection = gtoList;
            gtvm.AdjustGroupOrder();

            GroupType gt = tbg.Group;

            gtvm.InsertGroupLast(gt, "15");
            Assert.AreEqual(gtoList.Last().Group, tbg.Group);
            Assert.AreEqual(gtoList.Last().GroupOrder, gtoList.Count);
        }
Example #8
0
        private void AddTool(ToolboxItem tool)
        {
            ToolboxGroup group;

            if (_toolboxGroups.ContainsKey(tool.Category))
            {
                group = _toolboxGroups[tool.Category];
            }
            else
            {
                group             = new ToolboxGroup(tool.Category);
                group.DragAdvisor = new ToolboxDragAdvisor();
                _toolboxGroups.Add(group);
            }

            group.Add(tool);
        }
Example #9
0
        /*
         * Dev皮肤名称:
         * DevExpress Style
         * DevExpress Dark Style
         * Metropolis
         * VS2010
         * Seven Classic
         * Office 2010 Blue
         * Office 2010 Black
         * Office 2010 Silver
         * Coffee
         * Liquid Sky
         * London Liquid Sky
         * Glass Oceans
         * Stardust
         * Xmas 2008 Blue
         * Valentine
         * McSkin
         * Summer 2008
         * Pumpkin
         * Dark Side
         * Springtime
         * Foggy
         * High Contrast
         * Seven
         * Sharp
         * Sharp Plus
         * The Asphalt World
         * Whiteprint
         * Caramel
         * Money Twins
         * Lilian
         * iMaginary
         * Black
         * Office 2007 Blue
         * Office 2007 Black
         * Office 2007 Silver
         * Office 2007 Green
         * Office 2007 Pink
         * Blue
         * Darkroom
         * Blueprint
         */
        private void Form1_Load(object sender, EventArgs e)
        {
            StreamReader sr           = new StreamReader(@"\Menu.ini");
            ToolboxGroup toolboxGroup = new ToolboxGroup();
            int          i            = toolboxGroup.Items.Count;

            while (sr.Peek() >= 0)
            {
                string      ID       = sr.ReadLine();
                ToolboxItem menuitem = new ToolboxItem();
                menuitem.Caption = ID;
                toolboxGroup.Items.Add(menuitem);
                menuitem.Tag = ID;
                i++;
            }
            toolboxControl1.Groups.Add(toolboxGroup);
            sr.Close();
        }
        public DragAdornerToolboxItem(UIElement adornedElement, Point offset)

            : base(adornedElement)
        {
            _offset = offset;
            ListBoxItem lbi = (ListBoxItem)adornedElement;

            if (lbi.DataContext is ToolboxItem)
            {
                ToolboxItem tbi = (ToolboxItem)lbi.DataContext;
                Text = tbi.ItemType.Header;
            }
            else if (lbi.DataContext is ToolboxGroup)
            {
                ToolboxGroup tbi = (ToolboxGroup)lbi.DataContext;
                Text = tbi.Group.GroupHeader;
            }
            IsHitTestVisible = false;
        }
        void CheckToolboxItemDrop(object sender, DragEventArgs e)
        {
            Border      bCell = GetBorderByDropEvent(e);
            ListBoxItem lbi   = e.Data.GetData("System.Windows.Controls.ListBoxItem") as ListBoxItem;

            if (lbi.Content is ToolboxItem)
            {
                ToolboxItem tbi = (ToolboxItem)lbi.Content;

                if (!(bCell.DataContext is GroupTypeOrder))
                {
                    int  row         = Grid.GetRow(bCell);
                    bool containsRow = CheckForNewLineItem(row);
                    if (tbi.ItemType.DesignID.Equals("198") && containsRow)
                    {
                        e.Effects = DragDropEffects.None;
                    }
                    else
                    {
                        e.Effects = DragDropEffects.Copy;
                    }
                }
                else
                {
                    e.Effects = DragDropEffects.None;
                }
            }
            else if (lbi.Content is ToolboxGroup)
            {
                ToolboxGroup tbg = (ToolboxGroup)lbi.Content;

                if (bCell.DataContext is GroupTypeOrder)
                {
                    e.Effects = DragDropEffects.Copy;
                }
                else
                {
                    e.Effects = DragDropEffects.None;
                }
            }
        }
Example #12
0
        public void ToolboxGroupsFilterList()
        {
            GroupType gt = new GroupType();

            gt.DanishTranslationText  = "Øre, næse og hals";
            gt.EnglishTranslationText = "Ear, nose and throat";
            gt.GroupTypeID            = "10";
            gt.ItemOrder      = null;
            gt.LanguageID     = "2";
            gt.ResourceID     = "";
            gt.ResourceType   = null;
            gt.ResourceTypeID = null;
            ToolboxGroup tbGroup = new ToolboxGroup();

            tbGroup.Group = gt;


            GroupType gt2 = new GroupType();

            gt2.DanishTranslationText  = "Risikofaktorer for infektion";
            gt2.EnglishTranslationText = "Risk Factors for infection";
            gt2.GroupTypeID            = "10";
            gt2.ItemOrder      = null;
            gt2.LanguageID     = "2";
            gt2.ResourceID     = "";
            gt2.ResourceType   = null;
            gt2.ResourceTypeID = null;
            ToolboxGroup tbGroup2 = new ToolboxGroup();

            tbGroup2.Group = gt2;

            glvm.GTList.Add(tbGroup);
            glvm.GTList.Add(tbGroup2);
            glvm.LanguageID = "1";
            glvm.SetupToolBoxItemCollectionView();
            glvm.FilterString = "Risk Factors";
            //ifvm.DesignItemsView = CollectionViewSource.GetDefaultView(ifvm.ToolboxItemList);
            Assert.IsTrue(glvm.DesignItemsView.Contains(tbGroup2));
            Assert.IsFalse(glvm.DesignItemsView.Contains(tbGroup));
        }
        private void dropZoneToolboxGroup_Drop(object sender, DragEventArgs e)
        {
            ListBoxItem        lbi        = (ListBoxItem)e.Data.GetData("System.Windows.Controls.ListBoxItem");
            ToolboxGroup       tbg        = (ToolboxGroup)lbi.DataContext;
            WorkspaceViewModel wvm        = WorkspaceViewModel.Instance;
            string             pageTypeID = wvm.SelectedPage;
            ObservableCollection <PageType>       pageList = wvm.PageList;
            ObservableCollection <GroupTypeOrder> GroupTypeOrderCollection = pageList.First(x => x.PageTypeID.Equals(pageTypeID)).GroupTypeOrders;

            if (GroupTypeOrderCollection.Any(x => x.Group.GroupTypeID.Equals(tbg.Group.GroupTypeID)))
            {
                MessageBox.Show("The group already exists", "Error", MessageBoxButton.OK,
                                MessageBoxImage.Error);
            }
            else
            {
                GroupType           gt   = tbg.Group;
                GroupTableViewModel gtvm = new GroupTableViewModel();
                gtvm.GroupTypeOrderCollection = GroupTypeOrderCollection;
                gtvm.InsertGroupLast(gt, pageTypeID);
            }
        }
        ///// <summary>
        ///// Creates a new group on a the page
        ///// </summary>
        ///// <param name="pageTypeId">The id for the selected page</param>
        ///// <param name="languageId">The selected language of the application</param>
        ///// <param name="groupOrder">The group order number on the selected page</param>
        ///// <param name="englishTranslationText">The english group name</param>
        ///// <param name="danishTranslationText">The danish group name</param>
        //public void CreateGroup(string pageTypeId, string languageId, double groupOrder, string englishTranslationText, string danishTranslationText)
        //{
        //    GroupTypeOrder gtOrder = new GroupTypeOrder();
        //    GroupType groupType = new GroupType();

        //    //Create new GroupTypeOrder
        //    gtOrder.DepartmentID = "-1";
        //    gtOrder.PageTypeID = pageTypeId;

        //    int highestId = 0;

        //    foreach (PageType page in PageList)
        //    {
        //        int index = 0;

        //        while (index < page.GroupTypeOrders.Count)
        //        {
        //            if (Convert.ToInt32(page.GroupTypeOrders[index].GroupTypeID) > highestId)
        //            {
        //                highestId = Convert.ToInt32(page.GroupTypeOrders[index].GroupTypeID);
        //            }

        //            index++;
        //        }
        //    }

        //    gtOrder.GroupTypeID = (highestId + 1).ToString();
        //    gtOrder.GroupOrder = groupOrder;

        //    //Create new GroupType
        //    groupType.GroupTypeID = (highestId + 1).ToString();
        //    groupType.DanishTranslationText = danishTranslationText;
        //    groupType.EnglishTranslationText = englishTranslationText;
        //    groupType.LanguageID = languageId;

        //    string hej = englishTranslationText.Replace(" ", string.Empty);
        //    int i = 1;
        //    foreach (PageType page in PageList)
        //    {
        //        while ((from a in page.GroupTypeOrders where a.Group.ResourceType.Equals(hej + i) select a).Any())
        //        {
        //            i++;
        //        }
        //    }

        //    hej = hej + i;

        //    groupType.ResourceType = hej;

        //    groupType.ResourceID = (_groupCounter + 1).ToString();
        //    _groupCounter++;
        //    groupType.ResourceTypeID = "1";

        //    //Reference GroupTypeOrder with GroupType
        //    gtOrder.Group = groupType;


        //    int hello = 0;
        //    while (hello < PageList.Count)
        //    {
        //        if (PageList[hello].PageTypeID.Equals(pageTypeId))
        //        {
        //            PageList[hello].GroupTypeOrders.Add(gtOrder);
        //        }
        //        hello++;
        //    }
        //}

        /// <summary>
        /// Creates a new group on a the page
        /// </summary>
        /// <param name="pageTypeId">The id for the selected page</param>
        /// <param name="englishTranslationText">The english group name</param>
        /// <param name="danishTranslationText">The danish group name</param>
        /// <param name="departmentList">The selected departments the group is in</param>
        public void CreateGroup(string pageTypeId, string englishTranslationText, string danishTranslationText, List <string> departmentList)
        {
            GroupType groupType = new GroupType();

            //Create new GroupTypeOrder

            int highestId = 0;

            foreach (PageType page in PageList)
            {
                int highestIdOnPage = Convert.ToInt32(page.GroupTypeOrders.Max(x => x.GroupTypeID));
                if (highestIdOnPage > highestId)
                {
                    highestId = highestIdOnPage;
                }
                //int index = 0;

                //while (index < page.GroupTypeOrders.Count)
                //{
                //    if (Convert.ToInt32(page.GroupTypeOrders[index].GroupTypeID) > highestId)
                //    {
                //        highestId = Convert.ToInt32(page.GroupTypeOrders[index].GroupTypeID);
                //    }

                //    index++;
                //}
            }



            ObservableCollection <GroupTypeOrder> groupTypeOrderCollection = PageList.First(x => x.PageTypeID.Equals(pageTypeId)).GroupTypeOrders;
            GroupTypeOrder gtoCompare = groupTypeOrderCollection.Last();

            //Create new GroupType
            groupType.GroupTypeID            = (highestId + 1).ToString();
            groupType.DanishTranslationText  = danishTranslationText;
            groupType.EnglishTranslationText = englishTranslationText;
            groupType.LanguageID             = gtoCompare.Group.LanguageID;

            string hej = englishTranslationText.Replace(" ", string.Empty);
            int    i   = 1;

            foreach (PageType page in PageList)
            {
                while ((from a in page.GroupTypeOrders where a.Group.ResourceType.Equals(hej + i) select a).Any())
                {
                    i++;
                }
            }

            hej = hej + i;

            groupType.ResourceType = hej;

            groupType.ResourceID = (_groupCounter + 1).ToString();
            _groupCounter++;
            groupType.ResourceTypeID = "1";

            //Reference GroupTypeOrder with GroupType

            ToolboxGroupsViewModel glvm = ToolboxGroupsViewModel.Instance;
            ToolboxGroup           tbg  = new ToolboxGroup();

            tbg.Group = groupType;
            glvm.GTList.Add(tbg);


            //int hello = 0;
            //while (hello < PageList.Count)
            //{
            //    if (PageList[hello].PageTypeID.Equals(pageTypeId))
            //    {
            //        PageList[hello].GroupTypeOrders.Add(gtOrder);
            //    }
            //    hello++;
            //}


            foreach (string departmentID in departmentList)
            {
                GroupTypeOrder clonedGto = new GroupTypeOrder();
                clonedGto.DepartmentID = departmentID;
                clonedGto.Group        = groupType;
                //clonedGto.GroupOrder = gtoCompare.GroupOrder + 1;
                clonedGto.GroupOrder  = groupTypeOrderCollection.Max(x => x.GroupOrder) + 1;
                clonedGto.GroupTypeID = (highestId + 1).ToString();
                clonedGto.PageTypeID  = pageTypeId;
                groupTypeOrderCollection.Add(clonedGto);
            }
        }
Example #15
0
		private void GroupMouseDown(ToolboxGroup group)
		{
			if(group==null)
			{
				return;
			}

			group.Expanded=!group.Expanded;

			if(group.Expanded)
			{
				this.AutoScrollMinSize=new Size(this.Width-30, this.AutoScrollMinSize.Height+group.ItemHeight);
			}
			else
			{
				this.AutoScrollMinSize=new Size(this.Width-30, this.AutoScrollMinSize.Height-group.ItemHeight);
			}

			Invalidate(this.ClientRectangle);
		}
Example #16
0
		private void PaintGroup(Graphics graphics, ToolboxGroup group, SolidBrush backgroundBrush, ref int offset)
		{

			group.Top=offset;
			offset+=19;

			SolidBrush groupBrush=new SolidBrush(_groupColor);

			Rectangle groupRect=new Rectangle(1, group.Top, this.Width-1, 18);
			graphics.FillRectangle(groupBrush, groupRect);

			groupBrush.Dispose();

			Pen backgroundPen=new Pen(backgroundBrush);

			int lineLocation=group.Top+16;
			graphics.DrawLine(backgroundPen,
				1,
				lineLocation,
				this.Width-1,
				lineLocation);

			backgroundPen.Dispose();

			graphics.DrawString(group.Caption,
				this.Font,
				Brushes.Black,
				new RectangleF(20, group.Top+2, this.Width-30, group.Top+13));

			if(group.Expanded)
			{
				graphics.DrawImage(Properties.Resources.Minus, new Point(6, group.Top+4));
				foreach(ToolboxItem item in group.Items)
				{
					PaintItem(graphics, item, backgroundBrush, ref offset);
				}
			}
			else
			{
				graphics.DrawImage(Properties.Resources.Plus, new Point(6, group.Top+4));
				foreach(ToolboxItem item in group.Items)
				{
					item.Top=-1;
				}
			}

		}
        public void PopulateGTList()
        {
            WorkspaceViewModel wvm       = WorkspaceViewModel.Instance;
            List <string>      checkList = new List <string>();
            List <string>      blackList = new List <string>();

            //Blacklist the following pages: 3, 18, 19, 255, 100
            //foreach (PageType pt in wvm.PageList)
            //{
            //    if (
            //        pt.PageTypeID.Equals("3") ||
            //        pt.PageTypeID.Equals("18") ||
            //        pt.PageTypeID.Equals("19") ||
            //        pt.PageTypeID.Equals("255") ||
            //        pt.PageTypeID.Equals("100")
            //        )
            //    {
            //        foreach (GroupTypeOrder gto in pt.GroupTypeOrders)
            //        {

            //            blackList.Add(gto.GroupTypeID);
            //        }
            //    }
            //}

            //foreach (PageType pt in wvm.PageList)
            //{

            //    foreach (GroupTypeOrder gto in pt.GroupTypeOrders)
            //    {
            //        if (!gto.GroupTypeID.Equals("60") && !gto.GroupTypeID.Equals("58") && !blackList.Exists(x => x.Equals(gto.GroupTypeID)) && !checkList.Exists(x => x.Equals(gto.GroupTypeID)))
            //        {
            //            ToolboxGroup tbGroup = new ToolboxGroup();
            //            tbGroup.Group = gto.Group;
            //            GTList.Add(tbGroup);
            //            //GTList.Add(gto.Group);
            //            checkList.Add(gto.GroupTypeID);
            //        }
            //    }
            //}


            foreach (PageType pt in wvm.PageList)
            {
                // Blacklisted pages: 3, 18, 19, 255, 100
                if (
                    !pt.PageTypeID.Equals("3") &&
                    !pt.PageTypeID.Equals("18") &&
                    !pt.PageTypeID.Equals("19") &&
                    !pt.PageTypeID.Equals("255") &&
                    !pt.PageTypeID.Equals("100")
                    )
                {
                    foreach (GroupTypeOrder gto in pt.GroupTypeOrders)
                    {
                        if (!gto.GroupTypeID.Equals("60") && !gto.GroupTypeID.Equals("58"))
                        {
                            int  i            = 0;
                            bool alreadyExist = false;
                            while (i < checkList.Count && !alreadyExist)
                            {
                                if (checkList[i].Equals(gto.GroupTypeID))
                                {
                                    alreadyExist = true;
                                }
                                i++;
                            }

                            if (!alreadyExist)
                            {
                                ToolboxGroup tbGroup = new ToolboxGroup();
                                tbGroup.Group = gto.Group;
                                GTList.Add(tbGroup);
                                //GTList.Add(gto.Group);
                                checkList.Add(gto.GroupTypeID);
                            }
                        }
                    }
                }
            }

            SetupToolBoxItemCollectionView();
        }
Example #18
0
        private void AddTool(ToolboxItem tool)
        {
            ToolboxGroup group;

            if (_toolboxGroups.ContainsKey(tool.Category))
            {
                group = _toolboxGroups[tool.Category];
            }
            else
            {
                group = new ToolboxGroup(tool.Category);
                group.DragAdvisor = new ToolboxDragAdvisor();
                _toolboxGroups.Add(group);
            }

            group.Add(tool);
        }