2541c85bd437284f6360dc746fc2f784b4e75b1e
[taxeditor.git] / eu.etaxonomy.taxeditor.store / src / main / java / eu / etaxonomy / taxeditor / ui / section / AbstractIdentifiableEntityDetailElement.java
1 /**
2 *
3 */
4 package eu.etaxonomy.taxeditor.ui.section;
5
6 import java.util.Arrays;
7 import java.util.EnumSet;
8
9 import eu.etaxonomy.cdm.model.common.CdmBase;
10 import eu.etaxonomy.cdm.model.common.IIdentifiableEntity;
11 import eu.etaxonomy.cdm.persistence.hibernate.permission.CRUD;
12 import eu.etaxonomy.taxeditor.store.CdmStore;
13 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
14 import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
15 import eu.etaxonomy.taxeditor.ui.element.ToggleableTextElement;
16
17 /**
18 * @author n.hoffmann
19 *
20 */
21 public abstract class AbstractIdentifiableEntityDetailElement<T extends IIdentifiableEntity> extends
22 AbstractCdmDetailElement<T> {
23
24 /**
25 *
26 */
27 private static final EnumSet<CRUD> UPDATE = EnumSet.of(CRUD.UPDATE);
28 protected ToggleableTextElement toggleable_cache;
29
30 public AbstractIdentifiableEntityDetailElement(CdmFormFactory formFactory, ICdmFormElement formElement) {
31 super(formFactory, formElement);
32 updateToggleableCacheState();
33
34 }
35
36 public void updateToggleableCacheField() {
37 if (!getEntity().isProtectedTitleCache()) {
38 toggleable_cache.setText(getEntity().generateTitle());
39 }
40 }
41
42 protected void handleToggleableCacheField() {
43 boolean pushedState = toggleable_cache.getState();
44
45 getEntity().setTitleCache(toggleable_cache.getText(), pushedState);
46 setIrrelevant(pushedState, Arrays.asList(new Object[] { toggleable_cache }));
47 updateToggleableCacheField();
48 }
49
50
51 @Override
52 protected void updateControlStates(){
53 super.updateControlStates();
54 updateToggleableCacheState();
55 }
56
57
58 private void updateToggleableCacheState() {
59 if(toggleable_cache != null){
60 toggleable_cache.setEnabled(getEntity() != null && CdmStore.currentAuthentiationHasPermission((CdmBase) getEntity(), UPDATE));
61 }
62 }
63
64 }