fix #5671: add filter element for selection dialog
[taxeditor.git] / eu.etaxonomy.taxeditor.store / src / main / java / eu / etaxonomy / taxeditor / view / supplementaldata / SupplementalDataViewer.java
1 /**
2 * Copyright (C) 2007 EDIT
3 * European Distributed Institute of Taxonomy
4 * http://www.e-taxonomy.eu
5 *
6 * The contents of this file are subject to the Mozilla Public License Version 1.1
7 * See LICENSE.TXT at the top of this package for the full license terms.
8 */
9
10 package eu.etaxonomy.taxeditor.view.supplementaldata;
11
12 import org.eclipse.jface.viewers.ISelection;
13 import org.eclipse.jface.viewers.ISelectionChangedListener;
14 import org.eclipse.jface.viewers.IStructuredSelection;
15 import org.eclipse.jface.viewers.SelectionChangedEvent;
16 import org.eclipse.swt.SWT;
17 import org.eclipse.swt.widgets.Composite;
18 import org.eclipse.ui.forms.widgets.ExpandableComposite;
19
20 import eu.etaxonomy.cdm.model.common.AnnotatableEntity;
21 import eu.etaxonomy.cdm.model.common.IdentifiableEntity;
22 import eu.etaxonomy.cdm.model.common.VersionableEntity;
23 import eu.etaxonomy.cdm.model.media.IdentifiableMediaEntity;
24 import eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeMap;
25 import eu.etaxonomy.taxeditor.model.IElementHasDetails;
26 import eu.etaxonomy.taxeditor.preference.IPreferenceKeys;
27 import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
28 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
29 import eu.etaxonomy.taxeditor.ui.element.RootElement;
30 import eu.etaxonomy.taxeditor.ui.section.media.MediaSection;
31 import eu.etaxonomy.taxeditor.ui.section.supplemental.AnnotationSection;
32 import eu.etaxonomy.taxeditor.ui.section.supplemental.CdmBaseSection;
33 import eu.etaxonomy.taxeditor.ui.section.supplemental.CreditSection;
34 import eu.etaxonomy.taxeditor.ui.section.supplemental.ExtensionSection;
35 import eu.etaxonomy.taxeditor.ui.section.supplemental.HeadlineSection;
36 import eu.etaxonomy.taxeditor.ui.section.supplemental.MarkerSection;
37 import eu.etaxonomy.taxeditor.ui.section.supplemental.RightsSection;
38 import eu.etaxonomy.taxeditor.ui.section.supplemental.SourceSection;
39 import eu.etaxonomy.taxeditor.ui.section.supplemental.VersionSection;
40 import eu.etaxonomy.taxeditor.ui.section.supplemental.identifier.IdentifierSection;
41 import eu.etaxonomy.taxeditor.view.AbstractCdmDataViewer;
42 import eu.etaxonomy.taxeditor.view.AbstractCdmViewPart;
43 import eu.etaxonomy.taxeditor.view.detail.DetailsViewer;
44
45 /**
46 * <p>SupplementalDataViewer class.</p>
47 *
48 * @author n.hoffmann
49 * @created Feb 12, 2010
50 * @version 1.0
51 */
52 public class SupplementalDataViewer extends AbstractCdmDataViewer implements ISelectionChangedListener {
53
54 private boolean showDebug;
55
56
57 /**
58 * <p>Constructor for SupplementalDataViewer.</p>
59 *
60 * @param parent a {@link org.eclipse.swt.widgets.Composite} object.
61 * @param viewPart a {@link eu.etaxonomy.taxeditor.view.AbstractCdmViewPart} object.
62 */
63 public SupplementalDataViewer(Composite parent, AbstractCdmViewPart viewPart) {
64 super(parent, viewPart);
65 }
66
67
68 /* (non-Javadoc)
69 * @see org.eclipse.jface.viewers.Viewer#getSelection()
70 */
71 /** {@inheritDoc} */
72 @Override
73 public ISelection getSelection() {
74 return null;
75 }
76
77 /* (non-Javadoc)
78 * @see org.eclipse.jface.viewers.Viewer#setSelection(org.eclipse.jface.viewers.ISelection, boolean)
79 */
80 /** {@inheritDoc} */
81 @Override
82 public void setSelection(ISelection selection, boolean reveal) {
83
84 }
85
86 /* (non-Javadoc)
87 * @see eu.etaxonomy.taxeditor.editor.view.AbstractDetailsViewer#showParts(eu.etaxonomy.cdm.model.common.AnnotatableEntity)
88 */
89 /** {@inheritDoc} */
90 @Override
91 protected void showParts() {
92
93 showDebug = PreferencesUtil.getPreferenceStore().getBoolean(IPreferenceKeys.SHOW_DEBUG_INFORMATION);
94
95 Object input;
96
97 if(getInput() instanceof IElementHasDetails){
98 input = ((IElementHasDetails) getInput()).getData();
99 }else{
100 input = getInput();
101 }
102
103 destroySections();
104 //1. Headline
105 createHeadlineSection(rootElement);
106 //2. Annotatable entitiy
107 if(input instanceof AnnotatableEntity){
108 createAnnotationSections(rootElement);
109 }
110 //3. Identifiable entity
111 if(input instanceof IdentifiableEntity){
112 createIdentifiableSections(rootElement);
113 }
114 //4. Identifiable media entity
115 if(input instanceof IdentifiableMediaEntity){
116 createIdentifiableMediaSections(rootElement);
117 }
118 //5. Versionable
119 if(input instanceof VersionableEntity){
120 createVersionSection(rootElement);
121 }
122 //6. CdmBase
123 if(showDebug){
124 createCdmBaseSection(rootElement);
125 }
126
127 layout();
128 }
129
130
131
132 private void createHeadlineSection(RootElement parent){
133 HeadlineSection headlineSection = formFactory.createHeadlineSection(parent);
134 addPart(headlineSection);
135 }
136
137 private void createAnnotationSections(RootElement parent) {
138 AnnotationSection annotationSection = formFactory.createAnnotationSection(getConversationHolder(), parent, ExpandableComposite.TWISTIE);
139
140 formFactory.createHorizontalSeparator(parent, SWT.BORDER);
141
142 MarkerSection markerSection = formFactory.createMarkerSection(getConversationHolder(), parent, ExpandableComposite.TWISTIE);
143
144 formFactory.createHorizontalSeparator(parent, SWT.BORDER);
145
146 addPart(annotationSection);
147 addPart(markerSection);
148 }
149
150 private void createIdentifiableSections(RootElement parent) {
151
152 ExtensionSection extensionSection = formFactory.createExtensionSection(getConversationHolder(), parent, ExpandableComposite.TWISTIE);
153
154 formFactory.createHorizontalSeparator(parent, SWT.BORDER);
155
156 SourceSection sourceSection = formFactory.createSourceSection(getConversationHolder(), parent, ExpandableComposite.TWISTIE);
157
158 formFactory.createHorizontalSeparator(parent, SWT.BORDER);
159
160 IdentifierSection identifierSection = formFactory.createIdentifierDetailSection(getConversationHolder(), parent, ExpandableComposite.TWISTIE);
161
162 formFactory.createHorizontalSeparator(parent, SWT.BORDER);
163
164 CreditSection creditSection = formFactory.createCreditSection(getConversationHolder(), parent, ExpandableComposite.TWISTIE);
165
166 formFactory.createHorizontalSeparator(parent, SWT.BORDER);
167
168 RightsSection rightsSection = formFactory.createRightsSection(getConversationHolder(), parent, ExpandableComposite.TWISTIE);
169
170 formFactory.createHorizontalSeparator(parent, SWT.BORDER);
171
172 addPart(extensionSection);
173 addPart(sourceSection);
174 addPart(identifierSection);
175 addPart(creditSection);
176 addPart(rightsSection);
177
178 }
179
180 private void createIdentifiableMediaSections(RootElement parent) {
181 MediaSection mediaSection = formFactory.createMediaSection(getConversationHolder(), parent, ExpandableComposite.TWISTIE);
182
183 formFactory.createHorizontalSeparator(parent, SWT.BORDER);
184
185 addPart(mediaSection);
186 }
187
188 private void createVersionSection(RootElement parent){
189 VersionSection versionSection = formFactory.createVersionSection(parent, ExpandableComposite.NO_TITLE | ExpandableComposite.EXPANDED);
190 addPart(versionSection);
191 }
192
193 /**
194 * @param rootElement
195 */
196 private void createCdmBaseSection(RootElement parent) {
197
198 CdmBaseSection cdmBaseSection = formFactory.createCdmBaseSection(parent, ExpandableComposite.NO_TITLE | ExpandableComposite.EXPANDED);
199 addPart(cdmBaseSection);
200 }
201
202 /*
203 * (non-Javadoc)
204 * @see org.eclipse.jface.viewers.ISelectionChangedListener#selectionChanged(org.eclipse.jface.viewers.SelectionChangedEvent)
205 */
206 /** {@inheritDoc} */
207 @Override
208 public void selectionChanged(SelectionChangedEvent event) {
209 if(event.getSource() instanceof DetailsViewer){
210 if(event.getSelection() == CdmFormFactory.EMPTY_SELECTION){
211 setInput(null);
212 return;
213 }
214
215 IStructuredSelection selection = (IStructuredSelection) event.getSelection();
216 setInput(selection.getFirstElement());
217 }
218 }
219
220 @Override
221 public void update(CdmDataChangeMap arg0) {
222 }
223 }