package org.codemap.mapview;
import java.util.ArrayList;
import org.eclipse.jdt.core.ICompilationUnit;
import org.eclipse.jface.action.Action;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.IStructuredSelection;
public class SelectionInfoAction extends Action {
private static final String PREFIX = "selection: ";
private static final String EMPTY = "<empty>";
public SelectionInfoAction(ISelection selection) {
if (!(selection instanceof IStructuredSelection)) {
// only structured selections make sense in our context.
// thus if it is not a structured selection, it must be an empty one.
setText(PREFIX + EMPTY);
return;
}
IStructuredSelection structuredSelection = (IStructuredSelection) selection;
ArrayList<ICompilationUnit> compilationUnits = new ArrayList<ICompilationUnit>();
for(Object entry: structuredSelection.toList()) {
if (!(entry instanceof ICompilationUnit)) continue;
compilationUnits.add((ICompilationUnit) entry);
}
setText(PREFIX + makeText(compilationUnits));
}
private String makeText(ArrayList<ICompilationUnit> compilationUnits) {
if (compilationUnits.isEmpty()) {
return EMPTY;
}
if (compilationUnits.size() == 1) {
ICompilationUnit unit = compilationUnits.get(0);
return unit.getElementName();
}
return compilationUnits.size() + " Classes";
}
}