/* * This software is Copyright 2005,2006,2007,2008 Langdale Consultants. * Langdale Consultants can be contacted at: http://www.langdale.com.au */ package au.com.langdale.cimtoole.views; import org.eclipse.core.resources.IFile; import org.eclipse.core.resources.IResourceChangeEvent; import org.eclipse.core.resources.IResourceChangeListener; import org.eclipse.core.resources.ResourcesPlugin; import org.eclipse.jface.viewers.ISelectionChangedListener; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jface.viewers.SelectionChangedEvent; import org.eclipse.jface.viewers.TreePath; import org.eclipse.jface.viewers.TreeViewer; import org.eclipse.swt.SWT; import org.eclipse.swt.widgets.Composite; import org.eclipse.ui.IEditorDescriptor; import org.eclipse.ui.IEditorRegistry; import org.eclipse.ui.PartInitException; import org.eclipse.ui.PlatformUI; import org.eclipse.ui.part.FileEditorInput; import org.eclipse.ui.part.ViewPart; import au.com.langdale.workspace.ResourceUI; public class ValidationView extends ViewPart { private TreeViewer viewer; private IEditorRegistry registry; @Override public void createPartControl(Composite parent) { viewer = new TreeViewer(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL); ResourceUI.displayWorkspace(viewer, ResourceUI.VALIDATION_FILTER); viewer.setInput(ResourcesPlugin.getWorkspace().getRoot()); //viewer.addOpenListener(listenerAlt); viewer.addSelectionChangedListener(listener); getSite().setSelectionProvider(viewer); registry = PlatformUI.getWorkbench().getEditorRegistry(); ResourcesPlugin.getWorkspace().addResourceChangeListener(resourceListener, IResourceChangeEvent.POST_CHANGE); } // private IOpenListener listenerAlt = new IOpenListener() { // // public void open(OpenEvent event) { // if (event.getSelection() instanceof IStructuredSelection) { // IStructuredSelection selection = (IStructuredSelection) event.getSelection(); // if (selection.getFirstElement() instanceof IFile) { // IFile file = (IFile) selection.getFirstElement(); // IEditorDescriptor editor = registry.getDefaultEditor(file.getName()); // if( editor != null) // try { // getViewSite().getPage().openEditor(new FileEditorInput(file), editor.getId()); // } catch (PartInitException e) { // throw new RuntimeException(e); // } // // } // } // } // }; private ISelectionChangedListener listener = new ISelectionChangedListener() { public void selectionChanged(SelectionChangedEvent event) { if (event.getSelection() instanceof IStructuredSelection) { IStructuredSelection selection = (IStructuredSelection) event.getSelection(); if (selection.getFirstElement() instanceof IFile) { IFile file = (IFile) selection.getFirstElement(); IEditorDescriptor editor = registry.getDefaultEditor(file.getName()); if( editor != null) try { getViewSite().getPage().openEditor(new FileEditorInput(file), editor.getId()); } catch (PartInitException e) { throw new RuntimeException(e); } } } } }; private IResourceChangeListener resourceListener = new IResourceChangeListener(){ public void resourceChanged(IResourceChangeEvent event) { PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() { public void run() { TreePath[] elements = viewer.getExpandedTreePaths(); viewer.refresh(); viewer.setExpandedTreePaths(elements); } }); } }; @Override public void setFocus() { } }