ref #7854: minor
[taxeditor.git] / eu.etaxonomy.taxeditor.editor / src / main / java / eu / etaxonomy / taxeditor / editor / view / uses / e4 / UsesViewPartE4.java
1 /**
2 * Copyright (C) 2011 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.editor.view.uses.e4;
10
11 import javax.annotation.PostConstruct;
12
13 import org.eclipse.e4.core.contexts.ContextInjectionFactory;
14 import org.eclipse.e4.core.contexts.IEclipseContext;
15 import org.eclipse.e4.ui.model.application.ui.basic.MPart;
16 import org.eclipse.e4.ui.services.EMenuService;
17 import org.eclipse.jface.viewers.TreeViewer;
18 import org.eclipse.swt.SWT;
19 import org.eclipse.swt.dnd.Transfer;
20 import org.eclipse.swt.widgets.Composite;
21 import org.eclipse.swt.widgets.Tree;
22
23 import eu.etaxonomy.taxeditor.editor.l10n.Messages;
24 import eu.etaxonomy.taxeditor.editor.view.descriptive.DescriptionElementDragListener;
25 import eu.etaxonomy.taxeditor.editor.view.descriptive.DescriptionElementDropAdapter;
26 import eu.etaxonomy.taxeditor.editor.view.descriptive.DescriptionElementTransfer;
27 import eu.etaxonomy.taxeditor.editor.view.descriptive.e4.FactualDataPartE4;
28 import eu.etaxonomy.taxeditor.editor.view.uses.UsesContentProvider;
29 import eu.etaxonomy.taxeditor.editor.view.uses.UsesLabelProvider;
30
31
32 /**
33 *
34 * @author pplitzner
35 * @since Sep 8, 2017
36 *
37 */
38 public class UsesViewPartE4 extends FactualDataPartE4 {
39
40 //FIXME E4 implement delete handler
41
42 @Override
43 @PostConstruct
44 public void create(Composite parent, EMenuService menuService, MPart thisPart,
45 IEclipseContext context) {
46
47 this.thisPart = thisPart;
48
49 TreeViewer treeViewer = new TreeViewer(new Tree(parent, SWT.H_SCROLL
50 | SWT.V_SCROLL | SWT.FULL_SELECTION | SWT.MULTI));
51 treeViewer.setContentProvider(new UsesContentProvider(featureNodeContainerCache));
52 treeViewer.setLabelProvider(new UsesLabelProvider());
53 treeViewer.setAutoExpandLevel(2);
54
55 Transfer[] transfers = new Transfer[] { DescriptionElementTransfer.getInstance() };
56 treeViewer.addDragSupport(dndOperations, transfers, new DescriptionElementDragListener(
57 this));
58 DescriptionElementDropAdapter dropListener = new DescriptionElementDropAdapter(treeViewer);
59 ContextInjectionFactory.inject(dropListener, context);
60 treeViewer.addDropSupport(dndOperations, transfers,
61 dropListener);
62
63
64
65 // Propagate selection from viewer
66 selectionChangedListener = (event -> selService.setSelection(event.getSelection()));
67 treeViewer.addSelectionChangedListener(selectionChangedListener);
68
69 //create context menu
70 menuService.registerContextMenu(treeViewer.getControl(), "eu.etaxonomy.taxeditor.editor.popupmenu.usesView");
71
72 viewer = treeViewer;
73 }
74
75 @Override
76 protected String getViewName(){
77 return Messages.UsesViewPart_VIEWER_NAME;
78 }
79
80 /** {@inheritDoc} */
81 @Override
82 public boolean postOperation(Object objectAffectedByOperation) {
83 viewer.refresh();
84 return super.postOperation(objectAffectedByOperation);
85 }
86
87 }