Tankernn 8 lat temu
rodzic
commit
1bd8c41e52

+ 49 - 25
src/eu/tankernn/grid/GridControl.java

@@ -2,29 +2,53 @@ package eu.tankernn.grid;
 
 import java.awt.event.WindowEvent;
 import java.awt.event.WindowListener;
+import java.util.Arrays;
 
 import javax.swing.JFrame;
 
 import eu.tankernn.grid.frame.GridControlPanel;
 import eu.tankernn.grid.model.ComputerModel;
 
-public class GridControl extends JFrame implements WindowListener {
+public class GridControl implements WindowListener, Runnable {
+	private Thread t;
+
+	private ComputerModel model = new ComputerModel();
+
+	private JFrame frame;
+	private GridControlPanel panel;
+
+	public GridControl(boolean gui) {
+		if (gui) {
+			frame = new JFrame("JavaGridControl");
+			frame.add(panel = new GridControlPanel(model));
+			frame.setResizable(true);
+			frame.pack();
+			frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
+			frame.addWindowListener(this);
+			frame.setVisible(true);
+		}
+
+		t = new Thread(this);
+		t.setDaemon(true);
+		t.start();
+	}
+
+	@Override
+	public void run() {
+		while (!t.isInterrupted()) {
+			model.poll();
+			model.compute();
+
+			if (panel != null)
+				panel.updateProperties();
+			try {
+				Thread.sleep(1000);
+			} catch (InterruptedException ex) {
+				System.out.println("Thread was interrupted.");
+				return;
+			}
+		}
 
-	/**
-	 * 
-	 */
-	private static final long serialVersionUID = 1L;
-	
-	ComputerModel model = new ComputerModel();
-	GridControlPanel panel = new GridControlPanel(model);
-
-	public GridControl() {
-		this.add(panel);
-		setResizable(true);
-		setTitle("JavaGridControl");
-		pack();
-		setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);
-		addWindowListener(this);
 	}
 
 	/**
@@ -32,50 +56,50 @@ public class GridControl extends JFrame implements WindowListener {
 	 * @param args the command line arguments
 	 */
 	public static void main(String[] args) {
-		GridControl cams = new GridControl();
-		cams.setVisible(true);
+		new GridControl(!Arrays.asList(args).contains("nogui"));
 	}
 
 	@Override
 	public void windowOpened(WindowEvent e) {
 		// TODO Auto-generated method stub
-		
+
 	}
 
 	@Override
 	public void windowClosing(WindowEvent e) {
+		t.interrupt();
 		panel.getModel().getGrid().disconnect();
-		System.exit(0);
+		e.getWindow().dispose();
 	}
 
 	@Override
 	public void windowClosed(WindowEvent e) {
 		// TODO Auto-generated method stub
-		
+
 	}
 
 	@Override
 	public void windowIconified(WindowEvent e) {
 		// TODO Auto-generated method stub
-		
+
 	}
 
 	@Override
 	public void windowDeiconified(WindowEvent e) {
 		// TODO Auto-generated method stub
-		
+
 	}
 
 	@Override
 	public void windowActivated(WindowEvent e) {
 		// TODO Auto-generated method stub
-		
+
 	}
 
 	@Override
 	public void windowDeactivated(WindowEvent e) {
 		// TODO Auto-generated method stub
-		
+
 	}
 
 }

+ 2 - 25
src/eu/tankernn/grid/frame/GridControlPanel.java

@@ -17,17 +17,15 @@ import javax.swing.border.TitledBorder;
 import eu.tankernn.grid.FanSpeedProfile;
 import eu.tankernn.grid.model.ComputerModel;
 
-public class GridControlPanel extends JPanel implements Runnable {
+public class GridControlPanel extends JPanel {
 
 	/**
 	 * 
 	 */
 	private static final long serialVersionUID = 1L;
 
-	private Thread t;
-
 	private ComputerModel model;
-
+	
 	private FanPanel[] fanPanels;
 	private JPanel gridPanel = new JPanel(), infoPanel = new JPanel();
 
@@ -90,10 +88,6 @@ public class GridControlPanel extends JPanel implements Runnable {
 			}
 		});
 		this.add(portMap, BorderLayout.NORTH);
-
-		t = new Thread(this);
-		t.setDaemon(true);
-		t.start();
 	}
 
 	private FanSpeedProfile[] generateProfiles() {
@@ -136,23 +130,6 @@ public class GridControlPanel extends JPanel implements Runnable {
 			p.update();
 	}
 
-	@Override
-	public void run() {
-		while (!t.isInterrupted()) {
-			model.poll();
-			model.compute();
-
-			updateProperties();
-			try {
-				Thread.sleep(1000);
-			} catch (InterruptedException ex) {
-				System.out.println("Thread was interrupted.");
-				return;
-			}
-		}
-
-	}
-
 	public ComputerModel getModel() {
 		return model;
 	}