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]; } } }
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()); } }
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); }
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); }
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; }
public virtual void SetKeywordNodeEnabled(TreeNode node) { FWKeyword kw = GetKeywordFromNode(node); if (kw != null) { Modified |= !kw.Enabled; kw.Enabled = true; node.NodeFont = nodeFontEnabled; } }
public virtual String GetSelectedKeywordText() { FWKeyword kw = SelectedKeyword; String ret = null; if (kw != null) { ret = Conn.Ix.cookKeyword(kw.Id); } return(ret); }
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; } } }
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; } } }
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); }
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; }
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); }
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(); }
/// <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); } } }
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); } } }
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(); }