-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathDashboardDescriptionModule.cs
More file actions
94 lines (91 loc) · 4.7 KB
/
DashboardDescriptionModule.cs
File metadata and controls
94 lines (91 loc) · 4.7 KB
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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
using System;
using System.Windows.Forms;
using DevExpress.DashboardCommon;
using DevExpress.DashboardWin;
using DevExpress.DashboardWin.Localization;
using DevExpress.Utils;
using DevExpress.Utils.Svg;
using DevExpress.XtraBars;
using DevExpress.XtraBars.Ribbon;
using DevExpress.XtraEditors;
using DevExpress.XtraLayout;
using DevExpress.XtraLayout.Utils;
namespace LayoutChange.Modules {
public class DashboardDescriptionModule {
public static readonly string PropertyName = "DashboardDescription";
readonly DashboardDesigner designer;
readonly SvgImage titleDescriptionImage;
public DashboardDescriptionModule(DashboardDesigner designer, SvgImage barImage = null, SvgImage titleDescriptionImage = null) {
this.designer = designer;
this.titleDescriptionImage = titleDescriptionImage;
RibbonControl ribbon = (RibbonControl)designer.MenuManager;
RibbonPage page = ribbon.GetDashboardRibbonPage(DashboardBarItemCategory.None, DashboardRibbonPage.Home);
RibbonPageGroup group = page.Groups.GetGroupByText(DashboardWinLocalizer.GetString(DashboardWinStringId.RibbonPageDashboardCaption));
BarButtonItem barItem = CreateBarItem("Dashboard Description", barImage);
group.ItemLinks.Add(barItem);
barItem.ItemClick += DescriptionBarItem_Click;
designer.CustomizeDashboardTitle += Designer_CustomizeDashboardTitle;
designer.DashboardCustomPropertyChanged += Designer_DashboardCustomPropertyChanged;
}
BarButtonItem CreateBarItem(string caption, SvgImage barImage) {
BarButtonItem barItem = new BarButtonItem();
barItem.Caption = caption;
barItem.ImageOptions.SvgImage = barImage;
return barItem;
}
void DescriptionBarItem_Click(object sender, EventArgs e) {
ShowDescriptionForm();
}
void ShowDescriptionForm() {
string currentCaption = designer.Dashboard.CustomProperties.GetValue(PropertyName);
LayoutControl layoutControl = new LayoutControl();
layoutControl.Dock = DockStyle.Fill;
layoutControl.Name = "layoutControl1";
LayoutControlItem memoEditLayoutItem = layoutControl.Root.AddItem();
memoEditLayoutItem.TextLocation = Locations.Top;
memoEditLayoutItem.Text = "Text:";
MemoEdit memoEdit = new MemoEdit();
memoEdit.Text = currentCaption;
memoEditLayoutItem.Control = memoEdit;
LayoutControlItem buttonLayoutItem = layoutControl.Root.AddItem();
buttonLayoutItem.SizeConstraintsType = SizeConstraintsType.Custom;
buttonLayoutItem.TextVisible = false;
SimpleButton buttonOk = new SimpleButton();
buttonOk.Text = "OK";
buttonOk.DialogResult = DialogResult.OK;
buttonOk.Click += (sender1, e1) => {
string modifiedCaption = memoEdit.Text;
if (currentCaption != modifiedCaption) {
string status = !string.IsNullOrEmpty(modifiedCaption) ? "Remove" : "Add";
CustomPropertyHistoryItem historyItem = new CustomPropertyHistoryItem(designer.Dashboard, PropertyName, modifiedCaption, status + " the dashboard caption");
designer.AddToHistory(historyItem);
}
};
buttonLayoutItem.Control = buttonOk;
layoutControl.Root.AddItem(new EmptySpaceItem(), buttonLayoutItem, InsertType.Left);
using(XtraForm form = new XtraForm()) {
form.Text = "Description";
form.Size = new System.Drawing.Size(250, 250);
form.StartPosition = FormStartPosition.CenterParent;
form.IconOptions.ShowIcon = false;
form.Controls.Add(layoutControl);
form.ShowDialog();
}
}
void Designer_CustomizeDashboardTitle(object sender, CustomizeDashboardTitleEventArgs e) {
string text = designer.Dashboard.CustomProperties.GetValue(PropertyName);
if(!string.IsNullOrEmpty(text)) {
DashboardToolbarItem showDataItem = new DashboardToolbarItem("Description",
new Action<DashboardToolbarItemClickEventArgs>((args) => {
MessageBox.Show(text, "Description");
}));
showDataItem.SvgImage = titleDescriptionImage;
e.Items.Insert(0, showDataItem);
}
}
void Designer_DashboardCustomPropertyChanged(object sender, CustomPropertyChangedEventArgs e) {
if(e.Name == PropertyName)
designer.UpdateDashboardTitle();
}
}
}