Esempio n. 1
0
 /// <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();
     }
 }
Esempio n. 2
0
        /// <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);
        }