import java.awt.Color; import java.awt.Graphics; class StereoLights { private int x; private int y; private int height; private int width; private int nLights; private int prevLevel; private int ledHeight; private int ledWidth; private Color base; private Color normal; private Color extreme; private Color uNormal; private Color uExtreme; public void draw(Graphics g, int i) { if (i > nLights) i = nLights; if (prevLevel < i) { prevLevel++; if (prevLevel > nLights - 3) g.setColor(extreme); else g.setColor(normal); g.fill3DRect(x, y + height - prevLevel * ledHeight, ledWidth, ledHeight - 2, true); return; } if (prevLevel > i) { if (prevLevel > nLights - 3) g.setColor(uExtreme); else g.setColor(uNormal); g.fill3DRect(x, y + height - prevLevel * ledHeight, ledWidth, ledHeight - 2, true); prevLevel += -1; } } public void setPosition(int i, int j) { x = i; y = j; } public void setSize(int i, int j, int k) { height = j; width = i; nLights = k - 1; ledHeight = height / nLights; ledWidth = width - 2; } public StereoLights() { base = Color.white; normal = Color.green; extreme = Color.red; uNormal = normal.darker(); uExtreme = extreme.darker(); int i = 0; do { uNormal = uNormal.darker(); uExtreme = uExtreme.darker(); } while (++i < 3); } public void setColors(Color color1, Color color2, Color color3) { base = color1; normal = color2; extreme = color3; uNormal = normal.darker(); uExtreme = extreme.darker(); int i = 0; do { uNormal = uNormal.darker(); uExtreme = uExtreme.darker(); } while (++i < 3); } public void refresh(Graphics g) { prevLevel = 0; g.setColor(uNormal); for (int i = 1; i < nLights - 2; i++) g.fill3DRect(x, y + height - i * ledHeight, ledWidth, ledHeight - 2, true); g.setColor(uExtreme); for (int j = nLights - 2; j < nLights + 1; j++) g.fill3DRect(x, y + height - j * ledHeight, ledWidth, ledHeight - 2, true); g.setColor(base); g.fill3DRect(x, y + height, ledWidth, ledHeight - 2, true); } }