Browse Source

TimePanel

Kevin Trometer 8 years ago
parent
commit
99db3e106f

BIN
res/Button_Images/backward.png


BIN
res/Button_Images/forward.png


BIN
res/Button_Images/play.png


BIN
res/Button_Images/reset.png


BIN
res/Button_Images/stop.png


BIN
res/Images/Thumbs.db


+ 12 - 44
src/ui/view/GUI.java

@@ -1,10 +1,7 @@
 package ui.view;
 
 import java.io.File;
-import java.text.AttributedCharacterIterator;
 import java.util.ArrayList;
-import java.util.concurrent.TimeUnit;
-
 import javax.swing.JFrame;
 import javax.swing.JLabel;
 import javax.swing.JMenuBar;
@@ -12,6 +9,7 @@ import javax.swing.JMenu;
 import javax.swing.JMenuItem;
 import javax.swing.JOptionPane;
 import javax.swing.JTree;
+import javax.swing.border.LineBorder;
 import javax.swing.BorderFactory;
 import javax.swing.BoxLayout;
 import javax.swing.JSplitPane;
@@ -21,8 +19,6 @@ import javax.swing.JTable;
 import javax.swing.tree.DefaultTreeModel;
 import javax.swing.tree.TreeCellRenderer;
 
-import com.sun.xml.internal.bind.v2.TODO;
-
 import ui.controller.Control;
 import ui.model.*;
 
@@ -30,20 +26,12 @@ import javax.swing.tree.DefaultMutableTreeNode;
 import javax.swing.JEditorPane;
 import javax.swing.JFileChooser;
 import javax.swing.table.DefaultTableModel;
-import javax.swing.table.TableModel;
-
 import java.awt.Color;
 import java.awt.Component;
 import java.awt.Cursor;
 import java.awt.Dimension;
-import java.awt.Font;
-import java.awt.FontMetrics;
-import java.awt.Graphics;
 import java.awt.Image;
 import java.awt.Point;
-import java.awt.Rectangle;
-import java.awt.ScrollPane;
-import java.awt.Shape;
 import java.awt.Toolkit;
 import java.awt.BorderLayout;
 
@@ -61,21 +49,18 @@ import classes.HolonElement;
 import classes.HolonObject;
 import classes.HolonSwitch;
 import classes.HolonTransformer;
-import javafx.util.Pair;
 import Interfaces.CategoryListener;
 
 import java.awt.event.ActionListener;
 import java.awt.event.MouseAdapter;
 import java.awt.event.MouseEvent;
-import java.awt.image.ImageObserver;
-import java.awt.peer.MouseInfoPeer;
 import java.beans.PropertyChangeEvent;
 import java.beans.PropertyChangeListener;
 import java.awt.event.ActionEvent;
 import javax.swing.JSlider;
 import javax.swing.event.ChangeListener;
 import javax.swing.event.ChangeEvent;
-import javax.swing.SwingConstants;
+import java.awt.FlowLayout;
 
 public class GUI implements CategoryListener {
 
@@ -162,9 +147,8 @@ public class GUI implements CategoryListener {
 	private final JSplitPane splitPane_3 = new JSplitPane();
 	private final JSlider sizeSlider = new JSlider();
 	private final JLabel lblImageSize = new JLabel("Image Size");
-	private final JSlider timeSlider = new JSlider();
-	private final JPanel timePanel = new JPanel();
-	private final JButton playBtn = new JButton();
+	// Time Stuff
+	private final TimePanel timePanel;
 
 	/**
 	 * Create the application.
@@ -174,7 +158,10 @@ public class GUI implements CategoryListener {
 		this.model = control.getModel();
 		this.canvas = new MyCanvas(model, control);
 		this.testgraph = new UnitGraph(model, control); // for testing, remove
-														// later
+										
+		timePanel = new TimePanel(model, controller);
+				 
+		// later
 		control.initListener(this);
 		initialize();
 		updateCategories(model.getCategories());
@@ -191,8 +178,9 @@ public class GUI implements CategoryListener {
 		frmCyberPhysical.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 
 		frmCyberPhysical.setJMenuBar(menuBar);
-		
-		frmCyberPhysical.setIconImage(new ImageIcon(this.getClass().getResource("/Images/Dummy_House.png")).getImage().getScaledInstance(30, 30, Image.SCALE_SMOOTH));
+
+		frmCyberPhysical.setIconImage(new ImageIcon(this.getClass().getResource("/Images/Dummy_House.png")).getImage()
+				.getScaledInstance(30, 30, Image.SCALE_SMOOTH));
 
 		menuBar.add(mnNewMenu);
 
@@ -667,27 +655,7 @@ public class GUI implements CategoryListener {
 		split_Graph_HolonEl.setTopComponent(scrollGraph);
 		split_Graph_HolonEl.setBottomComponent(scrollElements);
 
-		timePanel.setLayout(new BorderLayout(0, 0));
-		timeSlider.setPaintTicks(true);
-		timeSlider.setPaintLabels(true);
-		timeSlider.setMinorTickSpacing(1);
-		timeSlider.setToolTipText("");
-
-		timeSlider.setMinimum(1);
-		timeSlider.setMaximum(model.getIterations());
-		timeSlider.setValue(1);
-
-		playBtn.setBorder(BorderFactory.createEmptyBorder());
-		playBtn.setIcon(new ImageIcon(new ImageIcon(this.getClass().getResource("/Images/node.png")).getImage()
-				.getScaledInstance(30, 30, Image.SCALE_SMOOTH)));
-		playBtn.addActionListener(new ActionListener() {
-			public void actionPerformed(ActionEvent ae) {
-				timeSlider.setValue(timeSlider.getValue() + 1);
-			}
-		});
-
-		timePanel.add(playBtn, BorderLayout.WEST);
-		timePanel.add(timeSlider);
+		
 		frmCyberPhysical.getContentPane().add(timePanel, BorderLayout.SOUTH);
 	}
 

+ 97 - 0
src/ui/view/TimePanel.java

@@ -0,0 +1,97 @@
+package ui.view;
+
+import java.awt.BorderLayout;
+import java.awt.Color;
+import java.awt.FlowLayout;
+import java.awt.Image;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+
+import javax.swing.ImageIcon;
+import javax.swing.JButton;
+import javax.swing.JPanel;
+import javax.swing.JSlider;
+import javax.swing.border.LineBorder;
+
+import ui.controller.Control;
+import ui.model.Model;
+
+public class TimePanel extends JPanel {
+
+	private Model model;
+	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 static final long serialVersionUID = 1L;
+
+	public TimePanel(Model model, Control controller) {
+		super();
+		this.model = model;
+		//// Time Slider. Panels and Buttons
+		this.setLayout(new BorderLayout(0, 0));
+
+		// Slider
+		timeSlider.setPaintTicks(true);
+		timeSlider.setPaintLabels(true);
+		timeSlider.setMinorTickSpacing(1);
+		timeSlider.setToolTipText("Time Slider");
+		timeSlider.setMinimum(1);
+		timeSlider.setMaximum(model.getIterations());
+		timeSlider.setValue(1);
+		timeSlider.setBackground(Color.WHITE);
+
+		// Buttons
+		timeBtnPanel.setLayout(new FlowLayout(FlowLayout.CENTER, 0, 0));
+
+		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)));
+
+		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)));
+		timeResetBtn.addActionListener(new ActionListener() {
+			public void actionPerformed(ActionEvent ae) {
+				timeSlider.setValue(timeSlider.getMinimum());
+			}
+		});
+
+		timeForwardBtn.setContentAreaFilled(false);
+		timeForwardBtn.setBorder(new LineBorder(Color.WHITE, 4));
+		timeForwardBtn.setIcon(new ImageIcon(new ImageIcon(this.getClass().getResource("/Button_Images/forward.png"))
+				.getImage().getScaledInstance(30, 30, Image.SCALE_SMOOTH)));
+		timeForwardBtn.addActionListener(new ActionListener() {
+			public void actionPerformed(ActionEvent ae) {
+				timeSlider.setValue(timeSlider.getValue() + 1);
+			}
+		});
+
+		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)));
+		timeBackwardBtn.addActionListener(new ActionListener() {
+			public void actionPerformed(ActionEvent ae) {
+				timeSlider.setValue(timeSlider.getValue() - 1);
+			}
+		});
+
+		timeBtnPanel.add(timeResetBtn);
+		timeBtnPanel.add(timeResetBtn);
+		timeBtnPanel.add(timeBackwardBtn);
+		timeBtnPanel.add(timeForwardBtn);
+
+		this.add(timeBtnPanel, BorderLayout.WEST);
+		this.add(timeSlider);
+	}
+
+}