package edu.neu.ccs.eclipse.LoDChecker;

import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.part.ViewPart;
import org.eclipse.jface.viewers.ListViewer;
import org.eclipse.ui.IWorkbenchPage;
import org.eclipse.jface.viewers.IDoubleClickListener;
import org.eclipse.jface.viewers.DoubleClickEvent;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.core.resources.IFile;

/*
 * View displaying list of java files selected in the 
 * Resource Navigator view  
 */
public class JFView extends ViewPart {
 private ListViewer viewer;
  
 public void createPartControl(Composite parent) {
  viewer=new ListViewer(parent);

  IWorkbenchPage page=PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
  ViewerInput input=new ViewerInput(page.getSelection("org.eclipse.ui.views.ResourceNavigator"));

  //register input as domain model (i.e. selection) listener within the page
  page.addSelectionListener(input);

  viewer.setContentProvider(new JFContentProvider());
  viewer.setLabelProvider(new JFLabelProvider());
  viewer.setInput(input);
  viewer.addDoubleClickListener(
    new IDoubleClickListener() {
      public void doubleClick(DoubleClickEvent event) { 
        if (event.getSelection()!=null &&
            event.getSelection() instanceof IStructuredSelection) 
           openEditor((IStructuredSelection)event.getSelection());
      }

    }
  );
 }

  public void setFocus() {}

  protected void openEditor(IStructuredSelection selection) {
    if (selection.getFirstElement() instanceof IFile) {
      try{
        IWorkbenchPage page=PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
        page.openEditor((IFile)selection.getFirstElement());
      } catch (org.eclipse.ui.PartInitException e) {}
    }
  } 

}
