From caf6ce958c82589b1f9962ed3023482cc1be30d2 Mon Sep 17 00:00:00 2001 From: "n.hoffmann" Date: Tue, 21 Jun 2011 12:04:23 +0000 Subject: [PATCH] Fixing problems with image handling. --- .gitattributes | 2 +- .../ui/forms/AbstractCdmFormElement.java | 12 ++++++++++ .../ui/forms/AbstractFormSection.java | 24 ++++++++++++++++--- .../taxeditor/ui/forms/ImageElement.java | 16 ++++++------- .../taxeditor/ui/forms/LabelElement.java | 4 +++- .../AbstractEntityCollectionSection.java | 2 +- ...bstractMediaRepresentationPartElement.java | 2 +- .../ui/section/media/ImageFileElement.java | 4 ++-- .../ui/section/media/MediaElement.java | 1 + .../media/MediaRepresentationElement.java | 15 ++++++++---- .../media/MediaRepresentationPartSection.java | 5 +--- .../taxeditor/view/detail/CdmSectionPart.java | 15 ++++++++---- 12 files changed, 72 insertions(+), 30 deletions(-) rename eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/{supplemental => media}/AbstractMediaRepresentationPartElement.java (97%) diff --git a/.gitattributes b/.gitattributes index c74e3df11..f223383e6 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1017,6 +1017,7 @@ eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/key eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/key/PolytomousKeyNodeDetailSection.java -text eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/key/ScopeRestrictionSection.java -text eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/key/TaxonomicScopeSection.java -text +eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/media/AbstractMediaRepresentationPartElement.java -text eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/media/ImageFileElement.java -text eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/media/MediaElement.java -text eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/media/MediaRepresentationElement.java -text @@ -1078,7 +1079,6 @@ eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/ref eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/reference/ReferenceDetailElement.java -text eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/reference/ReferenceDetailSection.java -text eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/reference/ReferenceWizardPage.java -text -eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/supplemental/AbstractMediaRepresentationPartElement.java -text eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/supplemental/AbstractOriginalSourceElement.java -text eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/supplemental/AbstractReferencedEntityElement.java -text eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/supplemental/AnnotationElement.java -text diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/forms/AbstractCdmFormElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/forms/AbstractCdmFormElement.java index bbc1864b0..dbd28a95d 100644 --- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/forms/AbstractCdmFormElement.java +++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/forms/AbstractCdmFormElement.java @@ -248,10 +248,22 @@ public abstract class AbstractCdmFormElement implements IPropertyChangeEmitter, } } + /** + * Fires a {@link CdmPropertyChangeEvent} with the given object as source. + * + * @param object the object on which the property changed + */ public void firePropertyChangeEvent(Object object){ firePropertyChangeEvent(object, null); } + /** + * Fires a {@link CdmPropertyChangeEvent} with the given object as source also containing the + * originating event + * + * @param object the object on which the property changed + * @param originatingEvent the originating event + */ public void firePropertyChangeEvent(Object object, PropertyChangeEvent originatingEvent){ firePropertyChangeEvent(new CdmPropertyChangeEvent(object, originatingEvent)); } diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/forms/AbstractFormSection.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/forms/AbstractFormSection.java index d1587708d..22f297271 100644 --- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/forms/AbstractFormSection.java +++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/forms/AbstractFormSection.java @@ -33,9 +33,6 @@ import eu.etaxonomy.cdm.api.conversation.ConversationHolder; import eu.etaxonomy.cdm.api.conversation.IConversationEnabled; import eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeMap; import eu.etaxonomy.taxeditor.store.StoreUtil; -import eu.etaxonomy.taxeditor.ui.selection.AbstractSelectionElement; -import eu.etaxonomy.taxeditor.ui.term.AbstractEnumComboElement; -import eu.etaxonomy.taxeditor.ui.term.AbstractTermComboElement; /** *

Abstract AbstractFormSection class.

@@ -180,6 +177,27 @@ public abstract class AbstractFormSection extends Section implements ISe } } + + /** + * Fires a {@link CdmPropertyChangeEvent} with the given object as source. + * + * @param object the object on which the property changed + */ + public void firePropertyChangeEvent(Object object){ + firePropertyChangeEvent(object, null); + } + + /** + * Fires a {@link CdmPropertyChangeEvent} with the given object as source also containing the + * originating event + * + * @param object the object on which the property changed + * @param originatingEvent the originating event + */ + public void firePropertyChangeEvent(Object object, PropertyChangeEvent originatingEvent){ + firePropertyChangeEvent(new CdmPropertyChangeEvent(object, originatingEvent)); + } + /* (non-Javadoc) * @see org.eclipse.swt.widgets.Composite#setFocus() */ diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/forms/ImageElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/forms/ImageElement.java index bc7b06ab6..59d169cfc 100644 --- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/forms/ImageElement.java +++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/forms/ImageElement.java @@ -26,6 +26,7 @@ import org.eclipse.swt.graphics.GC; import org.eclipse.swt.graphics.Image; import org.eclipse.swt.graphics.Rectangle; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Event; import org.eclipse.ui.forms.widgets.TableWrapData; @@ -44,7 +45,6 @@ public class ImageElement extends AbstractCdmFormElement implements PaintListene private URI imageUri; private Image image; - private Rectangle imageMaxBounds; private Composite container; @@ -182,18 +182,18 @@ public class ImageElement extends AbstractCdmFormElement implements PaintListene return runnable; } - private void calculateImageBounds(){ + private Rectangle calculateImageBounds(Image image, Control control){ Rectangle imageBounds = image.getBounds(); - Rectangle containerBounds = container.getBounds(); + Rectangle containerBounds = control.getBounds(); Integer imgWidth = imageBounds.width; Integer imgHeight = imageBounds.height; Float ratio = imgHeight.floatValue()/imgWidth.floatValue(); Integer width = containerBounds.width; - Float height = width * ratio; + Integer height = ((Float) (width * ratio)).intValue(); - imageMaxBounds = new Rectangle(containerBounds.x, containerBounds.y, width, height.intValue()); + return new Rectangle(containerBounds.x, containerBounds.y, width, height); } @@ -204,16 +204,16 @@ public class ImageElement extends AbstractCdmFormElement implements PaintListene @Override public void paintControl(PaintEvent e) { TableWrapData layoutData = CdmFormFactory.FILL(2, 1); - Composite composite = (Composite) e.widget; + Control control = (Control) e.widget; if(image != null){ - calculateImageBounds(); + Rectangle imageMaxBounds = calculateImageBounds(image, control); layoutData.heightHint = imageMaxBounds.height; e.gc.drawImage(image, 0, 0, image.getBounds().width, image.getBounds().height, 0, 0, imageMaxBounds.width, imageMaxBounds.height); }else{ layoutData.heightHint = 10; e.gc.drawRectangle(0, 0, 0, 10); } - composite.setLayoutData(layoutData); + control.setLayoutData(layoutData); e.gc.dispose(); } diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/forms/LabelElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/forms/LabelElement.java index e9fdedb3e..7fc5174d3 100644 --- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/forms/LabelElement.java +++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/forms/LabelElement.java @@ -13,6 +13,8 @@ package eu.etaxonomy.taxeditor.ui.forms; import org.eclipse.swt.SWT; import org.eclipse.swt.widgets.Label; +import eu.etaxonomy.cdm.common.CdmUtils; + /** *

LabelElement class.

* @@ -55,6 +57,6 @@ public class LabelElement extends AbstractCdmFormElement { * @param text a {@link java.lang.String} object. */ public void setText(String text) { - label.setText(text); + label.setText(CdmUtils.Nz(text)); } } diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/AbstractEntityCollectionSection.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/AbstractEntityCollectionSection.java index bcce1218c..9ee5eb393 100644 --- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/AbstractEntityCollectionSection.java +++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/AbstractEntityCollectionSection.java @@ -158,7 +158,7 @@ public abstract class AbstractEntityCollectionSection extends A if(isExpanded() || expandSectionWhenContentAvailable()) renderContent(isExpanded()); if(changed) - firePropertyChangeEvent(new CdmPropertyChangeEvent(this, null)); + firePropertyChangeEvent(this); } /** diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/supplemental/AbstractMediaRepresentationPartElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/media/AbstractMediaRepresentationPartElement.java similarity index 97% rename from eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/supplemental/AbstractMediaRepresentationPartElement.java rename to eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/media/AbstractMediaRepresentationPartElement.java index f486c9c05..3de858cc8 100644 --- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/supplemental/AbstractMediaRepresentationPartElement.java +++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/media/AbstractMediaRepresentationPartElement.java @@ -8,7 +8,7 @@ * See LICENSE.TXT at the top of this package for the full license terms. */ -package eu.etaxonomy.taxeditor.ui.section.supplemental; +package eu.etaxonomy.taxeditor.ui.section.media; import org.apache.log4j.Logger; import org.eclipse.swt.events.SelectionListener; diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/media/ImageFileElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/media/ImageFileElement.java index eb13e836c..4b2e70343 100644 --- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/media/ImageFileElement.java +++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/media/ImageFileElement.java @@ -29,7 +29,6 @@ import eu.etaxonomy.taxeditor.ui.forms.ImageElement; import eu.etaxonomy.taxeditor.ui.forms.KeyValueViewerElement; import eu.etaxonomy.taxeditor.ui.forms.LabelElement; import eu.etaxonomy.taxeditor.ui.forms.NumberWithLabelElement; -import eu.etaxonomy.taxeditor.ui.section.supplemental.AbstractMediaRepresentationPartElement; /** *

ImageFileElement class.

@@ -148,9 +147,10 @@ public class ImageFileElement extends AbstractMediaRepresentationPartElement { ((AbstractCdmDetailSection) getParentElement()).updateTitle(); } } + firePropertyChangeEvent(this); } } diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/media/MediaRepresentationElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/media/MediaRepresentationElement.java index 248a07865..1958ba587 100644 --- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/media/MediaRepresentationElement.java +++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/media/MediaRepresentationElement.java @@ -14,16 +14,13 @@ import java.io.IOException; import java.net.URI; import java.util.Collection; -import org.apache.commons.lang.StringUtils; import org.apache.http.HttpException; import org.eclipse.swt.events.SelectionListener; -import eu.etaxonomy.cdm.api.service.IMediaService; import eu.etaxonomy.cdm.common.media.ImageInfo; import eu.etaxonomy.cdm.model.media.ImageFile; import eu.etaxonomy.cdm.model.media.MediaRepresentation; import eu.etaxonomy.cdm.model.media.MediaRepresentationPart; -import eu.etaxonomy.taxeditor.store.CdmStore; import eu.etaxonomy.taxeditor.store.StoreUtil; import eu.etaxonomy.taxeditor.ui.forms.AbstractFormSection; import eu.etaxonomy.taxeditor.ui.forms.CdmFormFactory; @@ -96,9 +93,15 @@ public class MediaRepresentationElement extends AbstractEntityCollectionElement< getEntity().setSuffix(text_suffix.getText()); } // FIXME HACK automatically set the mime type to the first mediaRepresentationPart's mimetype - else if(eventSource == section_mediaRepresentationPart){ + else if(eventSource == section_mediaRepresentationPart){ + firePropertyChangeEvent(this); + Collection imageFileElements = section_mediaRepresentationPart.getCollection(section_mediaRepresentationPart.getEntity()); + if(! imageFileElements.iterator().hasNext()){ + return; + } + MediaRepresentationPart mediaRepresentationPart = imageFileElements.iterator().next(); if(mediaRepresentationPart == null || !(mediaRepresentationPart instanceof ImageFile)){ return; @@ -113,13 +116,17 @@ public class MediaRepresentationElement extends AbstractEntityCollectionElement< ImageInfo imageInfo = ImageInfo.NewInstance(uri, 10000); String mimeType = imageInfo.getMimeType(); text_mimeType.setText(mimeType); + getEntity().setMimeType(mimeType); text_suffix.setText(imageInfo.getSuffix()); + getEntity().setSuffix(imageInfo.getSuffix()); } catch (IOException e) { StoreUtil.error(getClass(), e); } catch (HttpException e) { StoreUtil.error(getClass(), e); } } + + } private String getMimeType(URI uri){ diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/media/MediaRepresentationPartSection.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/media/MediaRepresentationPartSection.java index 10a456512..a1207657b 100644 --- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/media/MediaRepresentationPartSection.java +++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/media/MediaRepresentationPartSection.java @@ -85,8 +85,5 @@ public class MediaRepresentationPartSection extends firePropertyChangeEvent(new CdmPropertyChangeEvent(this, null)); super.propertyChange(event); } - - - } - + } } diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/detail/CdmSectionPart.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/detail/CdmSectionPart.java index 097d78afe..d173e34fd 100644 --- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/detail/CdmSectionPart.java +++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/detail/CdmSectionPart.java @@ -22,6 +22,7 @@ import eu.etaxonomy.taxeditor.model.IElementHasDetails; import eu.etaxonomy.taxeditor.model.PolytomousKeyRelationship; import eu.etaxonomy.taxeditor.preference.PreferencesUtil; import eu.etaxonomy.taxeditor.store.StoreUtil; +import eu.etaxonomy.taxeditor.ui.forms.AbstractCdmFormElement; import eu.etaxonomy.taxeditor.ui.forms.AbstractFormSection; import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement; import eu.etaxonomy.taxeditor.ui.section.ITaxonBaseDetailSection; @@ -100,11 +101,15 @@ public class CdmSectionPart extends SectionPart implements public void propertyChange(PropertyChangeEvent event) { if (event != null) { - Object eventSource = event.getSource(); - - if (formSection.equals(eventSource) - || (eventSource instanceof AbstractCdmDetailElement && formSection - .containsFormElement((AbstractCdmDetailElement) eventSource))) { + Object eventSource = event.getSource(); + + if (formSection.equals(eventSource)){ + markDirty(); + } + if(( + (eventSource instanceof AbstractCdmFormElement) + && formSection.containsFormElement((AbstractCdmFormElement) eventSource)) + ) { markDirty(); } } -- 2.34.1