3 * Copyright (C) 2007 EDIT
4 * European Distributed Institute of Taxonomy
5 * http://www.e-taxonomy.eu
7 * The contents of this file are subject to the Mozilla Public License Version 1.1
8 * See LICENSE.TXT at the top of this package for the full license terms.
11 package eu
.etaxonomy
.taxeditor
.editor
.key
.polytomous
;
13 import org
.eclipse
.swt
.SWT
;
14 import org
.eclipse
.swt
.events
.SelectionAdapter
;
15 import org
.eclipse
.swt
.events
.SelectionEvent
;
16 import org
.eclipse
.swt
.events
.SelectionListener
;
17 import org
.eclipse
.swt
.widgets
.Composite
;
18 import org
.eclipse
.swt
.widgets
.Label
;
19 import org
.eclipse
.swt
.widgets
.Link
;
20 import org
.eclipse
.ui
.PartInitException
;
21 import org
.eclipse
.ui
.forms
.IFormPart
;
22 import org
.eclipse
.ui
.forms
.IManagedForm
;
24 import eu
.etaxonomy
.cdm
.common
.CdmUtils
;
25 import eu
.etaxonomy
.cdm
.hibernate
.HibernateProxyHelper
;
26 import eu
.etaxonomy
.cdm
.model
.description
.KeyStatement
;
27 import eu
.etaxonomy
.cdm
.model
.description
.PolytomousKeyNode
;
28 import eu
.etaxonomy
.cdm
.model
.taxon
.Taxon
;
29 import eu
.etaxonomy
.taxeditor
.editor
.EditorUtil
;
30 import eu
.etaxonomy
.taxeditor
.store
.CdmStore
;
31 import eu
.etaxonomy
.taxeditor
.ui
.element
.AbstractCdmFormElement
;
32 import eu
.etaxonomy
.taxeditor
.ui
.element
.CdmFormFactory
;
33 import eu
.etaxonomy
.taxeditor
.ui
.element
.ISelectable
;
34 import eu
.etaxonomy
.taxeditor
.ui
.element
.LayoutConstants
;
38 * @created Apr 13, 2011
41 public class PolytomousKeyListItem
extends AbstractCdmFormElement
implements
42 IFormPart
, ISelectable
{
44 private boolean dirty
;
45 private final PolytomousKeyNode entity
;
47 private SelectionListener linkSelectionListener
;
51 * @param layoutComposite
53 protected PolytomousKeyListItem(CdmFormFactory formFactory
,
54 Composite layoutComposite
, PolytomousKeyNode entity
) {
55 super(formFactory
, layoutComposite
);
57 // layoutComposite.setBackground(Display.getDefault().getSystemColor(
60 this.entity
= (PolytomousKeyNode
) HibernateProxyHelper
.deproxy(entity
);
62 Label label_nodeNumber
= new Label(getLayoutComposite(), SWT
.NULL
);
63 label_nodeNumber
.setText(getItemNumber());
65 Label label_question
= new Label(getLayoutComposite(), SWT
.NULL
);
66 label_question
.setText(getItemQuestion());
68 Label label_statement
= new Label(getLayoutComposite(), SWT
.NULL
);
69 label_statement
.setText(getItemStatement());
70 label_statement
.setLayoutData(LayoutConstants
.FILL_HORIZONTALLY());
72 Link link
= new Link(getLayoutComposite(), SWT
.NONE
);
73 link
.setText("<a>" + getItemLink() + "</a>");
74 link
.setData(getItemLinkData());
75 link
.addSelectionListener(getLinkSelectionListener());
77 // Label label_link = new Label(getLayoutComposite(), SWT.NULL);
78 // label_link.setText(link);
85 private SelectionListener
getLinkSelectionListener() {
86 if (linkSelectionListener
== null) {
87 linkSelectionListener
= new SelectionAdapter() {
92 * org.eclipse.swt.events.SelectionAdapter#widgetSelected(org
93 * .eclipse.swt.events.SelectionEvent)
96 public void widgetSelected(SelectionEvent e
) {
97 Object data
= e
.widget
.getData();
99 if (data
instanceof Taxon
) {
101 EditorUtil
.openTaxonBase(((Taxon
) data
).getUuid());
102 } catch (PartInitException e1
) {
103 // TODO Auto-generated catch block
104 e1
.printStackTrace();
110 return linkSelectionListener
;
113 private String
getItemNumber() {
114 if (isParentRoot()) {
117 PolytomousKeyNode parent
= getParent();
118 String itemNumber
= parent
.getNodeNumber() != null ? parent
119 .getNodeNumber().toString() : "NaN";
121 int index
= parent
.getChildren().indexOf(entity
);
123 for (int i
= 0; i
< index
; i
++) {
131 private String
getItemQuestion() {
132 if (isParentRoot()) {
135 KeyStatement question
= getParent().getQuestion();
136 return question
!= null ? question
.getLabelText(CdmStore
137 .getDefaultLanguage()) : "";
142 private String
getItemStatement() {
143 KeyStatement statement
= entity
.getStatement();
144 return statement
!= null ? CdmUtils
.Nz(statement
.getLabelText(CdmStore
145 .getDefaultLanguage())) : "No statement";
148 private String
getItemLink() {
149 String taxonString
= entity
.getTaxon() != null ? entity
.getTaxon()
150 .getName().getTitleCache() : "Taxon empty";
152 return entity
.getChildren().isEmpty() ? taxonString
: entity
153 .getNodeNumber().toString();
159 private Object
getItemLinkData() {
160 return entity
.getChildren().isEmpty() ? entity
.getTaxon() : entity
164 private PolytomousKeyNode
getParent() {
165 return entity
.getParent();
168 private boolean isParentRoot() {
169 return getParent() == null;
176 * org.eclipse.ui.forms.IFormPart#initialize(org.eclipse.ui.forms.IManagedForm
180 public void initialize(IManagedForm form
) {
181 // TODO Auto-generated method stub
188 * @see org.eclipse.ui.forms.IFormPart#isDirty()
191 public boolean isDirty() {
198 * @see org.eclipse.ui.forms.IFormPart#commit(boolean)
201 public void commit(boolean onSave
) {
202 // TODO Auto-generated method stub
209 * @see org.eclipse.ui.forms.IFormPart#setFormInput(java.lang.Object)
212 public boolean setFormInput(Object input
) {
213 // TODO Auto-generated method stub
220 * @see org.eclipse.ui.forms.IFormPart#setFocus()
223 public void setFocus() {
224 // TODO Auto-generated method stub
231 * @see org.eclipse.ui.forms.IFormPart#isStale()
234 public boolean isStale() {
235 // TODO Auto-generated method stub
242 * @see org.eclipse.ui.forms.IFormPart#refresh()
245 public void refresh() {
246 // TODO Auto-generated method stub
253 * @see org.eclipse.ui.forms.IFormPart#dispose()
256 public void dispose() {
257 // TODO Auto-generated method stub
264 public PolytomousKeyNode
getEntity() {
269 public void setSelected(boolean selected
) {
270 setBackground(selected ? SELECTED
: getPersistentBackground());