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 216150 | Differences between
and this patch

Collapse All | Expand All

(-)src/org/eclipse/mylyn/internal/tasks/ui/views/TaskListTableSorter.java (-20 / +104 lines)
Lines 35-40 Link Here
35
35
36
	private SortByIndex sortByIndex = SortByIndex.PRIORITY;
36
	private SortByIndex sortByIndex = SortByIndex.PRIORITY;
37
37
38
	private static final int DEFAULT_SORT_DIRECTION2 = 1;
39
40
	private int sortDirection2 = DEFAULT_SORT_DIRECTION2;
41
42
	private SortByIndex sortByIndex2 = SortByIndex.SUMMARY;
43
38
	private final TaskListView view;
44
	private final TaskListView view;
39
45
40
	private TaskKeyComparator taskKeyComparator = new TaskKeyComparator();
46
	private TaskKeyComparator taskKeyComparator = new TaskKeyComparator();
Lines 127-156 Link Here
127
133
128
	private int compareElements(AbstractTaskContainer element1, AbstractTaskContainer element2) {
134
	private int compareElements(AbstractTaskContainer element1, AbstractTaskContainer element2) {
129
		if (SortByIndex.PRIORITY.equals(sortByIndex)) {
135
		if (SortByIndex.PRIORITY.equals(sortByIndex)) {
130
			int result = this.sortDirection * element1.getPriority().compareTo(element2.getPriority());
136
			int result = sortByPriority(element1, element2, sortDirection);
131
			if (result != 0) {
137
			if (result != 0) {
132
				return result;
138
				return result;
133
			}
139
			}
134
			return sortBySummary(element1, element2);
140
			if (SortByIndex.DATE_CREATED.equals(sortByIndex2)) {
135
141
				return sortByDate(element1, element2, sortDirection2);
142
			} else {
143
				if (SortByIndex.SUMMARY.equals(sortByIndex2)) {
144
					return sortBySummary(element1, element2, sortDirection2);
145
				} else {
146
					return result;
147
				}			
148
			}
136
		} else if (SortByIndex.DATE_CREATED.equals(sortByIndex)) {
149
		} else if (SortByIndex.DATE_CREATED.equals(sortByIndex)) {
137
			AbstractTask t1 = null;
150
			int result = sortByDate(element1, element2, sortDirection);
138
			AbstractTask t2 = null;
151
			if (result != 0) {
139
			if (element1 instanceof AbstractTask) {
152
				return result;
140
				t1 = (AbstractTask) element1;
153
			}
141
			}
154
			if (SortByIndex.PRIORITY.equals(sortByIndex2)) {
142
			if (element2 instanceof AbstractTask) {
155
				return sortByPriority(element1, element2, sortDirection2);
143
				t2 = (AbstractTask) element2;
156
			} else {
144
			}
157
				if (SortByIndex.SUMMARY.equals(sortByIndex2)) {
145
			if (t1 != null && t2 != null) {
158
					return sortBySummary(element1, element2, sortDirection2);
146
				if (t1.getCreationDate() != null) {
159
				} else {
147
					return t1.getCreationDate().compareTo(t2.getCreationDate());
160
					return result;
148
				}
161
				}			
149
			}
162
			}
150
		} else {
163
		} else {
151
			return sortBySummary(element1, element2);
164
			int result = sortBySummary(element1, element2, sortDirection);
165
			if (result != 0) {
166
				return result;
167
			}
168
			if (SortByIndex.DATE_CREATED.equals(sortByIndex2)) {
169
				return sortByDate(element1, element2, sortDirection2);
170
			} else {
171
				if (SortByIndex.PRIORITY.equals(sortByIndex2)) {
172
					return sortByPriority(element1, element2, sortDirection2);
173
				} else {
174
					return result;
175
				}			
176
			}
152
		}
177
		}
153
		return 0;
154
	}
178
	}
155
179
156
	/**
180
	/**
Lines 160-168 Link Here
160
	 * @param element2
184
	 * @param element2
161
	 * @return sort order
185
	 * @return sort order
162
	 */
186
	 */
163
	private int sortBySummary(AbstractTaskContainer element1, AbstractTaskContainer element2) {
187
	private int sortBySummary(AbstractTaskContainer element1, AbstractTaskContainer element2, int sortDirection) {
164
		return this.sortDirection
188
		return sortDirection * taskKeyComparator.compare(getSortableFromElement(element1), getSortableFromElement(element2));
165
				* taskKeyComparator.compare(getSortableFromElement(element1), getSortableFromElement(element2));
189
	}
190
191
	/**
192
	 * Determine the sort order of two tasks by priority
193
	 * 
194
	 * @param element1
195
	 * @param element2
196
	 * @return sort order
197
	 */
198
	private int sortByPriority(AbstractTaskContainer element1, AbstractTaskContainer element2, int sortDirection) {
199
		return sortDirection * element1.getPriority().compareTo(element2.getPriority());
200
	}
201
202
	/**
203
	 * Determine the sort order of two tasks by creation date
204
	 * 
205
	 * @param element1
206
	 * @param element2
207
	 * @return sort order
208
	 */
209
	private int sortByDate(AbstractTaskContainer element1, AbstractTaskContainer element2, int sortDirection) {
210
		AbstractTask t1 = null;
211
		AbstractTask t2 = null;
212
		if (element1 instanceof AbstractTask) {
213
			t1 = (AbstractTask) element1;
214
		}
215
		if (element2 instanceof AbstractTask) {
216
			t2 = (AbstractTask) element2;
217
		}
218
		if (t1 != null && t2 != null) {
219
			if (t1.getCreationDate() != null) {
220
				return sortDirection * t1.getCreationDate().compareTo(t2.getCreationDate());
221
			}
222
		}
223
		return 0;
166
	}
224
	}
167
225
168
	/**
226
	/**
Lines 228-231 Link Here
228
		}
286
		}
229
	}
287
	}
230
288
289
290
	public SortByIndex getSortByIndex2() {
291
		return sortByIndex2;
292
	}
293
294
	public void setSortByIndex2(SortByIndex sortByIndex) {
295
		SortByIndex oldValue = this.sortByIndex2;
296
		this.sortByIndex2 = sortByIndex;
297
		if (!oldValue.equals(sortByIndex)) {
298
			view.getViewer().refresh();
299
		}
300
301
	}
302
303
	public int getSortDirection2() {
304
		return sortDirection2;
305
	}
306
307
	public void setSortDirection2(int sortDirection) {
308
		int oldValue = this.sortDirection2;
309
		this.sortDirection2 = sortDirection;
310
		if (oldValue != this.sortDirection2) {
311
			view.getViewer().refresh();
312
		}
313
	}
314
231
}
315
}
(-)src/org/eclipse/mylyn/internal/tasks/ui/views/SortyByDropDownAction.java (-5 / +114 lines)
Lines 14-21 Link Here
14
import org.eclipse.jface.action.Separator;
14
import org.eclipse.jface.action.Separator;
15
import org.eclipse.mylyn.internal.tasks.ui.TasksUiImages;
15
import org.eclipse.mylyn.internal.tasks.ui.TasksUiImages;
16
import org.eclipse.mylyn.internal.tasks.ui.views.TaskListTableSorter.SortByIndex;
16
import org.eclipse.mylyn.internal.tasks.ui.views.TaskListTableSorter.SortByIndex;
17
import org.eclipse.swt.SWT;
17
import org.eclipse.swt.widgets.Control;
18
import org.eclipse.swt.widgets.Control;
18
import org.eclipse.swt.widgets.Menu;
19
import org.eclipse.swt.widgets.Menu;
20
import org.eclipse.swt.widgets.MenuItem;
19
21
20
/**
22
/**
21
 * @author Mik Kersten
23
 * @author Mik Kersten
Lines 32-39 Link Here
32
34
33
	private Action byDateCreated;
35
	private Action byDateCreated;
34
36
37
	private Action byPriority2;
38
39
	private Action bySummary2;
40
41
	private Action byDateCreated2;
42
35
	private Menu dropDownMenu = null;
43
	private Menu dropDownMenu = null;
36
44
45
	private Menu dropDownMenu1 = null;
46
47
	private Menu dropDownMenu2 = null;
48
37
	public SortyByDropDownAction(TaskListView taskListView) {
49
	public SortyByDropDownAction(TaskListView taskListView) {
38
		super();
50
		super();
39
		this.taskListView = taskListView;
51
		this.taskListView = taskListView;
Lines 53-59 Link Here
53
		if (dropDownMenu != null) {
65
		if (dropDownMenu != null) {
54
			dropDownMenu.dispose();
66
			dropDownMenu.dispose();
55
		}
67
		}
68
		if (dropDownMenu1 != null) {
69
			dropDownMenu1.dispose();
70
		}
71
		if (dropDownMenu2 != null) {
72
			dropDownMenu2.dispose();
73
		}
56
		dropDownMenu = new Menu(parent);
74
		dropDownMenu = new Menu(parent);
75
76
		MenuItem item = new MenuItem (dropDownMenu, SWT.CASCADE);
77
		item.setText ("1. Level");
78
		dropDownMenu1 = new Menu (dropDownMenu);
79
		item.setMenu (dropDownMenu1);
80
		item = new MenuItem (dropDownMenu, SWT.CASCADE);
81
		item.setText ("2. Level");
82
		dropDownMenu2 = new Menu (dropDownMenu);
83
		item.setMenu (dropDownMenu2);
57
		addActionsToMenu();
84
		addActionsToMenu();
58
		return dropDownMenu;
85
		return dropDownMenu;
59
	}
86
	}
Lines 62-68 Link Here
62
		if (dropDownMenu != null) {
89
		if (dropDownMenu != null) {
63
			dropDownMenu.dispose();
90
			dropDownMenu.dispose();
64
		}
91
		}
92
		if (dropDownMenu1 != null) {
93
			dropDownMenu1.dispose();
94
		}
95
		if (dropDownMenu2 != null) {
96
			dropDownMenu2.dispose();
97
		}
65
		dropDownMenu = new Menu(parent);
98
		dropDownMenu = new Menu(parent);
99
100
		MenuItem item = new MenuItem (dropDownMenu, SWT.CASCADE);
101
		item.setText ("1. Level");
102
		dropDownMenu1 = new Menu (dropDownMenu);
103
		item.setMenu (dropDownMenu1);
104
		item = new MenuItem (dropDownMenu, SWT.CASCADE);
105
		item.setText ("2. Level");
106
		dropDownMenu2 = new Menu (dropDownMenu);
107
		item.setMenu (dropDownMenu2);
66
		addActionsToMenu();
108
		addActionsToMenu();
67
		return dropDownMenu;
109
		return dropDownMenu;
68
	}
110
	}
Lines 80-86 Link Here
80
		byPriority.setEnabled(true);
122
		byPriority.setEnabled(true);
81
		byPriority.setText("Priority");
123
		byPriority.setText("Priority");
82
		byPriority.setImageDescriptor(TasksUiImages.PRIORITY_1);
124
		byPriority.setImageDescriptor(TasksUiImages.PRIORITY_1);
83
		new ActionContributionItem(byPriority).fill(dropDownMenu, -1);
125
		new ActionContributionItem(byPriority).fill(dropDownMenu1, -1);
84
126
85
		bySummary = new Action("", AS_CHECK_BOX) {
127
		bySummary = new Action("", AS_CHECK_BOX) {
86
			@Override
128
			@Override
Lines 93-99 Link Here
93
		};
135
		};
94
		bySummary.setEnabled(true);
136
		bySummary.setEnabled(true);
95
		bySummary.setText("Summary");
137
		bySummary.setText("Summary");
96
		new ActionContributionItem(bySummary).fill(dropDownMenu, -1);
138
		new ActionContributionItem(bySummary).fill(dropDownMenu1, -1);
97
139
98
		byDateCreated = new Action("", AS_CHECK_BOX) {
140
		byDateCreated = new Action("", AS_CHECK_BOX) {
99
			@Override
141
			@Override
Lines 107-115 Link Here
107
		byDateCreated.setEnabled(true);
149
		byDateCreated.setEnabled(true);
108
		byDateCreated.setText("Date Created");
150
		byDateCreated.setText("Date Created");
109
		byDateCreated.setImageDescriptor(TasksUiImages.CALENDAR_SMALL);
151
		byDateCreated.setImageDescriptor(TasksUiImages.CALENDAR_SMALL);
110
		new ActionContributionItem(byDateCreated).fill(dropDownMenu, -1);
152
		new ActionContributionItem(byDateCreated).fill(dropDownMenu1, -1);
111
153
112
		new Separator().fill(dropDownMenu, -1);
154
		new Separator().fill(dropDownMenu1, -1);
113
155
114
		Action reverse = new Action("", AS_CHECK_BOX) {
156
		Action reverse = new Action("", AS_CHECK_BOX) {
115
			@Override
157
			@Override
Lines 121-127 Link Here
121
		reverse.setEnabled(true);
163
		reverse.setEnabled(true);
122
		reverse.setText("Descending");
164
		reverse.setText("Descending");
123
		reverse.setChecked(taskListView.getSorter().getSortDirection() < 0);
165
		reverse.setChecked(taskListView.getSorter().getSortDirection() < 0);
124
		new ActionContributionItem(reverse).fill(dropDownMenu, -1);
166
		new ActionContributionItem(reverse).fill(dropDownMenu1, -1);
125
167
126
		switch (taskListView.getSorter().getSortByIndex()) {
168
		switch (taskListView.getSorter().getSortByIndex()) {
127
		case PRIORITY:
169
		case PRIORITY:
Lines 134-139 Link Here
134
			byDateCreated.setChecked(true);
176
			byDateCreated.setChecked(true);
135
			break;
177
			break;
136
		}
178
		}
179
180
		byPriority2 = new Action("", AS_CHECK_BOX) {
181
			@Override
182
			public void run() {
183
				taskListView.getSorter().setSortByIndex2(SortByIndex.PRIORITY);
184
				byPriority2.setChecked(true);
185
				bySummary2.setChecked(false);
186
				byDateCreated2.setChecked(false);
187
			}
188
		};
189
		byPriority2.setEnabled(true);
190
		byPriority2.setText("Priority");
191
		byPriority2.setImageDescriptor(TasksUiImages.PRIORITY_1);
192
		new ActionContributionItem(byPriority2).fill(dropDownMenu2, -1);
193
194
		bySummary2 = new Action("", AS_CHECK_BOX) {
195
			@Override
196
			public void run() {
197
				taskListView.getSorter().setSortByIndex2(SortByIndex.SUMMARY);
198
				byPriority2.setChecked(false);
199
				bySummary2.setChecked(true);
200
				byDateCreated2.setChecked(false);
201
			}
202
		};
203
		bySummary2.setEnabled(true);
204
		bySummary2.setText("Summary");
205
		new ActionContributionItem(bySummary2).fill(dropDownMenu2, -1);
206
207
		byDateCreated2 = new Action("", AS_CHECK_BOX) {
208
			@Override
209
			public void run() {
210
				taskListView.getSorter().setSortByIndex2(SortByIndex.DATE_CREATED);
211
				byPriority2.setChecked(false);
212
				bySummary2.setChecked(false);
213
				byDateCreated2.setChecked(true);
214
			}
215
		};
216
		byDateCreated2.setEnabled(true);
217
		byDateCreated2.setText("Date Created");
218
		byDateCreated2.setImageDescriptor(TasksUiImages.CALENDAR_SMALL);
219
		new ActionContributionItem(byDateCreated2).fill(dropDownMenu2, -1);
220
221
		new Separator().fill(dropDownMenu2, -1);
222
223
		Action reverse2 = new Action("", AS_CHECK_BOX) {
224
			@Override
225
			public void run() {
226
				taskListView.getSorter().setSortDirection2(taskListView.getSorter().getSortDirection2() * -1);
227
				setChecked(taskListView.getSorter().getSortDirection2() < 0);
228
			}
229
		};
230
		reverse2.setEnabled(true);
231
		reverse2.setText("Descending");
232
		reverse2.setChecked(taskListView.getSorter().getSortDirection2() < 0);
233
		new ActionContributionItem(reverse2).fill(dropDownMenu2, -1);
234
235
		switch (taskListView.getSorter().getSortByIndex2()) {
236
		case PRIORITY:
237
			byPriority2.setChecked(true);
238
			break;
239
		case SUMMARY:
240
			bySummary2.setChecked(true);
241
			break;
242
		case DATE_CREATED:
243
			byDateCreated2.setChecked(true);
244
			break;
245
		}
137
	}
246
	}
138
247
139
	@Override
248
	@Override

Return to bug 216150