Inheritance: PrizmForm
Ejemplo n.º 1
0
        /// <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);
        }
Ejemplo n.º 2
0
        /// <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);
        }
Ejemplo n.º 3
0
 /// <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;
     }
 }
Ejemplo n.º 4
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>
        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);
        }
Ejemplo n.º 5
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();
     }
 }
Ejemplo n.º 6
0
        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));
            }
        }
Ejemplo n.º 7
0
        /// <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);
        }
Ejemplo n.º 8
0
            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);
            }
Ejemplo n.º 9
0
            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);
            }
Ejemplo n.º 10
0
        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);
        }
Ejemplo n.º 11
0
            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);
            }
Ejemplo n.º 12
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);
        }