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))); } } } }