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
.forms
.AbstractCdmFormElement
;
32 import eu
.etaxonomy
.taxeditor
.ui
.forms
.CdmFormFactory
;
33 import eu
.etaxonomy
.taxeditor
.ui
.forms
.ISelectable
;
37 * @created Apr 13, 2011
40 public class PolytomousKeyListItem
extends AbstractCdmFormElement
implements
41 IFormPart
, ISelectable
{
43 private boolean dirty
;
44 private final PolytomousKeyNode entity
;
46 private SelectionListener linkSelectionListener
;
50 * @param layoutComposite
52 protected PolytomousKeyListItem(CdmFormFactory formFactory
,
53 Composite layoutComposite
, PolytomousKeyNode entity
) {
54 super(formFactory
, layoutComposite
);
56 // layoutComposite.setBackground(Display.getDefault().getSystemColor(
59 this.entity
= (PolytomousKeyNode
) HibernateProxyHelper
.deproxy(entity
);
61 Label label_nodeNumber
= new Label(getLayoutComposite(), SWT
.NULL
);
62 label_nodeNumber
.setText(getItemNumber());
64 Label label_question
= new Label(getLayoutComposite(), SWT
.NULL
);
65 label_question
.setText(getItemQuestion());
67 Label label_statement
= new Label(getLayoutComposite(), SWT
.NULL
);
68 label_statement
.setText(getItemStatement());
69 label_statement
.setLayoutData(CdmFormFactory
.FILL_HORIZONTALLY());
71 Link link
= new Link(getLayoutComposite(), SWT
.NONE
);
72 link
.setText("<a>" + getItemLink() + "</a>");
73 link
.setData(getItemLinkData());
74 link
.addSelectionListener(getLinkSelectionListener());
76 // Label label_link = new Label(getLayoutComposite(), SWT.NULL);
77 // label_link.setText(link);
84 private SelectionListener
getLinkSelectionListener() {
85 if (linkSelectionListener
== null) {
86 linkSelectionListener
= new SelectionAdapter() {
91 * org.eclipse.swt.events.SelectionAdapter#widgetSelected(org
92 * .eclipse.swt.events.SelectionEvent)
95 public void widgetSelected(SelectionEvent e
) {
96 Object data
= e
.widget
.getData();
98 if (data
instanceof Taxon
) {
100 EditorUtil
.openTaxonBase(((Taxon
) data
).getUuid());
101 } catch (PartInitException e1
) {
102 // TODO Auto-generated catch block
103 e1
.printStackTrace();
109 return linkSelectionListener
;
112 private String
getItemNumber() {
113 if (isParentRoot()) {
116 PolytomousKeyNode parent
= getParent();
117 String itemNumber
= parent
.getNodeNumber() != null ? parent
118 .getNodeNumber().toString() : "NaN";
120 int index
= parent
.getChildren().indexOf(entity
);
122 for (int i
= 0; i
< index
; i
++) {
130 private String
getItemQuestion() {
131 if (isParentRoot()) {
134 KeyStatement question
= getParent().getQuestion();
135 return question
!= null ? question
.getLabelText(CdmStore
136 .getDefaultLanguage()) : "";
141 private String
getItemStatement() {
142 KeyStatement statement
= entity
.getStatement();
143 return statement
!= null ? CdmUtils
.Nz(statement
.getLabelText(CdmStore
144 .getDefaultLanguage())) : "No statement";
147 private String
getItemLink() {
148 String taxonString
= entity
.getTaxon() != null ? entity
.getTaxon()
149 .getName().getTitleCache() : "Taxon empty";
151 return entity
.getChildren().isEmpty() ? taxonString
: entity
152 .getNodeNumber().toString();
158 private Object
getItemLinkData() {
159 return entity
.getChildren().isEmpty() ? entity
.getTaxon() : entity
163 private PolytomousKeyNode
getParent() {
164 return entity
.getParent();
167 private boolean isParentRoot() {
168 return getParent() == null;
175 * org.eclipse.ui.forms.IFormPart#initialize(org.eclipse.ui.forms.IManagedForm
179 public void initialize(IManagedForm form
) {
180 // TODO Auto-generated method stub
187 * @see org.eclipse.ui.forms.IFormPart#isDirty()
190 public boolean isDirty() {
197 * @see org.eclipse.ui.forms.IFormPart#commit(boolean)
200 public void commit(boolean onSave
) {
201 // TODO Auto-generated method stub
208 * @see org.eclipse.ui.forms.IFormPart#setFormInput(java.lang.Object)
211 public boolean setFormInput(Object input
) {
212 // TODO Auto-generated method stub
219 * @see org.eclipse.ui.forms.IFormPart#setFocus()
222 public void setFocus() {
223 // TODO Auto-generated method stub
230 * @see org.eclipse.ui.forms.IFormPart#isStale()
233 public boolean isStale() {
234 // TODO Auto-generated method stub
241 * @see org.eclipse.ui.forms.IFormPart#refresh()
244 public void refresh() {
245 // TODO Auto-generated method stub
252 * @see org.eclipse.ui.forms.IFormPart#dispose()
255 public void dispose() {
256 // TODO Auto-generated method stub
263 public PolytomousKeyNode
getEntity() {
268 public void setSelected(boolean selected
) {
269 setBackground(selected ? SELECTED
: getPersistentBackground());