*/
package eu.etaxonomy.taxeditor.ui.section.media;
+import java.net.URI;
+import java.net.URISyntaxException;
+import java.util.List;
+import java.util.Set;
+
import org.eclipse.swt.events.SelectionListener;
import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
import eu.etaxonomy.cdm.model.agent.TeamOrPersonBase;
import eu.etaxonomy.cdm.model.common.LanguageString;
import eu.etaxonomy.cdm.model.media.Media;
+import eu.etaxonomy.cdm.model.media.MediaRepresentation;
+import eu.etaxonomy.cdm.model.media.MediaRepresentationPart;
+import eu.etaxonomy.taxeditor.preference.Resources;
import eu.etaxonomy.taxeditor.store.CdmStore;
import eu.etaxonomy.taxeditor.ui.element.AbstractFormSection;
import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
import eu.etaxonomy.taxeditor.ui.element.LanguageStringWithLabelElement;
-import eu.etaxonomy.taxeditor.ui.element.LayoutConstants;
+import eu.etaxonomy.taxeditor.ui.element.UriWithLabelElement;
import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailSection;
import eu.etaxonomy.taxeditor.ui.section.AbstractEntityCollectionElement;
import eu.etaxonomy.taxeditor.ui.selection.EntitySelectionElement;
*/
public class MediaElement extends AbstractEntityCollectionElement<Media> {
- private MediaRepresentationSection section_mediaRepresentation;
- private EntitySelectionElement<AgentBase> selection_artist;
- private LanguageStringWithLabelElement text_description;
- private LanguageStringWithLabelElement text_title;
+// private MediaRepresentationSection section_mediaRepresentation;
+ private EntitySelectionElement<AgentBase> selection_artist;
+ private LanguageStringWithLabelElement text_description;
+ private LanguageStringWithLabelElement text_title;
+ private UriWithLabelElement textUri;
- /**
- * <p>
- * Constructor for MediaElement.
- * </p>
- *
- * @param formElement
- * a {@link eu.etaxonomy.taxeditor.ui.element.AbstractFormSection}
- * object.
- * @param element
- * a {@link eu.etaxonomy.cdm.model.media.Media} object.
- * @param removeListener
- * a {@link org.eclipse.swt.events.SelectionListener} object.
- * @param style
- * a int.
- * @param cdmFormFactory
- * a {@link eu.etaxonomy.taxeditor.ui.element.CdmFormFactory}
- * object.
- */
- public MediaElement(CdmFormFactory cdmFormFactory,
- AbstractFormSection formElement, Media element,
- SelectionListener removeListener, int style) {
- super(cdmFormFactory, formElement, element, removeListener, null, style);
- }
+ /**
+ * <p>
+ * Constructor for MediaElement.
+ * </p>
+ *
+ * @param formElement
+ * a {@link eu.etaxonomy.taxeditor.ui.element.AbstractFormSection}
+ * object.
+ * @param element
+ * a {@link eu.etaxonomy.cdm.model.media.Media} object.
+ * @param removeListener
+ * a {@link org.eclipse.swt.events.SelectionListener} object.
+ * @param style
+ * a int.
+ * @param cdmFormFactory
+ * a {@link eu.etaxonomy.taxeditor.ui.element.CdmFormFactory}
+ * object.
+ */
+ public MediaElement(CdmFormFactory cdmFormFactory,
+ AbstractFormSection formElement, Media element,
+ SelectionListener removeListener, int style) {
+ super(cdmFormFactory, formElement, element, removeListener, null, style);
+ }
- /*
- * (non-Javadoc)
- *
- * @see
- * eu.etaxonomy.taxeditor.forms.entitysections.AbstractEntitySetElementComposite
- * #createControls(org.eclipse.swt.widgets.Composite, int)
- */
- /** {@inheritDoc} */
+ /*
+ * (non-Javadoc)
+ *
+ * @see
+ * eu.etaxonomy.taxeditor.forms.entitysections.AbstractEntitySetElementComposite
+ * #createControls(org.eclipse.swt.widgets.Composite, int)
+ */
+ /** {@inheritDoc} */
@Override
public void createControls(ICdmFormElement element, int style) {
text_title = formFactory.createLanguageStringWithLabelElement(element, "Title", null, style);
selection_artist = formFactory.createSelectionElement(AgentBase.class, getConversationHolder(), element, "Artist", null, EntitySelectionElement.ALL, style);
text_description = formFactory.createLanguageStringWithLabelElement(element, "Description", null, 100, style);
- section_mediaRepresentation = formFactory.createMediaRepresentationSection(getConversationHolder(), element, style);
- section_mediaRepresentation.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
- }
+ textUri = formFactory.createUriWithLabelElement(element, "Media URI", null, style);
+ // section_mediaRepresentation = formFactory.createMediaRepresentationSection(getConversationHolder(), element, style);
+ // section_mediaRepresentation.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
+ }
+
+ private MediaRepresentationPart getFirstMediaRepresentationPart() {
+ Set<MediaRepresentation> representations = entity.getRepresentations();
+ if(representations.size()==1){
+ List<MediaRepresentationPart> parts = representations.iterator().next().getParts();
+ if(parts.size()==1){
+ return parts.iterator().next();
+ }
+ }
+ return null;
+ }
- /** {@inheritDoc} */
- @Override
- public void setEntity(Media element) {
- this.entity = element;
- section_mediaRepresentation.setEntity(element);
- selection_artist.setEntity((TeamOrPersonBase) HibernateProxyHelper
- .deproxy(element.getArtist()));
+ /** {@inheritDoc} */
+ @Override
+ public void setEntity(Media element) {
+ this.entity = element;
+// section_mediaRepresentation.setEntity(element);
+ selection_artist.setEntity((TeamOrPersonBase) HibernateProxyHelper
+ .deproxy(element.getArtist()));
- text_description.setLanguageString(element.getDescription(CdmStore
- .getDefaultLanguage()));
+ text_description.setLanguageString(element.getDescription(CdmStore
+ .getDefaultLanguage()));
- LanguageString title = element.getTitle(CdmStore.getDefaultLanguage());
+ LanguageString title = element.getTitle(CdmStore.getDefaultLanguage());
- if (title == null) {
- title = LanguageString.NewInstance("",
- CdmStore.getDefaultLanguage());
- }
+ if (title == null) {
+ title = LanguageString.NewInstance("",
+ CdmStore.getDefaultLanguage());
+ }
- text_title.setLanguageString(title);
- }
+ text_title.setLanguageString(title);
- /*
- * (non-Javadoc)
- *
- * @see
- * eu.etaxonomy.taxeditor.section.AbstractEntityCollectionElement#handleEvent
- * (java.lang.Object)
- */
- /** {@inheritDoc} */
- @Override
- public void handleEvent(Object eventSource) {
- if (eventSource == selection_artist) {
- getEntity().setArtist(selection_artist.getSelection());
- } else if (eventSource == text_description) {
- getEntity().addDescription(text_description.getLanguageString());
- } else if (eventSource == text_title) {
- getEntity().putTitle(text_title.getLanguageString());
- if (getParentElement() instanceof AbstractCdmDetailSection) {
- ((AbstractCdmDetailSection) getParentElement()).updateTitle();
- }
- }
- firePropertyChangeEvent(this);
- }
+ MediaRepresentationPart firstMediaRepresentationPart = getFirstMediaRepresentationPart();
+ if(firstMediaRepresentationPart!=null){
+ textUri.setUri(firstMediaRepresentationPart.getUri());
+ }
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see
+ * eu.etaxonomy.taxeditor.section.AbstractEntityCollectionElement#handleEvent
+ * (java.lang.Object)
+ */
+ /** {@inheritDoc} */
+ @Override
+ public void handleEvent(Object eventSource) {
+ if (eventSource == selection_artist) {
+ getEntity().setArtist(selection_artist.getSelection());
+ } else if (eventSource == text_description) {
+ getEntity().addDescription(text_description.getLanguageString());
+ } else if (eventSource == text_title) {
+ getEntity().putTitle(text_title.getLanguageString());
+ if (getParentElement() instanceof AbstractCdmDetailSection) {
+ ((AbstractCdmDetailSection) getParentElement()).updateTitle();
+ }
+ }
+ else if (eventSource == textUri){
+ textUri.setBackground(getPersistentBackground());
+ MediaRepresentationPart firstMediaRepresentationPart = getFirstMediaRepresentationPart();
+ URI uri;
+ try {
+ uri = textUri.getUri();
+ if(firstMediaRepresentationPart!=null){
+ firstMediaRepresentationPart.setUri(uri);
+ }
+ else{
+ Set<MediaRepresentation> representations = getEntity().getRepresentations();
+ if(representations.size()>=1){
+ representations.iterator().next().addRepresentationPart(MediaRepresentationPart.NewInstance(uri, null));
+ }
+ else{
+ MediaRepresentation mediaRepresentation = MediaRepresentation.NewInstance();
+ mediaRepresentation.addRepresentationPart(MediaRepresentationPart.NewInstance(uri, null));
+ getEntity().addRepresentation(mediaRepresentation);
+ }
+ }
+ } catch (URISyntaxException e) {
+ textUri.setBackground(getColor(Resources.COLOR_PARSE_ERROR));
+ }
+ }
+ }
}
*/
package eu.etaxonomy.taxeditor.ui.section.occurrence.media;
+import java.net.URISyntaxException;
+import java.util.Set;
+
import org.eclipse.swt.widgets.Label;
-import org.eclipse.ui.forms.widgets.ExpandableComposite;
import org.joda.time.DateTime;
import eu.etaxonomy.cdm.api.service.IVocabularyService;
import eu.etaxonomy.cdm.model.common.TermVocabulary;
import eu.etaxonomy.cdm.model.common.VocabularyEnum;
import eu.etaxonomy.cdm.model.media.Media;
+import eu.etaxonomy.cdm.model.media.MediaRepresentation;
+import eu.etaxonomy.cdm.model.media.MediaRepresentationPart;
import eu.etaxonomy.cdm.model.occurrence.Collection;
import eu.etaxonomy.cdm.model.occurrence.MediaSpecimen;
import eu.etaxonomy.cdm.model.reference.Reference;
+import eu.etaxonomy.taxeditor.preference.Resources;
import eu.etaxonomy.taxeditor.store.CdmStore;
import eu.etaxonomy.taxeditor.ui.combo.TermComboElement;
import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
import eu.etaxonomy.taxeditor.ui.element.LanguageStringWithLabelElement;
-import eu.etaxonomy.taxeditor.ui.element.LayoutConstants;
import eu.etaxonomy.taxeditor.ui.element.TextWithLabelElement;
+import eu.etaxonomy.taxeditor.ui.element.UriWithLabelElement;
import eu.etaxonomy.taxeditor.ui.mvc.element.DateElement;
import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
-import eu.etaxonomy.taxeditor.ui.section.media.MediaRepresentationSection;
import eu.etaxonomy.taxeditor.ui.selection.EntitySelectionElement;
/**
private EntitySelectionElement<Collection> selection_collection;
private TextWithLabelElement text_accessionNumber;
private EntitySelectionElement<Reference> selection_publishedIn;
+ private UriWithLabelElement textMediaUri;
+ private MediaRepresentationPart mediaRepresentationPart;
- private MediaRepresentationSection mediaRepresentationSection;
+// private MediaRepresentationSection mediaRepresentationSection;
/**
* @param formFactory
* @param formElement
}
}
selection_publishedIn = formFactory.createSelectionElement(Reference.class, getConversationHolder(), formElement, "Published in", publishedIn, EntitySelectionElement.ALL, style);
+ mediaRepresentationPart = getMediaRepresentationPart(media);
+ textMediaUri = formFactory.createUriWithLabelElement(formElement, "Media URI", mediaRepresentationPart.getUri(), style);
- mediaRepresentationSection = formFactory.createMediaRepresentationSection(getConversationHolder(), formElement, ExpandableComposite.TWISTIE);
- mediaRepresentationSection.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
- mediaRepresentationSection.setEntity(media);
+// mediaRepresentationSection = formFactory.createMediaRepresentationSection(getConversationHolder(), formElement, ExpandableComposite.TWISTIE);
+// mediaRepresentationSection.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
+// mediaRepresentationSection.setEntity(media);
}
}
primaryMediaSource.setCitation(selection_publishedIn.getSelection());
}
}
+ else if(eventSource==textMediaUri){
+ textMediaUri.setBackground(getPersistentBackground());
+ try {
+ mediaRepresentationPart.setUri(textMediaUri.getUri());
+ } catch (URISyntaxException e) {
+ textMediaUri.setBackground(getColor(Resources.COLOR_PARSE_ERROR));
+ }
+ }
}
+
+ private MediaRepresentationPart getMediaRepresentationPart(Media media) {
+ if(mediaRepresentationPart!=null){
+ return mediaRepresentationPart;
+ }
+ else {
+ MediaRepresentationPart part = MediaRepresentationPart.NewInstance(null, null);
+
+ Set<MediaRepresentation> representations = media.getRepresentations();
+ MediaRepresentation mediaRepresentation = MediaRepresentation.NewInstance();
+ mediaRepresentation.addRepresentationPart(part);
+ media.addRepresentation(mediaRepresentation);
+ return part;
+ }
+ }
+
}