Project

General

Profile

Download (5.91 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.singlesource.ui.forms.CdmFormFactoryFacade;
26
import eu.etaxonomy.taxeditor.singlesource.ui.forms.TextWithLabelElementFacade;
27
import eu.etaxonomy.taxeditor.store.StoreUtil;
28
import eu.etaxonomy.taxeditor.ui.forms.AbstractFormSection;
29
import eu.etaxonomy.taxeditor.ui.forms.CdmPropertyChangeEvent;
30
import eu.etaxonomy.taxeditor.ui.forms.ICdmFormElement;
31
import eu.etaxonomy.taxeditor.ui.forms.ISelectableElement;
32
import eu.etaxonomy.taxeditor.ui.forms.SelectionArbitrator;
33
import eu.etaxonomy.taxeditor.ui.openurl.IOpenUrlEnabled;
34
import eu.etaxonomy.taxeditor.ui.openurl.OpenUrlSelectorElement;
35
import eu.etaxonomy.taxeditor.ui.section.AbstractEntityCollectionElement;
36

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

    
46
	private SelectionArbitrator selectionArbitrator;
47

    
48
	private TextWithLabelElementFacade protologueUriText;
49
	private MediaRepresentationPart mediaRepresentationPart;
50
	private Media media;
51
	private MediaRepresentation mediaRepresentation;
52

    
53
	private OpenUrlSelectorElement element_openUrl;
54

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

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

    
78
		element_openUrl = formFactory.createOpenUrlSelectorElement(element, "Query BHL for Reference Image", this, style);
79
	}
80

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

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

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

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