X-Git-Url: https://dev.e-taxonomy.eu/gitweb/taxeditor.git/blobdiff_plain/7822250773b58d95595460a67bddbb470940e7de..d58b8e3f77a8664b300c738c9678edb6024edf17:/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/AbstractIdentifiableEntityDetailElement.java diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/AbstractIdentifiableEntityDetailElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/AbstractIdentifiableEntityDetailElement.java index e29b65606..5d31a9c81 100644 --- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/AbstractIdentifiableEntityDetailElement.java +++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/AbstractIdentifiableEntityDetailElement.java @@ -1,42 +1,65 @@ /** - * - */ +* 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 extends - AbstractCdmDetailElement { - - 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 + extends AbstractCdmDetailElement { + + private static final EnumSet 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