package org.csstudio.sds.components.ui.internal.figures;
import org.csstudio.swt.xygraph.linearscale.LinearScale;
import org.csstudio.swt.xygraph.linearscale.LinearScaledMarker;
import org.csstudio.ui.util.CustomMediaFactory;
import org.eclipse.swt.graphics.Color;
/**
* Abstract linear marked figure. The figure also includes a scale.
* The marker and scale have been created in the constructor.
* @author Xihui Chen
*
*/
public class AbstractLinearMarkedFigure extends AbstractMarkedWidgetFigure {
private static final String HIHI = "HIHI";
private static final String HI = "HI";
private static final String LO = "LO";
private static final String LOLO = "LOLO";
protected LinearScaledMarker marker;
public AbstractLinearMarkedFigure() {
scale = new LinearScale();
marker = new LinearScaledMarker((LinearScale) scale);
marker.addMarkerElement(LOLO, loloLevel, CustomMediaFactory.COLOR_RED);
marker.addMarkerElement(LO, loLevel, CustomMediaFactory.COLOR_ORANGE);
marker.addMarkerElement(HI, hiLevel, CustomMediaFactory.COLOR_ORANGE);
marker.addMarkerElement(HIHI, hihiLevel, CustomMediaFactory.COLOR_RED);
}
@Override
public void setShowMarkers(final boolean showMarkers) {
super.setShowMarkers(showMarkers);
marker.setVisible(showMarkers);
}
@Override
public void setLoloLevel(final double loloLevel) {
super.setLoloLevel(loloLevel);
marker.setMarkerElementValue(LOLO, loloLevel);
}
@Override
public void setLoLevel(final double loLevel) {
super.setLoLevel(loLevel);
marker.setMarkerElementValue(LO, loLevel);
}
@Override
public void setHiLevel(final double hiLevel) {
super.setHiLevel(hiLevel);
marker.setMarkerElementValue(HI, hiLevel);
}
@Override
public void setHihiLevel(final double hihiLevel) {
super.setHihiLevel(hihiLevel);
marker.setMarkerElementValue(HIHI, hihiLevel);
}
@Override
public void setShowLolo(final boolean showLolo) {
super.setShowLolo(showLolo);
if(showLolo) {
if(loloColor != null) {
marker.addMarkerElement(LOLO, loloLevel, loloColor.getRGB());
} else {
marker.addMarkerElement(LOLO, loloLevel);
}
} else {
marker.removeMarkerElement(LOLO);
}
revalidate();
}
@Override
public void setShowLo(final boolean showLo) {
super.setShowLo(showLo);
if(showLo) {
if(loColor != null) {
marker.addMarkerElement(LO, loLevel, loColor.getRGB());
} else {
marker.addMarkerElement(LO, loLevel);
}
} else {
marker.removeMarkerElement(LO);
}
revalidate();
}
@Override
public void setShowHi(final boolean showHi) {
super.setShowHi(showHi);
if(showHi) {
if(hiColor != null) {
marker.addMarkerElement(HI, hiLevel, hiColor.getRGB());
} else {
marker.addMarkerElement(HI, hiLevel);
}
} else {
marker.removeMarkerElement(HI);
}
revalidate();
}
@Override
public void setShowHihi(final boolean showHihi) {
super.setShowHihi(showHihi);
if(showHihi) {
if(hihiColor != null) {
marker.addMarkerElement(HIHI, hihiLevel, hihiColor.getRGB());
} else {
marker.addMarkerElement(HIHI, hihiLevel);
}
} else {
marker.removeMarkerElement(HIHI);
}
revalidate();
}
@Override
public void setLoloColor(final Color color) {
super.setLoloColor(color);
marker.setMarkerElementColor(LOLO, color.getRGB());
}
@Override
public void setLoColor(final Color color) {
super.setLoColor(color);
marker.setMarkerElementColor(LO, color.getRGB());
}
@Override
public void setHiColor(final Color color) {
super.setHiColor(color);
marker.setMarkerElementColor(HI, color.getRGB());
}
@Override
public void setHihiColor(final Color color) {
super.setHihiColor(color);
marker.setMarkerElementColor(HIHI, color.getRGB());
}
@Override
public void setRange(final double min, final double max) {
super.setRange(min, max);
marker.setDirty(true);
}
@Override
public void setLogScale(final boolean logScale) {
super.setLogScale(logScale);
marker.setDirty(true);
}
}