Project

General

Profile

Download (4.13 KB) Statistics
| Branch: | Tag: | Revision:
1
/**
2
 *
3
 */
4
package eu.etaxonomy.taxeditor.editor.view.concept.graph.e4;
5

    
6
import javax.annotation.PostConstruct;
7

    
8
import org.eclipse.e4.ui.model.application.ui.basic.MPart;
9
import org.eclipse.e4.ui.services.EMenuService;
10
import org.eclipse.jface.viewers.StructuredSelection;
11
import org.eclipse.swt.SWT;
12
import org.eclipse.swt.widgets.Composite;
13
import org.eclipse.zest.core.viewers.GraphViewer;
14
import org.eclipse.zest.core.widgets.ZestStyles;
15
import org.eclipse.zest.layouts.LayoutAlgorithm;
16
import org.eclipse.zest.layouts.LayoutStyles;
17
import org.eclipse.zest.layouts.algorithms.TreeLayoutAlgorithm;
18

    
19
import eu.etaxonomy.taxeditor.bulkeditor.e4.BulkEditor;
20
import eu.etaxonomy.taxeditor.editor.e4.TaxonEditorInput;
21
import eu.etaxonomy.taxeditor.editor.l10n.Messages;
22
import eu.etaxonomy.taxeditor.editor.name.e4.TaxonEditor;
23
import eu.etaxonomy.taxeditor.editor.view.concept.graph.ConceptGraphContentProvider;
24
import eu.etaxonomy.taxeditor.editor.view.concept.graph.ConceptGraphLabelProvider;
25
import eu.etaxonomy.taxeditor.editor.view.descriptive.e4.FactualDataPartE4;
26
import eu.etaxonomy.taxeditor.editor.view.media.e4.MediaViewPartE4;
27
import eu.etaxonomy.taxeditor.model.AbstractUtility;
28
import eu.etaxonomy.taxeditor.view.e4.AbstractCdmEditorPart;
29
import eu.etaxonomy.taxeditor.view.e4.details.DetailsPartE4;
30
import eu.etaxonomy.taxeditor.view.e4.supplementaldata.SupplementalDataPartE4;
31

    
32
/**
33
 * @author pplitzner
34
 * @since Sep 27, 2017
35
 */
36
public class ConceptGraphViewE4 extends AbstractCdmEditorPart<GraphViewer> {
37

    
38
	public static final String ID = "eu.etaxonomy.taxeditor.editor.view.concept.graph"; //$NON-NLS-1$
39

    
40
	private LayoutAlgorithm layoutAlgoritm;
41

    
42
	@Override
43
	public void selectionChanged_internal(Object selection, MPart activePart, MPart thisPart) {
44
	    if(activePart==thisPart){
45
	        return;
46
	    }
47

    
48
	    Object partObject = getPartObject(activePart);
49

    
50
	    if (partObject instanceof DetailsPartE4 || partObject instanceof SupplementalDataPartE4
51
	            || partObject instanceof FactualDataPartE4|| partObject instanceof MediaViewPartE4) {
52
	        // do not show empty page as these views are also used to edit the
53
	        // description selected in this view
54
	        return;
55
	    }
56
		if(AbstractUtility.getActiveEditor() == null){
57
			showEmptyPage();
58
			return;
59
		}
60

    
61
		if(partObject instanceof BulkEditor){
62
			showEmptyPage();
63
			return;
64
		}
65

    
66
		if(partObject instanceof TaxonEditor){
67
		    if (viewer.getControl() != null && !viewer.getControl().isDisposed()) {
68
                viewer.getControl().setEnabled(true);
69
            }
70
		    TaxonEditorInput input = ((TaxonEditor) partObject).getEditorInput();
71
		    showViewer(new StructuredSelection(input), activePart, viewer);
72
		}
73
	}
74

    
75
	@Override
76
	public boolean onComplete() {
77
		return false;
78
	}
79

    
80
	@Override
81
	public GraphViewer getViewer() {
82
		return viewer;
83
	}
84

    
85
	@PostConstruct
86
    public void create(Composite parent, EMenuService menuService, MPart thisPart) {
87

    
88
        this.thisPart = thisPart;
89

    
90
        GraphViewer viewer = new GraphViewer(parent, SWT.NONE);
91

    
92
		viewer.setContentProvider(new ConceptGraphContentProvider());
93
		viewer.setLabelProvider(new ConceptGraphLabelProvider());
94

    
95
		viewer.setConnectionStyle(ZestStyles.CONNECTIONS_DIRECTED);
96

    
97
		viewer.setLayoutAlgorithm(getLayoutAlgoritm(), false);
98

    
99
		this.viewer = viewer;
100

    
101
		// Propagate selection from viewer
102
        selectionChangedListener = (event -> selService.setSelection(AbstractUtility.getElementsFromSelectionChangedEvent(event)));
103
        viewer.addSelectionChangedListener(selectionChangedListener);
104

    
105
//		createMenu();
106
//
107
//		createToolbar();
108

    
109

    
110
	}
111

    
112
	private LayoutAlgorithm getLayoutAlgoritm() {
113

    
114
		if (layoutAlgoritm == null) {
115
			// layoutAlgoritm = new CompositeLayoutAlgorithm(
116
			// LayoutStyles.NO_LAYOUT_NODE_RESIZING,
117
			// new LayoutAlgorithm[] {
118
			// new TreeLayoutAlgorithm(
119
			// LayoutStyles.NO_LAYOUT_NODE_RESIZING),
120
			// new HorizontalShift(
121
			// LayoutStyles.NO_LAYOUT_NODE_RESIZING) });
122

    
123
			layoutAlgoritm = new TreeLayoutAlgorithm(
124
					LayoutStyles.NO_LAYOUT_NODE_RESIZING);
125
			layoutAlgoritm.setEntityAspectRatio(0.5);
126
		}
127
		return layoutAlgoritm;
128
	}
129

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

    
135
}
    (1-1/1)