Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
07/06/11 17:01:30 (13 years ago)
Author:
mkommend
Message:

#1555: Implemented context menu to collapse & expand nodes.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/sources/HeuristicLab.Optimization.Views/3.3/ExperimentTreeView.cs

    r6513 r6517  
    498498    #region control events
    499499    private void optimizerTreeView_NodeMouseDoubleClick(object sender, TreeNodeMouseClickEventArgs e) {
     500      if (rightClickOccured) return;
    500501      if (e.X < e.Node.Bounds.Left || e.X > e.Node.Bounds.Right) return;
    501       optimizerTreeView.SelectedNode.Toggle();
     502      e.Node.Toggle();
    502503      IOptimizer optimizer = (IOptimizer)e.Node.Tag;
    503504      MainFormManager.MainForm.ShowContent(optimizer);
     
    511512    private void optimizerTreeView_MouseDown(object sender, MouseEventArgs e) {
    512513      // enables deselection of treeNodes
    513       if (e.Button != System.Windows.Forms.MouseButtons.Left) return;
     514      if (e.Button != MouseButtons.Right) rightClickOccured = false;
    514515      if (optimizerTreeView.SelectedNode == null) return;
    515516      Point coordinates = new Point(e.X, e.Y);
     
    522523    }
    523524
     525
    524526    private void optimizerTreeView_KeyDown(object sender, KeyEventArgs e) {
    525527      if (ReadOnly) return;
     
    542544      UpdateDetailsViewHost();
    543545      RebuildImageList();
     546    }
     547
     548    private bool rightClickOccured = true;
     549    private TreeNode toolStripMenuNode = null;
     550    private void optimizerTreeView_RightClick(object sender, EventArgs e) {
     551      rightClickOccured = true;
     552      Point coordinates = optimizerTreeView.PointToClient(Cursor.Position);
     553      toolStripMenuNode = optimizerTreeView.GetNodeAt(coordinates);
     554
     555      if (toolStripMenuNode != null && coordinates.X >= toolStripMenuNode.Bounds.Left && coordinates.X <= toolStripMenuNode.Bounds.Right) {
     556        optimizerTreeView.SelectedNode = toolStripMenuNode;
     557        detailsViewHost.Content = (IContent)toolStripMenuNode.Tag;
     558        SetEnabledStateOfControls();
     559
     560        ExpandToolStripMenuItem.Enabled = !toolStripMenuNode.IsExpanded && toolStripMenuNode.Nodes.Count > 0;
     561        ExpandToolStripMenuItem.Visible = !toolStripMenuNode.IsExpanded && toolStripMenuNode.Nodes.Count > 0;
     562        CollapseToolStripMenuItem.Enabled = toolStripMenuNode.IsExpanded;
     563        CollapseToolStripMenuItem.Visible = toolStripMenuNode.IsExpanded;
     564        if (contextMenuStrip.Items.Cast<ToolStripMenuItem>().Any(item => item.Enabled))
     565          contextMenuStrip.Show(Cursor.Position);
     566      }
     567    }
     568
     569    private void ExpandToolStripMenuItem_Click(object sender, EventArgs e) {
     570      if (toolStripMenuNode != null) toolStripMenuNode.ExpandAll();
     571    }
     572    private void CollapseToolStripMenuItem_Click(object sender, EventArgs e) {
     573      if (toolStripMenuNode != null) toolStripMenuNode.Collapse();
    544574    }
    545575
     
    689719    }
    690720    #endregion
     721
     722
     723    public sealed class CustomTreeView : System.Windows.Forms.TreeView {
     724      protected override void WndProc(ref System.Windows.Forms.Message m) {
     725        const int WM_RBUTTONDOWN = 0x204;
     726        if (m.Msg == WM_RBUTTONDOWN) {
     727          //Raise your custom event right click event to prevent node highlighting
     728          OnRightClick();
     729          return;
     730        }
     731        base.WndProc(ref m);
     732      }
     733
     734      public event EventHandler RightClick;
     735      private void OnRightClick() {
     736        var handler = RightClick;
     737        if (handler != null) RightClick(this, EventArgs.Empty);
     738      }
     739    }
    691740  }
    692741}
Note: See TracChangeset for help on using the changeset viewer.