package org.projectusus.ui.internal.coveredprojects;
import java.util.List;
import org.eclipse.core.resources.IProject;
import org.eclipse.jface.action.Action;
import org.eclipse.jface.action.IAction;
import org.eclipse.jface.viewers.ISelection;
import org.projectusus.jfeet.selection.ElementsFrom;
import org.projectusus.ui.internal.UsusUIPlugin;
class SetUsusProjectOnSelection extends Action {
static IAction checkSelected( CoveredProjectsView coveredProjectsView, ISelection selection ) {
SetUsusProjectOnSelection setUsus = new SetUsusProjectOnSelection( coveredProjectsView, selection );
setUsus.checked = true;
setUsus.setText( "Add to Usus projects" ); //$NON-NLS-1$
setUsus.setImageDescriptor( UsusUIPlugin.getImageDescriptor( "icons/full/elcl16/check.gif" ) ); //$NON-NLS-1$
return setUsus;
}
static IAction uncheckSelected( CoveredProjectsView coveredProjectsView, ISelection selection ) {
SetUsusProjectOnSelection setUsus = new SetUsusProjectOnSelection( coveredProjectsView, selection );
setUsus.checked = false;
setUsus.setText( "Remove from Usus projects" ); //$NON-NLS-1$
setUsus.setImageDescriptor( UsusUIPlugin.getImageDescriptor( "icons/full/elcl16/uncheck.gif" ) ); //$NON-NLS-1$
return setUsus;
}
private final CoveredProjectsView coveredProjectsView;
private final ISelection selection;
private boolean checked;
private SetUsusProjectOnSelection( CoveredProjectsView coveredProjectsView, ISelection selection ) {
this.coveredProjectsView = coveredProjectsView;
this.selection = selection;
updateEnablement();
}
@Override
public void run() {
markProjects( getSelectedProjects() );
coveredProjectsView.refresh();
}
private void markProjects( List<IProject> selectedProjects ) {
UsusProjectMarker marker = new UsusProjectMarker();
if( checked ) {
marker.check( selectedProjects );
} else {
marker.uncheck( selectedProjects );
}
}
private void updateEnablement() {
setEnabled( !getSelectedProjects().isEmpty() );
}
private List<IProject> getSelectedProjects() {
return new ElementsFrom( selection ).as( IProject.class );
}
}