diff --git a/AXModulesBuild.proj b/AXModulesBuild.proj new file mode 100644 index 0000000..c427dd7 --- /dev/null +++ b/AXModulesBuild.proj @@ -0,0 +1,45 @@ + + + + $(registry:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Dynamics\AX\7.0\SDK@MetadataPath) + $(registry:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Dynamics\AX\7.0\SDK@DynamicsSDK) + $(AGENT_BUILDDIRECTORY)\Packages + $(AGENT_BUILDDIRECTORY)\TestResults + $(AGENT_BUILDDIRECTORY)\Artifacts + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Metadata/AOTBrowser/AOTBrowser/AxClass/ARBAOTObjectPopulateController.xml b/Metadata/AOTBrowser/AOTBrowser/AxClass/ARBAOTObjectPopulateController.xml new file mode 100644 index 0000000..025312b --- /dev/null +++ b/Metadata/AOTBrowser/AOTBrowser/AxClass/ARBAOTObjectPopulateController.xml @@ -0,0 +1,95 @@ + + + ARBAOTObjectPopulateController + + +/// Controller for generating setup data for parameter comparison +/// +class ARBAOTObjectPopulateController extends SysOperationserviceController +{ +} +]]> + + + new + + /// Constructor for ACMAOTObjectPopulateController class + /// + /// The name of the class + /// The method name + /// The execution mode + protected void new(IdentifierName _className = '', IdentifierName _methodName = '', SysOperationExecutionMode _executionMode = SysOperationExecutionMode::Synchronous) + { + super(classStr(ARBAOTObjectPopulateService), methodStr(ARBAOTObjectPopulateService, populateAOTObjects), _executionMode); + } + +]]> + + + construct + + /// Construct method for ACMAOTObjectPopulateController + /// + /// The new ACMAOTObjectPopulateController + public static ARBAOTObjectPopulateController construct() + { + return new ARBAOTObjectPopulateController(); + } + +]]> + + + caption + + /// The caption for the controller + /// + /// The caption + public ClassDescription caption() + { + return "@AOTBrowser:PopulateAOTObjectTable"; + } + +]]> + + + parmDialogCaption + + /// The dialog caption + /// + /// The new dialog caption + /// The dialog caption + public LabelType parmDialogCaption(LabelType _dialogCaption = dialogCaption) + { + LabelType ret; + + ret = "@AOTBrowser:PopulateAOTObjectTable"; + + return ret; + } + +]]> + + + main + + /// The main method + /// + /// The arguments + public static void main(Args _args) + { + ARBAOTObjectPopulateController controller = ARBAOTObjectPopulateController::construct(); + + controller.startOperation(); + } + +]]> + + + + \ No newline at end of file diff --git a/Metadata/AOTBrowser/AOTBrowser/AxClass/ARBAOTObjectPopulateService.xml b/Metadata/AOTBrowser/AOTBrowser/AxClass/ARBAOTObjectPopulateService.xml new file mode 100644 index 0000000..7975551 --- /dev/null +++ b/Metadata/AOTBrowser/AOTBrowser/AxClass/ARBAOTObjectPopulateService.xml @@ -0,0 +1,517 @@ + + + ARBAOTObjectPopulateService + + +/// Service for generating parameter comparison setup data +/// +class ARBAOTObjectPopulateService extends SysOperationServiceBase +{ + +} +]]> + + + populateAOTObjects + + /// Generate the setup data needed for parameter comparison + /// + public void populateAOTObjects() + { + var tableList = Xpp.MetadataSupport::GetDataModelElements(true,false,false,false,false).GetEnumerator(); + + ARBAOTObjects aotObjects; + RecordInsertList aotObjectsInsertList = new RecordInsertList(tableNum(ARBAOTObjects)); + delete_from aotObjects; + + while (tableList.MoveNext()) + { + AxTable table = Xpp.MetadataSupport::GetTable(tableList.Current); + + aotObjects.clear(); + aotObjects.Name = table.Name; + aotObjects.Label = SysLabel::labelId2String2(table.Label); + aotObjects.Type = ARBAOTObjectType::Table; + aotObjectsInsertList.add(aotObjects); + } + + var viewList = Xpp.MetadataSupport::GetDataModelElements(false,true,false,false,false).GetEnumerator(); + + while (viewList.MoveNext()) + { + AxView view = Xpp.MetadataSupport::GetView(viewList.Current); + + aotObjects.clear(); + aotObjects.Name = view.Name; + aotObjects.Label = SysLabel::labelId2String2(view.Label); + aotObjects.Type = ARBAOTObjectType::View; + aotObjectsInsertList.add(aotObjects); + + } + + var enumList = Xpp.MetadataSupport::EnumNames(); + + while (enumList.MoveNext()) + { + AxEnum enum = Xpp.MetadataSupport::GetEnum(enumList.Current); + + aotObjects.clear(); + aotObjects.Name = enum.Name; + aotObjects.Label = SysLabel::labelId2String2(enum.Label); + aotObjects.Type = ARBAOTObjectType::BaseEnum; + aotObjectsInsertList.add(aotObjects); + + } + + var edtList = Xpp.MetadataSupport::EdtNames(); + + while (edtList.MoveNext()) + { + AxEdt edt = Xpp.MetadataSupport::GetEdt(edtList.Current); + + aotObjects.clear(); + aotObjects.Name = edt.Name; + aotObjects.Label = SysLabel::labelId2String2(edt.Label); + aotObjects.Type = ARBAOTObjectType::ExtendedDataType; + aotObjectsInsertList.add(aotObjects); + + } + + var dataEntityList = Xpp.MetadataSupport::GetDataModelElements(false,false,true,false,false).GetEnumerator(); + + while (dataEntityList.MoveNext()) + { + AxDataEntityView dataEntityView = Xpp.MetadataSupport::GetDataEntityView(dataEntityList.Current); + + aotObjects.clear(); + aotObjects.Name = dataEntityView.Name; + aotObjects.Label = SysLabel::labelId2String2(dataEntityView.Label); + aotObjects.Type = ARBAOTObjectType::DataEntity; + aotObjectsInsertList.add(aotObjects); + + } + + var mapList = Xpp.MetadataSupport::GetDataModelElements(false,false,false,false,true).GetEnumerator(); + + while (mapList.MoveNext()) + { + AxMap map = Xpp.MetadataSupport::GetMap(mapList.Current); + + aotObjects.clear(); + aotObjects.Name = map.Name; + aotObjects.Label = SysLabel::labelId2String2(map.Label); + aotObjects.Type = ARBAOTObjectType::Map; + aotObjectsInsertList.add(aotObjects); + + } + + var classList = Xpp.MetadataSupport::ClassNames(); + + while (classList.MoveNext()) + { + AxClass aotClass = Xpp.MetadataSupport::GetClass(classList.Current); + + aotObjects.clear(); + aotObjects.Name = aotClass.Name; + //aotObjects.Label = SysLabel::labelId2String2(aotClass.Label); + aotObjects.Type = ARBAOTObjectType::Class; + aotObjectsInsertList.add(aotObjects); + } + + var formsList = Xpp.MetadataSupport::FormNames(); + + while (formsList.MoveNext()) + { + AxForm form = Xpp.MetadataSupport::GetForm(formsList.Current); + + aotObjects.clear(); + aotObjects.Name = form.Name; + aotObjects.Label = SysLabel::labelId2String2(form.Design.Caption); + aotObjects.Type = ARBAOTObjectType::Form; + aotObjectsInsertList.add(aotObjects); + } + + var queriesList = Xpp.MetadataSupport::QueryNames(); + + while (queriesList.MoveNext()) + { + AxQuery query = Xpp.MetadataSupport::GetQuery(queriesList.Current); + + aotObjects.clear(); + aotObjects.Name = query.Name; + if (query is AxQuerySimple) + { + AxQuerySimple querySimple = query; + aotObjects.Label = SysLabel::labelId2String2(querySimple.Title); + } + aotObjects.Type = ARBAOTObjectType::Query; + aotObjectsInsertList.add(aotObjects); + + } + + var menuList = ArbelaXpp.MetadataSupport::MenuNames(); + + while (menuList.MoveNext()) + { + AxMenu menu = Xpp.MetadataSupport::GetMenu(menuList.Current); + + aotObjects.clear(); + aotObjects.Name = menu.Name; + aotObjects.Label = SysLabel::labelId2String2(menu.Label); + aotObjects.Type = ARBAOTObjectType::Menu; + aotObjectsInsertList.add(aotObjects); + + } + + var tileList = ArbelaXpp.MetadataSupport::TileNames(); + + while (tileList.MoveNext()) + { + AxTile tile = Xpp.MetadataSupport::GetTile(tileList.Current); + + aotObjects.clear(); + aotObjects.Name = tile.Name; + aotObjects.Label = SysLabel::labelId2String2(tile.Label); + aotObjects.Type = ARBAOTObjectType::Tile; + aotObjectsInsertList.add(aotObjects); + + } + + var tableCollectionList = ArbelaXpp.MetadataSupport::TableCollectionNames(); + + while (tableCollectionList.MoveNext()) + { + AxTableCollection tableCollection = ArbelaXpp.MetadataSupport::GetTableCollection(tableCollectionList.Current); + + aotObjects.clear(); + aotObjects.Name = tableCollection.Name; + aotObjects.Type = ARBAOTObjectType::TableCollection; + aotObjectsInsertList.add(aotObjects); + } + + var compositEntityList = ArbelaXpp.MetadataSupport::CompositeDataEntityNames(); + + while (compositEntityList.MoveNext()) + { + AxCompositeDataEntityView compositeEntity = ArbelaXpp.MetadataSupport::GetCompositeDataEntity(compositEntityList.Current); + + aotObjects.clear(); + aotObjects.Name = compositeEntity.Name; + aotObjects.Label = SysLabel::labelId2String2(compositeEntity.Label); + aotObjects.Type = ARBAOTObjectType::CompositeDataEntity; + aotObjectsInsertList.add(aotObjects); + } + + var menuItemDisplayList = Xpp.MetadataSupport::MenuItemDisplayNames(); + + while (menuItemDisplayList.MoveNext()) + { + AxMenuItemDisplay menuItemDisplay = Xpp.MetadataSupport::GetMenuItemDisplay(menuItemDisplayList.Current); + + aotObjects.clear(); + aotObjects.Name = menuItemDisplay.Name; + aotObjects.Label = SysLabel::labelId2String2(menuItemDisplay.Label); + aotObjects.Type = ARBAOTObjectType::MenuItemDisplay; + aotObjectsInsertList.add(aotObjects); + } + + var menuItemActionList = Xpp.MetadataSupport::MenuItemActionNames(); + + while (menuItemActionList.MoveNext()) + { + AxMenuItemAction menuItemAction = Xpp.MetadataSupport::GetMenuItemAction(menuItemActionList.Current); + + aotObjects.clear(); + aotObjects.Name = menuItemAction.Name; + aotObjects.Label = SysLabel::labelId2String2(menuItemAction.Label); + aotObjects.Type = ARBAOTObjectType::MenuItemAction; + aotObjectsInsertList.add(aotObjects); + } + + var menuItemOutputList = Xpp.MetadataSupport::MenuItemOutputNames(); + + while (menuItemOutputList.MoveNext()) + { + AxMenuItemOutput menuItemOutput = Xpp.MetadataSupport::GetMenuItemOutput(menuItemOutputList.Current); + + aotObjects.clear(); + aotObjects.Name = menuItemOutput.Name; + aotObjects.Label = SysLabel::labelId2String2(menuItemOutput.Label); + aotObjects.Type = ARBAOTObjectType::MenuItemOutput; + aotObjectsInsertList.add(aotObjects); + } + + var securityRoleList = Xpp.MetadataSupport::SecurityRoleNames(); + + while (securityRoleList.MoveNext()) + { + AxSecurityRole securityRole = Xpp.MetadataSupport::GetSecurityRole(securityRoleList.Current); + + aotObjects.clear(); + aotObjects.Name = securityRole.Name; + aotObjects.Label = SysLabel::labelId2String2(securityRole.Label); + aotObjects.Type = ARBAOTObjectType::SecurityRole; + aotObjectsInsertList.add(aotObjects); + } + + var securityDutyList = ArbelaXpp.MetadataSupport::SecurityDutyNames(); + + while (securityDutyList.MoveNext()) + { + AxSecurityDuty securityDuty = ArbelaXpp.MetadataSupport::GetSecurityDuty(securityDutyList.Current); + + aotObjects.clear(); + aotObjects.Name = securityDuty.Name; + aotObjects.Label = SysLabel::labelId2String2(securityDuty.Label); + aotObjects.Type = ARBAOTObjectType::SecurityDuty; + aotObjectsInsertList.add(aotObjects); + } + + var securityPrivilegeList = ArbelaXpp.MetadataSupport::SecurityPrivilegeNames(); + + while (securityPrivilegeList.MoveNext()) + { + AxSecurityPrivilege securityPrivilege = ArbelaXpp.MetadataSupport::GetSecurityPrivilege(securityPrivilegeList.Current); + + aotObjects.clear(); + aotObjects.Name = securityPrivilege.Name; + aotObjects.Label = SysLabel::labelId2String2(securityPrivilege.Label); + aotObjects.Type = ARBAOTObjectType::SecurityPrivilege; + aotObjectsInsertList.add(aotObjects); + } + + var aggregateDataEntityList = ArbelaXpp.MetadataSupport::AggregateDataEntityNames(); + + while (aggregateDataEntityList.MoveNext()) + { + AxAggregateDataEntity aggregateDataEntity = Xpp.MetadataSupport::GetAggregateDataEntity(aggregateDataEntityList.Current); + + aotObjects.clear(); + aotObjects.Name = aggregateDataEntity.Name; + aotObjects.Label = SysLabel::labelId2String2(aggregateDataEntity.Label); + aotObjects.Type = ARBAOTObjectType::AggregateDataEntity; + aotObjectsInsertList.add(aotObjects); + } + + var workflowCategoryNames = Xpp.MetadataSupport::GetWorkflowCategoryNames().GetEnumerator(); + + while (workflowCategoryNames.MoveNext()) + { + AxWorkflowCategory object = Xpp.MetadataSupport::GetWorkflowCategory(workflowCategoryNames.Current); + + aotObjects.clear(); + aotObjects.Name = object.Name; + aotObjects.Label = SysLabel::labelId2String2(object.Label); + aotObjects.Type = ARBAOTObjectType::WorkflowCategory; + aotObjectsInsertList.add(aotObjects); + } + + var workflowApprovalNames = Xpp.MetadataSupport::GetWorkflowApprovalNames().GetEnumerator(); + + while (workflowApprovalNames.MoveNext()) + { + AxWorkflowApproval object = Xpp.MetadataSupport::GetWorkflowApproval(workflowApprovalNames.Current); + + aotObjects.clear(); + aotObjects.Name = object.Name; + aotObjects.Label = SysLabel::labelId2String2(object.Label); + aotObjects.Type = ARBAOTObjectType::WorkflowApproval; + aotObjectsInsertList.add(aotObjects); + } + + var workflowTaskNames = Xpp.MetadataSupport::GetWorkflowTaskNames().GetEnumerator(); + + while (workflowTaskNames.MoveNext()) + { + AxWorkflowTask object = Xpp.MetadataSupport::GetWorkflowTask(workflowTaskNames.Current); + + aotObjects.clear(); + aotObjects.Name = object.Name; + aotObjects.Label = SysLabel::labelId2String2(object.Label); + aotObjects.Type = ARBAOTObjectType::WorkflowTask; + aotObjectsInsertList.add(aotObjects); + } + + var workflowAutomatedTaskNames = Xpp.MetadataSupport::GetWorkflowAutomatedTaskNames().GetEnumerator(); + + while (workflowAutomatedTaskNames.MoveNext()) + { + AxWorkflowAutomatedTask object = Xpp.MetadataSupport::GetWorkflowAutomatedTask(workflowAutomatedTaskNames.Current); + + aotObjects.clear(); + aotObjects.Name = object.Name; + aotObjects.Label = SysLabel::labelId2String2(object.Label); + aotObjects.Type = ARBAOTObjectType::WorkflowAutomatedTask; + aotObjectsInsertList.add(aotObjects); + } + + var workflowTypeNames = Xpp.MetadataSupport::GetWorkflowTemplateNames().GetEnumerator(); + + while (workflowTypeNames.MoveNext()) + { + AxWorkflowTemplate object = Xpp.MetadataSupport::GetWorkflowTemplate(workflowTypeNames.Current); + + aotObjects.clear(); + aotObjects.Name = object.Name; + aotObjects.Label = SysLabel::labelId2String2(object.Label); + aotObjects.Type = ARBAOTObjectType::WorkflowType; + aotObjectsInsertList.add(aotObjects); + } + + var workflowProviderNames = Xpp.MetadataSupport::GetWorkflowHierarchyAssignmentProviderNames().GetEnumerator(); + + while (workflowProviderNames.MoveNext()) + { + AxWorkflowHierarchyAssignmentProvider object = Xpp.MetadataSupport::GetWorkflowHierarchyAssignmentProvider(workflowProviderNames.Current); + + aotObjects.clear(); + aotObjects.Name = object.Name; + aotObjects.Label = SysLabel::labelId2String2(object.Label); + aotObjects.Type = ARBAOTObjectType::WorkflowHierarchyAssignmentProvider; + aotObjectsInsertList.add(aotObjects); + } + + workflowProviderNames = Xpp.MetadataSupport::GetWorkflowParticipantAssignmentProviderNames().GetEnumerator(); + + while (workflowProviderNames.MoveNext()) + { + AxWorkflowParticipantAssignmentProvider object = Xpp.MetadataSupport::GetWorkflowParticipantAssignmentProvider(workflowProviderNames.Current); + + aotObjects.clear(); + aotObjects.Name = object.Name; + aotObjects.Label = SysLabel::labelId2String2(object.Label); + aotObjects.Type = ARBAOTObjectType::WorkflowParticipantAssignmentProvider; + aotObjectsInsertList.add(aotObjects); + } + + workflowProviderNames = Xpp.MetadataSupport::GetWorkflowQueueAssignmentProviderNames().GetEnumerator(); + + while (workflowProviderNames.MoveNext()) + { + AxWorkflowQueueAssignmentProvider object = Xpp.MetadataSupport::GetWorkflowQueueAssignmentProvider(workflowProviderNames.Current); + + aotObjects.clear(); + aotObjects.Name = object.Name; + aotObjects.Label = SysLabel::labelId2String2(object.Label); + aotObjects.Type = ARBAOTObjectType::WorkflowQueueAssignmentProvider; + aotObjectsInsertList.add(aotObjects); + } + + workflowProviderNames = Xpp.MetadataSupport::GetWorkflowDueDateCalculationProviderNames().GetEnumerator(); + + while (workflowProviderNames.MoveNext()) + { + AxWorkflowDueDateCalculationProvider object = Xpp.MetadataSupport::GetWorkflowDueDateCalculationProvider(workflowProviderNames.Current); + + aotObjects.clear(); + aotObjects.Name = object.Name; + aotObjects.Label = SysLabel::labelId2String2(object.Label); + aotObjects.Type = ARBAOTObjectType::WorkflowDueDateCalculationProvider; + aotObjectsInsertList.add(aotObjects); + } + + var resourceNames = Xpp.MetadataSupport::ResourceNames(); + + while (resourceNames.MoveNext()) + { + AxResource object = Xpp.MetadataSupport::GetResource(resourceNames.Current); + + aotObjects.clear(); + aotObjects.Name = object.Name; + aotObjects.Label = SysLabel::labelId2String2(object.Label); + aotObjects.Type = ARBAOTObjectType::Resource; + aotObjectsInsertList.add(aotObjects); + } + + var licenseCodeNames = Xpp.MetadataSupport::LicenseCodeNames(); + + while (licenseCodeNames.MoveNext()) + { + AxLicenseCode object = Xpp.MetadataSupport::GetLicenseCode(licenseCodeNames.Current); + + aotObjects.clear(); + aotObjects.Name = object.Name; + aotObjects.Label = SysLabel::labelId2String2(object.Label); + aotObjects.Type = ARBAOTObjectType::LicenseCode; + aotObjectsInsertList.add(aotObjects); + } + + var configKeyNames = Xpp.MetadataSupport::ConfigurationKeyNames(); + + while (configKeyNames.MoveNext()) + { + AxConfigurationKey object = Xpp.MetadataSupport::GetConfigurationKey(configKeyNames.Current); + + aotObjects.clear(); + aotObjects.Name = object.Name; + aotObjects.Label = SysLabel::labelId2String2(object.Label); + aotObjects.Type = ARBAOTObjectType::ConfigKey; + aotObjectsInsertList.add(aotObjects); + } + + var configKeyGroupNames = Xpp.MetadataSupport::ConfigurationKeyGroupNames(); + + while (configKeyGroupNames.MoveNext()) + { + AxConfigurationKeyGroup object = Xpp.MetadataSupport::GetConfigurationKeyGroup(configKeyGroupNames.Current); + + aotObjects.clear(); + aotObjects.Name = object.Name; + aotObjects.Label = SysLabel::labelId2String2(object.Label); + aotObjects.Type = ARBAOTObjectType::ConfigKeyGroup; + aotObjectsInsertList.add(aotObjects); + } + + var serviceNames = Xpp.MetadataSupport::ServiceNames(); + + while (serviceNames.MoveNext()) + { + AxService object = ArbelaXpp.MetadataSupport::GetService(serviceNames.Current); + + aotObjects.clear(); + aotObjects.Name = object.Name; + //aotObjects.Label = SysLabel::labelId2String2(object.Label); + aotObjects.Type = ARBAOTObjectType::Service; + aotObjectsInsertList.add(aotObjects); + } + + var serviceGroupNames = ArbelaXpp.MetadataSupport::ServiceGroupNames(); + + while (serviceGroupNames.MoveNext()) + { + AxServiceGroup object = ArbelaXpp.MetadataSupport::GetServiceGroup(serviceGroupNames.Current); + + aotObjects.clear(); + aotObjects.Name = object.Name; + //aotObjects.Label = SysLabel::labelId2String2(object.Label); + aotObjects.Type = ARBAOTObjectType::ServiceGroup; + aotObjectsInsertList.add(aotObjects); + } + + var reportNames = Xpp.MetadataSupport::ReportNames(); + + while (reportNames.MoveNext()) + { + AxReport object = Xpp.MetadataSupport::GetReport(reportNames.Current); + + aotObjects.clear(); + aotObjects.Name = object.Name; + //aotObjects.Label = SysLabel::labelId2String2(object.Label); + aotObjects.Type = ARBAOTObjectType::Report; + aotObjectsInsertList.add(aotObjects); + } + + aotObjectsInsertList.insertDatabase(); + } + +]]> + + + + \ No newline at end of file diff --git a/Metadata/AOTBrowser/AOTBrowser/AxClass/ARBDMFEntity_EventHandler.xml b/Metadata/AOTBrowser/AOTBrowser/AxClass/ARBDMFEntity_EventHandler.xml new file mode 100644 index 0000000..30098cc --- /dev/null +++ b/Metadata/AOTBrowser/AOTBrowser/AxClass/ARBDMFEntity_EventHandler.xml @@ -0,0 +1,44 @@ + + + ARBDMFEntity_EventHandler + + +/// Event Handlers for DMFEntity +/// +class ARBDMFEntity_EventHandler +{ + +} +]]> + + + ACMOpenInAOTBrowser_OnClicked + + /// Handle clicked event for open in AOT browser + /// + /// + /// + [FormControlEventHandler(formControlStr(DMFEntity, ARBOpenInAOTBrowser), FormControlEventType::Clicked), + SuppressBPWarning('BPParameterNotUsed', 'EventArgs is a required parameter')] + public static void ACMOpenInAOTBrowser_OnClicked(FormControl sender, FormControlEventArgs e) + { + FormRun form = sender.formRun(); + FormDataSource datasource = form.dataSource(formDataSourceStr(DMFEntity, DMFEntity)) as FormDataSource; + DMFEntity entity = datasource.cursor(); + Args args = new Args(); + + args.parmEnumType(enumNum(ARBAOTObjectType)); + args.parmEnum(ARBAOTObjectType::DataEntity); + args.parm(entity.TargetEntity); + args.caller(sender.formRun()); + + new MenuFunction(menuItemDisplayStr(ARBAOTBrowser), MenuItemType::Display).run(args); + } + +]]> + + + + \ No newline at end of file diff --git a/Metadata/AOTBrowser/AOTBrowser/AxClass/ARBFormControlPersonalization_EventHandler.xml b/Metadata/AOTBrowser/AOTBrowser/AxClass/ARBFormControlPersonalization_EventHandler.xml new file mode 100644 index 0000000..f633799 --- /dev/null +++ b/Metadata/AOTBrowser/AOTBrowser/AxClass/ARBFormControlPersonalization_EventHandler.xml @@ -0,0 +1,41 @@ + + + ARBFormControlPersonalization_EventHandler + + +/// Event handlers for FormControlPersonalization +/// +class ARBFormControlPersonalization_EventHandler +{ + +} +]]> + + + ACMOpenInAOTBrowser_OnClicked + + /// + /// + /// + /// + [FormControlEventHandler(formControlStr(FormControlPersonalization, ARBOpenInAOTBrowser), FormControlEventType::Clicked), + SuppressBPWarning('BPParameterNotUsed', 'EventArgs is a required parameter')] + public static void ACMOpenInAOTBrowser_OnClicked(FormControl sender, FormControlEventArgs e) + { + Args args = new Args(); + + args.parmEnumType(enumNum(ARBAOTObjectType)); + args.parmEnum(ARBAOTObjectType::Form); + args.parm(sender.formRun().args().caller().name()); + args.caller(sender.formRun()); + + new MenuFunction(menuItemDisplayStr(ARBAOTBrowser), MenuItemType::Display).run(args); + } + +]]> + + + + \ No newline at end of file diff --git a/Metadata/AOTBrowser/AOTBrowser/AxEdt/ARBAOTProperties.xml b/Metadata/AOTBrowser/AOTBrowser/AxEdt/ARBAOTProperties.xml new file mode 100644 index 0000000..ed3a61a --- /dev/null +++ b/Metadata/AOTBrowser/AOTBrowser/AxEdt/ARBAOTProperties.xml @@ -0,0 +1,605 @@ + + + ARBAOTProperties + + + + Prop02 + 2 + + + + + Prop03 + 3 + + + + + Prop04 + 4 + + + + + Prop05 + 5 + + + + + Prop06 + 6 + + + + + Prop07 + 7 + + + + + Prop08 + 8 + + + + + Prop09 + 9 + + + + + Prop10 + 10 + + + + + Prop11 + 11 + + + + + Prop12 + 12 + + + + + Prop13 + 13 + + + + + Prop14 + 14 + + + + + Prop15 + 15 + + + + + Prop16 + 16 + + + + + Prop17 + 17 + + + + + Prop18 + 18 + + + + + Prop19 + 19 + + + + + Prop20 + 20 + + + + + Prop21 + 21 + + + + + Prop22 + 22 + + + + + Prop23 + 23 + + + + + Prop24 + 24 + + + + + Prop25 + 25 + + + + + Prop26 + 26 + + + + + Prop27 + 27 + + + + + Prop28 + 28 + + + + + Prop29 + 29 + + + + + Prop30 + 30 + + + + + Prop31 + 31 + + + + + Prop32 + 32 + + + + + Prop33 + 33 + + + + + Prop34 + 34 + + + + + Prop35 + 35 + + + + + Prop36 + 36 + + + + + Prop37 + 37 + + + + + Prop38 + 38 + + + + + Prop39 + 39 + + + + + Prop40 + 40 + + + + + Prop41 + 41 + + + + + Prop42 + 42 + + + + + Prop43 + 43 + + + + + Prop44 + 44 + + + + + Prop45 + 45 + + + + + Prop46 + 46 + + + + + Prop47 + 47 + + + + + Prop48 + 48 + + + + + Prop49 + 49 + + + + + Prop50 + 50 + + + + + Prop51 + 51 + + + + + Prop52 + 52 + + + + + Prop53 + 53 + + + + + Prop54 + 54 + + + + + Prop55 + 55 + + + + + Prop56 + 56 + + + + + Prop57 + 57 + + + + + Prop58 + 58 + + + + + Prop59 + 59 + + + + + Prop60 + 60 + + + + + Prop61 + 61 + + + + + Prop62 + 62 + + + + + Prop63 + 63 + + + + + Prop64 + 64 + + + + + Prop65 + 65 + + + + + Prop66 + 66 + + + + + Prop67 + 67 + + + + + Prop68 + 68 + + + + + Prop69 + 69 + + + + + Prop70 + 70 + + + + + Prop71 + 71 + + + + + Prop72 + 72 + + + + + Prop73 + 73 + + + + + Prop74 + 74 + + + + + Prop75 + 75 + + + + + Prop76 + 76 + + + + + Prop77 + 77 + + + + + Prop78 + 78 + + + + + Prop79 + 79 + + + + + Prop80 + 80 + + + + + Prop81 + 81 + + + + + Prop82 + 82 + + + + + Prop83 + 83 + + + + + Prop84 + 84 + + + + + Prop85 + 85 + + + + + Prop86 + 86 + + + + + Prop87 + 87 + + + + + Prop88 + 88 + + + + + Prop89 + 89 + + + + + Prop90 + 90 + + + + + Prop91 + 91 + + + + + Prop92 + 92 + + + + + Prop93 + 93 + + + + + Prop94 + 94 + + + + + Prop95 + 95 + + + + + Prop96 + 96 + + + + + Prop97 + 97 + + + + + Prop98 + 98 + + + + + Prop99 + 99 + + + + + Prop100 + 100 + + + + + + + 100 + \ No newline at end of file diff --git a/Metadata/AOTBrowser/AOTBrowser/AxEdt/ARBAOTPropertyValue.xml b/Metadata/AOTBrowser/AOTBrowser/AxEdt/ARBAOTPropertyValue.xml new file mode 100644 index 0000000..2a75a66 --- /dev/null +++ b/Metadata/AOTBrowser/AOTBrowser/AxEdt/ARBAOTPropertyValue.xml @@ -0,0 +1,10 @@ + + + ARBAOTPropertyValue + + + + + 100 + \ No newline at end of file diff --git a/Metadata/AOTBrowser/AOTBrowser/AxEnum/ARBAOTObjectType.xml b/Metadata/AOTBrowser/AOTBrowser/AxEnum/ARBAOTObjectType.xml new file mode 100644 index 0000000..e12ba98 --- /dev/null +++ b/Metadata/AOTBrowser/AOTBrowser/AxEnum/ARBAOTObjectType.xml @@ -0,0 +1,191 @@ + + + ARBAOTObjectType + + + + None + + + + Table + + 1 + + + Class + + 2 + + + BaseEnum + + 3 + + + ExtendedDataType + + 4 + + + View + + 5 + + + Query + + 6 + + + DataEntity + + 7 + + + CompositeDataEntity + + 8 + + + AggregateDataEntity + + 21 + + + Map + + 9 + + + TableCollection + + 10 + + + Form + + 12 + + + Tile + + 13 + + + Menu + + 14 + + + MenuItemDisplay + + 15 + + + MenuItemOutput + + 16 + + + MenuItemAction + + 17 + + + SecurityRole + + 18 + + + SecurityDuty + + 19 + + + SecurityPrivilege + + 20 + + + WorkflowCategory + + 22 + + + WorkflowApproval + + 23 + + + WorkflowTask + + 24 + + + WorkflowAutomatedTask + + 25 + + + WorkflowType + + 26 + + + WorkflowHierarchyAssignmentProvider + + 27 + + + WorkflowParticipantAssignmentProvider + + 28 + + + WorkflowQueueAssignmentProvider + + 29 + + + WorkflowDueDateCalculationProvider + + 30 + + + Resource + + 31 + + + LicenseCode + + 32 + + + ConfigKey + + 33 + + + ConfigKeyGroup + + 34 + + + Service + + 36 + + + ServiceGroup + + 37 + + + Report + + 38 + + + \ No newline at end of file diff --git a/Metadata/AOTBrowser/AOTBrowser/AxForm/ARBAOTBrowser.xml b/Metadata/AOTBrowser/AOTBrowser/AxForm/ARBAOTBrowser.xml new file mode 100644 index 0000000..df57051 --- /dev/null +++ b/Metadata/AOTBrowser/AOTBrowser/AxForm/ARBAOTBrowser.xml @@ -0,0 +1,1925 @@ + + + ARBAOTBrowser + + + + classDeclaration + +/// ACM AOT browser form +/// +[Form] +public class ARBAOTBrowser extends FormRun +{ + ARBAOTObjectType objectType; + TreeNodeName aotNodeName; + FormGridControl propertiesMatrixGrid; + + +} +]]> + + + updateControlsFromTable + + + + updateControls + + + + updateTableControls + + + + updateEnumControls + + + + updateEdtControls + + + + updateDataEntityControls + + + + updateClassControls + + + + updateFormControls + + + + updateQueryControls + + + + updateMapControls + + + + updateViewControls + + + + updateMenuControls + + + + updateTileControls + + + + updateTableCollectionControls + + + + updateCompositeDataEntityControls + + + + updateAggregateDataEntityControls + + + + updateMenuItemDisplayControls + + + + updateMenuItemActionControls + + + + updateMenuItemOutputControls + + + + updateSecurityRoleControls + + + + updateSecurityDutyControls + + + + updateSecurityPrivilegeControls + + + + updateWorkflowCategoryControls + + + + updateWorkflowApprovalControls + + + + updateWorkflowTaskControls + + + + updateWorkflowAutomatedTaskControls + + + + updateWorkflowTypeControls + + + + updateWorkflowHierarchyProviderControls + + + + updateWorkflowParticipantProviderControls + + + + updateWorkflowQueueProviderControls + + + + updateWorkflowDueDateCalcProviderControls + + + + updateResourceControls + + + + updateLicenseCodeControls + + + + updateConfigKeyControls + + + + updateConfigKeyGroupControls + + + + updateServiceControls + + + + updateServiceGroupControls + + + + updateReportControls + + + + clearPropertiesMatrix + + + + updatePropertiesGroup + 100) + { + continue; + } + + nextArrayNum++; + propMap.insert(prop.Name, arrayNum); + previousControl = propertiesMatrixGrid.addDataField(ARBAOTObjectPropertiesMatrix_ds.id(), fieldNum(ARBAOTObjectPropertiesMatrix, Property), previousControl, arrayNum); + previousControl.label(prop.Name); + } + + if (prop.Name == 'ReturnType') + { + AxMethodReturnType returnType = prop.GetValue(object); + ARBAOTObjectPropertiesMatrix.Property[arrayNum] = returnType.Type.ToString() + ' - ' + returnType.TypeName; + } + else + { + ARBAOTObjectPropertiesMatrix.Property[arrayNum] = prop.Name == 'Label' || prop.Name == 'Description' || prop.Name == 'HelpText' || prop.Name == 'DeveloperDocumentation' || prop.Name == 'EntityRelationshipRole' ? SysLabel::labelId2String(prop.GetValue(object).ToString()) : (prop.GetValue(object) == null ? '' : prop.GetValue(object).ToString()); + } + } + } + ARBAOTObjectPropertiesMatrix.insert(); + } + + propertiesMatrixGrid.visible(true); + + } + else + { + element.clearPropertiesMatrix(); + System.Type t = _object.GetType(); + + var props = t.GetProperties(); + for (int i = 0; i < props.Length; i++) + { + PropertyInfo prop = props.GetValue(i); + if (((prop.GetValue(_object) is System.String) || + (!(prop.GetValue(_object) is System.Collections.IEnumerable) + && prop.PropertyType.Name != 'AxPropertyCollection' + && prop.PropertyType.Name != 'AxFormPropertyCollection')) + && prop.Name != 'CompilerMetadata') + { + ARBAOTObjectProperties.clear(); + ARBAOTObjectProperties.Name = prop.Name; + if (prop.Name == 'ReturnType') + { + AxMethodReturnType returnType = prop.GetValue(_object); + ARBAOTObjectProperties.Value = returnType.Type.ToString() + ' - ' + returnType.TypeName; + } + else + { + ARBAOTObjectProperties.Value = prop.Name == 'Label' || prop.Name == 'Description' || prop.Name == 'HelpText' || prop.Name == 'DeveloperDocumentation' || prop.Name == 'EntityRelationshipRole' ? SysLabel::labelId2String(prop.GetValue(_object).ToString()) : (prop.GetValue(_object) == null ? '' : prop.GetValue(_object).ToString()); + } + ARBAOTObjectProperties.insert(); + } + } + PropertiesGrid.visible(true); + } + } + else + { + element.clearPropertiesMatrix(); + PropertiesGrid.visible(false); + } + ARBAOTObjectProperties_ds.executeQuery(); + ARBAOTObjectPropertiesMatrix_ds.executeQuery(); + + //element.reload(); + } + +]]> + + + updateObjectTree + + + + addTreeNode + + + + init + + /// + /// + public void init() + { + super(); + + Args args = element.args(); + + if (args.parmEnumType() == enumNum(ARBAOTObjectType) && args.parm() != null) + { + NavigationGroup.visible(false); + ARBAOTObjects_ds.queryBuildDataSource().enabled(false); + this.updateControls(args.parmEnum(), args.parm()); + } + } + +]]> + + + + + ARBAOTObjects + + + active + + /// + /// + /// + public int active() + { + int ret; + + ret = super(); + + element.updateControlsFromTable(); + + return ret; + } + +]]> + + + + + + + + ARBOpenTableBrowser + Button + + + clicked + + /// + /// + public void clicked() + { + super(); + + SysTableBrowser sysTableBrowser; + + sysTableBrowser = new SysTableBrowser(); + sysTableBrowser.parmTableName(ARBAOTObjects.Name); + sysTableBrowser.run(tablename2id(ARBAOTObjects.Name)); + } + +]]> + + + + + AOTObjectTypeFilter + ComboBox + + + modified + + /// + /// + /// + public boolean modified() + { + boolean ret; + + ret = super(); + + if (AOTObjectTypeFilter.selection() == enum2int(ARBAOTObjectType::None)) + { + ARBAOTObjects_ds.queryBuildDataSource().clearRange(fieldNum(ARBAOTObjects,Type)); + } + else + { + SysQuery::findOrCreateRange(ARBAOTObjects_ds.queryBuildDataSource(), fieldNum(ARBAOTObjects,Type)).value(queryValue(AOTObjectTypeFilter.selection())); + } + ARBAOTObjects_ds.executeQuery(); + + return ret; + } + +]]> + + + + + TableTree + Tree + + + selectionChanged + + /// + /// + /// + /// + /// + public void selectionChanged(FormTreeItem _OldItem, FormTreeItem _NewItem, FormTreeSelect _how) + { + super(_OldItem, _NewItem, _how); + + element.updatePropertiesGroup(_NewItem.data()); + } + +]]> + + + + + ACMAOTObjectProperties_Value + String + + + jumpRef + + /// + /// + public void jumpRef() + { + ARBAOTObjectProperties props; + props.setTmpData(ARBAOTObjectProperties); + Args args = new Args(); + args.parmEnumType(enumNum(ARBAOTObjectType)); + + switch(ARBAOTObjectProperties.Name) + { + case 'Table': + case 'RelatedTable': + args.parmEnum(ARBAOTObjectType::Table); + args.parm(this.valueStr()); + new MenuFunction(menuItemDisplayStr(ARBAOTBrowser), MenuItemType::Display).run(args); + break; + + case 'ExtendedDataType': + args.parmEnum(ARBAOTObjectType::ExtendedDataType); + args.parm(this.valueStr()); + new MenuFunction(menuItemDisplayStr(ARBAOTBrowser), MenuItemType::Display).run(args); + break; + + case 'EnumType': + args.parmEnum(ARBAOTObjectType::BaseEnum); + args.parm(this.valueStr()); + new MenuFunction(menuItemDisplayStr(ARBAOTBrowser), MenuItemType::Display).run(args); + break; + + case 'Tile': + args.parmEnum(ARBAOTObjectType::Tile); + args.parm(this.valueStr()); + new MenuFunction(menuItemDisplayStr(ARBAOTBrowser), MenuItemType::Display).run(args); + break; + + case 'DataEntity': + args.parmEnum(ARBAOTObjectType::DataEntity); + args.parm(this.valueStr()); + new MenuFunction(menuItemDisplayStr(ARBAOTBrowser), MenuItemType::Display).run(args); + break; + + case 'Object': + case 'ObjectName': + props.setTmpData(ARBAOTObjectProperties); + select firstOnly props + where props.Name == 'ObjectType'; + if (props) + { + switch (props.Value) + { + case 'Form': + args.parmEnum(ARBAOTObjectType::Form); + break; + case 'Class': + args.parmEnum(ARBAOTObjectType::Class); + break; + case 'Query': + args.parmEnum(ARBAOTObjectType::Query); + break; + case 'MenuItemAction': + args.parmEnum(ARBAOTObjectType::MenuItemAction); + break; + case 'MenuItemDisplay': + args.parmEnum(ARBAOTObjectType::MenuItemDisplay); + break; + case 'MenuItemOutput': + args.parmEnum(ARBAOTObjectType::MenuItemOutput); + break; + } + args.parm(this.valueStr()); + new MenuFunction(menuItemDisplayStr(ARBAOTBrowser), MenuItemType::Display).run(args); + } + break; + + case 'Extends': + select firstOnly props + where props.Name == 'SupportInheritance'; + if (props) + { + args.parmEnum(ARBAOTObjectType::Table); + args.parm(this.valueStr()); + new MenuFunction(menuItemDisplayStr(ARBAOTBrowser), MenuItemType::Display).run(args); + } + else + { + args.parmEnum(ARBAOTObjectType::ExtendedDataType); + args.parm(this.valueStr()); + new MenuFunction(menuItemDisplayStr(ARBAOTBrowser), MenuItemType::Display).run(args); + } + break; + + case 'MenuItemName': + props.setTmpData(ARBAOTObjectProperties); + select firstOnly props + where props.Name == 'MenuItemType'; + if (props) + { + switch (props.Value) + { + case 'Display': + args.parmEnum(ARBAOTObjectType::MenuItemDisplay); + break; + case 'Action': + args.parmEnum(ARBAOTObjectType::MenuItemAction); + break; + case 'Output': + args.parmEnum(ARBAOTObjectType::MenuItemOutput); + break; + } + args.parm(this.valueStr()); + new MenuFunction(menuItemDisplayStr(ARBAOTBrowser), MenuItemType::Display).run(args); + } + break; + } + + } + +]]> + + + + + + + + + ARBAOTObjects + ARBAOTObjects
+ + + Label + + + Name + + + Partition + + + RecId + + + TableId + + + Type + + + + No + No + No + No + No + + +
+ + ARBAOTObjectProperties + ARBAOTObjectProperties
+ + + Name + + + Partition + + + RecId + + + TableId + + + Value + + + + + +
+ + ARBAOTObjectPropertiesMatrix + ARBAOTObjectPropertiesMatrix
+ + + Partition + + + Property[1] + + + Property[10] + + + Property[11] + + + Property[12] + + + Property[13] + + + Property[14] + + + Property[15] + + + Property[16] + + + Property[17] + + + Property[18] + + + Property[19] + + + Property[2] + + + Property[20] + + + Property[21] + + + Property[22] + + + Property[23] + + + Property[24] + + + Property[25] + + + Property[26] + + + Property[27] + + + Property[28] + + + Property[29] + + + Property[3] + + + Property[30] + + + Property[31] + + + Property[32] + + + Property[33] + + + Property[34] + + + Property[35] + + + Property[36] + + + Property[37] + + + Property[38] + + + Property[39] + + + Property[4] + + + Property[40] + + + Property[41] + + + Property[42] + + + Property[43] + + + Property[44] + + + Property[45] + + + Property[46] + + + Property[47] + + + Property[48] + + + Property[49] + + + Property[5] + + + Property[50] + + + Property[51] + + + Property[52] + + + Property[53] + + + Property[54] + + + Property[55] + + + Property[56] + + + Property[57] + + + Property[58] + + + Property[59] + + + Property[6] + + + Property[60] + + + Property[61] + + + Property[62] + + + Property[63] + + + Property[64] + + + Property[65] + + + Property[66] + + + Property[67] + + + Property[68] + + + Property[69] + + + Property[7] + + + Property[70] + + + Property[71] + + + Property[72] + + + Property[73] + + + Property[74] + + + Property[75] + + + Property[8] + + + Property[9] + + + RecId + + + TableId + + + TypeName + + + + No + No + No + No + No + + +
+
+ + @ACM:AOTBrowser + SimpleListDetails + 1.3 + No + No + + + + ApplicationBar + ActionPane + + + + GeneralButtonGroup + ButtonGroup + + + + ARBAOTObjectPopulate + MenuFunctionButton + + ARBAOTObjectPopulate + Action + + + ARBOpenTableBrowser + Yes + Button + + @AOTBrowser:OpenTableBrowserButton + + + General + + + + + NavigationGroup + Yes + SizeToAvailable + Group + + + + QuickFilter + SizeToAvailable + + QuickFilterControl + + + + targetControlName + String + NavigationGrid + + + placeholderText + String + + + defaultColumnName + String + + + + + + AOTObjectTypeFilterGroup + Group + SizeToAvailable + + + + AOTObjectTypeFilter + Yes + ComboBox + + ARBAOTObjectType + + + + None + + Edit + + + NavigationGrid + No + Grid + SizeToContent + + + + ACMAOTObjects_Name + Yes + String + + Name + ARBAOTObjects + + + ACMAOTObjects_Label + String + + Label + ARBAOTObjects + + + ACMAOTObjects_Type + ComboBox + + Type + ARBAOTObjects + + + + No + No + + + + None + + + + DetailsHeader + FieldsFieldGroups + 1.1 + Group + SizeToAvailable + + + Fill + None + + + DetailsTabs + Tab + + + + TableTab + Yes + NestedSimpleListDetails + UX7 1.1 + TabPage + + + + TableBodyGroup + Yes + SizeToAvailable + Group + SizeToAvailable + + + + TableNavigationList + SizeToAvailable + Group + + + + TableTree + Yes + SizeToAvailable + Tree + + + + None + + + TableDetailsGroup + Yes + SizeToAvailable + Group + SizeToAvailable + + + + TableDetailsHeader + Group + SizeToAvailable + + + Fill + None + + + TableDetailsPropertiesGroup + No + Yes + Custom + Group + SizeToAvailable + + + + PropertiesGrid + Yes + Grid + + + + ACMAOTObjectProperties_Name + String + + Name + ARBAOTObjectProperties + + + ACMAOTObjectProperties_Value + String + + Value + ARBAOTObjectProperties + + + ARBAOTObjectProperties + + + ResourceImageGroup + Yes + Group + No + + + + ResourceImage + Yes + 250 + Manual + Image + 250 + Manual + + + + @SYS58650 + + + Fill + None + + + None + + + 2 + None + + + @ACM:Object + Always + + + + + + + +
\ No newline at end of file diff --git a/Metadata/AOTBrowser/AOTBrowser/AxFormExtension/DMFEntity.AOTBrowser.xml b/Metadata/AOTBrowser/AOTBrowser/AxFormExtension/DMFEntity.AOTBrowser.xml new file mode 100644 index 0000000..0112399 --- /dev/null +++ b/Metadata/AOTBrowser/AOTBrowser/AxFormExtension/DMFEntity.AOTBrowser.xml @@ -0,0 +1,26 @@ + + + DMFEntity.AOTBrowser + + + + FormExtensionControlbtpeddxt1 + + ARBOpenInAOTBrowser + Button + + No + Yes + @AOTBrowser:OpenInAOTBrowser + + InputButtonGroup + + + + + + + + \ No newline at end of file diff --git a/Metadata/AOTBrowser/AOTBrowser/AxFormExtension/FormControlPersonalization.AOTBrowser.xml b/Metadata/AOTBrowser/AOTBrowser/AxFormExtension/FormControlPersonalization.AOTBrowser.xml new file mode 100644 index 0000000..0de161e --- /dev/null +++ b/Metadata/AOTBrowser/AOTBrowser/AxFormExtension/FormControlPersonalization.AOTBrowser.xml @@ -0,0 +1,24 @@ + + + FormControlPersonalization.AOTBrowser + + + + FormExtensionControlgzu0p1p51 + + ARBOpenInAOTBrowser + Button + + @AOTBrowser:OpenInAOTBrowser + + CommitGroup + + + + + + + + \ No newline at end of file diff --git a/Metadata/AOTBrowser/AOTBrowser/AxLabelFile/AOTBrowser_en-US.xml b/Metadata/AOTBrowser/AOTBrowser/AxLabelFile/AOTBrowser_en-US.xml new file mode 100644 index 0000000..cb13079 --- /dev/null +++ b/Metadata/AOTBrowser/AOTBrowser/AxLabelFile/AOTBrowser_en-US.xml @@ -0,0 +1,7 @@ + + + AOTBrowser_en-US + AOTBrowser.en-US.label.txt + AOTBrowser + AOTBrowser\AOTBrowser\AxLabelFile\LabelResources\en-US\AOTBrowser.en-US.label.txt + \ No newline at end of file diff --git a/Metadata/AOTBrowser/AOTBrowser/AxLabelFile/LabelResources/en-US/AOTBrowser.en-US.label.txt b/Metadata/AOTBrowser/AOTBrowser/AxLabelFile/LabelResources/en-US/AOTBrowser.en-US.label.txt new file mode 100644 index 0000000..c044167 --- /dev/null +++ b/Metadata/AOTBrowser/AOTBrowser/AxLabelFile/LabelResources/en-US/AOTBrowser.en-US.label.txt @@ -0,0 +1,92 @@ +NewLabel0=Label files created on 12/04/2019 20:20:46 for label file Id AOTBrowser and language en-US + ;Label file comment - see above label +CompositeDataEntities=Composite data entity + ;ARB_AOTBrowser +Maps=Map + ;ARB_AOTBrowser +Macros=Macro + ;ARB_AOTBrowser +Tiles=Tile + ;ARB_AOTBrowser +Menus=Menu + ;ARB_AOTBrowser +AOTBrowser=AOT browser + ;ARB_AOTBrowser +BaseEnum=Base enum + ;ARB_AOTBrowser +MenuItemDisplay=Display menu item + ;ARB_AOTBrowser +MenuItemOutput=Output menu item + ;ARB_AOTBrowser +MenuItemAction=Action menu item + ;ARB_AOTBrowser +SecurityRole=Security role + ;ARB_AOTBrowser +SecurityDuty=Security duty + ;ARB_AOTBrowser +SecurityPrivilege=Security privilege + ;ARB_AOTBrowser +PopulateAOTObjectTable=AOTBrowser - Populate AOT object table + ;ARB_AOTBrowser +ObjectType=Object type + ;ARB_AOTBrowser +Object=Object + ;ARB_AOTBrowser +OpenInAOTBrowser=Open in AOT browser + ;ARB_AOTBrowser +AOTObjects=AOT objects + ;ARB_AOTBrowser +AOTObjectsDevDoc=List of objects in the application object tree + ;ARB_AOTBrowser +TableStatisticsDevDoc=Statistics about each table in the database + ;ARB_AOTBrowser +PropertyValue=Value + ;ARB_AOTBrowser +AOTObjectProperties=AOT object properties + ;ARB_AOTBrowser +AOTObjectPropertiesDevDoc=Holds the properties for the AOT object + ;ARB_AOTBrowser +AggregateDataEntity=Aggregate data entity + ;ARB_AOTBrowser +WorkflowCategory=Workflow category + ;ARB_AOTBrowser +WorkflowApproval=Workflow approval + ;ARB_AOTBrowser +WorkflowTask=Workflow task + ;ARB_AOTBrowser +WorkflowAutomatedTask=Workflow automated task + ;ARB_AOTBrowser +WorkflowType=Workflow type + ;ARB_AOTBrowser +WorkflowHierarchyAssignmentProvider=Workflow hierarchy assignment provider + ;ARB_AOTBrowser +WorkflowParticipantAssignmentProvider=Workflow participant assignment provider + ;ARB_AOTBrowser +WorkflowQueueAssignmentProvider=Workflow queue assignment provider + ;ARB_AOTBrowser +WorkflowDueDateCalculationProvider=Workflow due date calculation provider + ;ARB_AOTBrowser +Resource=Resource + ;ARB_AOTBrowser +LicenseCode=License code + ;ARB_AOTBrowser +ConfigKey=Configuration key + ;ARB_AOTBrowser +ConfigKeyGroup=Configuration key group + ;ARB_AOTBrowser +Reference=Reference + ;ARB_AOTBrowser +Service=Service + ;ARB_AOTBrowser +ServiceGroup=Service group + ;ARB_AOTBrowser +Report=Report + ;ARB_AOTBrowser +PopulateAOTObjects=Populate AOT objects + ;ARB_AOTBrowser +OpenTableBrowserButton=Open table browser + ;ARB_AOTBrowser +AOTBrowserMaintain=Maintain AOT browser + ;ARB_AOTBrowser +AOTBrowserUser=AOT browser user + ;ARB_AOTBrowser diff --git a/Metadata/AOTBrowser/AOTBrowser/AxMenuExtension/CommonMenu.AOTBrowser.xml b/Metadata/AOTBrowser/AOTBrowser/AxMenuExtension/CommonMenu.AOTBrowser.xml new file mode 100644 index 0000000..73110cb --- /dev/null +++ b/Metadata/AOTBrowser/AOTBrowser/AxMenuExtension/CommonMenu.AOTBrowser.xml @@ -0,0 +1,17 @@ + + + CommonMenu.AOTBrowser + + + + Common + + ARBAOTBrowser + ARBAOTBrowser + + + + + + \ No newline at end of file diff --git a/Metadata/AOTBrowser/AOTBrowser/AxMenuItemAction/ARBAOTObjectPopulate.xml b/Metadata/AOTBrowser/AOTBrowser/AxMenuItemAction/ARBAOTObjectPopulate.xml new file mode 100644 index 0000000..565f22d --- /dev/null +++ b/Metadata/AOTBrowser/AOTBrowser/AxMenuItemAction/ARBAOTObjectPopulate.xml @@ -0,0 +1,10 @@ + + + ARBAOTObjectPopulate + + ARBAOTObjectPopulateController + Class + + Allow + + \ No newline at end of file diff --git a/Metadata/AOTBrowser/AOTBrowser/AxMenuItemDisplay/ARBAOTBrowser.xml b/Metadata/AOTBrowser/AOTBrowser/AxMenuItemDisplay/ARBAOTBrowser.xml new file mode 100644 index 0000000..6bb830d --- /dev/null +++ b/Metadata/AOTBrowser/AOTBrowser/AxMenuItemDisplay/ARBAOTBrowser.xml @@ -0,0 +1,9 @@ + + + ARBAOTBrowser + + ARBAOTBrowser + + Allow + + \ No newline at end of file diff --git a/Metadata/AOTBrowser/AOTBrowser/AxReference/Arbela.Dynamics.AX.Xpp.Support.xml b/Metadata/AOTBrowser/AOTBrowser/AxReference/Arbela.Dynamics.AX.Xpp.Support.xml new file mode 100644 index 0000000..9b25e04 --- /dev/null +++ b/Metadata/AOTBrowser/AOTBrowser/AxReference/Arbela.Dynamics.AX.Xpp.Support.xml @@ -0,0 +1,7 @@ + + + Arbela.Dynamics.AX.Xpp.Support + Arbela.Dynamics.AX.Xpp.Support + Arbela.Dynamics.AX.Xpp.Support, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + 1.0.0.0 + \ No newline at end of file diff --git a/Metadata/AOTBrowser/AOTBrowser/AxSecurityDuty/ARBAOTBrowserMaintain.xml b/Metadata/AOTBrowser/AOTBrowser/AxSecurityDuty/ARBAOTBrowserMaintain.xml new file mode 100644 index 0000000..ac4bb8a --- /dev/null +++ b/Metadata/AOTBrowser/AOTBrowser/AxSecurityDuty/ARBAOTBrowserMaintain.xml @@ -0,0 +1,10 @@ + + + ARBAOTBrowserMaintain + + + + ARBAOTBrowserMaintain + + + \ No newline at end of file diff --git a/Metadata/AOTBrowser/AOTBrowser/AxSecurityPrivilege/ARBAOTBrowserMaintain.xml b/Metadata/AOTBrowser/AOTBrowser/AxSecurityPrivilege/ARBAOTBrowserMaintain.xml new file mode 100644 index 0000000..7c6136a --- /dev/null +++ b/Metadata/AOTBrowser/AOTBrowser/AxSecurityPrivilege/ARBAOTBrowserMaintain.xml @@ -0,0 +1,42 @@ + + + ARBAOTBrowserMaintain + + + + + + ARBAOTBrowser + + Allow + Allow + Allow + Allow + Allow + + ARBAOTBrowser + MenuItemDisplay + + + ARBAOTBrowser + + + + + + + ARBAOTObjectPopulate + + Allow + Allow + Allow + Allow + Allow + + ARBAOTObjectPopulate + MenuItemAction + + + + + \ No newline at end of file diff --git a/Metadata/AOTBrowser/AOTBrowser/AxSecurityRole/ARBAOTBrowserUser.xml b/Metadata/AOTBrowser/AOTBrowser/AxSecurityRole/ARBAOTBrowserUser.xml new file mode 100644 index 0000000..a808e80 --- /dev/null +++ b/Metadata/AOTBrowser/AOTBrowser/AxSecurityRole/ARBAOTBrowserUser.xml @@ -0,0 +1,13 @@ + + + ARBAOTBrowserUser + + + + + ARBAOTBrowserMaintain + + + + + \ No newline at end of file diff --git a/Metadata/AOTBrowser/AOTBrowser/AxTable/ARBAOTObjectProperties.xml b/Metadata/AOTBrowser/AOTBrowser/AxTable/ARBAOTObjectProperties.xml new file mode 100644 index 0000000..22e3f1b --- /dev/null +++ b/Metadata/AOTBrowser/AOTBrowser/AxTable/ARBAOTObjectProperties.xml @@ -0,0 +1,113 @@ + + + ARBAOTObjectProperties + + +/// ACM AOT object properties table +/// +public class ARBAOTObjectProperties extends common +{ +} + +]]> + + + @AOTBrowser:AOTObjectPropertiesDevDoc + + + Allow + + Name + Value + NameIdx + NameIdx + NameIdx + No + InMemory + + + + AutoReport + + + Name + + + Value + + + + + AutoLookup + + + Name + + + Value + + + + + AutoIdentification + Yes + + + Name + + + + + AutoSummary + + + Name + + + Value + + + + + AutoBrowse + + + Name + + + Value + + + + + + + Name + No + Name + Yes + + + Value + ARBAOTPropertyValue + + + + + + NameIdx + Yes + + + Name + + + + + + + + \ No newline at end of file diff --git a/Metadata/AOTBrowser/AOTBrowser/AxTable/ARBAOTObjectPropertiesMatrix.xml b/Metadata/AOTBrowser/AOTBrowser/AxTable/ARBAOTObjectPropertiesMatrix.xml new file mode 100644 index 0000000..2e254d4 --- /dev/null +++ b/Metadata/AOTBrowser/AOTBrowser/AxTable/ARBAOTObjectPropertiesMatrix.xml @@ -0,0 +1,84 @@ + + + ARBAOTObjectPropertiesMatrix + + +/// ACM AOT object properties table +/// +public class ARBAOTObjectPropertiesMatrix extends common +{ +} + +]]> + + + @AOTBrowser:AOTObjectPropertiesDevDoc + + + Allow + + TypeName + NameIdx + NameIdx + NameIdx + No + InMemory + + + + AutoReport + + + + AutoLookup + + + + AutoIdentification + Yes + + + TypeName + + + + + AutoSummary + + + + AutoBrowse + + + + + + TypeName + No + ARBAOTPropertyValue + Yes + + + Property + ARBAOTProperties + + + + + + NameIdx + Yes + + + TypeName + + + + + + + + \ No newline at end of file diff --git a/Metadata/AOTBrowser/AOTBrowser/AxTable/ARBAOTObjects.xml b/Metadata/AOTBrowser/AOTBrowser/AxTable/ARBAOTObjects.xml new file mode 100644 index 0000000..8e19e95 --- /dev/null +++ b/Metadata/AOTBrowser/AOTBrowser/AxTable/ARBAOTObjects.xml @@ -0,0 +1,136 @@ + + + ARBAOTObjects + + +/// ACM AOT Objects table +/// +public class ARBAOTObjects extends common +{ +} + +]]> + + + @AOTBrowser:AOTObjectsDevDoc + + + Allow + + Name + Type + TypeNameIdx + TypeNameIdx + No + + + + AutoReport + + + Name + + + Label + + + Type + + + + + AutoLookup + + + Name + + + Label + + + Type + + + + + AutoIdentification + Yes + + + Type + + + Name + + + + + AutoSummary + + + Name + + + Label + + + Type + + + + + AutoBrowse + + + Name + + + Label + + + Type + + + + + + + Name + No + TreeNodeName + Yes + + + Label + Description + + + Type + No + Yes + ARBAOTObjectType + + + + + + TypeNameIdx + Yes + + + Type + + + Name + + + + + + + + \ No newline at end of file diff --git a/Metadata/AOTBrowser/Descriptor/AOTBrowser.xml b/Metadata/AOTBrowser/Descriptor/AOTBrowser.xml new file mode 100644 index 0000000..8b6c966 --- /dev/null +++ b/Metadata/AOTBrowser/Descriptor/AOTBrowser.xml @@ -0,0 +1,26 @@ + + + + Allow + + AOTBrowser + 925963610 + + 8 + false + AOTBrowser + + + ApplicationFoundation + ApplicationPlatform + ApplicationSuite + GeneralLedger + + AOTBrowser + Arbela Technologies Corp. + 0 + 1 + 0 + 0 + \ No newline at end of file diff --git a/Projects/AOTBrowser/AOTBrowser.sln b/Projects/AOTBrowser/AOTBrowser.sln new file mode 100644 index 0000000..1ce2d9a --- /dev/null +++ b/Projects/AOTBrowser/AOTBrowser.sln @@ -0,0 +1,28 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 14 +VisualStudioVersion = 14.0.25420.1 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FC65038C-1B2F-41E1-A629-BED71D161FFF}") = "AOTBrowser (ISV) [AOTBrowser]", "AOTBrowser\AOTBrowser.rnrproj", "{C5965394-4359-4F9A-97D4-A609B58EDC8D}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Arbela.Dynamics.AX.Xpp.Support", "Arbela.Dynamics.AX.Xpp.Support\Arbela.Dynamics.AX.Xpp.Support.csproj", "{2F618DA7-59BC-4ABE-8F24-72D2D59F9AD4}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {C5965394-4359-4F9A-97D4-A609B58EDC8D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {C5965394-4359-4F9A-97D4-A609B58EDC8D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {C5965394-4359-4F9A-97D4-A609B58EDC8D}.Release|Any CPU.ActiveCfg = Debug|Any CPU + {C5965394-4359-4F9A-97D4-A609B58EDC8D}.Release|Any CPU.Build.0 = Debug|Any CPU + {2F618DA7-59BC-4ABE-8F24-72D2D59F9AD4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {2F618DA7-59BC-4ABE-8F24-72D2D59F9AD4}.Debug|Any CPU.Build.0 = Debug|Any CPU + {2F618DA7-59BC-4ABE-8F24-72D2D59F9AD4}.Release|Any CPU.ActiveCfg = Release|Any CPU + {2F618DA7-59BC-4ABE-8F24-72D2D59F9AD4}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/Projects/AOTBrowser/AOTBrowser/AOTBrowser.rnrproj b/Projects/AOTBrowser/AOTBrowser/AOTBrowser.rnrproj new file mode 100644 index 0000000..ab756e2 --- /dev/null +++ b/Projects/AOTBrowser/AOTBrowser/AOTBrowser.rnrproj @@ -0,0 +1,162 @@ + + + + Debug + AnyCPU + $(MSBuildProgramFiles32)\MSBuild\Microsoft\Dynamics\AX + AOTBrowser + v4.6 + bin + 2.0 + {c5965394-4359-4f9a-97d4-a609b58edc8d} + AOTBrowser + AOTBrowser + Class + + + Debug + False + False + + + initial + AnyCPU + False + False + + + true + false + + + + + + + + + + + + + + + + + + + Content + AOTBrowser.en-US.label.txt + AxLabelFile\AOTBrowser_en-US + + + Content + ARBAOTObjectPopulateController + Classes\ARBAOTObjectPopulateController + + + Content + ARBAOTObjectPopulateService + Classes\ARBAOTObjectPopulateService + + + Content + ARBDMFEntity_EventHandler + Classes\ARBDMFEntity_EventHandler + + + Content + ARBFormControlPersonalization_EventHandler + Classes\ARBFormControlPersonalization_EventHandler + + + Content + ARBAOTProperties + Extended Data Types\ARBAOTProperties + + + Content + ARBAOTPropertyValue + Extended Data Types\ARBAOTPropertyValue + + + Content + ARBAOTObjectType + Base Enums\ARBAOTObjectType + + + Content + DMFEntity.AOTBrowser + Form Extensions\DMFEntity.AOTBrowser + + + Content + FormControlPersonalization.AOTBrowser + Form Extensions\FormControlPersonalization.AOTBrowser + + + Content + ARBAOTBrowser + Forms\ARBAOTBrowser + + + Content + AOTBrowser_en-US + Label Files\AOTBrowser_en-US + + + Content + CommonMenu.AOTBrowser + Menu Extensions\CommonMenu.AOTBrowser + + + Content + ARBAOTObjectPopulate + Action Menu Items\ARBAOTObjectPopulate + + + Content + ARBAOTBrowser + Display Menu Items\ARBAOTBrowser + + + Content + ARBAOTBrowserMaintain + Security Duties\ARBAOTBrowserMaintain + + + Content + ARBAOTBrowserMaintain + Security Privileges\ARBAOTBrowserMaintain + + + Content + ARBAOTBrowserUser + Security Roles\ARBAOTBrowserUser + + + Content + ARBAOTObjectProperties + Tables\ARBAOTObjectProperties + + + Content + ARBAOTObjectPropertiesMatrix + Tables\ARBAOTObjectPropertiesMatrix + + + Content + ARBAOTObjects + Tables\ARBAOTObjects + + + + + Arbela.Dynamics.AX.Xpp.Support + {2f618da7-59bc-4abe-8f24-72d2d59f9ad4} + True + + + + + \ No newline at end of file diff --git a/Projects/AOTBrowser/Arbela.Dynamics.AX.Xpp.Support/Arbela.Dynamics.AX.Xpp.Support.csproj b/Projects/AOTBrowser/Arbela.Dynamics.AX.Xpp.Support/Arbela.Dynamics.AX.Xpp.Support.csproj new file mode 100644 index 0000000..5151ebf --- /dev/null +++ b/Projects/AOTBrowser/Arbela.Dynamics.AX.Xpp.Support/Arbela.Dynamics.AX.Xpp.Support.csproj @@ -0,0 +1,76 @@ + + + + + Debug + AnyCPU + {2F618DA7-59BC-4ABE-8F24-72D2D59F9AD4} + Library + Properties + Arbela.Dynamics.AX.Xpp.Support + Arbela.Dynamics.AX.Xpp.Support + v4.5.2 + 512 + SAK + SAK + SAK + SAK + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + C:\AosService\PackagesLocalDirectory\Bin\AOSKernel.dll + K:\AosService\PackagesLocalDirectory\Bin\AOSKernel.dll + False + + + C:\AosService\PackagesLocalDirectory\Bin\Microsoft.Dynamics.AX.Metadata.dll + K:\AosService\PackagesLocalDirectory\Bin\Microsoft.Dynamics.AX.Metadata.dll + False + + + C:\AOSService\PackagesLocalDirectory\Bin\Microsoft.Dynamics.AX.Metadata.Storage.dll + K:\AOSService\PackagesLocalDirectory\Bin\Microsoft.Dynamics.AX.Metadata.Storage.dll + + + C:\AosService\PackagesLocalDirectory\Bin\Microsoft.Dynamics.AX.Xpp.Support.dll + K:\AosService\PackagesLocalDirectory\Bin\Microsoft.Dynamics.AX.Xpp.Support.dll + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Projects/AOTBrowser/Arbela.Dynamics.AX.Xpp.Support/MetadataSupport.cs b/Projects/AOTBrowser/Arbela.Dynamics.AX.Xpp.Support/MetadataSupport.cs new file mode 100644 index 0000000..7096552 --- /dev/null +++ b/Projects/AOTBrowser/Arbela.Dynamics.AX.Xpp.Support/MetadataSupport.cs @@ -0,0 +1,200 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Microsoft.Dynamics.AX.Metadata.Kernel; +using Microsoft.Dynamics.AX.Metadata.MetaModel; +using System.Collections.Specialized; +using Microsoft.Dynamics.AX.Metadata.Storage; + +namespace Arbela.Dynamics.Ax.Xpp +{ + public static class MetadataSupport + { + public static IEnumerable GetViewExtensionsForView(string viewName) + { + return Accessor.GetViewExtensionsForView(viewName); + } + + public static IEnumerable GetEnumExtensionsForEnum(string enumName) + { + return Accessor.GetEnumExtensionForEnum(enumName); + } + + public static IEnumerable GetDataEntityViewExtensionsForDataEntityView(string dataEntityView) + { + return Accessor.GetDataEntityViewExtensionsForDataEntityView(dataEntityView); + } + + public static IEnumerable GetEdtExtensionsForEdt(string edt) + { + var extensionLoader = new EdtExtensionLoader(Accessor.MetadataProvider); + return extensionLoader.GetExtensionsForBaseObject(edt); + } + + public static IEnumerable GetQueryExtensionsForQuery(string query) + { + var extensionLoader = new QuerySimpleExtensionLoader(Accessor.MetadataProvider); + return extensionLoader.GetExtensionsForBaseObject(query); + } + + public static IEnumerable GetMenuItemDisplayExtensionsForMenuItemDisplay(string menuItemDisplay) + { + var extensionLoader = new MenuItemDisplayExtensionLoader(Accessor.MetadataProvider); + return extensionLoader.GetExtensionsForBaseObject(menuItemDisplay); + } + + public static IEnumerable GetMenuItemActionExtensionsForMenuItemAction(string menuItemAction) + { + var extensionLoader = new MenuItemActionExtensionLoader(Accessor.MetadataProvider); + return extensionLoader.GetExtensionsForBaseObject(menuItemAction); + } + + public static IEnumerable GetMenuItemOutputExtensionsForMenuItemOutput(string menuItemOutput) + { + var extensionLoader = new MenuItemOutputExtensionLoader(Accessor.MetadataProvider); + return extensionLoader.GetExtensionsForBaseObject(menuItemOutput); + } + + public static IEnumerable GetFormExtensionsForForm(string form) + { + IList formExtensionNames = Accessor.GetFormExtensionNames(form); + List formExtensions = new List(); + foreach(var formExtensionName in formExtensionNames) + { + formExtensions.Add(Accessor.GetFormExtension(formExtensionName)); + } + + return formExtensions; + } + + public static IEnumerator MenuNames() + { + return Accessor.GetMenuNames().GetEnumerator(); + } + + public static IEnumerable GetMenuExtensionsForMenu(string menu) + { + IList menuExtensionNames = Accessor.GetMenuExtensionNames(menu); + List menuExtensions = new List(); + foreach (var menuExtensionName in menuExtensionNames) + { + menuExtensions.Add(Accessor.GetMenuExtension(menuExtensionName)); + } + + return menuExtensions; + } + + public static IEnumerator TileNames() + { + return Accessor.GetTileNames().GetEnumerator(); + } + + public static IEnumerator TableCollectionNames() + { + return Accessor.GetTableCollectionNames().GetEnumerator(); + } + + public static AxTableCollection GetTableCollection(string tableCollection) + { + return Accessor.GetTableCollection(tableCollection); + } + + public static IEnumerator CompositeDataEntityNames() + { + return Accessor.GetCompositeEntityViewNames().GetEnumerator(); + } + + public static AxCompositeDataEntityView GetCompositeDataEntity(string compositeDataEntity) + { + return Accessor.GetCompositeDataEntityView(compositeDataEntity); + } + + public static IEnumerator SecurityDutyNames() + { + return Accessor.GetSecurityDutyNames().GetEnumerator(); + } + + public static IEnumerator SecurityPrivilegeNames() + { + return Accessor.GetSecurityPrivilegeNames().GetEnumerator(); + } + + public static AxSecurityDuty GetSecurityDuty(string securityDuty) + { + return Accessor.GetSecurityDuty(securityDuty); + } + + public static AxSecurityPrivilege GetSecurityPrivilege(string securityPrivilege) + { + return Accessor.GetSecurityPrivilege(securityPrivilege); + } + + public static IEnumerable GetSecurityDutyExtensionsForSecurityDuty(string securityDuty) + { + return Accessor.GetSecurityDutyExtensionForSecurityDuty(securityDuty); + } + + public static IEnumerable GetSecurityRoleExtensionsForSecurityRole(string securityrole) + { + return Accessor.GetSecurityRoleExtensionForSecurityRole(securityrole); + } + + public static IEnumerator AggregateDataEntityNames() + { + return Accessor.GetAggregateDataEntityNames().GetEnumerator(); + } + + public static IEnumerable GetWorkflowApprovalExtensionsForWorkflowApproval(string workflowApproval) + { + IList extensionNames = Accessor.GetWorkflowApprovalExtensionNames(workflowApproval); + List extensions = new List(); + foreach (var extensionName in extensionNames) + { + extensions.Add(Accessor.GetWorkflowApprovalExtension(extensionName)); + } + + return extensions; + } + + public static IEnumerable GetWorkflowTaskExtensionsForWorkflowTask(string workflowTask) + { + IList extensionNames = Accessor.GetWorkflowTaskExtensionNames(workflowTask); + List extensions = new List(); + foreach (var extensionName in extensionNames) + { + extensions.Add(Accessor.GetWorkflowTaskExtension(extensionName)); + } + + return extensions; + } + + public static IEnumerable GetWorkflowTemplateExtensionsForWorkflowTemplate(string workflowTemplate) + { + IList extensionNames = Accessor.GetWorkflowTemplateExtensionNames(workflowTemplate); + List extensions = new List(); + foreach (var extensionName in extensionNames) + { + extensions.Add(Accessor.GetWorkflowTemplateExtension(extensionName)); + } + + return extensions; + } + + public static AxService GetService(string service) + { + return Accessor.GetService(service); + } + + public static AxServiceGroup GetServiceGroup(string serviceGroup) + { + return Accessor.GetServiceGroup(serviceGroup); + } + + public static IEnumerator ServiceGroupNames() + { + return Accessor.GetServiceGroupNames().GetEnumerator(); + } + } +} diff --git a/Projects/AOTBrowser/Arbela.Dynamics.AX.Xpp.Support/Properties/AssemblyInfo.cs b/Projects/AOTBrowser/Arbela.Dynamics.AX.Xpp.Support/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..ca02b1c --- /dev/null +++ b/Projects/AOTBrowser/Arbela.Dynamics.AX.Xpp.Support/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("Arbela.Dynamics.AX.Xpp.Support")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("Arbela.Dynamics.AX.Xpp.Support")] +[assembly: AssemblyCopyright("Copyright © 2019")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("2f618da7-59bc-4abe-8f24-72d2d59f9ad4")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/Scripts/Mount.ps1 b/Scripts/Mount.ps1 new file mode 100644 index 0000000..7cc6550 --- /dev/null +++ b/Scripts/Mount.ps1 @@ -0,0 +1,53 @@ +if (Test-Path -Path K:\AosService) +{ + $LocalDeploymentFolder = "K:\AosService" +} +elseif (Test-Path -Path C:\AosService) +{ + $LocalDeploymentFolder = "C:\AosService" +} +elseif (Test-Path -Path E:\AosService) +{ + $LocalDeploymentFolder = "E:\AosService" +} +else +{ + throw "Cannot find the AOSService folder in any known location" +} +Write-Host "using $LocalDeploymentFolder as the deployment folder" + +$LocalPackagesFolder = Join-Path $LocalDeploymentFolder "PackagesLocalDirectory" + +# Get the list of models to junction +$ModelsToJunction = Get-ChildItem "..\Metadata\" +Write-Host "Enabling editing of the following models:" $ModelsToJunction + +foreach ($Model in $ModelsToJunction) +{ + $LocalModelPath = Join-Path $LocalPackagesFolder $Model + $RepoPath = Join-Path "..\Metadata" $Model + + if (!(Test-Path $LocalModelPath -PathType Container)) + { + Write-Host "Creating model folder: " $LocalModelPath + New-Item -ItemType Directory -Force -Path $LocalModelPath + } + + $RepoSubfolders = Get-ChildItem $RepoPath + foreach ($RepoSubfolder in $RepoSubfolders) + { + $LocalSubfolderPath = Join-Path $LocalModelPath $RepoSubfolder + $RepoSubfolderPath = Join-Path $RepoPath $RepoSubfolder + + if (Test-Path $RepoSubfolderPath -PathType Container) + { + # Use CMD and rmdir since Powershell Remove-Item tries to recurse subfolders + Write-Host "Removing existing $($Model)\$($RepoSubfolder) source code" + cmd /c rmdir /s /q $LocalSubfolderPath + + # Create new symbolic links + Write-Host "Creating new symbolic link for $($Model)\$($RepoSubfolder)" + New-Item -ItemType:SymbolicLink -Path:$LocalSubfolderPath -Value:$RepoSubfolderPath + } + } +} \ No newline at end of file