package jpaoletti.jpm.core.operations;
import java.util.List;
import jpaoletti.jpm.core.EntityInstanceWrapper;
import jpaoletti.jpm.core.InstanceId;
import jpaoletti.jpm.core.PMContext;
import jpaoletti.jpm.core.PMException;
/**
*
* @author jpaoletti
*/
public class InvertSelection extends ListOperation {
public InvertSelection(String operationId) {
super(operationId);
}
public InvertSelection() {
super("invertselection");
}
@Override
protected void doExecute(PMContext ctx) throws PMException {
super.doExecute(ctx);
final List<Object> contents = (List<Object>) ctx.get(LIST_CONTENTS);
for (Object object : contents) {
final InstanceId id = ctx.getDataAccess().getInstanceId(ctx, new EntityInstanceWrapper(object));
final List<InstanceId> selectedIndexes = ctx.getEntityContainer().getSelectedInstanceIds();
if (selectedIndexes.contains(id)) {
selectedIndexes.remove(id);
} else {
selectedIndexes.add(id);
}
}
}
}