Changeset 5 for trunk/src


Ignore:
Timestamp:
09/12/05 15:43:54 (19 years ago)
Author:
boris
Message:
  • skeleton for new modelica project added
  • all custom hackary removed from 'modelica projects' view, it's just a navigator for now
Location:
trunk/src/org/modelica/mdt
Files:
1 added
1 edited

Legend:

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

    r4 r5  
    11package org.modelica.mdt;
    22
    3 import org.eclipse.core.resources.IContainer;
    4 import org.eclipse.core.resources.IFolder;
    5 import org.eclipse.core.resources.IProject;
    6 import org.eclipse.core.resources.IResource;
    7 import org.eclipse.core.resources.IResourceChangeEvent;
    8 import org.eclipse.core.resources.IResourceChangeListener;
    9 import org.eclipse.core.resources.IWorkspace;
    10 import org.eclipse.core.resources.ResourcesPlugin;
    11 import org.eclipse.core.runtime.CoreException;
    12 import org.eclipse.jface.action.IMenuListener;
    13 import org.eclipse.jface.action.IMenuManager;
    14 import org.eclipse.jface.action.MenuManager;
    15 import org.eclipse.jface.action.Separator;
    16 import org.eclipse.jface.viewers.ITreeContentProvider;
    17 import org.eclipse.jface.viewers.TreeViewer;
    18 import org.eclipse.jface.viewers.Viewer;
    19 import org.eclipse.swt.SWT;
    20 import org.eclipse.swt.widgets.Composite;
    21 import org.eclipse.swt.widgets.Menu;
    22 import org.eclipse.ui.IWorkbenchActionConstants;
    23 import org.eclipse.ui.model.WorkbenchLabelProvider;
    24 import org.eclipse.ui.part.DrillDownAdapter;
    25 import org.eclipse.ui.part.ViewPart;
    263
    27 public class ProjectsView extends ViewPart
     4import org.eclipse.ui.views.navigator.ResourceNavigator;
     5
     6public class ProjectsView extends ResourceNavigator
    287{
    29     private TreeViewer viewer;
    30     private DrillDownAdapter drillDownAdapter;
    31     private IResourceChangeListener resourceListener;
    32 
    33 
    34     public class ProjectsLabelProvider extends WorkbenchLabelProvider
    35     {
    36 
    37     }
    38 
    39     public class ProjectsTreeContentProvider implements ITreeContentProvider
    40     {
    41 
    42         public Object[] getElements(Object inputElement)
    43         {
    44             return getChildren(inputElement);
    45         }
    46        
    47         public void dispose()
    48         {
    49         }
    50 
    51         public void inputChanged(Viewer viewer, Object oldInput, Object newInput)
    52         {
    53         }
    54 
    55         public Object[] getChildren(Object parent)
    56         {
    57             if (parent instanceof IContainer)
    58             {
    59                 try
    60                 {
    61                     return ((IContainer)parent).members();
    62                 }
    63                 catch (CoreException e)
    64                 {
    65                     //TODO should we do something here ?
    66                     e.printStackTrace();
    67                 }
    68             }
    69             else if (parent instanceof IResource)
    70             {
    71                
    72             }
    73             return null;
    74         }
    75 
    76         public Object getParent(Object element)
    77         {
    78             return null;
    79         }
    80 
    81         public boolean hasChildren(Object element)
    82         {
    83             if (element instanceof IProject)
    84             {
    85                 return ((IProject)element).isOpen();
    86             }
    87             else if (element instanceof IFolder)
    88             {
    89                 return true;
    90             }
    91             return false;
    92         }
    93 
    94 
    95     }
    96 
    97     @Override
    98     public void createPartControl(Composite parent)
    99     {
    100         IWorkspace workspace = ResourcesPlugin.getWorkspace();
    101         viewer =
    102             new TreeViewer(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL);
    103 
    104         viewer.setContentProvider(new ProjectsTreeContentProvider());
    105         viewer.setLabelProvider(new ProjectsLabelProvider());
    106         viewer.setInput(workspace.getRoot());
    107 
    108         drillDownAdapter = new DrillDownAdapter(viewer);
    109        
    110         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);
    135     }
    136 
    137     @Override
    138     public void setFocus()
    139     {
    140         viewer.getTree().setFocus();
    141     }
    142    
    143     private void hookContextMenu()
    144     {
    145         MenuManager menuMgr = new MenuManager("#PopupMenu");
    146         menuMgr.setRemoveAllWhenShown(true);
    147         menuMgr.addMenuListener(new IMenuListener()
    148         {
    149             public void menuAboutToShow(IMenuManager manager)
    150             {
    151                 ProjectsView.this.fillContextMenu(manager);
    152             }
    153         });
    154         Menu menu = menuMgr.createContextMenu(viewer.getControl());
    155         viewer.getControl().setMenu(menu);
    156         getSite().registerContextMenu(menuMgr, viewer);
    157     }
    158 
    159     private void fillContextMenu(IMenuManager manager)
    160     {
    161         manager.add(new Separator());
    162         drillDownAdapter.addNavigationActions(manager);
    163         // Other plug-ins can contribute there actions here
    164         manager.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS));
    165     }
    166 
    167     @Override
    168     public void dispose()
    169     {
    170         super.dispose();
    171         ResourcesPlugin.getWorkspace().removeResourceChangeListener(resourceListener);
    172     }
    1738
    1749}
Note: See TracChangeset for help on using the changeset viewer.