/**
- *
- */
+* Copyright (C) 2018 EDIT
+* European Distributed Institute of Taxonomy
+* http://www.e-taxonomy.eu
+*
+* The contents of this file are subject to the Mozilla Public License Version 1.1
+* See LICENSE.TXT at the top of this package for the full license terms.
+*/
package eu.etaxonomy.taxeditor.ui.section;
-import java.util.Arrays;
+import java.util.EnumSet;
+import eu.etaxonomy.cdm.model.common.CdmBase;
import eu.etaxonomy.cdm.model.common.IIdentifiableEntity;
+import eu.etaxonomy.cdm.model.permission.CRUD;
+import eu.etaxonomy.taxeditor.store.CdmStore;
import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
+import eu.etaxonomy.taxeditor.ui.element.ICacheRelevantFormElement;
import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
import eu.etaxonomy.taxeditor.ui.element.ToggleableTextElement;
/**
* @author n.hoffmann
- *
*/
-public abstract class AbstractIdentifiableEntityDetailElement<T extends IIdentifiableEntity> extends
- AbstractCdmDetailElement<T> {
-
- protected ToggleableTextElement toggleable_cache;
-
- public AbstractIdentifiableEntityDetailElement(CdmFormFactory formFactory,
- ICdmFormElement formElement) {
- super(formFactory, formElement);
- }
-
- public void updateToggleableCacheField(){
- if(! getEntity().isProtectedTitleCache()){
- toggleable_cache.setText(getEntity().generateTitle());
- }
- }
-
- protected void handleToggleableCacheField(){
- boolean pushedState = toggleable_cache.getState();
-
- getEntity().setTitleCache(toggleable_cache.getText(),
- pushedState);
- setIrrelevant(pushedState,
- Arrays.asList(new Object[] { toggleable_cache }));
- updateToggleableCacheField();
- }
-}
+public abstract class AbstractIdentifiableEntityDetailElement<T extends IIdentifiableEntity>
+ extends AbstractCdmDetailElement<T> {
+
+ private static final EnumSet<CRUD> UPDATE = EnumSet.of(CRUD.UPDATE);
+ protected ToggleableTextElement toggleable_cache;
+
+ public AbstractIdentifiableEntityDetailElement(CdmFormFactory formFactory, ICdmFormElement formElement) {
+ super(formFactory, formElement);
+ updateToggleableCacheState();
+ }
+
+ public void updateToggleableCacheField() {
+ if (toggleable_cache != null){
+ if (!getEntity().isProtectedTitleCache()) {
+ toggleable_cache.setText(getEntity().generateTitle());
+ }
+ }
+ }
+
+ protected void handleToggleableCacheField() {
+ getEntity().setTitleCache(toggleable_cache.getText(), toggleable_cache.getState());
+ updateCacheRelevance();
+ updateToggleableCacheField();
+ }
+
+ @Override
+ protected void updateControlStates(){
+ updateToggleableCacheState();
+ super.updateControlStates();
+ }
+
+ private void updateToggleableCacheState() {
+ if(toggleable_cache != null){
+ toggleable_cache.setEnabled(getEntity() != null && CdmStore.currentAuthentiationHasPermission((CdmBase) getEntity(), UPDATE));
+ }
+ }
+
+ protected void registerCacheRelevance(ICacheRelevantFormElement element) {
+ registerCacheRelevance(element, toggleable_cache);
+ }
+}
\ No newline at end of file