package org.projectusus.ui.dependencygraph.handlers;
import java.util.Collections;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Set;
import org.eclipse.core.commands.ExecutionException;
import org.eclipse.ui.IWorkbenchPage;
import org.eclipse.ui.PlatformUI;
import org.eclipse.zest.core.viewers.EntityConnectionData;
import org.projectusus.core.basis.PackageHotspot;
import org.projectusus.core.filerelations.model.Packagename;
import org.projectusus.ui.dependencygraph.filters.PackagenameNodeFilter;
import org.projectusus.ui.dependencygraph.views.PackageGraphView;
import org.projectusus.ui.internal.DisplayHotspot;
import org.projectusus.ui.internal.hotspots.commands.AbstractOpenHotspotHandler;
public class OpenHotspotInPackageGraph extends AbstractOpenHotspotHandler<PackageHotspot> {
@Override
protected void open( List<DisplayHotspot<PackageHotspot>> hotspots ) throws ExecutionException {
PackagenameNodeFilter filter = new PackagenameNodeFilter();
Set<Packagename> packages = new LinkedHashSet<Packagename>();
for( DisplayHotspot<PackageHotspot> hotspot : hotspots ) {
packages.addAll( hotspot.getCurrentOrOldHotspot().getElementsInCycle() );
}
filter.setPackages( packages );
filter.setEdges( Collections.<EntityConnectionData> emptySet() );
new DependencyGraphViewFilterer( getActivePage() ).applyFilterToView( PackageGraphView.VIEW_ID, filter );
}
private IWorkbenchPage getActivePage() {
return PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
}
}