Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.
View | Details | Raw Unified | Return to bug 250869 | Differences between
and this patch

Collapse All | Expand All

(-)src/org/eclipse/mylyn/internal/context/ui/wizards/ContextRetrieveWizardPage.java (-27 / +95 lines)
Lines 11-24 Link Here
11
11
12
package org.eclipse.mylyn.internal.context.ui.wizards;
12
package org.eclipse.mylyn.internal.context.ui.wizards;
13
13
14
import com.ibm.icu.text.DateFormat;
15
import java.util.Collections;
14
import java.util.Collections;
16
import java.util.Comparator;
15
import java.util.Comparator;
17
import java.util.Date;
16
import java.util.Date;
18
import java.util.List;
17
import java.util.List;
19
18
20
import org.eclipse.jface.dialogs.Dialog;
19
import org.eclipse.jface.dialogs.Dialog;
20
import org.eclipse.jface.dialogs.IDialogConstants;
21
import org.eclipse.jface.layout.GridDataFactory;
21
import org.eclipse.jface.wizard.WizardPage;
22
import org.eclipse.jface.wizard.WizardPage;
23
import org.eclipse.mylyn.context.core.ContextCore;
22
import org.eclipse.mylyn.internal.tasks.ui.util.AttachmentUtil;
24
import org.eclipse.mylyn.internal.tasks.ui.util.AttachmentUtil;
23
import org.eclipse.mylyn.tasks.core.IRepositoryPerson;
25
import org.eclipse.mylyn.tasks.core.IRepositoryPerson;
24
import org.eclipse.mylyn.tasks.core.ITask;
26
import org.eclipse.mylyn.tasks.core.ITask;
Lines 31-44 Link Here
31
import org.eclipse.swt.events.MouseListener;
33
import org.eclipse.swt.events.MouseListener;
32
import org.eclipse.swt.events.SelectionAdapter;
34
import org.eclipse.swt.events.SelectionAdapter;
33
import org.eclipse.swt.events.SelectionEvent;
35
import org.eclipse.swt.events.SelectionEvent;
36
import org.eclipse.swt.graphics.Image;
37
import org.eclipse.swt.layout.FillLayout;
34
import org.eclipse.swt.layout.GridData;
38
import org.eclipse.swt.layout.GridData;
35
import org.eclipse.swt.layout.GridLayout;
39
import org.eclipse.swt.layout.GridLayout;
36
import org.eclipse.swt.widgets.Composite;
40
import org.eclipse.swt.widgets.Composite;
41
import org.eclipse.swt.widgets.Control;
42
import org.eclipse.swt.widgets.Label;
43
import org.eclipse.swt.widgets.Link;
37
import org.eclipse.swt.widgets.Table;
44
import org.eclipse.swt.widgets.Table;
38
import org.eclipse.swt.widgets.TableColumn;
45
import org.eclipse.swt.widgets.TableColumn;
39
import org.eclipse.swt.widgets.TableItem;
46
import org.eclipse.swt.widgets.TableItem;
40
import org.eclipse.swt.widgets.Text;
47
import org.eclipse.swt.widgets.Text;
41
48
49
import com.ibm.icu.text.DateFormat;
50
42
/**
51
/**
43
 * @author Rob Elves
52
 * @author Rob Elves
44
 * @author Mik Kersten
53
 * @author Mik Kersten
Lines 54-59 Link Here
54
63
55
	private ITaskAttachment selectedContextAttachment;
64
	private ITaskAttachment selectedContextAttachment;
56
65
66
	private List<ITaskAttachment> contextAttachments;
67
68
	private class TaskAttachmentComparator implements Comparator<ITaskAttachment> {
69
		public int compare(ITaskAttachment attachment1, ITaskAttachment attachment2) {
70
			Date created1 = null;
71
			Date created2 = null;
72
			created1 = attachment1.getCreationDate();
73
			created2 = attachment2.getCreationDate();
74
			if (created1 != null && created2 != null) {
75
				return (-1) * created1.compareTo(created2);
76
			} else if (created1 == null && created2 != null) {
77
				return 1;
78
			} else if (created1 != null && created2 == null) {
79
				return -1;
80
			} else {
81
				return 0;
82
			}
83
		}
84
	}
85
57
	protected ContextRetrieveWizardPage(TaskRepository repository, ITask task) {
86
	protected ContextRetrieveWizardPage(TaskRepository repository, ITask task) {
58
		super(Messages.ContextRetrieveWizardPage_Select_context);
87
		super(Messages.ContextRetrieveWizardPage_Select_context);
59
		this.repository = repository;
88
		this.repository = repository;
Lines 63-74 Link Here
63
	}
92
	}
64
93
65
	public void createControl(Composite parent) {
94
	public void createControl(Composite parent) {
95
		contextAttachments = AttachmentUtil.getContextAttachments(repository, task);
96
		Collections.sort(contextAttachments, new TaskAttachmentComparator());
97
98
		final Composite composite = new Composite(parent, SWT.NONE);
99
		composite.setLayout(new FillLayout());
100
101
		boolean hasLocalContext = ContextCore.getContextManager().hasContext(task.getHandleIdentifier());
102
		if (!hasLocalContext && contextAttachments.size() > 0) {
103
			selectedContextAttachment = contextAttachments.get(0);
104
			setMessage("Select a context to activate task");
105
			createMessageControl(composite, "No local task context exists. Retrieve latest from repository?");
106
		} else {
107
			createTableControl(composite);
108
		}
109
110
		setControl(composite);
111
		Dialog.applyDialogFont(composite);
112
	}
113
114
	public void createMessageControl(final Composite parent, String message) {
115
		final Composite composite = new Composite(parent, SWT.NONE);
116
		composite.setLayout(new GridLayout(2, false));
117
118
		Image image = getShell().getDisplay().getSystemImage(SWT.ICON_QUESTION);
119
		if (image != null) {
120
			Label imageLabel = new Label(composite, SWT.NULL);
121
			image.setBackground(imageLabel.getBackground());
122
			imageLabel.setImage(image);
123
			GridDataFactory.fillDefaults().align(SWT.CENTER, SWT.BEGINNING).applyTo(imageLabel);
124
		}
125
		// create message
126
		if (message != null) {
127
			Label messageLabel = new Label(composite, SWT.WRAP);
128
			messageLabel.setText(message);
129
			GridData data = GridDataFactory.fillDefaults().align(SWT.FILL, SWT.BEGINNING).grab(true, false).hint(
130
					convertHorizontalDLUsToPixels(IDialogConstants.MINIMUM_MESSAGE_AREA_WIDTH), SWT.DEFAULT).create();
131
			if (image == null) {
132
				data.horizontalSpan = 2;
133
			}
134
			messageLabel.setData(data);
135
		}
136
137
		Link hyperlink = new Link(composite, SWT.NONE);
138
		hyperlink.setText("<a>Select from History</a>");
139
		hyperlink.addSelectionListener(new SelectionAdapter() {
140
			@Override
141
			public void widgetSelected(SelectionEvent e) {
142
				Control[] children = parent.getChildren();
143
				for (Control control : children) {
144
					control.dispose();
145
				}
146
				createTableControl(parent);
147
				getShell().pack();
148
			}
149
		});
150
		GridDataFactory.fillDefaults().span(2, 1).indent(0, 15).applyTo(hyperlink);
151
	}
152
153
	public Composite createTableControl(Composite parent) {
66
		Composite composite = new Composite(parent, SWT.NONE);
154
		Composite composite = new Composite(parent, SWT.NONE);
67
		composite.setLayout(new GridLayout(1, false));
155
		composite.setLayout(new GridLayout(1, false));
68
156
69
		Text summary = new Text(composite, SWT.NONE);
157
		Text summary = new Text(composite, SWT.WRAP);
70
		summary.setText(NLS.bind(Messages.ContextRetrieveWizardPage_Task, labelProvider.getText(task)));
158
		summary.setText(NLS.bind(Messages.ContextRetrieveWizardPage_Task, labelProvider.getText(task)));
71
		summary.setEditable(false);
159
		summary.setEditable(false);
160
		summary.setBackground(null);
161
		GridDataFactory.fillDefaults().align(SWT.FILL, SWT.BEGINNING).grab(true, false).hint(
162
				convertHorizontalDLUsToPixels(IDialogConstants.MINIMUM_MESSAGE_AREA_WIDTH), SWT.DEFAULT).applyTo(
163
				summary);
72
		// new Label(composite, SWT.NONE).setText("Repository: " +
164
		// new Label(composite, SWT.NONE).setText("Repository: " +
73
		// repository.getUrl());
165
		// repository.getUrl());
74
		// new Label(composite, SWT.NONE).setText("Select context below:");
166
		// new Label(composite, SWT.NONE).setText("Select context below:");
Lines 106-134 Link Here
106
198
107
		});
199
		});
108
200
109
		List<ITaskAttachment> contextAttachments = AttachmentUtil.getContextAttachments(repository, task);
110
111
		Collections.sort(contextAttachments, new Comparator<ITaskAttachment>() {
112
113
			public int compare(ITaskAttachment attachment1, ITaskAttachment attachment2) {
114
115
				Date created1 = null;
116
				Date created2 = null;
117
				created1 = attachment1.getCreationDate();
118
				created2 = attachment2.getCreationDate();
119
				if (created1 != null && created2 != null) {
120
					return (-1) * created1.compareTo(created2);
121
				} else if (created1 == null && created2 != null) {
122
					return 1;
123
				} else if (created1 != null && created2 == null) {
124
					return -1;
125
				} else {
126
					return 0;
127
				}
128
			}
129
130
		});
131
132
		TableColumn[] columns = new TableColumn[3];
201
		TableColumn[] columns = new TableColumn[3];
133
		columns[0] = new TableColumn(contextTable, SWT.LEFT);
202
		columns[0] = new TableColumn(contextTable, SWT.LEFT);
134
		columns[0].setText(Messages.ContextRetrieveWizardPage_Date);
203
		columns[0].setText(Messages.ContextRetrieveWizardPage_Date);
Lines 153-166 Link Here
153
		}
222
		}
154
223
155
		contextTable.setLayoutData(new GridData(GridData.FILL_BOTH));
224
		contextTable.setLayoutData(new GridData(GridData.FILL_BOTH));
156
		setControl(composite);
157
		if (contextAttachments.size() > 0) {
225
		if (contextAttachments.size() > 0) {
158
			contextTable.setSelection(0);
226
			contextTable.setSelection(0);
159
			selectedContextAttachment = contextAttachments.get(0);
227
			selectedContextAttachment = contextAttachments.get(0);
160
			getWizard().getContainer().updateButtons();
228
			getWizard().getContainer().updateButtons();
161
		}
229
		}
162
		contextTable.setFocus();
230
		contextTable.setFocus();
163
		Dialog.applyDialogFont(composite);
231
		return composite;
164
	}
232
	}
165
233
166
	public ITaskAttachment getSelectedContext() {
234
	public ITaskAttachment getSelectedContext() {
(-)src/org/eclipse/mylyn/internal/context/ui/actions/ContextClearAction.java (-4 / +3 lines)
Lines 15-26 Link Here
15
import org.eclipse.jface.dialogs.MessageDialog;
15
import org.eclipse.jface.dialogs.MessageDialog;
16
import org.eclipse.mylyn.context.core.ContextCore;
16
import org.eclipse.mylyn.context.core.ContextCore;
17
import org.eclipse.mylyn.internal.context.ui.commands.ClearContextHandler;
17
import org.eclipse.mylyn.internal.context.ui.commands.ClearContextHandler;
18
import org.eclipse.mylyn.internal.provisional.commons.ui.WorkbenchUtil;
18
import org.eclipse.mylyn.internal.tasks.ui.util.TasksUiInternal;
19
import org.eclipse.mylyn.internal.tasks.ui.util.TasksUiInternal;
19
import org.eclipse.mylyn.internal.tasks.ui.views.TaskListView;
20
import org.eclipse.mylyn.internal.tasks.ui.views.TaskListView;
20
import org.eclipse.mylyn.tasks.core.ITask;
21
import org.eclipse.mylyn.tasks.core.ITask;
21
import org.eclipse.mylyn.tasks.ui.TasksUiImages;
22
import org.eclipse.mylyn.tasks.ui.TasksUiImages;
22
import org.eclipse.ui.IViewPart;
23
import org.eclipse.ui.IViewPart;
23
import org.eclipse.ui.PlatformUI;
24
24
25
/**
25
/**
26
 * @author Mik Kersten
26
 * @author Mik Kersten
Lines 58-66 Link Here
58
	}
58
	}
59
59
60
	public boolean run(ITask task) {
60
	public boolean run(ITask task) {
61
		boolean deleteConfirmed = MessageDialog.openQuestion(PlatformUI.getWorkbench()
61
		boolean deleteConfirmed = MessageDialog.openQuestion(WorkbenchUtil.getShell(),
62
				.getActiveWorkbenchWindow()
62
				Messages.ContextClearAction_Confirm_clear_context,
63
				.getShell(), Messages.ContextClearAction_Confirm_clear_context,
64
				Messages.ContextClearAction_Clear_the_context_for_the_selected_task);
63
				Messages.ContextClearAction_Clear_the_context_for_the_selected_task);
65
		if (!deleteConfirmed) {
64
		if (!deleteConfirmed) {
66
			return false;
65
			return false;
(-)src/org/eclipse/mylyn/internal/context/ui/actions/ContextRetrieveAction.java (-11 / +7 lines)
Lines 19-33 Link Here
19
import org.eclipse.mylyn.internal.context.ui.commands.RetrieveContextAttachmentHandler;
19
import org.eclipse.mylyn.internal.context.ui.commands.RetrieveContextAttachmentHandler;
20
import org.eclipse.mylyn.internal.context.ui.commands.RetrieveContextHandler;
20
import org.eclipse.mylyn.internal.context.ui.commands.RetrieveContextHandler;
21
import org.eclipse.mylyn.internal.context.ui.wizards.ContextRetrieveWizard;
21
import org.eclipse.mylyn.internal.context.ui.wizards.ContextRetrieveWizard;
22
import org.eclipse.mylyn.internal.provisional.commons.ui.WorkbenchUtil;
22
import org.eclipse.mylyn.internal.tasks.core.AbstractTask;
23
import org.eclipse.mylyn.internal.tasks.core.AbstractTask;
23
import org.eclipse.mylyn.internal.tasks.ui.util.AttachmentUtil;
24
import org.eclipse.mylyn.internal.tasks.ui.util.AttachmentUtil;
24
import org.eclipse.mylyn.internal.tasks.ui.views.TaskListView;
25
import org.eclipse.mylyn.internal.tasks.ui.views.TaskListView;
25
import org.eclipse.mylyn.tasks.core.ITask;
26
import org.eclipse.mylyn.tasks.core.ITask;
26
import org.eclipse.mylyn.tasks.ui.TasksUiImages;
27
import org.eclipse.mylyn.tasks.ui.TasksUiImages;
27
import org.eclipse.swt.widgets.Shell;
28
import org.eclipse.ui.IViewActionDelegate;
28
import org.eclipse.ui.IViewActionDelegate;
29
import org.eclipse.ui.IViewPart;
29
import org.eclipse.ui.IViewPart;
30
import org.eclipse.ui.PlatformUI;
31
30
32
/**
31
/**
33
 * @author Mik Kersten
32
 * @author Mik Kersten
Lines 67-81 Link Here
67
66
68
	public void run(ITask task) {
67
	public void run(ITask task) {
69
		ContextRetrieveWizard wizard = new ContextRetrieveWizard(task);
68
		ContextRetrieveWizard wizard = new ContextRetrieveWizard(task);
70
		Shell shell = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell();
69
		WizardDialog dialog = new WizardDialog(WorkbenchUtil.getShell(), wizard);
71
		if (shell != null && !shell.isDisposed()) {
70
		dialog.create();
72
			WizardDialog dialog = new WizardDialog(shell, wizard);
71
		dialog.setBlockOnOpen(true);
73
			dialog.create();
72
		if (dialog.open() == Window.CANCEL) {
74
			dialog.setBlockOnOpen(true);
73
			dialog.close();
75
			if (dialog.open() == Window.CANCEL) {
74
			return;
76
				dialog.close();
77
				return;
78
			}
79
		}
75
		}
80
	}
76
	}
81
77
(-)src/org/eclipse/mylyn/internal/context/ui/actions/ContextAttachAction.java (-13 / +8 lines)
Lines 20-35 Link Here
20
import org.eclipse.mylyn.context.core.ContextCore;
20
import org.eclipse.mylyn.context.core.ContextCore;
21
import org.eclipse.mylyn.internal.context.ui.commands.AttachContextHandler;
21
import org.eclipse.mylyn.internal.context.ui.commands.AttachContextHandler;
22
import org.eclipse.mylyn.internal.context.ui.wizards.ContextAttachWizard;
22
import org.eclipse.mylyn.internal.context.ui.wizards.ContextAttachWizard;
23
import org.eclipse.mylyn.internal.provisional.commons.ui.WorkbenchUtil;
23
import org.eclipse.mylyn.internal.tasks.core.AbstractTask;
24
import org.eclipse.mylyn.internal.tasks.core.AbstractTask;
24
import org.eclipse.mylyn.internal.tasks.ui.util.AttachmentUtil;
25
import org.eclipse.mylyn.internal.tasks.ui.util.AttachmentUtil;
25
import org.eclipse.mylyn.internal.tasks.ui.views.TaskListView;
26
import org.eclipse.mylyn.internal.tasks.ui.views.TaskListView;
26
import org.eclipse.mylyn.tasks.core.ITask;
27
import org.eclipse.mylyn.tasks.core.ITask;
27
import org.eclipse.mylyn.tasks.core.ITask.SynchronizationState;
28
import org.eclipse.mylyn.tasks.core.ITask.SynchronizationState;
28
import org.eclipse.mylyn.tasks.ui.TasksUiImages;
29
import org.eclipse.mylyn.tasks.ui.TasksUiImages;
29
import org.eclipse.swt.widgets.Shell;
30
import org.eclipse.ui.IViewActionDelegate;
30
import org.eclipse.ui.IViewActionDelegate;
31
import org.eclipse.ui.IViewPart;
31
import org.eclipse.ui.IViewPart;
32
import org.eclipse.ui.PlatformUI;
33
32
34
/**
33
/**
35
 * @author Mik Kersten
34
 * @author Mik Kersten
Lines 71-92 Link Here
71
70
72
	public void run(ITask task) {
71
	public void run(ITask task) {
73
		if (task.getSynchronizationState() != SynchronizationState.SYNCHRONIZED) {
72
		if (task.getSynchronizationState() != SynchronizationState.SYNCHRONIZED) {
74
			MessageDialog.openInformation(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(),
73
			MessageDialog.openInformation(WorkbenchUtil.getShell(), Messages.ContextAttachAction_Context_Attachment,
75
					Messages.ContextAttachAction_Context_Attachment,
76
					Messages.ContextAttachAction_Task_must_be_synchronized_before_attaching_context);
74
					Messages.ContextAttachAction_Task_must_be_synchronized_before_attaching_context);
77
			return;
75
			return;
78
		}
76
		}
79
77
80
		ContextAttachWizard wizard = new ContextAttachWizard(task);
78
		ContextAttachWizard wizard = new ContextAttachWizard(task);
81
		Shell shell = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell();
79
		WizardDialog dialog = new WizardDialog(WorkbenchUtil.getShell(), wizard);
82
		if (shell != null && !shell.isDisposed()) {
80
		dialog.create();
83
			WizardDialog dialog = new WizardDialog(shell, wizard);
81
		dialog.setBlockOnOpen(true);
84
			dialog.create();
82
		if (dialog.open() == Window.CANCEL) {
85
			dialog.setBlockOnOpen(true);
83
			dialog.close();
86
			if (dialog.open() == Window.CANCEL) {
84
			return;
87
				dialog.close();
88
				return;
89
			}
90
		}
85
		}
91
	}
86
	}
92
87
(-)src/org/eclipse/mylyn/internal/context/ui/ContextUiPlugin.java (-8 / +15 lines)
Lines 30-42 Link Here
30
import org.eclipse.core.runtime.IStatus;
30
import org.eclipse.core.runtime.IStatus;
31
import org.eclipse.core.runtime.Platform;
31
import org.eclipse.core.runtime.Platform;
32
import org.eclipse.core.runtime.Status;
32
import org.eclipse.core.runtime.Status;
33
import org.eclipse.jface.dialogs.MessageDialog;
34
import org.eclipse.jface.preference.IPreferenceStore;
33
import org.eclipse.jface.preference.IPreferenceStore;
35
import org.eclipse.jface.resource.ImageDescriptor;
34
import org.eclipse.jface.resource.ImageDescriptor;
36
import org.eclipse.jface.text.TextSelection;
35
import org.eclipse.jface.text.TextSelection;
37
import org.eclipse.jface.viewers.ILabelProvider;
36
import org.eclipse.jface.viewers.ILabelProvider;
38
import org.eclipse.jface.viewers.TreeViewer;
37
import org.eclipse.jface.viewers.TreeViewer;
39
import org.eclipse.jface.viewers.ViewerFilter;
38
import org.eclipse.jface.viewers.ViewerFilter;
39
import org.eclipse.jface.wizard.WizardDialog;
40
import org.eclipse.mylyn.commons.core.CoreUtil;
40
import org.eclipse.mylyn.commons.core.CoreUtil;
41
import org.eclipse.mylyn.commons.core.StatusHandler;
41
import org.eclipse.mylyn.commons.core.StatusHandler;
42
import org.eclipse.mylyn.context.core.AbstractContextListener;
42
import org.eclipse.mylyn.context.core.AbstractContextListener;
Lines 47-53 Link Here
47
import org.eclipse.mylyn.context.core.IInteractionRelation;
47
import org.eclipse.mylyn.context.core.IInteractionRelation;
48
import org.eclipse.mylyn.context.ui.AbstractContextUiBridge;
48
import org.eclipse.mylyn.context.ui.AbstractContextUiBridge;
49
import org.eclipse.mylyn.context.ui.IContextUiStartup;
49
import org.eclipse.mylyn.context.ui.IContextUiStartup;
50
import org.eclipse.mylyn.internal.context.ui.wizards.ContextRetrieveWizard;
50
import org.eclipse.mylyn.internal.monitor.ui.MonitorUiPlugin;
51
import org.eclipse.mylyn.internal.monitor.ui.MonitorUiPlugin;
52
import org.eclipse.mylyn.internal.provisional.commons.ui.WorkbenchUtil;
51
import org.eclipse.mylyn.monitor.ui.MonitorUi;
53
import org.eclipse.mylyn.monitor.ui.MonitorUi;
52
import org.eclipse.mylyn.tasks.core.ITask;
54
import org.eclipse.mylyn.tasks.core.ITask;
53
import org.eclipse.mylyn.tasks.core.ITaskActivationListener;
55
import org.eclipse.mylyn.tasks.core.ITaskActivationListener;
Lines 196-208 Link Here
196
			boolean hasLocalContext = ContextCore.getContextManager().hasContext(task.getHandleIdentifier());
198
			boolean hasLocalContext = ContextCore.getContextManager().hasContext(task.getHandleIdentifier());
197
			if (!hasLocalContext) {
199
			if (!hasLocalContext) {
198
				if (org.eclipse.mylyn.internal.tasks.ui.util.AttachmentUtil.hasContextAttachment(task)) {
200
				if (org.eclipse.mylyn.internal.tasks.ui.util.AttachmentUtil.hasContextAttachment(task)) {
199
					boolean getRemote = MessageDialog.openQuestion(PlatformUI.getWorkbench()
201
//					boolean result = MessageDialog.openQuestion(WorkbenchUtil.getShell(),
200
							.getActiveWorkbenchWindow()
202
//							Messages.ContextUiPlugin_Task_Activation,
201
							.getShell(), Messages.ContextUiPlugin_Task_Activation,
203
//							Messages.ContextUiPlugin_No_local_task_context_exists);
202
							Messages.ContextUiPlugin_No_local_task_context_exists);
204
//					if (result) {
203
					if (getRemote) {
205
					ContextRetrieveWizard wizard = new ContextRetrieveWizard(task);
204
						new org.eclipse.mylyn.internal.context.ui.actions.ContextRetrieveAction().run(task);
206
					WizardDialog dialog = new WizardDialog(WorkbenchUtil.getShell(), wizard);
205
					}
207
					dialog.create();
208
					dialog.setBlockOnOpen(true);
209
					dialog.open();
210
211
//					new org.eclipse.mylyn.internal.context.ui.actions.ContextRetrieveAction().run(task);
212
//					}
206
				}
213
				}
207
			}
214
			}
208
		}
215
		}

Return to bug 250869