source: trunk/org.modelica.mdt/src/org/modelica/mdt/ui/ProjectsView.java @ 92

Last change on this file since 92 was 89, checked in by boris, 19 years ago
  • removed tracing printouts
  • created org.modelica.mdt.ui package and put stuff there
File size: 3.2 KB
Line 
1package org.modelica.mdt.ui;
2
3import org.eclipse.core.resources.IResourceChangeEvent;
4import org.eclipse.core.resources.IResourceChangeListener;
5import org.eclipse.core.resources.IWorkspace;
6import org.eclipse.core.resources.ResourcesPlugin;
7
8import org.eclipse.jface.action.IMenuListener;
9import org.eclipse.jface.action.IMenuManager;
10import org.eclipse.jface.action.MenuManager;
11import org.eclipse.jface.action.Separator;
12import org.eclipse.jface.viewers.TreeViewer;
13
14import org.eclipse.swt.SWT;
15import org.eclipse.swt.widgets.Composite;
16import org.eclipse.swt.widgets.Menu;
17import org.eclipse.ui.IWorkbenchActionConstants;
18import org.eclipse.ui.model.WorkbenchLabelProvider;
19import org.eclipse.ui.part.DrillDownAdapter;
20import org.eclipse.ui.part.ViewPart;
21import org.modelica.mdt.core.ModelicaCore;
22
23public class ProjectsView extends ViewPart
24{
25    private TreeViewer viewer;
26    private DrillDownAdapter drillDownAdapter;
27    private IResourceChangeListener resourceListener;
28
29
30    @Override
31    public void createPartControl(Composite parent)
32    {
33        IWorkspace workspace = ResourcesPlugin.getWorkspace();
34        viewer =
35            new TreeViewer(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL);
36
37        viewer.setContentProvider(new ModelicaElementContentProvider());
38        //viewer.setLabelProvider(new ModelicaElementLabelProvider());
39        viewer.setLabelProvider(new WorkbenchLabelProvider());
40        viewer.setInput(ModelicaCore.getModelicaRoot());
41
42        drillDownAdapter = new DrillDownAdapter(viewer);
43       
44        hookContextMenu();
45       
46        resourceListener = new IResourceChangeListener()
47        {
48            public void resourceChanged(IResourceChangeEvent event)
49            {
50                if (event.getType() != IResourceChangeEvent.POST_CHANGE)
51                {
52                     return;
53                }
54
55                //TODO this must be made more selective
56                // a list of objects (tree-nodes) need to be made
57                // from resource delta and posted to UI thread
58                // se http://www.eclipse.org/articles/Article-Resource-deltas/resource-deltas.html
59                getViewSite().getShell().getDisplay().asyncExec(new Runnable()
60                {
61                     public void run()
62                     {
63                         viewer.refresh(true);
64                     }
65                });
66            }
67        };
68        workspace.addResourceChangeListener(resourceListener);
69    }
70
71    @Override
72    public void setFocus()
73    {
74        viewer.getTree().setFocus();
75    }
76   
77    private void hookContextMenu()
78    {
79        MenuManager menuMgr = new MenuManager("#PopupMenu");
80        menuMgr.setRemoveAllWhenShown(true);
81        menuMgr.addMenuListener(new IMenuListener()
82        {
83            public void menuAboutToShow(IMenuManager manager)
84            {
85                ProjectsView.this.fillContextMenu(manager);
86            }
87        });
88        Menu menu = menuMgr.createContextMenu(viewer.getControl());
89        viewer.getControl().setMenu(menu);
90        getSite().registerContextMenu(menuMgr, viewer);
91    }
92
93    private void fillContextMenu(IMenuManager manager) 
94    {
95        manager.add(new Separator());
96        drillDownAdapter.addNavigationActions(manager);
97        // Other plug-ins can contribute there actions here
98        manager.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS));
99    }
100
101    @Override
102    public void dispose()
103    {
104        super.dispose();
105        ResourcesPlugin.getWorkspace().removeResourceChangeListener(resourceListener);
106    }
107
108}
Note: See TracBrowser for help on using the repository browser.