1f6abee77612b4c17b154ecd1e5e91f3261bfbc8
[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 import java.util.Observable;
9 import java.util.Observer;
10
11 import eu.etaxonomy.cdm.model.common.CdmBase;
12 import eu.etaxonomy.cdm.model.common.IIdentifiableEntity;
13 import eu.etaxonomy.cdm.persistence.hibernate.permission.CRUD;
14 import eu.etaxonomy.taxeditor.store.CdmStore;
15 import eu.etaxonomy.taxeditor.store.LoginManager;
16 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
17 import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
18 import eu.etaxonomy.taxeditor.ui.element.ToggleableTextElement;
19
20 /**
21 * @author n.hoffmann
22 *
23 */
24 public abstract class AbstractIdentifiableEntityDetailElement<T extends IIdentifiableEntity> extends
25 AbstractCdmDetailElement<T> implements Observer {
26
27 /**
28 *
29 */
30 private static final EnumSet<CRUD> UPDATE = EnumSet.of(CRUD.UPDATE);
31 protected ToggleableTextElement toggleable_cache;
32
33 public AbstractIdentifiableEntityDetailElement(CdmFormFactory formFactory, ICdmFormElement formElement) {
34 super(formFactory, formElement);
35 updateToggleableCacheState();
36
37 }
38
39 public void updateToggleableCacheField() {
40 if (!getEntity().isProtectedTitleCache()) {
41 toggleable_cache.setText(getEntity().generateTitle());
42 }
43 }
44
45 protected void handleToggleableCacheField() {
46 boolean pushedState = toggleable_cache.getState();
47
48 getEntity().setTitleCache(toggleable_cache.getText(), pushedState);
49 setIrrelevant(pushedState, Arrays.asList(new Object[] { toggleable_cache }));
50 updateToggleableCacheField();
51 }
52
53 /* (non-Javadoc)
54 * @see java.util.Observer#update(java.util.Observable, java.lang.Object)
55 */
56 @Override
57 public void update(Observable o, Object arg){
58 if(o instanceof LoginManager){
59 updateToggleableCacheState();
60 }
61 }
62
63
64 private void updateToggleableCacheState() {
65 if(toggleable_cache != null){
66 toggleable_cache.setEnabled(getEntity() != null && CdmStore.currentAuthentiationHasPermission((CdmBase) getEntity(), UPDATE));
67 }
68 }
69
70 @Override
71 public void setEntity(T entity) {
72 super.setEntity(entity);
73 updateToggleableCacheState();
74 }
75
76 }