Project

General

Profile

Download (8.14 KB) Statistics
| Branch: | Tag: | Revision:
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
package eu.etaxonomy.taxeditor.view.e4.supplementaldata;
10

    
11
import javax.inject.Inject;
12

    
13
import org.eclipse.e4.core.di.annotations.Optional;
14
import org.eclipse.e4.ui.di.UIEventTopic;
15
import org.eclipse.jface.viewers.ISelection;
16
import org.eclipse.swt.SWT;
17
import org.eclipse.ui.forms.IFormPart;
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.description.DescriptionElementBase;
24
import eu.etaxonomy.cdm.model.media.IdentifiableMediaEntity;
25
import eu.etaxonomy.cdm.model.metadata.PreferencePredicate;
26
import eu.etaxonomy.cdm.model.name.TypeDesignationBase;
27
import eu.etaxonomy.cdm.model.reference.ISourceable;
28
import eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeMap;
29
import eu.etaxonomy.taxeditor.event.WorkbenchEventConstants;
30
import eu.etaxonomy.taxeditor.model.IElementHasDetails;
31
import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
32
import eu.etaxonomy.taxeditor.store.StoreUtil;
33
import eu.etaxonomy.taxeditor.ui.element.RootElement;
34
import eu.etaxonomy.taxeditor.ui.section.media.MediaSection;
35
import eu.etaxonomy.taxeditor.ui.section.supplemental.AnnotationSection;
36
import eu.etaxonomy.taxeditor.ui.section.supplemental.CdmBaseSection;
37
import eu.etaxonomy.taxeditor.ui.section.supplemental.CreditSection;
38
import eu.etaxonomy.taxeditor.ui.section.supplemental.ExtensionSection;
39
import eu.etaxonomy.taxeditor.ui.section.supplemental.HeadlineSection;
40
import eu.etaxonomy.taxeditor.ui.section.supplemental.MarkerSection;
41
import eu.etaxonomy.taxeditor.ui.section.supplemental.RightsSection;
42
import eu.etaxonomy.taxeditor.ui.section.supplemental.SourceSection;
43
import eu.etaxonomy.taxeditor.ui.section.supplemental.VersionSection;
44
import eu.etaxonomy.taxeditor.ui.section.supplemental.identifier.IdentifierSection;
45
import eu.etaxonomy.taxeditor.view.detail.CdmSectionPart;
46
import eu.etaxonomy.taxeditor.view.e4.AbstractCdmDataViewer;
47

    
48
/**
49
 * @author pplitzner
50
 * @since Aug 10, 2017
51
 */
52
public class SupplementalDataViewerE4 extends AbstractCdmDataViewer {
53

    
54
	private boolean showDebug;
55

    
56
	@Override
57
	public ISelection getSelection() {
58
		return null;
59
	}
60

    
61
	@Override
62
	public void setSelection(ISelection selection, boolean reveal) {
63
	}
64

    
65
	@Override
66
	protected void showParts() {
67

    
68
		showDebug = PreferencesUtil.getBooleanValue(PreferencePredicate.ShowUuidAndIdInSupplementalDataView.getKey(), true);
69

    
70
		Object input;
71

    
72
		if(getInput() instanceof IElementHasDetails){
73
			input = ((IElementHasDetails) getInput()).getData();
74
		}else{
75
			input = getInput();
76
		}
77

    
78
		destroySections();
79

    
80
		//1. Headline
81
		createHeadlineSection(rootElement);
82
		//2. Annotatable entitiy
83
		if(input instanceof AnnotatableEntity){
84
				createAnnotationSections(rootElement);
85
		}
86
		//3. Identifiable entity
87
		if(input instanceof IdentifiableEntity){
88
			createIdentifiableSections(rootElement);
89
		}
90
		if(input instanceof ISourceable
91
		        && !(input instanceof IdentifiableEntity)
92
		        && !(input instanceof DescriptionElementBase)
93
		        && !(input instanceof TypeDesignationBase)
94
		        ){
95
            createSourceSection(rootElement);
96
        }
97
		//4. Identifiable media entity
98
		if(input instanceof IdentifiableMediaEntity){
99
			createIdentifiableMediaSections(rootElement);
100
		}
101
		//5. Versionable
102
		if(input instanceof VersionableEntity){
103
				createVersionSection(rootElement);
104
		}
105
		//6. CdmBase
106
		if(showDebug){
107
			createCdmBaseSection(rootElement);
108
		}
109

    
110
		layout();
111
	}
112

    
113
	private void createHeadlineSection(RootElement parent){
114
		HeadlineSection headlineSection = formFactory.createHeadlineSection(parent);
115
		addPart(headlineSection);
116
	}
117

    
118
	private void createSourceSection(RootElement parent){
119
	    int expandStyle = StoreUtil.getSectionStyle(SourceSection.class, getInput().getClass().getCanonicalName(), false);
120
        SourceSection sourceSection =  formFactory.createSourceSection(getConversationHolder(), parent, expandStyle);
121
        formFactory.createHorizontalSeparator(parent, SWT.BORDER);
122
        addPart(sourceSection);
123
    }
124

    
125
    private void createAnnotationSections(RootElement parent) {
126
        int expandStyle = StoreUtil.getSectionStyle(AnnotationSection.class, getInput().getClass().getCanonicalName(), false);
127
        AnnotationSection annotationSection = formFactory.createAnnotationSection(getConversationHolder(), parent, expandStyle);
128

    
129
        formFactory.createHorizontalSeparator(parent, SWT.BORDER);
130
        expandStyle = StoreUtil.getSectionStyle(MarkerSection.class, getInput().getClass().getCanonicalName(), false);
131
        MarkerSection markerSection = formFactory.createMarkerSection(getConversationHolder(), parent, expandStyle);
132

    
133
        formFactory.createHorizontalSeparator(parent, SWT.BORDER);
134

    
135
        addPart(annotationSection);
136
        addPart(markerSection);
137
    }
138

    
139
    private void createIdentifiableSections(RootElement parent) {
140
        int expandStyle = StoreUtil.getSectionStyle(SourceSection.class, getInput().getClass().getCanonicalName(), false);
141
        SourceSection sourceSection = formFactory.createSourceSection(getConversationHolder(), parent, expandStyle);
142

    
143
        formFactory.createHorizontalSeparator(parent, SWT.BORDER);
144
        expandStyle =  StoreUtil.getSectionStyle(IdentifierSection.class, getInput().getClass().getCanonicalName(), false);
145
        IdentifierSection identifierSection = formFactory.createIdentifierDetailSection(getConversationHolder(), parent, expandStyle);
146

    
147
        formFactory.createHorizontalSeparator(parent, SWT.BORDER);
148
        expandStyle =  StoreUtil.getSectionStyle(ExtensionSection.class, getInput().getClass().getCanonicalName(), false);
149
        ExtensionSection extensionSection = formFactory.createExtensionSection(getConversationHolder(), parent, expandStyle);
150

    
151
        formFactory.createHorizontalSeparator(parent, SWT.BORDER);
152
        expandStyle =  StoreUtil.getSectionStyle(CreditSection.class, getInput().getClass().getCanonicalName(), false);
153
        CreditSection creditSection = formFactory.createCreditSection(getConversationHolder(), parent, expandStyle);
154

    
155
        formFactory.createHorizontalSeparator(parent, SWT.BORDER);
156
        expandStyle =  StoreUtil.getSectionStyle(RightsSection.class, getInput().getClass().getCanonicalName(), false);
157
        RightsSection rightsSection = formFactory.createRightsSection(getConversationHolder(), parent, expandStyle);
158

    
159
        formFactory.createHorizontalSeparator(parent, SWT.BORDER);
160

    
161
        addPart(sourceSection);
162
        addPart(identifierSection);
163
        addPart(extensionSection);
164
        addPart(creditSection);
165
        addPart(rightsSection);
166

    
167
	}
168

    
169
    private void createIdentifiableMediaSections(RootElement parent) {
170
        int expandStyle = StoreUtil.getSectionStyle(MediaSection.class, getInput().getClass().getCanonicalName(), false);
171
        MediaSection mediaSection = formFactory.createMediaSection(getConversationHolder(), parent, expandStyle);
172

    
173
        formFactory.createHorizontalSeparator(parent, SWT.BORDER);
174

    
175
        addPart(mediaSection);
176
    }
177

    
178
	private void createVersionSection(RootElement parent){
179
		VersionSection versionSection = formFactory.createVersionSection(parent, ExpandableComposite.NO_TITLE);
180
		addPart(versionSection);
181
	}
182

    
183
	private void createCdmBaseSection(RootElement parent) {
184
		CdmBaseSection cdmBaseSection = formFactory.createCdmBaseSection(parent, ExpandableComposite.NO_TITLE);
185
		addPart(cdmBaseSection);
186
	}
187

    
188
	@Override
189
	public void update(CdmDataChangeMap arg0) {
190
	}
191

    
192
	@Inject
193
    @Optional
194
    private void updateView(@UIEventTopic(WorkbenchEventConstants.REFRESH_SUPPLEMENTAL)boolean refresh){
195
        if(refresh){
196
            this.refresh();
197
        }
198
    }
199

    
200
	public void setEnabled(boolean doEnable){
201
	    for (IFormPart section: this.managedForm.getParts()){
202
	        if (section instanceof CdmSectionPart && !((CdmSectionPart)section).getSection().isDisposed()){
203
	            ((CdmSectionPart)section).getSection().setEnabled(doEnable);
204
	        }
205
	    }
206

    
207
	}
208

    
209
}
(2-2/2)