Changeset 4 for trunk/src


Ignore:
Timestamp:
09/08/05 19:40:05 (19 years ago)
Author:
boris
Message:
  • modelica projects view refreshes on resource changes
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/modelica/mdt/ProjectsView.java

    r2 r4  
    55import org.eclipse.core.resources.IProject;
    66import org.eclipse.core.resources.IResource;
     7import org.eclipse.core.resources.IResourceChangeEvent;
     8import org.eclipse.core.resources.IResourceChangeListener;
     9import org.eclipse.core.resources.IWorkspace;
    710import org.eclipse.core.resources.ResourcesPlugin;
    811import org.eclipse.core.runtime.CoreException;
     
    2629    private TreeViewer viewer;
    2730    private DrillDownAdapter drillDownAdapter;
     31    private IResourceChangeListener resourceListener;
     32
     33
     34    public class ProjectsLabelProvider extends WorkbenchLabelProvider
     35    {
     36
     37    }
    2838
    2939    public class ProjectsTreeContentProvider implements ITreeContentProvider
     
    3141
    3242        public Object[] getElements(Object inputElement)
    33         {       
     43        {
    3444            return getChildren(inputElement);
    35             //return ((IWorkspaceRoot)inputElement).getProjects();
    3645        }
    3746       
     
    4251        public void inputChanged(Viewer viewer, Object oldInput, Object newInput)
    4352        {
    44             //TODO figure out what the heck this method is doing
    45             System.out.println("input changed !!!");
    4653        }
    4754
     
    9198    public void createPartControl(Composite parent)
    9299    {
     100        IWorkspace workspace = ResourcesPlugin.getWorkspace();
    93101        viewer =
    94102            new TreeViewer(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL);
    95103
    96104        viewer.setContentProvider(new ProjectsTreeContentProvider());
    97         viewer.setLabelProvider(new WorkbenchLabelProvider());
    98         viewer.setInput(ResourcesPlugin.getWorkspace().getRoot());
     105        viewer.setLabelProvider(new ProjectsLabelProvider());
     106        viewer.setInput(workspace.getRoot());
     107
    99108        drillDownAdapter = new DrillDownAdapter(viewer);
    100109       
    101110        hookContextMenu();
     111       
     112        resourceListener = new IResourceChangeListener()
     113        {
     114            public void resourceChanged(IResourceChangeEvent event)
     115            {
     116                if (event.getType() != IResourceChangeEvent.POST_CHANGE)
     117                {
     118                     return;
     119                }
     120
     121                //TODO this must be made more selective
     122                // a list of objects (tree-nodes) need to be made
     123                // from resource delta and posted to UI thread
     124                // se http://www.eclipse.org/articles/Article-Resource-deltas/resource-deltas.html
     125                getViewSite().getShell().getDisplay().asyncExec(new Runnable()
     126                {
     127                     public void run()
     128                     {
     129                         viewer.refresh(true);
     130                     }
     131                });
     132            }
     133        };
     134        workspace.addResourceChangeListener(resourceListener);
    102135    }
    103136
     
    108141    }
    109142   
    110     private void hookContextMenu() {
     143    private void hookContextMenu()
     144    {
    111145        MenuManager menuMgr = new MenuManager("#PopupMenu");
    112146        menuMgr.setRemoveAllWhenShown(true);
    113         menuMgr.addMenuListener(new IMenuListener() {
    114             public void menuAboutToShow(IMenuManager manager) {
     147        menuMgr.addMenuListener(new IMenuListener()
     148        {
     149            public void menuAboutToShow(IMenuManager manager)
     150            {
    115151                ProjectsView.this.fillContextMenu(manager);
    116152            }
     
    129165    }
    130166
     167    @Override
     168    public void dispose()
     169    {
     170        super.dispose();
     171        ResourcesPlugin.getWorkspace().removeResourceChangeListener(resourceListener);
     172    }
     173
    131174}
Note: See TracChangeset for help on using the changeset viewer.