X-Git-Url: https://dev.e-taxonomy.eu/gitweb/taxeditor.git/blobdiff_plain/f65a33049e16dc2c1fa15327657fb9326d067709..bd05baf38855e3f5b5c988db8bbc527b8e3f9aea:/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/AbstractCdmDetailElement.java diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/AbstractCdmDetailElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/AbstractCdmDetailElement.java index 9d3a362b4..6ed49262a 100644 --- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/AbstractCdmDetailElement.java +++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/AbstractCdmDetailElement.java @@ -1,4 +1,3 @@ -// $Id$ /** * Copyright (C) 2007 EDIT * European Distributed Institute of Taxonomy @@ -21,10 +20,13 @@ import org.eclipse.swt.SWT; import org.eclipse.swt.events.DisposeEvent; import org.eclipse.swt.events.DisposeListener; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Display; import eu.etaxonomy.cdm.api.conversation.ConversationHolder; import eu.etaxonomy.cdm.api.conversation.IConversationEnabled; -import eu.etaxonomy.cdm.model.name.TaxonNameBase; +import eu.etaxonomy.cdm.common.CdmUtils; +import eu.etaxonomy.cdm.model.common.CdmBase; +import eu.etaxonomy.cdm.model.name.TaxonName; import eu.etaxonomy.cdm.model.taxon.TaxonBase; import eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeMap; import eu.etaxonomy.cdm.persistence.hibernate.permission.CRUD; @@ -37,40 +39,26 @@ import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory; import eu.etaxonomy.taxeditor.ui.element.CdmPropertyChangeEvent; import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement; import eu.etaxonomy.taxeditor.ui.element.IEnableableFormElement; +import eu.etaxonomy.taxeditor.ui.element.LabelElement; +import eu.etaxonomy.taxeditor.ui.element.LayoutConstants; /** - *

- * Abstract AbstractCdmDetailElement class. - *

* * @author n.hoffmann * @created Feb 26, 2010 - * @version 1.0 */ -public abstract class AbstractCdmDetailElement extends AbstractCdmFormElement implements ICdmDetailElement, Observer { +public abstract class AbstractCdmDetailElement extends AbstractCdmFormElement implements ICdmDetailElement, Observer, IEnableableFormElement{ private T entity; private boolean irrelevant; - private boolean enabled; + private boolean enabled = true; + + private LabelElement warnForReferencedObjects; private EnumSet requiredCrud = null; - /** - *

- * Constructor for AbstractCdmDetailElement. - *

- * - * @param formFactory - * a {@link eu.etaxonomy.taxeditor.ui.element.CdmFormFactory} - * object. - * @param formElement - * a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement} - * object. - * @param - * a T object. - */ public AbstractCdmDetailElement(CdmFormFactory formFactory, ICdmFormElement formElement) { super(formFactory, formElement); @@ -106,18 +94,6 @@ public abstract class AbstractCdmDetailElement extends AbstractCdmFormElement updateContent(); } - /* - * (non-Javadoc) - * - * @see eu.etaxonomy.taxeditor.forms.IEntityElement#getEntity() - */ - /** - *

- * Getter for the field entity. - *

- * - * @return a T object. - */ @Override public T getEntity() { return entity; @@ -128,20 +104,13 @@ public abstract class AbstractCdmDetailElement extends AbstractCdmFormElement */ protected void updateContent() { removeElements(); - createControls(this, entity, SWT.WRAP); - getLayoutComposite().layout(); + createControls(this, entity, SWT.NONE); + StoreUtil.reflowParentScrolledForm(getLayoutComposite(), true); updateControlStates(); } - /* - * (non-Javadoc) - * - * @see - * eu.etaxonomy.taxeditor.forms.ISelectableComposite#setSelected(boolean) - */ - /** {@inheritDoc} */ - @Override + @Override public void setSelected(boolean selected) { Composite section = getLayoutComposite().getParent(); section.setBackground(selected ? SELECTED : getPersistentBackground()); @@ -171,9 +140,6 @@ public abstract class AbstractCdmDetailElement extends AbstractCdmFormElement } } - /* (non-Javadoc) - * @see eu.etaxonomy.taxeditor.ui.element.IEnableableFormElement#isEnabled() - */ @Override public boolean isEnabled() { return enabled; @@ -268,14 +234,13 @@ public abstract class AbstractCdmDetailElement extends AbstractCdmFormElement } protected void handleTitleCacheRelevantChange(PropertyChangeEvent event) { - boolean isRelevant = getEntity() instanceof TaxonNameBase + boolean isRelevant = getEntity() instanceof TaxonName || getEntity() instanceof TaxonBase; isRelevant &= this instanceof AbstractIdentifiableEntityDetailElement; if (isRelevant) { ((AbstractIdentifiableEntityDetailElement) this) .updateToggleableCacheField(); - updateParentSection(); } } @@ -283,6 +248,8 @@ public abstract class AbstractCdmDetailElement extends AbstractCdmFormElement if (getParentElement() instanceof AbstractCdmDetailSection) { ((AbstractCdmDetailSection) getParentElement()).updateTitle(); } + //NOTE: This slows down the rendering of the details view +// StoreUtil.reflowParentScrolledForm(getLayoutComposite(), true); } /** @@ -294,40 +261,15 @@ public abstract class AbstractCdmDetailElement extends AbstractCdmFormElement */ public abstract void handleEvent(Object eventSource); - /** - *

- * handleException - *

- * - * @param event - * a - * {@link eu.etaxonomy.taxeditor.ui.element.CdmPropertyChangeEvent} - * object. - */ public void handleException(CdmPropertyChangeEvent event) { // override this in subclasses if you want to deal with the error MessagingUtils.error(event.getSource().getClass(), event.getException()); } - /** - *

- * isIrrelevant - *

- * - * @return a boolean. - */ public boolean isIrrelevant() { return irrelevant; } - /** - *

- * getConversationHolder - *

- * - * @return a {@link eu.etaxonomy.cdm.api.conversation.ConversationHolder} - * object. - */ @Override public ConversationHolder getConversationHolder() { if (getParentElement() instanceof IConversationEnabled) { @@ -360,4 +302,36 @@ public abstract class AbstractCdmDetailElement extends AbstractCdmFormElement } setEnabled(getEntity() != null && CdmStore.currentAuthentiationHasPermission(StoreUtil.getCdmEntity(getEntity()), requiredCrud), except); } + + public LabelElement getWarnForReferencedObjects() { + return warnForReferencedObjects; + } + + public void setWarnForReferencedObjects(LabelElement warnForReferencedObjects) { + this.warnForReferencedObjects = warnForReferencedObjects; + } + + public void setWarnForReferencingObjects(ICdmFormElement formElement){ + if (getEntity() instanceof CdmBase){ + CdmBase cdmBase = (CdmBase) getEntity(); + if (cdmBase.getId() != 0){ + long referencingObjectsCount = CdmStore.getCommonService().getReferencingObjectsCount(cdmBase); + + if (referencingObjectsCount > 1){ + setWarnForReferencedObjects(formFactory.createLabel(formElement, CdmUtils.Nz("The "+ cdmBase.getUserFriendlyTypeName()+" is referenced by " + referencingObjectsCount+ " objects, if you change it, it is changed for all these objects"))); + getWarnForReferencedObjects().setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_RED)); + getWarnForReferencedObjects().setLayout(LayoutConstants.FILL(2, 3)); + getWarnForReferencedObjects().setForeground(Display.getCurrent().getSystemColor(SWT.COLOR_RED)); + + } + } + } + } + + public void setWarnForReferencingObjectsVisible(boolean isVisible){ + if (getWarnForReferencedObjects() != null){ + getWarnForReferencedObjects().setVisible(isVisible); + } + } + }