/// <summary> /// Creates an instance of child form of given form type /// </summary> /// <param name="formType">type of form to be created, for example SettingsXtraForm</param> /// <returns>reference to newly created child form</returns> private ChildForm CreateChildForm(Type formType, List <KeyValuePair <string, object> > parameters) { ChildForm newlyCreatedForm = null; if (FramesCanOpen < 1) { notify.HideProcessing(); notify.ShowError(Program.LanguageManager.GetString(StringResources.Message_NoMoreDocumentsCanOpen), Program.LanguageManager.GetString(StringResources.Message_ErrorHeader)); } else { if (parameters != null) { newlyCreatedForm = (ChildForm)Program.Kernel.Get(formType, parameters.Select(kvp => new ConstructorArgument(kvp.Key, kvp.Value)).ToArray()); } else { newlyCreatedForm = (ChildForm)Program.Kernel.Get(formType); } childForms[formType.Name].Add(newlyCreatedForm); newlyCreatedForm.MdiParent = Program.MainForm; newlyCreatedForm.FormClosed += ChildClosedEventHandler; FramesCanOpen--; } return(newlyCreatedForm); }
/// <summary> /// If form can be opened for viewing, asks user if we /// should open form for viewing only. /// If form cannot be opened for viewing (ex. New pipe creation), /// shown warning /// </summary> /// <param name="formType">Type of form to be opened</param> /// <param name="form">Shown child form</param> /// <returns>If it is OK to open form for viewing</returns> private bool CanOpenFormForViewing(Type formType, ChildForm form) { bool canOpenFormForViewing = false; if (!form.CannotOpenForViewing) { if (formType.Name == typeof(SettingsXtraForm).Name) { canOpenFormForViewing = notify.ShowYesNo(Program.LanguageManager.GetString(StringResources.Message_OpenSettingsForViewing), Program.LanguageManager.GetString(StringResources.Message_OpenSettingsForViewingHeader)); } else { canOpenFormForViewing = notify.ShowYesNo(Program.LanguageManager.GetString(StringResources.Message_OpenFormForViewing), Program.LanguageManager.GetString(StringResources.Message_OpenFormForViewingHeader)); } } else { notify.ShowWarning(Program.LanguageManager.GetString(StringResources.Message_CannotOpenForViewing), Program.LanguageManager.GetString(StringResources.Message_CannotOpenForViewingHeader)); } return(canOpenFormForViewing); }
/// <summary> /// Show existing child form. /// </summary> /// <param name="form"></param> private void ShowChildForm(ChildForm form) { if (form != null) { form.Show(); form.WindowState = FormWindowState.Normal; form.WindowState = FormWindowState.Maximized; } }
/// <summary> /// Creation of child form. Can be used from outside to pass some Guid of entity and number to newly created forms. /// </summary> /// <param name="formType">exact type of form</param> /// <param name="id">Guid of entity</param> /// <param name="parameters">input parameters passed to the newly created form</param> public ChildForm OpenChildForm(Type formType, List <KeyValuePair <string, object> > parameters, Guid id = default(Guid)) { ChildForm form = null; if (typeof(ChildForm).IsAssignableFrom(formType)) { var forms = GetListChildForm(formType); //search int indexById = GetFormIndex(formType.Name, id); if (indexById >= 0 && forms.Count > 0) // is open { form = forms[indexById]; } if (form != null) { form.Activate(); } else //create new { int index = FindOpenForm(formType.Name, true); if (formType == typeof(ReleaseNoteNewEditXtraForm) && index >= 0)// this type form is open in edit mode { if (id == default(Guid)) { string text = Program.LanguageManager.GetString(StringResources.MainWindow_CloseEditingReleaseNote); notify.ShowWarning(text, ""); form = forms[index]; form.Activate(); } else { string text = Program.LanguageManager.GetString(StringResources.MainWindow_OpenReleaseNoteReadOnly); if (notify.ShowYesNo(text, "")) { form = ShowChildForm(formType, parameters, false); } } } else { form = ShowChildForm(formType, parameters, true); } } } else { var e = new ApplicationException(String.Format("Could not create child form {0} because not of child type.", formType.Name)); log.Error(e.Message); throw e; } return(form); }
/// <summary> /// Show existing child form. /// </summary> /// <param name="form"></param> private void ShowChildForm(ChildForm form) { try { notify.ShowProcessing(); form.Show(); form.WindowState = FormWindowState.Normal; form.WindowState = FormWindowState.Maximized; } finally { notify.HideProcessing(); } }
private Main.Forms.Settings.SettingsXtraForm GetSettingsForm() { ChildForm result = childForms[DocumentTypes.Settings].FirstOrDefault(); System.Type type = childForms.GetFormType(DocumentTypes.Settings); // this code will change when it will be available to do nameof if (type.Name == typeof(Main.Forms.Settings.SettingsXtraForm).Name) { return((Main.Forms.Settings.SettingsXtraForm)result); } else { throw new ApplicationException(String.Format("Type inconsistency between {0} and {1}", typeof(Main.Forms.Settings.SettingsXtraForm).Name, type.Name)); } }
/// <summary> /// Creates an instance of child form of given form type /// </summary> /// <param name="formType">type of form to be created, for example SettingsXtraForm</param> /// <returns>reference to newly created child form</returns> private ChildForm CreateChildForm(DocumentTypes documentType, List <KeyValuePair <string, object> > parameters) { ChildForm newlyCreatedForm = null; if (FramesCanOpen < 1) { notify.ShowError(Program.LanguageManager.GetString(StringResources.Message_NoMoreDocumentsCanOpen), Program.LanguageManager.GetString(StringResources.Message_ErrorHeader)); } else { newlyCreatedForm = childForms.CreateNew(documentType, parameters); newlyCreatedForm.MdiParent = Program.MainForm; newlyCreatedForm.FormClosed += ChildClosedEventHandler; FramesCanOpen--; } return(newlyCreatedForm); }
public ChildForm CreateNew(DocumentTypes documentType, List <KeyValuePair <string, object> > parameters) { ChildForm newlyCreatedForm = null; CheckDocumentTypePresence(documentType); if (parameters != null) { newlyCreatedForm = (ChildForm)Program.Kernel.Get(this.GetFormType(documentType), parameters.Select(kvp => new ConstructorArgument(kvp.Key, kvp.Value)).ToArray()); } else { newlyCreatedForm = (ChildForm)Program.Kernel.Get(this.GetFormType(documentType)); } GetChildFormList(documentType).Add(newlyCreatedForm); return(newlyCreatedForm); }
public bool Remove(ChildForm childForm) { bool removed = false; foreach (var entry in formsDictionary) { foreach (var form in GetChildFormList(entry.Key)) { if (form == childForm) { removed = entry.Value.forms.Remove(childForm); break; } } if (removed) { break; } } return(removed); }
private ChildForm ShowChildForm(Type formType, List <KeyValuePair <string, object> > parameters, bool IsEditMode = true) { ChildForm form = CreateChildForm(formType, parameters); if (form != null) { ShowChildForm(form); bool canOpenFormForEditing = CanOpenFormForEditing(formType); // If form.IsEditMode == false -- form is always opened for viewing if (IsEditMode && form.IsEditMode && !canOpenFormForEditing && !CanOpenFormForViewing(formType, form)) { form.Close(); } else if (!(IsEditMode && canOpenFormForEditing)) { ((ChildForm)form).IsEditMode = IsEditMode && canOpenFormForEditing; } } return(form); }
public ChildForm GetById(Guid id) { ChildForm found = null; if (id != Guid.Empty) { foreach (var item in formsDictionary) { foreach (var form in GetChildFormList(item.Key)) { if (form.Is(id)) { found = form; break; } } if (found != null) { break; } } } return(found); }
/// <summary> /// Creation of child form. Can be used from outside to pass some Guid of entity and number to newly created forms. /// </summary> /// <param name="formType">exact type of form</param> /// <param name="id">Guid of entity</param> /// <param name="parameters">input parameters passed to the newly created form</param> private ChildForm OpenReturnChildForm(DocumentTypes documentType, List <KeyValuePair <string, object> > parameters, Guid id = default(Guid)) { ChildForm formToActivate = null; try { notify.ShowProcessing(); FormFlags flags = FormFlags.Nothing; flags |= GetSecurityRestrictionReasons(documentType); // is possible for this option to open for this user, at all if (flags.HasFlag(FormFlags.CanReadAtThisWorkstation) && !flags.HasFlag(FormFlags.ReadAccessDenied) || flags.HasFlag(FormFlags.CanEditAtThisWorkstation) && !flags.HasFlag(FormFlags.EditAccessDenied)) { if (id != Guid.Empty) { formToActivate = childForms.GetById(id); } if (formToActivate == null) { IReadOnlyList <ChildForm> existingDocuments = childForms[documentType]; if (IsSingleDocumentPerProgram(documentType) && existingDocuments.Count > 0) { formToActivate = existingDocuments.First(); } if (formToActivate == null) { flags |= (IsSingleEditModeDocument(documentType) && existingDocuments.Any((form) => { return(form.IsEditMode); })) ? FormFlags.SingleEditAlreadyOpened : FormFlags.Nothing; Main.Forms.Settings.SettingsXtraForm settingsForm = GetSettingsForm(); if ((settingsForm != null && settingsForm.IsEditMode && IsEditConflictWithSettings(documentType) || documentType == DocumentTypes.Settings && SettingsConflictedDocumentsOpened().Any((form) => { return(form.IsEditMode); }) ) ) { flags |= FormFlags.EditConflict; } bool editMode; if (CanOpen(documentType, id == Guid.Empty, flags, out editMode)) { formToActivate = CreateChildForm(documentType, parameters); if (formToActivate != null) { formToActivate.IsEditMode = editMode; ShowChildForm(formToActivate); } } } } if (formToActivate != null) { formToActivate.Activate(); } } else { notify.ShowError( Program.LanguageManager.GetString(StringResources.FormManager_AccessForbidden), Program.LanguageManager.GetString(StringResources.FormManager_AccessHeader)); log.Warn("Attempt to open form with restricted access to it"); } } finally { notify.HideProcessing(); } return(formToActivate); }