1 package org.simantics.scl.ui.modulebrowser;
3 import org.eclipse.jface.action.Action;
4 import org.eclipse.jface.action.IMenuListener;
5 import org.eclipse.jface.action.IMenuManager;
6 import org.eclipse.jface.action.IToolBarManager;
7 import org.eclipse.jface.action.MenuManager;
8 import org.eclipse.jface.viewers.DoubleClickEvent;
9 import org.eclipse.jface.viewers.IDoubleClickListener;
10 import org.eclipse.jface.viewers.ISelection;
11 import org.eclipse.jface.viewers.IStructuredSelection;
12 import org.eclipse.swt.SWT;
13 import org.eclipse.swt.widgets.Composite;
14 import org.eclipse.swt.widgets.Menu;
15 import org.eclipse.ui.part.ViewPart;
16 import org.simantics.scl.osgi.SCLOsgi;
17 import org.simantics.scl.ui.Activator;
18 import org.simantics.scl.ui.editor2.OpenSCLModule;
20 public class SCLModuleBrowser extends ViewPart {
22 SCLModuleTree content;
25 public void createPartControl(Composite parent) {
26 this.content = new SCLModuleTree(parent, SWT.NONE, SCLOsgi.MODULE_REPOSITORY);
27 setPartName("SCL Modules");
30 content.addDoubleClickListener(new IDoubleClickListener() {
32 public void doubleClick(DoubleClickEvent event) {
33 ISelection selection = event.getSelection();
34 if(!(selection instanceof IStructuredSelection))
36 ModuleNameTreeEntry entry = (ModuleNameTreeEntry)((IStructuredSelection)selection).getFirstElement();
38 OpenSCLModule.openModule(entry.fullName);
43 IToolBarManager toolBarManager = getViewSite().getActionBars().getToolBarManager();
44 toolBarManager.add(new Action("Refresh modules",
45 Activator.imageDescriptorFromPlugin("org.simantics.scl.ui", "icons/arrow_refresh.png")) {
53 MenuManager menuMgr = new MenuManager();
54 menuMgr.setRemoveAllWhenShown(true);
55 menuMgr.addMenuListener(new IMenuListener() {
56 public void menuAboutToShow(IMenuManager manager) {
57 ModuleNameTreeEntry entry = (ModuleNameTreeEntry)content.getStructuredSelection().getFirstElement();
59 manager.add(new Action("New Module...") {
62 CreateModuleDialog dialog = new CreateModuleDialog(content.getControl().getShell(), SCLModuleBrowser.this);
63 dialog.setPackage(entry.fullName);
69 Menu menu = menuMgr.createContextMenu(content.getControl());
70 content.getControl().setMenu(menu);
71 getSite().registerContextMenu(menuMgr, content);
74 public void refresh() {
75 SCLOsgi.MODULE_REPOSITORY.getSourceRepository().checkUpdates();
76 content.recalculateInput();
80 public void setFocus() {
81 content.getControl().setFocus();