|
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) { |