KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > eclipse > team > internal > ccvs > ui > DateTagDialog


1 /*******************************************************************************
2  * Copyright (c) 2000, 2006 IBM Corporation and others.
3  * All rights reserved. This program and the accompanying materials
4  * are made available under the terms of the Eclipse Public License v1.0
5  * which accompanies this distribution, and is available at
6  * http://www.eclipse.org/legal/epl-v10.html
7  *
8  * Contributors:
9  * IBM Corporation - initial API and implementation
10  *******************************************************************************/

11 package org.eclipse.team.internal.ccvs.ui;
12
13 import java.util.Date JavaDoc;
14
15 import org.eclipse.jface.dialogs.*;
16 import org.eclipse.jface.dialogs.Dialog;
17 import org.eclipse.swt.SWT;
18 import org.eclipse.swt.events.SelectionAdapter;
19 import org.eclipse.swt.events.SelectionEvent;
20 import org.eclipse.swt.layout.GridLayout;
21 import org.eclipse.swt.widgets.*;
22 import org.eclipse.team.internal.ui.dialogs.DialogArea;
23 import org.eclipse.ui.PlatformUI;
24
25 import com.ibm.icu.util.Calendar;
26 import com.ibm.icu.util.TimeZone;
27
28 /**
29  * Dialog for obtaining a date from the user
30  */

31 public class DateTagDialog extends TrayDialog {
32
33     DateArea dateArea;
34     TimeArea timeArea;
35     IDialogSettings settings;
36     private Date JavaDoc dateEntered;
37
38     public class DateArea extends DialogArea {
39         private DateTime date;
40
41         public void createArea(Composite parent) {
42             Composite composite = createComposite(parent, 2, false);
43             initializeDialogUnits(composite);
44             createLabel(composite, CVSUIMessages.DateTagDialog_0, 1);
45             date = new DateTime(composite, SWT.DATE);
46         }
47         
48         public void initializeValues(Calendar calendar ) {
49             date.setDay(calendar.get(Calendar.DATE) - 1);
50             date.setMonth(calendar.get(Calendar.MONTH));
51             date.setYear(calendar.get(Calendar.YEAR));
52             timeArea.initializeValues(calendar);
53         }
54
55         public void updateWidgetEnablements() {
56             // Do nothing
57
}
58         
59         public void adjustCalendar(Calendar calendar) {
60             calendar.set(
61                     date.getYear(),
62                     date.getMonth(),
63                     date.getDay(),
64                     0,0,0);
65         }
66     }
67     public class TimeArea extends DialogArea {
68
69         private Button includeTime, localTime, utcTime;
70         private DateTime time;
71
72         /* (non-Javadoc)
73          * @see org.eclipse.team.internal.ui.dialogs.DialogArea#createArea(org.eclipse.swt.widgets.Composite)
74          */

75         public void createArea(Composite parent) {
76             Composite composite = createComposite(parent, 2, false);
77             initializeDialogUnits(composite);
78             includeTime = createCheckbox(composite, CVSUIMessages.DateTagDialog_1, 2);
79             createLabel(composite, CVSUIMessages.DateTagDialog_2, 1);
80             time = new DateTime(composite, SWT.TIME);
81             localTime = createRadioButton(composite, CVSUIMessages.DateTagDialog_3, 2);
82             utcTime = createRadioButton(composite, CVSUIMessages.DateTagDialog_4, 2);
83             
84             includeTime.addSelectionListener(new SelectionAdapter() {
85                 public void widgetSelected(SelectionEvent e) {
86                     updateWidgetEnablements();
87                 }
88             });
89         }
90         
91         public void initializeValues(Calendar calendar) {
92             time.setHours(calendar.get(Calendar.HOUR_OF_DAY));//24 hour clock
93
time.setMinutes(calendar.get(Calendar.MINUTE));
94             time.setSeconds(calendar.get(Calendar.SECOND));
95             
96             includeTime.setSelection(settings.getBoolean("includeTime")); //$NON-NLS-1$
97
localTime.setSelection(!settings.getBoolean("utcTime")); //$NON-NLS-1$
98
utcTime.setSelection(settings.getBoolean("utcTime")); //$NON-NLS-1$
99
}
100         public void updateWidgetEnablements() {
101             time.setEnabled(includeTime.getSelection());
102             localTime.setEnabled(includeTime.getSelection());
103             utcTime.setEnabled(includeTime.getSelection());
104         }
105         public void adjustCalendar(Calendar calendar) {
106             if (includeTime.getSelection()) {
107                 calendar.set(Calendar.HOUR_OF_DAY, time.getHours());//24 hour clock
108
calendar.set(Calendar.MINUTE, time.getMinutes());
109                 calendar.set(Calendar.SECOND, time.getSeconds());
110                 if (utcTime.getSelection()) {
111                     calendar.setTimeZone(TimeZone.getTimeZone("GMT")); //$NON-NLS-1$
112
}
113             }
114         }
115     }
116     
117     public DateTagDialog(Shell parentShell) {
118         super(parentShell);
119         IDialogSettings workbenchSettings = CVSUIPlugin.getPlugin().getDialogSettings();
120         this.settings = workbenchSettings.getSection("DateTagDialog");//$NON-NLS-1$
121
if (this.settings == null) {
122             this.settings = workbenchSettings.addNewSection("DateTagDialog");//$NON-NLS-1$
123
}
124     }
125     
126     /* (non-Javadoc)
127      * Method declared on Window.
128      */

129     protected void configureShell(Shell newShell) {
130         super.configureShell(newShell);
131         newShell.setText(CVSUIMessages.DateTagDialog_5);
132     }
133
134     /* (non-Javadoc)
135      * @see org.eclipse.jface.dialogs.Dialog#createDialogArea(org.eclipse.swt.widgets.Composite)
136      */

137     protected Control createDialogArea(Composite parent) {
138         Composite topLevel = new Composite(parent, SWT.NONE);
139         GridLayout layout = new GridLayout();
140         layout.numColumns = 1;
141         initializeDialogUnits(topLevel);
142         layout.marginHeight = convertVerticalDLUsToPixels(IDialogConstants.VERTICAL_MARGIN);
143         layout.marginWidth = convertHorizontalDLUsToPixels(IDialogConstants.HORIZONTAL_MARGIN);
144         topLevel.setLayout(layout);
145         
146         createDateArea(topLevel);
147         createTimeArea(topLevel);
148         initializeValues();
149         updateWidgetEnablements();
150         
151         // set F1 help
152
PlatformUI.getWorkbench().getHelpSystem().setHelp(topLevel, IHelpContextIds.DATE_TAG_DIALOG);
153         Dialog.applyDialogFont(parent);
154         return topLevel;
155     }
156
157     private void createDateArea(Composite topLevel) {
158         dateArea = new DateArea();
159         dateArea.createArea(topLevel);
160     }
161
162     private void createTimeArea(Composite topLevel) {
163         timeArea = new TimeArea();
164         timeArea.createArea(topLevel);
165     }
166
167     private void initializeValues() {
168         Calendar calendar = Calendar.getInstance();
169         dateArea.initializeValues(calendar);
170         timeArea.initializeValues(calendar);
171     }
172     
173     private void updateWidgetEnablements() {
174         timeArea.updateWidgetEnablements();
175         dateArea.updateWidgetEnablements();
176     }
177
178     /**
179      * Return the date specified by the user in UTC.
180      * @return the date specified by the user
181      */

182     public Date JavaDoc getDate() {
183         return dateEntered;
184     }
185     
186     private Date JavaDoc privateGetDate() {
187         Calendar calendar = Calendar.getInstance();
188         dateArea.adjustCalendar(calendar);
189         timeArea.adjustCalendar(calendar);
190         return calendar.getTime();
191     }
192     
193     /* (non-Javadoc)
194      * @see org.eclipse.jface.dialogs.Dialog#buttonPressed(int)
195      */

196     protected void buttonPressed(int buttonId) {
197         if (buttonId == IDialogConstants.OK_ID) {
198             dateEntered = privateGetDate();
199         }
200         super.buttonPressed(buttonId);
201     }
202
203 }
204
Popular Tags