|
@@ -38,6 +38,7 @@ public class TimePanel extends JPanel {
|
|
|
|
|
|
private Model model;
|
|
private Model model;
|
|
private Control controller;
|
|
private Control controller;
|
|
|
|
+ private int dragResetIteration = 0;
|
|
|
|
|
|
JSlider timeSlider = new JSlider() {
|
|
JSlider timeSlider = new JSlider() {
|
|
/**
|
|
/**
|
|
@@ -136,19 +137,18 @@ public class TimePanel extends JPanel {
|
|
timeSlider.addMouseListener(new MouseAdapter() {
|
|
timeSlider.addMouseListener(new MouseAdapter() {
|
|
@Override
|
|
@Override
|
|
public void mousePressed(MouseEvent e) {
|
|
public void mousePressed(MouseEvent e) {
|
|
- controller.resetSimulation();
|
|
|
|
- if (running) {
|
|
|
|
- playBtn.doClick();
|
|
|
|
- }
|
|
|
|
|
|
+ dragResetIteration = model.getCurIteration();
|
|
}
|
|
}
|
|
});
|
|
});
|
|
|
|
|
|
timeSlider.addMouseMotionListener(new MouseAdapter() {
|
|
timeSlider.addMouseMotionListener(new MouseAdapter() {
|
|
@Override
|
|
@Override
|
|
public void mouseDragged(MouseEvent e) {
|
|
public void mouseDragged(MouseEvent e) {
|
|
- controller.resetSimulation();
|
|
|
|
- if (running) {
|
|
|
|
- playBtn.doClick();
|
|
|
|
|
|
+ if (dragResetIteration != model.getCurIteration()) {
|
|
|
|
+ controller.resetSimulation();
|
|
|
|
+ if (running) {
|
|
|
|
+ playBtn.doClick();
|
|
|
|
+ }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
});
|
|
});
|
|
@@ -229,10 +229,10 @@ public class TimePanel extends JPanel {
|
|
});
|
|
});
|
|
|
|
|
|
timeBtnPanel.add(playBtn);
|
|
timeBtnPanel.add(playBtn);
|
|
- timeBtnPanel.add(Box.createRigidArea(new Dimension(10,0)));
|
|
|
|
|
|
+ timeBtnPanel.add(Box.createRigidArea(new Dimension(10, 0)));
|
|
timeBtnPanel.add(timeResetBtn);
|
|
timeBtnPanel.add(timeResetBtn);
|
|
- timeBtnPanel.add(Box.createRigidArea(new Dimension(10,0)));
|
|
|
|
- timeBtnPanel.add(timeForwardBtn);
|
|
|
|
|
|
+ timeBtnPanel.add(Box.createRigidArea(new Dimension(10, 0)));
|
|
|
|
+ timeBtnPanel.add(timeForwardBtn);
|
|
|
|
|
|
// Speed Panel
|
|
// Speed Panel
|
|
speedPanel.add(simSpeedLabel);
|
|
speedPanel.add(simSpeedLabel);
|
|
@@ -259,26 +259,38 @@ public class TimePanel extends JPanel {
|
|
|
|
|
|
this.add(btnAndSpeedPanel, BorderLayout.WEST);
|
|
this.add(btnAndSpeedPanel, BorderLayout.WEST);
|
|
this.add(timeSlider);
|
|
this.add(timeSlider);
|
|
|
|
+
|
|
|
|
+ //Disable Keys
|
|
|
|
+ timeSlider.getInputMap().put(KeyStroke.getKeyStroke(KeyEvent.VK_UP, 0, false), "UP_ARROW");
|
|
|
|
+ timeSlider.getInputMap().put(KeyStroke.getKeyStroke(KeyEvent.VK_DOWN, 0, false), "DOWN_ARROW");
|
|
|
|
+ timeSlider.getInputMap().put(KeyStroke.getKeyStroke(KeyEvent.VK_PAGE_DOWN, 0, false), "PAGE_DOWN");
|
|
|
|
+ timeSlider.getInputMap().put(KeyStroke.getKeyStroke(KeyEvent.VK_PAGE_UP, 0, false), "PAGE_UP");
|
|
|
|
+ timeSlider.getInputMap().put(KeyStroke.getKeyStroke(KeyEvent.VK_END, 0, false), "END");
|
|
|
|
+ timeSlider.getInputMap().put(KeyStroke.getKeyStroke(KeyEvent.VK_HOME, 0, false), "HOME");
|
|
|
|
|
|
- //Left arrow Key
|
|
|
|
|
|
+ // Left arrow Key
|
|
timeSlider.getInputMap().put(KeyStroke.getKeyStroke(KeyEvent.VK_LEFT, 0, false), "LEFT_ARROW");
|
|
timeSlider.getInputMap().put(KeyStroke.getKeyStroke(KeyEvent.VK_LEFT, 0, false), "LEFT_ARROW");
|
|
timeSlider.getActionMap().put("LEFT_ARROW", new AbstractAction() {
|
|
timeSlider.getActionMap().put("LEFT_ARROW", new AbstractAction() {
|
|
private static final long serialVersionUID = 1L;
|
|
private static final long serialVersionUID = 1L;
|
|
|
|
+
|
|
@Override
|
|
@Override
|
|
public void actionPerformed(ActionEvent e) {
|
|
public void actionPerformed(ActionEvent e) {
|
|
- timeSlider.setValue(timeSlider.getValue()-1);
|
|
|
|
|
|
+ timeSlider.setValue(timeSlider.getValue() - 1);
|
|
controller.resetSimulation();
|
|
controller.resetSimulation();
|
|
}
|
|
}
|
|
});
|
|
});
|
|
|
|
+
|
|
|
|
+ //Right arrow Key
|
|
timeSlider.getInputMap().put(KeyStroke.getKeyStroke(KeyEvent.VK_RIGHT, 0, false), "Right_ARROW");
|
|
timeSlider.getInputMap().put(KeyStroke.getKeyStroke(KeyEvent.VK_RIGHT, 0, false), "Right_ARROW");
|
|
timeSlider.getActionMap().put("Right_ARROW", new AbstractAction() {
|
|
timeSlider.getActionMap().put("Right_ARROW", new AbstractAction() {
|
|
private static final long serialVersionUID = 1L;
|
|
private static final long serialVersionUID = 1L;
|
|
|
|
+
|
|
@Override
|
|
@Override
|
|
public void actionPerformed(ActionEvent e) {
|
|
public void actionPerformed(ActionEvent e) {
|
|
if (!model.getIsSimRunning()) {
|
|
if (!model.getIsSimRunning()) {
|
|
controller.setIsSimRunning(true);
|
|
controller.setIsSimRunning(true);
|
|
}
|
|
}
|
|
- timeSlider.setValue(timeSlider.getValue()+1);
|
|
|
|
|
|
+ timeSlider.setValue(timeSlider.getValue() + 1);
|
|
}
|
|
}
|
|
});
|
|
});
|
|
}
|
|
}
|