1 package io.github.magwas.inez.ui.tree;
2
3 import org.eclipse.jface.action.MenuManager;
4 import org.eclipse.jface.util.LocalSelectionTransfer;
5 import org.eclipse.jface.viewers.IStructuredSelection;
6 import org.eclipse.jface.viewers.TreeViewer;
7 import org.eclipse.swt.SWT;
8 import org.eclipse.swt.dnd.DND;
9 import org.eclipse.swt.dnd.Transfer;
10 import org.eclipse.swt.widgets.Composite;
11 import org.eclipse.swt.widgets.Control;
12 import org.eclipse.swt.widgets.Menu;
13 import org.eclipse.ui.IWorkbench;
14 import org.eclipse.ui.part.ViewPart;
15
16 import io.github.magwas.inez.Inez;
17 import jakarta.inject.Inject;
18
19 public class TreeModelView extends ViewPart {
20 public static final String ID = "io.github.magwas.inez.ui.treeModelView";
21
22 @Inject
23 IWorkbench workbench;
24 @Inject
25 Inez inez;
26 @Inject
27 ModelTreeContentProvider modelTreeContentProvider;
28 @Inject
29 ModelTreeLabelProvider modelTreeLabelProvider;
30 @Inject
31 NewDiagramAction newDiagramAction;
32
33 private TreeViewer viewer;
34
35 @Override
36 public void createPartControl(Composite parent) {
37 viewer = new TreeViewer(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL);
38 viewer.setContentProvider(modelTreeContentProvider);
39 viewer.setLabelProvider(modelTreeLabelProvider);
40 viewer.setInput("parent");
41 Transfer[] transfertypes = new Transfer[] {
42 LocalSelectionTransfer.getTransfer() };
43 int allDrops = DND.DROP_DEFAULT | DND.DROP_COPY | DND.DROP_LINK
44 | DND.DROP_MOVE | DND.DROP_TARGET_MOVE;
45 viewer.addDragSupport(allDrops, transfertypes,
46 new TreeModelDragSourceLIstener(viewer));
47 viewer.addDropSupport(allDrops, transfertypes,
48 new TreeModelDropTargetListener(viewer));
49
50 MenuManager menuManager = new MenuManager();
51 menuManager.setRemoveAllWhenShown(true);
52 menuManager.addMenuListener(manager -> {
53 IStructuredSelection selection = viewer.getStructuredSelection();
54 newDiagramAction.setSelection(selection);
55 menuManager.add(newDiagramAction);
56
57 });
58
59 Control control = viewer.getControl();
60 Menu menu = menuManager.createContextMenu(control);
61 control.setMenu(menu);
62 }
63
64 @Override
65 public void setFocus() {
66 viewer.getControl().setFocus();
67 }
68
69 }