package art.client.GUI.components.devices.window.colors.rtz32.configuration.components; import art.library.gui.FlatGUI; import art.library.model.devices.colors.controller.RTZ32.configuration.RTZ32_Configuration; import art.library.model.devices.colors.controller.RTZ32.configuration.RTZ32_Configuration_Program; import art.library.model.devices.colors.controller.RTZ32.types.RTZ32_Distribution; import java.awt.BasicStroke; import java.awt.Font; import java.awt.Graphics2D; import java.awt.geom.Line2D; import java.awt.geom.Rectangle2D; import javax.swing.JPanel; public class Diagram_Distribution_Bars_Header_Timeline extends JPanel { private RTZ32_Configuration configuration = null; private int programNumber = 0; private RTZ32_Distribution distribution = null; public Diagram_Distribution_Bars_Header_Timeline(RTZ32_Configuration configuration, int programNumber) { this.configuration = configuration; this.programNumber = programNumber; } public void paintTimeline(Graphics2D g2) { try { RTZ32_Configuration_Program program = configuration.getProgram(programNumber); Diagram_Distribution.format(g2); int w = getWidth(); int h = getHeight(); double h1 = 25; double dx = (double)w / (double)program.cycle; int scale = 0; for (int i=0; i<10; i++) { int width = g2.getFontMetrics().stringWidth("999"); if (width < (dx + (dx * i * 5))) { scale = i * 5; break; } } scale = Math.max(scale,5); // Seconds lines g2.setColor(FlatGUI.lookDesign.getColor("label.color.foreground").brighter().brighter().brighter()); g2.setStroke(new BasicStroke(1.0f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_BEVEL, 0.0f, new float[]{1f,3f}, 0.0f)); for (double i=0; i<=program.cycle; i=i+1) { g2.draw(new Line2D.Double(dx * i, h1, dx * i, h)); } // n seconds (scale) lines g2.setStroke(new BasicStroke(1.0f)); Font font = FlatGUI.lookDesign.getFont("label.font").deriveFont((float)(FlatGUI.lookDesign.getFont("label.font").getSize()-2.5f)); for (double i=0; i<=(double)program.cycle; i=i+scale) { g2.setColor(FlatGUI.lookDesign.getColor("label.color.background").darker()); g2.draw(new Line2D.Double(dx * i, 0, dx * i, h)); g2.setColor(FlatGUI.lookDesign.getColor("label.color.foreground")); Diagram_Distribution.drawRightString(g2, "" + (int)(i + scale), new Rectangle2D.Double(dx * i, 0, dx * scale, h1), font); } g2.setColor(FlatGUI.lookDesign.getColor("label.color.background").darker()); g2.draw(new Rectangle2D.Double(0,0,w,h1)); g2.draw(new Rectangle2D.Double(0,0,w,h)); } catch (Exception exception) { } } }