public void InitProcedure(DBItem owner, StageProcedure param) { if (!(param.Procedure is DBProcedure proc) || param.ProcedureType != StageParamProcudureType.Manual) { return; } string name = "procedure" + proc.Name; if (proc.ProcedureType == ProcedureTypes.Query) { DockPage page = dock.GetPage(name); if (page == null) { page = dock.Put(new PQueryView { Name = name, Text = param.Name == null || param.Name.Length == 0 ? proc.ToString() : param.Name, Document = document, Procedure = proc }, DockType.Content); } page.Tag = owner; } Type t = proc.ProcedureType == ProcedureTypes.Assembly || proc.ProcedureType == ProcedureTypes.Source ? proc.GetObjectType() : null; if (t != null && !TypeHelper.IsBaseType(t, typeof(Window)) && TypeHelper.IsBaseType(t, typeof(Widget))) { DockPage page = dock.GetPage(name); if (page == null) { var control = (Widget)EmitInvoker.CreateObject(t, true); control.Name = name; if (control is IText) { ((IText)control).Text = param.Name == null || param.Name.Length == 0 ? proc.ToString() : param.Name; } page = dock.Put(control, DockType.Content); } page.Tag = owner; } else { if (!(toolProcedures.DropDown?.Items[name] is MenuItemProcedure item)) { item = new MenuItemProcedure(proc) { Name = name }; item.Click += ProcedureItemClick; toolProcedures.DropDown.Items.Add(item); } item.Tag = owner; } }
private void ContextAddItemClicked(object sender, ToolItemEventArgs e) { var item = e.Item; DBItem row = null; object tag = tree.SelectedDBItem; if (item.Name == "Work") { row = new Work(); } else if (item.Name == "Work Stage") { row = new Stage(); if (tag is Work) { ((Stage)row).Work = (Work)tag; } } else if (item.Name == "Stage Parameter") { row = new StageParam(); if (tag is Stage) { ((StageParam)row).Stage = (Stage)tag; } } else if (item.Name == "Stage Procedure") { row = new StageProcedure(); if (tag is Stage) { ((StageParam)row).Stage = (Stage)tag; } } else if (item.Name == "Stage Reference") { row = new StageReference(); if (tag is Stage) { ((StageParam)row).Stage = (Stage)tag; } } else if (item.Name == "Group") { row = new UserGroup(); } else if (item.Name == "Template") { row = new Template(); if (tag is Template) { ((Template)row).Parent = (Template)tag; } } else if (item.Name == "Template Data") { row = new TemplateData(); if (tag is Template) { ((TemplateData)row).Template = (Template)tag; } } else if (item.Name == "User") { row = new User(); if (tag is Department) { ((User)row).Department = (Department)tag; } else if (tag is Position) { ((User)row).Position = (Position)tag; } //row.Access.Create foreach (var access in row.Access.Items.ToList()) { row.Access.Add(access.Group, access.Access & ~AccessType.Create); } } else if (item.Name == "Scheduler") { row = new Scheduler(); if (tag is DBProcedure) { ((Scheduler)row).Procedure = (DBProcedure)tag; } } ShowItem(row); }