public static DialogResult Run(BaseLibraryLink link, LinkSettingsType settingsType)
		{
			var dilogResult = DialogResult.Cancel;
			link.PerformTransaction(link.ParentLibrary.Context,
				linkCopy =>
				{
					var editForm = ObjectIntendHelper.GetObjectInstances(typeof(ILinkSettingsEditForm), null, linkCopy)
						.OfType<ILinkSettingsEditForm>()
						.FirstOrDefault(form => form.EditableSettings.Any(st => st == settingsType));
					if (editForm != null)
					{
						editForm.InitForm<ILinkSettingsEditControl>(settingsType);
						dilogResult = ((Form)editForm).ShowDialog(MainController.Instance.MainForm);
						((Form)editForm).Dispose();
						if (dilogResult == DialogResult.OK)
							linkCopy.MarkAsModified();
						return dilogResult == DialogResult.OK;
					}
					return dilogResult == DialogResult.Cancel;
				},
				copyMethod => MainController.Instance.ProcessManager.Run("Preparing Data...", cancelationToken => copyMethod()),
				(context, original, current) => MainController.Instance.ProcessManager.Run("Saving Changes...",
					cancelationToken =>
					{
						original.Save(context, current, false);
					}));
			return dilogResult;
		}
		private void ProcessLinkOptions(LinkSettingsType settingsType)
		{
			var selectedFiles = advBandedGridView
				.GetSelectedRows()
				.Select(i => advBandedGridView.GetRow(i))
				.OfType<LibraryFileLink>()
				.ToList();
			var targetFile = selectedFiles.Any() ?
				selectedFiles.FirstOrDefault() :
				advBandedGridView.GetFocusedRow() as LibraryFileLink;
			if (targetFile == null) return;
			SettingsEditorFactory.RunEmbedded(targetFile, _data, settingsType);
		}
		public static DialogResult Run(IList<BaseLibraryLink> links, LinkSettingsType settingsType, bool useTransaktion = true)
		{
			var dilogResult = DialogResult.Cancel;
			if (!links.Any())
				return dilogResult;
			if (useTransaktion)
				links.PerformTransaction(links.First().ParentLibrary.Context,
				copiedLinks =>
				{
					var editForm = ObjectIntendHelper.GetObjectInstances(typeof(ILinkSetSettingsEditForm), null, copiedLinks)
						.OfType<ILinkSettingsEditForm>()
						.FirstOrDefault(form => form.EditableSettings.Any(st => st == settingsType));
					if (editForm != null)
					{
						editForm.InitForm<ILinkSetSettingsEditControl>(settingsType);
						dilogResult = ((Form)editForm).ShowDialog(MainController.Instance.MainForm);
						((Form)editForm).Dispose();
						if (dilogResult == DialogResult.OK)
							foreach (var copiedLink in copiedLinks)
								copiedLink.MarkAsModified();
						return dilogResult == DialogResult.OK;
					}
					return dilogResult == DialogResult.Cancel;
				},
				copyMethod => MainController.Instance.ProcessManager.Run("Preparing Data...", cancelationToken => copyMethod()),
				(context, originalList, currentList) => MainController.Instance.ProcessManager.Run("Saving Changes...",
					cancelationToken =>
					{
						foreach (var originalLink in originalList)
						{
							var currentLink = currentList.First(e => e.Id == originalLink.Id);
							originalLink.Save(context, currentLink, false);
						}
					}));
			else
			{
				var editForm = ObjectIntendHelper.GetObjectInstances(typeof(ILinkSetSettingsEditForm), null, links)
						.OfType<ILinkSettingsEditForm>()
						.FirstOrDefault(form => form.EditableSettings.Any(st => st == settingsType));
				if (editForm != null)
				{
					editForm.InitForm<ILinkSetSettingsEditControl>(settingsType);
					dilogResult = ((Form)editForm).ShowDialog(MainController.Instance.MainForm);
					((Form)editForm).Dispose();
					if (dilogResult == DialogResult.OK)
						foreach (var copiedLink in links)
							copiedLink.MarkAsModified();
				}
			}
			return dilogResult;
		}
Example #4
0
        private ILinkSettingBuilder <TResource> AddLinkSetting(LinkSettingsType type, string name, string urlTemplate)
        {
            Ensure.IsSet(urlTemplate, $"Url template must be set for the '{type.ToString()}' link with name '{name}' for resource '{typeof(TResource).Name}'");

            if (!urlTemplate.IsValidTemplateUrl())
            {
                throw new JsonCrafterException($"The entered url '{urlTemplate}' (for template with name '{name}') is not a valid url.");
            }

            var link = new LinkSettingBuilder <TResource>(_parent, this, type, name, urlTemplate);

            Settings.Add(link);
            return(link);
        }
		public void ProcessUniverslaLinkSettings(
			LinkSettingsType settingsType,
			LibraryFileLink templateLink,
			bool useUniversalSettings)
		{
			if (!useUniversalSettings)
			{
				SettingsTemplates.RemoveAll(st => st.SettingsType == settingsType && st.FileType == templateLink.Type);
				return;
			}

			if (!SettingsTemplates.Any(st => st.SettingsType == settingsType && st.FileType == templateLink.Type))
				SettingsTemplates.Add(LinkFileSettingsTemplate.Create(settingsType, templateLink.Type));

			foreach (var targetLink in ParentFolder.AllLinks.Where(l => l.Type == templateLink.Type && l != templateLink).ToList())
				ApplyUniversalLinkSettings(settingsType, targetLink, templateLink);
		}
		public void InitForm(LinkSettingsType settingsType)
		{
			Width = 680;
			Height = 400;
			Text = _sourceLink.ToString();
			StartPosition = FormStartPosition.CenterScreen;

			var folderSettings = (LibraryFolderLinkSettings)_parentFolderLink.Settings;
			checkEditApplyForAll.Checked = folderSettings.SettingsTemplates
				.Any(st => st.SettingsType == settingsType && st.FileType == _sourceLink.Type);
			
			AddOptionPages(
				ObjectIntendHelper.GetObjectInstances(
					typeof(ILinkSettingsEditControl),
					EntitySettingsResolver.ExtractObjectTypeFromProxy(_sourceLink.GetType()), _sourceLink)
					.OfType<ILinkSettingsEditControl>()
					.Where(lp =>
						lp.SettingsType == settingsType && lp.AvailableForEmbedded)
					.OrderBy(lp => lp.Order));
		}
		private void ApplyUniversalLinkSettings(
			LinkSettingsType settingsType,
			LibraryFileLink targetLink,
			LibraryFileLink templateLink)
		{
			switch (settingsType)
			{
				case LinkSettingsType.Tags:
					targetLink.Tags = null;
					targetLink.TagsEncoded = templateLink.Tags.Serialize();
					break;
				case LinkSettingsType.Security:
					targetLink.Security = null;
					targetLink.SettingsEncoded = templateLink.Security.Serialize();
					break;
				default:
					targetLink.Settings = null;
					targetLink.SettingsEncoded = templateLink.Settings.Serialize();
					break;
			}
			targetLink.MarkAsModified();
		}
		public static DialogResult RunEmbedded(LibraryFileLink link, LibraryFolderLink parentLink, LinkSettingsType settingsType)
		{
			var dilogResult = DialogResult.Cancel;
			link.PerformTransaction(link.ParentLibrary.Context,
				linkCopy =>
				{
					using (var editForm = new FormEditLinkSettingsEmbedded(linkCopy, parentLink))
					{
						editForm.InitForm(settingsType);
						dilogResult = editForm.ShowDialog();
						if (dilogResult == DialogResult.OK)
							linkCopy.MarkAsModified();
						return dilogResult == DialogResult.OK;
					}
				},
				copyMethod => MainController.Instance.ProcessManager.Run("Preparing Data...", cancelationToken => copyMethod()),
				(context, original, current) => MainController.Instance.ProcessManager.Run("Saving Changes...",
					cancelationToken =>
					{
						current.BeforeSave();
						original.ApplyValues(current);
					}));
			return dilogResult;
		}
Example #9
0
 public LinkSettingBuilder(IConfigurationBuilder parentConfigBuilder, IResourceBuilder <TResource> parentResourceBuilder, LinkSettingsType linkType, string name, string url) : base(parentConfigBuilder, parentResourceBuilder)
 {
     _url     = Ensure.IsSet(url);
     LinkType = linkType;
     _name    = name ?? string.Empty;
 }
		public void EditLinkSettings(IList<BaseLibraryLink> links, LinkSettingsType settingsType)
		{
			var result = links.Count == 1 ?
				SettingsEditorFactory.Run(links.First(), settingsType) :
				SettingsEditorFactory.Run(links, settingsType, false);
			if (result != DialogResult.OK) return;

			grFiles.SuspendLayout();
			_outsideChangesInProgress = true;
			foreach (var linkRow in grFiles.Rows.OfType<LinkRow>())
				linkRow.Info.Recalc();
			_outsideChangesInProgress = false;
			UpdateGridSize();
			grFiles.ResumeLayout(true);
			grFiles.Refresh();

			DataChanged?.Invoke(this, EventArgs.Empty);
		}
		public void EditLinkSettings(LinkSettingsType settingsType)
		{
			var selectedRow = SelectedLinkRow;
			if (selectedRow == null) return;
			EditLinkSettings(new[] { selectedRow.Source }, settingsType);
		}