Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.
View | Details | Raw Unified | Return to bug 211101 | Differences between
and this patch

Collapse All | Expand All

(-)src/org/eclipse/mylyn/xplanner/ui/XPlannerMylynUIPlugin.java (+26 lines)
Lines 45-54 Link Here
45
	public final static IStatus NO_LICENSE_STATUS = new Status(IStatus.INFO, XPlannerMylynUIPlugin.PLUGIN_ID,
45
	public final static IStatus NO_LICENSE_STATUS = new Status(IStatus.INFO, XPlannerMylynUIPlugin.PLUGIN_ID,
46
			0, Messages.MylynXPlannerPlugin_NOT_AVAILABLE_IN_SKU, null);
46
			0, Messages.MylynXPlannerPlugin_NOT_AVAILABLE_IN_SKU, null);
47
47
48
	// Preference setting names
49
	public final static String USE_AUTO_TIME_TRACKING_PREFERENCE_NAME = "UseAutoTimeTracking";
50
	
51
	public final static String ROUND_AUTO_TIME_TRACKING_TO_HALF_HOUR_PREFERENCE_NAME = "RoundAutoTimeTrackingToHalfHour";
52
	
53
	public final static String ADD_AUTO_TRACKED_TIME_TO_REPOSITORY_VALUE_PREFERENCE_NAME = "AddAutoTrackedTimeToRepositoryValue"; 
54
	
48
	public XPlannerMylynUIPlugin() {
55
	public XPlannerMylynUIPlugin() {
49
		INSTANCE = this;
56
		INSTANCE = this;
50
	}
57
	}
51
58
59
	public void start(BundleContext context) throws Exception {
60
		super.start(context);
61
		setPreferenceDefaults();
62
	}
63
	
64
	private void setPreferenceDefaults() {
65
		getPreferenceStore().setDefault(USE_AUTO_TIME_TRACKING_PREFERENCE_NAME, false);
66
		getPreferenceStore().setDefault(ROUND_AUTO_TIME_TRACKING_TO_HALF_HOUR_PREFERENCE_NAME, true);
67
		getPreferenceStore().setDefault(ADD_AUTO_TRACKED_TIME_TO_REPOSITORY_VALUE_PREFERENCE_NAME, true);
68
	}
69
	
52
	public void stop(BundleContext context) throws Exception {
70
	public void stop(BundleContext context) throws Exception {
53
		super.stop(context);
71
		super.stop(context);
54
		INSTANCE = null;
72
		INSTANCE = null;
Lines 94-97 Link Here
94
	public static ImageDescriptor getImageDescriptor(String path) {
112
	public static ImageDescriptor getImageDescriptor(String path) {
95
		return AbstractUIPlugin.imageDescriptorFromPlugin(PLUGIN_ID, path);
113
		return AbstractUIPlugin.imageDescriptorFromPlugin(PLUGIN_ID, path);
96
	}
114
	}
115
116
	public static void setBooleanPreference(String name, boolean value) {
117
		getDefault().getPreferenceStore().setValue(name, value);
118
	}
119
	
120
	public static boolean getBooleanPreference(String name) {
121
		return getDefault().getPreferenceStore().getBoolean(name);
122
	}
97
}
123
}
(-)META-INF/MANIFEST.MF (+1 lines)
Lines 21-25 Link Here
21
 org.eclipse.mylyn.monitor.core
21
 org.eclipse.mylyn.monitor.core
22
Eclipse-LazyStart: true
22
Eclipse-LazyStart: true
23
Export-Package: org.eclipse.mylyn.xplanner.ui,
23
Export-Package: org.eclipse.mylyn.xplanner.ui,
24
 org.eclipse.mylyn.xplanner.ui.editor,
24
 org.eclipse.mylyn.xplanner.ui.wizard
25
 org.eclipse.mylyn.xplanner.ui.wizard
25
Bundle-RequiredExecutionEnvironment: J2SE-1.5
26
Bundle-RequiredExecutionEnvironment: J2SE-1.5
(-)src/org/eclipse/mylyn/xplanner/ui/editor/XPlannerTaskEditorExtraControls.java (-4 / +95 lines)
Lines 8-15 Link Here
8
8
9
package org.eclipse.mylyn.xplanner.ui.editor;
9
package org.eclipse.mylyn.xplanner.ui.editor;
10
10
11
import java.text.DecimalFormat;
12
11
import org.eclipse.jface.layout.GridDataFactory;
13
import org.eclipse.jface.layout.GridDataFactory;
12
import org.eclipse.jface.resource.JFaceResources;
14
import org.eclipse.jface.resource.JFaceResources;
15
import org.eclipse.mylyn.monitor.core.StatusHandler;
13
import org.eclipse.mylyn.tasks.core.RepositoryTaskAttribute;
16
import org.eclipse.mylyn.tasks.core.RepositoryTaskAttribute;
14
import org.eclipse.mylyn.tasks.core.RepositoryTaskData;
17
import org.eclipse.mylyn.tasks.core.RepositoryTaskData;
15
import org.eclipse.mylyn.tasks.ui.editors.AbstractRepositoryTaskEditor;
18
import org.eclipse.mylyn.tasks.ui.editors.AbstractRepositoryTaskEditor;
Lines 31-36 Link Here
31
	private String errorMessage = null;
34
	private String errorMessage = null;
32
	private Control errorControl = null;
35
	private Control errorControl = null;
33
	
36
	
37
	private Double lastRepositoryActualTime = 0.0;
38
	
34
	public XPlannerTaskEditorExtraControls(AbstractRepositoryTaskEditor editor, 
39
	public XPlannerTaskEditorExtraControls(AbstractRepositoryTaskEditor editor, 
35
		RepositoryTaskData repositoryTaskData) {
40
		RepositoryTaskData repositoryTaskData) {
36
		
41
		
Lines 149-156 Link Here
149
		GridDataFactory.fillDefaults().grab(true, false).span(2, 1).align(SWT.END, SWT.CENTER).applyTo(actualTimeLabel);
154
		GridDataFactory.fillDefaults().grab(true, false).span(2, 1).align(SWT.END, SWT.CENTER).applyTo(actualTimeLabel);
150
		
155
		
151
		// actual hours text
156
		// actual hours text
152
		actualTimeText = toolkit.createText(dataComposite, 
157
		lastRepositoryActualTime = XPlannerRepositoryUtils.getActualHours(repositoryTaskData);
153
			XPlannerRepositoryUtils.getActualHours(repositoryTaskData) + ""); //$NON-NLS-1$
158
		actualTimeText = toolkit.createText(dataComposite, lastRepositoryActualTime + ""); //$NON-NLS-1$
154
		
159
		
155
		actualTimeText.addModifyListener(new ModifyListener() {
160
		actualTimeText.addModifyListener(new ModifyListener() {
156
			public void modifyText(ModifyEvent e) {
161
			public void modifyText(ModifyEvent e) {
Lines 166-173 Link Here
166
		remainingTimeLabel.setFont(JFaceResources.getFontRegistry().getBold(JFaceResources.DEFAULT_FONT));
171
		remainingTimeLabel.setFont(JFaceResources.getFontRegistry().getBold(JFaceResources.DEFAULT_FONT));
167
		GridDataFactory.fillDefaults().grab(true, false).span(3, 1).align(SWT.END, SWT.CENTER).applyTo(remainingTimeLabel);
172
		GridDataFactory.fillDefaults().grab(true, false).span(3, 1).align(SWT.END, SWT.CENTER).applyTo(remainingTimeLabel);
168
173
169
		remainingTimeValueLabel = toolkit.createLabel(dataComposite, 			
174
		Float remainingHours = new Float(XPlannerRepositoryUtils.getRemainingHours(repositoryTaskData));
170
				XPlannerRepositoryUtils.getRemainingHours(repositoryTaskData) + ""); //$NON-NLS-1$
175
		String formattedRemainingHours = formatSingleFractionHours(remainingHours);
176
		remainingTimeValueLabel = toolkit.createLabel(dataComposite, formattedRemainingHours);		
171
177
172
		updateRemainingTimeFont();
178
		updateRemainingTimeFont();
173
		dataSection.setExpanded(true);
179
		dataSection.setExpanded(true);
Lines 225-228 Link Here
225
		
231
		
226
		return errorMessage;
232
		return errorMessage;
227
	}
233
	}
234
	
235
	protected void updateActualTimeWithElapsed(long newElapsedTime, 
236
		boolean addToCurrent, boolean roundToHalfHour) {
237
		
238
		String elapsedHoursString = "0.0";
239
		try {
240
			elapsedHoursString = getElapsedHoursAsString(newElapsedTime, addToCurrent, roundToHalfHour);
241
		} 
242
		catch (RuntimeException e1) {
243
			StatusHandler.fail(e1, "Could not format elapsed time", true);
244
		}
245
		
246
		actualTimeText.setText(elapsedHoursString);
247
	}
248
	
249
	
250
	private static float convertMilliSecondsToHours(long milliSeconds) {
251
		Long minutes = ((Long)Long.valueOf("" + milliSeconds))/(1000*60);
252
		Float hours = minutes/60F;
253
254
		return hours;		
255
	}
256
257
	private String getElapsedHoursAsString(long milliSeconds,
258
		boolean addToCurrent, boolean roundToHalfHour) {
259
		
260
		String hoursString;
261
		
262
		Float hours = convertMilliSecondsToHours(milliSeconds);
263
		if (addToCurrent) {
264
			hours = new Float(lastRepositoryActualTime + hours); 
265
		}
266
		if (hours == 0) {
267
			hoursString = "0.0";
268
		}
269
		else {
270
			
271
			hoursString = formatHours(hours, roundToHalfHour);
272
		}
273
		
274
		return hoursString;
275
	}
276
	
277
	/**
278
	 * public for testing
279
	 * rounds to nearest .5 if roundToHalfHour is true, otherwise, keeps input as is with
280
	 * single fraction digit formatting
281
	 */
282
	public static String formatHours(Float hours, boolean roundToHalfHour) {
283
		Float updatedHours = hours;
284
		
285
		if (roundToHalfHour) {
286
			Float decimal = new Float(Math.floor(hours));
287
			Float fraction = hours - decimal;
288
			if (fraction == .5f || fraction == .0f) {
289
				updatedHours = hours;
290
			}
291
			else if (fraction > 0f && fraction < .25f) {
292
				updatedHours = decimal;
293
			}
294
			else if (fraction >= .25f && fraction < .5f) {
295
				updatedHours = decimal + .5f;
296
			}
297
			else if (fraction > .5f && fraction < .75f) {
298
				updatedHours = decimal + .5f;
299
			}
300
			else { // .75 and up
301
				updatedHours = decimal + 1;
302
			}
303
		}
304
		
305
		return formatSingleFractionHours(updatedHours);
306
	}
307
308
	/**
309
	 * public for testing
310
	 * Formats input as single digit fraction string
311
	 */
312
	public static String formatSingleFractionHours(Float updatedHours) {
313
		DecimalFormat format = new DecimalFormat("######.#"); 
314
		format.setMinimumFractionDigits(1); 
315
		format.setMaximumFractionDigits(1); 
316
		return format.format(updatedHours);
317
	}
318
	
228
}
319
}
(-)src/org/eclipse/mylyn/xplanner/ui/editor/XPlannerTaskEditor.java (-6 / +191 lines)
Lines 10-25 Link Here
10
import java.text.MessageFormat;
10
import java.text.MessageFormat;
11
11
12
import org.eclipse.jface.dialogs.MessageDialog;
12
import org.eclipse.jface.dialogs.MessageDialog;
13
import org.eclipse.jface.layout.GridDataFactory;
13
import org.eclipse.mylyn.tasks.core.*;
14
import org.eclipse.mylyn.tasks.core.*;
15
import org.eclipse.mylyn.tasks.ui.TasksUiPlugin;
14
import org.eclipse.mylyn.tasks.ui.editors.AbstractRepositoryTaskEditor;
16
import org.eclipse.mylyn.tasks.ui.editors.AbstractRepositoryTaskEditor;
15
import org.eclipse.mylyn.xplanner.ui.XPlannerMylynUIPlugin;
17
import org.eclipse.mylyn.xplanner.ui.XPlannerMylynUIPlugin;
16
import org.eclipse.mylyn.xplanner.ui.XPlannerRepositoryUtils;
18
import org.eclipse.mylyn.xplanner.ui.XPlannerRepositoryUtils;
19
import org.eclipse.swt.SWT;
20
import org.eclipse.swt.events.SelectionEvent;
21
import org.eclipse.swt.events.SelectionListener;
22
import org.eclipse.swt.graphics.Point;
17
import org.eclipse.swt.layout.GridLayout;
23
import org.eclipse.swt.layout.GridLayout;
18
import org.eclipse.swt.widgets.Composite;
24
import org.eclipse.swt.widgets.*;
19
import org.eclipse.swt.widgets.Control;
25
import org.eclipse.ui.*;
20
import org.eclipse.ui.IEditorInput;
21
import org.eclipse.ui.IEditorSite;
22
import org.eclipse.ui.forms.editor.FormEditor;
26
import org.eclipse.ui.forms.editor.FormEditor;
27
import org.eclipse.ui.forms.widgets.FormToolkit;
23
import org.eclipse.ui.forms.widgets.ImageHyperlink;
28
import org.eclipse.ui.forms.widgets.ImageHyperlink;
24
29
25
/**
30
/**
Lines 27-35 Link Here
27
 * @author Helen Bershadskaya
32
 * @author Helen Bershadskaya
28
 */
33
 */
29
public class XPlannerTaskEditor extends AbstractRepositoryTaskEditor 
34
public class XPlannerTaskEditor extends AbstractRepositoryTaskEditor 
30
	implements XPlannerEditorAttributeProvider {
35
	implements XPlannerEditorAttributeProvider, ITaskTimingListener, SelectionListener {
31
	
36
	
32
	private XPlannerTaskEditorExtraControls extraControls;
37
	private XPlannerTaskEditorExtraControls extraControls;
38
	private Button useTimeTrackingButton;
39
	private Button addToCurrentTimeButton;
40
	private Button replaceCurrentTimeButton;
41
	private Button roundToHalfHourButton;
42
43
	private boolean useAutoTimeTracking;
44
	private boolean roundToHalfHour;
45
	private boolean addToCurrentTime;
33
	
46
	
34
	public XPlannerTaskEditor(FormEditor editor) {
47
	public XPlannerTaskEditor(FormEditor editor) {
35
		super(editor);
48
		super(editor);
Lines 44-50 Link Here
44
57
45
	@Override
58
	@Override
46
	protected void addRadioButtons(Composite buttonComposite) {
59
	protected void addRadioButtons(Composite buttonComposite) {
47
		//TODO -- ?
60
		createTimeTrackingPanel(buttonComposite);
48
	}
61
	}
49
	
62
	
50
	@Override
63
	@Override
Lines 150-157 Link Here
150
		}
163
		}
151
		
164
		
152
		if (errorMessage == null) {
165
		if (errorMessage == null) {
166
			savePreferenceSettings();
153
			super.submitToRepository();
167
			super.submitToRepository();
168
			
154
		}
169
		}
155
	}
170
	}
156
171
172
	private void loadValuesFromPreferenceSettings() {
173
		// auto tracking
174
		boolean useTimeTrackingPreference = XPlannerMylynUIPlugin.getBooleanPreference(XPlannerMylynUIPlugin.USE_AUTO_TIME_TRACKING_PREFERENCE_NAME); 
175
		useTimeTrackingButton.setSelection(useTimeTrackingPreference);
176
		setUseAutoTimeTracking(useTimeTrackingPreference);
177
		
178
		// rounding
179
		boolean roundToHalfHourPreference = XPlannerMylynUIPlugin.getBooleanPreference(XPlannerMylynUIPlugin.ROUND_AUTO_TIME_TRACKING_TO_HALF_HOUR_PREFERENCE_NAME);
180
		roundToHalfHourButton.setSelection(roundToHalfHourPreference);
181
		setRoundToHalfHour(roundToHalfHourPreference);
182
		
183
		// add or replace
184
		boolean addToCurrentTimePreference = XPlannerMylynUIPlugin.getBooleanPreference(XPlannerMylynUIPlugin.ADD_AUTO_TRACKED_TIME_TO_REPOSITORY_VALUE_PREFERENCE_NAME);
185
		addToCurrentTimeButton.setSelection(addToCurrentTimePreference);
186
		replaceCurrentTimeButton.setSelection(!addToCurrentTimePreference);
187
		setAddToCurrentTime(addToCurrentTimePreference);
188
	}
189
	
190
	private void savePreferenceSettings() {
191
		// auto tracking
192
		XPlannerMylynUIPlugin.setBooleanPreference(
193
			XPlannerMylynUIPlugin.USE_AUTO_TIME_TRACKING_PREFERENCE_NAME, isUseAutoTimeTracking());
194
		
195
		// rounding
196
		XPlannerMylynUIPlugin.setBooleanPreference(
197
			XPlannerMylynUIPlugin.ROUND_AUTO_TIME_TRACKING_TO_HALF_HOUR_PREFERENCE_NAME, isRoundToHalfHour());
198
		
199
		// add or replace
200
		XPlannerMylynUIPlugin.setBooleanPreference(
201
			XPlannerMylynUIPlugin.ADD_AUTO_TRACKED_TIME_TO_REPOSITORY_VALUE_PREFERENCE_NAME, isAddToCurrentTime());
202
	}
203
204
	private void createTimeTrackingPanel(Composite parent) {
205
		FormToolkit toolkit = new FormToolkit(getSite().getShell().getDisplay());
206
		Composite timeTrackingComposite = toolkit.createComposite(parent, SWT.NONE);
207
		
208
		GridDataFactory.fillDefaults().span(4, 1).applyTo(timeTrackingComposite);
209
		timeTrackingComposite.setLayout(new GridLayout(1, false));
210
		
211
		useTimeTrackingButton = toolkit.createButton(timeTrackingComposite, "Update actual task time from Mylyn's time tracker", SWT.CHECK);
212
		GridDataFactory.fillDefaults().span(1, 1).grab(true, false).applyTo(useTimeTrackingButton);
213
		useTimeTrackingButton.addSelectionListener(this);
214
		
215
		roundToHalfHourButton = toolkit.createButton(timeTrackingComposite, "Round time to half hour", SWT.CHECK);
216
		GridDataFactory.fillDefaults().indent(new Point(15, 5)).applyTo(roundToHalfHourButton);
217
		roundToHalfHourButton.addSelectionListener(this);
218
		
219
		Composite updateMethodComposite = toolkit.createComposite(timeTrackingComposite);
220
		GridDataFactory.fillDefaults().indent(new Point(10, 0)).applyTo(updateMethodComposite);
221
		updateMethodComposite.setLayout(new GridLayout(2, true));
222
		addToCurrentTimeButton = toolkit.createButton(updateMethodComposite, "Add to current repository time", SWT.RADIO);
223
		GridDataFactory.fillDefaults().applyTo(addToCurrentTimeButton);
224
		addToCurrentTimeButton.setSelection(true);  // just for a single radio default
225
		addToCurrentTimeButton.addSelectionListener(this);
226
		
227
		replaceCurrentTimeButton = toolkit.createButton(updateMethodComposite, "Replace current repository time", SWT.RADIO);
228
		GridDataFactory.fillDefaults().applyTo(replaceCurrentTimeButton);
229
		replaceCurrentTimeButton.addSelectionListener(this);
230
		
231
		TasksUiPlugin.getTaskListManager().addTimingListener(this);
232
		loadValuesFromPreferenceSettings();
233
		updateTimeTrackingControls();
234
	}
235
236
	private void updateTimeTrackingControls() {
237
		boolean enabled = isUseAutoTimeTracking();
238
		
239
		roundToHalfHourButton.setEnabled(enabled);
240
		addToCurrentTimeButton.setEnabled(enabled);
241
		replaceCurrentTimeButton.setEnabled(enabled);
242
	}
243
244
	@Override
245
	public void dispose() {
246
		savePreferenceSettings();
247
		TasksUiPlugin.getTaskListManager().removeTimingListener(this);
248
		super.dispose();
249
	}
250
	
251
	public void close() {
252
		savePreferenceSettings();
253
		super.close();
254
	}
255
	
256
	/**
257
	 * ITaskTimingListener Implementation
258
	 */
259
	public void elapsedTimeUpdated(AbstractTask task, final long newElapsedTime) {
260
		// only auto-update actual time if user chose to do so
261
		if (!isUseAutoTimeTracking()) {
262
			return;
263
		}
264
		
265
		PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() {
266
			public void run() {
267
				extraControls.updateActualTimeWithElapsed(newElapsedTime,
268
					isAddToCurrentTime(), isRoundToHalfHour());
269
			}});
270
271
	}
272
273
	public void setUseAutoTimeTracking(boolean useTimeTracking) {
274
		this.useAutoTimeTracking = useTimeTracking;
275
	}
276
277
	public boolean isUseAutoTimeTracking() {
278
		return useAutoTimeTracking;
279
	}
280
281
	private void forceElapsedTimeUpdated() {
282
		AbstractTask task = TasksUiPlugin.getTaskListManager().getTaskList().getTask(getRepositoryTaskData().getHandleIdentifier());
283
		long elapsedTimeMillis = TasksUiPlugin.getTaskActivityManager().getElapsedTime(
284
				TasksUiPlugin.getTaskListManager().getTaskList().getTask(getRepositoryTaskData().getHandleIdentifier()));
285
		
286
		elapsedTimeUpdated(task, elapsedTimeMillis);
287
	}
288
289
	public void widgetDefaultSelected(SelectionEvent e) {
290
		Object source = e.getSource();
291
		
292
		if (source.equals(useTimeTrackingButton)) {
293
			updateTimeTrackingControls();
294
		}
295
	}
296
297
	public void widgetSelected(SelectionEvent e) {
298
		Object source = e.getSource();
299
		
300
		if (source.equals(useTimeTrackingButton)) {
301
			setUseAutoTimeTracking(useTimeTrackingButton.getSelection());
302
			
303
			if (isUseAutoTimeTracking()) {
304
				forceElapsedTimeUpdated();
305
			}
306
			
307
			updateTimeTrackingControls();
308
		}
309
		else if (source.equals(roundToHalfHourButton)) {
310
			setRoundToHalfHour(roundToHalfHourButton.getSelection());
311
			forceElapsedTimeUpdated();
312
		}
313
		else if (source.equals(replaceCurrentTimeButton)) {
314
			setAddToCurrentTime(!replaceCurrentTimeButton.getSelection());
315
			if (!isAddToCurrentTime()) {
316
				forceElapsedTimeUpdated();
317
			}
318
		}
319
		else if (source.equals(addToCurrentTimeButton)) {
320
			setAddToCurrentTime(addToCurrentTimeButton.getSelection());
321
			if (isAddToCurrentTime()) {
322
				forceElapsedTimeUpdated();
323
			}
324
		}
325
	}
326
327
	private boolean isRoundToHalfHour() {
328
		return roundToHalfHour;
329
	}
330
	
331
	private void setRoundToHalfHour(boolean roundToHalfHour) {
332
		this.roundToHalfHour = roundToHalfHour;
333
	}
334
335
	private boolean isAddToCurrentTime() {
336
		return addToCurrentTime;
337
	}
338
339
	private void setAddToCurrentTime(boolean addToCurrentTime) {
340
		this.addToCurrentTime = addToCurrentTime;
341
	}
157
}
342
}
(-).refactorings/2008/1/4/refactorings.history (+3 lines)
Added Link Here
1
<?xml version="1.0" encoding="UTF-8"?>
2
<session version="1.0">&#x0A;<refactoring comment="Extract method &apos;private String formatHours(Float hours)&apos; from &apos;org.eclipse.mylyn.xplanner.ui.editor.XPlannerTaskEditor.createTimeTrackingPanel()&apos; to &apos;org.eclipse.mylyn.xplanner.ui.editor.XPlannerTaskEditor&apos;&#x0D;&#x0A;- Original project: &apos;org.eclipse.mylyn.xplanner.ui&apos;&#x0D;&#x0A;- Method name: &apos;formatHours&apos;&#x0D;&#x0A;- Destination type: &apos;org.eclipse.mylyn.xplanner.ui.editor.XPlannerTaskEditor&apos;&#x0D;&#x0A;- Declared visibility: &apos;private&apos;" comments="false" description="Extract method &apos;formatHours&apos;" destination="0" exceptions="false" flags="786434" id="org.eclipse.jdt.ui.extract.method" input="/src&lt;org.eclipse.mylyn.xplanner.ui.editor{XPlannerTaskEditor.java" name="formatHours" replace="false" selection="7117 150" stamp="1201224117828" version="1.0" visibility="2"/>&#x0A;<refactoring comment="Encapsulate field &apos;org.eclipse.mylyn.xplanner.ui.editor.XPlannerTaskEditor.useTimeTracking&apos; in &apos;org.eclipse.mylyn.xplanner.ui.editor.XPlannerTaskEditor&apos;&#x0D;&#x0A;- Original project: &apos;org.eclipse.mylyn.xplanner.ui&apos;&#x0D;&#x0A;- Original element: &apos;org.eclipse.mylyn.xplanner.ui.editor.XPlannerTaskEditor.useTimeTracking&apos;&#x0D;&#x0A;- Getter method name: &apos;isUseTimeTracking&apos;&#x0D;&#x0A;- Setter method name: &apos;setUseTimeTracking&apos;&#x0D;&#x0A;- Field visibility: &apos;public&apos;&#x0D;&#x0A;- Use getter and setter methods in declaring type" comments="false" declaring="true" description="Encapsulate field &apos;useTimeTracking&apos;" flags="589830" getter="isUseTimeTracking" id="org.eclipse.jdt.ui.self.encapsulate" input="/src&lt;org.eclipse.mylyn.xplanner.ui.editor{XPlannerTaskEditor.java[XPlannerTaskEditor^useTimeTracking" insertion="23" setter="setUseTimeTracking" stamp="1201290848078" version="1.0" visibility="1"/>&#x0A;<refactoring comment="Rename field &apos;useTimeTracking&apos; in &apos;org.eclipse.mylyn.xplanner.ui.editor.XPlannerTaskEditor&apos; to &apos;useAutoTimeTracking&apos;&#x0D;&#x0A;- Original project: &apos;org.eclipse.mylyn.xplanner.ui&apos;&#x0D;&#x0A;- Original element: &apos;org.eclipse.mylyn.xplanner.ui.editor.XPlannerTaskEditor.useTimeTracking&apos;&#x0D;&#x0A;- Renamed element: &apos;org.eclipse.mylyn.xplanner.ui.editor.XPlannerTaskEditor.useAutoTimeTracking&apos;&#x0D;&#x0A;- Update references to refactored element&#x0D;&#x0A;- Update textual occurrences in comments and strings" delegate="false" deprecate="false" description="Rename field &apos;useTimeTracking&apos;" flags="589826" getter="false" id="org.eclipse.jdt.ui.rename.field" input="/src&lt;org.eclipse.mylyn.xplanner.ui.editor{XPlannerTaskEditor.java[XPlannerTaskEditor^useTimeTracking" name="useAutoTimeTracking" references="true" setter="false" stamp="1201290938125" textual="false" version="1.0"/>&#x0A;<refactoring comment="Extract method &apos;private void forceElapsedTimeUpdated()&apos; from &apos;org.eclipse.mylyn.xplanner.ui.editor.XPlannerTaskEditor.createTimeTrackingPanel().new SelectionListener() {...}.widgetSelected()&apos; to &apos;org.eclipse.mylyn.xplanner.ui.editor.XPlannerTaskEditor&apos;&#x0D;&#x0A;- Original project: &apos;org.eclipse.mylyn.xplanner.ui&apos;&#x0D;&#x0A;- Method name: &apos;forceElapsedTimeUpdated&apos;&#x0D;&#x0A;- Destination type: &apos;org.eclipse.mylyn.xplanner.ui.editor.XPlannerTaskEditor&apos;&#x0D;&#x0A;- Declared visibility: &apos;private&apos;" comments="false" description="Extract method &apos;forceElapsedTimeUpdated&apos;" destination="1" exceptions="false" flags="786434" id="org.eclipse.jdt.ui.extract.method" input="/src&lt;org.eclipse.mylyn.xplanner.ui.editor{XPlannerTaskEditor.java" name="forceElapsedTimeUpdated" replace="false" selection="6296 389" stamp="1201292079171" version="1.0" visibility="2"/>&#x0A;<refactoring comment="Extract method &apos;private String formatSingleFractionHours(Float updatedHours)&apos; from &apos;org.eclipse.mylyn.xplanner.ui.editor.XPlannerTaskEditorExtraControls.formatHours()&apos; to &apos;org.eclipse.mylyn.xplanner.ui.editor.XPlannerTaskEditorExtraControls&apos;&#x0D;&#x0A;- Original project: &apos;org.eclipse.mylyn.xplanner.ui&apos;&#x0D;&#x0A;- Method name: &apos;formatSingleFractionHours&apos;&#x0D;&#x0A;- Destination type: &apos;org.eclipse.mylyn.xplanner.ui.editor.XPlannerTaskEditorExtraControls&apos;&#x0D;&#x0A;- Declared visibility: &apos;private&apos;" comments="false" description="Extract method &apos;formatSingleFractionHours&apos;" destination="0" exceptions="false" flags="786434" id="org.eclipse.jdt.ui.extract.method" input="/src&lt;org.eclipse.mylyn.xplanner.ui.editor{XPlannerTaskEditorExtraControls.java" name="formatSingleFractionHours" replace="false" selection="11354 197" stamp="1201293923546" version="1.0" visibility="2"/>&#x0A;<refactoring comment="Extract method &apos;private boolean isRoundToHalfHour()&apos; from &apos;org.eclipse.mylyn.xplanner.ui.editor.XPlannerTaskEditor.savePreferenceSettings()&apos; to &apos;org.eclipse.mylyn.xplanner.ui.editor.XPlannerTaskEditor&apos;&#x0D;&#x0A;- Original project: &apos;org.eclipse.mylyn.xplanner.ui&apos;&#x0D;&#x0A;- Method name: &apos;isRoundToHalfHour&apos;&#x0D;&#x0A;- Destination type: &apos;org.eclipse.mylyn.xplanner.ui.editor.XPlannerTaskEditor&apos;&#x0D;&#x0A;- Declared visibility: &apos;private&apos;&#x0D;&#x0A;- Replace occurrences of statements with method" comments="false" description="Extract method &apos;isRoundToHalfHour&apos;" destination="0" exceptions="false" flags="786434" id="org.eclipse.jdt.ui.extract.method" input="/src&lt;org.eclipse.mylyn.xplanner.ui.editor{XPlannerTaskEditor.java" name="isRoundToHalfHour" replace="true" selection="6082 36" stamp="1201301360250" version="1.0" visibility="2"/>&#x0A;<refactoring comment="Extract method &apos;private boolean isAddToCurrentTime()&apos; from &apos;org.eclipse.mylyn.xplanner.ui.editor.XPlannerTaskEditor.savePreferenceSettings()&apos; to &apos;org.eclipse.mylyn.xplanner.ui.editor.XPlannerTaskEditor&apos;&#x0D;&#x0A;- Original project: &apos;org.eclipse.mylyn.xplanner.ui&apos;&#x0D;&#x0A;- Method name: &apos;isAddToCurrentTime&apos;&#x0D;&#x0A;- Destination type: &apos;org.eclipse.mylyn.xplanner.ui.editor.XPlannerTaskEditor&apos;&#x0D;&#x0A;- Declared visibility: &apos;private&apos;&#x0D;&#x0A;- Replace occurrences of statements with method" comments="false" description="Extract method &apos;isAddToCurrentTime&apos;" destination="0" exceptions="false" flags="786434" id="org.eclipse.jdt.ui.extract.method" input="/src&lt;org.eclipse.mylyn.xplanner.ui.editor{XPlannerTaskEditor.java" name="isAddToCurrentTime" replace="true" selection="6261 37" stamp="1201301415703" version="1.0" visibility="2"/>&#x0A;<refactoring comment="Encapsulate field &apos;org.eclipse.mylyn.xplanner.ui.editor.XPlannerTaskEditor.roundToHalfHour&apos; in &apos;org.eclipse.mylyn.xplanner.ui.editor.XPlannerTaskEditor&apos;&#x0D;&#x0A;- Original project: &apos;org.eclipse.mylyn.xplanner.ui&apos;&#x0D;&#x0A;- Original element: &apos;org.eclipse.mylyn.xplanner.ui.editor.XPlannerTaskEditor.roundToHalfHour&apos;&#x0D;&#x0A;- Getter method name: &apos;isRoundToHalfHour&apos;&#x0D;&#x0A;- Setter method name: &apos;setRoundToHalfHour&apos;&#x0D;&#x0A;- Field visibility: &apos;public&apos;&#x0D;&#x0A;- Use getter and setter methods in declaring type" comments="false" declaring="true" description="Encapsulate field &apos;roundToHalfHour&apos;" flags="589830" getter="isRoundToHalfHour" id="org.eclipse.jdt.ui.self.encapsulate" input="/src&lt;org.eclipse.mylyn.xplanner.ui.editor{XPlannerTaskEditor.java[XPlannerTaskEditor^roundToHalfHour" insertion="33" setter="setRoundToHalfHour" stamp="1201302132359" version="1.0" visibility="1"/>&#x0A;<refactoring comment="Encapsulate field &apos;org.eclipse.mylyn.xplanner.ui.editor.XPlannerTaskEditor.addToCurrentTime&apos; in &apos;org.eclipse.mylyn.xplanner.ui.editor.XPlannerTaskEditor&apos;&#x0D;&#x0A;- Original project: &apos;org.eclipse.mylyn.xplanner.ui&apos;&#x0D;&#x0A;- Original element: &apos;org.eclipse.mylyn.xplanner.ui.editor.XPlannerTaskEditor.addToCurrentTime&apos;&#x0D;&#x0A;- Getter method name: &apos;isAddToCurrentTime&apos;&#x0D;&#x0A;- Setter method name: &apos;setAddToCurrentTime&apos;&#x0D;&#x0A;- Field visibility: &apos;public&apos;&#x0D;&#x0A;- Use getter and setter methods in declaring type" comments="false" declaring="true" description="Encapsulate field &apos;addToCurrentTime&apos;" flags="589830" getter="isAddToCurrentTime" id="org.eclipse.jdt.ui.self.encapsulate" input="/src&lt;org.eclipse.mylyn.xplanner.ui.editor{XPlannerTaskEditor.java[XPlannerTaskEditor^addToCurrentTime" insertion="34" setter="setAddToCurrentTime" stamp="1201302148093" version="1.0" visibility="1"/>&#x0A;<refactoring comment="Extract local variable &apos;roundToHalfHourPreference&apos; from expression &apos;XPlannerMylynUIPlugin.getBooleanPreference(XPlannerMylynUIPlugin.ROUND_AUTO_TIME_TRACKING_TO_HALF_HOUR_PREFERENCE_NAME)&apos;&#x0D;&#x0A;- Original project: &apos;org.eclipse.mylyn.xplanner.ui&apos;&#x0D;&#x0A;- Variable name: &apos;roundToHalfHourPreference&apos;&#x0D;&#x0A;- Destination method: &apos;org.eclipse.mylyn.xplanner.ui.editor.XPlannerTaskEditor.loadValuesFromPreferenceSettings()&apos;&#x0D;&#x0A;- Variable expression: &apos;XPlannerMylynUIPlugin.getBooleanPreference(XPlannerMylynUIPlugin.ROUND_AUTO_TIME_TRACKING_TO_HALF_HOUR_PREFERENCE_NAME)&apos;&#x0D;&#x0A;- Replace occurrences of expression with variable" description="Extract local variable &apos;roundToHalfHourPreference&apos;" final="false" id="org.eclipse.jdt.ui.extract.temp" input="/src&lt;org.eclipse.mylyn.xplanner.ui.editor{XPlannerTaskEditor.java" name="roundToHalfHourPreference" replace="true" selection="5595 119" stamp="1201302846625" version="1.0"/>&#x0A;<refactoring comment="Extract local variable &apos;addToCurrentTimePreference&apos; from expression &apos;XPlannerMylynUIPlugin.getBooleanPreference(XPlannerMylynUIPlugin.ADD_AUTO_TRACKED_TIME_TO_REPOSITORY_VALUE_PREFERENCE_NAME)&apos;&#x0D;&#x0A;- Original project: &apos;org.eclipse.mylyn.xplanner.ui&apos;&#x0D;&#x0A;- Variable name: &apos;addToCurrentTimePreference&apos;&#x0D;&#x0A;- Destination method: &apos;org.eclipse.mylyn.xplanner.ui.editor.XPlannerTaskEditor.loadValuesFromPreferenceSettings()&apos;&#x0D;&#x0A;- Variable expression: &apos;XPlannerMylynUIPlugin.getBooleanPreference(XPlannerMylynUIPlugin.ADD_AUTO_TRACKED_TIME_TO_REPOSITORY_VALUE_PREFERENCE_NAME)&apos;&#x0D;&#x0A;- Replace occurrences of expression with variable" description="Extract local variable &apos;addToCurrentTimePreference&apos;" final="false" id="org.eclipse.jdt.ui.extract.temp" input="/src&lt;org.eclipse.mylyn.xplanner.ui.editor{XPlannerTaskEditor.java" name="addToCurrentTimePreference" replace="true" selection="5897 123" stamp="1201302873859" version="1.0"/>
3
</session>
(-).refactorings/2008/1/4/refactorings.index (+11 lines)
Added Link Here
1
1201224117828	Extract method 'formatHours'
2
1201290848078	Encapsulate field 'useTimeTracking'
3
1201290938125	Rename field 'useTimeTracking'
4
1201292079171	Extract method 'forceElapsedTimeUpdated'
5
1201293923546	Extract method 'formatSingleFractionHours'
6
1201301360250	Extract method 'isRoundToHalfHour'
7
1201301415703	Extract method 'isAddToCurrentTime'
8
1201302132359	Encapsulate field 'roundToHalfHour'
9
1201302148093	Encapsulate field 'addToCurrentTime'
10
1201302846625	Extract local variable 'roundToHalfHourPreference'
11
1201302873859	Extract local variable 'addToCurrentTimePreference'
(-).refactorings/2008/1/2/refactorings.index (+6 lines)
Added Link Here
1
1199751883234	Convert local variable 'useTimeTrackingButton' to field
2
1199751893843	Convert local variable 'spentTimeLabel' to field
3
1199751904187	Convert local variable 'currentSpentTimeLabel' to field
4
1199751917796	Convert local variable 'trackedSpentTimeText' to field
5
1199751927328	Convert local variable 'addToCurrentTimeButton' to field
6
1199751938093	Convert local variable 'replaceCurrentTimeButton' to field
(-).refactorings/2008/1/2/refactorings.history (+3 lines)
Added Link Here
1
<?xml version="1.0" encoding="UTF-8"?>
2
<session version="1.0">&#x0A;<refactoring comment="Convert local variable &apos;org.eclipse.mylyn.xplanner.ui.editor.XPlannerTaskEditor.createTimeTrackingPanel().useTimeTrackingButton&apos; in &apos;org.eclipse.mylyn.xplanner.ui.editor.XPlannerTaskEditor.createTimeTrackingPanel()&apos; to field&#x0D;&#x0A;- Original project: &apos;org.eclipse.mylyn.xplanner.ui&apos;&#x0D;&#x0A;- Original element: &apos;org.eclipse.mylyn.xplanner.ui.editor.XPlannerTaskEditor.createTimeTrackingPanel().useTimeTrackingButton&apos;&#x0D;&#x0A;- Field name: &apos;useTimeTrackingButton&apos;&#x0D;&#x0A;- Initialize field in method&#x0D;&#x0A;- Declared visibility: &apos;private&apos;" description="Convert local variable &apos;useTimeTrackingButton&apos; to field" final="false" flags="2" id="org.eclipse.jdt.ui.promote.temp" initialize="1" input="/src&lt;org.eclipse.mylyn.xplanner.ui.editor{XPlannerTaskEditor.java" name="useTimeTrackingButton" selection="5466 0" stamp="1199751883234" static="false" version="1.0" visibility="2"/>&#x0A;<refactoring comment="Convert local variable &apos;org.eclipse.mylyn.xplanner.ui.editor.XPlannerTaskEditor.createTimeTrackingPanel().spentTimeLabel&apos; in &apos;org.eclipse.mylyn.xplanner.ui.editor.XPlannerTaskEditor.createTimeTrackingPanel()&apos; to field&#x0D;&#x0A;- Original project: &apos;org.eclipse.mylyn.xplanner.ui&apos;&#x0D;&#x0A;- Original element: &apos;org.eclipse.mylyn.xplanner.ui.editor.XPlannerTaskEditor.createTimeTrackingPanel().spentTimeLabel&apos;&#x0D;&#x0A;- Field name: &apos;spentTimeLabel&apos;&#x0D;&#x0A;- Initialize field in method&#x0D;&#x0A;- Declared visibility: &apos;private&apos;" description="Convert local variable &apos;spentTimeLabel&apos; to field" final="false" flags="2" id="org.eclipse.jdt.ui.promote.temp" initialize="1" input="/src&lt;org.eclipse.mylyn.xplanner.ui.editor{XPlannerTaskEditor.java" name="spentTimeLabel" selection="5737 0" stamp="1199751893843" static="false" version="1.0" visibility="2"/>&#x0A;<refactoring comment="Convert local variable &apos;org.eclipse.mylyn.xplanner.ui.editor.XPlannerTaskEditor.createTimeTrackingPanel().currentSpentTimeLabel&apos; in &apos;org.eclipse.mylyn.xplanner.ui.editor.XPlannerTaskEditor.createTimeTrackingPanel()&apos; to field&#x0D;&#x0A;- Original project: &apos;org.eclipse.mylyn.xplanner.ui&apos;&#x0D;&#x0A;- Original element: &apos;org.eclipse.mylyn.xplanner.ui.editor.XPlannerTaskEditor.createTimeTrackingPanel().currentSpentTimeLabel&apos;&#x0D;&#x0A;- Field name: &apos;currentSpentTimeLabel&apos;&#x0D;&#x0A;- Initialize field in method&#x0D;&#x0A;- Declared visibility: &apos;private&apos;" description="Convert local variable &apos;currentSpentTimeLabel&apos; to field" final="false" flags="2" id="org.eclipse.jdt.ui.promote.temp" initialize="1" input="/src&lt;org.eclipse.mylyn.xplanner.ui.editor{XPlannerTaskEditor.java" name="currentSpentTimeLabel" selection="6037 0" stamp="1199751904187" static="false" version="1.0" visibility="2"/>&#x0A;<refactoring comment="Convert local variable &apos;org.eclipse.mylyn.xplanner.ui.editor.XPlannerTaskEditor.createTimeTrackingPanel().trackedSpentTimeText&apos; in &apos;org.eclipse.mylyn.xplanner.ui.editor.XPlannerTaskEditor.createTimeTrackingPanel()&apos; to field&#x0D;&#x0A;- Original project: &apos;org.eclipse.mylyn.xplanner.ui&apos;&#x0D;&#x0A;- Original element: &apos;org.eclipse.mylyn.xplanner.ui.editor.XPlannerTaskEditor.createTimeTrackingPanel().trackedSpentTimeText&apos;&#x0D;&#x0A;- Field name: &apos;trackedSpentTimeText&apos;&#x0D;&#x0A;- Initialize field in method&#x0D;&#x0A;- Declared visibility: &apos;private&apos;" description="Convert local variable &apos;trackedSpentTimeText&apos; to field" final="false" flags="2" id="org.eclipse.jdt.ui.promote.temp" initialize="1" input="/src&lt;org.eclipse.mylyn.xplanner.ui.editor{XPlannerTaskEditor.java" name="trackedSpentTimeText" selection="6732 0" stamp="1199751917796" static="false" version="1.0" visibility="2"/>&#x0A;<refactoring comment="Convert local variable &apos;org.eclipse.mylyn.xplanner.ui.editor.XPlannerTaskEditor.createTimeTrackingPanel().addToCurrentTimeButton&apos; in &apos;org.eclipse.mylyn.xplanner.ui.editor.XPlannerTaskEditor.createTimeTrackingPanel()&apos; to field&#x0D;&#x0A;- Original project: &apos;org.eclipse.mylyn.xplanner.ui&apos;&#x0D;&#x0A;- Original element: &apos;org.eclipse.mylyn.xplanner.ui.editor.XPlannerTaskEditor.createTimeTrackingPanel().addToCurrentTimeButton&apos;&#x0D;&#x0A;- Field name: &apos;addToCurrentTimeButton&apos;&#x0D;&#x0A;- Initialize field in method&#x0D;&#x0A;- Declared visibility: &apos;private&apos;" description="Convert local variable &apos;addToCurrentTimeButton&apos; to field" final="false" flags="2" id="org.eclipse.jdt.ui.promote.temp" initialize="1" input="/src&lt;org.eclipse.mylyn.xplanner.ui.editor{XPlannerTaskEditor.java" name="addToCurrentTimeButton" selection="7078 0" stamp="1199751927328" static="false" version="1.0" visibility="2"/>&#x0A;<refactoring comment="Convert local variable &apos;org.eclipse.mylyn.xplanner.ui.editor.XPlannerTaskEditor.createTimeTrackingPanel().replaceCurrentTimeButton&apos; in &apos;org.eclipse.mylyn.xplanner.ui.editor.XPlannerTaskEditor.createTimeTrackingPanel()&apos; to field&#x0D;&#x0A;- Original project: &apos;org.eclipse.mylyn.xplanner.ui&apos;&#x0D;&#x0A;- Original element: &apos;org.eclipse.mylyn.xplanner.ui.editor.XPlannerTaskEditor.createTimeTrackingPanel().replaceCurrentTimeButton&apos;&#x0D;&#x0A;- Field name: &apos;replaceCurrentTimeButton&apos;&#x0D;&#x0A;- Initialize field in method&#x0D;&#x0A;- Declared visibility: &apos;private&apos;" description="Convert local variable &apos;replaceCurrentTimeButton&apos; to field" final="false" flags="2" id="org.eclipse.jdt.ui.promote.temp" initialize="1" input="/src&lt;org.eclipse.mylyn.xplanner.ui.editor{XPlannerTaskEditor.java" name="replaceCurrentTimeButton" selection="7295 0" stamp="1199751938093" static="false" version="1.0" visibility="2"/>
3
</session>
(-)src/org/eclipse/mylyn/xplanner/tests/AllXPlannerTests.java (+1 lines)
Lines 24-29 Link Here
24
		suite.addTestSuite(XPlannerRepositoryConnectorTest.class);
24
		suite.addTestSuite(XPlannerRepositoryConnectorTest.class);
25
		suite.addTestSuite(XPlannerCustomQueryTest.class);
25
		suite.addTestSuite(XPlannerCustomQueryTest.class);
26
		suite.addTestSuite(XPlannerTaskDataHandlerTest.class);
26
		suite.addTestSuite(XPlannerTaskDataHandlerTest.class);
27
		suite.addTestSuite(XPlannerTaskEditorTest.class);
27
		// $JUnit-END$
28
		// $JUnit-END$
28
		return suite;
29
		return suite;
29
	}
30
	}
(-)src/org/eclipse/mylyn/xplanner/tests/XPlannerTaskEditorTest.java (+90 lines)
Added Link Here
1
/*******************************************************************************
2
 * Copyright (c) 2007 - 2007 CodeGear 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
package org.eclipse.mylyn.xplanner.tests;
9
10
import junit.framework.TestCase;
11
12
import org.eclipse.mylyn.xplanner.ui.editor.XPlannerTaskEditorExtraControls;
13
14
public class XPlannerTaskEditorTest extends TestCase {
15
16
	protected void setUp() throws Exception {
17
		super.setUp();
18
	}
19
20
	protected void tearDown() throws Exception {
21
		super.tearDown();
22
	}
23
24
	public void testFormatHoursRoundValueNoRound() {
25
		float inputValue = 1.0f; 
26
		String output = XPlannerTaskEditorExtraControls.formatHours(inputValue, false);
27
		assertEquals(output, "1.0");
28
	}
29
30
	public void testFormatHoursRoundValueRound() {
31
		float inputValue = 1.0f; 
32
		String output = XPlannerTaskEditorExtraControls.formatHours(inputValue, true);
33
		assertEquals(output, "1.0");
34
	}
35
	
36
	public void testFormatHoursNotRoundValueRoundHalf() {
37
		float inputValue = 1.5f; 
38
		String output = XPlannerTaskEditorExtraControls.formatHours(inputValue, true);
39
		assertEquals(output, "1.5");
40
	}
41
42
	public void testFormatHoursNotRoundValueRound_1_4() {
43
		float inputValue = 1.4f; 
44
		String output = XPlannerTaskEditorExtraControls.formatHours(inputValue, true);
45
		assertEquals(output, "1.5");
46
	}
47
48
	public void testFormatHoursNotRoundValueRound_1_2() {
49
		float inputValue = 1.2f; 
50
		String output = XPlannerTaskEditorExtraControls.formatHours(inputValue, true);
51
		assertEquals(output, "1.0");
52
	}
53
54
	public void testFormatHoursNotRoundValueRound_1_6() {
55
		float inputValue = 1.6f; 
56
		String output = XPlannerTaskEditorExtraControls.formatHours(inputValue, true);
57
		assertEquals(output, "1.5");
58
	}
59
60
	public void testFormatHoursNotRoundValueRound_1_8() {
61
		float inputValue = 1.8f; 
62
		String output = XPlannerTaskEditorExtraControls.formatHours(inputValue, true);
63
		assertEquals(output, "2.0");
64
	}
65
66
	public void testFormatHoursNotRoundValueNotRound() {
67
		float inputValue = 1.3f; 
68
		String output = XPlannerTaskEditorExtraControls.formatHours(inputValue, false);
69
		assertEquals(output, "1.3");
70
	}
71
72
	public void testFormatHoursNotRoundLongValueNotRound() {
73
		float inputValue = 1.345678f; 
74
		String output = XPlannerTaskEditorExtraControls.formatHours(inputValue, false);
75
		assertEquals(output, "1.3");
76
	}
77
	
78
	public void testFormatSingleFractionHoursNotRoundLongValue() {
79
		float inputValue = 1.366666f; 
80
		String output = XPlannerTaskEditorExtraControls.formatSingleFractionHours(inputValue);
81
		assertEquals(output, "1.4");
82
	}
83
	
84
	public void testFormatSingleFractionHoursRoundValue() {
85
		float inputValue = 1f; 
86
		String output = XPlannerTaskEditorExtraControls.formatSingleFractionHours(inputValue);
87
		assertEquals(output, "1.0");
88
	}
89
	
90
}

Return to bug 211101