private static AxFormGroupControl GetFilterGroup(string filterGroup = "FilterGroup",
                                                         string quickFilter = "QuickFilter")
        {
            var filterGrp = new AxFormGroupControl
            {
                Name    = filterGroup,
                Pattern = "CustomAndQuickFilters"
            };

            filterGrp.AddControl(new AxFormControl
            {
                Name = quickFilter,
                FormControlExtension = new AxFormControlExtension {
                    Name = "QuickFilterControl"
                }
            });
            return(filterGrp);
        }
Ejemplo n.º 2
0
        void DoFormCreate()
        {
            AxForm newForm = _axHelper.MetadataProvider.Forms.Read(FormName);

            if (newForm != null)
            {
                return;
            }

            newForm = new AxForm {
                Name = FormName
            };

            AxMethod axMethod = new AxMethod();

            axMethod.Name   = "classDeclaration";
            axMethod.Source = $"[Form]{Environment.NewLine}public class {newForm.Name} extends FormRun " +
                              Environment.NewLine + "{" + Environment.NewLine + "}";
            newForm.AddMethod(axMethod);

            string dsName = TableName;

            AxFormDataSourceRoot axFormDataSource = new AxFormDataSourceRoot();

            axFormDataSource.Name          = dsName;
            axFormDataSource.Table         = TableName;
            axFormDataSource.InsertIfEmpty = NoYes.No;
            newForm.AddDataSource(axFormDataSource);

            //newForm.Design.Pattern = "SimpleList"; add apply pattern
            //newForm.Design.PatternVersion = "1.1";
            newForm.Design.Caption         = FormLabel;
            newForm.Design.TitleDataSource = dsName;
            newForm.Design.DataSource      = dsName;

            newForm.Design.AddControl(new AxFormActionPaneControl {
                Name = "MainActionPane"
            });

            var filterGrp = new AxFormGroupControl {
                Name = "FilterGroup", Pattern = "CustomAndQuickFilters", PatternVersion = "1.1"
            };

            AxFormControlExtension quickFilterControl = new AxFormControlExtension {
                Name = "QuickFilterControl"
            };
            AxFormControlExtensionProperty formControlExtensionProperty = new AxFormControlExtensionProperty();

            formControlExtensionProperty.Name  = "targetControlName";
            formControlExtensionProperty.Type  = CompilerBaseType.String;
            formControlExtensionProperty.Value = "MainGrid";
            quickFilterControl.ExtensionProperties.Add(formControlExtensionProperty);

            filterGrp.AddControl(new AxFormControl {
                Name = "QuickFilter", FormControlExtension = quickFilterControl
            });
            newForm.Design.AddControl(filterGrp);
            AxFormGridControl axFormGridControl = new AxFormGridControl {
                Name = "MainGrid", DataSource = dsName
            };

            AxFormGroupControl overviewGroupControl = new AxFormGroupControl
            {
                Name = "Overview", DataGroup = "Overview", DataSource = dsName
            };

            axFormGridControl.AddControl(overviewGroupControl);
            newForm.Design.AddControl(axFormGridControl);

            _axHelper.MetaModelService.CreateForm(newForm, _axHelper.ModelSaveInfo);
            _axHelper.AppendToActiveProject(newForm);

            AddLog($"Form: {newForm.Name}; ");
        }
Ejemplo n.º 3
0
        void DoFormCreate()
        {
            AxForm newForm = _axHelper.MetadataProvider.Forms.Read(FormName);

            if (newForm != null)
            {
                throw new Exception($"Form {FormName} already exists");
            }

            newForm = new AxForm {
                Name = FormName
            };

            AxMethod axMethod = new AxMethod();

            axMethod.Name   = "classDeclaration";
            axMethod.Source = $"[Form]{Environment.NewLine}public class {newForm.Name} extends FormRun " +
                              Environment.NewLine + "{" + Environment.NewLine + "}";
            newForm.AddMethod(axMethod);

            string dsName = TableName;

            AxFormDataSourceRoot axFormDataSource = new AxFormDataSourceRoot();

            axFormDataSource.Name          = dsName;
            axFormDataSource.Table         = TableName;
            axFormDataSource.InsertIfEmpty = NoYes.No;
            newForm.AddDataSource(axFormDataSource);
            newForm.Design.Caption         = FormLabel;
            newForm.Design.TitleDataSource = dsName;
            newForm.Design.DataSource      = dsName;

            AxFormGroupControl             filterGrp, detailsHeaderGroup;
            AxFormGridControl              axFormGridControl;
            AxFormControlExtension         quickFilterControl;
            AxFormControlExtensionProperty formControlExtensionProperty;
            AxFormGroupControl             overviewGroupControl;
            AxFormTabControl formTabControl;

            switch (TemplateType)
            {
            case FormTemplateType.SimpleList:
                newForm.Design.AddControl(new AxFormActionPaneControl {
                    Name = "MainActionPane"
                });

                filterGrp = new AxFormGroupControl {
                    Name = "FilterGroup", Pattern = "CustomAndQuickFilters", PatternVersion = "1.1"
                };

                quickFilterControl = new AxFormControlExtension {
                    Name = "QuickFilterControl"
                };
                formControlExtensionProperty = new AxFormControlExtensionProperty();

                formControlExtensionProperty.Name  = "targetControlName";
                formControlExtensionProperty.Type  = CompilerBaseType.String;
                formControlExtensionProperty.Value = "MainGrid";
                quickFilterControl.ExtensionProperties.Add(formControlExtensionProperty);

                filterGrp.AddControl(new AxFormControl {
                    Name = "QuickFilter", FormControlExtension = quickFilterControl
                });
                newForm.Design.AddControl(filterGrp);
                axFormGridControl = new AxFormGridControl {
                    Name = "MainGrid", DataSource = dsName
                };

                overviewGroupControl = new AxFormGroupControl
                {
                    Name       = GroupNameGrid,
                    DataGroup  = GroupNameGrid,
                    DataSource = dsName
                };
                axFormGridControl.AddControl(overviewGroupControl);
                newForm.Design.AddControl(axFormGridControl);
                break;

            case FormTemplateType.SimpleListDetails:
                newForm.Design.AddControl(new AxFormActionPaneControl {
                    Name = "MainActionPane"
                });
                filterGrp = new AxFormGroupControl {
                    Name = "NavigationListGroup"
                };

                quickFilterControl = new AxFormControlExtension {
                    Name = "QuickFilterControl"
                };
                formControlExtensionProperty       = new AxFormControlExtensionProperty();
                formControlExtensionProperty.Name  = "targetControlName";
                formControlExtensionProperty.Type  = CompilerBaseType.String;
                formControlExtensionProperty.Value = "MainGrid";
                quickFilterControl.ExtensionProperties.Add(formControlExtensionProperty);

                filterGrp.AddControl(new AxFormControl {
                    Name = "NavListQuickFilter", FormControlExtension = quickFilterControl
                });
                axFormGridControl = new AxFormGridControl {
                    Name = "MainGrid", DataSource = dsName
                };

                if (!string.IsNullOrWhiteSpace(GroupNameGrid))
                {
                    overviewGroupControl = new AxFormGroupControl
                    {
                        Name       = GroupNameGrid,
                        DataGroup  = GroupNameGrid,
                        DataSource = dsName
                    };
                    axFormGridControl.AddControl(overviewGroupControl);
                }

                filterGrp.AddControl(axFormGridControl);
                newForm.Design.AddControl(filterGrp);

                detailsHeaderGroup = new AxFormGroupControl {
                    Name = "DetailsHeaderGroup"
                };
                detailsHeaderGroup.DataSource = dsName;
                detailsHeaderGroup.DataGroup  = GroupNameHeader;

                newForm.Design.AddControl(detailsHeaderGroup);

                formTabControl = new AxFormTabControl {
                    Name = "DetailsTab"
                };

                List <string> listImp = new List <string>(
                    TabLabels.Split(new[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries));
                foreach (string lineImp in listImp)
                {
                    string tabName = AxHelper.GetTypeNameFromLabel(lineImp) + "TabPage";
                    formTabControl.AddControl(new AxFormTabPageControl {
                        Name = tabName, Caption = lineImp, DataSource = dsName
                    });
                }

                newForm.Design.AddControl(formTabControl);

                break;
            }

            _axHelper.MetaModelService.CreateForm(newForm, _axHelper.ModelSaveInfo);
            _axHelper.AppendToActiveProject(newForm);

            AddLog($"Form: {newForm.Name} - Restore it before use;");
        }
        /// <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
            {
                var metaModelProviders = CoreUtility.ServiceProvider.GetService(typeof(IMetaModelProviders)) as IMetaModelProviders;
                var metaModelService   = metaModelProviders.CurrentMetaModelService;



                var form   = (IForm)e.SelectedElement;
                var axForm = (AxForm)form.GetMetadataType();


                switch (axForm.Design.Pattern)
                {
                case "SimpleList":
                case "ListPage":

                    axForm.Design.AddControl(new AxFormActionPaneControl {
                        Name = "MainActionPane"
                    });
                    axForm.Design.AddControl(GetFilterGroup());
                    axForm.Design.AddControl(new AxFormGridControl {
                        Name = "MainGrid"
                    });

                    break;


                case "DetailsMaster":

                    //<Main>
                    axForm.Design.AddControl(new AxFormActionPaneControl {
                        Name = "MainActionPane"
                    });
                    var myNavigationListGroup = new AxFormGroupControl {
                        Name = "NavigationListGroup"
                    };

                    // <NavigationListGroup>
                    myNavigationListGroup.AddControl(new AxFormControl
                    {
                        Name = "NavListQuickFilter",
                        FormControlExtension = new AxFormControlExtension {
                            Name = "QuickFilterControl"
                        }
                    });

                    myNavigationListGroup.AddControl(new AxFormGridControl {
                        Name = "MainGrid"
                    });
                    // </NavigationListGroup>

                    axForm.Design.AddControl(myNavigationListGroup);
                    var myPanelTab = new AxFormTabControl {
                        Name = "PanelTab"
                    };


                    var gridPanel = new AxFormTabPageControl {
                        Name = "GridPanel"
                    };
                    gridPanel.AddControl(GetFilterGroup("DetailsFilterGroup", "DetailsQuickFilter"));
                    gridPanel.AddControl(new AxFormGridControl {
                        Name = "DetailsGrid"
                    });
                    gridPanel.AddControl(new AxFormCommandButtonControl {
                        Name = "DetailsButtonCommand"
                    });

                    var detailsPanel = new AxFormTabPageControl {
                        Name = "DetailsPanel"
                    };

                    var titleGroup = new AxFormGroupControl {
                        Name = "TitleGroup"
                    };
                    titleGroup.AddControl(new AxFormStringControl {
                        Name = "HeaderTitle"
                    });

                    detailsPanel.AddControl(titleGroup);

                    var detailsPanelTab = new AxFormTabControl {
                        Name = "DetailsTab"
                    };
                    detailsPanelTab.AddControl(new AxFormTabPageControl {
                        Name = "DetailsTabPage"
                    });
                    detailsPanel.AddControl(detailsPanelTab);

                    myPanelTab.AddControl(detailsPanel);
                    myPanelTab.AddControl(gridPanel);
                    axForm.Design.AddControl(myPanelTab);
                    //</Main>

                    break;

                case "SimpleListDetails":
                    //<Main>
                    axForm.Design.AddControl(new AxFormActionPaneControl {
                        Name = "MainActionPane"
                    });
                    var myNavigationListGroup1 = new AxFormGroupControl {
                        Name = "NavigationListGroup"
                    };

                    // <NavigationListGroup>
                    myNavigationListGroup1.AddControl(new AxFormControl
                    {
                        Name = "NavListQuickFilter",
                        FormControlExtension = new AxFormControlExtension {
                            Name = "QuickFilterControl"
                        }
                    });
                    myNavigationListGroup1.AddControl(new AxFormGridControl {
                        Name = "MainGrid"
                    });
                    // </NavigationListGroup>

                    axForm.Design.AddControl(myNavigationListGroup1);

                    var detailsHeader = new AxFormGroupControl {
                        Name = "DetailsHeaderGroup"
                    };
                    axForm.Design.AddControl(detailsHeader);

                    var myPanelTab1 = new AxFormTabControl {
                        Name = "DetailsTab"
                    };

                    myPanelTab1.AddControl(new AxFormTabPageControl {
                        Name = "DetailsTabPage"
                    });
                    axForm.Design.AddControl(myPanelTab1);

                    //</Main>

                    break;
                }


                var model =
                    DesignMetaModelService.Instance.CurrentMetadataProvider.Forms.GetModelInfo(axForm.Name)
                    .FirstOrDefault();


                metaModelService.UpdateForm(axForm, new ModelSaveInfo(model));
            }

            catch (Exception ex)
            {
                CoreUtility.HandleExceptionWithErrorMessage(ex);
            }
        }