source: Scheduling/trunk/cs/bsdx0200GUISourceCode/CGAVView.cs@ 915

Last change on this file since 915 was 915, checked in by Sam Habiel, 14 years ago

New Release v 1.3.1

Added a note in the DAccessTemplate to say that you have to select the right 5 or 7 day view based on what you originally saved.

File size: 51.0 KB
Line 
1using System;
2using System.Drawing;
3using System.Collections;
4using System.ComponentModel;
5using System.Windows.Forms;
6using System.Diagnostics;
7using System.Data;
8using System.Data.OleDb;
9using System.IO;
10using System.Runtime.Serialization;
11using System.Runtime.Serialization.Formatters.Binary;
12using IndianHealthService.BMXNet;
13
14
15namespace IndianHealthService.ClinicalScheduling
16{
17 /// <summary>
18 /// Summary description for CGAVView.
19 /// </summary>
20 public class CGAVView : System.Windows.Forms.Form
21 {
22
23
24 public CGAVView()
25 {
26 //
27 // Required for Windows Form Designer support
28 //
29 InitializeComponent();
30
31 //
32 // TODO: Add any constructor code after InitializeComponent call
33 //
34 this.panelRight.Visible = false;
35 this.tvSchedules.Visible = false;
36 m_ClipList = new CGAppointments();
37 }
38
39 #region Windows Form Designer generated code
40 /// <summary>
41 /// Required method for Designer support - do not modify
42 /// the contents of this method with the code editor.
43 /// </summary>
44 private void InitializeComponent()
45 {
46 this.components = new System.ComponentModel.Container();
47 System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(CGAVView));
48 this.panelRight = new System.Windows.Forms.Panel();
49 this.panelClip = new System.Windows.Forms.Panel();
50 this.lstClip = new System.Windows.Forms.ListBox();
51 this.ctxApptClipMenu = new System.Windows.Forms.ContextMenu();
52 this.mnuRemoveClipItem = new System.Windows.Forms.MenuItem();
53 this.mnuClearClipItems = new System.Windows.Forms.MenuItem();
54 this.label1 = new System.Windows.Forms.Label();
55 this.panelBottom = new System.Windows.Forms.Panel();
56 this.statusBar1 = new System.Windows.Forms.StatusBar();
57 this.panelTop = new System.Windows.Forms.Panel();
58 this.dateTimePicker1 = new System.Windows.Forms.DateTimePicker();
59 this.lblResource = new System.Windows.Forms.Label();
60 this.panelCenter = new System.Windows.Forms.Panel();
61 this.calendarGrid1 = new IndianHealthService.ClinicalScheduling.CalendarGrid();
62 this.ctxCalendarGrid = new System.Windows.Forms.ContextMenu();
63 this.ctxCalGridAdd = new System.Windows.Forms.MenuItem();
64 this.ctxCalGridEdit = new System.Windows.Forms.MenuItem();
65 this.ctxCalGridDelete = new System.Windows.Forms.MenuItem();
66 this.tvSchedules = new System.Windows.Forms.TreeView();
67 this.mainMenu1 = new System.Windows.Forms.MainMenu(this.components);
68 this.menuItem1 = new System.Windows.Forms.MenuItem();
69 this.mnuLoadTemplate = new System.Windows.Forms.MenuItem();
70 this.mnuSaveTemplate = new System.Windows.Forms.MenuItem();
71 this.menuItem6 = new System.Windows.Forms.MenuItem();
72 this.mnuSchedulingManagment = new System.Windows.Forms.MenuItem();
73 this.menuItem5 = new System.Windows.Forms.MenuItem();
74 this.mnuClose = new System.Windows.Forms.MenuItem();
75 this.mnuAvailability = new System.Windows.Forms.MenuItem();
76 this.mnuAddNewAV = new System.Windows.Forms.MenuItem();
77 this.mnuRemoveAV = new System.Windows.Forms.MenuItem();
78 this.mnuEditAV = new System.Windows.Forms.MenuItem();
79 this.mnuCalendar = new System.Windows.Forms.MenuItem();
80 this.mnu1Day = new System.Windows.Forms.MenuItem();
81 this.mnu5Day = new System.Windows.Forms.MenuItem();
82 this.mnu7Day = new System.Windows.Forms.MenuItem();
83 this.menuItem7 = new System.Windows.Forms.MenuItem();
84 this.mnuTimeScale = new System.Windows.Forms.MenuItem();
85 this.mnu10Minute = new System.Windows.Forms.MenuItem();
86 this.mnu15Minute = new System.Windows.Forms.MenuItem();
87 this.mnu20Minute = new System.Windows.Forms.MenuItem();
88 this.mnu30Minute = new System.Windows.Forms.MenuItem();
89 this.mnuViewRightPanel = new System.Windows.Forms.MenuItem();
90 this.mnuHelp = new System.Windows.Forms.MenuItem();
91 this.mnuHelpAbout = new System.Windows.Forms.MenuItem();
92 this.splitter1 = new System.Windows.Forms.Splitter();
93 this.panelRight.SuspendLayout();
94 this.panelClip.SuspendLayout();
95 this.panelBottom.SuspendLayout();
96 this.panelTop.SuspendLayout();
97 this.panelCenter.SuspendLayout();
98 this.SuspendLayout();
99 //
100 // panelRight
101 //
102 this.panelRight.Controls.Add(this.panelClip);
103 this.panelRight.Dock = System.Windows.Forms.DockStyle.Right;
104 this.panelRight.Location = new System.Drawing.Point(728, 0);
105 this.panelRight.Name = "panelRight";
106 this.panelRight.Size = new System.Drawing.Size(120, 517);
107 this.panelRight.TabIndex = 1;
108 //
109 // panelClip
110 //
111 this.panelClip.Controls.Add(this.lstClip);
112 this.panelClip.Controls.Add(this.label1);
113 this.panelClip.Dock = System.Windows.Forms.DockStyle.Top;
114 this.panelClip.Location = new System.Drawing.Point(0, 0);
115 this.panelClip.Name = "panelClip";
116 this.panelClip.Size = new System.Drawing.Size(120, 448);
117 this.panelClip.TabIndex = 1;
118 //
119 // lstClip
120 //
121 this.lstClip.AllowDrop = true;
122 this.lstClip.ContextMenu = this.ctxApptClipMenu;
123 this.lstClip.DisplayMember = "ToString()";
124 this.lstClip.Dock = System.Windows.Forms.DockStyle.Fill;
125 this.lstClip.Location = new System.Drawing.Point(0, 32);
126 this.lstClip.Name = "lstClip";
127 this.lstClip.Size = new System.Drawing.Size(120, 407);
128 this.lstClip.TabIndex = 0;
129 this.lstClip.DragDrop += new System.Windows.Forms.DragEventHandler(this.lstClip_DragDrop);
130 this.lstClip.MouseMove += new System.Windows.Forms.MouseEventHandler(this.lstClip_MouseMove);
131 this.lstClip.MouseDown += new System.Windows.Forms.MouseEventHandler(this.lstClip_MouseDown);
132 this.lstClip.DragEnter += new System.Windows.Forms.DragEventHandler(this.lstClip_DragEnter);
133 //
134 // ctxApptClipMenu
135 //
136 this.ctxApptClipMenu.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] {
137 this.mnuRemoveClipItem,
138 this.mnuClearClipItems});
139 this.ctxApptClipMenu.Popup += new System.EventHandler(this.ctxApptClipMenu_Popup);
140 //
141 // mnuRemoveClipItem
142 //
143 this.mnuRemoveClipItem.Index = 0;
144 this.mnuRemoveClipItem.Text = "Remove Item";
145 this.mnuRemoveClipItem.Click += new System.EventHandler(this.mnuRemoveClipItem_Click);
146 //
147 // mnuClearClipItems
148 //
149 this.mnuClearClipItems.Index = 1;
150 this.mnuClearClipItems.Text = "Clear All";
151 this.mnuClearClipItems.Click += new System.EventHandler(this.mnuClearClipItems_Click);
152 //
153 // label1
154 //
155 this.label1.Dock = System.Windows.Forms.DockStyle.Top;
156 this.label1.Location = new System.Drawing.Point(0, 0);
157 this.label1.Name = "label1";
158 this.label1.Size = new System.Drawing.Size(120, 32);
159 this.label1.TabIndex = 1;
160 this.label1.Text = "Access Block Clipboard";
161 this.label1.TextAlign = System.Drawing.ContentAlignment.BottomCenter;
162 //
163 // panelBottom
164 //
165 this.panelBottom.Controls.Add(this.statusBar1);
166 this.panelBottom.Dock = System.Windows.Forms.DockStyle.Bottom;
167 this.panelBottom.Location = new System.Drawing.Point(8, 493);
168 this.panelBottom.Name = "panelBottom";
169 this.panelBottom.Size = new System.Drawing.Size(720, 24);
170 this.panelBottom.TabIndex = 2;
171 //
172 // statusBar1
173 //
174 this.statusBar1.Dock = System.Windows.Forms.DockStyle.Fill;
175 this.statusBar1.Location = new System.Drawing.Point(0, 0);
176 this.statusBar1.Name = "statusBar1";
177 this.statusBar1.Size = new System.Drawing.Size(720, 24);
178 this.statusBar1.SizingGrip = false;
179 this.statusBar1.TabIndex = 1;
180 //
181 // panelTop
182 //
183 this.panelTop.Controls.Add(this.dateTimePicker1);
184 this.panelTop.Controls.Add(this.lblResource);
185 this.panelTop.Dock = System.Windows.Forms.DockStyle.Top;
186 this.panelTop.Location = new System.Drawing.Point(8, 0);
187 this.panelTop.Name = "panelTop";
188 this.panelTop.Size = new System.Drawing.Size(720, 24);
189 this.panelTop.TabIndex = 3;
190 //
191 // dateTimePicker1
192 //
193 this.dateTimePicker1.Dock = System.Windows.Forms.DockStyle.Right;
194 this.dateTimePicker1.DropDownAlign = System.Windows.Forms.LeftRightAlignment.Right;
195 this.dateTimePicker1.Format = System.Windows.Forms.DateTimePickerFormat.Short;
196 this.dateTimePicker1.Location = new System.Drawing.Point(592, 0);
197 this.dateTimePicker1.Name = "dateTimePicker1";
198 this.dateTimePicker1.Size = new System.Drawing.Size(128, 20);
199 this.dateTimePicker1.TabIndex = 4;
200 this.dateTimePicker1.ValueChanged += new System.EventHandler(this.dateTimePicker1_ValueChanged);
201 //
202 // lblResource
203 //
204 this.lblResource.Dock = System.Windows.Forms.DockStyle.Fill;
205 this.lblResource.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
206 this.lblResource.ForeColor = System.Drawing.SystemColors.Highlight;
207 this.lblResource.Location = new System.Drawing.Point(0, 0);
208 this.lblResource.Name = "lblResource";
209 this.lblResource.Size = new System.Drawing.Size(720, 24);
210 this.lblResource.TabIndex = 3;
211 this.lblResource.Text = "lblResource";
212 //
213 // panelCenter
214 //
215 this.panelCenter.Controls.Add(this.calendarGrid1);
216 this.panelCenter.Dock = System.Windows.Forms.DockStyle.Fill;
217 this.panelCenter.Location = new System.Drawing.Point(8, 24);
218 this.panelCenter.Name = "panelCenter";
219 this.panelCenter.Size = new System.Drawing.Size(712, 469);
220 this.panelCenter.TabIndex = 4;
221 //
222 // calendarGrid1
223 //
224 this.calendarGrid1.AllowDrop = true;
225 this.calendarGrid1.Appointments = null;
226 this.calendarGrid1.ApptDragSource = null;
227 this.calendarGrid1.AutoScroll = true;
228 this.calendarGrid1.AutoScrollMinSize = new System.Drawing.Size(600, 1898);
229 this.calendarGrid1.AvailabilityArray = null;
230 this.calendarGrid1.BackColor = System.Drawing.SystemColors.Window;
231 this.calendarGrid1.Columns = 5;
232 this.calendarGrid1.ContextMenu = this.ctxCalendarGrid;
233 this.calendarGrid1.Dock = System.Windows.Forms.DockStyle.Fill;
234 this.calendarGrid1.DrawWalkIns = true;
235 this.calendarGrid1.GridBackColor = "blue";
236 this.calendarGrid1.GridEnter = false;
237 this.calendarGrid1.Location = new System.Drawing.Point(0, 0);
238 this.calendarGrid1.Name = "calendarGrid1";
239 this.calendarGrid1.Resources = ((System.Collections.ArrayList)(resources.GetObject("calendarGrid1.Resources")));
240 this.calendarGrid1.SelectedAppointment = 0;
241 this.calendarGrid1.Size = new System.Drawing.Size(712, 469);
242 this.calendarGrid1.StartDate = new System.DateTime(2003, 1, 27, 0, 0, 0, 0);
243 this.calendarGrid1.TabIndex = 2;
244 this.calendarGrid1.TimeScale = 20;
245 this.calendarGrid1.DoubleClick += new System.EventHandler(this.calendarGrid1_DoubleClick);
246 this.calendarGrid1.CGSelectionChanged += new IndianHealthService.ClinicalScheduling.CGSelectionChangedHandler(this.calendarGrid1_CGSelectionChanged);
247 this.calendarGrid1.CGAppointmentChanged += new IndianHealthService.ClinicalScheduling.CGAppointmentChangedHandler(this.calendarGrid1_CGAppointmentChanged);
248 this.calendarGrid1.CGAppointmentAdded += new IndianHealthService.ClinicalScheduling.CGAppointmentChangedHandler(this.calendarGrid1_CGAppointmentAdded);
249 //
250 // ctxCalendarGrid
251 //
252 this.ctxCalendarGrid.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] {
253 this.ctxCalGridAdd,
254 this.ctxCalGridEdit,
255 this.ctxCalGridDelete});
256 this.ctxCalendarGrid.Popup += new System.EventHandler(this.ctxCalendarGrid_Popup);
257 //
258 // ctxCalGridAdd
259 //
260 this.ctxCalGridAdd.Index = 0;
261 this.ctxCalGridAdd.Text = "Add New Access Block";
262 this.ctxCalGridAdd.Click += new System.EventHandler(this.ctxCalGridAdd_Click);
263 //
264 // ctxCalGridEdit
265 //
266 this.ctxCalGridEdit.Index = 1;
267 this.ctxCalGridEdit.Text = "Edit Access Block";
268 this.ctxCalGridEdit.Click += new System.EventHandler(this.ctxCalGridEdit_Click);
269 //
270 // ctxCalGridDelete
271 //
272 this.ctxCalGridDelete.Index = 2;
273 this.ctxCalGridDelete.Text = "Delete Access Block";
274 this.ctxCalGridDelete.Click += new System.EventHandler(this.ctxCalGridDelete_Click);
275 //
276 // tvSchedules
277 //
278 this.tvSchedules.BackColor = System.Drawing.SystemColors.ControlLight;
279 this.tvSchedules.Dock = System.Windows.Forms.DockStyle.Left;
280 this.tvSchedules.HotTracking = true;
281 this.tvSchedules.Location = new System.Drawing.Point(0, 0);
282 this.tvSchedules.Name = "tvSchedules";
283 this.tvSchedules.Size = new System.Drawing.Size(8, 517);
284 this.tvSchedules.Sorted = true;
285 this.tvSchedules.TabIndex = 5;
286 //
287 // mainMenu1
288 //
289 this.mainMenu1.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] {
290 this.menuItem1,
291 this.mnuAvailability,
292 this.mnuCalendar,
293 this.mnuHelp});
294 //
295 // menuItem1
296 //
297 this.menuItem1.Index = 0;
298 this.menuItem1.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] {
299 this.mnuLoadTemplate,
300 this.mnuSaveTemplate,
301 this.menuItem6,
302 this.mnuSchedulingManagment,
303 this.menuItem5,
304 this.mnuClose});
305 this.menuItem1.Text = "&File";
306 //
307 // mnuLoadTemplate
308 //
309 this.mnuLoadTemplate.Index = 0;
310 this.mnuLoadTemplate.Shortcut = System.Windows.Forms.Shortcut.CtrlA;
311 this.mnuLoadTemplate.Text = "&Apply Template";
312 this.mnuLoadTemplate.Click += new System.EventHandler(this.mnuLoadTemplate_Click);
313 //
314 // mnuSaveTemplate
315 //
316 this.mnuSaveTemplate.Index = 1;
317 this.mnuSaveTemplate.Shortcut = System.Windows.Forms.Shortcut.CtrlS;
318 this.mnuSaveTemplate.Text = "&Save Template";
319 this.mnuSaveTemplate.Click += new System.EventHandler(this.mnuSaveTemplate_Click);
320 //
321 // menuItem6
322 //
323 this.menuItem6.Index = 2;
324 this.menuItem6.Text = "-";
325 //
326 // mnuSchedulingManagment
327 //
328 this.mnuSchedulingManagment.Index = 3;
329 this.mnuSchedulingManagment.Shortcut = System.Windows.Forms.Shortcut.CtrlShiftM;
330 this.mnuSchedulingManagment.Text = "Scheduling &Management";
331 this.mnuSchedulingManagment.Click += new System.EventHandler(this.mnuSchedulingManagment_Click);
332 //
333 // menuItem5
334 //
335 this.menuItem5.Index = 4;
336 this.menuItem5.Text = "-";
337 //
338 // mnuClose
339 //
340 this.mnuClose.Index = 5;
341 this.mnuClose.Shortcut = System.Windows.Forms.Shortcut.CtrlW;
342 this.mnuClose.Text = "&Close";
343 this.mnuClose.Click += new System.EventHandler(this.mnuClose_Click);
344 //
345 // mnuAvailability
346 //
347 this.mnuAvailability.Index = 1;
348 this.mnuAvailability.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] {
349 this.mnuAddNewAV,
350 this.mnuRemoveAV,
351 this.mnuEditAV});
352 this.mnuAvailability.Text = "&Access Blocks";
353 this.mnuAvailability.Popup += new System.EventHandler(this.mnuAvailability_Popup);
354 //
355 // mnuAddNewAV
356 //
357 this.mnuAddNewAV.Index = 0;
358 this.mnuAddNewAV.Shortcut = System.Windows.Forms.Shortcut.CtrlN;
359 this.mnuAddNewAV.Text = "Add &New Block";
360 this.mnuAddNewAV.Click += new System.EventHandler(this.mnuAddNewAV_Click);
361 //
362 // mnuRemoveAV
363 //
364 this.mnuRemoveAV.Index = 1;
365 this.mnuRemoveAV.Shortcut = System.Windows.Forms.Shortcut.CtrlR;
366 this.mnuRemoveAV.Text = "&Remove Block";
367 this.mnuRemoveAV.Click += new System.EventHandler(this.mnuRemoveAV_Click);
368 //
369 // mnuEditAV
370 //
371 this.mnuEditAV.Index = 2;
372 this.mnuEditAV.Shortcut = System.Windows.Forms.Shortcut.CtrlE;
373 this.mnuEditAV.Text = "&Edit Block";
374 this.mnuEditAV.Click += new System.EventHandler(this.mnuEditAV_Click);
375 //
376 // mnuCalendar
377 //
378 this.mnuCalendar.Index = 2;
379 this.mnuCalendar.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] {
380 this.mnu1Day,
381 this.mnu5Day,
382 this.mnu7Day,
383 this.menuItem7,
384 this.mnuTimeScale,
385 this.mnuViewRightPanel});
386 this.mnuCalendar.Text = "&View";
387 //
388 // mnu1Day
389 //
390 this.mnu1Day.Index = 0;
391 this.mnu1Day.Shortcut = System.Windows.Forms.Shortcut.Ctrl1;
392 this.mnu1Day.Text = "&1-Day View";
393 this.mnu1Day.Click += new System.EventHandler(this.mnu1Day_Click);
394 //
395 // mnu5Day
396 //
397 this.mnu5Day.Index = 1;
398 this.mnu5Day.Shortcut = System.Windows.Forms.Shortcut.Ctrl5;
399 this.mnu5Day.Text = "&5-Day View";
400 this.mnu5Day.Click += new System.EventHandler(this.mnu5Day_Click);
401 //
402 // mnu7Day
403 //
404 this.mnu7Day.Index = 2;
405 this.mnu7Day.Shortcut = System.Windows.Forms.Shortcut.Ctrl7;
406 this.mnu7Day.Text = "&7-Day View";
407 this.mnu7Day.Click += new System.EventHandler(this.mnu7Day_Click);
408 //
409 // menuItem7
410 //
411 this.menuItem7.Index = 3;
412 this.menuItem7.Text = "-";
413 //
414 // mnuTimeScale
415 //
416 this.mnuTimeScale.Index = 4;
417 this.mnuTimeScale.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] {
418 this.mnu10Minute,
419 this.mnu15Minute,
420 this.mnu20Minute,
421 this.mnu30Minute});
422 this.mnuTimeScale.Text = "&Time Scale";
423 //
424 // mnu10Minute
425 //
426 this.mnu10Minute.Index = 0;
427 this.mnu10Minute.Shortcut = System.Windows.Forms.Shortcut.Ctrl0;
428 this.mnu10Minute.Text = "&10-Minute";
429 this.mnu10Minute.Click += new System.EventHandler(this.mnu10Minute_Click);
430 //
431 // mnu15Minute
432 //
433 this.mnu15Minute.Index = 1;
434 this.mnu15Minute.Shortcut = System.Windows.Forms.Shortcut.Ctrl4;
435 this.mnu15Minute.Text = "&15-Minute";
436 this.mnu15Minute.Click += new System.EventHandler(this.mnu15Minute_Click);
437 //
438 // mnu20Minute
439 //
440 this.mnu20Minute.Index = 2;
441 this.mnu20Minute.Shortcut = System.Windows.Forms.Shortcut.Ctrl3;
442 this.mnu20Minute.Text = "&20-Minute";
443 this.mnu20Minute.Click += new System.EventHandler(this.mnu20Minute_Click);
444 //
445 // mnu30Minute
446 //
447 this.mnu30Minute.Index = 3;
448 this.mnu30Minute.Shortcut = System.Windows.Forms.Shortcut.Ctrl2;
449 this.mnu30Minute.Text = "&30-Minute";
450 this.mnu30Minute.Click += new System.EventHandler(this.mnu30Minute_Click);
451 //
452 // mnuViewRightPanel
453 //
454 this.mnuViewRightPanel.Index = 5;
455 this.mnuViewRightPanel.Text = "&Access Block Clipboard";
456 this.mnuViewRightPanel.Click += new System.EventHandler(this.mnuViewRightPanel_Click);
457 //
458 // mnuHelp
459 //
460 this.mnuHelp.Index = 3;
461 this.mnuHelp.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] {
462 this.mnuHelpAbout});
463 this.mnuHelp.Text = "&Help";
464 //
465 // mnuHelpAbout
466 //
467 this.mnuHelpAbout.Index = 0;
468 this.mnuHelpAbout.Text = "&About";
469 this.mnuHelpAbout.Click += new System.EventHandler(this.mnuHelpAbout_Click);
470 //
471 // splitter1
472 //
473 this.splitter1.Dock = System.Windows.Forms.DockStyle.Right;
474 this.splitter1.Location = new System.Drawing.Point(720, 24);
475 this.splitter1.Name = "splitter1";
476 this.splitter1.Size = new System.Drawing.Size(8, 469);
477 this.splitter1.TabIndex = 6;
478 this.splitter1.TabStop = false;
479 //
480 // CGAVView
481 //
482 this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
483 this.ClientSize = new System.Drawing.Size(848, 517);
484 this.Controls.Add(this.panelCenter);
485 this.Controls.Add(this.splitter1);
486 this.Controls.Add(this.panelTop);
487 this.Controls.Add(this.panelBottom);
488 this.Controls.Add(this.panelRight);
489 this.Controls.Add(this.tvSchedules);
490 this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
491 this.Menu = this.mainMenu1;
492 this.Name = "CGAVView";
493 this.Text = "CGAVView";
494 this.Load += new System.EventHandler(this.CGAVView_Load);
495 this.Closing += new System.ComponentModel.CancelEventHandler(this.CGAVView_Closing);
496 this.panelRight.ResumeLayout(false);
497 this.panelClip.ResumeLayout(false);
498 this.panelBottom.ResumeLayout(false);
499 this.panelTop.ResumeLayout(false);
500 this.panelCenter.ResumeLayout(false);
501 this.ResumeLayout(false);
502
503 }
504 #endregion
505
506 private IContainer components;
507
508 #region Member Variables
509
510 private CGAVDocument m_Document;
511 private System.Windows.Forms.Panel panelRight;
512 private System.Windows.Forms.Panel panelBottom;
513 private System.Windows.Forms.Panel panelTop;
514 private System.Windows.Forms.Panel panelCenter;
515 private System.Windows.Forms.Label lblResource;
516 private System.Windows.Forms.TreeView tvSchedules;
517 private System.Windows.Forms.DateTimePicker dateTimePicker1;
518 private IndianHealthService.ClinicalScheduling.CalendarGrid calendarGrid1;
519 private System.Windows.Forms.StatusBar statusBar1;
520 private System.Windows.Forms.MainMenu mainMenu1;
521 private System.Windows.Forms.MenuItem mnuAvailability;
522 private System.Windows.Forms.MenuItem mnuAddNewAV;
523 private System.Windows.Forms.MenuItem mnuRemoveAV;
524 private System.Windows.Forms.MenuItem mnuEditAV;
525 private System.Windows.Forms.MenuItem menuItem1;
526 private System.Windows.Forms.MenuItem mnuSchedulingManagment;
527 private System.Windows.Forms.MenuItem menuItem5;
528 private System.Windows.Forms.MenuItem menuItem6;
529 private System.Windows.Forms.MenuItem mnuClose;
530 private System.Windows.Forms.MenuItem mnuHelp;
531 private System.Windows.Forms.MenuItem mnuHelpAbout;
532 private System.Windows.Forms.MenuItem mnuLoadTemplate;
533 private System.Windows.Forms.MenuItem mnuSaveTemplate;
534 private System.Windows.Forms.Panel panelClip;
535 private System.Windows.Forms.ListBox lstClip;
536 private System.Windows.Forms.Label label1;
537 private System.Windows.Forms.MenuItem mnuCalendar;
538 private System.Windows.Forms.MenuItem mnuViewRightPanel;
539 private System.Windows.Forms.MenuItem mnuTimeScale;
540 private System.Windows.Forms.MenuItem mnu10Minute;
541 private System.Windows.Forms.MenuItem mnu15Minute;
542 private System.Windows.Forms.MenuItem mnu20Minute;
543 private System.Windows.Forms.MenuItem mnu30Minute;
544 private System.Windows.Forms.MenuItem menuItem7;
545 private System.Windows.Forms.MenuItem mnu1Day;
546 private System.Windows.Forms.MenuItem mnu5Day;
547 private System.Windows.Forms.MenuItem mnu7Day;
548 private System.Windows.Forms.Splitter splitter1;
549 private CGDocumentManager m_DocManager;
550 private CGAppointments m_ClipList;
551 private System.Windows.Forms.ContextMenu ctxApptClipMenu;
552 private System.Windows.Forms.MenuItem mnuRemoveClipItem;
553 private System.Windows.Forms.MenuItem mnuClearClipItems;
554 private System.Windows.Forms.ContextMenu ctxCalendarGrid;
555 private System.Windows.Forms.MenuItem ctxCalGridAdd;
556 private System.Windows.Forms.MenuItem ctxCalGridEdit;
557 private System.Windows.Forms.MenuItem ctxCalGridDelete;
558 private bool m_bDragDropStart = false;
559
560 #endregion
561
562 #region Properties
563
564 /// <summary>
565 /// Access the CalendarGrid associated with this view
566 /// </summary>
567 public CalendarGrid CGrid
568 {
569 get
570 {
571 return this.calendarGrid1;
572 }
573 }
574 /// <summary>
575 /// Accesses the document associated with this view
576 /// </summary>
577 public CGAVDocument Document
578 {
579 get
580 {
581 return this.m_Document;
582 }
583 set
584 {
585 this.m_Document = value;
586 }
587 }
588
589 public CGDocumentManager DocManager
590 {
591 get
592 {
593 return m_DocManager;
594 }
595 set
596 {
597 m_DocManager = value;
598 }
599
600 }
601
602 public CGAppointments AVBlocks
603 {
604 get
605 {
606 return this.calendarGrid1.Appointments;
607 }
608 set
609 {
610 this.calendarGrid1.Appointments = value;
611 }
612 }
613
614 public DateTime StartDate
615 {
616 get
617 {
618 return this.calendarGrid1.StartDate;
619 }
620 set
621 {
622 this.calendarGrid1.StartDate = value;
623 }
624 }
625
626 #endregion //Properties
627
628 #region Methods
629
630 private void RaiseRPMSEvent(string sEvent, string sParams)
631 {
632 try
633 {
634 //Signal RPMS to raise an event
635// string sSql;
636// sSql = "BSDX RAISE EVENT^" + sEvent + "^" + sParams + "^^";
637// DataTable dtAppt =m_DocManager.RPMSDataTable(sSql, "RaiseEvent");
638 this.m_DocManager.ConnectInfo.RaiseEvent(sEvent, sParams, true);
639 }
640 catch (Exception ex)
641 {
642 Debug.Write(ex.Message);
643 }
644 }
645
646 void UpdateStatusBar(DateTime dStart, DateTime dEnd)
647 {
648 string sMsg = dStart.ToShortTimeString() + " to " + dEnd.ToShortTimeString();
649 this.statusBar1.Text = sMsg;
650 }
651
652 private void AvailabilityEdit()
653 {
654 try
655 {
656 int nApptID = this.calendarGrid1.SelectedAppointment;
657 if (nApptID != 0)
658 {
659
660 CGAppointment pAppt = this.Document.AVBlocks.GetAppointment(nApptID);
661 DAccessBlock dA = new DAccessBlock();
662 dA.InitializePage(pAppt, m_DocManager.GlobalDataSet);
663 calendarGrid1.CGToolTip.Active = false;
664 if (dA.ShowDialog(this) == DialogResult.Cancel)
665 {
666 calendarGrid1.CGToolTip.Active = true;
667 return;
668 }
669 calendarGrid1.CGToolTip.Active = true;
670 this.Document.DeleteAvailability(nApptID);
671 this.Document.CreateAppointment(dA.Appointment);
672 this.calendarGrid1.Invalidate();
673 this.m_DocManager.UpdateViews((string) this.m_Document.Resources[0], "");
674 }
675 }
676 catch (Exception ex)
677 {
678 MessageBox.Show("Unable to add new access block " + ex.Message, "Clinical Scheduling");
679 return;
680 }
681 try
682 {
683 RaiseRPMSEvent("BSDX SCHEDULE", m_Document.DocName);
684 this.calendarGrid1.Invalidate();
685 }
686 catch (Exception ex)
687 {
688 Debug.Write(ex.Message);
689 }
690 }
691
692 private void AvailabilityAddNew()
693 {
694 try
695 {
696 CGAppointment appt = new CGAppointment();
697
698 //Get Time and Resource from Selected Cell
699 DateTime dStart = DateTime.Today;
700 DateTime dEnd = DateTime.Today;
701 string sResource = "";
702 bool bRet = this.calendarGrid1.GetSelectedTime(out dStart, out dEnd, out sResource);
703 if (bRet == false)
704 return;
705
706 foreach (CGAppointment a in this.Document.m_AVBlocks.AppointmentTable.Values)
707 {
708 DateTime sStart2 = a.StartTime;
709 DateTime sEnd2 = a.EndTime;
710 if (CGSchedLib.TimesOverlap(dStart, dEnd, a.StartTime, a.EndTime))
711 {
712 MessageBox.Show("Access blocks may not overlap.","Clinical Scheduling", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
713 return;
714 }
715 }
716
717 string sNote = "";
718 DAccessBlock dA = new DAccessBlock();
719 dA.InitializePage(dStart, dEnd, sResource, sNote, this.m_DocManager.GlobalDataSet);
720 if (dA.ShowDialog(this) == DialogResult.Cancel)
721 {
722 return;
723 }
724 appt.StartTime = dStart;
725 appt.EndTime = dEnd;
726 appt.Resource = sResource;
727 appt.Note = " " + dA.Note; // + ": " + dA.Slots.ToString()+ " Slots";
728 appt.AccessTypeID = dA.AccessTypeID;
729 appt.Slots = dA.Slots;
730
731 //Call Document to add a new appointment
732 this.Document.CreateAppointment(appt);
733 this.m_DocManager.UpdateViews((string) this.m_Document.Resources[0], "");
734 }
735 catch (Exception ex)
736 {
737 MessageBox.Show("Unable to add new access block " + ex.Message, "Clinical Scheduling");
738 return;
739 }
740 try
741 {
742 RaiseRPMSEvent("BSDX SCHEDULE", m_Document.DocName);
743 this.calendarGrid1.Invalidate();
744 }
745 catch (Exception ex)
746 {
747 Debug.Write(ex.Message);
748 }
749 }//End AvailabilityAddNew
750
751 private void AppointmentDelete()
752 {
753 calendarGrid1.CGToolTip.Active = false;
754 string sMsg = " this access block?";
755 if (calendarGrid1.SelectedAppointments.AppointmentTable.Count > 1)
756 sMsg = " these access blocks?";
757
758 if (MessageBox.Show("Are you sure you want to delete" + sMsg, "Clinical Scheduling", MessageBoxButtons.YesNo) != DialogResult.Yes)
759 {
760 calendarGrid1.CGToolTip.Active = true;
761 return;
762 }
763 calendarGrid1.CGToolTip.Active = true;
764
765 bool bDeleted = false;
766 foreach (CGAppointment a in this.calendarGrid1.SelectedAppointments.AppointmentTable.Values)
767 {
768 int nApptID = a.AppointmentKey;
769 Debug.Assert(nApptID != 0);
770 try
771 {
772 Document.DeleteAvailability(nApptID);
773 bDeleted = true;
774 }
775 catch (Exception ex)
776 {
777 MessageBox.Show("Unable to delete access block" + ex.Message, "Clinical Scheduling");
778 }
779 }
780 if (bDeleted == true)
781 {
782 try
783 {
784 this.m_DocManager.UpdateViews((string) this.m_Document.Resources[0], "");
785 RaiseRPMSEvent("BSDX SCHEDULE", m_Document.DocName);
786 }
787 catch (Exception ex)
788 {
789 Debug.Write(ex.Message);
790 }
791 this.calendarGrid1.Invalidate();
792 }
793 }
794
795 private void AccessTypeManage()
796 {
797// DAccessType dAT = new DAccessType();
798// dAT.InitializePage(0, this.m_DocManager.GlobalDataSet, this.m_DocManager.ADOConnection);
799// if (dAT.ShowDialog(this) == DialogResult.Cancel)
800// {
801// return;
802// }
803 }
804
805 private void SchedulingManagement()
806 {
807 try
808 {
809 bool bLock = DocManager.ConnectInfo.bmxNetLib.Lock("^BSDXMGR", "+");
810 if (bLock == false)
811 {
812 throw new Exception("Another user is currently in Scheduling Management. Try later.");
813 }
814
815 DManagement dMgm = new DManagement();
816 dMgm.InitializeDialog(this.m_DocManager);
817
818 if (dMgm.ShowDialog(this) == DialogResult.Cancel)
819 {
820 return;
821 }
822 bLock = DocManager.ConnectInfo.bmxNetLib.Lock("^BSDXMGR", "-");
823 }
824 catch (Exception ex)
825 {
826 MessageBox.Show("Scheduling Management Error: " + ex.Message, "Clinical Scheduling");
827 }
828 }
829
830 public void UpdateArrays()
831 {
832 //TODO: Create these components
833 this.calendarGrid1.Resources = this.m_Document.Resources;
834 this.calendarGrid1.OnUpdateArrays();
835 this.lblResource.Text = this.m_Document.DocName;
836
837 }
838
839 /// <summary>
840 /// Clean up any resources being used.
841 /// </summary>
842 protected override void Dispose( bool disposing )
843 {
844 if( disposing )
845 {
846 if(components != null)
847 {
848 components.Dispose();
849 }
850 }
851 base.Dispose( disposing );
852 }
853 #endregion //Methods
854
855 #region Events
856
857 private void dateTimePicker1_ValueChanged(object sender, System.EventArgs e)
858 {
859 DateTime dDate = dateTimePicker1.Value;
860 dDate = dDate.Date;
861 this.Document.SelectedDate = dDate;
862 if (this.calendarGrid1.Columns > 1)
863 {
864 this.StartDate = this.Document.StartDate;
865 }
866 else
867 {
868 this.StartDate = this.Document.SelectedDate;
869 }
870 this.Document.UpdateAllViews();
871 this.calendarGrid1.Invalidate();
872 }
873
874 private void CGAVView_Load(object sender, System.EventArgs e)
875 {
876 Debug.Assert (this.Document != null);
877
878 //Register the view
879 CGDocumentManager.Current.RegisterAVDocumentView(this.Document, this);
880 this.mnu5Day.Click += new System.EventHandler(this.dateTimePicker1_ValueChanged); // MJL 1/17/2007
881 this.mnu7Day.Click += new System.EventHandler(this.dateTimePicker1_ValueChanged);
882
883 //Set start date
884 DateTime startDate,endDate;
885 Document.WeekNeedsRefresh(1, DateTime.Today, out startDate, out endDate);
886 this.StartDate = startDate;
887 //Draw the calendar
888 this.calendarGrid1.OnUpdateArrays();
889 this.calendarGrid1.Invalidate();
890
891 }
892
893 private void CGAVView_Closing(object sender, System.ComponentModel.CancelEventArgs e)
894 {
895 this.calendarGrid1.CloseGrid();
896 DocManager.ConnectInfo.bmxNetLib.Lock("^BSDXRES(" + Document.ResourceID.ToString() + ")", "-");
897 }
898
899 private void calendarGrid1_CGSelectionChanged(object sender, IndianHealthService.ClinicalScheduling.CGSelectionChangedArgs e)
900 {
901 UpdateStatusBar(e.StartTime, e.EndTime);
902 }
903
904 private void calendarGrid1_CGAppointmentChanged(object sender, IndianHealthService.ClinicalScheduling.CGAppointmentChangedArgs e)
905 {
906 try
907 {
908// this.DocManager.EnableAutoRefresh(false);
909
910 if (MessageBox.Show("Are you sure you want to move this access block?", "Clinical Scheduling", MessageBoxButtons.YesNo) != DialogResult.Yes)
911 return;
912
913 m_Document.ChangeAppointmentTime(e.Appointment, e.StartTime, e.EndTime, e.Resource);
914 this.m_DocManager.UpdateViews((string) this.m_Document.Resources[0], "");
915 }
916 catch (Exception ex)
917 {
918 MessageBox.Show("Unable to change access block " + ex.Message, "Clinical Scheduling");
919 this.m_DocManager.UpdateViews();
920 return;
921 }
922 finally
923 {
924// this.DocManager.EnableAutoRefresh(true);
925 }
926 try
927 {
928 RaiseRPMSEvent("BSDX SCHEDULE", m_Document.DocName);
929 this.calendarGrid1.Invalidate();
930 }
931 catch (Exception ex)
932 {
933 Debug.Write(ex.Message);
934 }
935 }
936
937 private void mnuAddNewAV_Click(object sender, System.EventArgs e)
938 {
939 AvailabilityAddNew();
940 }
941
942 private void mnuRemoveAV_Click(object sender, System.EventArgs e)
943 {
944 this.AppointmentDelete();
945 }
946
947 private void mnuManageAT_Click(object sender, System.EventArgs e)
948 {
949 AccessTypeManage();
950 }
951
952 private void mnuEditAV_Click(object sender, System.EventArgs e)
953 {
954 AvailabilityEdit();
955 }
956
957 private void mnuAvailability_Popup(object sender, System.EventArgs e)
958 {
959 this.mnuAddNewAV.Enabled = (this.calendarGrid1.SelectedRange.Cells.CellCount > 0);
960 this.mnuEditAV.Enabled = (this.calendarGrid1.SelectedAppointment > 0);
961 this.mnuRemoveAV.Enabled = (this.calendarGrid1.SelectedAppointment > 0);
962 }
963
964 private void mnuSchedulingManagment_Click(object sender, System.EventArgs e)
965 {
966 SchedulingManagement();
967 }
968
969 #endregion //Events
970
971 private void mnuClose_Click(object sender, System.EventArgs e)
972 {
973 DialogResult dr = MessageBox.Show("Are you sure you want to close this schedule?", Application.ProductName, MessageBoxButtons.OKCancel);
974 if (dr != DialogResult.OK)
975 return;
976
977 this.Close();
978 }
979
980 private void mnuHelpAbout_Click(object sender, System.EventArgs e)
981 {
982 MessageBox.Show("Clinical Scheduling Version " + Application.ProductVersion, "Clinical Scheduling", MessageBoxButtons.OK, MessageBoxIcon.Information);
983 }
984
985 private void ImplementMsg()
986 {
987 MessageBox.Show("Clinical Scheduling", "TODO: Implement this function");
988 }
989
990 private void mnuLoadTemplate_Click(object sender, System.EventArgs e)
991 {
992 /*
993 * Display dialog to collect:
994 * - Number of weeks to apply template
995 * - Starting week Monday
996 * - Template path & filename
997 *
998 * for each week,
999 * Delete all availability during that week
1000 * apply the template
1001 *
1002 */
1003 DAccessTemplate dlg = new DAccessTemplate();
1004 dlg.InitializePage();
1005 if (dlg.ShowDialog(this) == DialogResult.Cancel)
1006 {
1007 return;
1008 }
1009
1010 try
1011 {
1012 OpenFileDialog openFileDialog1 = dlg.FileDialog;
1013 Stream streamFile;
1014 if((streamFile = openFileDialog1.OpenFile())== null)
1015 {
1016 MessageBox.Show("Unable to open template file.");
1017 return;
1018 }
1019
1020 BinaryFormatter formatter = new BinaryFormatter();
1021 CGAppointments cgaTemp = (CGAppointments) formatter.Deserialize(streamFile);
1022 streamFile.Close();
1023
1024 DateTime dtStart = dlg.StartDate;
1025 DateTime newStartDate, newEndDate;
1026 this.Document.WeekNeedsRefresh(1,dtStart, out newStartDate, out newEndDate);
1027 dtStart = newStartDate;
1028 int nWeeksToApply = dlg.WeeksToApply;
1029 DateTime dtEnd = dtStart.AddDays(6); // or 7?
1030
1031 string sResourceID = this.m_Document.ResourceID.ToString();
1032 DataTable dt;
1033
1034 for (int j=1; j < nWeeksToApply + 1; j++)
1035 {
1036 //Convert start and end to string
1037 //string sStart = dtStart.ToString("M/d/yyyy");
1038 //string sEnd = dtEnd.ToString("M/d/yyyy");
1039 //i18n
1040 string sStart = FMDateTime.Create(dtStart).DateOnly.FMDateString;
1041 string sEnd = FMDateTime.Create(dtEnd).DateOnly.FMDateString;
1042 //Cancel all existing access blocks in the date range
1043 string sSql = "BSDX CANCEL AV BY DATE^" + sResourceID + "^" + sStart + "^" + sEnd;
1044 dt = this.m_DocManager.RPMSDataTable(sSql, "Cancelled");
1045
1046 //for each CGAppointment in AVBlocks, call AddNew
1047 string sResource = "";
1048 sResource = (string) this.Document.Resources[0];
1049 foreach (CGAppointment a in cgaTemp.AppointmentTable.Values)
1050 {
1051 //Change the resource to the current one
1052 a.Resource = sResource;
1053
1054 //Change the date to correspond to the GridColumn member
1055 int col = a.GridColumn;
1056 col--;
1057 DateTime dBuildDate = dtStart.Date;
1058 dBuildDate = dBuildDate.AddDays(col);
1059 dBuildDate = dBuildDate.AddHours(a.StartTime.Hour);
1060 dBuildDate = dBuildDate.AddMinutes(a.StartTime.Minute);
1061 a.StartTime = dBuildDate;
1062 dBuildDate = dtStart.Date;
1063 dBuildDate = dBuildDate.AddDays(col);
1064 dBuildDate = dBuildDate.AddHours(a.EndTime.Hour);
1065 dBuildDate = dBuildDate.AddMinutes(a.EndTime.Minute);
1066 a.EndTime = dBuildDate;
1067
1068 //Call Document to add a new appointment
1069 this.Document.CreateAppointmentAuto(a);
1070 }
1071
1072 //Increment start and end
1073 dtStart = dtStart.AddDays(7);
1074 dtEnd = dtStart.AddDays(6);
1075
1076 }//end for
1077 try
1078 {
1079 RaiseRPMSEvent("BSDX SCHEDULE", m_Document.DocName);
1080 }
1081 catch (Exception ex)
1082 {
1083 Debug.Write(ex.Message);
1084 }
1085 this.calendarGrid1.Invalidate();
1086 this.m_DocManager.UpdateViews((string) this.m_Document.Resources[0], "");
1087 }
1088 catch (Exception ex)
1089 {
1090 MessageBox.Show(this, "Error loading template: " + ex.Message, "Clinical Scheduling", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
1091 }
1092 }
1093
1094 //Check that there are no blocks in document
1095// if (this.Document.AVBlocks.AppointmentTable.Count > 0)
1096// {
1097// Exception bmxex = new Exception("You may not load a template if there are already access blocks defined for the week.");
1098// throw bmxex;
1099// }
1100// OpenFileDialog openFileDialog1 = new OpenFileDialog();
1101// string sPath = "";
1102// sPath = Environment.GetFolderPath(Environment.SpecialFolder.Personal);
1103//
1104// openFileDialog1.InitialDirectory = "c:\\" ;
1105// openFileDialog1.InitialDirectory = sPath ;
1106// openFileDialog1.Filter = "Schedule Template Files (*.bsdxa)|*.bsdxa|All files (*.*)|*.*" ;
1107// openFileDialog1.FilterIndex = 0 ;
1108// openFileDialog1.RestoreDirectory = true ;
1109
1110// Stream streamFile;
1111// if(openFileDialog1.ShowDialog() == DialogResult.OK)
1112// {
1113// if((streamFile = openFileDialog1.OpenFile())!= null)
1114// {
1115// BinaryFormatter formatter = new BinaryFormatter();
1116// CGAppointments cgaTemp = (CGAppointments) formatter.Deserialize(streamFile);
1117// streamFile.Close();
1118//
1119// //for each CGAppointment in AVBlocks, call AddNew
1120// string sResource = "";
1121// sResource = (string) this.Document.Resources[0];
1122// foreach (CGAppointment a in cgaTemp.AppointmentTable.Values)
1123// {
1124// //Change the resource to the current one
1125// a.Resource = sResource;
1126//
1127// //Change the date to correspond to the GridColumn member
1128// int col = a.GridColumn;
1129// Rectangle r = new Rectangle(0,0,0,0);
1130// int row = 5;
1131// CGCell c = new CGCell(r, row, col);
1132// DateTime dTemp = this.calendarGrid1.GetTimeFromCell(c);
1133// DateTime dBuildDate = dTemp.Date;
1134// dBuildDate = dBuildDate.AddHours(a.StartTime.Hour);
1135// dBuildDate = dBuildDate.AddMinutes(a.StartTime.Minute);
1136// a.StartTime = dBuildDate;
1137// dBuildDate = dTemp.Date;
1138// dBuildDate = dBuildDate.AddHours(a.EndTime.Hour);
1139// dBuildDate = dBuildDate.AddMinutes(a.EndTime.Minute);
1140// a.EndTime = dBuildDate;
1141//
1142// //Call Document to add a new appointment
1143// this.Document.CreateAppointment(a);
1144// }
1145// try
1146// {
1147// RaiseRPMSEvent("SCHEDULE-" + m_Document.DocName, "");
1148// }
1149// catch (Exception ex)
1150// {
1151// Debug.Write(ex.Message);
1152// }
1153// this.calendarGrid1.Invalidate();
1154// this.m_DocManager.UpdateViews((string) this.m_Document.Resources[0], "");
1155// }
1156// }
1157// }//end try
1158// catch (Exception ex)
1159// {
1160// MessageBox.Show(this, "Error loading template: " + ex.Message, "Clinical Scheduling", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
1161// }
1162// }
1163
1164 private void mnuSaveTemplate_Click(object sender, System.EventArgs e)
1165 {
1166 try
1167 {
1168 //Check that there is at least one block in document
1169// if (this.Document.AVBlocks.AppointmentTable.Count == 0)
1170// {
1171// Exception bmxex = new Exception("You may not save a template if there are no access blocks defined for the week.");
1172// throw bmxex;
1173// }
1174
1175 Stream streamFile ;
1176 SaveFileDialog saveFileDialog1 = new SaveFileDialog();
1177
1178 saveFileDialog1.Filter = "Schedule Template Files (*.bsdxa)|*.bsdxa|All files (*.*)|*.*" ;
1179 saveFileDialog1.FilterIndex = 0 ;
1180 saveFileDialog1.RestoreDirectory = true ;
1181 saveFileDialog1.AddExtension = true;
1182 saveFileDialog1.DefaultExt = "bsdxa";
1183
1184 //Iterate through AVBlocks and set the GridColumn member based on the date
1185 foreach (CGAppointment a in this.Document.AVBlocks.AppointmentTable.Values)
1186 {
1187 //Get the column by subtracting the grid's Start day from dStart.
1188 int col =(int) a.StartTime.DayOfWeek - (int) this.calendarGrid1.StartDate.DayOfWeek + 1;
1189 a.GridColumn = col;
1190 }
1191
1192 if(saveFileDialog1.ShowDialog() == DialogResult.OK)
1193 {
1194 if((streamFile = saveFileDialog1.OpenFile()) != null)
1195 {
1196 BinaryFormatter formatter = new BinaryFormatter();
1197
1198 formatter.Serialize(streamFile, this.Document.AVBlocks);
1199
1200 streamFile.Close();
1201 }
1202 }
1203 }
1204 catch (Exception ex)
1205 {
1206 MessageBox.Show(this, "Error saving template: " + ex.Message, "Clinical Scheduling", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
1207 }
1208 }
1209
1210 private void mnuViewRightPanel_Click(object sender, System.EventArgs e)
1211 {
1212 this.mnuViewRightPanel.Checked = this.panelRight.Visible;
1213 this.panelRight.Visible = !(this.panelRight.Visible);
1214 this.mnuViewRightPanel.Checked = !(this.mnuViewRightPanel.Checked);
1215 }
1216
1217 private void lstClip_DragDrop(object sender, System.Windows.Forms.DragEventArgs e)
1218 {
1219 try
1220 {
1221 CGAppointment a = (CGAppointment) e.Data.GetData(typeof(CGAppointment));
1222 if (m_ClipList.AppointmentTable.Contains((int) a.AppointmentKey))
1223 {
1224 return;
1225 }
1226 m_ClipList.AddAppointment(a);
1227 lstClip.Items.Add(a);
1228 }
1229 catch(Exception ex)
1230 {
1231 Debug.Write(ex.Message);
1232 }
1233 }
1234
1235 private void lstClip_DragEnter(object sender, System.Windows.Forms.DragEventArgs e)
1236 {
1237 bool b = e.Data.GetDataPresent(typeof(CGAppointment));
1238 if (b == true)
1239 {
1240 e.Effect = DragDropEffects.Move;
1241 }
1242 else
1243 {
1244 e.Effect = DragDropEffects.None;
1245 }
1246 }
1247
1248 private void lstClip_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
1249 {
1250 m_bDragDropStart = false;
1251 }
1252
1253 private void lstClip_MouseMove(object sender, System.Windows.Forms.MouseEventArgs e)
1254 {
1255 try
1256 {
1257 if ((m_bDragDropStart == false)&&(lstClip.SelectedIndex > -1))
1258 {
1259 CGAppointment a = (CGAppointment) lstClip.Items[lstClip.SelectedIndex];
1260 this.calendarGrid1.ApptDragSource = "list";
1261 DragDropEffects effect = DoDragDrop(a, DragDropEffects.Move);
1262 m_bDragDropStart = true;
1263 }
1264 }
1265 catch (Exception ex)
1266 {
1267 Debug.Write(ex.Message);
1268 }
1269 }
1270
1271 private void calendarGrid1_CGAppointmentAdded(object sender, IndianHealthService.ClinicalScheduling.CGAppointmentChangedArgs e)
1272 {
1273 //CalendarGrid Event raised when appointment is dragdropped onto the grid
1274
1275 try
1276 {
1277 CGAppointment aCopy = new CGAppointment();
1278 aCopy.CreateAppointment(e.StartTime, e.EndTime, e.Appointment.Note, 0, e.Resource);
1279 aCopy.AccessTypeID = e.AccessTypeID;
1280 aCopy.Slots = e.Slots;
1281
1282 m_Document.CreateAppointment(aCopy);
1283 // RaiseRPMSEvent("SCHEDULE-" + e.Resource , "");
1284 this.m_DocManager.UpdateViews(e.Resource, e.OldResource);
1285 }
1286 catch (Exception ex)
1287 {
1288 MessageBox.Show("Unable to add new access block " + ex.Message, "Clinical Scheduling");
1289 return;
1290 }
1291 try
1292 {
1293 RaiseRPMSEvent("BSDX SCHEDULE", m_Document.DocName);
1294 if (e.Resource != e.OldResource)
1295 RaiseRPMSEvent("BSDX SCHEDULE", m_Document.DocName);
1296 this.calendarGrid1.Invalidate();
1297 }
1298 catch (Exception ex)
1299 {
1300 Debug.Write(ex.Message);
1301 }
1302 }
1303
1304 #region ctxApptClipMenu Handlers
1305
1306 private void ctxApptClipMenu_Popup(object sender, System.EventArgs e)
1307 {
1308 mnuClearClipItems.Enabled = (m_ClipList.AppointmentTable.Count > 0);
1309 mnuRemoveClipItem.Enabled = (lstClip.SelectedIndex > -1);
1310 }
1311
1312 private void mnuRemoveClipItem_Click(object sender, System.EventArgs e)
1313 {
1314 int i = lstClip.SelectedIndex;
1315 CGAppointment a = (CGAppointment) lstClip.SelectedItem;
1316 int nKey = a.AppointmentKey;
1317 if (i > -1)
1318 {
1319 m_ClipList.RemoveAppointment(nKey);
1320 lstClip.Items.RemoveAt(i);
1321 }
1322 }
1323
1324 private void mnuClearClipItems_Click(object sender, System.EventArgs e)
1325 {
1326 this.m_ClipList.ClearAllAppointments();
1327 lstClip.Items.Clear();
1328 }
1329
1330 #endregion ctxApptClipMenu Handlers
1331
1332 #region ctxCalGridMenu Handlers
1333
1334 private void ctxCalGridAdd_Click(object sender, System.EventArgs e)
1335 {
1336 AvailabilityAddNew();
1337 }
1338
1339 private void ctxCalGridEdit_Click(object sender, System.EventArgs e)
1340 {
1341 AvailabilityEdit();
1342 }
1343
1344 private void ctxCalGridDelete_Click(object sender, System.EventArgs e)
1345 {
1346 AppointmentDelete();
1347 }
1348
1349 private void ctxCalendarGrid_Popup(object sender, System.EventArgs e)
1350 {
1351 //Toggle availability of make, edit and delete appointments
1352 //based on whether appropriate element is selected.
1353 ctxCalGridAdd.Enabled = ((calendarGrid1.SelectedRange.Cells.CellCount > 0) );
1354 ctxCalGridDelete.Enabled = (calendarGrid1.SelectedAppointment > 0);
1355 ctxCalGridEdit.Enabled = (calendarGrid1.SelectedAppointment > 0);
1356 }
1357
1358 private void calendarGrid1_DoubleClick(object sender, System.EventArgs e)
1359 {
1360 if (calendarGrid1.SelectedAppointment > 0)
1361 AvailabilityEdit();
1362 }
1363
1364 #endregion ctxCalGridMenu Handlers
1365
1366 private void mnu10Minute_Click(object sender, System.EventArgs e)
1367 {
1368 CalendarGrid cg = this.calendarGrid1;
1369 cg.TimeScale = 10;
1370 PositionGrid(cg, 7);
1371 }
1372
1373 private void mnu15Minute_Click(object sender, System.EventArgs e)
1374 {
1375 CalendarGrid cg = this.calendarGrid1;
1376 cg.TimeScale = 15;
1377 PositionGrid(cg, 7);
1378 }
1379
1380 private void mnu20Minute_Click(object sender, System.EventArgs e)
1381 {
1382 CalendarGrid cg = this.calendarGrid1;
1383 cg.TimeScale = 20;
1384 PositionGrid(cg, 7);
1385 }
1386
1387 private void mnu30Minute_Click(object sender, System.EventArgs e)
1388 {
1389 CalendarGrid cg = this.calendarGrid1;
1390 cg.TimeScale = 30;
1391 PositionGrid(cg, 7);
1392 }
1393
1394 private void mnu1Day_Click(object sender, System.EventArgs e)
1395 {
1396 DateTime dtPicker = dateTimePicker1.Value;
1397 DateTime DayOnly = new DateTime(dtPicker.Year, dtPicker.Month, dtPicker.Day);
1398 this.calendarGrid1.StartDate = DayOnly;
1399 this.calendarGrid1.Columns = 1;
1400 }
1401
1402 private void mnu5Day_Click(object sender, System.EventArgs e)
1403 {
1404 this.calendarGrid1.Columns = 5;
1405 this.Document.m_nColumnCount = 5; //TODO: redundant but now needed
1406 }
1407
1408 private void mnu7Day_Click(object sender, System.EventArgs e)
1409 {
1410 this.calendarGrid1.Columns = 7;
1411 this.Document.m_nColumnCount = 7; //TODO: redundant but now needed
1412 }
1413
1414 private void PositionGrid(CalendarGrid cg, int nHour)
1415 {
1416 //Position grid to nHour
1417 int nRow = 0, nCol = 0;
1418 DateTime dStart = DateTime.Today;
1419 dStart = dStart.AddHours(nHour);
1420 cg.GetCellFromTime(dStart, ref nRow, ref nCol, false, "");
1421 int nHeight = cg.CellHeight;
1422 nHeight *= nRow;
1423 cg.AutoScrollPosition = new Point(50, nHeight);
1424 cg.Invalidate();
1425 }
1426 }
1427}
Note: See TracBrowser for help on using the repository browser.