Package org.codemap.mapview

Source Code of org.codemap.mapview.EditorPartListener

package org.codemap.mapview;

import java.util.ArrayList;
import java.util.Collection;
import java.util.List;

import org.codemap.MapSelection;
import org.codemap.util.Resources;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IWorkspace;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.ui.IEditorInput;
import org.eclipse.ui.IEditorPart;
import org.eclipse.ui.IEditorReference;
import org.eclipse.ui.IPartListener;
import org.eclipse.ui.IPathEditorInput;
import org.eclipse.ui.IWorkbenchPart;


public class EditorPartListener implements IPartListener {

  private MapSelection editorSelection;
  private MapSelection youAreHereSelection;
    private VisitedFilesHistory trace;

  public EditorPartListener(MapSelection editorSelection, MapSelection youAreHereSelection, MapController theController) {
    this.editorSelection = editorSelection;
    this.youAreHereSelection = youAreHereSelection;
    trace = new VisitedFilesHistory(theController);
  }

  @Override
  public void partActivated(IWorkbenchPart part) {
    // not related to our interests
  }

  @Override
  public void partBroughtToTop(IWorkbenchPart part) {
    updateEditorSelection(part);
    updateYouAreHereSelection(part);
  }

  @Override
  public void partClosed(IWorkbenchPart part) {
    updateEditorSelection(part);
  }

  @Override
  public void partDeactivated(IWorkbenchPart part) {
    // not related to our interests
  }

  @Override
  public void partOpened(IWorkbenchPart part) {
    updateEditorSelection(part);
  }

  private void updateEditorSelection(IWorkbenchPart part) {
    if (!(part instanceof IEditorPart)) return;
    Collection<String> selection = new ArrayList<String>();
    for (IEditorReference each: part.getSite().getPage().getEditorReferences()) {
        //restore the editor parts to be able to access the content.
            for (IFile file: getFiles(each.getPart(true))) {
                selection.add(Resources.asPath(file));
            }
    }
    editorSelection.replaceAll(selection);
    if (selection.isEmpty()) youAreHereSelection.clear();
  }
 
  @SuppressWarnings("deprecation")
  private IFile[] getFiles(IWorkbenchPart part) {
    if (!(part instanceof IEditorPart)) return new IFile[] {};
    IEditorInput input = ((IEditorPart) part).getEditorInput();
    if (!(input instanceof IPathEditorInput)) return new IFile[] {};
    IPathEditorInput pathInput = (IPathEditorInput) input;
//    System.out.println(pathInput.getPath());
    IWorkspace workspace = ResourcesPlugin.getWorkspace();
    return workspace.getRoot().findFilesForLocation(pathInput.getPath());
  }

  private void updateYouAreHereSelection(IWorkbenchPart part) {
    List<String> selection = new ArrayList<String>();
    for (IFile file: getFiles(part)) {
      selection.add(Resources.asPath(file));
    }
    youAreHereSelection.replaceAll(selection);
    trace.append(selection);
  }

    public VisitedFilesHistory getTrace() {
        return trace;
    }

}
TOP

Related Classes of org.codemap.mapview.EditorPartListener

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.