Beispiel #1
0
        private void timer1_Tick(object sender, EventArgs e)
        {
            // put the cache object provided
            // by the onThreadingTimer into a local variable to
            // avoid synchronization
            FWKeyword kw = keywordListToBeDisplayed;

            // Reset the handover variable, so nothing will be done,
            // if onThreadingTimer has no new cache object and this function is
            // called the next time.
            keywordListToBeDisplayed = null;

            // If onThreadingTimer provides a new cache object...
            if (kw != null)
            {
                currentkeywordList = kw;
                InternalRefresh();

                // Select first node.
                if (this.Nodes.Count > 0)
                {
                    this.SelectedNode = this.Nodes[0];
                }
            }
        }
Beispiel #2
0
        public virtual void Checkin()
        {
            try
            {
                if (Modified)
                {
                    List <String> selectedPath = GetSelectedNodePath();
                    String        kwFilter     = this.KeywordFilter;

                    using (new Hourglass())
                    {
                        completeKeywordListValue.Checkin();
                    }

                    if (kwFilter != null && kwFilter.Length != 0)
                    {
                        currentkeywordList = ApplyKeywordFilter(kwFilter);
                    }

                    InternalRefresh();

                    SelectNodePath(selectedPath);
                }
            }
            catch (Exception e)
            {
                System.Windows.Forms.MessageBox.Show(e.ToString());
            }
        }
Beispiel #3
0
        private FWKeyword ApplyKeywordFilter(String currentNameFilter)
        {
            FWKeyword myKeywordList = Conn.MasterData.ClassFactory.NewFWKeyword(new Keyword(), null);

            myKeywordList.Id = currentNameFilter;
            List <FWKeyword> filteredKeywordList = KeywordList.Find(currentNameFilter);

            myKeywordList.Children = new FWKeywordChildren(null, filteredKeywordList);
            return(myKeywordList);
        }
Beispiel #4
0
        public virtual bool IsNewNode(TreeNode node)
        {
            bool      ret = false;
            FWKeyword kw  = GetKeywordFromNode(node);

            if (kw != null)
            {
                ret = kw.Id.IndexOf(NEW_KEYWORD_ID) >= 0;
            }
            return(ret);
        }
Beispiel #5
0
        protected override void OnAfterLabelEdit(NodeLabelEditEventArgs e)
        {
            FWKeyword kw = GetKeywordFromNode(e.Node);

            if (kw != null)
            {
                if (e.Label != null && e.Label.Length != 0)
                {
                    // does this keyword text already exist
                    TreeNode tnChild = FindChildNodeByText(e.Node.Parent, e.Label);
                    if (tnChild != null)
                    {
                        TreeNodeCollection treeNodes = (e.Node.Parent != null) ? e.Node.Nodes : this.Nodes;
                        treeNodes.Remove(e.Node);

                        System.Windows.Forms.MessageBox.Show(
                            EloixClientUI.Properties.Resources.KeywordAlreadyExists,
                            EloixClientUI.Properties.Resources.MsgBoxConfirm,
                            MessageBoxButtons.OK);
                    }
                    else
                    {
                        kw.Text = e.Label;
                        e.Node.EndEdit(false);

                        if (IsNewNode(e.Node))
                        {
                            FWKeyword kwParent = GetKeywordFromNode(e.Node.Parent);
                            if (kwParent != null)
                            {
                                kwParent.Children.Add(kw);
                            }
                            else
                            {
                                currentkeywordList.Children.Add(kw);
                            }
                        }

                        SelectedNode = e.Node;

                        Modified = true;
                    }
                }
                else
                {
                    if (IsNewNode(e.Node))
                    {
                        TreeNodeCollection treeNodes = (e.Node.Parent != null) ? e.Node.Nodes : this.Nodes;
                        treeNodes.Remove(e.Node);
                    }
                }
            }
            lockContextMenu = false;
        }
Beispiel #6
0
        public virtual void SetKeywordNodeEnabled(TreeNode node)
        {
            FWKeyword kw = GetKeywordFromNode(node);

            if (kw != null)
            {
                Modified     |= !kw.Enabled;
                kw.Enabled    = true;
                node.NodeFont = nodeFontEnabled;
            }
        }
Beispiel #7
0
        public virtual String GetSelectedKeywordText()
        {
            FWKeyword kw  = SelectedKeyword;
            String    ret = null;

            if (kw != null)
            {
                ret = Conn.Ix.cookKeyword(kw.Id);
            }
            return(ret);
        }
Beispiel #8
0
        public virtual void DeleteKeywordNode(TreeNode node)
        {
            FWKeyword kw = GetKeywordFromNode(node);

            if (kw != null)
            {
                FWKeyword kwParent = kw.Parent;
                if (kwParent != null)
                {
                    kwParent.Children.Remove(kw.Id);
                    node.Remove();
                    Modified = true;
                }
            }
        }
Beispiel #9
0
        protected override void OnNodeMouseClick(TreeNodeMouseClickEventArgs e)
        {
            base.OnNodeMouseClick(e);

            if (e.Button == MouseButtons.Right)
            {
                if (SelectedNode != null)
                {
                    FWKeyword kw = GetKeywordFromNode(SelectedNode);
                    mnEnabled.Checked  = kw.Enabled;
                    mnAdd.Checked      = kw.Prefixed;
                    mnDisabled.Checked = !kw.Prefixed && !kw.Enabled;
                }
            }
        }
Beispiel #10
0
        public virtual TreeNode MakeTreeNode(FWKeyword kw)
        {
            TreeNode treeNode1 = new TreeNode(kw.Id);

            treeNode1.Name     = kw.Id;
            treeNode1.Text     = kw.Text;
            treeNode1.Tag      = kw;
            treeNode1.NodeFont = kw.Enabled ? nodeFontEnabled : nodeFontDisabled;
            //treeNode1.ForeColor = kw.Enabled ? Color.Black : Color.Gray;

            if (kw.Children.Count > 0)
            {
                TreeNode dummyChild = new TreeNode();
                dummyChild.Name = DUMMY_CHILD_NAME;
                treeNode1.Nodes.Add(dummyChild);
            }
            return(treeNode1);
        }
Beispiel #11
0
        public void mnAppendPlaceholder_Click(object sender, EventArgs e)
        {
            TreeNode  node = SelectedNode;
            FWKeyword kw   = GetKeywordFromNode(node);

            if (kw == null)
            {
                return;
            }

            String placeholder = null;

            if (sender == mnDay)
            {
                placeholder = KeywordC.PLACEHOLDER_DAY;
            }
            else if (sender == mnMonth)
            {
                placeholder = KeywordC.PLACEHOLDER_MONTH;
            }
            else if (sender == mnYear)
            {
                placeholder = KeywordC.PLACEHOLDER_YEAR;
            }
            else if (sender == mnDate)
            {
                placeholder = KeywordC.PLACEHOLDER_DATE;
            }
            else if (sender == mnUserName)
            {
                placeholder = KeywordC.PLACEHOLDER_USER_NAME;
            }
            else
            {
                // counter
                placeholder = KeywordC.PLACEHOLDER_COUNTER_BEGIN +
                              ((ToolStripItem)sender).Text +
                              KeywordC.PLACEHOLDER_COUNTER_END;
            }

            node.Text += placeholder;
            kw.Text   += placeholder;
            Modified   = true;
        }
Beispiel #12
0
        public static String ShowToolWindow(Control parentDialog, FWKeyword keywordList, String keywordFilter, bool applyFilter, Rectangle rect)
        {
            FormKeywordList dlg = new FormKeywordList();

            dlg.keywordTreeView1.KeywordList = keywordList;
            dlg.parentDialog  = parentDialog;
            dlg.applyFilter   = applyFilter;
            dlg.keywordFilter = keywordFilter;

            Rectangle rectDlg = dlg.Bounds;

            Rectangle rectTextBox =
                dlg.RectangleToScreen(dlg.textBox1.Bounds);
            int top1 = dlg.textBox1.Top;

            int x  = rect.Left - rectTextBox.Left;
            int y  = rect.Top - rectTextBox.Top;
            int wd = rect.Width + 6;
            int ht = 200;

            Rectangle workingArea = Screen.GetWorkingArea(parentDialog);

            if (y + ht > workingArea.X + workingArea.Height)
            {
                int y1 = rect.Bottom + 3;
                y = y1 - ht;
                dlg.panel1.Dock = DockStyle.Bottom;
            }

            dlg.Bounds = new Rectangle(x, y, wd, ht);

            // .NET BUG?
            // If MinimumSize is set, the dialog does not come to front
            // on ALT+TAB.
            //dlg.MinimumSize = new Size(wd, dlg.textBox1.Height + 6);

            String ret = null;

            if (dlg.ShowDialog() == DialogResult.OK)
            {
                ret = dlg.keywordTreeView1.GetSelectedKeywordText();
            }
            return(ret);
        }
Beispiel #13
0
        protected virtual void FillNodes(TreeNode node)
        {
            this.SuspendLayout();

            using (new Hourglass())
            {
                node.Nodes.Clear();

                FWKeyword kwParent = GetKeywordFromNode(node);

                foreach (FWKeyword kwChild in kwParent.Children)
                {
                    TreeNode childNode = MakeTreeNode(kwChild);
                    node.Nodes.Add(childNode);
                }
            }

            this.ResumeLayout();
        }
Beispiel #14
0
        /// <summary>
        /// Clears all nodes and refreshes the view.
        /// </summary>
        public override void Refresh()
        {
            base.Refresh();

            this.Nodes.Clear();

            if (Conn != null && currentkeywordList != null)
            {
                FWKeyword kwParent = currentkeywordList;

                FWKeywordChildren kwChildren = kwParent.Children;
                kwChildren.Sort();

                foreach (FWKeyword kwChild in kwParent.Children)
                {
                    TreeNode childNode = MakeTreeNode(kwChild);
                    this.Nodes.Add(childNode);
                }
            }
        }
Beispiel #15
0
        protected virtual void OnThreadingTimer(object stateInfo)
        {
            if (System.Threading.Monitor.TryEnter(syncTimerMonitor))
            {
                try
                {
                    // put the current search string into a local variable to
                    // avoid synchronization
                    String currentNameFilter = keywordfilterValue;
                    if (currentNameFilter == null)
                    {
                        currentNameFilter = "";
                    }

                    // if search string has changed
                    if (!currentNameFilter.Equals(lastNameFilter))
                    {
                        if (currentNameFilter.Length != 0)
                        {
                            keywordListToBeDisplayed = ApplyKeywordFilter(currentNameFilter);
                        }
                        else
                        {
                            keywordListToBeDisplayed = KeywordList;
                        }

                        // memorize the current search string for the next call
                        lastNameFilter = currentNameFilter;
                        if (lastNameFilter == null)
                        {
                            lastNameFilter = "";
                        }
                    }
                }
                finally
                {
                    System.Threading.Monitor.Exit(syncTimerMonitor);
                }
            }
        }
Beispiel #16
0
        public void NewKeywordNode(TreeNode parentNode)
        {
            if (parentNode != null)
            {
                parentNode.Expand();
            }

            FWKeyword parentKeyword = GetKeywordFromNode(parentNode);

            if (parentKeyword == null)
            {
                parentKeyword = currentkeywordList;
            }

            FWKeyword kw = Conn.MasterData.ClassFactory.NewFWKeyword(new Keyword(), parentKeyword);

            kw.Text     = EloixClientUI.Properties.Resources.NewKeyword;
            kw.Enabled  = true;
            kw.Id       = parentKeyword.Id + NEW_KEYWORD_ID;
            kw.Children = new FWKeywordChildren(kw);

            TreeNode newNode = MakeTreeNode(kw);

            if (parentNode != null)
            {
                parentNode.Nodes.Add(newNode);
                parentNode.Expand();
            }
            else
            {
                this.Nodes.Add(newNode);
            }


            newNode.BeginEdit();
        }