1 11 package org.eclipse.team.internal.ccvs.ui; 12 13 import java.util.Date ; 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 31 public class DateTagDialog extends TrayDialog { 32 33 DateArea dateArea; 34 TimeArea timeArea; 35 IDialogSettings settings; 36 private Date 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 } 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 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)); time.setMinutes(calendar.get(Calendar.MINUTE)); 94 time.setSeconds(calendar.get(Calendar.SECOND)); 95 96 includeTime.setSelection(settings.getBoolean("includeTime")); localTime.setSelection(!settings.getBoolean("utcTime")); utcTime.setSelection(settings.getBoolean("utcTime")); } 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()); calendar.set(Calendar.MINUTE, time.getMinutes()); 109 calendar.set(Calendar.SECOND, time.getSeconds()); 110 if (utcTime.getSelection()) { 111 calendar.setTimeZone(TimeZone.getTimeZone("GMT")); } 113 } 114 } 115 } 116 117 public DateTagDialog(Shell parentShell) { 118 super(parentShell); 119 IDialogSettings workbenchSettings = CVSUIPlugin.getPlugin().getDialogSettings(); 120 this.settings = workbenchSettings.getSection("DateTagDialog"); if (this.settings == null) { 122 this.settings = workbenchSettings.addNewSection("DateTagDialog"); } 124 } 125 126 129 protected void configureShell(Shell newShell) { 130 super.configureShell(newShell); 131 newShell.setText(CVSUIMessages.DateTagDialog_5); 132 } 133 134 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 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 182 public Date getDate() { 183 return dateEntered; 184 } 185 186 private Date privateGetDate() { 187 Calendar calendar = Calendar.getInstance(); 188 dateArea.adjustCalendar(calendar); 189 timeArea.adjustCalendar(calendar); 190 return calendar.getTime(); 191 } 192 193 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 |