Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormkersten2006-04-07 21:15:48 +0000
committermkersten2006-04-07 21:15:48 +0000
commit76c0e9986d2565e55d5916ebb869ea5680715b14 (patch)
tree797b6dd310323c2f74deed863e9c3780b0f4e55f
parentf34390e38374dba9c89d9d287c59f1739834ee5b (diff)
downloadorg.eclipse.mylyn.tasks-76c0e9986d2565e55d5916ebb869ea5680715b14.tar.gz
org.eclipse.mylyn.tasks-76c0e9986d2565e55d5916ebb869ea5680715b14.tar.xz
org.eclipse.mylyn.tasks-76c0e9986d2565e55d5916ebb869ea5680715b14.zip
Progress on: 131006: Task Activity View Improvements
https://bugs.eclipse.org/bugs/show_bug.cgi?id=131006
-rw-r--r--org.eclipse.mylyn.help.ui/doc/new.html61
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/planner/ui/TaskActivityEditorInput.java15
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/planner/ui/TaskActivityEditorPart.java579
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/actions/ActivityReportAction.java52
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/views/TaskActivityView.java21
5 files changed, 407 insertions, 321 deletions
diff --git a/org.eclipse.mylyn.help.ui/doc/new.html b/org.eclipse.mylyn.help.ui/doc/new.html
index 27a9370db..d48ae28cf 100644
--- a/org.eclipse.mylyn.help.ui/doc/new.html
+++ b/org.eclipse.mylyn.help.ui/doc/new.html
@@ -182,12 +182,11 @@ repository, and click OK (some older task lists did not properly associate
queries with repositories). </p>
<p><b>JIRA Connector users</b>: JIRA Core Services 0.8.0 (from Tigris.org) will get
installed with this release.</p>
-<p><b>Eclipse 3.2 users</b>: this release supports Eclipse 3.2M5 (M4 is no
+<p><b>Eclipse 3.2 users</b>: this release supports Eclipse 3.2M6 (M5 is no
longer supported). The custom Mylar editor is gone (see below), so before restarting
deactivate the current task or close all active editors, and run the New -&gt;
Mylar -&gt; Preference Configuration wizard (it should pop up automatically).&nbsp; If auto folding doesn't work reset the folding provider (see
<a href="#active-folding">Active Folding</a>).</p>
-<h3>Additions <span style="background-color: #E0D0E6">&nbsp;since 0.4.10&nbsp;</span></h3>
<table cellpadding="10" cellspacing="0" width="600" id="table157">
<tr>
@@ -197,9 +196,7 @@ longer supported). The custom Mylar editor is gone (see below), so before restar
<td valign="top" width="70%">
Context change sets contain indirect interactions (e.g. changes made
via refactoring).
- <p>Bug editor links (java, other reports).&nbsp; To apply a patch
- click the &quot;view&quot; link, hit Ctrl+A and Ctrl+C on the text to get it
- into the clipboard, then Apply Patch.</p>
+ <p>Bug editor links (java, other reports).&nbsp; </p>
<p>Open corresponding report from generic history view<p>Apply Mylar
to Task List (still experimental).&nbsp; Currently shows you the
context of your current week.&nbsp; So instead of &quot;Mark Less
@@ -232,13 +229,14 @@ longer supported). The custom Mylar editor is gone (see below), so before restar
</tr>
</table>
-<table cellpadding="10" cellspacing="0" width="600" id="table156">
+<table cellpadding="10" cellspacing="0" width="600" id="table155">
<tr>
<td align="left" valign="top" width="30%" bgcolor="#E0D0E6">
- <p align="right"><b>Context attachments</b></p>
+ <p align="right"><b>Alt+click improvements</b></p>
</td>
<td valign="top" width="70%">
- Attach to Bugzilla reports</td>
+ Can click on whitespace to unfilter on all projects, Alt+click is
+ now 'springy'...</td>
</tr>
<tr>
<td colspan="2">
@@ -247,14 +245,13 @@ longer supported). The custom Mylar editor is gone (see below), so before restar
</tr>
</table>
-<table cellpadding="10" cellspacing="0" width="600" id="table155">
+<table cellpadding="10" cellspacing="0" width="600" id="table154">
<tr>
<td align="left" valign="top" width="30%" bgcolor="#E0D0E6">
- <p align="right"><b>Alt+click improvements</b></p>
+ <p align="right"><b>Auto archive</b></p>
</td>
<td valign="top" width="70%">
- Can click on whitespace to unfilter on all projects, Alt+click is
- now 'springy'...</td>
+ Task List can be auto archived...</td>
</tr>
<tr>
<td colspan="2">
@@ -263,13 +260,27 @@ longer supported). The custom Mylar editor is gone (see below), so before restar
</tr>
</table>
-<table cellpadding="10" cellspacing="0" width="600" id="table154">
+<table cellpadding="10" cellspacing="0" width="600" id="table159">
<tr>
- <td align="left" valign="top" width="30%" bgcolor="#E0D0E6">
- <p align="right"><b>Auto archive</b></p>
+ <td align="left" valign="top" width="30%">
+ <p align="right"><b>Form-based Bugzilla Editor with Hyperlink
+ support</b></p>
</td>
<td valign="top" width="70%">
- Task List can be auto archived...</td>
+ The editor now uses Eclipse forms, collapses comments, and supports
+ the following hyperlinks:<ul>
+ <li>Java element in stack traces</li>
+ <li>Bug links (e.g. bug 123)</li>
+ <li>Hyperlinks</li>
+ <li>Attachments</li>
+ </ul>
+ <p>
+ Click comments to expand them.<p>
+ To apply a patch click the &quot;view&quot; link, hit Ctrl+A and Ctrl+C on the
+ text to get it into the clipboard, then Apply Patch).&nbsp; To
+ expand all comments click the &quot;Expand All&quot; button at the bottom of
+ the editor.<p>
+ <img border="0" src="http://eclipse.org/mylar/doc/images/0.4.10/bugzilla-editor.gif"></td>
</tr>
<tr>
<td colspan="2">
@@ -278,6 +289,8 @@ longer supported). The custom Mylar editor is gone (see below), so before restar
</tr>
</table>
+<p>&nbsp;</p>
+
<table cellpadding="10" cellspacing="0" width="600" id="table145">
<tr>
<td align="left" valign="top" width="30%">
@@ -325,22 +338,6 @@ longer supported). The custom Mylar editor is gone (see below), so before restar
</tr>
</table>
-<table cellpadding="10" cellspacing="0" width="600" id="table148">
- <tr>
- <td align="left" valign="top" width="30%">
- <p align="right"><b>Form-based Bugzilla Editor</b></p>
- </td>
- <td valign="top" width="70%">
- The Bugzilla editor now uses Eclipse forms.<p>
- <img border="0" src="http://eclipse.org/mylar/doc/images/0.4.10/bugzilla-editor.gif"></td>
- </tr>
- <tr>
- <td colspan="2">
- <hr>
- </td>
- </tr>
-</table>
-
<table cellpadding="10" cellspacing="0" width="600" id="table147">
<tr>
<td align="left" valign="top" width="30%">
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/planner/ui/TaskActivityEditorInput.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/planner/ui/TaskActivityEditorInput.java
index 8415c142e..7d4a97928 100644
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/planner/ui/TaskActivityEditorInput.java
+++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/planner/ui/TaskActivityEditorInput.java
@@ -24,6 +24,7 @@ import org.eclipse.mylar.internal.tasklist.planner.InProgressTaskCollector;
import org.eclipse.mylar.internal.tasklist.planner.TaskReportGenerator;
import org.eclipse.mylar.provisional.tasklist.ITask;
import org.eclipse.mylar.provisional.tasklist.ITaskListElement;
+import org.eclipse.mylar.provisional.tasklist.MylarTaskListPlugin;
import org.eclipse.mylar.provisional.tasklist.TaskList;
import org.eclipse.ui.IEditorInput;
import org.eclipse.ui.IPersistableElement;
@@ -73,7 +74,12 @@ public class TaskActivityEditorInput implements IEditorInput {
completedTasks = completedTaskCollector.getTasks();
inProgressTasks = inProgressTaskCollector.getTasks();
- plannedTasks = new HashSet<ITask>();
+
+ plannedTasks.addAll(MylarTaskListPlugin.getTaskListManager().getActivityNextWeek().getChildren());
+
+ plannedTasks.addAll(MylarTaskListPlugin.getTaskListManager().getActivityFuture().getChildren());
+
+ //plannedTasks = new HashSet<ITask>();
}
public boolean exists() {
@@ -161,11 +167,10 @@ public class TaskActivityEditorInput implements IEditorInput {
inProgressTasks.remove(task);
}
- public void addPlannedTask(ITask task) {
- if(!plannedTasks.contains(task)) {
- plannedTasks.add(task);
- }
+ public void addPlannedTask(ITask task) {
+ plannedTasks.add(task);
}
+
public void removePlannedTask(ITask task) {
plannedTasks.remove(task);
}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/planner/ui/TaskActivityEditorPart.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/planner/ui/TaskActivityEditorPart.java
index 55a31ea73..964a721f1 100644
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/planner/ui/TaskActivityEditorPart.java
+++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/planner/ui/TaskActivityEditorPart.java
@@ -16,12 +16,9 @@ import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;
-import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
-import java.util.Arrays;
import java.util.Date;
-import java.util.Iterator;
import java.util.List;
import java.util.Locale;
@@ -30,31 +27,16 @@ 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.CellEditor;
-import org.eclipse.jface.viewers.ComboBoxCellEditor;
import org.eclipse.jface.viewers.DoubleClickEvent;
-import org.eclipse.jface.viewers.ICellEditorListener;
-import org.eclipse.jface.viewers.ICellModifier;
import org.eclipse.jface.viewers.IDoubleClickListener;
import org.eclipse.jface.viewers.ISelectionChangedListener;
-import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.viewers.SelectionChangedEvent;
import org.eclipse.jface.viewers.TableViewer;
-import org.eclipse.jface.viewers.ViewerDropAdapter;
import org.eclipse.mylar.internal.core.util.DateUtil;
import org.eclipse.mylar.internal.core.util.MylarStatusHandler;
-import org.eclipse.mylar.internal.tasklist.ui.views.TaskListView;
-import org.eclipse.mylar.provisional.tasklist.AbstractQueryHit;
-import org.eclipse.mylar.provisional.tasklist.AbstractRepositoryQuery;
import org.eclipse.mylar.provisional.tasklist.ITask;
-import org.eclipse.mylar.provisional.tasklist.ITaskListElement;
-import org.eclipse.mylar.provisional.tasklist.TaskListManager;
import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.SashForm;
-import org.eclipse.swt.dnd.DND;
-import org.eclipse.swt.dnd.TextTransfer;
-import org.eclipse.swt.dnd.Transfer;
-import org.eclipse.swt.dnd.TransferData;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.layout.GridData;
@@ -125,15 +107,15 @@ public class TaskActivityEditorPart extends EditorPart {
private static final String BLANK_CELL = "&nbsp;";
private Label totalEstimatedHoursLabel;
-
+
private Label numberCompleted;
-
+
private Label totalTimeOnCompleted;
private Label numberInProgress;
-
+
private Label totalTimeOnIncomplete;
-
+
private Label totalEstimatedTime;
private Label totalTime;
@@ -196,7 +178,7 @@ public class TaskActivityEditorPart extends EditorPart {
sashForm.setLayoutData(new GridData(GridData.FILL_BOTH));
activityContentProvider = new TaskActivityContentProvider(editorInput);
-
+
final TableViewer activityViewer = createTableSection(sashForm, toolkit, label, activityColumnNames,
activityColumnWidths, activitySortConstants);
activityViewer.setContentProvider(activityContentProvider);
@@ -206,10 +188,10 @@ public class TaskActivityEditorPart extends EditorPart {
activityViewer.addSelectionChangedListener(new ISelectionChangedListener() {
public void selectionChanged(SelectionChangedEvent event) {
- updateLabels();
+ updateLabels();
}
});
-
+
MenuManager activityContextMenuMgr = new MenuManager("#ActivityPlannerPopupMenu");
activityContextMenuMgr.setRemoveAllWhenShown(true);
activityContextMenuMgr.addMenuListener(new IMenuListener() {
@@ -222,38 +204,40 @@ public class TaskActivityEditorPart extends EditorPart {
activityViewer.getControl().setMenu(menu);
getSite().registerContextMenu(activityContextMenuMgr, activityViewer);
-
planContentProvider = new PlannedTasksContentProvider(editorInput);
- final TableViewer planViewer = createTableSection(sashForm, toolkit, LABEL_PLANNED_ACTIVITY,
- planColumnNames, planColumnWidths, planSortConstants);
+ final TableViewer planViewer = createTableSection(sashForm, toolkit, LABEL_PLANNED_ACTIVITY, planColumnNames,
+ planColumnWidths, planSortConstants);
planViewer.setContentProvider(planContentProvider);
planViewer.setLabelProvider(new TaskPlanLabelProvider());
- createPlanCellEditorListener(planViewer.getTable(), planViewer);
- planViewer.setCellModifier(new PlannedTasksCellModifier(planViewer));
- initDrop(planViewer, planContentProvider);
+ // createPlanCellEditorListener(planViewer.getTable(), planViewer);
+ // planViewer.setCellModifier(new PlannedTasksCellModifier(planViewer));
+ // initDrop(planViewer, planContentProvider);
setSorters(planColumnNames, planSortConstants, planViewer.getTable(), 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);
+ // 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(TableViewer viewer, IMenuManager manager) {
@@ -261,6 +245,8 @@ public class TaskActivityEditorPart extends EditorPart {
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));
}
}
@@ -293,7 +279,7 @@ public class TaskActivityEditorPart extends EditorPart {
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);
@@ -307,7 +293,7 @@ public class TaskActivityEditorPart extends EditorPart {
+ 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);
@@ -318,11 +304,11 @@ public class TaskActivityEditorPart extends EditorPart {
totalTime.setForeground(toolkit.getColors().getColor(FormColors.TITLE));
}
-
+
private void updateSummarySection() {
- String numComplete = "Number completed: " + editorInput.getCompletedTasks().size();
+ String numComplete = "Number completed: " + editorInput.getCompletedTasks().size();
numberCompleted.setText(numComplete);
-
+
String totalCompletedTaskTime = "Total time on completed: "
+ DateUtil.getFormattedDuration(editorInput.getTotalTimeSpentOnCompletedTasks(), false);
totalTimeOnCompleted.setText(totalCompletedTaskTime);
@@ -333,67 +319,75 @@ public class TaskActivityEditorPart extends EditorPart {
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 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);
@@ -401,12 +395,13 @@ public class TaskActivityEditorPart extends EditorPart {
private TableViewer 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);
+ 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));
+ tableSection.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
Composite detailContainer = toolkit.createComposite(tableSection);
tableSection.setClient(detailContainer);
@@ -425,7 +420,7 @@ public class TaskActivityEditorPart extends EditorPart {
GridData tableGridData = new GridData(GridData.FILL_BOTH);
tableGridData.heightHint = 100;
table.setLayoutData(tableGridData);
-
+
table.setLinesVisible(true);
table.setHeaderVisible(true);
table.setEnabled(true);
@@ -481,26 +476,28 @@ public class TaskActivityEditorPart extends EditorPart {
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 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() {
@@ -511,170 +508,184 @@ public class TaskActivityEditorPart extends EditorPart {
});
}
- private void initDrop(final TableViewer tableViewer, final PlannedTasksContentProvider contentProvider) {
- Transfer[] types = new Transfer[] { TextTransfer.getInstance() };
-
- tableViewer.addDropSupport(DND.DROP_MOVE, types, new ViewerDropAdapter(tableViewer) {
- {
- setFeedbackEnabled(false);
- }
-
- @Override
- public boolean performDrop(Object data) {
-
- IStructuredSelection selection = ((IStructuredSelection) TaskListView.getDefault().getViewer()
- .getSelection());
-
- for (Iterator iter = selection.iterator(); iter.hasNext();) {
- Object selectedObject = iter.next();
- if (selectedObject instanceof ITask) {
- contentProvider.addTask((ITask) selectedObject);
- updateLabels();
- continue;
- } else if (selectedObject instanceof ITaskListElement) {
-// if (MylarTaskListPlugin.getDefault().getHandlerForElement((ITaskListElement) selectedObject) != null) {
- ITask task = null;
- if (selectedObject instanceof ITask) {
- task = (ITask) selectedObject;
- } else if (selectedObject instanceof AbstractQueryHit) {
- task = ((AbstractQueryHit) selectedObject).getOrCreateCorrespondingTask();
- }
- if (task != null) {
- contentProvider.addTask(task);
- updateLabels();
- continue;
- }
-// }
- } else {
- return false;
- }
- }
- tableViewer.refresh();
- return true;
- }
-
- @Override
- public boolean validateDrop(Object targetObject, int operation, TransferData transferType) {
- Object selectedObject = ((IStructuredSelection) TaskListView.getDefault().getViewer().getSelection())
- .getFirstElement();
- if (!(selectedObject instanceof AbstractRepositoryQuery)) {
-// && ((ITaskListElement) selectedObject).isDragAndDropEnabled()) {
- return true;
- }
- return false;
- }
- });
- }
-
- private class PlannedTasksCellModifier implements ICellModifier {
-
- private TableViewer tableViewer;
-
- public PlannedTasksCellModifier(TableViewer tableViewer) {
- this.tableViewer = tableViewer;
- }
-
- public boolean canModify(Object element, String property) {
- int columnIndex = Arrays.asList(planColumnNames).indexOf(property);
- if (columnIndex == 5 || columnIndex == 4) {
- return true;
- }
- return false;
- }
-
- public Object getValue(Object element, String property) {
- if (element instanceof ITask) {
- int columnIndex = Arrays.asList(planColumnNames).indexOf(property);
- if (element instanceof ITask) {
- if (columnIndex == 5) {
- if (((ITask) element).getReminderDate() != null) {
- return DateFormat.getDateInstance(DateFormat.MEDIUM).format(
- ((ITask) element).getReminderDate());
- } else {
- return null;
- }
- } else if (columnIndex == 4) {
- return new Integer(Arrays.asList(TaskListManager.ESTIMATE_TIMES).indexOf(
- ((ITask) element).getEstimateTimeHours()));
- }
-
- }
- }
- return null;
- }
-
- public void modify(Object element, String property, Object value) {
- int columnIndex = Arrays.asList(planColumnNames).indexOf(property);
- if (element instanceof ITask) {
- ITask task = (ITask) element;
- if (columnIndex == 4) {
- if (value instanceof Integer) {
- task.setEstimatedTimeHours(((Integer) value).intValue() * 10);
- tableViewer.refresh();
- }
- }
- }
- }
- }
-
-// private void addPlannedTasksToCategory(PlannedTasksContentProvider contentProvider) {
-// List<AbstractTaskContainer> categories = MylarTaskListPlugin.getTaskListManager().getTaskList().getUserCategories();
-// String[] categoryNames = new String[categories.size()];
-// int i = 0;
-// for (AbstractTaskContainer category : categories) {
-// categoryNames[i++] = category.getDescription();
-// }
-// if (categories.size() > 0) {
-// ComboSelectionDialog dialog = new ComboSelectionDialog(Display.getCurrent().getActiveShell(), LABEL_DIALOG,
-// "Select destination category: ", categoryNames, 0);
-// int confirm = dialog.open();
-// if (confirm == ComboSelectionDialog.OK) {
-// String selected = dialog.getSelectedString();
-// AbstractTaskContainer destinationCategory = null;
-// for (AbstractTaskContainer category : categories) {
-// if (category.getDescription().equals(selected)) {
-// destinationCategory = category;
-// break; // will go to the first one
-// }
-// }
-// if (destinationCategory != null && destinationCategory instanceof TaskCategory) {
-// TaskCategory taskCategory = (TaskCategory) destinationCategory;
-// for (ITask task : editorInput.getPlannedTasks()) {
-// if (!taskCategory.getChildren().contains(task)) {
-// MylarTaskListPlugin.getTaskListManager().getTaskList().moveToContainer(taskCategory, task);
-// }
-// }
-// if (TaskListView.getDefault() != null) {
-// TaskListView.getDefault().refreshAndFocus();
-// }
-// } else {
-// MessageDialog.openInformation(Display.getCurrent().getActiveShell(), LABEL_DIALOG,
-// "Can not add plan tasks into a query category.");
-// }
-// }
-// } else {
-// MessageDialog.openInformation(Display.getCurrent().getActiveShell(), LABEL_DIALOG,
-// "No categories in task list.");
-// }
-// }
+ // private void initDrop(final TableViewer tableViewer, final
+ // PlannedTasksContentProvider contentProvider) {
+ // Transfer[] types = new Transfer[] { TextTransfer.getInstance() };
+ //
+ // tableViewer.addDropSupport(DND.DROP_MOVE, types, new
+ // ViewerDropAdapter(tableViewer) {
+ // {
+ // setFeedbackEnabled(false);
+ // }
+ //
+ // @Override
+ // public boolean performDrop(Object data) {
+ //
+ // IStructuredSelection selection = ((IStructuredSelection)
+ // TaskListView.getDefault().getViewer()
+ // .getSelection());
+ //
+ // for (Iterator iter = selection.iterator(); iter.hasNext();) {
+ // Object selectedObject = iter.next();
+ // if (selectedObject instanceof ITask) {
+ // contentProvider.addTask((ITask) selectedObject);
+ // updateLabels();
+ // continue;
+ // } else if (selectedObject instanceof ITaskListElement) {
+ // // if
+ // (MylarTaskListPlugin.getDefault().getHandlerForElement((ITaskListElement)
+ // selectedObject) != null) {
+ // ITask task = null;
+ // if (selectedObject instanceof ITask) {
+ // task = (ITask) selectedObject;
+ // } else if (selectedObject instanceof AbstractQueryHit) {
+ // task = ((AbstractQueryHit)
+ // selectedObject).getOrCreateCorrespondingTask();
+ // }
+ // if (task != null) {
+ // contentProvider.addTask(task);
+ // updateLabels();
+ // continue;
+ // }
+ // // }
+ // } else {
+ // return false;
+ // }
+ // }
+ // tableViewer.refresh();
+ // return true;
+ // }
+ //
+ // @Override
+ // public boolean validateDrop(Object targetObject, int operation,
+ // TransferData transferType) {
+ // Object selectedObject = ((IStructuredSelection)
+ // TaskListView.getDefault().getViewer().getSelection())
+ // .getFirstElement();
+ // if (!(selectedObject instanceof AbstractRepositoryQuery)) {
+ // // && ((ITaskListElement) selectedObject).isDragAndDropEnabled()) {
+ // return true;
+ // }
+ // return false;
+ // }
+ // });
+ // }
+
+ // private class PlannedTasksCellModifier implements ICellModifier {
+ //
+ // private TableViewer tableViewer;
+ //
+ // public PlannedTasksCellModifier(TableViewer tableViewer) {
+ // this.tableViewer = tableViewer;
+ // }
+ //
+ // public boolean canModify(Object element, String property) {
+ // int columnIndex = Arrays.asList(planColumnNames).indexOf(property);
+ // if (columnIndex == 5 || columnIndex == 4) {
+ // return true;
+ // }
+ // return false;
+ // }
+ //
+ // public Object getValue(Object element, String property) {
+ // if (element instanceof ITask) {
+ // int columnIndex = Arrays.asList(planColumnNames).indexOf(property);
+ // if (element instanceof ITask) {
+ // if (columnIndex == 5) {
+ // if (((ITask) element).getReminderDate() != null) {
+ // return DateFormat.getDateInstance(DateFormat.MEDIUM).format(
+ // ((ITask) element).getReminderDate());
+ // } else {
+ // return null;
+ // }
+ // } else if (columnIndex == 4) {
+ // return new Integer(Arrays.asList(TaskListManager.ESTIMATE_TIMES).indexOf(
+ // ((ITask) element).getEstimateTimeHours()));
+ // }
+ //
+ // }
+ // }
+ // return null;
+ // }
+ //
+ // public void modify(Object element, String property, Object value) {
+ // int columnIndex = Arrays.asList(planColumnNames).indexOf(property);
+ // if (element instanceof ITask) {
+ // ITask task = (ITask) element;
+ // if (columnIndex == 4) {
+ // if (value instanceof Integer) {
+ // task.setEstimatedTimeHours(((Integer) value).intValue() * 10);
+ // tableViewer.refresh();
+ // }
+ // }
+ // }
+ // }
+ // }
+
+ // private void addPlannedTasksToCategory(PlannedTasksContentProvider
+ // contentProvider) {
+ // List<AbstractTaskContainer> categories =
+ // MylarTaskListPlugin.getTaskListManager().getTaskList().getUserCategories();
+ // String[] categoryNames = new String[categories.size()];
+ // int i = 0;
+ // for (AbstractTaskContainer category : categories) {
+ // categoryNames[i++] = category.getDescription();
+ // }
+ // if (categories.size() > 0) {
+ // ComboSelectionDialog dialog = new
+ // ComboSelectionDialog(Display.getCurrent().getActiveShell(), LABEL_DIALOG,
+ // "Select destination category: ", categoryNames, 0);
+ // int confirm = dialog.open();
+ // if (confirm == ComboSelectionDialog.OK) {
+ // String selected = dialog.getSelectedString();
+ // AbstractTaskContainer destinationCategory = null;
+ // for (AbstractTaskContainer category : categories) {
+ // if (category.getDescription().equals(selected)) {
+ // destinationCategory = category;
+ // break; // will go to the first one
+ // }
+ // }
+ // if (destinationCategory != null && destinationCategory instanceof
+ // TaskCategory) {
+ // TaskCategory taskCategory = (TaskCategory) destinationCategory;
+ // for (ITask task : editorInput.getPlannedTasks()) {
+ // if (!taskCategory.getChildren().contains(task)) {
+ // MylarTaskListPlugin.getTaskListManager().getTaskList().moveToContainer(taskCategory,
+ // task);
+ // }
+ // }
+ // if (TaskListView.getDefault() != null) {
+ // TaskListView.getDefault().refreshAndFocus();
+ // }
+ // } else {
+ // MessageDialog.openInformation(Display.getCurrent().getActiveShell(),
+ // LABEL_DIALOG,
+ // "Can not add plan tasks into a query category.");
+ // }
+ // }
+ // } else {
+ // MessageDialog.openInformation(Display.getCurrent().getActiveShell(),
+ // LABEL_DIALOG,
+ // "No categories in task list.");
+ // }
+ // }
private void updateLabels() {
totalEstimatedHoursLabel.setText(LABEL_ESTIMATED + editorInput.getPlannedEstimate() + " hours");
updateSummarySection();
}
-
private void exportToHtml() {
File outputFile;
try {
FileDialog dialog = new FileDialog(Workbench.getInstance().getActiveWorkbenchWindow().getShell());
dialog.setText("Specify a file name");
dialog.setFilterExtensions(new String[] { "*.html", "*.*" });
-
String filename = dialog.open();
-
- if(filename == null || filename.equals("")) return;
-
+
+ if (filename == null || filename.equals(""))
+ return;
+
if (!filename.endsWith(".html"))
filename += ".html";
outputFile = new File(filename);
@@ -789,14 +800,14 @@ public class TaskActivityEditorPart extends EditorPart {
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.getDescription() + "</a>");
} else {
writer.write(currentTask.getDescription());
}
-
- writer.write("</td><td>" + creationDateString+ "</td>");
+
+ writer.write("</td><td>" + creationDateString + "</td>");
writer.write("<td>" + completionDateString + "</td><td>" + elapsedTimeString + "</td><td>"
+ estimatedTimeString + "</td>");
writer.write("</tr>");
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/actions/ActivityReportAction.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/actions/ActivityReportAction.java
new file mode 100644
index 000000000..13b29d92a
--- /dev/null
+++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/actions/ActivityReportAction.java
@@ -0,0 +1,52 @@
+/*******************************************************************************
+ * Copyright (c) 2004 - 2006 University Of British Columbia and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * University Of British Columbia - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.mylar.internal.tasklist.ui.actions;
+
+import org.eclipse.jface.action.Action;
+import org.eclipse.jface.wizard.WizardDialog;
+import org.eclipse.mylar.internal.tasklist.planner.ui.TaskActivityWizard;
+import org.eclipse.mylar.internal.tasklist.ui.TaskListImages;
+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.mylar.tasklist.actions.report.activity";
+
+ public ActivityReportAction() {
+ super(LABEL);
+ setId(ID);
+ setText(LABEL);
+ setToolTipText(LABEL);
+ setImageDescriptor(TaskListImages.TASKLIST);
+ }
+
+ public void run() {
+ TaskActivityWizard wizard = new TaskActivityWizard();
+
+ Shell shell = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell();
+ if (wizard != null && 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/tasklist/ui/views/TaskActivityView.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/views/TaskActivityView.java
index da0664142..50836fe27 100644
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/views/TaskActivityView.java
+++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasklist/ui/views/TaskActivityView.java
@@ -21,6 +21,7 @@ import java.util.List;
import org.eclipse.jface.action.IMenuListener;
import org.eclipse.jface.action.IMenuManager;
+import org.eclipse.jface.action.IToolBarManager;
import org.eclipse.jface.action.MenuManager;
import org.eclipse.jface.action.Separator;
import org.eclipse.jface.util.IPropertyChangeListener;
@@ -38,6 +39,7 @@ import org.eclipse.jface.viewers.TreeViewer;
import org.eclipse.jface.viewers.ViewerDropAdapter;
import org.eclipse.mylar.internal.tasklist.planner.ui.ReminderCellEditor;
import org.eclipse.mylar.internal.tasklist.ui.TaskListColorsAndFonts;
+import org.eclipse.mylar.internal.tasklist.ui.actions.ActivityReportAction;
import org.eclipse.mylar.internal.tasklist.ui.actions.OpenTaskListElementAction;
import org.eclipse.mylar.provisional.tasklist.AbstractQueryHit;
import org.eclipse.mylar.provisional.tasklist.AbstractTaskContainer;
@@ -61,6 +63,7 @@ import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Menu;
import org.eclipse.swt.widgets.TreeColumn;
+import org.eclipse.ui.IActionBars;
import org.eclipse.ui.IMemento;
import org.eclipse.ui.IViewSite;
import org.eclipse.ui.IWorkbenchActionConstants;
@@ -276,8 +279,26 @@ public class TaskActivityView extends ViewPart {
initDrop();
hookOpenAction();
hookContextMenu();
+ contributeToActionBars();
}
+
+ private void contributeToActionBars() {
+ IActionBars bars = getViewSite().getActionBars();
+ fillLocalPullDown(bars.getMenuManager());
+ fillLocalToolBar(bars.getToolBarManager());
+ }
+
+ private void fillLocalPullDown(IMenuManager manager) {
+ manager.add(new ActivityReportAction());
+ manager.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS));
+ }
+
+ private void fillLocalToolBar(IToolBarManager manager) {
+ manager.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS));
+ }
+
+
private void initDrop() {
Transfer[] types = new Transfer[] { TextTransfer.getInstance() };

Back to the top