- Timestamp:
- 09/12/05 15:43:54 (19 years ago)
- Location:
- trunk/src/org/modelica/mdt
- Files:
-
- 1 added
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/org/modelica/mdt/ProjectsView.java
r4 r5 1 1 package org.modelica.mdt; 2 2 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;26 3 27 public class ProjectsView extends ViewPart 4 import org.eclipse.ui.views.navigator.ResourceNavigator; 5 6 public class ProjectsView extends ResourceNavigator 28 7 { 29 private TreeViewer viewer;30 private DrillDownAdapter drillDownAdapter;31 private IResourceChangeListener resourceListener;32 33 34 public class ProjectsLabelProvider extends WorkbenchLabelProvider35 {36 37 }38 39 public class ProjectsTreeContentProvider implements ITreeContentProvider40 {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 try60 {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 @Override98 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 selective122 // a list of objects (tree-nodes) need to be made123 // from resource delta and posted to UI thread124 // se http://www.eclipse.org/articles/Article-Resource-deltas/resource-deltas.html125 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 @Override138 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 here164 manager.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS));165 }166 167 @Override168 public void dispose()169 {170 super.dispose();171 ResourcesPlugin.getWorkspace().removeResourceChangeListener(resourceListener);172 }173 8 174 9 }
Note: See TracChangeset
for help on using the changeset viewer.