|
@@ -11,6 +11,7 @@ import javax.swing.ImageIcon;
|
|
|
import javax.swing.JButton;
|
|
|
import javax.swing.JPanel;
|
|
|
import javax.swing.JSlider;
|
|
|
+import javax.swing.Timer;
|
|
|
import javax.swing.border.LineBorder;
|
|
|
|
|
|
import ui.controller.Control;
|
|
@@ -22,22 +23,39 @@ public class TimePanel extends JPanel {
|
|
|
private Control controller;
|
|
|
|
|
|
JSlider timeSlider = new JSlider();
|
|
|
- private final JPanel timePanel = new JPanel();
|
|
|
private final JPanel timeBtnPanel = new JPanel();
|
|
|
private final JButton playBtn = new JButton();
|
|
|
private final JButton timeResetBtn = new JButton();
|
|
|
private final JButton timeForwardBtn = new JButton();
|
|
|
private final JButton timeBackwardBtn = new JButton();
|
|
|
+ private Timer timer;
|
|
|
+ private boolean running = false;
|
|
|
|
|
|
/**
|
|
|
*
|
|
|
*/
|
|
|
private static final long serialVersionUID = 1L;
|
|
|
|
|
|
- public TimePanel(Model model, Control controller) {
|
|
|
+ public TimePanel(Model mod, Control cont) {
|
|
|
super();
|
|
|
- this.model = model;
|
|
|
- //// Time Slider. Panels and Buttons
|
|
|
+ this.model = mod;
|
|
|
+ this.controller = cont;
|
|
|
+
|
|
|
+ // One Iteration
|
|
|
+ timer = new Timer(1000, new ActionListener() {
|
|
|
+ @Override
|
|
|
+ public void actionPerformed(ActionEvent ae) {
|
|
|
+ timeSlider.setValue(timeSlider.getValue() + 1);
|
|
|
+ if (timeSlider.getValue() == model.getIterations()) {
|
|
|
+ running = false;
|
|
|
+ playBtn.setIcon(new ImageIcon(new ImageIcon(this.getClass().getResource("/Button_Images/play.png"))
|
|
|
+ .getImage().getScaledInstance(30, 30, Image.SCALE_SMOOTH)));
|
|
|
+ timer.stop();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+ // Time Slider. Panels and Buttons
|
|
|
this.setLayout(new BorderLayout(0, 0));
|
|
|
|
|
|
// Slider
|
|
@@ -49,14 +67,34 @@ public class TimePanel extends JPanel {
|
|
|
timeSlider.setMaximum(model.getIterations());
|
|
|
timeSlider.setValue(1);
|
|
|
timeSlider.setBackground(Color.WHITE);
|
|
|
+ timeBtnPanel.setBackground(Color.WHITE);
|
|
|
|
|
|
// Buttons
|
|
|
timeBtnPanel.setLayout(new FlowLayout(FlowLayout.CENTER, 0, 0));
|
|
|
|
|
|
+ playBtn.setBackground(Color.WHITE);
|
|
|
+ playBtn.setBorderPainted(false);
|
|
|
playBtn.setBorder(new LineBorder(Color.WHITE, 4));
|
|
|
playBtn.setIcon(new ImageIcon(new ImageIcon(this.getClass().getResource("/Button_Images/play.png")).getImage()
|
|
|
.getScaledInstance(30, 30, Image.SCALE_SMOOTH)));
|
|
|
+ playBtn.addActionListener(new ActionListener() {
|
|
|
+ @Override
|
|
|
+ public void actionPerformed(ActionEvent e) {
|
|
|
+ running = !running;
|
|
|
+ if (running) {
|
|
|
+ timer.start();
|
|
|
+ playBtn.setIcon(new ImageIcon(new ImageIcon(this.getClass().getResource("/Button_Images/pause.png"))
|
|
|
+ .getImage().getScaledInstance(30, 30, Image.SCALE_SMOOTH)));
|
|
|
+ } else {
|
|
|
+ timer.stop();
|
|
|
+ playBtn.setIcon(new ImageIcon(new ImageIcon(this.getClass().getResource("/Button_Images/play.png"))
|
|
|
+ .getImage().getScaledInstance(30, 30, Image.SCALE_SMOOTH)));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ });
|
|
|
|
|
|
+ timeResetBtn.setBorderPainted(false);
|
|
|
+ timeResetBtn.setBackground(Color.WHITE);
|
|
|
timeResetBtn.setBorder(new LineBorder(Color.WHITE, 4));
|
|
|
timeResetBtn.setIcon(new ImageIcon(new ImageIcon(this.getClass().getResource("/Button_Images/reset.png"))
|
|
|
.getImage().getScaledInstance(30, 30, Image.SCALE_SMOOTH)));
|
|
@@ -66,6 +104,7 @@ public class TimePanel extends JPanel {
|
|
|
}
|
|
|
});
|
|
|
|
|
|
+ timeForwardBtn.setBorderPainted(false);
|
|
|
timeForwardBtn.setContentAreaFilled(false);
|
|
|
timeForwardBtn.setBorder(new LineBorder(Color.WHITE, 4));
|
|
|
timeForwardBtn.setIcon(new ImageIcon(new ImageIcon(this.getClass().getResource("/Button_Images/forward.png"))
|
|
@@ -76,6 +115,8 @@ public class TimePanel extends JPanel {
|
|
|
}
|
|
|
});
|
|
|
|
|
|
+ timeBackwardBtn.setBackground(Color.WHITE);
|
|
|
+ timeBackwardBtn.setBorderPainted(false);
|
|
|
timeBackwardBtn.setBorder(new LineBorder(Color.WHITE, 4));
|
|
|
timeBackwardBtn.setIcon(new ImageIcon(new ImageIcon(this.getClass().getResource("/Button_Images/backward.png"))
|
|
|
.getImage().getScaledInstance(30, 30, Image.SCALE_SMOOTH)));
|
|
@@ -93,5 +134,4 @@ public class TimePanel extends JPanel {
|
|
|
this.add(timeBtnPanel, BorderLayout.WEST);
|
|
|
this.add(timeSlider);
|
|
|
}
|
|
|
-
|
|
|
}
|