package art.servers.colorsserver.M.gui.diagrams; import java.awt.BasicStroke; import java.awt.Color; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.RenderingHints; import java.awt.Stroke; import java.awt.geom.Line2D; import java.awt.geom.Rectangle2D; import javax.swing.JLabel; import art.library.gui.FlatGUI; public class DiagramColors extends JLabel { private int color = 0; public static final String textColors[] = new String[25]; private static final float[] dashFast = {1.5f, 1.5f}; private static final float[] dashSlow = {3.0f, 3.0f}; private static final float[] dashDouble = {4.0f, 2.0f, 8.0f, 2.0f}; public DiagramColors(int color) { this.color = color; } public void paint (Graphics g) { Graphics2D g2 = (Graphics2D)g; g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); g2.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY); g2.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON); g2.setRenderingHint(RenderingHints.KEY_DITHERING, RenderingHints.VALUE_DITHER_DEFAULT); g2.setRenderingHint(RenderingHints.KEY_FRACTIONALMETRICS, RenderingHints.VALUE_FRACTIONALMETRICS_ON); g2.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_NEAREST_NEIGHBOR); g2.setRenderingHint(RenderingHints.KEY_ALPHA_INTERPOLATION, RenderingHints.VALUE_ALPHA_INTERPOLATION_QUALITY); g2.setRenderingHint(RenderingHints.KEY_COLOR_RENDERING, RenderingHints.VALUE_COLOR_RENDER_QUALITY); g2.setRenderingHint(RenderingHints.KEY_STROKE_CONTROL, RenderingHints.VALUE_STROKE_NORMALIZE); DiagramColors.paint(g2, 0, 0, getWidth(), getHeight(), color); } public static void paint (Graphics2D g2, double x, double y, double w, double h, int color) { y = y + 3; h = h - 6; double centery = y + (h/2); float height1 = (float)(h * 0.60f); float height2 = (float)(h * 0.40f); try { Color colorA = null; Color colorB = null; Color colorC = null; Stroke strokeA = null; Stroke strokeB = null; Stroke strokeC = null; Stroke strokeNone1 = new BasicStroke(height1, BasicStroke.CAP_BUTT, BasicStroke.JOIN_BEVEL); Stroke strokeFast1 = new BasicStroke(height1, BasicStroke.CAP_BUTT, BasicStroke.JOIN_BEVEL, 0.0f, dashFast, 0.0f); Stroke strokeSlow1 = new BasicStroke(height1, BasicStroke.CAP_BUTT, BasicStroke.JOIN_BEVEL, 0.0f, dashSlow, 0.0f); Stroke strokeDouble1 = new BasicStroke(height1, BasicStroke.CAP_BUTT, BasicStroke.JOIN_BEVEL, 0.0f, dashDouble, 0.0f); Stroke strokeNone2 = new BasicStroke(height2, BasicStroke.CAP_BUTT, BasicStroke.JOIN_BEVEL); Stroke strokeFast2 = new BasicStroke(height2, BasicStroke.CAP_BUTT, BasicStroke.JOIN_BEVEL, 0.0f, dashFast, 0.0f); Stroke strokeSlow2 = new BasicStroke(height2, BasicStroke.CAP_BUTT, BasicStroke.JOIN_BEVEL, 0.0f, dashSlow, 0.0f); Stroke strokeDouble2 = new BasicStroke(height2, BasicStroke.CAP_BUTT, BasicStroke.JOIN_BEVEL, 0.0f, dashDouble, 0.0f); switch (color) { case 0 : colorA = Color.lightGray; strokeA = strokeNone1; break; case 1 : colorA = Color.green; strokeA = strokeNone1; break; case 2 : colorA = Color.yellow; strokeA = strokeNone1; break; case 3 : colorA = Color.red; strokeA = strokeNone1; break; case 4 : colorA = Color.green; strokeA = strokeSlow1; break; case 5 : colorA = Color.yellow; strokeA = strokeSlow1; break; case 12 : colorA = Color.white; strokeA = strokeNone1; break; case 13 : colorA = Color.white; strokeA = strokeNone1; break; case 14 : colorA = Color.white; strokeA = strokeNone1; break; case 15 : colorA = Color.white; strokeA = strokeNone1; break; case 16 : colorA = Color.white; strokeA = strokeNone1; break; case 17 : colorA = Color.green; strokeA = strokeSlow1; break; case 18 : colorA = Color.red; strokeA = strokeSlow1; break; case 6 : colorA = Color.green; strokeA = strokeNone2; colorB = Color.yellow; strokeB = strokeDouble2; break; case 7 : colorA = Color.green; strokeA = strokeNone2; colorB = Color.red; strokeB = strokeFast2; break; case 8 : colorA = Color.red; strokeA = strokeNone2; colorB = Color.yellow; strokeB = strokeNone2; break; case 9 : colorA = Color.green; strokeA = strokeNone2; colorB = Color.yellow; strokeB = strokeSlow2; break; case 10 : colorA = Color.green; strokeA = strokeFast2; colorB = Color.yellow; strokeB = strokeSlow2; break; case 11 : colorA = Color.red; strokeA = strokeNone2; colorB = Color.yellow; strokeB = strokeSlow2; break; case 20 : colorA = Color.red; strokeA = strokeFast2; colorB = Color.yellow; strokeB = strokeSlow2; break; case 23 : colorA = Color.green; strokeA = strokeNone2; colorB = Color.yellow; strokeB = strokeNone2; break; case 19 : colorA = Color.yellow; strokeA = strokeDouble1; colorC = Color.red; strokeB = strokeNone1; break; case 21 : colorA = Color.yellow; strokeA = strokeDouble1; colorC = Color.green; strokeB = strokeNone1; break; case 22 : colorA = Color.green; strokeA = strokeNone2; colorB = Color.red; strokeB = strokeNone2; colorC = Color.yellow; strokeC = strokeDouble2; break; default : colorA = Color.magenta; strokeA = strokeNone1; break; } if ((colorB == null) && (colorC == null)) { g2.setColor(colorA); g2.setStroke(strokeA); g2.draw(new Line2D.Double(x, centery, x + w, centery)); g2.setStroke(new BasicStroke(1.0f)); g2.setColor(FlatGUI.lookDesign.getColor("label.color.background").darker()); g2.draw(new Line2D.Double(x, centery - height1/2, x + w, centery - height1/2)); g2.draw(new Line2D.Double(x, centery + height1/2, x + w, centery + height1/2)); } else if ((colorB != null) && (colorC == null)) { g2.setColor(colorA); g2.setStroke(strokeA); g2.draw(new Line2D.Double(x, centery - height2/2, x + w, centery - height2/2)); g2.setColor(colorB); g2.setStroke(strokeB); g2.draw(new Line2D.Double(x, centery + height2/2, x + w, centery + height2/2)); g2.setStroke(new BasicStroke(1.0f)); g2.setColor(FlatGUI.lookDesign.getColor("label.color.background").darker()); g2.draw(new Line2D.Double(x, centery - height2, x + w, centery - height2)); g2.draw(new Line2D.Double(x, centery + height2, x + w, centery + height2)); } else if ((colorB == null) && (colorC != null)) { g2.setColor(colorC); g2.setStroke(strokeB); g2.draw(new Line2D.Double(x, centery, x + w, centery)); g2.setColor(colorA); g2.setStroke(strokeA); g2.draw(new Line2D.Double(x, centery, x + w, centery)); g2.setStroke(new BasicStroke(1.0f)); g2.setColor(FlatGUI.lookDesign.getColor("label.color.background").darker()); g2.draw(new Line2D.Double(x, centery - height1/2, x + w, centery - height1/2)); g2.draw(new Line2D.Double(x, centery, x + w, centery)); g2.draw(new Line2D.Double(x, centery + height1/2, x + w, centery + height1/2)); } else { g2.setColor(colorA); g2.setStroke(strokeA); g2.draw(new Line2D.Double(x, centery - height2/2, x + w, centery - height2/2)); g2.setColor(colorB); g2.setStroke(strokeB); g2.draw(new Line2D.Double(x, centery + height2/2, x + w, centery + height2/2)); g2.setColor(colorC); g2.setStroke(strokeC); g2.draw(new Line2D.Double(x, centery + height2/2, x + w, centery + height2/2)); g2.setStroke(new BasicStroke(1.0f)); g2.setColor(FlatGUI.lookDesign.getColor("label.color.background").darker()); g2.draw(new Line2D.Double(x, centery - height2, x + w, centery - height2)); g2.draw(new Line2D.Double(x, centery, x + w, centery)); g2.draw(new Line2D.Double(x, centery + height2, x + w, centery + height2)); } } catch (Exception e) { g2.setBackground(Color.magenta); g2.draw(new Rectangle2D.Double(x, y, w, h)); } } }