Project

General

Profile

Download (5.74 KB) Statistics
| Branch: | Tag: | Revision:
1
// $Id$
2
/**
3
* Copyright (C) 2007 EDIT
4
* European Distributed Institute of Taxonomy 
5
* http://www.e-taxonomy.eu
6
* 
7
* The contents of this file are subject to the Mozilla Public License Version 1.1
8
* See LICENSE.TXT at the top of this package for the full license terms.
9
*/
10

    
11
package eu.etaxonomy.taxeditor.ui.section.name;
12

    
13
import java.net.URI;
14
import java.net.URISyntaxException;
15

    
16
import org.eclipse.swt.events.SelectionListener;
17

    
18
import eu.etaxonomy.cdm.model.description.DescriptionElementBase;
19
import eu.etaxonomy.cdm.model.description.TaxonNameDescription;
20
import eu.etaxonomy.cdm.model.media.Media;
21
import eu.etaxonomy.cdm.model.media.MediaRepresentation;
22
import eu.etaxonomy.cdm.model.media.MediaRepresentationPart;
23
import eu.etaxonomy.cdm.model.name.TaxonNameBase;
24
import eu.etaxonomy.cdm.model.reference.Reference;
25
import eu.etaxonomy.taxeditor.model.MessagingUtils;
26
import eu.etaxonomy.taxeditor.ui.element.AbstractFormSection;
27
import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
28
import eu.etaxonomy.taxeditor.ui.element.CdmPropertyChangeEvent;
29
import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
30
import eu.etaxonomy.taxeditor.ui.element.ISelectableElement;
31
import eu.etaxonomy.taxeditor.ui.element.SelectionArbitrator;
32
import eu.etaxonomy.taxeditor.ui.element.TextWithLabelElement;
33
import eu.etaxonomy.taxeditor.ui.openurl.IOpenUrlEnabled;
34
import eu.etaxonomy.taxeditor.ui.section.AbstractEntityCollectionElement;
35

    
36
/**
37
 * <p>ProtologueElement class.</p>
38
 *
39
 * @author n.hoffmann
40
 * @created Nov 5, 2009
41
 * @version 1.0
42
 */
43
public class ProtologueElement extends AbstractEntityCollectionElement<DescriptionElementBase> implements ISelectableElement, IOpenUrlEnabled{
44

    
45
	private SelectionArbitrator selectionArbitrator;
46

    
47
	private TextWithLabelElement protologueUriText;
48
	private MediaRepresentationPart mediaRepresentationPart;
49
	private Media media;
50
	private MediaRepresentation mediaRepresentation;
51

    
52
	/**
53
	 * <p>Constructor for ProtologueElement.</p>
54
	 *
55
	 * @param element a {@link eu.etaxonomy.cdm.model.description.DescriptionElementBase} object.
56
	 * @param removeListener a {@link org.eclipse.swt.events.SelectionListener} object.
57
	 * @param style a int.
58
	 * @param cdmFormFactory a {@link eu.etaxonomy.taxeditor.ui.element.CdmFormFactory} object.
59
	 * @param formElement a {@link eu.etaxonomy.taxeditor.ui.element.AbstractFormSection} object.
60
	 */
61
	public ProtologueElement(CdmFormFactory cdmFormFactory, AbstractFormSection formElement, DescriptionElementBase element,
62
			SelectionListener removeListener, int style) {
63
		super(cdmFormFactory, formElement, element, removeListener, null, style);
64
		selectionArbitrator = cdmFormFactory.createSelectionArbitrator(this);
65
	}
66

    
67
	/* (non-Javadoc)
68
	 * @see eu.etaxonomy.taxeditor.forms.entitysections.AbstractEntitySetElementComposite#createControls(org.eclipse.swt.widgets.Composite, int)
69
	 */
70
	/** {@inheritDoc} */
71
	@Override
72
	public void createControls(ICdmFormElement element, int style) {
73
		protologueUriText = formFactory.createTextWithLabelElement(this, "Protologue URI", "", style);
74

    
75
		formFactory.createOpenUrlSelectorElement(element, "Query BHL for Reference Image", this, style);
76
	}
77

    
78
	/* (non-Javadoc)
79
	 * @see eu.etaxonomy.taxeditor.forms.entitysections.AbstractEntitySetElementComposite#setElement(eu.etaxonomy.cdm.model.common.VersionableEntity)
80
	 */
81
	/** {@inheritDoc} */
82
	@Override
83
	public void setEntity(DescriptionElementBase element) {
84
		this.entity = element;
85
				
86
		if(element.getMedia().size() == 0){
87
			element.addMedia(Media.NewInstance());
88
		}
89
		media = element.getMedia().iterator().next();
90
		
91
		if(media.getRepresentations().size() == 0){
92
			media.addRepresentation(MediaRepresentation.NewInstance());
93
		}		
94
		mediaRepresentation = media.getRepresentations().iterator().next();
95
		
96
		if(mediaRepresentation.getParts().size() == 0){
97
			mediaRepresentation.addRepresentationPart(MediaRepresentationPart.NewInstance(null, null));
98
		}
99
		
100
		mediaRepresentationPart = mediaRepresentation.getParts().iterator().next();
101
		
102
		if(mediaRepresentationPart.getUri() != null){
103
			protologueUriText.setText(mediaRepresentationPart.getUri().toString());
104
		}
105
	}
106
	
107
	/* (non-Javadoc)
108
	 * @see eu.etaxonomy.taxeditor.forms.section.cdmdetail.ISelectableElement#getSelectionArbitrator()
109
	 */
110
	/**
111
	 * <p>Getter for the field <code>selectionArbitrator</code>.</p>
112
	 *
113
	 * @return a {@link eu.etaxonomy.taxeditor.ui.element.SelectionArbitrator} object.
114
	 */
115
	public SelectionArbitrator getSelectionArbitrator() {
116
		return selectionArbitrator;
117
	}
118
	
119
	/*
120
	 * (non-Javadoc)
121
	 * @see eu.etaxonomy.taxeditor.section.AbstractEntityCollectionElement#handleEvent(java.lang.Object)
122
	 */
123
	/** {@inheritDoc} */
124
	@Override
125
	public void handleEvent(Object eventSource) {
126
		if(eventSource == protologueUriText){
127
			try {
128
				mediaRepresentationPart.setUri(new URI(protologueUriText.getText()));
129
			} catch (URISyntaxException e) {
130
				MessagingUtils.warningDialog("Could not parse URI", getClass(), e.getMessage());
131
			}
132
		}	
133
	}
134

    
135
	/* (non-Javadoc)
136
	 * @see eu.etaxonomy.taxeditor.forms.openurl.IOpenUrlEnabled#setOpenUrl(java.net.URI)
137
	 */
138
	@Override
139
	public void setOpenUrl(URI uri) {
140
		protologueUriText.setText(uri.toString());
141
		firePropertyChangeEvent(new CdmPropertyChangeEvent(protologueUriText, null));
142
	}
143

    
144
	/* (non-Javadoc)
145
	 * @see eu.etaxonomy.taxeditor.forms.openurl.IOpenUrlEnabled#getReference()
146
	 */
147
	@Override
148
	public Reference getReference() {
149
		return (Reference) getName().getNomenclaturalReference();
150
	}
151

    
152
	/* (non-Javadoc)
153
	 * @see eu.etaxonomy.taxeditor.forms.openurl.IOpenUrlEnabled#getDetail()
154
	 */
155
	@Override
156
	public String getDetail() {
157
		return getName().getNomenclaturalMicroReference();
158
	}
159
	
160
	private TaxonNameBase getName(){
161
		TaxonNameDescription description = (TaxonNameDescription) entity.getInDescription();
162
		
163
		TaxonNameBase taxonName = description.getTaxonName();
164
		
165
		return taxonName;
166
	}
167
}
(18-18/25)