source: tmcsimulator-scriptbuilder/branches/ScriptBuilder4/src/scriptbuilder/gui/panels/TimeStampPanel.java @ 6

Revision 6, 2.9 KB checked in by jdalbey, 9 years ago (diff)

Add original prototype to branch

Line 
1package scriptbuilder.gui.panels;
2
3import java.awt.Dimension;
4import java.awt.Graphics;
5import java.awt.Graphics2D;
6import javax.swing.JPanel;
7import scriptbuilder.gui.ScriptBuilderGuiConstants;
8import scriptbuilder.structures.ScriptIncident;
9import scriptbuilder.structures.SimulationScript;
10
11public class TimeStampPanel extends JPanel
12{
13    private int longestLength = ScriptBuilderGuiConstants.TICK_TIMELINE_SMALLEST_LENGTH;
14
15    public void setZoom(float zoom)
16    {
17        repaint();
18    }
19
20    public TimeStampPanel()
21    {
22        super();
23    }
24
25    public void update(SimulationScript script)
26    {
27        longestLength = ScriptBuilderGuiConstants.TICK_TIMELINE_SMALLEST_LENGTH;
28
29        // Get the stats on the incidents
30        int height = ScriptBuilderGuiConstants.TICK_TOP_MARGIN * 4;
31        for (ScriptIncident incident : script.incidents)
32        {
33            if (incident != null)
34            {
35                height += incident.collapsed ?
36                          ScriptBuilderGuiConstants.TIMELINE_OPENED_HEIGHT  :
37                          ScriptBuilderGuiConstants.TIMELINE_OPENED_HEIGHT;
38                if (incident.length > longestLength)
39                    longestLength = incident.length;
40            }
41        }
42
43        Dimension newSize = new Dimension(longestLength /
44                ScriptBuilderGuiConstants.HORIZONTAL_TICK_RESOLUTION *
45                ScriptBuilderGuiConstants.PIXEL_WIDTH_PER_HORIZONTAL_TICK +
46                ScriptBuilderGuiConstants.TICK_TIMELINE_LEFT_MARGIN + 50,
47                height);
48        this.setPreferredSize(newSize);
49        this.setSize(newSize);
50
51        this.invalidate();
52    }
53
54    @Override
55    public void paint(Graphics g)
56    {
57        super.paint(g);
58
59        Graphics2D g2d = (Graphics2D)g;
60        g2d.setFont(ScriptBuilderGuiConstants.TIMELINE_TICK_TIME_FONT);
61        g2d.setColor(ScriptBuilderGuiConstants.TIMELINE_TICK_COLOR);
62        int longestLengthPlusMargin = longestLength /
63                ScriptBuilderGuiConstants.HORIZONTAL_TICK_RESOLUTION *
64                ScriptBuilderGuiConstants.PIXEL_WIDTH_PER_HORIZONTAL_TICK +
65                ScriptBuilderGuiConstants.TICK_TIMELINE_LEFT_MARGIN;
66        int seconds = 0;
67
68        // Major Ticks
69        g2d.setColor(ScriptBuilderGuiConstants.TIMELINE_TICK_COLOR);
70        seconds = 0;
71        for (int i = ScriptBuilderGuiConstants.TICK_TIMELINE_LEFT_MARGIN;
72             i <= longestLengthPlusMargin;
73             i += ScriptBuilderGuiConstants.PIXEL_WIDTH_PER_HORIZONTAL_TICK *
74                  ScriptBuilderGuiConstants.TICKS_PER_MAJOR_TICK,
75             seconds += ScriptBuilderGuiConstants.HORIZONTAL_TICK_RESOLUTION *
76                        ScriptBuilderGuiConstants.TICKS_PER_MAJOR_TICK)
77        {
78            g2d.drawString(seconds / 3600 + ":" +
79                          (seconds / 60 % 60 > 9 ? seconds / 60 % 60 :
80                                             "0" + seconds / 60 % 60)  +
81                          ":00", i - 25, 18);
82
83        }
84    }
85}
Note: See TracBrowser for help on using the repository browser.