/*******************************************************************************
* Copyright (c) 2010 Oak Ridge National Laboratory.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
******************************************************************************/
package org.csstudio.swt.widgets.figures;
import org.csstudio.swt.xygraph.linearscale.LinearScale;
import org.csstudio.swt.xygraph.linearscale.LinearScaledMarker;
import org.csstudio.swt.xygraph.util.XYGraphMediaFactory;
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, XYGraphMediaFactory.COLOR_RED);
marker.addMarkerElement(LO, loLevel, XYGraphMediaFactory.COLOR_ORANGE);
marker.addMarkerElement(HI, hiLevel, XYGraphMediaFactory.COLOR_ORANGE);
marker.addMarkerElement(HIHI, hihiLevel, XYGraphMediaFactory.COLOR_RED);
}
@Override
public void setShowMarkers(boolean showMarkers) {
super.setShowMarkers(showMarkers);
marker.setVisible(showMarkers);
}
@Override
public void setLoloLevel(double loloLevel) {
super.setLoloLevel(loloLevel);
marker.setMarkerElementValue(LOLO, loloLevel);
}
@Override
public void setLoLevel(double loLevel) {
super.setLoLevel(loLevel);
marker.setMarkerElementValue(LO, loLevel);
}
@Override
public void setHiLevel(double hiLevel) {
super.setHiLevel(hiLevel);
marker.setMarkerElementValue(HI, hiLevel);
}
@Override
public void setHihiLevel(double hihiLevel) {
super.setHihiLevel(hihiLevel);
marker.setMarkerElementValue(HIHI, hihiLevel);
}
@Override
public void setShowLolo(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(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(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(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(Color color) {
super.setLoloColor(color);
marker.setMarkerElementColor(LOLO, color.getRGB());
}
@Override
public void setLoColor(Color color) {
super.setLoColor(color);
marker.setMarkerElementColor(LO, color.getRGB());
}
@Override
public void setHiColor(Color color) {
super.setHiColor(color);
marker.setMarkerElementColor(HI, color.getRGB());
}
@Override
public void setHihiColor(Color color) {
super.setHihiColor(color);
marker.setMarkerElementColor(HIHI, color.getRGB());
}
@Override
public void setRange(double min, double max) {
super.setRange(min, max);
marker.setDirty(true);
}
@Override
public void setLogScale(boolean logScale) {
super.setLogScale(logScale);
marker.setDirty(true);
}
}