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 236977
Collapse All | Expand All

(-)src/org/eclipse/mylyn/internal/tasks/ui/editors/TextAttributeEditor.java (-1 / +1 lines)
Lines 51-57 Link Here
51
		} else {
51
		} else {
52
			text = toolkit.createText(parent, getValue(), SWT.FLAT);
52
			text = toolkit.createText(parent, getValue(), SWT.FLAT);
53
			text.setFont(EditorUtil.TEXT_FONT);
53
			text.setFont(EditorUtil.TEXT_FONT);
54
			text.setData(FormToolkit.KEY_DRAW_BORDER, Boolean.TRUE);
54
			text.setData(FormToolkit.KEY_DRAW_BORDER, FormToolkit.TEXT_BORDER);
55
			text.addModifyListener(new ModifyListener() {
55
			text.addModifyListener(new ModifyListener() {
56
				public void modifyText(ModifyEvent e) {
56
				public void modifyText(ModifyEvent e) {
57
					setValue(text.getText());
57
					setValue(text.getText());
(-)src/org/eclipse/mylyn/internal/tasks/ui/editors/PersonAttributeEditor.java (+88 lines)
Lines 11-19 Link Here
11
11
12
package org.eclipse.mylyn.internal.tasks.ui.editors;
12
package org.eclipse.mylyn.internal.tasks.ui.editors;
13
13
14
import org.eclipse.jface.layout.GridDataFactory;
15
import org.eclipse.mylyn.internal.provisional.commons.ui.CommonImages;
14
import org.eclipse.mylyn.tasks.core.IRepositoryPerson;
16
import org.eclipse.mylyn.tasks.core.IRepositoryPerson;
15
import org.eclipse.mylyn.tasks.core.data.TaskAttribute;
17
import org.eclipse.mylyn.tasks.core.data.TaskAttribute;
16
import org.eclipse.mylyn.tasks.core.data.TaskDataModel;
18
import org.eclipse.mylyn.tasks.core.data.TaskDataModel;
19
import org.eclipse.swt.SWT;
20
import org.eclipse.swt.events.MouseEvent;
21
import org.eclipse.swt.events.MouseTrackAdapter;
22
import org.eclipse.swt.events.MouseTrackListener;
23
import org.eclipse.swt.layout.GridData;
24
import org.eclipse.swt.layout.GridLayout;
25
import org.eclipse.swt.widgets.Composite;
26
import org.eclipse.swt.widgets.Display;
27
import org.eclipse.swt.widgets.Text;
28
import org.eclipse.ui.forms.events.HyperlinkAdapter;
29
import org.eclipse.ui.forms.events.HyperlinkEvent;
30
import org.eclipse.ui.forms.widgets.FormToolkit;
31
import org.eclipse.ui.forms.widgets.ImageHyperlink;
17
32
18
/**
33
/**
19
 * @author Steffen Pingel
34
 * @author Steffen Pingel
Lines 25-30 Link Here
25
	}
40
	}
26
41
27
	@Override
42
	@Override
43
	public Text getText() {
44
		return super.getText();
45
	}
46
47
	@Override
48
	public void createControl(Composite parent, FormToolkit toolkit) {
49
		String userName = getModel().getTaskRepository().getUserName();
50
		if (isReadOnly() || userName == null || userName.length() == 0) {
51
			super.createControl(parent, toolkit);
52
		} else {
53
			final Composite composite = new Composite(parent, SWT.NONE);
54
			GridLayout parentLayout = new GridLayout(2, false);
55
			parentLayout.marginHeight = 0;
56
			parentLayout.marginWidth = 0;
57
			parentLayout.horizontalSpacing = 0;
58
			composite.setLayout(parentLayout);
59
			composite.setData(FormToolkit.KEY_DRAW_BORDER, FormToolkit.TEXT_BORDER);
60
61
			super.createControl(composite, toolkit);
62
			getText().setData(FormToolkit.KEY_DRAW_BORDER, Boolean.FALSE);
63
			GridDataFactory.fillDefaults().grab(true, false).applyTo(getText());
64
65
			final ImageHyperlink selfLink = new ImageHyperlink(composite, SWT.NO_FOCUS);
66
			selfLink.setActiveImage(CommonImages.getImage(CommonImages.PERSON_ME));
67
			selfLink.setHoverImage(CommonImages.getImage(CommonImages.PERSON_ME));
68
			selfLink.addHyperlinkListener(new HyperlinkAdapter() {
69
				@Override
70
				public void linkActivated(HyperlinkEvent e) {
71
					String userName = getModel().getTaskRepository().getUserName();
72
					if (userName != null && userName.length() > 0) {
73
						getText().setText(userName);
74
						setValue(userName);
75
					}
76
				}
77
			});
78
			GridDataFactory.fillDefaults().applyTo(selfLink);
79
			MouseTrackListener mouseListener = new MouseTrackAdapter() {
80
				int version = 0;
81
82
				@Override
83
				public void mouseEnter(MouseEvent e) {
84
					((GridData) selfLink.getLayoutData()).exclude = false;
85
					composite.layout();
86
					selfLink.setImage(CommonImages.getImage(CommonImages.PERSON_ME));
87
					selfLink.redraw();
88
					version++;
89
				}
90
91
				@Override
92
				public void mouseExit(MouseEvent e) {
93
					final int lastVersion = version;
94
					Display.getDefault().asyncExec(new Runnable() {
95
						public void run() {
96
							if (version != lastVersion || selfLink.isDisposed()) {
97
								return;
98
							}
99
							selfLink.setImage(null);
100
							selfLink.redraw();
101
							((GridData) selfLink.getLayoutData()).exclude = true;
102
							composite.layout();
103
						}
104
					});
105
				}
106
			};
107
			getText().addMouseTrackListener(mouseListener);
108
			selfLink.addMouseTrackListener(mouseListener);
109
110
			toolkit.paintBordersFor(composite);
111
			setControl(composite);
112
		}
113
	}
114
115
	@Override
28
	public String getValue() {
116
	public String getValue() {
29
		IRepositoryPerson repositoryPerson = getAttributeMapper().getRepositoryPerson(getTaskAttribute());
117
		IRepositoryPerson repositoryPerson = getAttributeMapper().getRepositoryPerson(getTaskAttribute());
30
		if (repositoryPerson != null) {
118
		if (repositoryPerson != null) {
(-)src/org/eclipse/mylyn/internal/tasks/ui/editors/TaskEditorActionPart.java (+4 lines)
Lines 325-330 Link Here
325
			}
325
			}
326
			editorControl.setLayoutData(gd);
326
			editorControl.setLayoutData(gd);
327
327
328
			if (editor instanceof PersonAttributeEditor) {
329
				editorControl = ((PersonAttributeEditor) editor).getText();
330
			}
331
328
			// the following listeners are hooked up so that changes to something in the actions area
332
			// the following listeners are hooked up so that changes to something in the actions area
329
			// will cause the corresponding radio button to become selected.  Note that we can't just use
333
			// will cause the corresponding radio button to become selected.  Note that we can't just use
330
			// a focus listener due to bug 254806
334
			// a focus listener due to bug 254806
(-)src/org/eclipse/mylyn/tasks/ui/editors/AttributeEditorToolkit.java (-2 / +5 lines)
Lines 28-33 Link Here
28
import org.eclipse.mylyn.internal.tasks.ui.PersonProposalProvider;
28
import org.eclipse.mylyn.internal.tasks.ui.PersonProposalProvider;
29
import org.eclipse.mylyn.internal.tasks.ui.editors.EditorUtil;
29
import org.eclipse.mylyn.internal.tasks.ui.editors.EditorUtil;
30
import org.eclipse.mylyn.internal.tasks.ui.editors.Messages;
30
import org.eclipse.mylyn.internal.tasks.ui.editors.Messages;
31
import org.eclipse.mylyn.internal.tasks.ui.editors.PersonAttributeEditor;
31
import org.eclipse.mylyn.internal.tasks.ui.editors.RichTextAttributeEditor;
32
import org.eclipse.mylyn.internal.tasks.ui.editors.RichTextAttributeEditor;
32
import org.eclipse.mylyn.internal.tasks.ui.editors.RepositoryTextViewerConfiguration.Mode;
33
import org.eclipse.mylyn.internal.tasks.ui.editors.RepositoryTextViewerConfiguration.Mode;
33
import org.eclipse.mylyn.tasks.core.data.TaskAttribute;
34
import org.eclipse.mylyn.tasks.core.data.TaskAttribute;
Lines 73-80 Link Here
73
	}
74
	}
74
75
75
	public void adapt(AbstractAttributeEditor editor) {
76
	public void adapt(AbstractAttributeEditor editor) {
76
		if (editor.getControl() instanceof Text || editor.getControl() instanceof CCombo) {
77
		if (editor.getControl() instanceof Text || editor.getControl() instanceof CCombo
77
			Control control = editor.getControl();
78
				|| editor instanceof PersonAttributeEditor) {
79
			Control control = (editor instanceof PersonAttributeEditor) ? ((PersonAttributeEditor) editor).getText()
80
					: editor.getControl();
78
			if (!editor.isReadOnly() && hasContentAssist(editor.getTaskAttribute())) {
81
			if (!editor.isReadOnly() && hasContentAssist(editor.getTaskAttribute())) {
79
				IContentProposalProvider contentProposalProvider = createContentProposalProvider(editor.getTaskAttribute());
82
				IContentProposalProvider contentProposalProvider = createContentProposalProvider(editor.getTaskAttribute());
80
				ILabelProvider labelPropsalProvider = createLabelProposalProvider(editor.getTaskAttribute());
83
				ILabelProvider labelPropsalProvider = createLabelProposalProvider(editor.getTaskAttribute());

Return to bug 236977