Project

General

Profile

Download (4.75 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

    
10
package eu.etaxonomy.taxeditor.editor.view.media.e4;
11

    
12
import javax.annotation.PostConstruct;
13
import javax.inject.Inject;
14

    
15
import org.eclipse.e4.ui.model.application.ui.basic.MPart;
16
import org.eclipse.e4.ui.services.EMenuService;
17
import org.eclipse.e4.ui.workbench.modeling.ESelectionService;
18
import org.eclipse.jface.viewers.AbstractTreeViewer;
19
import org.eclipse.jface.viewers.ISelectionChangedListener;
20
import org.eclipse.jface.viewers.IStructuredSelection;
21
import org.eclipse.jface.viewers.StructuredSelection;
22
import org.eclipse.jface.viewers.TreeNode;
23
import org.eclipse.jface.viewers.TreeViewer;
24
import org.eclipse.swt.SWT;
25
import org.eclipse.swt.widgets.Composite;
26
import org.eclipse.swt.widgets.Tree;
27

    
28
import eu.etaxonomy.cdm.model.description.IDescribable;
29
import eu.etaxonomy.taxeditor.editor.MultiPageTaxonEditor;
30
import eu.etaxonomy.taxeditor.editor.l10n.Messages;
31
import eu.etaxonomy.taxeditor.editor.view.descriptive.e4.FactualDataPartE4;
32
import eu.etaxonomy.taxeditor.editor.view.media.MediaContentProvider;
33
import eu.etaxonomy.taxeditor.editor.view.media.MediaLabelProvider;
34
import eu.etaxonomy.taxeditor.model.AbstractUtility;
35
import eu.etaxonomy.taxeditor.model.IPartContentHasDetails;
36
import eu.etaxonomy.taxeditor.model.IPartContentHasMedia;
37
import eu.etaxonomy.taxeditor.model.IPartContentHasSupplementalData;
38
import eu.etaxonomy.taxeditor.view.e4.AbstractCdmEditorPartE4;
39
import eu.etaxonomy.taxeditor.view.e4.details.DetailsPartE4;
40
import eu.etaxonomy.taxeditor.view.e4.supplementaldata.SupplementalDataPartE4;
41

    
42
/**
43
 *
44
 * @author pplitzner
45
 * @since Aug 14, 2017
46
 *
47
 */
48
public class MediaViewPartE4 extends AbstractCdmEditorPartE4
49
        implements IPartContentHasDetails, IPartContentHasSupplementalData {
50

    
51
    private ISelectionChangedListener selectionChangedListener;
52

    
53
	@Inject
54
	private ESelectionService selService;
55

    
56
	@PostConstruct
57
	public void create(Composite parent, EMenuService menuService) {
58

    
59
		TreeViewer treeViewer = new TreeViewer(new Tree(parent, SWT.H_SCROLL
60
				| SWT.V_SCROLL | SWT.FULL_SELECTION));
61

    
62
		treeViewer.setContentProvider(new MediaContentProvider());
63
		treeViewer.setLabelProvider(new MediaLabelProvider());
64
		treeViewer.setAutoExpandLevel(2);
65
		viewer = treeViewer;
66

    
67
		// Propagate selection from viewer
68
        selectionChangedListener = (event -> selService.setSelection(AbstractUtility.getElementsFromSelectionChangedEvent(event)));
69
        viewer.addSelectionChangedListener(selectionChangedListener);
70

    
71
        //create context menu
72
        menuService.registerContextMenu(viewer.getControl(), "eu.etaxonomy.taxeditor.editor.popupmenu.mediaview");
73

    
74
	}
75

    
76
    @Override
77
    public void selectionChanged_internal(Object selection, MPart activePart, MPart thisPart) {
78
	    if(activePart==thisPart){
79
	        return;
80
	    }
81

    
82
	    Object partObject = createPartObject(activePart);
83

    
84
	    if (partObject instanceof DetailsPartE4 || partObject instanceof SupplementalDataPartE4
85
	            || partObject instanceof FactualDataPartE4) {
86
	        // do not show empty page as these views are also used to edit the
87
	        // description selected in this view
88
	        return;
89
	    }
90

    
91
	    if(partObject instanceof IPartContentHasMedia && ((IPartContentHasMedia) partObject).canAttachMedia()){
92
	        IStructuredSelection structuredSelection = createSelection(selection);
93
	        if(structuredSelection==null || structuredSelection.isEmpty()){
94
	            showEmptyPage();
95
	            return;
96
	        }
97

    
98
	        Object firstElement = structuredSelection.getFirstElement();
99
	        if (partObject instanceof MultiPageTaxonEditor){
100
	            if (firstElement != ((MultiPageTaxonEditor)partObject).getTaxon()){
101
	                showEmptyPage();
102
	                return;
103
	            }
104
	        }
105
	        if(firstElement instanceof TreeNode){
106
	            showViewer(new StructuredSelection(((TreeNode) firstElement).getValue()), activePart, viewer);
107
	            return;
108
	        }
109
	        else if(firstElement!=null
110
	                && firstElement instanceof IDescribable<?>){
111
	            showViewer(structuredSelection, activePart, viewer);
112
	            return;
113
	        }
114
	    }
115
	    showEmptyPage();
116
	    return;
117
	}
118

    
119
	/** {@inheritDoc} */
120
	@Override
121
	public void changed(Object object) {
122
	    ((AbstractTreeViewer) viewer).expandToLevel(2);
123
	    viewer.refresh();
124
	    if(object != null){
125
	        StructuredSelection selection = new StructuredSelection(object);
126
	        viewer.setSelection(selection, true);
127
	    }
128
	    super.changed(object);
129
	}
130

    
131
	@Override
132
	protected String getViewName() {
133
		return Messages.MediaViewPart_MEDIA;
134
	}
135

    
136
}
    (1-1/1)