-
Notifications
You must be signed in to change notification settings - Fork 2
/
ResourceForm.cs
102 lines (81 loc) · 3.91 KB
/
ResourceForm.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
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
94
95
96
97
98
99
100
101
102
// Developer Express Code Central Example:
// How to manage scheduler resources at runtime
//
// This example shows how you can manage scheduler resources at runtime. The
// Scheduler context menu is modified to include commands to create, modify or
// delete selected resource. To invoke the menu, right-click any region of
// SchedulerControl (except appointments). A custom form is invoked that enables
// you to set caption, color and image for the selected resource.
//
// You can find sample updates and versions for different programming languages here:
// http://www.devexpress.com/example=E3201
using System;
using System.Drawing;
using System.Windows.Forms;
using DevExpress.XtraScheduler;
namespace SchedulerResourcesManagement {
public partial class ResourceForm : Form {
private readonly Resource sourceResource = null;
private readonly Resource editedResourceCopy = ResourceEmpty.Resource;
protected virtual Resource SourceResource { get { return sourceResource; } }
protected virtual Resource EditedResourceCopy { get { return editedResourceCopy; } }
protected virtual Image DefaultResourceImage { get { return SchedulerResourcesManagement.Properties.Resources.NoImage; } }
public ResourceForm(Resource resource, SchedulerStorage schedulerStorage) {
if (resource == null)
throw new ArgumentNullException("resource");
this.Disposed += new EventHandler(ResourceForm_Disposed);
this.editedResourceCopy = schedulerStorage.CreateResource(null);
this.sourceResource = resource;
InitializeComponent();
UpdateEditedResourceCopy();
UpdateForm();
}
void ResourceForm_Disposed(object sender, EventArgs e) {
if (EditedResourceCopy != null)
EditedResourceCopy.Dispose();
}
protected virtual void UpdateEditedResourceCopy() {
EditedResourceCopy.Caption = SourceResource.Caption;
EditedResourceCopy.SetColor(SourceResource.GetColor());
EditedResourceCopy.SetImage(SourceResource.GetImage());
}
protected virtual void UpdateForm() {
tbCaption.Text = EditedResourceCopy.Caption;
lblColor.BackColor = EditedResourceCopy.GetColor();
pbImage.Image = (EditedResourceCopy.GetImage() == null ? DefaultResourceImage : EditedResourceCopy.GetImage());
UpdateFormTitle();
}
protected virtual void UpdateFormTitle() {
string formatArgument = string.Empty;
if (!string.IsNullOrEmpty(tbCaption.Text))
formatArgument = tbCaption.Text + " - ";
this.Text = string.Format("{0}Resource", formatArgument);
}
protected virtual void ApplyChanges() {
SourceResource.Caption = EditedResourceCopy.Caption;
SourceResource.SetColor(EditedResourceCopy.GetColor());
SourceResource.SetImage(EditedResourceCopy.GetImage());
}
private void btnColor_Click(object sender, EventArgs e) {
if (colorDialog1.ShowDialog() == DialogResult.OK) {
lblColor.BackColor = colorDialog1.Color;
EditedResourceCopy.SetColor(colorDialog1.Color);
}
}
private void pbImage_Click(object sender, EventArgs e) {
if (openFileDialog1.ShowDialog() == DialogResult.OK) {
pbImage.Image = Image.FromFile(openFileDialog1.FileName);
EditedResourceCopy.SetImage(pbImage.Image);
}
}
private void tbCaption_Validated(object sender, EventArgs e) {
EditedResourceCopy.Caption = tbCaption.Text;
}
private void tbCaption_TextChanged(object sender, EventArgs e) {
UpdateFormTitle();
}
private void btnOk_Click(object sender, EventArgs e) {
ApplyChanges();
}
}
}