Merge branch 'release/5.19.0'
[taxeditor.git] / eu.etaxonomy.taxeditor.store / src / main / java / eu / etaxonomy / taxeditor / ui / section / taxon / TaxonOfRelationshipElement.java
1 /**
2 * Copyright (C) 2007 EDIT
3 * European Distributed Institute of Taxonomy
4 * http://www.e-taxonomy.eu
5 *
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.
8 */
9 package eu.etaxonomy.taxeditor.ui.section.taxon;
10
11 import org.eclipse.swt.SWT;
12 import org.eclipse.swt.widgets.Display;
13
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;
24
25 public class TaxonOfRelationshipElement extends AbstractIdentifiableEntityDetailElement<Taxon> implements ISelectableElement{
26
27 private SelectionArbitrator selectionArbitrator;
28
29 private CheckboxElement checkbox_doubtful;
30
31 public TaxonOfRelationshipElement(CdmFormFactory formFactory, ICdmFormElement formElement, int style ) {
32 super(formFactory, formElement);
33 }
34
35 @Override
36 protected void handleToggleableCacheField() {
37 getEntity().setTitleCache(toggleable_cache.getText(), toggleable_cache.getState());
38 updateCacheRelevance();
39 updateToggleableCacheField();
40 }
41
42 @Override
43 public void updateToggleableCacheField() {
44 if (toggleable_cache != null){
45 if (!getEntity().isProtectedTitleCache()) {
46 toggleable_cache.setText(getEntity().generateTitle());
47 }
48 }
49 }
50
51 @Override
52 public void refresh(){
53 updateContent();
54 updateToggleableCacheField();
55 }
56
57 @Override
58 protected void updateContent() {
59 super.updateContent();
60 toggleable_cache.setEnabled(getEntity().isProtectedTitleCache());
61 updateCacheRelevance();
62 firePropertyChangeEvent(getEntity());
63 }
64
65 @Override
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);
71
72 checkbox_doubtful = formFactory.createCheckbox(this,
73 "Orginal Taxon Doubtful", getEntity().isDoubtful(), style);
74
75 if(formFactory.getSelectionProvider() != null){
76 selectionArbitrator = formFactory.createSelectionArbitrator(this);
77 }
78
79 //cache relevance
80 registerCacheRelevance(checkbox_doubtful);
81 }
82
83 @Override
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());
89 }
90 }
91
92 @Override
93 public SelectionArbitrator getSelectionArbitrator() {
94 return selectionArbitrator;
95 }
96 @Override
97 public void setWarnForReferencingObjects(ICdmFormElement formElement, int defaultReferencingObjects){
98 Taxon taxon = getEntity();
99 if (taxon.getId() != 0){
100 long referencingObjectsCount = CdmStore.getCommonService().getReferencingObjectsCount(taxon);
101
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, "");
108 }
109 }
110 }
111 }