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);
+ }
+ }
+
}