Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/views/TaskListView.java')
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/views/TaskListView.java1432
1 files changed, 0 insertions, 1432 deletions
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/views/TaskListView.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/views/TaskListView.java
deleted file mode 100644
index 9cf1a37d6..000000000
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/views/TaskListView.java
+++ /dev/null
@@ -1,1432 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004 - 2005 University Of British Columbia 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:
- * University Of British Columbia - initial API and implementation
- *******************************************************************************/
-package org.eclipse.mylar.tasks.ui.views;
-
-import java.io.IOException;
-import java.lang.reflect.InvocationTargetException;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Set;
-
-import javax.security.auth.login.LoginException;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.jface.action.Action;
-import org.eclipse.jface.action.ActionContributionItem;
-import org.eclipse.jface.action.IMenuCreator;
-import org.eclipse.jface.action.IMenuListener;
-import org.eclipse.jface.action.IMenuManager;
-import org.eclipse.jface.action.IToolBarManager;
-import org.eclipse.jface.action.MenuManager;
-import org.eclipse.jface.action.Separator;
-import org.eclipse.jface.dialogs.InputDialog;
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.jface.viewers.CellEditor;
-import org.eclipse.jface.viewers.CheckboxCellEditor;
-import org.eclipse.jface.viewers.ComboBoxCellEditor;
-import org.eclipse.jface.viewers.DoubleClickEvent;
-import org.eclipse.jface.viewers.ICellModifier;
-import org.eclipse.jface.viewers.IDoubleClickListener;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.IStructuredContentProvider;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jface.viewers.ITreeContentProvider;
-import org.eclipse.jface.viewers.StructuredSelection;
-import org.eclipse.jface.viewers.TextCellEditor;
-import org.eclipse.jface.viewers.TreeViewer;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.jface.viewers.ViewerDropAdapter;
-import org.eclipse.jface.viewers.ViewerFilter;
-import org.eclipse.jface.viewers.ViewerSorter;
-import org.eclipse.jface.window.Window;
-import org.eclipse.mylar.bugzilla.core.BugReport;
-import org.eclipse.mylar.bugzilla.core.BugzillaRepository;
-import org.eclipse.mylar.core.ITaskscapeListener;
-import org.eclipse.mylar.core.MylarPlugin;
-import org.eclipse.mylar.dt.MylarWebRef;
-import org.eclipse.mylar.tasks.BugzillaTask;
-import org.eclipse.mylar.tasks.Category;
-import org.eclipse.mylar.tasks.ITask;
-import org.eclipse.mylar.tasks.MylarTasksPlugin;
-import org.eclipse.mylar.tasks.Task;
-import org.eclipse.mylar.tasks.bugzilla.BugzillaStructureBridge;
-import org.eclipse.mylar.tasks.ui.BugzillaTaskEditorInput;
-import org.eclipse.mylar.tasks.ui.TaskEditorInput;
-import org.eclipse.mylar.ui.MylarImages;
-import org.eclipse.mylar.ui.MylarUiPlugin;
-import org.eclipse.mylar.ui.actions.ToggleGlobalInterestFilteringAction;
-import org.eclipse.mylar.ui.internal.views.Highlighter;
-import org.eclipse.mylar.ui.internal.views.HighlighterImageDescriptor;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.dnd.DND;
-import org.eclipse.swt.dnd.DragSourceEvent;
-import org.eclipse.swt.dnd.DragSourceListener;
-import org.eclipse.swt.dnd.TextTransfer;
-import org.eclipse.swt.dnd.Transfer;
-import org.eclipse.swt.dnd.TransferData;
-import org.eclipse.swt.events.ControlEvent;
-import org.eclipse.swt.events.ControlListener;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Menu;
-import org.eclipse.swt.widgets.Text;
-import org.eclipse.swt.widgets.TreeColumn;
-import org.eclipse.swt.widgets.TreeItem;
-import org.eclipse.ui.IActionBars;
-import org.eclipse.ui.IEditorInput;
-import org.eclipse.ui.IEditorPart;
-import org.eclipse.ui.IMemento;
-import org.eclipse.ui.IViewSite;
-import org.eclipse.ui.IWorkbenchActionConstants;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.PartInitException;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.actions.WorkspaceModifyOperation;
-import org.eclipse.ui.internal.Workbench;
-import org.eclipse.ui.part.DrillDownAdapter;
-import org.eclipse.ui.part.ViewPart;
-import org.eclipse.ui.progress.IProgressService;
-
-/**
- * @author Mik Kersten
- */
-public class TaskListView extends ViewPart {
-
- private static TaskListView INSTANCE;
-
- //private CheckboxTreeViewer viewer;
- private TreeViewer viewer;
- private DrillDownAdapter drillDownAdapter;
-
- private Action refresh;
- private Action createTask;
- private Action createCategory;
- private Action addBugzillaReport;
- private Action rename;
- private Action delete;
- private Action doubleClickAction;
- private Action clearSelectedTaskscapeAction;
-
- //private Action toggleIntersectionModeAction = new ToggleIntersectionModeAction();
- private Action toggleFilteringAction = new ToggleGlobalInterestFilteringAction();
-
- private Action completeTask;
- private Action incompleteTask;
- private Action filterCompleteTask;
- private Action filterInCompleteTask;
- private PriorityDropDownAction filterOnPriority;
- private PriorityFilter priorityFilter = new PriorityFilter();
-
- protected String[] columnNames = new String[] { "", ".", "!", "Description", "handle" };
- protected int[] columnWidths = new int[] { 70, 20, 20, 120, 70 };
- private TreeColumn[] columns;
- private IMemento taskListMemento;
- public static final String columnWidthIdentifier = "org.eclipse.mylar.tasks.ui.views.tasklist.columnwidth";
- public static final String tableSortIdentifier = "org.eclipse.mylar.tasks.ui.views.tasklist.sortIndex";
- private int sortIndex = 2;
-
- private String[] PRIORITY_LEVELS = { "P1", "P2", "P3", "P4", "P5" };
-
- private final class CreateTaskAction extends Action {
- private boolean isCategory = false;
-
- public CreateTaskAction(boolean isCategory) {
- this.isCategory = isCategory;
- }
-
- @Override
- public void run() {
- String label = getLabelNameFromUser("task");
- if(label == null) return;
- Task newTask = new Task(MylarTasksPlugin.getTaskListManager().genUniqueTaskId(), label);
-
- Object selectedObject = ((IStructuredSelection)viewer.getSelection()).getFirstElement();
- if (selectedObject instanceof Task && !isCategory){
- ((Task)selectedObject).addSubtask(newTask);
- } else {
- if (isCategory) {
- newTask.setIsCategory(true);
- }
- MylarTasksPlugin.getTaskListManager().getTaskList().addRootTask(newTask);
- }
- MylarUiPlugin.getDefault().setHighlighterMapping(
- newTask.getHandle(),
- MylarUiPlugin.getDefault().getDefaultHighlighter().getName());
- viewer.refresh();
- }
- }
-
- private final class PriorityDropDownAction extends Action implements IMenuCreator {
- private Menu dropDownMenu = null;
-
- public PriorityDropDownAction() {
- setText("Display Priorities");
- setToolTipText("Show Tasks with Priority Levels");
- setImageDescriptor(MylarImages.FILTER_DECLARATIONS);
- setMenuCreator(this);
- }
-
- public void dispose() {
- if (dropDownMenu != null) {
- dropDownMenu.dispose();
- dropDownMenu = null;
- }
- }
-
- public Menu getMenu(Control parent) {
- if (dropDownMenu != null) {
- dropDownMenu.dispose();
- }
- dropDownMenu = new Menu(parent);
- addActionsToMenu();
- return dropDownMenu;
- }
-
- public Menu getMenu(Menu parent) {
- if (dropDownMenu != null) {
- dropDownMenu.dispose();
- }
- dropDownMenu = new Menu(parent);
- addActionsToMenu();
- return dropDownMenu;
- }
-
- public void addActionsToMenu() {
- Action P1 = new Action(PRIORITY_LEVELS[0], AS_CHECK_BOX) {
- @Override
- public void run() {
- MylarUiPlugin.getDefault().setP1FilterMode(!isChecked());
- if (isChecked()) {
- priorityFilter.displayPriority(PRIORITY_LEVELS[0]);
- } else {
- priorityFilter.hidePriority(PRIORITY_LEVELS[0]);
- }
- viewer.refresh();
- }
- };
- P1.setEnabled(true);
- P1.setChecked(!MylarUiPlugin.getDefault().isP1FilterMode());
- P1.setToolTipText(PRIORITY_LEVELS[0]);
- ActionContributionItem item= new ActionContributionItem(P1);
- item.fill(dropDownMenu, -1);
-
- Action P2 = new Action(PRIORITY_LEVELS[1], AS_CHECK_BOX) {
- @Override
- public void run() {
- MylarUiPlugin.getDefault().setP2FilterMode(!isChecked());
- if (isChecked()) {
- priorityFilter.displayPriority(PRIORITY_LEVELS[1]);
- } else {
- priorityFilter.hidePriority(PRIORITY_LEVELS[1]);
- }
- viewer.refresh();
- }
- };
- P2.setEnabled(true);
- P2.setChecked(!MylarUiPlugin.getDefault().isP2FilterMode());
- P2.setToolTipText(PRIORITY_LEVELS[1]);
- item= new ActionContributionItem(P2);
- item.fill(dropDownMenu, -1);
-
- Action P3 = new Action(PRIORITY_LEVELS[2], AS_CHECK_BOX) {
- @Override
- public void run() {
- MylarUiPlugin.getDefault().setP3FilterMode(!isChecked());
- if (isChecked()) {
- priorityFilter.displayPriority(PRIORITY_LEVELS[2]);
- } else {
- priorityFilter.hidePriority(PRIORITY_LEVELS[2]);
- }
- viewer.refresh();
- }
- };
- P3.setEnabled(true);
- P3.setChecked(!MylarUiPlugin.getDefault().isP3FilterMode());
- P3.setToolTipText(PRIORITY_LEVELS[2]);
- item= new ActionContributionItem(P3);
- item.fill(dropDownMenu, -1);
-
- Action P4 = new Action(PRIORITY_LEVELS[3], AS_CHECK_BOX) {
- @Override
- public void run() {
- MylarUiPlugin.getDefault().setP4FilterMode(!isChecked());
- if (isChecked()) {
- priorityFilter.displayPriority(PRIORITY_LEVELS[3]);
- } else {
- priorityFilter.hidePriority(PRIORITY_LEVELS[3]);
- }
- viewer.refresh();
- }
- };
- P4.setEnabled(true);
- P4.setChecked(!MylarUiPlugin.getDefault().isP4FilterMode());
- P4.setToolTipText(PRIORITY_LEVELS[3]);
- item= new ActionContributionItem(P4);
- item.fill(dropDownMenu, -1);
-
- Action P5 = new Action(PRIORITY_LEVELS[4], AS_CHECK_BOX) {
- @Override
- public void run() {
- MylarUiPlugin.getDefault().setP5FilterMode(!isChecked());
- if (isChecked()) {
- priorityFilter.displayPriority(PRIORITY_LEVELS[4]);
- } else {
- priorityFilter.hidePriority(PRIORITY_LEVELS[4]);
- }
- viewer.refresh();
- }
- };
- P5.setEnabled(true);
- P5.setChecked(!MylarUiPlugin.getDefault().isP5FilterMode());
- P5.setToolTipText(PRIORITY_LEVELS[4]);
- item= new ActionContributionItem(P5);
- item.fill(dropDownMenu, -1);
- }
- public void run() {
- }
- }
-
- private ViewerFilter completeFilter = new ViewerFilter(){
- @Override
- public boolean select(Viewer viewer, Object parentElement, Object element) {
- if (element instanceof ITask) {
- if (((ITask)element).hasCompletedSubTasks(false)) {
- return true;
- } else {
- return !((ITask)element).isCompleted();
- }
- } else {
- return false;
- }
- }
- };
-
- private ViewerFilter inCompleteFilter = new ViewerFilter(){
- @Override
- public boolean select(Viewer viewer, Object parentElement, Object element) {
- if (element instanceof ITask) {
- if (((ITask)element).hasCompletedSubTasks(true)) {
- return true;
- } else {
- return ((ITask)element).isCompleted();
- }
- } else {
- return false;
- }
- }
- };
-
- public class PriorityFilter extends ViewerFilter {
- // list of priorities that will be shown in the tasklistview
- private List<String> priorities = new ArrayList<String>();
-
- public PriorityFilter() {
- // if filter is off, then add to list
- if (!MylarUiPlugin.getDefault().isP1FilterMode()) {
- displayPriority("P1");
- }
- if (!MylarUiPlugin.getDefault().isP2FilterMode()) {
- displayPriority("P2");
- }
- if (!MylarUiPlugin.getDefault().isP3FilterMode()) {
- displayPriority("P3");
- }
- if (!MylarUiPlugin.getDefault().isP4FilterMode()) {
- displayPriority("P4");
- }
- if (!MylarUiPlugin.getDefault().isP5FilterMode()) {
- displayPriority("P5");
- }
- }
-
- public void displayPriority(String p) {
- if (!priorities.contains(p)) {
- priorities.add(p);
- }
- }
-
- public void hidePriority(String p) {
- priorities.remove(p);
- }
- @Override
- public boolean select(Viewer viewer, Object parentElement, Object element) {
- if (element instanceof ITask) {
- ITask task = (ITask) element;
- if (priorities.size() == PRIORITY_LEVELS.length) {
- return true;
- } else if (task.isCategory()) {
- return true;
- } else {
- for (String filter : priorities) {
- if (task.getPriority().equals(filter) ||
- task.hasSubTaskWithPriority(filter)) {
- return true;
- }
- }
- return false;
- }
- }
- return false;
- }
-
- };
-
- class TaskListContentProvider implements IStructuredContentProvider, ITreeContentProvider {
- public void inputChanged(Viewer v, Object oldInput, Object newInput) {
- // don't care if the input changes
- }
- public void dispose() {
- // don't care if we are disposed
- }
- public Object[] getElements(Object parent) {
- if (parent.equals(getViewSite())) {
- return MylarTasksPlugin.getTaskListManager().getTaskList().getRootTasks().toArray();
- }
- return getChildren(parent);
- }
- public Object getParent(Object child) {
- if (child instanceof Task) {
- return ((Task)child).getParent();
- }
- return null;
- }
- public Object [] getChildren(Object parent) {
- if (parent instanceof ITask) {
- return ((ITask)parent).getChildren().toArray();
- }
- return new Object[0];
- }
- public boolean hasChildren(Object parent) {
- if (parent instanceof ITask) {
- ITask task = (ITask)parent;
- return task.getChildren() != null && task.getChildren().size() > 0;
- }
- return false;
- }
- }
-
- public TaskListView() {
- INSTANCE = this;
- }
-
- class TaskListCellModifier implements ICellModifier {
-
- public boolean canModify(Object element, String property) {
- int columnIndex = Arrays.asList(columnNames).indexOf(property);
- ITask task = (ITask) element;
- switch (columnIndex) {
- case 0:
- return true;
- case 1:
- return false;
- case 2:
- return !(task instanceof BugzillaTask);
- case 3:
- return !(task instanceof BugzillaTask);
- case 4:
- return false;
- }
- return false;
- }
-
- public Object getValue(Object element, String property) {
- int columnIndex = Arrays.asList(columnNames).indexOf(property);
- ITask task = (ITask) element;
- switch (columnIndex) {
- case 0:
- return new Boolean(task.isCompleted());
- case 1:
- return "";
- case 2:
- String priorityString = task.getPriority().substring(1);
- return new Integer(priorityString);
- case 3:
- return task.getLabel();
- case 4:
- return task.getHandle();
- }
- return "";
- }
-
- public void modify(Object element, String property, Object value) {
- int columnIndex = -1;
- try {
- columnIndex = Arrays.asList(columnNames).indexOf(property);
- ITask task = (ITask) ((TreeItem) element).getData();
- switch (columnIndex) {
- case 0:
- if (!task.isCategory()) {
- if (task.isActive()) {
- MylarTasksPlugin.getTaskListManager().deactivateTask(
- task);
- } else {
- MylarTasksPlugin.getTaskListManager().activateTask(
- task);
- }
- }
- viewer.setSelection(null);
- break;
- case 1:
- break;
- case 2:
- Integer intVal = (Integer) value;
- task.setPriority("P" + (intVal + 1));
- viewer.setSelection(null);
- break;
- case 3:
- task.setLabel(((String) value).trim());
- MylarTasksPlugin.getTaskListManager().taskPropertyChanged(task, columnNames[3]);
- viewer.setSelection(null);
- break;
- case 4:
- break;
- }
- viewer.refresh(task);
- } catch (Exception e) {
- MylarPlugin.log(e, e.getMessage());
- }
- }
- }
-
- private class TaskListTableSorter extends ViewerSorter {
-
- private String column;
-
- public TaskListTableSorter(String column) {
- super();
- this.column = column;
- }
-
- /**
- * compare - invoked when column is selected calls the actual comparison
- * method for particular criteria
- */
- @Override
- public int compare(Viewer compareViewer, Object o1, Object o2) {
- ITask task1 = (ITask) o1;
- ITask task2 = (ITask) o2;
-
- if (task1.isCompleted()) return 1;
- if (task2.isCompleted()) return -1;
- if (column == columnNames[1]) {
- if (task1 instanceof BugzillaTask && !(task2 instanceof BugzillaTask)) {
- return 1;
- } else {
- return -1;
- }
- } else if (column == columnNames[2]) {
- return task1.getPriority().compareTo(task2.getPriority());
- } else if (column == columnNames[3]) {
- return task1.getLabel().compareTo(task2.getLabel());
- } else if (column == columnNames[4]){
- return task1.getPath().compareTo(task2.getPath());
- } else {
- return 0;
- }
- }
- }
-
- @Override
- public void init(IViewSite site,IMemento memento) throws PartInitException {
- init(site);
- this.taskListMemento = memento;
- }
-
- @Override
- public void saveState(IMemento memento) {
- IMemento colMemento = memento.createChild(columnWidthIdentifier);
-
- for (int i = 0; i < columnWidths.length; i++) {
- IMemento m = colMemento.createChild("col"+i);
- m.putInteger("width", columnWidths[i]);
- }
-
- IMemento sorter = memento.createChild(tableSortIdentifier);
- IMemento m = sorter.createChild("sorter");
- m.putInteger("sortIndex", sortIndex);
- }
-
- private void restoreState() {
- if (taskListMemento == null)
- return;
- IMemento taskListWidth = taskListMemento.getChild(columnWidthIdentifier);
- if (taskListWidth != null) {
- for (int i = 0; i < columnWidths.length; i++) {
- IMemento m = taskListWidth.getChild("col"+i);
- if (m != null) {
- int width = m.getInteger("width");
- columnWidths[i] = width;
- columns[i].setWidth(width);
- }
- }
- }
- IMemento sorterMemento = taskListMemento.getChild(tableSortIdentifier);
- if (sorterMemento != null) {
- IMemento m = sorterMemento.getChild("sorter");
- if (m != null) {
- sortIndex = m.getInteger("sortIndex");
- } else {
- sortIndex = 2;
- }
- } else {
- sortIndex = 2; // default priority
- }
- viewer.setSorter(new TaskListTableSorter(columnNames[sortIndex]));
- viewer.addFilter(priorityFilter);
- viewer.refresh();
- }
-
- /**
- * This is a callback that will allow us
- * to create the viewer and initialize it.
- */
- @Override
- public void createPartControl(Composite parent) {
- viewer = new TreeViewer(parent, SWT.VERTICAL | SWT.H_SCROLL | SWT.V_SCROLL | SWT.FULL_SELECTION | SWT.HIDE_SELECTION);
- viewer.getTree().setHeaderVisible(true);
- viewer.getTree().setLinesVisible(true);
- viewer.setColumnProperties(columnNames);
- viewer.setUseHashlookup(true);
-
- columns = new TreeColumn[columnNames.length];
- for (int i = 0; i < columnNames.length; i++) {
- columns[i] = new TreeColumn(viewer.getTree(), 0); // SWT.LEFT
- columns[i].setText(columnNames[i]);
- columns[i].setWidth(columnWidths[i]);
- final int index = i;
- columns[i].addSelectionListener(new SelectionAdapter() {
-
- @Override
- public void widgetSelected(SelectionEvent e) {
- sortIndex = index;
- viewer.setSorter(new TaskListTableSorter(columnNames[sortIndex]));
- }
- });
- columns[i].addControlListener(new ControlListener () {
- public void controlResized(ControlEvent e) {
- for (int j = 0; j < columnWidths.length; j++) {
- if (columns[j].equals(e.getSource())) {
- columnWidths[j] = columns[j].getWidth();
- }
- }
- }
- public void controlMoved(ControlEvent e) {
- // don't care if the control is moved
- }
- });
-
- }
-
- CellEditor[] editors = new CellEditor[columnNames.length];
- TextCellEditor textEditor = new TextCellEditor(viewer.getTree());
- ((Text) textEditor.getControl()).setOrientation(SWT.LEFT_TO_RIGHT);
- editors[0] = new CheckboxCellEditor();
- editors[1] = textEditor;
- editors[2] = new ComboBoxCellEditor(viewer.getTree(), PRIORITY_LEVELS, SWT.READ_ONLY);
- editors[3] = textEditor;
- viewer.setCellEditors(editors);
- viewer.setCellModifier(new TaskListCellModifier());
- viewer.setSorter(new TaskListTableSorter(columnNames[sortIndex]));
-
- drillDownAdapter = new DrillDownAdapter(viewer);
- viewer.setContentProvider(new TaskListContentProvider());
- TaskListLabelProvider lp = new TaskListLabelProvider();
- lp.setBackgroundColor(parent.getBackground());
- viewer.setLabelProvider(lp);
- viewer.setInput(getViewSite());
-
- makeActions();
- hookContextMenu();
- hookDoubleClickAction();
- contributeToActionBars();
- ToolTipHandler toolTipHandler = new ToolTipHandler(viewer.getControl().getShell());
- toolTipHandler.activateHoverHelp(viewer.getControl());
-
- initDragAndDrop(parent);
- expandToActiveTasks();
- restoreState();
- }
-
- @MylarWebRef(name="Drag and drop article", url="http://www.eclipse.org/articles/Article-Workbench-DND/drag_drop.html")
- private void initDragAndDrop(Composite parent) {
- Transfer[] types = new Transfer[] { TextTransfer.getInstance() };
-
- viewer.addDragSupport(DND.DROP_MOVE, types, new DragSourceListener() {
-
- public void dragStart(DragSourceEvent event) {
- if (((StructuredSelection) viewer.getSelection()).isEmpty()) {
- event.doit = false;
- }
- }
-
- public void dragSetData(DragSourceEvent event) {
- StructuredSelection selection = (StructuredSelection) viewer.getSelection();
- if (!selection.isEmpty()) {
- event.data = "" + ((ITask) selection.getFirstElement()).getHandle();
- } else {
- event.data = "null";
- }
- }
-
- public void dragFinished(DragSourceEvent event) {
- // don't care if the drag is done
- }
- });
-
- viewer.addDropSupport(DND.DROP_MOVE, types, new ViewerDropAdapter(viewer) {
- {
- setFeedbackEnabled(false);
- }
-
- @Override
- public boolean performDrop(Object data) {
- Object selectedObject = ((IStructuredSelection) ((TreeViewer) getViewer())
- .getSelection()).getFirstElement();
- if (selectedObject instanceof ITask) {
- ITask source = (ITask) selectedObject;
- ITask target = (ITask) getCurrentTarget();
- source.getParent().removeSubtask(source);
- target.addSubtask(source);
- viewer.refresh();
- return true;
- }
- return false;
- }
-
- @Override
- public boolean validateDrop(Object targetObject, int operation,
- TransferData transferType) {
- Object selectedObject = ((IStructuredSelection) ((TreeViewer) getViewer())
- .getSelection()).getFirstElement();
- if (selectedObject instanceof ITask) {
- ITask source = (ITask) selectedObject;
- ITask target = (ITask) getCurrentTarget();
- if (target != null && !target.isCategory())
- return false;
- if (source.isCategory())
- return false;
- }
- return TextTransfer.getInstance().isSupportedType(transferType);
- }
-
- });
- }
-
- private void expandToActiveTasks() {
- List<ITask> activeTasks = MylarTasksPlugin.getTaskListManager().getTaskList().getActiveTasks();
- for (ITask t : activeTasks) {
- viewer.expandToLevel(t, 0);
- }
- }
-
- private void hookContextMenu() {
- MenuManager menuMgr = new MenuManager("#PopupMenu");
- menuMgr.setRemoveAllWhenShown(true);
- menuMgr.addMenuListener(new IMenuListener() {
- public void menuAboutToShow(IMenuManager manager) {
- TaskListView.this.fillContextMenu(manager);
- }
- });
- Menu menu = menuMgr.createContextMenu(viewer.getControl());
- viewer.getControl().setMenu(menu);
- getSite().registerContextMenu(menuMgr, viewer);
- }
-
- private void contributeToActionBars() {
- IActionBars bars = getViewSite().getActionBars();
- fillLocalPullDown(bars.getMenuManager());
- fillLocalToolBar(bars.getToolBarManager());
- }
-
- private void fillLocalPullDown(IMenuManager manager) {
-// manager.add(createCategory);
-// manager.add(new Separator());
-// manager.add(createTask);
- }
-
- void fillContextMenu(IMenuManager manager) {
- manager.add(completeTask);
- manager.add(incompleteTask);
-// manager.add(new Separator());
- manager.add(createTask);
- manager.add(addBugzillaReport);
- manager.add(rename);
- manager.add(delete);
- manager.add(clearSelectedTaskscapeAction);
- manager.add(new Separator());
- MenuManager subMenuManager = new MenuManager("choose highlighter");
- for (Iterator<Highlighter> it = MylarUiPlugin.getDefault().getHighlighters().iterator(); it.hasNext();) {
- final Highlighter highlighter = it.next();
- final Object selectedObject = ((IStructuredSelection)viewer.getSelection()).getFirstElement();
- if (selectedObject instanceof Task){
- Action action = new Action() {
-
- @Override
- public void run() {
- Task task = (Task)selectedObject;
- MylarUiPlugin.getDefault().setHighlighterMapping(task.getHandle(), highlighter.getName());
- TaskListView.this.viewer.refresh();
- MylarPlugin.getTaskscapeManager().notifyPostPresentationSettingsChange(ITaskscapeListener.UpdateKind.HIGHLIGHTER);
-// taskscapeComponent.getTableViewer().refresh();
- }
- };
- if (highlighter.isGradient()) {
- action.setImageDescriptor(new HighlighterImageDescriptor(highlighter.getBase(), highlighter.getLandmarkColor()));
- } else {
- action.setImageDescriptor(new HighlighterImageDescriptor(highlighter.getLandmarkColor(), highlighter.getLandmarkColor()));
- }
- action.setText(highlighter.toString());
- subMenuManager.add(action);
- } else {
-// showMessage("Select task before choosing highlighter");
- }
- }
- manager.add(subMenuManager);
- manager.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS));
- }
-
- private void fillLocalToolBar(IToolBarManager manager) {
- manager.add(createCategory);
- manager.add(createTask);
-// manager.add(new Separator());
- manager.add(addBugzillaReport);
- manager.add(refresh);
- manager.add(new Separator());
- manager.add(toggleFilteringAction);
- //manager.add(toggleIntersectionModeAction);
- manager.add(new Separator());
- manager.add(filterCompleteTask);
- manager.add(filterInCompleteTask);
- manager.add(filterOnPriority);
- drillDownAdapter.addNavigationActions(manager);
- }
-
- /**
- * @see org.eclipse.pde.internal.ui.view.HistoryDropDownAction
- *
- */
- private void makeActions() {
- refresh = new Action() {
-
- @Override
- public void run() {
- // TODO background?
- // perform the update in an operation so that we get a progress monitor
- // update the structure bridge cache with the reference provider cached bugs
- WorkspaceModifyOperation op = new WorkspaceModifyOperation() {
- protected void execute(IProgressMonitor monitor) throws CoreException {
-
- List<ITask> tasks = MylarTasksPlugin.getTaskListManager().getTaskList().getRootTasks();
-
- for (ITask task : tasks) {
- if (task instanceof BugzillaTask) {
- ((BugzillaTask)task).refresh();
- }
- refreshChildren(task.getChildren());
- }
-
- // clear the caches
- Set<String> cachedHandles = new HashSet<String>();
- cachedHandles.addAll(MylarTasksPlugin.getDefault().getStructureBridge().getCachedHandles());
- cachedHandles.addAll(MylarTasksPlugin.getReferenceProvider().getCachedHandles());
- MylarTasksPlugin.getDefault().getStructureBridge().clearCache();
- MylarTasksPlugin.getReferenceProvider().clearCachedReports();
-
- BugzillaStructureBridge bridge = MylarTasksPlugin.getDefault().getStructureBridge();
- monitor.beginTask("Downloading Bugs" , cachedHandles.size());
- for(String key: cachedHandles){
- try {
- String [] parts = key.split(";");
- final int id = Integer.parseInt(parts[1]);
- BugReport bug = BugzillaRepository.getInstance().getCurrentBug(id);
- if(bug != null)
- bridge.cache(key, bug);
- }catch(Exception e){}
-
- monitor.worked(1);
- }
- monitor.done();
- viewer.refresh();
- }
- };
-
- // Use the progess service to execute the runnable
- IProgressService service = PlatformUI.getWorkbench().getProgressService();
- try {
- service.run(true, false, op);
- } catch (InvocationTargetException e) {
- // Operation was canceled
- } catch (InterruptedException e) {
- // Handle the wrapped exception
- }
- }
- };
- refresh.setText("Refresh all Bugzilla reports");
- refresh.setToolTipText("Refresh all Bugzilla reports");
- refresh.setImageDescriptor(MylarImages.REFRESH);
-
-// createCategory = new Action() {
-// public void run() {
-// try {
-// String label = getLabelNameFromUser("category");
-// MylarTasksPlugin.getTaskListManager().getTaskList().createCategory(label);
-// viewer.refresh();
-// } catch (Exception e) {
-// MylarPlugin.fail(e, "Couldn't create category", true);
-// }
-// }
-// };
-// createCategory.setText("Create category");
-// createCategory.setToolTipText("Create category");
-// createCategory.setImageDescriptor(MylarImages.TASK_CATEGORY_NEW);
-
- createTask = new CreateTaskAction(false);
- createTask.setText("Create task");
- createTask.setToolTipText("Create task");
- createTask.setImageDescriptor(MylarImages.TASK_NEW);
-
- createCategory = new CreateTaskAction(true);
- createCategory.setText("Create category");
- createCategory.setToolTipText("Create category");
- createCategory.setImageDescriptor(MylarImages.CATEGORY_NEW);
-
- addBugzillaReport = new Action() {
-
- @Override
- public void run() {
- String bugIdString = getBugIdFromUser();
- int bugId = -1;
- try {
- if (bugIdString != null) {
- bugId = Integer.parseInt(bugIdString);
- } else {
- return;
- }
- } catch (NumberFormatException nfe) {
- showMessage("Please enter a valid report number");
- return;
- }
-
- // Check the existing tasks to see if the id is used already.
- // This is to prevent the creation of mutliple Bugzilla tasks
- // for the same Bugzilla report.
- boolean doesIdExistAlready = false;
- List<ITask> tasks = MylarTasksPlugin.getTaskListManager().getTaskList().getRootTasks();
- for (Iterator<ITask> iter = tasks.iterator(); iter.hasNext() && !doesIdExistAlready;) {
- ITask task = iter.next();
- doesIdExistAlready = lookForId(task, "Bugzilla-" + bugId);
- }
- if (doesIdExistAlready) {
- showMessage("A Bugzilla task with ID Bugzilla-" + bugId + " already exists.");
- return;
- }
-
-
- //HACK need the server name and handle properly
- ITask newTask = new BugzillaTask("Bugzilla-"+bugId, "<bugzilla info>");
-
- Object selectedObject = ((IStructuredSelection)viewer.getSelection()).getFirstElement();
- if (selectedObject instanceof Task){
- ((Task)selectedObject).addSubtask(newTask);
- } else {
- MylarTasksPlugin.getTaskListManager().getTaskList().addRootTask(newTask);
- }
- viewer.refresh();
- }
- };
- addBugzillaReport.setText("Add bugzilla report");
- addBugzillaReport.setToolTipText("Add bugzilla report");
- addBugzillaReport.setImageDescriptor(MylarImages.TASK_BUGZILLA_NEW);
-
- delete = new Action() {
-
- @Override
- public void run() {
- boolean deleteConfirmed = MessageDialog.openQuestion(
- Workbench.getInstance().getActiveWorkbenchWindow().getShell(),
- "Confirm delete",
- "Delete selected task and all subtasks?");
- if (!deleteConfirmed) {
- return;
- } else {
- Object selectedObject = ((IStructuredSelection)viewer.getSelection()).getFirstElement();
- if (selectedObject instanceof Task) {
- MylarTasksPlugin.getTaskListManager().deleteTask((Task)selectedObject);
- MylarPlugin.getTaskscapeManager().taskDeleted(((Task)selectedObject).getHandle(), ((Task)selectedObject).getPath());
- IWorkbenchPage page = MylarTasksPlugin.getDefault().getWorkbench().getActiveWorkbenchWindow().getActivePage();
-
- // if we couldn't get the page, get out of here
- if (page == null)
- return;
- try{
- closeTaskEditors((ITask)selectedObject, page);
- }catch(Exception e){
- MylarPlugin.log(e, " deletion failed");
- }
- }
- }
- viewer.refresh();
- }
- };
- delete.setText("Delete");
- delete.setToolTipText("Delete");
- delete.setImageDescriptor(MylarImages.REMOVE);
-
- completeTask = new Action() {
-
- @Override
- public void run() {
- Object selectedObject = ((IStructuredSelection)viewer.getSelection()).getFirstElement();
- if (selectedObject instanceof Task){
- ((Task)selectedObject).setCompleted(true);
- viewer.refresh(selectedObject);
- }
- }
- };
- completeTask.setText("Mark Complete");
- completeTask.setToolTipText("Mark Complete");
-// activateTask.setImageDescriptor(MylarImages.REMOVE);
-
- incompleteTask = new Action() {
-
- @Override
- public void run() {
- Object selectedObject = ((IStructuredSelection)viewer.getSelection()).getFirstElement();
- if (selectedObject instanceof Task){
- ((Task)selectedObject).setCompleted(false);
- viewer.refresh(selectedObject);
- }
- }
- };
- incompleteTask.setText("Mark Incomplete");
- incompleteTask.setToolTipText("Mark Incomplete");
-// deactivateTask.setImageDescriptor(MylarImages.REMOVE);
-
- rename = new Action() {
-
- @Override
- public void run() {
- String label = "category";
- Object selectedObject = ((IStructuredSelection)viewer.getSelection()).getFirstElement();
- if (selectedObject instanceof Task) label = "task";
-
- String newName = getLabelNameFromUser(label);
- if (selectedObject instanceof Task) {
- ((Task)selectedObject).setLabel(newName);
- } else if (selectedObject instanceof Category) {
- ((Category)selectedObject).setName(newName);
- }
- viewer.refresh(selectedObject);
- }
- };
- rename.setText("Rename");
- rename.setToolTipText("Rename");
-
- clearSelectedTaskscapeAction = new Action() {
-
- @Override
- public void run() {
- Object selectedObject = ((IStructuredSelection)viewer.getSelection()).getFirstElement();
- if (selectedObject != null) {
- MylarPlugin.getTaskscapeManager().taskDeleted(((Task)selectedObject).getHandle(), ((Task)selectedObject).getPath());
- viewer.refresh();
- }
- }
- };
- clearSelectedTaskscapeAction.setText("Erase Taskscape");
- clearSelectedTaskscapeAction.setToolTipText("Erase Taskscape");
- clearSelectedTaskscapeAction.setImageDescriptor(MylarImages.ERASE_TASKSCAPE);
-
- doubleClickAction = new Action() {
- @Override
- public void run() {
- ISelection selection = viewer.getSelection();
- Object obj = ((IStructuredSelection)selection).getFirstElement();
- if (obj instanceof ITask) {
- ((ITask)obj).openTaskInEditor();
- }
- viewer.refresh(obj);
- }
- };
-
- filterCompleteTask = new Action() {
- @Override
- public void run() {
- MylarUiPlugin.getDefault().setFilterCompleteMode(isChecked());
- if (isChecked()) {
- viewer.addFilter(completeFilter);
- filterInCompleteTask.setChecked(false);
- viewer.removeFilter(inCompleteFilter);
- } else {
- viewer.removeFilter(completeFilter);
- }
- viewer.refresh();
- }
- };
- filterCompleteTask.setText("Filter Complete tasks");
- filterCompleteTask.setToolTipText("Filter Completed tasks");
- filterCompleteTask.setImageDescriptor(MylarImages.TASK_ACTIVE);
- filterCompleteTask.setChecked(MylarUiPlugin.getDefault().isFilterCompleteMode());
-
- filterInCompleteTask = new Action() {
- @Override
- public void run() {
- MylarUiPlugin.getDefault().setFilterInCompleteMode(isChecked());
- if (isChecked()) {
- viewer.addFilter(inCompleteFilter);
- filterCompleteTask.setChecked(false);
- viewer.removeFilter(completeFilter);
- } else {
- viewer.removeFilter(inCompleteFilter);
- }
- viewer.refresh();
- }
- };
- filterInCompleteTask.setText("Filter Incomplete tasks");
- filterInCompleteTask.setToolTipText("Filter Incomplete tasks");
- filterInCompleteTask.setImageDescriptor(MylarImages.TASK_INACTIVE);
- filterInCompleteTask.setChecked(MylarUiPlugin.getDefault().isFilterInCompleteMode());
-
-
- filterOnPriority = new PriorityDropDownAction();
- }
-
- /**
- * Recursive function that checks for the occurrence of a certain task id.
- * All children of the supplied node will be checked.
- *
- * @param task
- * The <code>ITask</code> object that is to be searched.
- * @param taskId
- * The id that is being searched for.
- * @return <code>true</code> if the id was found in the node or any of its
- * children
- */
- protected boolean lookForId(ITask task, String taskId) {
- if (task.getHandle().equals(taskId)) {
- return true;
- }
-
- List<ITask> children = task.getChildren();
- if (children == null) {
- return false;
- }
-
- for (ITask childTask : children) {
- if (lookForId(childTask, taskId)) {
- return true;
- }
- }
-
- return false;
- }
-
- protected void closeTaskEditors(ITask task, IWorkbenchPage page) throws LoginException, IOException{
- IEditorInput input = null;
- if (task instanceof BugzillaTask) {
- input = new BugzillaTaskEditorInput((BugzillaTask)task);
- } else if (task instanceof Task) {
- input = new TaskEditorInput((Task) task);
- }
- IEditorPart editor = page.findEditor(input);
-
- if (editor != null) {
- page.closeEditor(editor, false);
- }
-
-
- List<ITask> children = task.getChildren();
- if (children == null)
- return;
- for (ITask child : children)
- closeTaskEditors(child, page);
- }
-
- protected void refreshChildren(List<ITask> children) {
- if (children != null) {
- for (ITask child : children) {
- if (child instanceof BugzillaTask) {
- ((BugzillaTask)child).refresh();
- }
- refreshChildren(child.getChildren());
- }
- }
- }
-
- private void hookDoubleClickAction() {
- viewer.addDoubleClickListener(new IDoubleClickListener() {
- public void doubleClick(DoubleClickEvent event) {
- doubleClickAction.run();
- }
- });
- }
- private void showMessage(String message) {
- MessageDialog.openInformation(
- viewer.getControl().getShell(),
- "Tasklist Message",
- message);
- }
-
- /**
- * Passing the focus request to the viewer's control.
- */
- @Override
- public void setFocus() {
- viewer.getControl().setFocus();
- //TODO: foo
- }
-
- private String getBugIdFromUser() {
- InputDialog dialog = new InputDialog(
- Workbench.getInstance().getActiveWorkbenchWindow().getShell(),
- "Enter Bugzilla ID",
- "Enter the Bugzilla ID: ",
- "",
- null);
- int dialogResult = dialog.open();
- if (dialogResult == Window.OK) {
- return dialog.getValue();
- } else {
- return null;
- }
- }
-
- private String getLabelNameFromUser(String kind) {
-
- InputDialog dialog = new InputDialog(
- Workbench.getInstance().getActiveWorkbenchWindow().getShell(),
- "Enter name",
- "Enter a name for the " + kind + ": ",
- "",
- null);
- int dialogResult = dialog.open();
- if (dialogResult == Window.OK) {
- return dialog.getValue();
- } else {
- return null;
- }
- }
-
- public void notifyTaskDataChanged(ITask task) {
- if (viewer.getTree() != null && !viewer.getTree().isDisposed()) {
- viewer.refresh(task);
- }
- }
-
- public static TaskListView getDefault() {
- return INSTANCE;
- }
-
- public TreeViewer getViewer() {
- return viewer;
- }
-
- public ViewerFilter getCompleteFilter() {
- return completeFilter;
- }
-
- public ViewerFilter getInCompleteFilter() {
- return inCompleteFilter;
- }
-
- public PriorityFilter getPriorityFilter() {
- return priorityFilter;
- }
-}
-
-//TextTransfer textTransfer = TextTransfer.getInstance();
-//DropTarget target = new DropTarget(viewer.getTree(), DND.DROP_MOVE);
-//target.setTransfer(new Transfer[] { textTransfer });
-//target.addDropListener(new TaskListDropTargetListener(parent, null, textTransfer, true));
-//
-//DragSource source = new DragSource(viewer.getTree(), DND.DROP_MOVE);
-//source.setTransfer(types);
-
-//source.addDragListener(new DragSourceListener() {
-//public void dragStart(DragSourceEvent event) {
-// if (((StructuredSelection)viewer.getSelection()).isEmpty()) {
-// event.doit = false;
-// }
-//}
-//public void dragSetData(DragSourceEvent event) {
-// StructuredSelection selection = (StructuredSelection) viewer.getSelection();
-// if (!selection.isEmpty()) {
-// event.data = "" + ((ITask)selection.getFirstElement()).getId();
-// } else {
-// event.data = "null";
-// }
-//}
-//
-//public void dragFinished(DragSourceEvent event) { }
-//});
-
-
-// public boolean getServerStatus() {
-// return serverStatus;
-// }
-//
-// /**
-// * Sets whether or not we could connect to the Bugzilla server. If
-// * necessary, the corresponding label in the view is updated.
-// *
-// * @param canRead
-// * <code>true</code> if the Bugzilla server could be connected
-// * to
-// */
-// public void setServerStatus(boolean canRead) {
-// if (serverStatus != canRead) {
-// serverStatus = canRead;
-// updateServerStatusLabel();
-// }
-// }
-//
-// private void updateServerStatusLabel() {
-// if (serverStatusLabel.isDisposed()) {
-// return;
-// }
-// if (serverStatus) {
-// serverStatusLabel.setText(CAN_READ_LABEL);
-// }
-// else {
-// serverStatusLabel.setText(CANNOT_READ_LABEL);
-// }
-// }
-//
-// private class ServerPingJob extends Job {
-// private boolean shouldCheckAgain = true;
-// private int counter = 0;
-//
-// public ServerPingJob(String name) {
-// super(name);
-// }
-//
-// public void stopPinging() {
-// shouldCheckAgain = false;
-// }
-//
-// protected IStatus run(IProgressMonitor monitor) {
-// while (shouldCheckAgain) {
-// try {
-// final boolean canReadFromServer = TaskListView.checkServer();
-// Workbench.getInstance().getDisplay().asyncExec(new Runnable() {
-// public void run() {
-// setServerStatus(canReadFromServer);
-// }
-// });
-// Thread.sleep(10000/*MylarPreferencePage.getServerPing()*5000*/);
-// } catch (InterruptedException e) {
-// break;
-// }
-// }
-// return new Status(IStatus.OK, MylarPlugin.IDENTIFIER, IStatus.OK, "", null);
-// }
-// }
-//
-// /**
-// * @return <code>true</code> if we could connect to the Bugzilla server
-// */
-// public static boolean checkServer() {
-// boolean canRead = true;
-// BufferedReader in = null;
-//
-// // Call this function to intialize the Bugzilla url that the repository
-// // is using.
-// BugzillaRepository.getInstance();
-//
-// try {
-// // connect to the bugzilla server
-// SSLContext ctx = SSLContext.getInstance("TLS");
-// javax.net.ssl.TrustManager[] tm = new javax.net.ssl.TrustManager[]{new TrustAll()};
-// ctx.init(null, tm, null);
-// HttpsURLConnection.setDefaultSSLSocketFactory(ctx.getSocketFactory());
-// String urlText = "";
-//
-// // use the usename and password to get into bugzilla if we have it
-// if(BugzillaPreferences.getUserName() != null && !BugzillaPreferences.getUserName().equals("") && BugzillaPreferences.getPassword() != null && !BugzillaPreferences.getPassword().equals(""))
-// {
-// /*
-// * The UnsupportedEncodingException exception for
-// * URLEncoder.encode() should not be thrown, since every
-// * implementation of the Java platform is required to support
-// * the standard charset "UTF-8"
-// */
-// try {
-// urlText += "?GoAheadAndLogIn=1&Bugzilla_login=" + URLEncoder.encode(BugzillaPreferences.getUserName(), "UTF-8") + "&Bugzilla_password=" + URLEncoder.encode(BugzillaPreferences.getPassword(), "UTF-8");
-// } catch (UnsupportedEncodingException e) { }
-// }
-//
-// URL url = new URL(BugzillaRepository.getURL() + "/enter_bug.cgi" + urlText);
-//
-// // create a new input stream for getting the bug
-// in = new BufferedReader(new InputStreamReader(url.openStream()));
-// }
-// catch (Exception e) {
-// // If there was an IOException, then there was a problem connecting.
-// // If there was some other exception, then it was a problem not
-// // related to the server.
-// if (e instanceof IOException) {
-// canRead = false;
-// }
-// }
-//
-// // Close the BufferedReader if we opened one.
-// try {
-// if (in != null)
-// in.close();
-// } catch(IOException e) {}
-//
-// return canRead;
-// }
-//
-// public void dispose() {
-// if (serverPingJob != null) {
-// serverPingJob.stopPinging();
-// }
-// super.dispose();
-// }
-
-// source.addDragListener(new DragSourceListener() {
-//
-// public void dragStart(DragSourceEvent event) {
-// if (((StructuredSelection) viewer.getSelection()).getFirstElement() == null) {
-// event.doit = false;
-// }
-// }
-//
-// public void dragSetData(DragSourceEvent event) {
-// StructuredSelection selection = (StructuredSelection)viewer.getSelection();
-// ITask task = (ITask) selection.getFirstElement();
-// if (task != null) {
-// event.data = "" + task.getId();
-// } else {
-// event.data = " ";
-// }
-// }
-//
-// public void dragFinished(DragSourceEvent event) {
-// StructuredSelection selection = (StructuredSelection)viewer.getSelection();
-// if (selection.isEmpty()) {
-// return;
-// } else {
-// ITask task = (ITask) selection.getFirstElement();
-//
-// System.err.println(">>> got task: " + task + ">> " + );
-//
-// }
-// }
-//
-// });

Back to the top