package org.codemap.marker;
import static org.codemap.util.CodemapIcons.ERROR;
import static org.codemap.util.CodemapIcons.INFO;
import static org.codemap.util.CodemapIcons.WARNING;
import org.codemap.Location;
import org.codemap.MapSelection;
import org.codemap.layers.SelectionOverlay;
import org.codemap.resources.MapValues;
import org.codemap.util.CodemapIcons;
import org.eclipse.core.resources.IMarker;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.graphics.Device;
import org.eclipse.swt.graphics.GC;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.graphics.Rectangle;
public class MarkersOverlay extends SelectionOverlay {
private MarkerSelection markerSelection;
@Override
public void paintBefore(MapValues map, GC gc) {
Device device = gc.getDevice();
Color orange = new Color(device, 255, 200, 0);
gc.setBackground(orange);
}
@Override
public void paintChild(MapValues map, GC gc, Location each) {
int severity = markerSelection.getSeverity(each.getDocument());
Image image = getImageDescriptor(severity).createImage();
Rectangle offset = image.getBounds();
int offset_x = offset.width/2;
int offset_y = offset.height/2;
gc.drawImage(image, each.px - offset_x, each.py - offset_y);
image.dispose();
}
private ImageDescriptor getImageDescriptor(int severity) {
switch (severity) {
case IMarker.SEVERITY_ERROR:
return CodemapIcons.descriptor(ERROR);
case IMarker.SEVERITY_WARNING:
return CodemapIcons.descriptor(WARNING);
default:
return CodemapIcons.descriptor(INFO);
}
}
public void setMarkerSelection(MarkerSelection selection) {
markerSelection = selection;
}
@Override
public MapSelection getSelection(MapValues map) {
return markerSelection.getSelection();
}
}