package org.projectusus.ui.dependencygraph.common;
import org.eclipse.ui.IEditorPart;
import org.eclipse.ui.IEditorReference;
import org.eclipse.ui.IWorkbenchPage;
import org.eclipse.ui.IWorkbenchPartReference;
import org.eclipse.ui.PlatformUI;
import org.projectusus.ui.util.PartAdapter;
public class SelectionSynchronizationListener extends PartAdapter {
private final DependencyGraphView graphView;
public SelectionSynchronizationListener( DependencyGraphView dependencyGraphView ) {
this.graphView = dependencyGraphView;
}
@Override
public void partActivated( IWorkbenchPartReference partRef ) {
synchronizeWith( partRef );
}
@Override
public void partBroughtToTop( IWorkbenchPartReference partRef ) {
synchronizeWith( partRef );
}
@Override
public void partOpened( IWorkbenchPartReference partRef ) {
synchronizeWith( partRef );
}
@Override
public void partVisible( IWorkbenchPartReference partRef ) {
synchronizeWith( partRef );
}
@Override
public void partInputChanged( IWorkbenchPartReference partRef ) {
synchronizeWith( partRef );
}
private void synchronizeWith( IWorkbenchPartReference partRef ) {
if( partRef instanceof IEditorReference && isActive( partRef ) ) {
IEditorPart editor = ((IEditorReference)partRef).getEditor( true );
if( editor != null ) {
graphView.selectNodeFromActiveEditor( editor );
}
}
}
public boolean isActive( IWorkbenchPartReference partRef ) {
IWorkbenchPage activePage = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
return activePage != null && activePage.getActivePartReference() == partRef;
}
}