package org.projectusus.ui.dependencygraph.handlers;
import org.eclipse.core.commands.ExecutionException;
import org.eclipse.ui.IWorkbenchPage;
import org.eclipse.ui.PartInitException;
import org.projectusus.ui.dependencygraph.common.DependencyGraphView;
import org.projectusus.ui.dependencygraph.filters.NodeAndEdgeFilter;
public class DependencyGraphViewFilterer {
private final IWorkbenchPage page;
public DependencyGraphViewFilterer( IWorkbenchPage page ) {
this.page = page;
}
public void applyFilterToView( String viewId, NodeAndEdgeFilter filter ) throws ExecutionException {
activateView( viewId ).replaceCustomFilter( filter );
}
private DependencyGraphView activateView( String viewId ) throws ExecutionException {
DependencyGraphView view = findView( viewId, page );
if( view == null ) {
showView( viewId, page );
view = findView( viewId, page );
}
page.activate( view );
return view;
}
private DependencyGraphView findView( String viewId, IWorkbenchPage page ) {
return (DependencyGraphView)page.findView( viewId );
}
private void showView( String viewId, IWorkbenchPage page ) throws ExecutionException {
try {
page.showView( viewId );
} catch( PartInitException exception ) {
throw new ExecutionException( "Could not open view", exception );
}
}
}