package net.sourceforge.pmd.eclipse.ui.preferences.br;
import java.util.Comparator;
import net.sourceforge.pmd.RulePriority;
import net.sourceforge.pmd.eclipse.runtime.builder.MarkerUtil;
import net.sourceforge.pmd.eclipse.ui.ItemColumnDescriptor;
import net.sourceforge.pmd.eclipse.ui.ItemFieldAccessor;
import net.sourceforge.pmd.eclipse.ui.ItemFieldAccessorAdapter;
import net.sourceforge.pmd.eclipse.ui.nls.StringKeys;
import net.sourceforge.pmd.eclipse.ui.priority.PriorityDescriptorCache;
import net.sourceforge.pmd.eclipse.util.Util;
import org.eclipse.core.resources.IMarker;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.widgets.Display;
/**
*
* @author Brian Remedios
*/
public interface MarkerColumnsUI {
Comparator<RulePriority> compPriority = new Comparator<RulePriority>() { public int compare(RulePriority a, RulePriority b) { return a.compareTo(b); } };
ItemFieldAccessor<RulePriority, IMarker> priorityAcc = new ItemFieldAccessorAdapter<RulePriority, IMarker>(compPriority) {
public RulePriority valueFor(IMarker marker) {
int prio = MarkerUtil.rulePriorityFor(marker, 1);
return RulePriority.valueOf(prio);
}
};
ItemFieldAccessor<Image, IMarker> priorityImgAcc = new ItemFieldAccessorAdapter<Image, IMarker>(null) {
final Display display = Display.getCurrent();
public Image imageFor(IMarker marker) {
RulePriority rp = priorityAcc.valueFor(marker);
return PriorityDescriptorCache.instance.descriptorFor(rp).getImage(display);
}
};
ItemFieldAccessor<Integer, IMarker> lineNoAcc = new ItemFieldAccessorAdapter<Integer, IMarker>(Util.compInt) {
public Integer valueFor(IMarker marker) { return (Integer)marker.getAttribute(IMarker.LINE_NUMBER, 0); }
};
ItemFieldAccessor<Long, IMarker> createdAcc = new ItemFieldAccessorAdapter<Long, IMarker>(Util.compLong) {
public Long valueFor(IMarker marker) { return MarkerUtil.createdOn(marker, -1); }
};
ItemFieldAccessor<Boolean, IMarker> doneAcc = new ItemFieldAccessorAdapter<Boolean, IMarker>(Util.compBool) {
public Boolean valueFor(IMarker marker) { return MarkerUtil.doneState(marker, false); }
};
ItemFieldAccessor<String, IMarker> ruleNameAcc = new ItemFieldAccessorAdapter<String, IMarker>(Util.compStr) {
public String valueFor(IMarker marker) { return MarkerUtil.ruleNameFor(marker); }
};
ItemFieldAccessor<String, IMarker> messageAcc = new ItemFieldAccessorAdapter<String, IMarker>(Util.compStr) {
public String valueFor(IMarker marker) { return MarkerUtil.messageFor(marker, "??"); }
};
ItemColumnDescriptor<Image, IMarker> priority = new ItemColumnDescriptor<Image, IMarker>("tPriority", "Priority", SWT.CENTER, 20, false, priorityImgAcc);
ItemColumnDescriptor<Boolean, IMarker> done = new ItemColumnDescriptor<Boolean, IMarker>("tDone", "done", SWT.LEFT, 50, false, doneAcc);
ItemColumnDescriptor<Long, IMarker> created = new ItemColumnDescriptor<Long, IMarker>("tCreated", "created", SWT.LEFT, 130, true, createdAcc, ValueFormatter.TimeFormatters);
ItemColumnDescriptor<String, IMarker> ruleName = new ItemColumnDescriptor<String, IMarker>("tRuleName", "Rule", SWT.LEFT, 190, true, ruleNameAcc);
ItemColumnDescriptor<String, IMarker> message = new ItemColumnDescriptor<String, IMarker>("tMsg", StringKeys.VIEW_OUTLINE_COLUMN_MESSAGE, SWT.LEFT, 260, true, messageAcc);
ItemColumnDescriptor<Integer, IMarker> lineNumber = new ItemColumnDescriptor<Integer, IMarker>("tLineNo", StringKeys.VIEW_OUTLINE_COLUMN_LINE, SWT.LEFT, 50, false, lineNoAcc);
}