diff options
author | mkersten | 2008-04-29 22:09:25 +0000 |
---|---|---|
committer | mkersten | 2008-04-29 22:09:25 +0000 |
commit | b03835381a00df87e6d6a0a98ce04247dc39755f (patch) | |
tree | 1db0baf7efea4cce72bba0e1a547a9d3d5977698 /org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal | |
parent | f6f8efb3dc8d6abc2af7227dc59c0e90d9391e87 (diff) | |
download | org.eclipse.mylyn.tasks-b03835381a00df87e6d6a0a98ce04247dc39755f.tar.gz org.eclipse.mylyn.tasks-b03835381a00df87e6d6a0a98ce04247dc39755f.tar.xz org.eclipse.mylyn.tasks-b03835381a00df87e6d6a0a98ce04247dc39755f.zip |
NEW - bug 217725: [api] review plug-in and feature dependencies
https://bugs.eclipse.org/bugs/show_bug.cgi?id=217725
Diffstat (limited to 'org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal')
20 files changed, 0 insertions, 2489 deletions
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/ActivityReportAction.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/ActivityReportAction.java deleted file mode 100644 index dbc4e72b1..000000000 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/ActivityReportAction.java +++ /dev/null @@ -1,50 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2004, 2007 Mylyn project committers 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 - *******************************************************************************/ - -package org.eclipse.mylyn.internal.tasks.ui.actions; - -import org.eclipse.jface.action.Action; -import org.eclipse.jface.wizard.WizardDialog; -import org.eclipse.mylyn.internal.tasks.ui.TasksUiImages; -import org.eclipse.mylyn.internal.tasks.ui.planner.TaskActivityWizard; -import org.eclipse.swt.widgets.Shell; -import org.eclipse.ui.PlatformUI; - -/** - * @author Rob Elves - */ -public class ActivityReportAction extends Action { - - private static final String LABEL = "Activity Report"; - - public static final String ID = "org.eclipse.mylyn.tasklist.actions.report.activity"; - - public ActivityReportAction() { - super(LABEL); - setId(ID); - setText(LABEL); - setToolTipText(LABEL); - setImageDescriptor(TasksUiImages.TASKLIST); - } - - @Override - public void run() { - TaskActivityWizard wizard = new TaskActivityWizard(); - - Shell shell = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(); - if (shell != null && !shell.isDisposed()) { - - WizardDialog dialog = new WizardDialog(shell, wizard); - dialog.setBlockOnOpen(true); - dialog.open(); - - } else { - // ignore - } - } -} diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/planner/CompletedTaskCollector.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/planner/CompletedTaskCollector.java deleted file mode 100644 index dbf5ea7c3..000000000 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/planner/CompletedTaskCollector.java +++ /dev/null @@ -1,54 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2004, 2007 Mylyn project committers 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 - *******************************************************************************/ - -package org.eclipse.mylyn.internal.tasks.ui.planner; - -import java.util.Date; -import java.util.HashMap; -import java.util.HashSet; -import java.util.Map; -import java.util.Set; - -import org.eclipse.mylyn.tasks.core.AbstractTask; - -/** - * @author Ken Sueda - */ -public class CompletedTaskCollector implements ITaskCollector { - - private final Map<String, AbstractTask> completedTasks = new HashMap<String, AbstractTask>(); - - private final Date periodStartDate; - - private final Date periodEndDate; - - public CompletedTaskCollector(Date periodStartDate, Date periodEndDate) { - this.periodStartDate = periodStartDate; - this.periodEndDate = periodEndDate; - - } - - public String getLabel() { - return "Completed Tasks"; - } - - public void consumeTask(AbstractTask task) { - if (task.isCompleted() && task.getCompletionDate() != null - && task.getCompletionDate().compareTo(periodStartDate) >= 0 - && task.getCompletionDate().compareTo(periodEndDate) <= 0 - && !completedTasks.containsKey(task.getHandleIdentifier())) { - completedTasks.put(task.getHandleIdentifier(), task); - } - } - - public Set<AbstractTask> getTasks() { - Set<AbstractTask> tasks = new HashSet<AbstractTask>(); - tasks.addAll(completedTasks.values()); - return tasks; - } -} diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/planner/DateSelectionDialog.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/planner/DateSelectionDialog.java deleted file mode 100644 index c6b53b256..000000000 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/planner/DateSelectionDialog.java +++ /dev/null @@ -1,106 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2004, 2007 Mylyn project committers 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 - *******************************************************************************/ - -package org.eclipse.mylyn.internal.tasks.ui.planner; - -import java.util.Calendar; -import java.util.Date; - -import org.eclipse.jface.dialogs.Dialog; -import org.eclipse.jface.dialogs.IDialogConstants; -import org.eclipse.jface.viewers.ISelectionChangedListener; -import org.eclipse.jface.viewers.SelectionChangedEvent; -import org.eclipse.mylyn.internal.tasks.ui.views.DatePickerPanel; -import org.eclipse.mylyn.internal.tasks.ui.views.DatePickerPanel.DateSelection; -import org.eclipse.swt.SWT; -import org.eclipse.swt.layout.GridData; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Control; -import org.eclipse.swt.widgets.Shell; -import org.eclipse.ui.forms.widgets.FormToolkit; - -/** - * @author Ken Sueda - * @author Mik Kersten - * @author Rob Elves - */ -public class DateSelectionDialog extends Dialog { - - private Date reminderDate = null; - - private String title = "Date Selection"; - - private final Calendar initialCalendar = Calendar.getInstance(); - - private final FormToolkit toolkit; - - private boolean includeTime = true; - - public DateSelectionDialog(Shell parentShell, String title) { - this(parentShell, Calendar.getInstance(), title, true); - } - - public DateSelectionDialog(Shell parentShell, Calendar initialDate, String title, boolean includeTime) { - super(parentShell); - this.includeTime = includeTime; - toolkit = new FormToolkit(parentShell.getDisplay()); - if (title != null) { - this.title = title; - } - if (initialDate != null) { - this.initialCalendar.setTime(initialDate.getTime()); - } - reminderDate = initialCalendar.getTime(); - } - - @Override - protected Control createDialogArea(Composite parent) { - parent.setBackground(toolkit.getColors().getBackground()); - getShell().setText(title); - DatePickerPanel datePanel = new DatePickerPanel(parent, SWT.NULL, initialCalendar, includeTime); - datePanel.addSelectionChangedListener(new ISelectionChangedListener() { - - public void selectionChanged(SelectionChangedEvent event) { - if (!event.getSelection().isEmpty()) { - DateSelection dateSelection = (DateSelection) event.getSelection(); - reminderDate = dateSelection.getDate().getTime(); - } - } - }); - datePanel.setBackground(toolkit.getColors().getBackground()); - datePanel.setLayoutData(new GridData(SWT.CENTER, SWT.CENTER, false, false)); - - return datePanel; - } - - @Override - public boolean close() { - toolkit.dispose(); - return super.close(); - } - - @Override - protected void createButtonsForButtonBar(Composite parent) { - parent.setBackground(toolkit.getColors().getBackground()); - createButton(parent, IDialogConstants.CLIENT_ID + 1, "Clear", false); - super.createButtonsForButtonBar(parent); - } - - @Override - protected void buttonPressed(int buttonId) { - super.buttonPressed(buttonId); - if (buttonId == IDialogConstants.CLIENT_ID + 1) { - reminderDate = null; - okPressed(); - } - } - - public Date getDate() { - return reminderDate; - } -} diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/planner/ITaskCollector.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/planner/ITaskCollector.java deleted file mode 100644 index b6e6d7905..000000000 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/planner/ITaskCollector.java +++ /dev/null @@ -1,23 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2004, 2007 Mylyn project committers 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 - *******************************************************************************/ - -package org.eclipse.mylyn.internal.tasks.ui.planner; - -import java.util.Set; - -import org.eclipse.mylyn.tasks.core.AbstractTask; - -/** - * @author Ken Sueda - */ -public interface ITaskCollector { - - public abstract void consumeTask(AbstractTask task); - - public abstract Set<AbstractTask> getTasks(); -} diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/planner/ITaskPlannerContentProvider.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/planner/ITaskPlannerContentProvider.java deleted file mode 100644 index 265f97c2e..000000000 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/planner/ITaskPlannerContentProvider.java +++ /dev/null @@ -1,18 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2004, 2007 Mylyn project committers 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 - *******************************************************************************/ - -package org.eclipse.mylyn.internal.tasks.ui.planner; - -import org.eclipse.mylyn.tasks.core.AbstractTask; - -public interface ITaskPlannerContentProvider { - - public void removeTask(AbstractTask task); - - public void addTask(AbstractTask task); -} diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/planner/InProgressTaskCollector.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/planner/InProgressTaskCollector.java deleted file mode 100644 index 18ef8091d..000000000 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/planner/InProgressTaskCollector.java +++ /dev/null @@ -1,77 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2004, 2007 Mylyn project committers 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 - *******************************************************************************/ -package org.eclipse.mylyn.internal.tasks.ui.planner; - -import java.util.Calendar; -import java.util.Date; -import java.util.HashMap; -import java.util.HashSet; -import java.util.Map; -import java.util.Set; - -import org.eclipse.mylyn.internal.tasks.ui.TasksUiPlugin; -import org.eclipse.mylyn.tasks.core.AbstractTask; - -/** - * Collects tasks that are not complete but have been worked on during the specified date range. - * - * @author Wesley Coelho (Adapted from CompletedTaskCollector by Key Sueda) - * @author Mik Kersten - */ -public class InProgressTaskCollector implements ITaskCollector { - - private final Map<String, AbstractTask> inProgressTasks = new HashMap<String, AbstractTask>(); - - private final Date periodStartDate; - - private final Date periodEndDate; - - protected static boolean hasActivity(AbstractTask task, Date startDate, Date endDate) { - Calendar startCal = Calendar.getInstance(); - startCal.setTime(startDate); - - Calendar endCal = Calendar.getInstance(); - endCal.setTime(endDate); - - return TasksUiPlugin.getTaskActivityManager().getElapsedTime(task, startCal, endCal) > 0; -// IInteractionContext interactionContext = ContextCorePlugin.getContextManager().loadContext( -// task.getHandleIdentifier()); -// if (interactionContext != null) { -// List<InteractionEvent> events = interactionContext.getInteractionHistory(); -// if (events.size() > 0) { -// InteractionEvent latestEvent = events.get(events.size() - 1); -// if (latestEvent.getDate().compareTo(startDate) > 0) { -// return true; -// } -// } -// } -// return false; - } - - public InProgressTaskCollector(Date periodStartDate, Date periodEndDate) { - this.periodStartDate = periodStartDate; - this.periodEndDate = periodEndDate; - } - - public String getLabel() { - return "Tasks in Progress"; - } - - public void consumeTask(AbstractTask task) { - if (!task.isCompleted() && hasActivity(task, periodStartDate, periodEndDate) - && !inProgressTasks.containsKey(task.getHandleIdentifier())) { - inProgressTasks.put(task.getHandleIdentifier(), task); - } - } - - public Set<AbstractTask> getTasks() { - Set<AbstractTask> tasks = new HashSet<AbstractTask>(); - tasks.addAll(inProgressTasks.values()); - return tasks; - } -} diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/planner/OpenTaskEditorAction.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/planner/OpenTaskEditorAction.java deleted file mode 100644 index e1bf1ad39..000000000 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/planner/OpenTaskEditorAction.java +++ /dev/null @@ -1,50 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2004, 2007 Mylyn project committers 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 - *******************************************************************************/ - -package org.eclipse.mylyn.internal.tasks.ui.planner; - -import org.eclipse.jface.action.Action; -import org.eclipse.jface.viewers.ISelection; -import org.eclipse.jface.viewers.IStructuredSelection; -import org.eclipse.jface.viewers.TreeViewer; -import org.eclipse.mylyn.tasks.core.AbstractTask; -import org.eclipse.mylyn.tasks.ui.TasksUiUtil; - -/** - * @author Mik Kersten - * @author Ken Sueda - * @author Rob Elves - */ -public class OpenTaskEditorAction extends Action { - - public static final String ID = "org.eclipse.mylyn.taskplannereditor.actions.open"; - - private final TreeViewer viewer; - - /** - * @param view - */ - public OpenTaskEditorAction(TreeViewer view) { - this.viewer = view; - setText("Open"); - setToolTipText("Open Element"); - setId(ID); - } - - @Override - public void run() { - ISelection selection = viewer.getSelection(); - Object object = ((IStructuredSelection) selection).getFirstElement(); - if (object instanceof AbstractTask) { - TasksUiUtil.openEditor((AbstractTask) object, false); - } -// if (obj instanceof Task) { -// ((Task) obj).openTaskInEditor(false); -// } - } -} diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/planner/PlannedTasksContentProvider.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/planner/PlannedTasksContentProvider.java deleted file mode 100644 index 807ae8a48..000000000 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/planner/PlannedTasksContentProvider.java +++ /dev/null @@ -1,68 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2004, 2007 Mylyn project committers 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 - *******************************************************************************/ - -package org.eclipse.mylyn.internal.tasks.ui.planner; - -import java.util.HashSet; -import java.util.Set; - -import org.eclipse.jface.viewers.ITreeContentProvider; -import org.eclipse.jface.viewers.Viewer; -import org.eclipse.mylyn.tasks.core.AbstractTask; -import org.eclipse.mylyn.tasks.core.AbstractTaskContainer; - -/** - * @author Rob Elves - * @author Ken Sueda - */ -public class PlannedTasksContentProvider implements ITreeContentProvider, ITaskPlannerContentProvider { - - TaskActivityEditorInput editorInput; - - public PlannedTasksContentProvider(TaskActivityEditorInput editorInput) { - this.editorInput = editorInput; - } - - public Object[] getElements(Object inputElement) { - return editorInput.getCategories().toArray(); - } - - public void dispose() { - } - - public void inputChanged(Viewer viewer, Object oldInput, Object newInput) { - } - - public void addTask(AbstractTask task) { - editorInput.addPlannedTask(task); - } - - public void removeTask(AbstractTask task) { - editorInput.removePlannedTask(task); - } - - public Object[] getChildren(Object parentElement) { - Set<AbstractTask> plannedChildren = new HashSet<AbstractTask>(); - if (parentElement instanceof AbstractTaskContainer) { - AbstractTaskContainer parent = (AbstractTaskContainer) parentElement; - plannedChildren.addAll(editorInput.getPlannedTasks()); - plannedChildren.retainAll(parent.getChildren()); - } - return plannedChildren.toArray(); - } - - public Object getParent(Object element) { - // ignore - return null; - } - - public boolean hasChildren(Object element) { - return (getChildren(element).length > 0); - } - -} diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/planner/ReminderCellEditor.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/planner/ReminderCellEditor.java deleted file mode 100644 index b08d1691f..000000000 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/planner/ReminderCellEditor.java +++ /dev/null @@ -1,93 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2004, 2007 Mylyn project committers 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 - *******************************************************************************/ -package org.eclipse.mylyn.internal.tasks.ui.planner; - -import java.text.ParseException; -import java.text.SimpleDateFormat; -import java.util.Calendar; -import java.util.Date; -import java.util.Locale; - -import org.eclipse.jface.viewers.DialogCellEditor; -import org.eclipse.jface.window.Window; -import org.eclipse.mylyn.tasks.ui.DatePicker; -import org.eclipse.swt.SWT; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Control; - -/** - * @author Ken Sueda - * @author Mik Kersten - * @author Rob Elves - */ -public class ReminderCellEditor extends DialogCellEditor { - - private Date reminderDate; - - private DateSelectionDialog dialog; - - private final String formatString = "dd-MMM-yyyy"; - - private final SimpleDateFormat format = new SimpleDateFormat(formatString, Locale.ENGLISH); - - public ReminderCellEditor(Composite parent) { - super(parent, SWT.NONE); - } - - @Override - protected Object openDialogBox(Control cellEditorWindow) { - Calendar initialCalendar = null; - String value = (String) super.getValue(); - - if (value != null) { - try { - Date tempDate = format.parse(value); - if (tempDate != null) { - initialCalendar = Calendar.getInstance(); - initialCalendar.setTime(tempDate); - } - } catch (ParseException e) { - // ignore - } - } - Calendar newCalendar = Calendar.getInstance(); - if (initialCalendar != null) { - newCalendar.setTime(initialCalendar.getTime()); - } - - dialog = new DateSelectionDialog(cellEditorWindow.getShell(), newCalendar, DatePicker.TITLE_DIALOG, true); - int dialogResponse = dialog.open(); - - if (dialogResponse == Window.CANCEL) { - if (initialCalendar != null) { - reminderDate = initialCalendar.getTime(); - } else { - reminderDate = null; - } - } else { - reminderDate = dialog.getDate(); - } - - String result = null; - if (reminderDate != null) { - result = format.format(reminderDate); - } - return result; - } - - public Date getReminderDate() { - return reminderDate; - } - - @Override - protected void doSetFocus() { - reminderDate = null; - super.doSetFocus(); - } - -} diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/planner/RemoveTaskAction.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/planner/RemoveTaskAction.java deleted file mode 100644 index f19b2ebcf..000000000 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/planner/RemoveTaskAction.java +++ /dev/null @@ -1,42 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2004, 2007 Mylyn project committers 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 - *******************************************************************************/ - -package org.eclipse.mylyn.internal.tasks.ui.planner; - -import org.eclipse.jface.action.Action; -import org.eclipse.jface.viewers.IStructuredSelection; -import org.eclipse.jface.viewers.TreeViewer; -import org.eclipse.mylyn.internal.tasks.ui.TasksUiImages; -import org.eclipse.mylyn.tasks.core.AbstractTask; - -/** - * @author Rob Elves - */ -public class RemoveTaskAction extends Action { - public static final String ID = "org.eclipse.mylyn.taskplannereditor.actions.remove"; - - private final TreeViewer viewer; - - public RemoveTaskAction(TreeViewer view) { - this.viewer = view; - setText("Remove Selected"); - setId(ID); - setImageDescriptor(TasksUiImages.REMOVE); - } - - @Override - public void run() { - for (Object object : ((IStructuredSelection) viewer.getSelection()).toList()) { - if (object instanceof AbstractTask) { - AbstractTask task = (AbstractTask) object; - ((ITaskPlannerContentProvider) (viewer.getContentProvider())).removeTask(task); - } - } - viewer.refresh(); - } -} diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/planner/TaskActivityContentProvider.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/planner/TaskActivityContentProvider.java deleted file mode 100644 index df116eb0f..000000000 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/planner/TaskActivityContentProvider.java +++ /dev/null @@ -1,81 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2004, 2007 Mylyn project committers 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 - *******************************************************************************/ - -package org.eclipse.mylyn.internal.tasks.ui.planner; - -import java.util.HashSet; -import java.util.Set; - -import org.eclipse.jface.viewers.ITreeContentProvider; -import org.eclipse.jface.viewers.Viewer; -import org.eclipse.mylyn.tasks.core.AbstractTask; -import org.eclipse.mylyn.tasks.core.AbstractTaskContainer; - -/** - * @author Rob Elves - */ -public class TaskActivityContentProvider implements ITreeContentProvider, ITaskPlannerContentProvider { - - private final TaskActivityEditorInput editorInput; - - public TaskActivityContentProvider(TaskActivityEditorInput editorInput) { - this.editorInput = editorInput; - } - - public Object[] getElements(Object inputElement) { - return editorInput.getCategories().toArray(); -// List<AbstractTask> allTasks = new ArrayList<AbstractTask>(); -// allTasks.addAll(editorInput.getCompletedTasks()); -// allTasks.addAll(editorInput.getInProgressTasks()); -// return allTasks.toArray(); - } - - public void removeTask(AbstractTask task) { - editorInput.removeCompletedTask(task); - editorInput.removeInProgressTask(task); - } - - public void addTask(AbstractTask task) { - // ignore - } - - public Object[] getChildren(Object parentElement) { - Set<AbstractTask> result = new HashSet<AbstractTask>(); - if (parentElement instanceof AbstractTaskContainer) { - AbstractTaskContainer parent = (AbstractTaskContainer) parentElement; - Set<AbstractTask> completedChildren = new HashSet<AbstractTask>(); - completedChildren.addAll(editorInput.getCompletedTasks()); - completedChildren.retainAll(parent.getChildren()); - result.addAll(completedChildren); - - Set<AbstractTask> inProgressChildren = new HashSet<AbstractTask>(); - inProgressChildren.addAll(editorInput.getInProgressTasks()); - inProgressChildren.retainAll(parent.getChildren()); - result.addAll(inProgressChildren); - } - return result.toArray(); - } - - public Object getParent(Object element) { - // ignore - return null; - } - - public boolean hasChildren(Object element) { - return (getChildren(element).length > 0); - } - - public void inputChanged(Viewer viewer, Object oldInput, Object newInput) { - // ignore - } - - public void dispose() { - // ignore - } - -} diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/planner/TaskActivityEditorInput.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/planner/TaskActivityEditorInput.java deleted file mode 100644 index a2f7c327a..000000000 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/planner/TaskActivityEditorInput.java +++ /dev/null @@ -1,196 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2004, 2007 Mylyn project committers 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 - *******************************************************************************/ - -package org.eclipse.mylyn.internal.tasks.ui.planner; - -import java.lang.reflect.InvocationTargetException; -import java.util.Date; -import java.util.HashSet; -import java.util.Set; - -import org.eclipse.core.runtime.IStatus; -import org.eclipse.core.runtime.Status; -import org.eclipse.jface.resource.ImageDescriptor; -import org.eclipse.mylyn.internal.tasks.core.TaskList; -import org.eclipse.mylyn.internal.tasks.ui.TasksUiPlugin; -import org.eclipse.mylyn.monitor.core.StatusHandler; -import org.eclipse.mylyn.tasks.core.AbstractTask; -import org.eclipse.mylyn.tasks.core.AbstractTaskContainer; -import org.eclipse.ui.IEditorInput; -import org.eclipse.ui.IPersistableElement; -import org.eclipse.ui.PlatformUI; -import org.eclipse.ui.progress.IProgressService; - -/** - * @author Ken Sueda - * @author Mik Kersten - */ -public class TaskActivityEditorInput implements IEditorInput { - - private static final String TASK_ACTIVITY_REPORT = "Task Activity Report"; - - private Set<AbstractTask> completedTasks = new HashSet<AbstractTask>(); - - private Set<AbstractTask> inProgressTasks = new HashSet<AbstractTask>(); - - private final Set<AbstractTask> plannedTasks = new HashSet<AbstractTask>(); - - private TaskReportGenerator taskReportGenerator = null; - - private Date reportStartDate = null; - - private Date reportEndDate = null; - - private final Set<AbstractTaskContainer> categories; - - public TaskActivityEditorInput(Date reportStartDate, Date reportEndDate, - Set<AbstractTaskContainer> chosenCategories, TaskList tlist) { - this.reportStartDate = reportStartDate; - this.reportEndDate = reportEndDate; - this.categories = chosenCategories; - taskReportGenerator = new TaskReportGenerator(tlist, chosenCategories); - - ITaskCollector completedTaskCollector = new CompletedTaskCollector(reportStartDate, reportEndDate); - taskReportGenerator.addCollector(completedTaskCollector); - - ITaskCollector inProgressTaskCollector = new InProgressTaskCollector(reportStartDate, reportEndDate); - taskReportGenerator.addCollector(inProgressTaskCollector); - - try { - // TODO consider using IProgressService.busyCursorWhile(): bug 210710 - IProgressService service = PlatformUI.getWorkbench().getProgressService(); - service.run(false, true, taskReportGenerator); - while (!taskReportGenerator.isFinished()) { - Thread.sleep(500); - } - } catch (InvocationTargetException e) { - // operation was canceled - } catch (InterruptedException e) { - StatusHandler.log(new Status(IStatus.ERROR, TasksUiPlugin.ID_PLUGIN, "Could not generate report", e)); - } - - completedTasks = completedTaskCollector.getTasks(); - inProgressTasks = inProgressTaskCollector.getTasks(); - - plannedTasks.addAll(TasksUiPlugin.getTaskActivityManager().getActivityThisWeek().getChildren()); - plannedTasks.addAll(TasksUiPlugin.getTaskActivityManager().getActivityNextWeek().getChildren()); - plannedTasks.addAll(TasksUiPlugin.getTaskActivityManager().getActivityFuture().getChildren()); - - //plannedTasks = new HashSet<ITask>(); - } - - public boolean exists() { - return true; - } - - public ImageDescriptor getImageDescriptor() { - return null; - } - - public String getName() { - return TASK_ACTIVITY_REPORT; - } - - public IPersistableElement getPersistable() { - return null; - } - - public String getToolTipText() { - return "Task Planner"; - } - - @SuppressWarnings("unchecked") - public Object getAdapter(Class adapter) { - return null; - } - - public Set<AbstractTask> getCompletedTasks() { - return completedTasks; - } - - public Set<AbstractTask> getInProgressTasks() { - return inProgressTasks; - } - - public Set<AbstractTask> getPlannedTasks() { - return plannedTasks; - } - - public long getTotalTimeSpentOnCompletedTasks() { - long duration = 0; - for (AbstractTask t : completedTasks) { - duration += TasksUiPlugin.getTaskActivityManager().getElapsedTime(t); - } - return duration; - } - - public long getTotalTimeSpentOnInProgressTasks() { - long duration = 0; - for (AbstractTask t : inProgressTasks) { - duration += TasksUiPlugin.getTaskActivityManager().getElapsedTime(t); - } - return duration; - } - - public TaskReportGenerator getReportGenerator() { - return taskReportGenerator; - } - - public boolean createdDuringReportPeriod(AbstractTask task) { - Date creationDate = task.getCreationDate(); - if (creationDate != null) { - return creationDate.compareTo(reportStartDate) > 0; - } else { - return false; - } - } - - public int getTotalTimeEstimated() { - int duration = 0; - for (AbstractTask task : inProgressTasks) { - duration += task.getEstimatedTimeHours(); - } - return duration; - } - - public void removeCompletedTask(AbstractTask task) { - completedTasks.remove(task); - } - - public void removeInProgressTask(AbstractTask task) { - inProgressTasks.remove(task); - } - - public void addPlannedTask(AbstractTask task) { - plannedTasks.add(task); - } - - public void removePlannedTask(AbstractTask task) { - plannedTasks.remove(task); - } - - public int getPlannedEstimate() { - int estimated = 0; - for (AbstractTask task : plannedTasks) { - estimated += task.getEstimatedTimeHours(); - } - return estimated; - } - - public Date getReportStartDate() { - return reportStartDate; - } - - public Date getReportEndDate() { - return reportEndDate; - } - - public Set<AbstractTaskContainer> getCategories() { - return categories; - } -} diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/planner/TaskActivityEditorPart.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/planner/TaskActivityEditorPart.java deleted file mode 100644 index 9da0c5918..000000000 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/planner/TaskActivityEditorPart.java +++ /dev/null @@ -1,694 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2004, 2007 Mylyn project committers 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 - *******************************************************************************/ - -package org.eclipse.mylyn.internal.tasks.ui.planner; - -import java.io.BufferedWriter; -import java.io.File; -import java.io.FileWriter; -import java.io.IOException; -import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; -import java.util.Locale; - -import org.eclipse.core.runtime.IProgressMonitor; -import org.eclipse.core.runtime.IStatus; -import org.eclipse.core.runtime.Status; -import org.eclipse.jface.action.IMenuListener; -import org.eclipse.jface.action.IMenuManager; -import org.eclipse.jface.action.MenuManager; -import org.eclipse.jface.action.Separator; -import org.eclipse.jface.viewers.DoubleClickEvent; -import org.eclipse.jface.viewers.IDoubleClickListener; -import org.eclipse.jface.viewers.ISelectionChangedListener; -import org.eclipse.jface.viewers.SelectionChangedEvent; -import org.eclipse.jface.viewers.TreeViewer; -import org.eclipse.mylyn.internal.tasks.ui.TasksUiPlugin; -import org.eclipse.mylyn.monitor.core.DateUtil; -import org.eclipse.mylyn.monitor.core.StatusHandler; -import org.eclipse.mylyn.tasks.core.AbstractTask; -import org.eclipse.swt.SWT; -import org.eclipse.swt.custom.SashForm; -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.Composite; -import org.eclipse.swt.widgets.FileDialog; -import org.eclipse.swt.widgets.Label; -import org.eclipse.swt.widgets.Menu; -import org.eclipse.swt.widgets.Tree; -import org.eclipse.swt.widgets.TreeColumn; -import org.eclipse.ui.IEditorInput; -import org.eclipse.ui.IEditorSite; -import org.eclipse.ui.IWorkbenchActionConstants; -import org.eclipse.ui.PartInitException; -import org.eclipse.ui.forms.widgets.ExpandableComposite; -import org.eclipse.ui.forms.widgets.FormToolkit; -import org.eclipse.ui.forms.widgets.ScrolledForm; -import org.eclipse.ui.forms.widgets.Section; -import org.eclipse.ui.forms.widgets.TableWrapLayout; -import org.eclipse.ui.part.EditorPart; - -/** - * - * Note: Some methods have been generalized to remove duplicate code but the design still isn't right (long parameter - * lists, inflexible table creation). Needs refactoring. (Planned tasks section is currently disabled but should also - * use the new common methods) - * - * @author Mik Kersten - * @author Ken Sueda (original prototype) - * @author Wesley Coelho (added tasks in progress section, refactored-out similar code) - * @author Mik Kersten (rewrite) - */ -public class TaskActivityEditorPart extends EditorPart { - - private static final String LABEL_PLANNED_ACTIVITY = "Planned Activity"; - - private static final String LABEL_DIALOG = "Summary"; - - private static final String LABEL_PAST_ACTIVITY = "Past Activity"; - - private TaskActivityEditorInput editorInput = null; - - private final String[] activityColumnNames = new String[] { " ", " !", "Description", "Elapsed", "Estimated", - "Created", "Completed" }; - - private final int[] activityColumnWidths = new int[] { 100, 30, 200, 70, 70, 90, 90 }; - - private final int[] activitySortConstants = new int[] { TaskActivitySorter.ICON, TaskActivitySorter.PRIORITY, - TaskActivitySorter.DESCRIPTION, TaskActivitySorter.DURATION, TaskActivitySorter.ESTIMATED, - TaskActivitySorter.CREATION_DATE, TaskActivitySorter.COMPLETED_DATE }; - -// private String[] planColumnNames = new String[] { " ", " !", "Description", "Elapsed", "Estimated", "Reminder" }; -// -// private int[] planSortConstants = new int[] { TaskPlanSorter.ICON, TaskPlanSorter.PRIORITY, -// TaskPlanSorter.DESCRIPTION, TaskPlanSorter.DURATION, TaskPlanSorter.ESTIMATED, TaskPlanSorter.REMINDER }; -// -// private int[] planColumnWidths = new int[] { 100, 30, 200, 90, 90, 100 }; - - private static final String LABEL_ESTIMATED = "Total estimated time: "; - - private static final String NO_TIME_ELAPSED = " "; - - private static final String BLANK_CELL = " "; - - private Label totalEstimatedHoursLabel; - - private Label numberCompleted; - - private Label totalTimeOnCompleted; - - private Label numberInProgress; - - private Label totalTimeOnIncomplete; - - private Label totalEstimatedTime; - - private Label totalTime; - - private TaskActivityContentProvider activityContentProvider; - - private PlannedTasksContentProvider planContentProvider; - - @Override - public void doSave(IProgressMonitor monitor) { - } - - @Override - public void doSaveAs() { - } - - @Override - public void init(IEditorSite site, IEditorInput input) throws PartInitException { - setSite(site); - setInput(input); - editorInput = (TaskActivityEditorInput) input; - setPartName(editorInput.getName()); - setTitleToolTip(editorInput.getToolTipText()); - } - - @Override - public boolean isDirty() { - return false; - } - - @Override - public boolean isSaveAsAllowed() { - return false; - } - - @Override - public void createPartControl(Composite parent) { - FormToolkit toolkit = new FormToolkit(parent.getDisplay()); - ScrolledForm sform = toolkit.createScrolledForm(parent); - Composite editorComposite = sform.getBody(); - - editorComposite.setLayout(new GridLayout()); - GridData gridData = new GridData(); - gridData.horizontalAlignment = GridData.FILL_BOTH; - gridData.grabExcessHorizontalSpace = true; - gridData.grabExcessVerticalSpace = true; - editorComposite.setLayoutData(gridData); - - createSummarySection(editorComposite, toolkit, editorInput.getReportStartDate(), editorInput.getReportEndDate()); - String label = LABEL_PAST_ACTIVITY; - - List<AbstractTask> allTasks = new ArrayList<AbstractTask>(); - allTasks.addAll(editorInput.getCompletedTasks()); - allTasks.addAll(editorInput.getInProgressTasks()); - - SashForm sashForm = new SashForm(editorComposite, SWT.VERTICAL); - - sashForm.setLayout(new GridLayout()); - sashForm.setLayoutData(new GridData(GridData.FILL_BOTH)); - - activityContentProvider = new TaskActivityContentProvider(editorInput); - - final TreeViewer activityViewer = createTableSection(sashForm, toolkit, label, activityColumnNames, - activityColumnWidths, activitySortConstants); - activityViewer.setContentProvider(activityContentProvider); - activityViewer.setLabelProvider(new TaskPlannerLabelProvider(activityViewer, editorInput.getReportStartDate(), - editorInput.getReportEndDate())); - setSorters(activityColumnNames, activitySortConstants, activityViewer.getTree(), activityViewer, false); - activityViewer.setInput(editorInput); - activityViewer.addSelectionChangedListener(new ISelectionChangedListener() { - public void selectionChanged(SelectionChangedEvent event) { - updateLabels(); - } - }); - - MenuManager activityContextMenuMgr = new MenuManager("#ActivityPlannerPopupMenu"); - activityContextMenuMgr.setRemoveAllWhenShown(true); - activityContextMenuMgr.addMenuListener(new IMenuListener() { - public void menuAboutToShow(IMenuManager manager) { - TaskActivityEditorPart.this.fillContextMenu(activityViewer, manager); - - } - }); - Menu menu = activityContextMenuMgr.createContextMenu(activityViewer.getControl()); - activityViewer.getControl().setMenu(menu); - getSite().registerContextMenu(activityContextMenuMgr, activityViewer); - - planContentProvider = new PlannedTasksContentProvider(editorInput); - final TreeViewer planViewer = createTableSection(sashForm, toolkit, LABEL_PLANNED_ACTIVITY, - activityColumnNames, activityColumnWidths, activitySortConstants); - planViewer.setContentProvider(planContentProvider); - planViewer.setLabelProvider(new TaskPlannerLabelProvider(planViewer, editorInput.getReportStartDate(), - editorInput.getReportEndDate())); - // planViewer.setLabelProvider(new TaskPlanLabelProvider()); - // createPlanCellEditorListener(planViewer.getTable(), planViewer); - // planViewer.setCellModifier(new PlannedTasksCellModifier(planViewer)); - // initDrop(planViewer, planContentProvider); - setSorters(activityColumnNames, activitySortConstants, planViewer.getTree(), planViewer, true); - planViewer.setInput(editorInput); - - // planViewer.addSelectionChangedListener(new - // ISelectionChangedListener() { - // public void selectionChanged(SelectionChangedEvent event) { - // updateLabels(); - // } - // }); - - // MenuManager planContextMenuMgr = new - // MenuManager("#PlanPlannerPopupMenu"); - // planContextMenuMgr.setRemoveAllWhenShown(true); - // planContextMenuMgr.addMenuListener(new IMenuListener() { - // public void menuAboutToShow(IMenuManager manager) { - // TaskActivityEditorPart.this.fillContextMenu(planViewer, manager); - // } - // }); - // Menu planMenu = - // planContextMenuMgr.createContextMenu(planViewer.getControl()); - // planViewer.getControl().setMenu(planMenu); - // getSite().registerContextMenu(planContextMenuMgr, planViewer); - - totalEstimatedHoursLabel = toolkit.createLabel(editorComposite, LABEL_ESTIMATED + "0 hours ", SWT.NULL); - createButtons(editorComposite, toolkit, planViewer, planContentProvider); - updateLabels(); - } - - private void fillContextMenu(TreeViewer viewer, IMenuManager manager) { - if (!viewer.getSelection().isEmpty()) { - manager.add(new OpenTaskEditorAction(viewer)); - manager.add(new RemoveTaskAction(viewer)); - manager.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS)); - } else { - manager.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS)); - } - } - - @Override - public void setFocus() { - } - - private void createSummarySection(Composite parent, FormToolkit toolkit, Date startDate, Date endDate) { - Section summarySection = toolkit.createSection(parent, ExpandableComposite.TITLE_BAR); - summarySection.setText(LABEL_DIALOG); - summarySection.setLayout(new GridLayout()); - summarySection.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); - Composite summaryContainer = toolkit.createComposite(summarySection); - summarySection.setClient(summaryContainer); - TableWrapLayout layout = new TableWrapLayout(); - layout.numColumns = 2; - summaryContainer.setLayout(layout); - - String formatString = "yyyy-MM-dd, h:mm a"; - SimpleDateFormat formater = new SimpleDateFormat(formatString, Locale.ENGLISH); - - if (startDate != null) { - String dateLabel = "Date start: " + formater.format(startDate); - toolkit.createLabel(summaryContainer, dateLabel, SWT.NULL); - } - - if (endDate != null) { - String dateLabel = "Date end: " + formater.format(endDate); - toolkit.createLabel(summaryContainer, dateLabel, SWT.NULL); - } - - String numComplete = "Number completed: " + editorInput.getCompletedTasks().size(); - numberCompleted = toolkit.createLabel(summaryContainer, numComplete, SWT.NULL); -// numberCompleted.setForeground(toolkit.getColors().getColor(FormColors.TITLE)); - - String totalCompletedTaskTime = "Total time on completed: " - + DateUtil.getFormattedDuration(editorInput.getTotalTimeSpentOnCompletedTasks(), false); - totalTimeOnCompleted = toolkit.createLabel(summaryContainer, totalCompletedTaskTime, SWT.NULL); -// totalTimeOnCompleted.setForeground(toolkit.getColors().getColor(FormColors.TITLE)); - - String numInProgress = "Number in progress: " + editorInput.getInProgressTasks().size(); - numberInProgress = toolkit.createLabel(summaryContainer, numInProgress, SWT.NULL); -// numberInProgress.setForeground(toolkit.getColors().getColor(FormColors.TITLE)); - - String totalInProgressTaskTime = "Total time on incomplete: " - + DateUtil.getFormattedDuration(editorInput.getTotalTimeSpentOnInProgressTasks(), false); - totalTimeOnIncomplete = toolkit.createLabel(summaryContainer, totalInProgressTaskTime, SWT.NULL); -// totalTimeOnIncomplete.setForeground(toolkit.getColors().getColor(FormColors.TITLE)); - - String spacer = " "; - String totalEstimated = "Total estimated time: " + editorInput.getTotalTimeEstimated() + " hours" + spacer; - totalEstimatedTime = toolkit.createLabel(summaryContainer, totalEstimated, SWT.NULL); -// totalEstimatedTime.setForeground(toolkit.getColors().getColor(FormColors.TITLE)); - - String grandTotalTime = "Total time: " + getTotalTime(); - totalTime = toolkit.createLabel(summaryContainer, grandTotalTime, SWT.NULL); -// totalTime.setForeground(toolkit.getColors().getColor(FormColors.TITLE)); - - } - - private void updateSummarySection() { - String numComplete = "Number completed: " + editorInput.getCompletedTasks().size(); - numberCompleted.setText(numComplete); - - String totalCompletedTaskTime = "Total time on completed: " - + DateUtil.getFormattedDuration(editorInput.getTotalTimeSpentOnCompletedTasks(), false); - totalTimeOnCompleted.setText(totalCompletedTaskTime); - - String numInProgress = "Number in progress: " + editorInput.getInProgressTasks().size(); - numberInProgress.setText(numInProgress); - - String totalInProgressTaskTime = "Total time on incomplete: " - + DateUtil.getFormattedDuration(editorInput.getTotalTimeSpentOnInProgressTasks(), false); - totalTimeOnIncomplete.setText(totalInProgressTaskTime); - - String spacer = " "; - String totalEstimated = "Total estimated time: " + editorInput.getTotalTimeEstimated() + " hours" + spacer; - totalEstimatedTime.setText(totalEstimated); - - String grandTotalTime = "Total time: " + getTotalTime(); - totalTime.setText(grandTotalTime); - - } - - // private void createPlanCellEditorListener(final Table planTable, final - // TableViewer planTableViewer) { - // CellEditor[] editors = new CellEditor[planColumnNames.length + 1]; - // final ComboBoxCellEditor estimateEditor = new - // ComboBoxCellEditor(planTable, TaskListManager.ESTIMATE_TIMES, - // SWT.READ_ONLY); - // final ReminderCellEditor reminderEditor = new - // ReminderCellEditor(planTable); - // editors[0] = null; // not used - // editors[1] = null;// not used - // editors[2] = null;// not used - // editors[3] = null;// not used - // editors[4] = estimateEditor; - // editors[5] = reminderEditor; - // reminderEditor.addListener(new ICellEditorListener() { - // public void applyEditorValue() { - // Object selection = ((IStructuredSelection) - // planTableViewer.getSelection()).getFirstElement(); - // if (selection instanceof ITask) { - // ((ITask) selection).setReminderDate(reminderEditor.getReminderDate()); - // planTableViewer.refresh(); - // } - // } - // - // public void cancelEditor() { - // } - // - // public void editorValueChanged(boolean oldValidState, boolean - // newValidState) { - // } - // - // }); - // estimateEditor.addListener(new ICellEditorListener() { - // public void applyEditorValue() { - // Object selection = ((IStructuredSelection) - // planTableViewer.getSelection()).getFirstElement(); - // if (selection instanceof ITask) { - // ITask task = (ITask) selection; - // int estimate = (Integer) estimateEditor.getValue(); - // if (estimate == -1) { - // estimate = 0; - // } - // task.setEstimatedTimeHours(estimate); - // updateLabels(); - // planTableViewer.refresh(); - // } - // } - // - // public void cancelEditor() { - // } - // - // public void editorValueChanged(boolean oldValidState, boolean - // newValidState) { - // } - // - // }); - // planTableViewer.setCellEditors(editors); - // } - - private String getTotalTime() { - return DateUtil.getFormattedDuration(editorInput.getTotalTimeSpentOnCompletedTasks() - + editorInput.getTotalTimeSpentOnInProgressTasks(), false); - } - - private TreeViewer createTableSection(Composite parent, FormToolkit toolkit, String title, String[] columnNames, - int[] columnWidths, int[] sortConstants) { - Section tableSection = toolkit.createSection(parent, ExpandableComposite.TITLE_BAR); // | - // ExpandableComposite.TWISTIE - tableSection.setText(title); - // tableSection.setExpanded(true); - tableSection.marginHeight = 8; - tableSection.setLayout(new GridLayout()); - tableSection.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); - - Composite detailContainer = toolkit.createComposite(tableSection); - tableSection.setClient(detailContainer); - detailContainer.setLayout(new GridLayout()); - detailContainer.setLayoutData(new GridData(GridData.FILL_BOTH)); - - return createTable(detailContainer, toolkit, columnNames, columnWidths, sortConstants); - } - - private TreeViewer createTable(Composite parent, FormToolkit toolkit, String[] columnNames, int[] columnWidths, - int[] sortConstants) { - int style = SWT.MULTI | SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL | SWT.FULL_SELECTION | SWT.HIDE_SELECTION; - Tree tree = toolkit.createTree(parent, style); - - tree.setLayout(new GridLayout()); - GridData tableGridData = new GridData(GridData.FILL_BOTH); - tableGridData.heightHint = 100; - tree.setLayoutData(tableGridData); - tree.setLinesVisible(true); - tree.setHeaderVisible(true); - tree.setEnabled(true); - - for (int i = 0; i < columnNames.length; i++) { - TreeColumn column = new TreeColumn(tree, SWT.LEFT, i); - column.setText(columnNames[i]); - column.setWidth(columnWidths[i]); - } - - TreeViewer treeViewer = new TreeViewer(tree); - treeViewer.setUseHashlookup(true); - treeViewer.setColumnProperties(columnNames); - - final OpenTaskEditorAction openAction = new OpenTaskEditorAction(treeViewer); - treeViewer.addDoubleClickListener(new IDoubleClickListener() { - public void doubleClick(DoubleClickEvent event) { - openAction.run(); - } - }); - - return treeViewer; - } - - private void setSorters(String[] columnNames, int[] sortConstants, Tree tree, TreeViewer treeViewer, boolean plan) { - for (int i = 0; i < columnNames.length; i++) { - TreeColumn column = tree.getColumn(i); - addColumnSelectionListener(treeViewer, column, sortConstants[i], plan); - } - } - - private void addColumnSelectionListener(final TreeViewer tableViewer, TreeColumn column, final int sorterConstant, - final boolean plan) { - column.addSelectionListener(new SelectionAdapter() { - - @Override - public void widgetSelected(SelectionEvent e) { -// if (plan) { // TODO: bad modularity -// tableViewer.setSorter(new TaskPlanSorter(sorterConstant)); -// } else { -// tableViewer.setSorter(new TaskActivitySorter(sorterConstant)); -// } - } - }); - } - - private void createButtons(Composite parent, FormToolkit toolkit, final TreeViewer viewer, - final PlannedTasksContentProvider contentProvider) { - Composite container = new Composite(parent, SWT.NULL); - container.setBackground(parent.getBackground()); - GridLayout layout = new GridLayout(); - container.setLayout(layout); - layout.numColumns = 3; - - // Button addIncomplete = toolkit.createButton(container, "Add - // Incomplete", SWT.PUSH | SWT.CENTER); - // addIncomplete.addSelectionListener(new SelectionAdapter() { - // @Override - // public void widgetSelected(SelectionEvent e) { - // Set<ITask> incompleteTasks = editorInput.getInProgressTasks(); - // for (ITask task : incompleteTasks) { - // contentProvider.addTask(task); - // viewer.refresh(); - // updateLabels(); - // } - // } - // }); - // - // Button addToCategory = toolkit.createButton(container, "Add Planned - // to Category...", SWT.PUSH | SWT.CENTER); - // addToCategory.addSelectionListener(new SelectionAdapter() { - // @Override - // public void widgetSelected(SelectionEvent e) { - // addPlannedTasksToCategory(contentProvider); - // } - // }); - - Button exportToHTML = toolkit.createButton(container, "Export to HTML...", SWT.PUSH | SWT.CENTER); - exportToHTML.addSelectionListener(new SelectionAdapter() { - @Override - public void widgetSelected(SelectionEvent e) { - exportToHtml(); - } - }); - } - - private void updateLabels() { - totalEstimatedHoursLabel.setText(LABEL_ESTIMATED + editorInput.getPlannedEstimate() + " hours"); - updateSummarySection(); - } - - private void exportToHtml() { - File outputFile; - try { - FileDialog dialog = new FileDialog(getSite().getWorkbenchWindow().getShell()); - dialog.setText("Specify a file name"); - dialog.setFilterExtensions(new String[] { "*.html", "*.*" }); - String filename = dialog.open(); - - if (filename == null || filename.equals("")) { - return; - } - - if (!filename.endsWith(".html")) { - filename += ".html"; - } - outputFile = new File(filename); - // outputStream = new FileOutputStream(outputFile, true); - BufferedWriter writer = new BufferedWriter(new FileWriter(outputFile)); - writer.write("<html><head></head><body>"); - - exportSummarySection(writer); - - exportActivitySection(writer); - - exportPlanSection(writer); - - writer.write("</body></html>"); - writer.close(); - } catch (IOException e) { - StatusHandler.log(new Status(IStatus.ERROR, TasksUiPlugin.ID_PLUGIN, "Could not write to file", e)); - } - } - - private void exportPlanSection(BufferedWriter writer) throws IOException { - - writer.write("<H2>" + LABEL_PLANNED_ACTIVITY + "</H2>"); - - writer.write("<table border=\"1\" width=\"100%\" id=\"plannedActivityTable\">"); - writer.write("<tr>"); - writer.write("<td width=\"59\"><b>Type</b></td><td width=\"55\"><b>Priority</b></td><td width=\"495\"><b>Description</b></td>"); - writer.write("<td><b>Elapsed</b></td><td><b>Estimated</b></td><td><b>Reminder</b></td>"); - writer.write("</tr>"); - - for (Object element : planContentProvider.getElements(null)) { - if (element instanceof AbstractTask) { - AbstractTask currentTask = (AbstractTask) element; - - String formatString = "dd-MM-yyyy"; - SimpleDateFormat format = new SimpleDateFormat(formatString, Locale.ENGLISH); - - String elapsedTimeString = DateUtil.getFormattedDuration(TasksUiPlugin.getTaskActivityManager() - .getElapsedTime(currentTask), false); - String estimatedTimeString = currentTask.getEstimatedTimeHours() + " hours"; - if (elapsedTimeString.equals("")) { - elapsedTimeString = BLANK_CELL; - } - - Date reminderDate = currentTask.getScheduledForDate(); - String reminderDateString = BLANK_CELL; - if (reminderDate != null) { - reminderDateString = format.format(reminderDate); - } - - writer.write("<tr>"); - writer.write("<td width=\"59\">ICON</td><td width=\"55\">" + currentTask.getPriority() - + "</td><td width=\"495\">"); - if (currentTask.hasValidUrl()) { - writer.write("<a href='" + currentTask.getUrl() + "'>" + currentTask.getSummary() + "</a>"); - } else { - writer.write(currentTask.getSummary()); - } - writer.write("</td><td>" + elapsedTimeString + "</td><td>" + estimatedTimeString + "</td><td>" - + reminderDateString + "</td>"); - writer.write("</tr>"); - - } - } - writer.write("</table>"); - writer.write("<BR></BR>"); - writer.write("<H3>" + totalEstimatedHoursLabel.getText() + "</H3>"); - - } - - private void exportActivitySection(BufferedWriter writer) throws IOException { - - writer.write("<H2>" + LABEL_PAST_ACTIVITY + "</H2>"); - - writer.write("<table border=\"1\" width=\"100%\" id=\"activityTable\">"); - writer.write("<tr>"); - writer.write("<td width=\"59\"><b>Type</b></td><td width=\"55\"><b>Priority</b></td><td width=\"495\"><b>Description</b></td>"); - writer.write("<td><b>Created</b></td><td><b>Completed</b></td><td><b>Elapsed</b></td><td><b>Estimated</b></td>"); - writer.write("</tr>"); - - for (Object element : activityContentProvider.getElements(null)) { - if (element instanceof AbstractTask) { - AbstractTask currentTask = (AbstractTask) element; - - String formatString = "dd-MM-yyyy"; - SimpleDateFormat format = new SimpleDateFormat(formatString, Locale.ENGLISH); - - String elapsedTimeString = DateUtil.getFormattedDuration(TasksUiPlugin.getTaskActivityManager() - .getElapsedTime(currentTask), false); - String estimatedTimeString = currentTask.getEstimatedTimeHours() + " hours"; - if (elapsedTimeString.equals("")) { - elapsedTimeString = NO_TIME_ELAPSED; - } - - Date creationDate = currentTask.getCreationDate(); - String creationDateString = BLANK_CELL; - if (creationDate != null) { - creationDateString = format.format(creationDate); - } - - String completionDateString = BLANK_CELL; - Date completedDate = currentTask.getCompletionDate(); - if (completedDate != null) { - completionDateString = format.format(completedDate); - } - - writer.write("<tr>"); - writer.write("<td width=\"59\">ICON</td><td width=\"55\">" + currentTask.getPriority() - + "</td><td width=\"495\">"); - - if (currentTask.hasValidUrl()) { - writer.write("<a href='" + currentTask.getUrl() + "'>" + currentTask.getSummary() + "</a>"); - } else { - writer.write(currentTask.getSummary()); - } - - writer.write("</td><td>" + creationDateString + "</td>"); - writer.write("<td>" + completionDateString + "</td><td>" + elapsedTimeString + "</td><td>" - + estimatedTimeString + "</td>"); - writer.write("</tr>"); - } - } - writer.write("</table>"); - } - - private void exportSummarySection(BufferedWriter writer) throws IOException { - Date startDate = editorInput.getReportStartDate(); - Date endDate = editorInput.getReportEndDate(); - writer.write("<H2>" + LABEL_DIALOG + "</H2>"); - - String formatString = "yyyy-MM-dd, h:mm a"; - SimpleDateFormat format = new SimpleDateFormat(formatString, Locale.ENGLISH); - - writer.write("<table border=\"0\" width=\"75%\" id=\"table1\">\n<tr>\n"); - writer.write("<td width=\"138\">Date start:</td> "); - String dateLabel = "Not Available"; - if (startDate != null) { - dateLabel = format.format(startDate); - } - writer.write("<td>" + dateLabel + "</td>"); - - writer.write("<td width=\"138\">Date end:</td> "); - String endLabel = "Not Available"; - if (endDate != null) { - endLabel = format.format(endDate); - } - writer.write("<td>" + endLabel + "</td>"); - //writer.write("<td width=\"169\"> </td></tr>"); - - writer.write("<tr><td width=\"138\">Number Completed:</td><td>" + editorInput.getCompletedTasks().size() - + "</td>"); - - writer.write("<td width=\"169\">Total time on completed:</td><td width=\"376\">" - + DateUtil.getFormattedDuration(editorInput.getTotalTimeSpentOnCompletedTasks(), false) + "</td>"); - writer.write("</tr>"); - - writer.write("<tr><td width=\"138\">Number in Progress:</td><td>" + editorInput.getInProgressTasks().size() - + "</td>"); - writer.write("<td width=\"169\">Total time on incompleted:</td><td width=\"376\">" - + DateUtil.getFormattedDuration(editorInput.getTotalTimeSpentOnInProgressTasks(), false) + "</td>"); - writer.write("</tr>"); - - writer.write("<tr><td width=\"138\">Outstanding estimated hours:</td><td>" - + editorInput.getTotalTimeEstimated() + "</td>"); - writer.write("<td width=\"169\">Total time:</td><td width=\"376\">" + getTotalTime() + "</td>"); - writer.write("</tr>"); - - writer.write("</table>"); - } -} diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/planner/TaskActivitySorter.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/planner/TaskActivitySorter.java deleted file mode 100644 index f255faca2..000000000 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/planner/TaskActivitySorter.java +++ /dev/null @@ -1,96 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2004, 2007 Mylyn project committers 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 - *******************************************************************************/ - -package org.eclipse.mylyn.internal.tasks.ui.planner; - -import org.eclipse.jface.viewers.Viewer; -import org.eclipse.jface.viewers.ViewerSorter; -import org.eclipse.mylyn.internal.tasks.ui.TasksUiPlugin; -import org.eclipse.mylyn.tasks.core.AbstractTask; - -/** - * @author Ken Sueda - * @author Mik Kersten - */ -public class TaskActivitySorter extends ViewerSorter { - - public final static int DESCRIPTION = 1; - - public final static int PRIORITY = 2; - - public final static int CREATION_DATE = 3; - - public final static int COMPLETED_DATE = 4; - - public final static int DURATION = 5; - - public final static int ESTIMATED = 6; - - public static final int ICON = 0; - - private final int criteria; - - public TaskActivitySorter(int criteria) { - super(); - this.criteria = criteria; - } - - @Override - public int compare(Viewer viewer, Object obj1, Object obj2) { - AbstractTask t1 = (AbstractTask) obj1; - AbstractTask t2 = (AbstractTask) obj2; - - switch (criteria) { - case DESCRIPTION: - return compareDescription(t1, t2); - case PRIORITY: - return comparePriority(t1, t2); - case CREATION_DATE: - return compareCreationDate(t1, t2); - case COMPLETED_DATE: - return compareCompletedDate(t1, t2); - case DURATION: - return compareDuration(t1, t2); - case ESTIMATED: - return compareEstimated(t1, t2); - default: - return 0; - } - } - - protected int compareDescription(AbstractTask task1, AbstractTask task2) { - return task1.getSummary().compareToIgnoreCase(task2.getSummary()); - } - - protected int comparePriority(AbstractTask task1, AbstractTask task2) { - return task1.getPriority().compareTo(task2.getPriority()); - } - - protected int compareCompletedDate(AbstractTask task1, AbstractTask task2) { - return task2.getCompletionDate().compareTo(task1.getCompletionDate()); - } - - protected int compareEstimated(AbstractTask task1, AbstractTask task2) { - return task2.getEstimatedTimeHours() - task1.getEstimatedTimeHours(); - } - - protected int compareCreationDate(AbstractTask task1, AbstractTask task2) { - if (task1.getCreationDate() == null) { - return 1; - } else if (task2.getCreationDate() == null) { - return -1; - } else { - return task2.getCreationDate().compareTo(task1.getCreationDate()); - } - } - - protected int compareDuration(AbstractTask task1, AbstractTask task2) { - return TasksUiPlugin.getTaskActivityManager().getElapsedTime(task1) < TasksUiPlugin.getTaskActivityManager() - .getElapsedTime(task2) ? 1 : -1; - } -} diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/planner/TaskActivityWizard.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/planner/TaskActivityWizard.java deleted file mode 100644 index ffdd992a6..000000000 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/planner/TaskActivityWizard.java +++ /dev/null @@ -1,69 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2004, 2007 Mylyn project committers 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 - *******************************************************************************/ - -package org.eclipse.mylyn.internal.tasks.ui.planner; - -import org.eclipse.core.runtime.IStatus; -import org.eclipse.core.runtime.Status; -import org.eclipse.jface.viewers.IStructuredSelection; -import org.eclipse.jface.wizard.Wizard; -import org.eclipse.mylyn.internal.tasks.ui.TasksUiPlugin; -import org.eclipse.mylyn.monitor.core.StatusHandler; -import org.eclipse.mylyn.tasks.ui.TasksUi; -import org.eclipse.ui.IEditorInput; -import org.eclipse.ui.INewWizard; -import org.eclipse.ui.IWorkbench; -import org.eclipse.ui.IWorkbenchPage; -import org.eclipse.ui.PartInitException; - -/** - * @author Ken Sueda - * @author Mik Kersten - */ -public class TaskActivityWizard extends Wizard implements INewWizard { - - private static final String TITLE = "New Task Activity Report"; - - private TaskActivityWizardPage planningGamePage; - - public TaskActivityWizard() { - super(); - init(); - setWindowTitle(TITLE); - } - - @Override - public boolean performFinish() { - try { - IWorkbenchPage page = TasksUiPlugin.getDefault().getWorkbench().getActiveWorkbenchWindow().getActivePage(); - if (page == null) { - return false; - } - IEditorInput input = new TaskActivityEditorInput(planningGamePage.getReportStartDate(), - planningGamePage.getReportEndDate(), planningGamePage.getSelectedContainers(), - TasksUiPlugin.getTaskListManager().getTaskList()); - page.openEditor(input, TasksUi.ID_PLANNING_PAGE); - } catch (PartInitException e) { - StatusHandler.log(new Status(IStatus.ERROR, TasksUiPlugin.ID_PLUGIN, "Could not open summary editor", e)); - } - return true; - } - - public void init(IWorkbench workbench, IStructuredSelection selection) { - } - - private void init() { - planningGamePage = new TaskActivityWizardPage(); - super.setForcePreviousAndNextButtons(true); - } - - @Override - public void addPages() { - addPage(planningGamePage); - } -} diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/planner/TaskActivityWizardPage.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/planner/TaskActivityWizardPage.java deleted file mode 100644 index 934b71014..000000000 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/planner/TaskActivityWizardPage.java +++ /dev/null @@ -1,369 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2004, 2007 Mylyn project committers 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 - *******************************************************************************/ - -package org.eclipse.mylyn.internal.tasks.ui.planner; - -import java.util.ArrayList; -import java.util.Calendar; -import java.util.Collections; -import java.util.Comparator; -import java.util.Date; -import java.util.HashSet; -import java.util.List; -import java.util.Set; - -import org.eclipse.jface.layout.GridDataFactory; -import org.eclipse.jface.wizard.WizardPage; -import org.eclipse.mylyn.internal.tasks.core.TaskActivityUtil; -import org.eclipse.mylyn.internal.tasks.ui.TasksUiPlugin; -import org.eclipse.mylyn.internal.tasks.ui.views.TaskElementLabelProvider; -import org.eclipse.mylyn.tasks.core.AbstractTaskContainer; -import org.eclipse.mylyn.tasks.core.ITaskListManager; -import org.eclipse.mylyn.tasks.ui.DatePicker; -import org.eclipse.mylyn.tasks.ui.TasksUi; -import org.eclipse.swt.SWT; -import org.eclipse.swt.events.ModifyEvent; -import org.eclipse.swt.events.ModifyListener; -import org.eclipse.swt.events.SelectionAdapter; -import org.eclipse.swt.events.SelectionEvent; -import org.eclipse.swt.events.SelectionListener; -import org.eclipse.swt.graphics.Font; -import org.eclipse.swt.layout.GridData; -import org.eclipse.swt.layout.GridLayout; -import org.eclipse.swt.widgets.Button; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Group; -import org.eclipse.swt.widgets.Label; -import org.eclipse.swt.widgets.Table; -import org.eclipse.swt.widgets.TableColumn; -import org.eclipse.swt.widgets.TableItem; -import org.eclipse.swt.widgets.Text; - -/** - * @author Mik Kersten - * @author Ken Sueda (original prototype) - * @author Rob Elves - */ -public class TaskActivityWizardPage extends WizardPage { - - private static final int DEFAULT_DAYS = 1; - - private static final String TITLE = "Mylyn Task Activity Report"; - - private static final String DESCRIPTION = "Summarizes task activity and assists planning future tasks."; - - private final long DAY = 24 * 3600 * 1000; - - protected String[] columnNames = new String[] { "", "Description" }; - - private Date reportStartDate = null; - - private Date reportEndDate = null; - - private Button daysRadioButton = null; - - private Button dateRadioButton = null; - - private Text numDays; - - private int numDaysToReport = 0; - - private Table filtersTable; - - private final TaskElementLabelProvider labelProvider = new TaskElementLabelProvider(false); - - public TaskActivityWizardPage() { - super(TITLE); - setTitle(TITLE); - setDescription(DESCRIPTION); - } - - public void createControl(Composite parent) { - Composite container = new Composite(parent, SWT.FILL); - GridLayout layout = new GridLayout(); - container.setLayout(layout); - layout.numColumns = 1; - - createReportPeriodGroup(container); - - Label spacer = new Label(container, SWT.NONE); - spacer.setText(" "); - - createCategorySelectionGroup(container); - - setControl(container); - numDays.setFocus(); - } - - private void createReportPeriodGroup(Composite parent) { - Group reportPeriodGroup = new Group(parent, SWT.NONE); - GridLayout layout = new GridLayout(); - layout.numColumns = 4; - reportPeriodGroup.setLayout(layout); - reportPeriodGroup.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL | GridData.GRAB_HORIZONTAL)); - reportPeriodGroup.setText("Report Period"); - reportPeriodGroup.setFont(parent.getFont()); - - daysRadioButton = new Button(reportPeriodGroup, SWT.RADIO | SWT.LEFT | SWT.NO_FOCUS); - daysRadioButton.setText("Number of days prior: "); - daysRadioButton.setSelection(true); - - numDays = new Text(reportPeriodGroup, SWT.BORDER); - GridData gd = new GridData(); - gd.widthHint = 50; - numDays.setLayoutData(gd); - numDays.addModifyListener(new ModifyListener() { - public void modifyText(ModifyEvent e) { - try { - numDaysToReport = Integer.parseInt(numDays.getText()); - setErrorMessage(null); - } catch (Exception ex) { - setErrorMessage("Must be integer"); - numDaysToReport = 0; - } - } - }); - - numDays.setText("" + DEFAULT_DAYS); - numDaysToReport = DEFAULT_DAYS; - - Label spacer = new Label(reportPeriodGroup, SWT.NONE); - GridDataFactory.fillDefaults().span(2, SWT.DEFAULT).applyTo(spacer); - - dateRadioButton = new Button(reportPeriodGroup, SWT.RADIO | SWT.LEFT | SWT.NO_FOCUS); - dateRadioButton.setText("Date range Start:"); - - final DatePicker datePicker = new DatePicker(reportPeriodGroup, SWT.BORDER, "<start date>"); - datePicker.setEnabled(false); - Calendar startCal = Calendar.getInstance(); - TaskActivityUtil.snapStartOfDay(startCal); - reportStartDate = startCal.getTime(); - datePicker.setDate(startCal); - datePicker.addPickerSelectionListener(new SelectionListener() { - public void widgetSelected(SelectionEvent arg0) { - if (datePicker.getDate() != null) { - reportStartDate = datePicker.getDate().getTime(); - } - } - - public void widgetDefaultSelected(SelectionEvent arg0) { - // ignore - } - }); - - new Label(reportPeriodGroup, SWT.NONE).setText("End:"); - - final DatePicker endDatePicker = new DatePicker(reportPeriodGroup, SWT.BORDER, "<end date>"); - endDatePicker.setEnabled(false); - Calendar endCal = Calendar.getInstance(); - TaskActivityUtil.snapEndOfWorkDay(endCal); - reportEndDate = endCal.getTime(); - endDatePicker.setDate(endCal); - endDatePicker.addPickerSelectionListener(new SelectionAdapter() { - @Override - public void widgetSelected(SelectionEvent arg0) { - if (datePicker.getDate() != null) { - reportEndDate = endDatePicker.getDate().getTime(); - } - } - }); - - SelectionListener radioListener = new SelectionAdapter() { - - @Override - public void widgetSelected(SelectionEvent e) { - numDays.setEnabled(daysRadioButton.getSelection()); - datePicker.setEnabled(dateRadioButton.getSelection()); - endDatePicker.setEnabled(dateRadioButton.getSelection()); - if (daysRadioButton.getSelection()) { - numDays.setFocus(); - } - if (dateRadioButton.getSelection()) { - datePicker.setFocus(); - } - } - - }; - - daysRadioButton.addSelectionListener(radioListener); - dateRadioButton.addSelectionListener(radioListener); - - } - - /** - * Selection of specific category to report on in the Task Planner - * - * @param composite - * container to add categories combo box to - */ - private void createCategorySelectionGroup(Composite composite) { - - Group categorySelectionGroup = new Group(composite, SWT.NONE); - GridLayout layout = new GridLayout(); - layout.numColumns = 1; - categorySelectionGroup.setLayout(layout); - categorySelectionGroup.setLayoutData(new GridData(GridData.FILL_BOTH | GridData.GRAB_HORIZONTAL)); - categorySelectionGroup.setText("Category Selection"); - categorySelectionGroup.setFont(composite.getFont()); - - createFilterTable(categorySelectionGroup, true); - ITaskListManager manager = TasksUi.getTaskListManager(); - if (manager == null) { - filtersTable.setEnabled(false); - return; - } - - List<AbstractTaskContainer> containers = new ArrayList<AbstractTaskContainer>(); - containers.addAll(manager.getTaskList().getCategories()); - containers.addAll(manager.getTaskList().getQueries()); - //containers.add(manager.getTaskList().getArchiveContainer()); - Collections.sort(containers, new Comparator<AbstractTaskContainer>() { - - public int compare(AbstractTaskContainer c1, AbstractTaskContainer c2) { - if (c1.equals(TasksUiPlugin.getTaskListManager().getTaskList().getDefaultCategory())) { - return -1; - } else if (c2.equals(TasksUiPlugin.getTaskListManager().getTaskList().getDefaultCategory())) { - return 1; - } else { - return c1.getSummary().compareToIgnoreCase(c2.getSummary()); - } - } - - }); - - // populate table - for (AbstractTaskContainer container : containers) { - TableItem item = new TableItem(filtersTable, SWT.NONE); - item.setImage(labelProvider.getImage(container)); - item.setText(container.getSummary()); - item.setData(container); - } - - for (int i = 0; i < columnNames.length; i++) { - filtersTable.getColumn(i).pack(); - } - - createButtonsGroup(categorySelectionGroup); - - // default to all categories selected - setChecked(true); - } - - /** - * - * Creates the buttons for selecting all or none of the categories. - * - * @param parent - * parent composite - */ - private final void createButtonsGroup(Composite parent) { - - Font font = parent.getFont(); - new Label(parent, SWT.NONE); // Blank cell on left - - Composite buttonComposite = new Composite(parent, SWT.NONE); - buttonComposite.setFont(parent.getFont()); - - GridLayout layout = new GridLayout(); - layout.numColumns = 3; - layout.makeColumnsEqualWidth = true; - buttonComposite.setLayout(layout); - buttonComposite.setLayoutData(new GridData(GridData.VERTICAL_ALIGN_FILL | GridData.HORIZONTAL_ALIGN_FILL)); - - Button selectButton = new Button(buttonComposite, SWT.NONE); - selectButton.setText("Select All"); - - selectButton.addSelectionListener(new SelectionAdapter() { - @Override - public void widgetSelected(SelectionEvent e) { - setChecked(true); - } - }); - - selectButton.setFont(font); - setButtonLayoutData(selectButton); - - Button deselectButton = new Button(buttonComposite, SWT.NONE); - deselectButton.setText("Deselect All"); - - deselectButton.addSelectionListener(new SelectionAdapter() { - @Override - public void widgetSelected(SelectionEvent e) { - setChecked(false); - } - }); - - deselectButton.setFont(font); - setButtonLayoutData(deselectButton); - - } - - private void setChecked(boolean checked) { - for (TableItem item : filtersTable.getItems()) { - item.setChecked(checked); - } - } - - private void createFilterTable(Composite composite, boolean enabled) { - - Font font = composite.getFont(); - this.filtersTable = new Table(composite, SWT.BORDER | SWT.MULTI | SWT.CHECK | SWT.H_SCROLL | SWT.V_SCROLL); - this.filtersTable.setEnabled(enabled); - GridData data = new GridData(); - // Set heightHint with a small value so the list size will be defined by - // the space available in the dialog instead of resizing the dialog to - // fit all the items in the list. - data.heightHint = filtersTable.getItemHeight(); - data.verticalAlignment = GridData.FILL; - data.horizontalAlignment = GridData.FILL; - data.grabExcessHorizontalSpace = true; - data.grabExcessVerticalSpace = true; - this.filtersTable.setLayoutData(data); - this.filtersTable.setFont(font); - - for (String columnName : columnNames) { - TableColumn column = new TableColumn(filtersTable, SWT.NONE); - column.setText(columnName); - } - - } - - public Set<AbstractTaskContainer> getSelectedContainers() { - Set<AbstractTaskContainer> result = new HashSet<AbstractTaskContainer>(); - TableItem[] items = filtersTable.getItems(); - for (TableItem item : items) { - if (item.getChecked() && item.getData() instanceof AbstractTaskContainer) { - result.add((AbstractTaskContainer) item.getData()); - } - } - return result; - } - - public Date getReportStartDate() { - if (dateRadioButton.getSelection() && reportStartDate != null) { - return reportStartDate; - } else { - long today = new Date().getTime(); - long lastDay = numDaysToReport * DAY; - - int offsetToday = Calendar.getInstance().get(Calendar.HOUR) * 60 * 60 * 1000 - + Calendar.getInstance().get(Calendar.MINUTE) * 60 * 1000 - + Calendar.getInstance().get(Calendar.SECOND) * 1000; - return new Date(today - offsetToday - lastDay); - } - } - - public Date getReportEndDate() { - if (dateRadioButton.getSelection() && reportEndDate != null) { - return reportEndDate; - } else { - return new Date(); - } - } - -} diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/planner/TaskPlanContentProvider.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/planner/TaskPlanContentProvider.java deleted file mode 100644 index 277385b2e..000000000 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/planner/TaskPlanContentProvider.java +++ /dev/null @@ -1,48 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2004, 2007 Mylyn project committers 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 - *******************************************************************************/ - -package org.eclipse.mylyn.internal.tasks.ui.planner; - -import java.util.ArrayList; -import java.util.List; - -import org.eclipse.jface.viewers.IStructuredContentProvider; -import org.eclipse.jface.viewers.Viewer; -import org.eclipse.mylyn.tasks.core.AbstractTask; - -/** - * @author Ken Sueda - */ -public class TaskPlanContentProvider implements IStructuredContentProvider { - - private final List<AbstractTask> tasks = new ArrayList<AbstractTask>(); - - public Object[] getElements(Object inputElement) { - return tasks.toArray(); - } - - public void dispose() { - } - - public void inputChanged(Viewer viewer, Object oldInput, Object newInput) { - } - - public void addTask(AbstractTask t) { - if (!tasks.contains(t)) { - tasks.add(t); - } - } - - public void removeTask(AbstractTask t) { - tasks.remove(t); - } - - public List<AbstractTask> getTasks() { - return tasks; - } -} diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/planner/TaskPlanSorter.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/planner/TaskPlanSorter.java deleted file mode 100644 index 860a85515..000000000 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/planner/TaskPlanSorter.java +++ /dev/null @@ -1,90 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2004, 2007 Mylyn project committers 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 - *******************************************************************************/ - -package org.eclipse.mylyn.internal.tasks.ui.planner; - -import org.eclipse.jface.viewers.Viewer; -import org.eclipse.mylyn.tasks.core.AbstractTask; - -/** - * @author Mik Kersten - */ -public class TaskPlanSorter extends TaskActivitySorter { - - // {".", "Description", "Priority", "Estimated Time", "Reminder Date"}; - public final static int PRIORITY = 1; - - public final static int DESCRIPTION = 2; - - public final static int DURATION = 3; - - public final static int ESTIMATE = 4; - - public final static int REMINDER = 5; - - public static final int ICON = 0; - - private final int criteria; - - public TaskPlanSorter(int criteria) { - super(criteria); - this.criteria = criteria; - } - - @Override - public int compare(Viewer viewer, Object obj1, Object obj2) { - AbstractTask t1 = (AbstractTask) obj1; - AbstractTask t2 = (AbstractTask) obj2; - - switch (criteria) { - case PRIORITY: - return comparePriority(t1, t2); - case DESCRIPTION: - return compareDescription(t1, t2); - case DURATION: - return compareDuration(t1, t2); - case ESTIMATE: - return compareEstimated(t1, t2); - case REMINDER: - return compareReminder(t1, t2); - default: - return 0; - } - } - - private int compareReminder(AbstractTask task1, AbstractTask task2) { - if (task2.getScheduledForDate() == null) { - return -1; - } - if (task1.getScheduledForDate() == null) { - return 1; - } - if (task1.getScheduledForDate() == null && task2.getScheduledForDate() == null) { - return 0; - } - return task2.getScheduledForDate().compareTo(task1.getScheduledForDate()); - } - - // protected int compareEstimated(ITask task1, ITask task2) { - // if (task1.getEstimateTimeHours() > task2.getEstimateTimeHours()) { - // return 1; - // } else { - // return -1; - // } - - // private int compareDescription(ITask task1, ITask task2) { - // return - // task1.getDescription(false).compareTo(task2.getDescription(false)); - // } - // - // private int comparePriority(ITask task1, ITask task2) { - // return task1.getPriority().compareTo(task2.getPriority()); - // } - // - -} diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/planner/TaskPlannerLabelProvider.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/planner/TaskPlannerLabelProvider.java deleted file mode 100644 index 72ed075c4..000000000 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/planner/TaskPlannerLabelProvider.java +++ /dev/null @@ -1,142 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2004, 2007 Mylyn project committers 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 - *******************************************************************************/ - -package org.eclipse.mylyn.internal.tasks.ui.planner; - -import java.text.DateFormat; -import java.util.Calendar; -import java.util.Date; - -import org.eclipse.core.runtime.IStatus; -import org.eclipse.core.runtime.Status; -import org.eclipse.jface.viewers.IColorProvider; -import org.eclipse.jface.viewers.ITableLabelProvider; -import org.eclipse.jface.viewers.ITreeContentProvider; -import org.eclipse.jface.viewers.TreeViewer; -import org.eclipse.mylyn.internal.tasks.ui.TasksUiPlugin; -import org.eclipse.mylyn.internal.tasks.ui.views.TaskElementLabelProvider; -import org.eclipse.mylyn.monitor.core.DateUtil; -import org.eclipse.mylyn.monitor.core.StatusHandler; -import org.eclipse.mylyn.tasks.core.AbstractTask; -import org.eclipse.mylyn.tasks.core.AbstractTaskContainer; -import org.eclipse.swt.graphics.Color; -import org.eclipse.swt.graphics.Image; - -/** - * @author Ken Sueda - * @author Rob Elves - */ -public class TaskPlannerLabelProvider extends TaskElementLabelProvider implements ITableLabelProvider, IColorProvider { - - private final Calendar startDate; - - private final Calendar endDate; - - private final TreeViewer viewer; - - public TaskPlannerLabelProvider(TreeViewer viewer, Date startDate, Date endDate) { - super(true); - this.viewer = viewer; - this.startDate = Calendar.getInstance(); - this.startDate.setTime(startDate); - this.endDate = Calendar.getInstance(); - this.endDate.setTime(endDate); - } - - private final TaskElementLabelProvider taskListLabelProvider = new TaskElementLabelProvider(true); - - public Image getColumnImage(Object element, int columnIndex) { - if (columnIndex == 0) { - return super.getImage(element); - } else { - return null; - } - } - - public String getColumnText(Object element, int columnIndex) { - try { - if (element instanceof AbstractTask) { - AbstractTask task = (AbstractTask) element; - switch (columnIndex) { - case 1: - return task.getPriority(); - case 2: - return task.getSummary(); - case 3: - return DateUtil.getFormattedDurationShort(TasksUiPlugin.getTaskActivityManager().getElapsedTime( - task, startDate, endDate)); - case 4: - return task.getEstimatedTimeHours() + " hours"; - case 5: - if (task.getCreationDate() != null) { - return DateFormat.getDateInstance(DateFormat.MEDIUM).format(task.getCreationDate()); - } else { - StatusHandler.log(new Status(IStatus.WARNING, TasksUiPlugin.ID_PLUGIN, - "Task has no creation date: " + task.getSummary())); - return "[unknown]"; - } - case 6: - if (task.getCompletionDate() != null) { - return DateFormat.getDateInstance(DateFormat.MEDIUM).format(task.getCompletionDate()); - } else { - return ""; - } - } - } else if (element instanceof AbstractTaskContainer) { - AbstractTaskContainer container = (AbstractTaskContainer) element; - switch (columnIndex) { - case 1: - return null; - case 2: - return container.getSummary(); - case 3: { - ITreeContentProvider contentProvider = ((ITreeContentProvider) viewer.getContentProvider()); - long duration = 0; - for (Object o : contentProvider.getChildren(container)) { - if (o instanceof AbstractTask) { - duration += TasksUiPlugin.getTaskActivityManager().getElapsedTime((AbstractTask) o, - startDate, endDate); - } - } - return DateUtil.getFormattedDurationShort(duration); - } - case 4: { - ITreeContentProvider contentProvider = ((ITreeContentProvider) viewer.getContentProvider()); - long estimated = 0; - for (Object o : contentProvider.getChildren(container)) { - if (o instanceof AbstractTask) { - estimated += ((AbstractTask) o).getEstimatedTimeHours(); - } - } - return estimated + " hours"; - } - case 5: - return null; - case 6: - return null; - } - } - } catch (RuntimeException e) { - StatusHandler.log(new Status(IStatus.ERROR, TasksUiPlugin.ID_PLUGIN, - "Could not produce completed task label", e)); - return ""; - } - return null; - } - - @Override - public Color getForeground(Object element) { - return taskListLabelProvider.getForeground(element); - } - - @Override - public Color getBackground(Object element) { - return taskListLabelProvider.getBackground(element); - } - -} diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/planner/TaskReportGenerator.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/planner/TaskReportGenerator.java deleted file mode 100644 index f014ca1e6..000000000 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/planner/TaskReportGenerator.java +++ /dev/null @@ -1,123 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2004, 2007 Mylyn project committers 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 - *******************************************************************************/ - -package org.eclipse.mylyn.internal.tasks.ui.planner; - -import java.lang.reflect.InvocationTargetException; -import java.util.ArrayList; -import java.util.HashSet; -import java.util.List; -import java.util.Set; - -import org.eclipse.core.runtime.IProgressMonitor; -import org.eclipse.core.runtime.IStatus; -import org.eclipse.core.runtime.NullProgressMonitor; -import org.eclipse.core.runtime.Status; -import org.eclipse.jface.operation.IRunnableWithProgress; -import org.eclipse.mylyn.internal.tasks.core.TaskList; -import org.eclipse.mylyn.internal.tasks.ui.TasksUiPlugin; -import org.eclipse.mylyn.monitor.core.StatusHandler; -import org.eclipse.mylyn.tasks.core.AbstractRepositoryQuery; -import org.eclipse.mylyn.tasks.core.AbstractTask; -import org.eclipse.mylyn.tasks.core.AbstractTaskContainer; - -/** - * @author Ken Sueda - * @author Mik Kersten - * @author Rob Elves (scope report to specific categories and queries) - */ -public class TaskReportGenerator implements IRunnableWithProgress { - - private static final String LABEL_JOB = "Mylyn Task Activity Report"; - - private boolean finished; - - private TaskList tasklist = null; - - private final List<ITaskCollector> collectors = new ArrayList<ITaskCollector>(); - - private final List<AbstractTask> tasks = new ArrayList<AbstractTask>(); - - private final Set<AbstractTaskContainer> filterCategories; - - public TaskReportGenerator(TaskList tlist) { - this(tlist, null); - } - - public TaskReportGenerator(TaskList tlist, Set<AbstractTaskContainer> filterCategories) { - tasklist = tlist; - this.filterCategories = filterCategories != null ? filterCategories : new HashSet<AbstractTaskContainer>(); - } - - public void addCollector(ITaskCollector collector) { - collectors.add(collector); - } - - public void collectTasks() { - try { - run(new NullProgressMonitor()); - } catch (InvocationTargetException e) { - // operation was canceled - } catch (InterruptedException e) { - StatusHandler.log(new Status(IStatus.ERROR, TasksUiPlugin.ID_PLUGIN, "Could not collect tasks", e)); - } - } - - public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException { - - Set<AbstractTaskContainer> rootElements; - if (filterCategories.size() == 0) { - rootElements = tasklist.getRootElements(); - } else { - rootElements = filterCategories; - } - - int estimatedItemsToProcess = rootElements.size(); - monitor.beginTask(LABEL_JOB, estimatedItemsToProcess); - - for (Object element : rootElements) { - monitor.worked(1); - if (element instanceof AbstractTask) { - AbstractTask task = (AbstractTask) element; - for (ITaskCollector collector : collectors) { - collector.consumeTask(task); - } - } else if (element instanceof AbstractRepositoryQuery) { - // process queries - AbstractRepositoryQuery repositoryQuery = (AbstractRepositoryQuery) element; - for (AbstractTask task : repositoryQuery.getChildren()) { - for (ITaskCollector collector : collectors) { - collector.consumeTask(task); - } - } - } else if (element instanceof AbstractTaskContainer) { - AbstractTaskContainer cat = (AbstractTaskContainer) element; - for (AbstractTask task : cat.getChildren()) { - for (ITaskCollector collector : collectors) { - collector.consumeTask(task); - } - } - - } - } - // Put the results all into one list (tasks) - for (ITaskCollector collector : collectors) { - tasks.addAll(collector.getTasks()); - } - finished = true; - monitor.done(); - } - - public List<AbstractTask> getAllCollectedTasks() { - return tasks; - } - - public boolean isFinished() { - return finished; - } -} |