예제 #1
0
        private void ValidateSave(object sender, ConditionalEventArgs e)
        {
            e.Result = true;
            var package = this.GetBinding <PackageInformation>("Package");
            var maxCompositeVersionSupported = this.GetBinding <string>("MaxCompositeVersionSupported");
            var minCompositeVersionSupported = this.GetBinding <string>("MinCompositeVersionSupported");

            try
            {
                package.MaxCompositeVersionSupported = new Version(maxCompositeVersionSupported);
            }
            catch
            {
                this.ShowFieldMessage("MaxCompositeVersionSupported", PackageCreatorFacade.GetLocalization("Error.WrongVersion"));
                e.Result = false;
            }

            try
            {
                package.MinCompositeVersionSupported = new Version(minCompositeVersionSupported);
            }
            catch
            {
                this.ShowFieldMessage("MinCompositeVersionSupported", PackageCreatorFacade.GetLocalization("Error.WrongVersion"));
                e.Result = false;
            }

            if (string.IsNullOrEmpty(package.Description))
            {
                this.ShowFieldMessage("Package.Description", PackageCreatorFacade.GetLocalization("Required"));
                e.Result = false;
            }

            if (string.IsNullOrEmpty(package.TechnicalDetails))
            {
                this.ShowFieldMessage("Package.TechnicalDetails", PackageCreatorFacade.GetLocalization("Required"));
                e.Result = false;
            }

            if (this.EntityToken.Source != package.Name && PackageCreatorFacade.GetPackageNames().Contains(package.Name.Trim()))
            {
                this.ShowFieldMessage("Package.Name", PackageCreatorFacade.GetLocalization("Error.PackageAlreadyExist"));
                e.Result = false;
            }
            this.UpdateBinding("Package", package);
        }
        public IEnumerable <Element> GetChildren(EntityToken entityToken, SearchToken seachToken)
        {
            if (entityToken is PackageCreatorElementProviderEntityToken)
            {
                IEnumerable <string> packages = PackageCreatorFacade.GetPackageNames();
                foreach (var package in packages)
                {
                    bool isActivePackage = PackageCreatorFacade.ActivePackageName == package;

                    var icon    = isActivePackage ? (new ResourceHandle("Composite.Icons", "inbox-green")) : new ResourceHandle("Composite.Icons", "inbox");
                    var element = new Element(_context.CreateElementHandle(new PackageCreatorPackageElementProviderEntityToken(package)))
                    {
                        VisualData = new ElementVisualizedData()
                        {
                            Label       = package,
                            ToolTip     = package,
                            HasChildren = true,
                            Icon        = icon,
                            OpenedIcon  = icon
                        }
                    };

                    element.AddAction(new ElementAction(new ActionHandle(new WorkflowActionToken(typeof(EditPackageWorkflow), new[] { PermissionType.Administrate })))
                    {
                        VisualData = new ActionVisualizedData
                        {
                            Label          = PackageCreatorFacade.GetLocalization("EditPackage.Label"),
                            ToolTip        = PackageCreatorFacade.GetLocalization("EditPackage.ToolTip"),
                            Icon           = new ResourceHandle("Composite.Icons", "page-edit-page"),
                            ActionLocation = new ActionLocation
                            {
                                ActionType  = ActionType.Other,
                                IsInFolder  = false,
                                IsInToolbar = true,
                                ActionGroup = new ActionGroup("Develop", ActionGroupPriority.PrimaryLow)
                            }
                        }
                    });

                    if (!isActivePackage)
                    {
                        element.AddAction(new ElementAction(new ActionHandle(new SetActivePackageActionToken()))
                        {
                            VisualData = new ActionVisualizedData
                            {
                                Label          = PackageCreatorFacade.GetLocalization("SetActivePackage.Label"),
                                ToolTip        = PackageCreatorFacade.GetLocalization("SetActivePackage.ToolTip"),
                                Icon           = new ResourceHandle("Composite.Icons", "accept"),
                                ActionLocation = new ActionLocation
                                {
                                    ActionType  = ActionType.Other,
                                    IsInFolder  = false,
                                    IsInToolbar = true,
                                    ActionGroup = new ActionGroup("Develop", ActionGroupPriority.PrimaryLow)
                                }
                            }
                        });
                    }

                    element.AddAction(new ElementAction(new ActionHandle(new ConfirmWorkflowActionToken("Are you sure?", typeof(DeleteConfigPackageCreatorActionToken))))
                    {
                        VisualData = new ActionVisualizedData
                        {
                            Label          = PackageCreatorFacade.GetLocalization("DeleteConfigPackageCreator.Label"),
                            ToolTip        = PackageCreatorFacade.GetLocalization("DeleteConfigPackageCreator.ToolTip"),
                            Icon           = new ResourceHandle("Composite.Icons", "generated-type-delete"),
                            ActionLocation = new ActionLocation
                            {
                                ActionType  = PackageCreatorFacade.ActionType,
                                IsInFolder  = false,
                                IsInToolbar = false,
                                ActionGroup = new ActionGroup("Other", ActionGroupPriority.PrimaryLow)
                            }
                        }
                    });

                    element.AddAction(new ElementAction(new ActionHandle(new DownloadPackageActionToken("package")))
                    {
                        VisualData = new ActionVisualizedData
                        {
                            Label          = PackageCreatorFacade.GetLocalization("DownloadPackageButton.Label"),
                            ToolTip        = PackageCreatorFacade.GetLocalization("DownloadPackageButton.ToolTip"),
                            Icon           = new ResourceHandle("Composite.Icons", "package-install-local-package"),
                            ActionLocation = new ActionLocation
                            {
                                ActionType  = PackageCreatorFacade.ActionType,
                                IsInFolder  = false,
                                IsInToolbar = true,
                                ActionGroup = new ActionGroup("Download", ActionGroupPriority.PrimaryLow)
                            }
                        }
                    });

                    element.AddAction(new ElementAction(new ActionHandle(new DownloadPackageActionToken("config")))
                    {
                        VisualData = new ActionVisualizedData
                        {
                            Label          = PackageCreatorFacade.GetLocalization("DownloadConfigButton.Label"),
                            ToolTip        = PackageCreatorFacade.GetLocalization("DownloadConfigButton.ToolTip"),
                            Icon           = new ResourceHandle("Composite.Icons", "package-install-local-package"),
                            ActionLocation = new ActionLocation
                            {
                                ActionType  = PackageCreatorFacade.ActionType,
                                IsInFolder  = false,
                                IsInToolbar = false,
                                ActionGroup = new ActionGroup("Download", ActionGroupPriority.PrimaryLow)
                            }
                        }
                    });

                    yield return(element);
                }
            }
            else if (entityToken is PackageCreatorPackageElementProviderEntityToken)
            {
                var categories = PackageCreatorFacade.GetCategories(entityToken.Source);
                foreach (var category in categories)
                {
                    var element = new Element(_context.CreateElementHandle(new PackageCreatorCategoryElementProviderEntityToken(entityToken.Source, category.Name)))
                    {
                        VisualData = new ElementVisualizedData()
                        {
                            Label       = category.GetLabel(),
                            ToolTip     = category.GetLabel(),
                            HasChildren = true,
                            Icon        = new ResourceHandle("Composite.Icons", "folder"),
                            OpenedIcon  = new ResourceHandle("Composite.Icons", "folder-open")
                        }
                    };
                    yield return(element);
                }
            }
            else if (entityToken is PackageCreatorCategoryElementProviderEntityToken)
            {
                var items = PackageCreatorFacade.GetItems(entityToken.Type, entityToken.Source);
                foreach (var item in items.OrderBy(d => d.Id))
                {
                    var element = new Element(_context.CreateElementHandle(new PackageCreatorItemElementProviderEntityToken(item.Id, entityToken.Source, entityToken.Type)))
                    {
                        VisualData = new ElementVisualizedData()
                        {
                            Label       = item.GetLabel(),
                            ToolTip     = item.Id,
                            HasChildren = false,
                            Icon        = item.ItemIcon,
                            OpenedIcon  = item.ItemIcon
                        }
                    };

                    element.AddAction(new ElementAction(new ActionHandle(new DeleteItemPackageCreatorActionToken()))
                    {
                        VisualData = new ActionVisualizedData
                        {
                            Label          = PackageCreatorFacade.GetLocalization("DeleteItemPackageCreator.Label"),
                            ToolTip        = PackageCreatorFacade.GetLocalization("DeleteItemPackageCreator.ToolTip"),
                            Icon           = new ResourceHandle("Composite.Icons", "page-delete-page"),
                            ActionLocation = new ActionLocation
                            {
                                ActionType  = ActionType.Other,
                                IsInFolder  = false,
                                IsInToolbar = true,
                                ActionGroup = new ActionGroup("Develop", ActionGroupPriority.PrimaryLow)
                            }
                        }
                    });

                    yield return(element);
                }
            }
            else if (entityToken is XmlNodeElementProviderEntityToken)
            {
                var        configuration = PackageCreatorFacade.GetConfigurationDocument(entityToken.Source);
                var        xpath         = (entityToken as XmlNodeElementProviderEntityToken).XPath;
                XContainer container     = xpath == string.Empty ? configuration as XContainer : configuration.XPathSelectElement(xpath) as XContainer;
                var        element       = container as XElement;
                var        counter       = new Dictionary <string, int>();


                if (container != null)
                {
                    var xmlElements = new List <Element>();
                    foreach (XElement item in container.Elements())
                    {
                        string position = string.Empty;
                        string name     = item.Name.ToString();
                        if (counter.ContainsKey(name))
                        {
                            position = string.Format("[{0}]", ++counter[name]);
                        }
                        else
                        {
                            counter.Add(name, 1);
                        }
                        if (item.Attribute("name") != null)
                        {
                            position = string.Format("[@name='{0}']", item.Attribute("name").Value);
                        }

                        string description = item.IndexAttributeValue();

                        xmlElements.Add(GetXmlNodeElement(entityToken.Source, string.Format("{0}/{1}{2}", xpath, name, position), name + (string.IsNullOrEmpty(description) ? string.Empty : string.Format("({0})", description))));
                    }

                    xmlElements.Sort((a, b) => string.Compare(a.VisualData.Label,
                                                              b.VisualData.Label,
                                                              StringComparison.InvariantCulture));

                    foreach (var e in xmlElements)
                    {
                        yield return(e);
                    }
                }

                if (element != null)
                {
                    var elementPath = Regex.Replace(xpath, @"\[[^\]]*\]$", "");
                    foreach (var attribute in element.Attributes())
                    {
                        string name = attribute.Name.ToString();
                        yield return(GetXmlAttributeElement(entityToken.Source, string.Format("{0}[@{1}='{2}']", elementPath, name, attribute.Value), string.Format("{0}={1}", name, attribute.Value)));
                    }
                }
            }
        }