View Javadoc
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  }