Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'org.eclipse.mylyn.tasks.bugs/src/org/eclipse/mylyn/internal/tasks/bugs/actions/NewTaskFromErrorAction.java')
-rw-r--r--org.eclipse.mylyn.tasks.bugs/src/org/eclipse/mylyn/internal/tasks/bugs/actions/NewTaskFromErrorAction.java78
1 files changed, 37 insertions, 41 deletions
diff --git a/org.eclipse.mylyn.tasks.bugs/src/org/eclipse/mylyn/internal/tasks/bugs/actions/NewTaskFromErrorAction.java b/org.eclipse.mylyn.tasks.bugs/src/org/eclipse/mylyn/internal/tasks/bugs/actions/NewTaskFromErrorAction.java
index 5f0aafe7f..9d498634f 100644
--- a/org.eclipse.mylyn.tasks.bugs/src/org/eclipse/mylyn/internal/tasks/bugs/actions/NewTaskFromErrorAction.java
+++ b/org.eclipse.mylyn.tasks.bugs/src/org/eclipse/mylyn/internal/tasks/bugs/actions/NewTaskFromErrorAction.java
@@ -15,13 +15,17 @@ package org.eclipse.mylyn.internal.tasks.bugs.actions;
import org.eclipse.jface.action.IAction;
import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.ISelectionProvider;
+import org.eclipse.jface.viewers.SelectionChangedEvent;
+import org.eclipse.jface.viewers.TreeViewer;
import org.eclipse.mylyn.internal.commons.core.ErrorReporterManager;
import org.eclipse.mylyn.internal.tasks.bugs.wizards.ErrorLogStatus;
-import org.eclipse.ui.IObjectActionDelegate;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.ui.internal.views.log.LogEntry;
-import org.eclipse.ui.internal.views.log.LogSession;
+import org.eclipse.pde.internal.runtime.logview.LogEntry;
+import org.eclipse.pde.internal.runtime.logview.LogSession;
+import org.eclipse.swt.widgets.TreeItem;
+import org.eclipse.ui.IViewActionDelegate;
+import org.eclipse.ui.IViewPart;
/**
* Creates a new task from the selected error log entry.
@@ -29,11 +33,11 @@ import org.eclipse.ui.internal.views.log.LogSession;
* @author Jeff Pound
* @author Steffen Pingel
*/
-public class NewTaskFromErrorAction implements IObjectActionDelegate {
+public class NewTaskFromErrorAction implements IViewActionDelegate, ISelectionChangedListener {
public static final String ID = "org.eclipse.mylyn.tasklist.ui.repositories.actions.create"; //$NON-NLS-1$
- private LogEntry entry;
+ private TreeViewer treeViewer;
/**
* Fills a {@link StringBuilder} with {@link LogEntry} information, optionally including subentries too
@@ -80,42 +84,29 @@ public class NewTaskFromErrorAction implements IObjectActionDelegate {
// includeChildren = true;
// }
// StringBuilder sb = new StringBuilder();
-// buildDescriptionFromLogEntry(entry, sb, true);
+// buildDescriptionFromLogEntry(entry, sb, includeChildren);
- ErrorLogStatus status = createStatus(entry);
-
- new ErrorReporterManager().fail(status);
- }
-
- private ErrorLogStatus createStatus(LogEntry entry) {
ErrorLogStatus status = new ErrorLogStatus(entry.getSeverity(), entry.getPluginId(), entry.getCode(),
entry.getMessage());
- try {
- status.setDate(entry.getDate());
- status.setStack(entry.getStack());
- LogSession session = entry.getSession();
- if (session != null) {
- status.setLogSessionData(session.getSessionData());
- }
-
- if (entry.hasChildren()) {
- Object[] children = entry.getChildren(entry);
- if (children != null) {
- for (Object child : children) {
- if (child instanceof LogEntry) {
- ErrorLogStatus childStatus = createStatus((LogEntry) child);
- status.add(childStatus);
- }
- }
- }
- }
- } catch (Exception e) {
- // ignore any errors for setting additional attributes
+ status.setDate(entry.getDate());
+ status.setStack(entry.getStack());
+ LogSession session = entry.getSession();
+ if (session != null) {
+ status.setLogSessionData(session.getSessionData());
}
- return status;
+ new ErrorReporterManager().fail(status);
}
public void run() {
+ TreeItem[] items = treeViewer.getTree().getSelection();
+ LogEntry entry = null;
+ if (items.length > 0) {
+ entry = (LogEntry) items[0].getData();
+ }
+ if (entry == null) {
+ return;
+ }
+
createTask(entry);
}
@@ -123,14 +114,19 @@ public class NewTaskFromErrorAction implements IObjectActionDelegate {
run();
}
+ public void init(IViewPart view) {
+ ISelectionProvider sp = view.getViewSite().getSelectionProvider();
+ sp.addSelectionChangedListener(this);
+ sp.setSelection(sp.getSelection());
+ }
+
public void selectionChanged(IAction action, ISelection selection) {
- Object object = ((IStructuredSelection) selection).getFirstElement();
- if (object instanceof LogEntry) {
- entry = (LogEntry) object;
- }
+ // this selection is always empty? explicitly register a listener in
+ // init() instead
}
- public void setActivePart(IAction action, IWorkbenchPart targetPart) {
+ public void selectionChanged(SelectionChangedEvent event) {
+ treeViewer = (TreeViewer) event.getSource();
}
}

Back to the top