diff options
author | spingel | 2009-01-09 23:52:44 +0000 |
---|---|---|
committer | spingel | 2009-01-09 23:52:44 +0000 |
commit | 41d012e3c9d705b43b66c2cf7b607fff76ee4164 (patch) | |
tree | 2a3b9b42cbae7b7d7fcc03f4d1ec6bf13b7b4597 /org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/dialogs | |
parent | 792afd23e21383085253d79b83e44545a011eac2 (diff) | |
download | org.eclipse.mylyn.tasks-41d012e3c9d705b43b66c2cf7b607fff76ee4164.tar.gz org.eclipse.mylyn.tasks-41d012e3c9d705b43b66c2cf7b607fff76ee4164.tar.xz org.eclipse.mylyn.tasks-41d012e3c9d705b43b66c2cf7b607fff76ee4164.zip |
ASSIGNED - bug 231336: Task List toggling sort by descending/ascending has no effect if sort option is date created
https://bugs.eclipse.org/bugs/show_bug.cgi?id=231336
Diffstat (limited to 'org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/dialogs')
4 files changed, 313 insertions, 263 deletions
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/dialogs/Messages.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/dialogs/Messages.java index eda40ecfd..01a2c9dd6 100644 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/dialogs/Messages.java +++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/dialogs/Messages.java @@ -25,20 +25,26 @@ public class Messages extends NLS { NLS.initializeMessages(BUNDLE_NAME, Messages.class); } - public static String TaskListSortDialog_Ascending; + public static String TaskCompareDialog_Ascending; - public static String TaskListSortDialog_Date_Created; + public static String TaskCompareDialog_DateCreated; - public static String TaskListSortDialog_Descending; + public static String TaskCompareDialog_Descending; - public static String TaskListSortDialog_Priority; + public static String TaskCompareDialog_Priority; + + public static String TaskCompareDialog_Sorting; + + public static String TaskCompareDialog_SortOrder; + + public static String TaskCompareDialog_Summary; + + public static String TaskCompareDialog_TaskID; public static String TaskListSortDialog_Sort_order; public static String TaskListSortDialog_Sorting; - public static String TaskListSortDialog_Summary; - public static String TaskRepositoryCredentialsDialog_Enter_Credentials; public static String TaskRepositoryCredentialsDialog_Enter_repository_credentials; diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/dialogs/TaskCompareDialog.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/dialogs/TaskCompareDialog.java new file mode 100644 index 000000000..f6c7c19db --- /dev/null +++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/dialogs/TaskCompareDialog.java @@ -0,0 +1,281 @@ +/******************************************************************************* + * Copyright (c) 2004, 2008 Frank Becker and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Frank Becker - initial API and implementation + *******************************************************************************/ + +package org.eclipse.mylyn.internal.tasks.ui.dialogs; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Comparator; + +import org.eclipse.jface.dialogs.Dialog; +import org.eclipse.jface.window.IShellProvider; +import org.eclipse.mylyn.internal.tasks.ui.util.TaskComparator; +import org.eclipse.mylyn.internal.tasks.ui.views.TaskListView; +import org.eclipse.swt.SWT; +import org.eclipse.swt.events.SelectionAdapter; +import org.eclipse.swt.events.SelectionEvent; +import org.eclipse.swt.layout.GridData; +import org.eclipse.swt.layout.GridLayout; +import org.eclipse.swt.widgets.Button; +import org.eclipse.swt.widgets.Combo; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.swt.widgets.Label; +import org.eclipse.ui.dialogs.SelectionDialog; + +/** + * @author FrankBecker + */ +public class TaskCompareDialog extends SelectionDialog { + + private Combo[] priorityCombos; + + private Button[] ascendingButtons; + + private Button[] descendingButtons; + + private final String[] propertyText; + + private boolean dirty = false; + + private final TaskComparator taskComparator; + + public TaskCompareDialog(IShellProvider parentShell, TaskComparator taskComparator) { + super(parentShell.getShell()); + propertyText = new String[4]; + propertyText[0] = Messages.TaskCompareDialog_Priority; + propertyText[1] = Messages.TaskCompareDialog_Summary; + propertyText[2] = Messages.TaskCompareDialog_DateCreated; + propertyText[3] = Messages.TaskCompareDialog_TaskID; + this.taskComparator = taskComparator; + setTitle(TaskListView.LABEL_VIEW + Messages.TaskCompareDialog_Sorting); + } + + protected void createDialogStartArea(Composite parent) { + Label sortByLabel = new Label(parent, SWT.NULL); + sortByLabel.setText(Messages.TaskCompareDialog_SortOrder); + GridData data = new GridData(); + data.horizontalSpan = 3; + sortByLabel.setLayoutData(data); + } + + @Override + protected Control createDialogArea(Composite parent) { + Composite composite = (Composite) super.createDialogArea(parent); + + initializeDialogUnits(composite); + + Composite prioritiesArea = new Composite(composite, SWT.NULL); + prioritiesArea.setLayout(new GridLayout(3, false)); + + createDialogStartArea(prioritiesArea); + + ascendingButtons = new Button[2]; + descendingButtons = new Button[2]; + priorityCombos = new Combo[2]; + + for (int i = 0; i < 2; i++) { + final int index = i; + Label numberLabel = new Label(prioritiesArea, SWT.NULL); + numberLabel.setText("" + (i + 1) + "."); //$NON-NLS-1$ //$NON-NLS-2$ + priorityCombos[i] = new Combo(prioritiesArea, SWT.READ_ONLY); + priorityCombos[i].setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); + + Composite directionGroup = new Composite(prioritiesArea, SWT.NONE); + directionGroup.setLayout(new GridLayout(2, false)); + ascendingButtons[i] = new Button(directionGroup, SWT.RADIO); + ascendingButtons[i].setText(Messages.TaskCompareDialog_Ascending); + ascendingButtons[i].addSelectionListener(new SelectionAdapter() { + @Override + public void widgetSelected(SelectionEvent e) { + markDirty(); + } + }); + descendingButtons[i] = new Button(directionGroup, SWT.RADIO); + descendingButtons[i].setText(Messages.TaskCompareDialog_Descending); + descendingButtons[i].addSelectionListener(new SelectionAdapter() { + @Override + public void widgetSelected(SelectionEvent e) { + markDirty(); + } + }); + if (i < priorityCombos.length - 1) { + priorityCombos[i].addSelectionListener(new SelectionAdapter() { + @Override + public void widgetSelected(SelectionEvent e) { + int oldSelectionDirection = 1; + if (descendingButtons[index].getSelection()) { + oldSelectionDirection = -1; + } + ArrayList<String> oldSelectionList = new ArrayList<String>( + Arrays.asList(priorityCombos[index].getItems())); + oldSelectionList.removeAll(Arrays.asList(priorityCombos[index + 1].getItems())); + if (oldSelectionList.size() != 1) { + return; + } + String oldSelection = oldSelectionList.get(0); + String newSelection = priorityCombos[index].getItem(priorityCombos[index].getSelectionIndex()); + if (oldSelection.equals(newSelection)) { + return; + } + for (int j = index + 1; j < priorityCombos.length; j++) { + int newSelectionIndex = priorityCombos[j].indexOf(newSelection); + //this combo's current selection is equal to newSelection + if (priorityCombos[j].getSelectionIndex() == newSelectionIndex) { + priorityCombos[j].remove(newSelection); + int insertionPoint = -1 + - Arrays.binarySearch(priorityCombos[j].getItems(), oldSelection, + columnComparator); + if (insertionPoint >= 0 && insertionPoint <= priorityCombos[j].getItemCount()) { + priorityCombos[j].add(oldSelection, insertionPoint); + } else { + priorityCombos[j].add(oldSelection); + } + priorityCombos[j].select(priorityCombos[j].indexOf(oldSelection)); + ascendingButtons[index].setSelection(ascendingButtons[j].getSelection()); + descendingButtons[index].setSelection(descendingButtons[j].getSelection()); + ascendingButtons[j].setSelection(oldSelectionDirection == 1); + descendingButtons[j].setSelection(oldSelectionDirection == -1); + } + //this combo contains newSelection + else if (newSelectionIndex >= 0) { + String currentText = priorityCombos[j].getText(); + priorityCombos[j].remove(newSelection); + int insertionPoint = -1 + - Arrays.binarySearch(priorityCombos[j].getItems(), oldSelection, + columnComparator); + if (insertionPoint >= 0 && insertionPoint <= priorityCombos[j].getItemCount()) { + priorityCombos[j].add(oldSelection, insertionPoint); + priorityCombos[j].select(priorityCombos[j].indexOf(currentText)); + } else { + priorityCombos[j].add(oldSelection); + } + } + } + markDirty(); + } + }); + } else { + priorityCombos[i].addSelectionListener(new SelectionAdapter() { + @Override + public void widgetSelected(SelectionEvent e) { + markDirty(); + } + }); + } + + } + int a[] = new int[2]; + int b[] = new int[2]; + switch (taskComparator.getSortByIndex()) { + case PRIORITY: + a[0] = 0; + break; + case SUMMARY: + a[0] = 1; + break; + case DATE_CREATED: + a[0] = 2; + break; + case TASK_ID: + a[0] = 3; + break; + } + + switch (taskComparator.getSortByIndex2()) { + case PRIORITY: + a[1] = 0; + break; + case SUMMARY: + a[1] = 1; + break; + case DATE_CREATED: + a[1] = 2; + break; + case TASK_ID: + a[1] = 3; + break; + } + b[0] = taskComparator.getSortDirection(); + b[1] = taskComparator.getSortDirection2(); + updateUI(a, b); + Dialog.applyDialogFont(composite); + return composite; + } + + @Override + protected void okPressed() { + if (isDirty()) { + taskComparator.setSortByIndex(TaskComparator.SortByIndex.valueOf(priorityCombos[0].getItem( + priorityCombos[0].getSelectionIndex()).replace(' ', '_').toUpperCase())); + taskComparator.setSortByIndex2(TaskComparator.SortByIndex.valueOf(priorityCombos[1].getItem( + priorityCombos[1].getSelectionIndex()).replace(' ', '_').toUpperCase())); + if (descendingButtons[0].getSelection()) { + taskComparator.setSortDirection(-1); + } else { + taskComparator.setSortDirection(1); + } + if (descendingButtons[1].getSelection()) { + taskComparator.setSortDirection2(-1); + } else { + taskComparator.setSortDirection2(1); + } + + } + super.okPressed(); + } + + /** + * @return boolean + */ + public boolean isDirty() { + return dirty; + } + + /** + * Sets the dirty flag to true. + */ + public void markDirty() { + dirty = true; + } + + private final Comparator<String> columnComparator = new Comparator<String>() { + public int compare(String arg0, String arg1) { + int index0 = -1; + int index1 = -1; + for (int i = 0; i < propertyText.length; i++) { + if (propertyText[i].equals(arg0)) { + index0 = i; + } + if (propertyText[i].equals(arg1)) { + index1 = i; + } + } + return index0 - index1; + } + }; + + protected void updateUI(int[] priorities, int[] directions) { + ArrayList<String> availablePriorities = new ArrayList<String>(Arrays.asList(propertyText)); + + for (int i = 0; i < priorityCombos.length; i++) { + priorityCombos[i].removeAll(); + for (int j = 0; j < availablePriorities.size(); j++) { + priorityCombos[i].add(availablePriorities.get(j)); + } + priorityCombos[i].select(priorityCombos[i].indexOf(propertyText[priorities[i]])); + availablePriorities.remove(propertyText[priorities[i]]); + ascendingButtons[i].setSelection(directions[i] == 1); + descendingButtons[i].setSelection(directions[i] == -1); + } + } + +} diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/dialogs/TaskListSortDialog.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/dialogs/TaskListSortDialog.java index 1729d75a5..6be04e7cf 100644 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/dialogs/TaskListSortDialog.java +++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/dialogs/TaskListSortDialog.java @@ -1,281 +1,41 @@ /******************************************************************************* - * Copyright (c) 2004, 2008 Tasktop Technologies and others. + * Copyright (c) 2004, 2008 Frank Becker and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: - * Tasktop Technologies - initial API and implementation + * Frank Becker - initial API and implementation *******************************************************************************/ package org.eclipse.mylyn.internal.tasks.ui.dialogs; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Comparator; - +import org.eclipse.jface.dialogs.Dialog; import org.eclipse.jface.window.IShellProvider; import org.eclipse.mylyn.internal.tasks.ui.views.TaskListView; -import org.eclipse.mylyn.internal.tasks.ui.views.TaskListTableSorter.SortByIndex; import org.eclipse.swt.SWT; -import org.eclipse.swt.events.SelectionAdapter; -import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.layout.GridData; -import org.eclipse.swt.layout.GridLayout; -import org.eclipse.swt.widgets.Button; -import org.eclipse.swt.widgets.Combo; import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Label; -import org.eclipse.ui.dialogs.SelectionDialog; - -public class TaskListSortDialog extends SelectionDialog { - private Combo[] priorityCombos; - - private Button[] ascendingButtons; - - private Button[] descendingButtons; - private final String[] propertyText; - - private boolean dirty = false; - - private final TaskListView taskListView; +/** + * @author Frank Becker + */ +public class TaskListSortDialog extends TaskCompareDialog { public TaskListSortDialog(IShellProvider parentShell, TaskListView taskListView) { - super(parentShell.getShell()); - propertyText = new String[3]; - propertyText[0] = Messages.TaskListSortDialog_Priority; - propertyText[1] = Messages.TaskListSortDialog_Summary; - propertyText[2] = Messages.TaskListSortDialog_Date_Created; - this.taskListView = taskListView; + super(parentShell, taskListView.getSorter().getTaskComparator()); setTitle(TaskListView.LABEL_VIEW + Messages.TaskListSortDialog_Sorting); } @Override - protected Control createDialogArea(Composite parent) { - Composite composite = (Composite) super.createDialogArea(parent); - - initializeDialogUnits(composite); - - Composite prioritiesArea = new Composite(composite, SWT.NULL); - prioritiesArea.setLayout(new GridLayout(3, false)); - - Label sortByLabel = new Label(prioritiesArea, SWT.NULL); + protected void createDialogStartArea(Composite parent) { + Label sortByLabel = new Label(parent, SWT.NULL); sortByLabel.setText(Messages.TaskListSortDialog_Sort_order); GridData data = new GridData(); data.horizontalSpan = 3; sortByLabel.setLayoutData(data); - - ascendingButtons = new Button[2]; - descendingButtons = new Button[2]; - priorityCombos = new Combo[2]; - - for (int i = 0; i < 2; i++) { - final int index = i; - Label numberLabel = new Label(prioritiesArea, SWT.NULL); - numberLabel.setText("" + (i + 1) + "."); //$NON-NLS-1$ //$NON-NLS-2$ - priorityCombos[i] = new Combo(prioritiesArea, SWT.READ_ONLY); - priorityCombos[i].setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); - - Composite directionGroup = new Composite(prioritiesArea, SWT.NONE); - directionGroup.setLayout(new GridLayout(2, false)); - ascendingButtons[i] = new Button(directionGroup, SWT.RADIO); - ascendingButtons[i].setText(Messages.TaskListSortDialog_Ascending); - ascendingButtons[i].addSelectionListener(new SelectionAdapter() { - @Override - public void widgetSelected(SelectionEvent e) { - markDirty(); - } - }); - descendingButtons[i] = new Button(directionGroup, SWT.RADIO); - descendingButtons[i].setText(Messages.TaskListSortDialog_Descending); - descendingButtons[i].addSelectionListener(new SelectionAdapter() { - @Override - public void widgetSelected(SelectionEvent e) { - markDirty(); - } - }); - if (i < priorityCombos.length - 1) { - priorityCombos[i].addSelectionListener(new SelectionAdapter() { - @Override - public void widgetSelected(SelectionEvent e) { - int oldSelectionDirection = 1; - if (descendingButtons[index].getSelection()) { - oldSelectionDirection = -1; - } - ArrayList<String> oldSelectionList = new ArrayList<String>( - Arrays.asList(priorityCombos[index].getItems())); - oldSelectionList.removeAll(Arrays.asList(priorityCombos[index + 1].getItems())); - if (oldSelectionList.size() != 1) { - return; - } - String oldSelection = oldSelectionList.get(0); - String newSelection = priorityCombos[index].getItem(priorityCombos[index].getSelectionIndex()); - if (oldSelection.equals(newSelection)) { - return; - } - for (int j = index + 1; j < priorityCombos.length; j++) { - int newSelectionIndex = priorityCombos[j].indexOf(newSelection); - //this combo's current selection is equal to newSelection - if (priorityCombos[j].getSelectionIndex() == newSelectionIndex) { - priorityCombos[j].remove(newSelection); - int insertionPoint = -1 - - Arrays.binarySearch(priorityCombos[j].getItems(), oldSelection, - columnComparator); - if (insertionPoint >= 0 && insertionPoint <= priorityCombos[j].getItemCount()) { - priorityCombos[j].add(oldSelection, insertionPoint); - } else { - priorityCombos[j].add(oldSelection); - } - priorityCombos[j].select(priorityCombos[j].indexOf(oldSelection)); - ascendingButtons[index].setSelection(ascendingButtons[j].getSelection()); - descendingButtons[index].setSelection(descendingButtons[j].getSelection()); - ascendingButtons[j].setSelection(oldSelectionDirection == 1); - descendingButtons[j].setSelection(oldSelectionDirection == -1); - } - //this combo contains newSelection - else if (newSelectionIndex >= 0) { - String currentText = priorityCombos[j].getText(); - priorityCombos[j].remove(newSelection); - int insertionPoint = -1 - - Arrays.binarySearch(priorityCombos[j].getItems(), oldSelection, - columnComparator); - if (insertionPoint >= 0 && insertionPoint <= priorityCombos[j].getItemCount()) { - priorityCombos[j].add(oldSelection, insertionPoint); - priorityCombos[j].select(priorityCombos[j].indexOf(currentText)); - } else { - priorityCombos[j].add(oldSelection); - } - } - } - markDirty(); - } - }); - } else { - priorityCombos[i].addSelectionListener(new SelectionAdapter() { - @Override - public void widgetSelected(SelectionEvent e) { - markDirty(); - } - }); - } - - } - int a[] = new int[2]; - int b[] = new int[2]; - switch (taskListView.getSorter().getSortByIndex()) { - case PRIORITY: - a[0] = 0; - break; - case SUMMARY: - a[0] = 1; - break; - case DATE_CREATED: - a[0] = 2; - break; - } - - switch (taskListView.getSorter().getSortByIndex2()) { - case PRIORITY: - a[1] = 0; - break; - case SUMMARY: - a[1] = 1; - break; - case DATE_CREATED: - a[1] = 2; - break; - } - b[0] = taskListView.getSorter().getSortDirection(); - b[1] = taskListView.getSorter().getSortDirection2(); - updateUI(a, b); - - applyDialogFont(composite); - return composite; + Dialog.applyDialogFont(parent); } - - @Override - protected void okPressed() { - if (isDirty()) { - String select; - select = priorityCombos[0].getItem(priorityCombos[0].getSelectionIndex()); - if (propertyText[0].equals(select)) { - taskListView.getSorter().setSortByIndex(SortByIndex.PRIORITY); - } else if (propertyText[1].equals(select)) { - taskListView.getSorter().setSortByIndex(SortByIndex.SUMMARY); - } else { - taskListView.getSorter().setSortByIndex(SortByIndex.DATE_CREATED); - } - select = priorityCombos[1].getItem(priorityCombos[1].getSelectionIndex()); - if (propertyText[0].equals(select)) { - taskListView.getSorter().setSortByIndex2(SortByIndex.PRIORITY); - } else if (propertyText[1].equals(select)) { - taskListView.getSorter().setSortByIndex2(SortByIndex.SUMMARY); - } else { - taskListView.getSorter().setSortByIndex2(SortByIndex.DATE_CREATED); - } - - if (descendingButtons[0].getSelection()) { - taskListView.getSorter().setSortDirection(-1); - } else { - taskListView.getSorter().setSortDirection(1); - } - if (descendingButtons[1].getSelection()) { - taskListView.getSorter().setSortDirection2(-1); - } else { - taskListView.getSorter().setSortDirection2(1); - } - - } - super.okPressed(); - } - - /** - * @return boolean - */ - public boolean isDirty() { - return dirty; - } - - /** - * Sets the dirty flag to true. - */ - public void markDirty() { - dirty = true; - } - - private final Comparator<String> columnComparator = new Comparator<String>() { - public int compare(String arg0, String arg1) { - int index0 = -1; - int index1 = -1; - for (int i = 0; i < propertyText.length; i++) { - if (propertyText[i].equals(arg0)) { - index0 = i; - } - if (propertyText[i].equals(arg1)) { - index1 = i; - } - } - return index0 - index1; - } - }; - - private void updateUI(int[] priorities, int[] directions) { - ArrayList<String> availablePriorities = new ArrayList<String>(Arrays.asList(propertyText)); - - for (int i = 0; i < priorityCombos.length; i++) { - priorityCombos[i].removeAll(); - for (int j = 0; j < availablePriorities.size(); j++) { - priorityCombos[i].add(availablePriorities.get(j)); - } - priorityCombos[i].select(priorityCombos[i].indexOf(propertyText[priorities[i]])); - availablePriorities.remove(propertyText[priorities[i]]); - - ascendingButtons[i].setSelection(directions[i] == 1); - descendingButtons[i].setSelection(directions[i] == -1); - } - } - } diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/dialogs/messages.properties b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/dialogs/messages.properties index ec452df2a..0fb49295c 100644 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/dialogs/messages.properties +++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/dialogs/messages.properties @@ -1,10 +1,13 @@ -TaskListSortDialog_Ascending=Ascending -TaskListSortDialog_Date_Created=Date Created -TaskListSortDialog_Descending=Descending -TaskListSortDialog_Priority=Priority -TaskListSortDialog_Sort_order=Sort order\: +TaskCompareDialog_Ascending=Ascending +TaskCompareDialog_DateCreated=Date Created +TaskCompareDialog_Descending=Descending +TaskCompareDialog_Priority=Priority +TaskCompareDialog_Sorting=\ Sorting +TaskCompareDialog_SortOrder=Sort order: +TaskCompareDialog_Summary=Summary +TaskCompareDialog_TaskID=Task ID +TaskListSortDialog_Sort_order=Sort order for tasks\: TaskListSortDialog_Sorting=\ Sorting -TaskListSortDialog_Summary=Summary TaskRepositoryCredentialsDialog_Enter_Credentials=Enter Credentials TaskRepositoryCredentialsDialog_Enter_repository_credentials=Enter repository credentials |