// We don't really deserialize a tool box item, we fabricate // it is the drag source is a node that has a type. Otherwise // we just return null indicating this is not from the toolbox public ToolboxItem DeserializeToolboxItem(Object obj, IDesignerHost host) { //Console.WriteLine("TBS:DeserializeToolBoxItem " + obj); if (!(obj is IDataObject)) { return(null); } IDataObject data = (IDataObject)obj; bool found = false; IDragDropItem sourceNode = null; // Look for a node that represents a type, this is either // a constructor or a type node foreach (Type t in BrowserTree.DragSourceTypes) { sourceNode = (IDragDropItem)data.GetData(t); if (sourceNode != null && sourceNode is ITargetType) { found = true; break; } } if (!found) { return(null); } Type type = ((ITargetType)sourceNode).Type; if (!(typeof(Control).IsAssignableFrom(type))) { return(null); } IDesignSurfaceNode dNode = (IDesignSurfaceNode)sourceNode; if (!dNode.OnDesignSurface) { return(null); } ToolboxItem ti = new ToolboxItem(type); ti.ComponentsCreated += new ToolboxComponentsCreatedEventHandler(ComponentsCreated); return(ti); }
// Enable the correct items and assign event handlers protected void SetupActionMenu(IMenuTreeNode node, BrowserTree tree, ActionMenuHelper partner) { // Set up the main action menu first // The main menu may not be used (embedded case) if (this != _actionMenuHelper && _actionMenuHelper != null) { _partner = _actionMenuHelper; _actionMenuHelper.SetupActionMenu(node, tree, this); } else { _partner = partner; } Disable(); if (node.HasGetProp()) { _menuItem[GETPROP].Enabled = true; SetHandler(GETPROP, new EventHandler(tree.TreeNodePopupClick)); } if (node.HasSetProp()) { _menuItem[SETPROP].Enabled = true; SetHandler(SETPROP, new EventHandler(tree.TreeNodePopupClickSet)); } if (node.HasSetField()) { _menuItem[SETFIELD].Enabled = true; SetHandler(SETFIELD, new EventHandler(tree.TreeNodePopupClickSet)); } if (node.HasInvokeMeth()) { _menuItem[INVOKEMETH].Enabled = true; SetHandler(INVOKEMETH, new EventHandler(tree.TreeNodePopupClick)); } if (node.HasCreateObj()) { _menuItem[CREATEOBJ].Enabled = true; SetHandler(CREATEOBJ, new EventHandler(tree.TreeNodePopupCreateObj)); } if (node.HasCast()) { _menuItem[CAST].Enabled = true; SetHandler(CAST, new EventHandler(tree.CastClick)); } if (node.HasDesignSurface()) { IDesignSurfaceNode dNode = (IDesignSurfaceNode)node; _menuItem[DESIGNSURFACE].Checked = dNode.OnDesignSurface; _menuItem[DESIGNSURFACE].Enabled = true; SetHandler(DESIGNSURFACE, new EventHandler(dNode.DesignSurfaceClick)); } if (node.HasEventLogging()) { IEventLoggingMenuNode dNode = (IEventLoggingMenuNode)node; _menuItem[EVENTLOGGING].Checked = dNode.EventLogging; _menuItem[EVENTLOGGING].Enabled = true; SetHandler(EVENTLOGGING, new EventHandler(dNode.EventLoggingClick)); } if (node.HasCut()) { _menuItem[CUT].Enabled = true; SetHandler(CUT, new EventHandler(tree.TreeNodePopupCut)); } if (node.HasCopy()) { _menuItem[COPY].Enabled = true; SetHandler(COPY, new EventHandler(tree.TreeNodePopupCopy)); } if (node.HasCopyText0()) { _menuItem[COPY_TEXT].Enabled = true; SetHandler(COPY_TEXT, new EventHandler(tree.TreeNodePopupCopyText0)); } if (node.HasCopyText1()) { _menuItem[COPY_VALUE].Enabled = true; SetHandler(COPY_VALUE, new EventHandler(tree.TreeNodePopupCopyText1)); } if (node.HasPaste()) { _menuItem[PASTE].Enabled = true; SetHandler(PASTE, new EventHandler(tree.TreeNodePopupPaste)); } if (node.HasDelete()) { _menuItem[DELETE].Enabled = true; SetHandler(DELETE, new EventHandler(tree.TreeNodePopupDelete)); } if (node.HasClose()) { // Close deletes an item from the tree if (_closeMenuItem != null) { _closeMenuItem.Enabled = true; } _menuItem[CLOSE].Enabled = true; SetHandler(CLOSE, new EventHandler(tree.TreeNodePopupDelete)); } else { if (_closeMenuItem != null) { _closeMenuItem.Enabled = false; } } /**** * if (node.HasRename()) * { * _menuItem[RENAME].Enabled = true; * SetHandler(RENAME, * new EventHandler(tree.TreeNodePopupRename)); * } ****/ /* * if (node.HasConvert()) * { * _menuItem[CONVERT].Enabled = true; * SetHandler(CONVERT, * new EventHandler(tree.ConvertClick)); * } */ if (node.HasRegister()) { _menuItem[REGISTER].Enabled = true; SetHandler(REGISTER, new EventHandler(tree.RegisterClick)); } if (node.HasUnregister()) { _menuItem[UNREGISTER].Enabled = true; SetHandler(UNREGISTER, new EventHandler(tree.UnregisterClick)); } if (node.HasRemoveFavorite()) { _menuItem[REMOVEFAVORITE].Enabled = true; SetHandler(REMOVEFAVORITE, new EventHandler(tree.RemoveFavoriteClick)); } }
ObjectInfo FinishObjectCreation(Object obj) { // Generate a name if (obj is Control && !_asyncObjectCreation) { Control c = (Control)obj; c.Name = CompNumber.GetCompName(obj.GetType()); // This one can't have the text set to anything but a date if (!(c is DateTimePicker)) { c.Text = c.Name; } } ObjectInfo objInfo = _targetNode.AddNewObject(obj, _sourceNode); // This is the case when the control is created not by dragging // it to the design panel, but dragging it to the object // tree somewhere if (_sourceNode is IDesignSurfaceNode) { IDesignSurfaceNode dNode = (IDesignSurfaceNode)_sourceNode; if (obj is Control) { Control control = (Control)obj; // Some of them don't have them, need to pick something // so its visible Size defaultSize; PropertyInfo p = typeof(Control).GetProperty("DefaultSize", ReflectionHelper.ALL_BINDINGS); defaultSize = (Size)p.GetValue(control, null); if (defaultSize.Equals(Size.Empty)) { TraceUtil.WriteLineWarning(this, "No DefaultSize specified for " + control); control.Size = new Size(200, 200); } if (dNode.OnDesignSurface) { // Give the user a change with AxWebBrowser if (control.GetType().Name.Equals("AxWebBrowser")) { ErrorDialog.Show ("Before calling methods on the WebBrowser " + "object, please turn off Design Mode. " + "This works around a known problem where " + "the browser control does not work " + "initially correctly in design mode. " + "The problem only occurs on the " + "first method invocation; you may turn on " + "design mode after the first method call " + "is completely finished.", "Please turn off Design Mode", MessageBoxIcon.Warning); } try { // The control may complain if it does not // like where it is being added ObjectBrowser.ImagePanel.AddControl(objInfo, control); } catch (Exception ex) { _targetNode.RemoveObject(objInfo.Obj); throw new Exception ("There was an error adding this control " + "to the design surface. You might want " + "using the Action menu (right-click) " + "to not have the control created " + "on the design surface", ex); } } control.Show(); } } return(objInfo); }