2 * Copyright (C) 2007 EDIT
3 * European Distributed Institute of Taxonomy
4 * http://www.e-taxonomy.eu
6 * The contents of this file are subject to the Mozilla Public License Version 1.1
7 * See LICENSE.TXT at the top of this package for the full license terms.
9 package eu
.etaxonomy
.taxeditor
.ui
.section
.taxon
;
11 import org
.eclipse
.swt
.SWT
;
12 import org
.eclipse
.swt
.widgets
.Display
;
14 import eu
.etaxonomy
.cdm
.common
.CdmUtils
;
15 import eu
.etaxonomy
.cdm
.model
.taxon
.Taxon
;
16 import eu
.etaxonomy
.taxeditor
.store
.CdmStore
;
17 import eu
.etaxonomy
.taxeditor
.ui
.element
.CdmFormFactory
;
18 import eu
.etaxonomy
.taxeditor
.ui
.element
.CheckboxElement
;
19 import eu
.etaxonomy
.taxeditor
.ui
.element
.ICdmFormElement
;
20 import eu
.etaxonomy
.taxeditor
.ui
.element
.ISelectableElement
;
21 import eu
.etaxonomy
.taxeditor
.ui
.element
.LayoutConstants
;
22 import eu
.etaxonomy
.taxeditor
.ui
.element
.SelectionArbitrator
;
23 import eu
.etaxonomy
.taxeditor
.ui
.section
.AbstractIdentifiableEntityDetailElement
;
25 public class TaxonOfRelationshipElement
extends AbstractIdentifiableEntityDetailElement
<Taxon
> implements ISelectableElement
{
27 private SelectionArbitrator selectionArbitrator
;
29 private CheckboxElement checkbox_doubtful
;
31 public TaxonOfRelationshipElement(CdmFormFactory formFactory
, ICdmFormElement formElement
, int style
) {
32 super(formFactory
, formElement
);
36 protected void handleToggleableCacheField() {
37 getEntity().setTitleCache(toggleable_cache
.getText(), toggleable_cache
.getState());
38 updateCacheRelevance();
39 updateToggleableCacheField();
43 public void updateToggleableCacheField() {
44 if (toggleable_cache
!= null){
45 if (!getEntity().isProtectedTitleCache()) {
46 toggleable_cache
.setText(getEntity().generateTitle());
52 public void refresh(){
54 updateToggleableCacheField();
58 protected void updateContent() {
59 super.updateContent();
60 toggleable_cache
.setEnabled(getEntity().isProtectedTitleCache());
61 updateCacheRelevance();
62 firePropertyChangeEvent(getEntity());
66 protected void createControls(ICdmFormElement formElement
, Taxon entity
, int style
) {
67 this.setWarnForReferencingObjects(formElement
, 2);
68 toggleable_cache
= formFactory
.createToggleableTextField(this,
69 "Title Cache", getEntity().getTitleCache(),
70 getEntity().isProtectedTitleCache(), style
);
72 checkbox_doubtful
= formFactory
.createCheckbox(this,
73 "Orginal Taxon Doubtful", getEntity().isDoubtful(), style
);
75 if(formFactory
.getSelectionProvider() != null){
76 selectionArbitrator
= formFactory
.createSelectionArbitrator(this);
80 registerCacheRelevance(checkbox_doubtful
);
84 public void handleEvent(Object eventSource
) {
85 if (eventSource
== toggleable_cache
) {
86 handleToggleableCacheField();
87 } else if (eventSource
== checkbox_doubtful
) {
88 getEntity().setDoubtful(checkbox_doubtful
.getSelection());
93 public SelectionArbitrator
getSelectionArbitrator() {
94 return selectionArbitrator
;
97 public void setWarnForReferencingObjects(ICdmFormElement formElement
, int defaultReferencingObjects
){
98 Taxon taxon
= getEntity();
99 if (taxon
.getId() != 0){
100 long referencingObjectsCount
= CdmStore
.getCommonService().getReferencingObjectsCount(taxon
);
102 if (referencingObjectsCount
> defaultReferencingObjects
){
103 setWarnForReferencedObjects(formFactory
.createLabel(formElement
, CdmUtils
.Nz("The "+ taxon
.getUserFriendlyTypeName()+" is referenced by " + (referencingObjectsCount
- defaultReferencingObjects
)+ " other object(s), if you change it, it is changed for all these objects")));
104 getWarnForReferencedObjects().setBackground(Display
.getCurrent().getSystemColor(SWT
.COLOR_RED
));
105 getWarnForReferencedObjects().setLayout(LayoutConstants
.FILL(2, 3));
106 getWarnForReferencedObjects().setForeground(Display
.getCurrent().getSystemColor(SWT
.COLOR_RED
));
107 formFactory
.createLabel(formElement
, "");