/
ReferenceForm.cs
63 lines (53 loc) · 1.6 KB
/
ReferenceForm.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
using System.Collections.Generic;
using System.Windows.Forms;
using Logos4Lib;
namespace Logos4ComApiDemo
{
public partial class ReferenceForm : Form
{
public ReferenceForm()
{
m_history = new Stack<LogosDataTypeReference>();
InitializeComponent();
}
public LogosDataTypeReference Reference
{
get { return m_reference; }
set { SetReference(value, false); }
}
private void SetReference(LogosDataTypeReference reference, bool bInHistory)
{
if (!bInHistory && m_reference != null)
m_history.Push(m_reference);
m_reference = reference;
UpdateControls();
ReferenceTextBox.Text = reference.Save();
DataTypeLink.DataType = reference.DataType;
RangeStartLink.Reference = reference.IsRange ? reference.RangeStart : null;
RangeEndLink.Reference = reference.IsRange ? reference.RangeEnd : null;
RenderShortTextBox.Text = reference.Render("short");
RenderMediumTextBox.Text = reference.Render("medium");
RenderLongTextBox.Text = reference.Render("long");
RenderDisplayTextBox.Text = reference.Render("display");
ThePanel.Controls.Clear();
object details = reference.Details;
if (details is ILogosBibleReferenceDetails)
ThePanel.Controls.Add(new BibleReferencePane(reference));
}
private void BackLink_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
if (m_history.Count != 0)
{
SetReference(m_history.Pop(), true);
UpdateControls();
}
}
private void UpdateControls()
{
BackLink.Visible = m_history.Count != 0;
}
LogosDataTypeReference m_reference;
readonly Stack<LogosDataTypeReference> m_history;
}
}