/// <summary> /// Contructs a classes based on the element type /// </summary> /// <param name="element"></param> /// <returns></returns> static public CreateLabels construct(NamedElement element) { // TODO: Add here new elements constructors switch (element.GetType().Name) { case "Table": return(new CreateLabels_Table(element as Table)); case "View": return(new CreateLabels_View(element as View)); case "EdtBase": case "EdtString": case "EdtContainer": case "EdtDate": case "EdtEnum": case "EdtDateTime": case "EdtGuid": case "EdtReal": case "EdtInt": case "EdtInt64": return(new CreateLabels_Edt(element as EdtBase)); case "BaseEnum": return(new CreateLabels_BaseEnum(element as BaseEnum)); case "BaseEnumExtension": return(new CreateLabels_BaseEnumExtension(element as BaseEnumExtension)); case "MenuItem": case "MenuItemAction": case "MenuItemDisplay": case "MenuItemOutput": return(new CreateLabels_MenuItem(element as MenuItem)); case "Form": return(new CreateLabels_Form(element as Form)); case "SecurityPrivilege": return(new CreateLabels_SecurityPrivilege(element as SecurityPrivilege)); case "WorkflowHierarchyAssignmentProvider": return(new CreateLabels_WorkflowHierarchyAssignmentProvider(element as WorkflowHierarchyAssignmentProvider)); case "WorkflowApproval": return(new CreateLabels_WorkflowApproval(element as WorkflowApproval)); case "WorkflowCategory": return(new CreateLabels_WorkflowCategory(element as WorkflowCategory)); case "WorkflowTask": return(new CreateLabels_WorkflowTask(element as WorkflowTask)); case "WorkflowTemplate": //WorkflowType Object return(new CreateLabels_WorkflowType(element as WorkflowTemplate)); default: throw new NotImplementedException($"The type {element.GetType().Name} is not implemented."); } }
static public IElement construct(NamedElement namedElement) { IElement element = null; #region Chose element by type switch (namedElement.GetType().Name) { case "Table": element = new ElementTable(namedElement); break; case "TableExtension": element = new ElementTableExtension(namedElement); break; case "View": element = new ElementView(namedElement); break; case "ClassItem": element = new ElementClassItem(namedElement); break; case "SimpleQuery": element = new ElementSimpleQuery(namedElement); break; case "CompositeQuery": element = new ElementCompositeQuery(namedElement); break; case "Form": element = new ElementForm(namedElement); break; case "FormExtension": element = new ElementFormExtension(namedElement); break; case "DataEntityView": element = new ElementDataEntityView(namedElement); break; default: throw new NotImplementedException($"Not implemented type: {namedElement.GetType().Name}"); } #endregion return(element); }
/// <summary> /// Called when user clicks on the add-in menu /// </summary> /// <param name="e">The context of the VS tools and metadata</param> public override void OnClick(AddinDesignerEventArgs e) { try { StringBuilder messages = new StringBuilder(); // Get the selected element as a base type "NamedElement". Maybe you don't need to know the specific // type, because you just want to dump element names, for example. You still can check the type later // and run any type-specific logic. NamedElement namedElement = e.SelectedElement as NamedElement; if (namedElement != null) { messages.AppendLine($"You selected {namedElement.GetType().Name} named {namedElement.Name}."); } // If you're looking for a specific type, try to cast the selected item directly to the type. ClassItem c = e.SelectedElement as ClassItem; if (c != null) { int methodCount = c.Methods.Cast <IMethod>().Count(); // Calculating number of methods messages.AppendLine($"The class has {methodCount} method(s)."); } // Show messages in a dialog box. CoreUtility.DisplayInfo(messages.ToString()); } catch (Exception ex) { CoreUtility.HandleExceptionWithErrorMessage(ex); } }
/// <summary> /// Contructs a classes based on the element type /// </summary> /// <param name="element"></param> /// <returns></returns> static public CreateLabels construct(NamedElement element) { // TODO: Add here new elements constructors switch (element.GetType().Name) { case "Table": return(new CreateLabels_Table(element as Table)); case "View": return(new CreateLabels_View(element as View)); case "EdtBase": case "EdtString": case "EdtContainer": case "EdtDate": case "EdtEnum": case "EdtDateTime": case "EdtGuid": case "EdtReal": case "EdtInt": case "EdtInt64": return(new CreateLabels_Edt(element as EdtBase)); case "BaseEnum": return(new CreateLabels_BaseEnum(element as BaseEnum)); case "BaseEnumExtension": return(new CreateLabels_BaseEnumExtension(element as BaseEnumExtension)); case "MenuItem": case "MenuItemAction": case "MenuItemDisplay": case "MenuItemOutput": return(new CreateLabels_MenuItem(element as MenuItem)); case "Form": return(new CreateLabels_Form(element as Form)); default: throw new NotImplementedException($"The type {element.GetType().Name} is not implemented."); } }