示例#1
0
        /// <summary>
        /// Dialog to open a user object
        /// </summary>
        /// <param name="objType">Type of object to open</param>
        /// <param name="prompt"></param>
        /// <param name="defaultName"></param>
        /// <returns></returns>

        public static UserObject ShowDialog(
            UserObjectType objType,
            string title,
            UserObject defaultUo)
        {
            MetaTreeNode     mtn = null;
            MetaTreeNodeType mtnFilter;
            string           response, objectTypeName;
            int i1;

            GetInstance();

            objectTypeName = UserObject.GetTypeLabel(objType);
            string defaultName   = "";
            string defaultFolder = SS.I.PreferredProjectId;

            if (defaultUo != null)
            {
                defaultName   = defaultUo.Name;
                defaultFolder = defaultUo.ParentFolder;
            }

            Instance.UoType      = objType;
            Instance.Text        = title;
            Instance.Prompt.Text =
                "Select a " + objectTypeName + " from the choices shown below";

            mtnFilter  = MetaTreeNodeType.Project;                                 // show project folders and above
            mtnFilter |= UserObjectTree.UserObjectTypeToMetaTreeNodeType(objType); // user objects of specified type
            mtnFilter |= MetaTreeNodeType.UserFolder;                              // and any user folders

            string expandNodeTarget = "", expandNodeTarget2 = "";

            if (objType != UserObjectType.UserDatabase)
            {
                mtn = UserObjectTree.FindObjectTypeSubfolder(SS.I.PreferredProjectId, objType, SS.I.UserName);
                if (mtn == null)
                {
                    MetaTreeNode defProjNode = UserObjectTree.FindFolderNode(SS.I.PreferredProjectId);
                    if (defProjNode == null)
                    {
                        defProjNode = UserObjectTree.AddSystemFolderNode(SS.I.PreferredProjectId);
                    }
                    mtn = UserObjectTree.FindObjectTypeSubfolder(defProjNode.Name, objType, SS.I.UserName);
                    if (mtn == null)
                    {
                        mtn = UserObjectTree.CreateUserFolderObjectAndNode(defProjNode, UserObject.GetTypeLabelPlural(objType), SS.I.UserName);
                    }
                }
            }

            else
            {
                if (UserObjectTree.FolderNodes.ContainsKey(defaultFolder))
                {
                    mtn = UserObjectTree.FolderNodes[defaultFolder];
                }
                else
                {
                    DebugLog.Message("Couldn't find default folder in tree: " + defaultFolder);                  // just log & ignore
                }
            }

            if (mtn?.Target != null)
            {
                expandNodeTarget = mtn.Target;
                if (mtn.Parent != null)
                {
                    expandNodeTarget2 = mtn.Parent.Target;
                }
            }

            Instance.ContentsTreeWithSearch.ContentsTreeCtl.FillTree("root", mtnFilter, null, expandNodeTarget, expandNodeTarget2, false, false);
            Instance.ContentsTreeWithSearch.ContentsTreeCtl.SelectNode(expandNodeTarget);
            Instance.ContentsTreeWithSearch.CommandLineControl.Text = "";
            Instance.ObjectName.Text = defaultName;
            Instance.SelectedNode    = null;          // node selected from tree

            QbUtil.SetProcessTreeItemOperationMethod(TreeItemOperation);

            DialogResult dr = Instance.ShowDialog(SessionManager.ActiveForm);

            QbUtil.RestoreProcessTreeItemOperationMethod();

            if (dr == DialogResult.Cancel)
            {
                return(null);
            }

            return(Instance.OpenUoInfo);
        }
示例#2
0
        /// <summary>
        /// Validate the selection
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>

        private void OK_Click(object sender, EventArgs e)
        {
            UserObjectType type;
            int            id;

            if (ObjectName.Text == "")
            {
                MessageBoxMx.Show("A name must be supplied", UmlautMobius.String, MessageBoxButtons.OK);
                return;
            }

            if (SelectedNode != null)             // selected from tree
            {
                UserObject.ParseObjectTypeAndIdFromInternalName(SelectedNode.Target, out type, out id);

                OpenUoInfo   = UserObjectDao.ReadHeader(id);
                DialogResult = DialogResult.OK;
                return;
            }

            else             // name typed in, determine the location
            {
                MetaTreeNode folderNode  = ContentsTreeWithSearch.ContentsTreeCtl.FocusedMetaTreeNode;
                bool         foundFolder = false;
                while (folderNode != null)
                {
                    if (folderNode.IsFolderType)
                    {
                        foundFolder = true;
                        break;
                    }
                    folderNode = folderNode.Parent;                     // move up in tree
                }

                if (!foundFolder)
                {                 // could not determine where to look for the object
                    MessageBoxMx.Show("You must select the folder in which " + ObjectName.Text + " is to be found!",
                                      "Which Folder?", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                    DialogResult = DialogResult.None;
                    return;
                }
                else
                {                 // have a folder, look for entered name
                    string folderTarget = folderNode.Target;
                    if (!UserObjectTree.FolderNodes.ContainsKey(folderTarget))
                    {
                        MessageBoxMx.ShowError("Unexpected error - Failed to find folder: " + folderTarget);
                        return;
                    }
                    MetaTreeNode     mtn     = UserObjectTree.FolderNodes[folderTarget];
                    MetaTreeNodeType mtnType = UserObjectTree.UserObjectTypeToMetaTreeNodeType(UoType);
                    mtn = UserObjectTree.GetNodeByLabel(mtn, mtnType, ObjectName.Text);
                    if (mtn != null)
                    {
                        UserObject.ParseObjectTypeAndIdFromInternalName(mtn.Target, out type, out id);
                        OpenUoInfo   = UserObjectDao.ReadHeader(id);
                        DialogResult = DialogResult.OK;
                    }

                    else
                    {
                        string msg =
                            ObjectName.Text + "\n" +
                            "File not found.\n" +
                            "Please verify that the correct name was given.";

                        MessageBoxMx.Show(msg, Instance.Text, MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                        DialogResult = DialogResult.None;
                        return;
                    }
                }
            }
        }