protected void HelpLinkClicked(object sender, LinkLabelLinkClickedEventArgs e) { DetailElement de = (DetailElement)e.Link.LinkData; ShowLink(HelpLinkHelper.HLHelper, de._helpLinkMod); }
protected void LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) { DetailElement de = (DetailElement)e.Link.LinkData; ShowLink(de._linkTarget, de._linkModifier); }
protected static bool ShouldShow(DetailElement de) { if (!de._internal || (LocalPrefs.Get(LocalPrefs.SHOW_INTERNAL_DETAILS) != null)) { return(true); } return(false); }
public override bool Equals(Object obj) { if (obj != null && obj is DetailElement) { DetailElement de = (DetailElement)obj; if (de._name.Equals(_name) && de._order.Equals(_order)) { return(true); } } return(false); }
// linkTarget is the class that knows how to display // the link, and is called to execute the link // linkModifier is the data passed to the linkTarget // helpLinkMod is a linkModifier for the HelpLinkHelper // to display help associated with the link internal static void AddLink(String title, bool isInternal, int order, ILinkTarget linkTarget, Object linkModifier, Object helpLinkMod) { DetailElement de = AddInternal(title, isInternal, order, null); de._isLink = true; de._value = linkTarget.GetLinkName(linkModifier); de._linkTarget = linkTarget; de._linkModifier = linkModifier; de._helpLinkMod = helpLinkMod; }
public int CompareTo(Object obj) { if (obj != null && obj is DetailElement) { DetailElement de = (DetailElement)obj; if (_order < de._order) { return(-1); } if (_order > de._order) { return(1); } return(0); } throw new ArgumentException(); }
protected static DetailElement AddInternal(String title, bool isInternal, int order, String value) { DetailElement de = new DetailElement(); de._name = title; de._value = value; de._order = order; de._internal = isInternal; if (ShouldShow(de)) { _detailPanel._maxLabelWidth = Utils.SetMaxWidth(_detailPanel, title, _detailPanel._maxLabelWidth); } _detailPanel._elements.Add(de); _detailPanel.Invalidate(); return(de); }
internal Control AddDetailControl(DetailElement de) { Panel detailLine = new Panel(); detailLine.Dock = DockStyle.Top; detailLine.Layout += new LayoutEventHandler(DetailLayoutHandler); //detailLine.Width = _detailPanel.Width; RichTextBox tb = null; Control valueControl = null; if (de._isLink) { if (de._helpLinkMod != null) { LinkLabel ll = new LinkLabel(); ll.Dock = DockStyle.Left; ll.AutoSize = true; ll.Text = "Show Documentation"; ll.Links.Add(0, ll.Text.Length, de); ll.LinkClicked += new LinkLabelLinkClickedEventHandler(HelpLinkClicked); detailLine.Controls.Add(ll); // Padding Label l = new Label(); l.Dock = DockStyle.Left; l.Width = 40; detailLine.Controls.Add(ll); } LinkLabel linkLabel = new LinkLabel(); valueControl = linkLabel; linkLabel.AutoSize = true; linkLabel.Text = de._value; linkLabel.Links.Add(0, linkLabel.Text.Length, de); linkLabel.LinkClicked += new LinkLabelLinkClickedEventHandler(LinkClicked); // We assume the label is going to be one line and since // we don't have the resize handler for the text box, just // wire it into the standard height detailLine.Height = linkLabel.Height; } else { tb = new RichTextBox(); valueControl = tb; // The value tb.TabStop = false; tb.Multiline = true; tb.WordWrap = true; tb.ReadOnly = true; tb.Text = (String)de._value; tb.DetectUrls = false; tb.BorderStyle = BorderStyle.None; tb.BackColor = BackColor; tb.Layout += new LayoutEventHandler(TextLayoutHandler); } detailLine.Controls.Add(valueControl); // Label for each line if (de._name != null) { // For the help link, we can't fill if (de._isLink && de._helpLinkMod != null) { valueControl.Dock = DockStyle.Left; } else { valueControl.Dock = DockStyle.Fill; } Label l; // spacing l = new Label(); l.Dock = DockStyle.Left; l.Width = SPACING_HEIGHT; detailLine.Controls.Add(l); // The actual label l = new Label(); l.Dock = DockStyle.Left; // FIXME Because the last character is slightly cut off l.Text = de._name + " "; //l.Text = de._name; l.Width = _maxLabelWidth + LABEL_WIDTH_PAD + 20; l.TextAlign = ContentAlignment.TopRight; l.Font = new Font(l.Font, FontStyle.Bold); detailLine.Controls.Add(l); } else { // No text label - Makes the value bold valueControl.Font = new Font(valueControl.Font, FontStyle.Bold); } if (tb != null) { TextLayoutHandler(tb, new LayoutEventArgs(tb, null)); } return(detailLine); }
protected static bool ShouldShow(DetailElement de) { if (!de._internal || (LocalPrefs.Get(LocalPrefs.SHOW_INTERNAL_DETAILS) != null)) return true; return false; }
internal Control AddDetailControl(DetailElement de) { Panel detailLine = new Panel(); detailLine.Dock = DockStyle.Top; detailLine.Layout += new LayoutEventHandler(DetailLayoutHandler); //detailLine.Width = _detailPanel.Width; RichTextBox tb = null; Control valueControl = null; if (de._isLink) { if (de._helpLinkMod != null) { LinkLabel ll = new LinkLabel(); ll.Dock = DockStyle.Left; ll.AutoSize = true; ll.Text = "Show Documentation"; ll.Links.Add(0, ll.Text.Length, de); ll.LinkClicked += new LinkLabelLinkClickedEventHandler(HelpLinkClicked); detailLine.Controls.Add(ll); // Padding Label l = new Label(); l.Dock = DockStyle.Left; l.Width = 40; detailLine.Controls.Add(ll); } LinkLabel linkLabel = new LinkLabel(); valueControl = linkLabel; linkLabel.AutoSize = true; linkLabel.Text = de._value; linkLabel.Links.Add(0, linkLabel.Text.Length, de); linkLabel.LinkClicked += new LinkLabelLinkClickedEventHandler(LinkClicked); // We assume the label is going to be one line and since // we don't have the resize handler for the text box, just // wire it into the standard height detailLine.Height = linkLabel.Height; } else { tb = new RichTextBox(); valueControl = tb; // The value tb.TabStop = false; tb.Multiline = true; tb.WordWrap = true; tb.ReadOnly = true; tb.Text = (String)de._value; tb.DetectUrls = false; tb.BorderStyle = BorderStyle.None; tb.BackColor = BackColor; tb.Layout += new LayoutEventHandler(TextLayoutHandler); } detailLine.Controls.Add(valueControl); // Label for each line if (de._name != null) { // For the help link, we can't fill if (de._isLink && de._helpLinkMod != null) valueControl.Dock = DockStyle.Left; else valueControl.Dock = DockStyle.Fill; Label l; // spacing l = new Label(); l.Dock = DockStyle.Left; l.Width = SPACING_HEIGHT; detailLine.Controls.Add(l); // The actual label l = new Label(); l.Dock = DockStyle.Left; // FIXME Because the last character is slightly cut off l.Text = de._name + " "; //l.Text = de._name; l.Width = _maxLabelWidth + LABEL_WIDTH_PAD + 20; l.TextAlign = ContentAlignment.TopRight; l.Font = new Font(l.Font, FontStyle.Bold); detailLine.Controls.Add(l); } else { // No text label - Makes the value bold valueControl.Font = new Font(valueControl.Font, FontStyle.Bold); } if (tb != null) TextLayoutHandler(tb, new LayoutEventArgs(tb, null)); return detailLine; }
protected static DetailElement AddInternal(String title, bool isInternal, int order, String value) { DetailElement de = new DetailElement(); de._name = title; de._value = value; de._order = order; de._internal = isInternal; if (ShouldShow(de)) { _detailPanel._maxLabelWidth = Utils.SetMaxWidth(_detailPanel, title, _detailPanel._maxLabelWidth); } _detailPanel._elements.Add(de); _detailPanel.Invalidate(); return de; }