Browse Source

Checkbox for Edges (status) as well as for Switches (mode and status), some comments and elimination of useless imports

Edgardo Palza 7 years ago
parent
commit
58c76e07c5
4 changed files with 58 additions and 40 deletions
  1. 8 5
      src/classes/HolonSwitch.java
  2. 0 9
      src/ui/view/DefaulTable.java
  3. 50 24
      src/ui/view/GUI.java
  4. 0 2
      src/ui/view/PropertyTable.java

+ 8 - 5
src/classes/HolonSwitch.java

@@ -9,7 +9,7 @@ public class HolonSwitch extends CpsObject {
 	 * false
 	 */
 	boolean active;
-	
+
 	/*
 	 * true if switch has to be used manually
 	 */
@@ -27,6 +27,7 @@ public class HolonSwitch extends CpsObject {
 		super(ObjName);
 		setState(true);
 		setActiveAt(true);
+		setManualMode(false);
 	}
 
 	public HolonSwitch(String ObjName, String obj) {
@@ -34,6 +35,7 @@ public class HolonSwitch extends CpsObject {
 		super.setName(obj);
 		setState(true);
 		setActiveAt(true);
+		setManualMode(false);
 	}
 
 	public HolonSwitch(CpsObject obj) {
@@ -41,6 +43,7 @@ public class HolonSwitch extends CpsObject {
 		super.setName(obj.getName());
 		setState(true);
 		setActiveAt(true);
+		setManualMode(false);
 	}
 
 	public void switchState() {
@@ -96,12 +99,12 @@ public class HolonSwitch extends CpsObject {
 			this.activeAt[i] = active;
 		}
 	}
-	
-	public void setManualMode(boolean mode){
+
+	public void setManualMode(boolean mode) {
 		manualMode = mode;
 	}
-	
-	public boolean getManualMode(){
+
+	public boolean getManualMode() {
 		return manualMode;
 	}
 }

+ 0 - 9
src/ui/view/DefaulTable.java

@@ -1,7 +1,6 @@
 package ui.view;
 
 import javax.swing.table.DefaultTableModel;
-import javax.swing.table.TableCellEditor;
 
 public class DefaulTable extends DefaultTableModel {
 	private boolean[][] editable_cells; // 2d array to represent rows and
@@ -22,12 +21,4 @@ public class DefaulTable extends DefaultTableModel {
 		this.fireTableCellUpdated(row, col);
 	}
 
-//	public TableCellEditor getCellEditor(int row, int column) {
-//		if (column == 1) {
-//			Object value = getValueAt(row, column);
-//			if (value != null)
-//				return getDefaultEditor(value.getClass());
-//		}
-//		return super.getCellEditor(row, column);
-//	}
 }

+ 50 - 24
src/ui/view/GUI.java

@@ -6,7 +6,6 @@ import java.awt.Component;
 import java.awt.Cursor;
 import java.awt.Dimension;
 import java.awt.Image;
-import java.awt.MouseInfo;
 import java.awt.Point;
 import java.awt.Toolkit;
 import java.awt.event.ActionEvent;
@@ -14,7 +13,6 @@ import java.awt.event.ActionListener;
 import java.awt.event.KeyEvent;
 import java.awt.event.MouseAdapter;
 import java.awt.event.MouseEvent;
-import java.awt.event.MouseListener;
 import java.beans.PropertyChangeEvent;
 import java.beans.PropertyChangeListener;
 import java.io.File;
@@ -57,14 +55,13 @@ import javax.swing.border.LineBorder;
 import javax.swing.event.ChangeEvent;
 import javax.swing.event.ChangeListener;
 import javax.swing.filechooser.FileNameExtensionFilter;
-import javax.swing.plaf.FileChooserUI;
 import javax.swing.table.DefaultTableModel;
+import javax.swing.table.TableCellEditor;
+import javax.swing.table.TableCellRenderer;
 import javax.swing.tree.DefaultMutableTreeNode;
 import javax.swing.tree.DefaultTreeModel;
 import javax.swing.tree.TreeCellRenderer;
 
-import com.sun.corba.se.spi.orbutil.fsm.Action;
-
 import Interfaces.CategoryListener;
 import classes.Category;
 import classes.CpsEdge;
@@ -73,18 +70,15 @@ import classes.HolonElement;
 import classes.HolonObject;
 import classes.HolonSwitch;
 import classes.HolonTransformer;
-import classes.Position;
 import ui.controller.Control;
-import ui.model.Model;
-import javax.swing.JList;
-import javax.swing.Box;;
+import ui.model.Model;;
 
 public class GUI<E> implements CategoryListener {
 
 	private JFrame frmCyberPhysical;
 
 	private final SimulationMenu simMenu;
-	
+
 	private final JMenuBar menuBar = new JMenuBar();
 	private final JMenu mnNewMenu = new JMenu("File");
 	private final JMenu mnNewMenu_1 = new JMenu("Edit");
@@ -140,7 +134,25 @@ public class GUI<E> implements CategoryListener {
 	// HolonObject, such as connections, name, Type, etc.
 	// Table for Properties --> Cell with (0,1) is editable by CpsObjt and
 	// Cell(3,1) is editable by Edges
-	private JTable tableProperties = new JTable();
+	private JTable tableProperties = new JTable() {
+		@Override
+		public TableCellRenderer getCellRenderer(int row, int column) {
+			if (getValueAt(row, column) instanceof Boolean) {
+				return super.getDefaultRenderer(Boolean.class);
+			} else {
+				return super.getCellRenderer(row, column);
+			}
+		}
+
+		@Override
+		public TableCellEditor getCellEditor(int row, int column) {
+			if (getValueAt(row, column) instanceof Boolean) {
+				return super.getDefaultEditor(Boolean.class);
+			} else {
+				return super.getCellEditor(row, column);
+			}
+		}
+	};
 	private JPanel graphLabel = new JPanel();
 	private DefaulTable tableModelProperties;
 	private final JScrollPane scrollProperties = new JScrollPane();
@@ -232,7 +244,7 @@ public class GUI<E> implements CategoryListener {
 	 * Initialize the contents of the frame.
 	 */
 	@SuppressWarnings({ "serial", "unchecked" })
-	private void initialize() {		
+	private void initialize() {
 		simulationSpeedField.setColumns(10);
 		frmCyberPhysical = new JFrame();
 		frmCyberPhysical.setTitle("Cyber Physical Systems Model");
@@ -340,13 +352,13 @@ public class GUI<E> implements CategoryListener {
 			@Override
 			public void actionPerformed(ActionEvent e) {
 				model.getSelectedCpsObjects().clear();
-				for (CpsObject cps: model.getObjectsOnCanvas()) {
+				for (CpsObject cps : model.getObjectsOnCanvas()) {
 					controller.addSelectedObject(cps);
 				}
 				canvas.repaint();
 			}
 		});
-		
+
 		String delDown = "delete";
 		inputMap.put(KeyStroke.getKeyStroke(KeyEvent.VK_DELETE, 0, false), delDown);
 		actionMap.put(delDown, new AbstractAction() {
@@ -536,7 +548,6 @@ public class GUI<E> implements CategoryListener {
 
 		canvas.setBackground(Color.WHITE);
 		canvas.setPreferredSize(new Dimension(1000, 1000));
-		
 
 		/********************
 		 * RIGHT CONTAINER (INFORMATION)
@@ -794,18 +805,26 @@ public class GUI<E> implements CategoryListener {
 		 * Update any change in the Property table
 		 */
 		tableProperties.addPropertyChangeListener(new PropertyChangeListener() {
-
 			@Override
 			public void propertyChange(PropertyChangeEvent evt) {
 				try {
 					Object temp;
+					Point mousePos = tableProperties.getMousePosition();
 					if (getActualCps() != null) {
+						temp = tableModelProperties.getValueAt(mousePos.y / tableProperties.getRowHeight(),
+								mousePos.x / (tableProperties.getWidth() / 2));
 						if (getActualCps() instanceof HolonObject) {
-							temp = tableModelProperties.getValueAt(0, 1);
 							getActualCps().setName(temp.toString());
+						} else if (getActualCps() instanceof HolonSwitch) {
+							if (mousePos.y / tableProperties.getRowHeight() == 2) {
+								Boolean bTemp = Boolean.parseBoolean(temp.toString());
+								((HolonSwitch) getActualCps()).setManualMode(bTemp);
+							} else if (mousePos.y / tableProperties.getRowHeight() == 3) {
+								Boolean bTemp = Boolean.parseBoolean(temp.toString());
+								((HolonSwitch) getActualCps()).setActiveAt(bTemp);
+							}
 						}
 					} else {
-						Point mousePos = tableProperties.getMousePosition();
 						temp = tableModelProperties.getValueAt(mousePos.y / tableProperties.getRowHeight(),
 								mousePos.x / (tableProperties.getWidth() / 2));
 						if (mousePos.y / tableProperties.getRowHeight() == 2) {
@@ -826,6 +845,7 @@ public class GUI<E> implements CategoryListener {
 
 				}
 			}
+
 		});
 
 		/***********************
@@ -1099,23 +1119,28 @@ public class GUI<E> implements CategoryListener {
 						refreshTableHolonElement();
 						Object[] tempEnergy = { "Total Energy", ((HolonObject) temp).getCurrentEnergy() };
 						tableModelProperties.addRow(tempEnergy);
+						tableModelProperties.setCellEditable(0, 1, true);
+						tableModelProperties.setCellEditable(2, 1, false);
+						tableModelProperties.setCellEditable(3, 1, false);
 					} // For HolonSwitches is showed the actual status (active
 						// or inactive)
 					else if (temp instanceof HolonSwitch) {
 						deleteRows(tableModelHolonElementSingle);
 						deleteRows(tableModelHolonElementMulti);
+						Object[] tempMode = { "Mode", ((HolonSwitch) temp).getManualMode() };
+						tableModelProperties.addRow(tempMode);
 						Object[] tempActive = { "Active", ((HolonSwitch) temp).getActiveAt()[model.getCurIteration()] };
 						tableModelProperties.addRow(tempActive);
 						unitGraph.repaintWithNewSwitch((HolonSwitch) temp);
 						elementGraph.setText(temp.getName());
+						tableModelProperties.setCellEditable(0, 1, true);
+						tableModelProperties.setCellEditable(2, 1, true);
+						tableModelProperties.setCellEditable(3, 1, true);
 					} else {
 						deleteRows(tableModelHolonElementSingle);
 						deleteRows(tableModelHolonElementMulti);
 					}
 					// For Objects the only editable cell is the name
-					tableModelProperties.setCellEditable(0, 1, true);
-					tableModelProperties.setCellEditable(2, 1, false);
-					tableModelProperties.setCellEditable(3, 1, false);
 					ArrayList<CpsEdge> temp_array = temp.getConnections();
 					// If the clicked object has connections
 					if (!temp_array.isEmpty()) {
@@ -1440,16 +1465,17 @@ public class GUI<E> implements CategoryListener {
 		splitPane_tree_console.setRightComponent(console);
 		splitPane_1.setLeftComponent(canvasSP);
 		splitPane_1.setRightComponent(split_HolonEl_Pro);
-		
+
 		split_HolonEl_Pro.setDividerLocation(400);
 		split_HolonEl_Pro.setTopComponent(split_Graph_HolonEl);
 		split_HolonEl_Pro.setBottomComponent(scrollProperties);
 		split_Graph_HolonEl.setDividerLocation(150);
 		split_Graph_HolonEl.setTopComponent(scrollGraph);
-		split_Graph_HolonEl.setBottomComponent(scrollElements);		
+		split_Graph_HolonEl.setBottomComponent(scrollElements);
 		canvasSP.setViewportView(canvas);
 		canvasSP.setColumnHeaderView(simMenu);
-		simMenu.setBackground(new Color(240, 240, 240));
			
+		simMenu.setBackground(new Color(240, 240, 240));
+
 		tabbedPane.setBorder(null);
 		scrollProperties.setBorder(null);
 		scrollGraph.setBorder(null);

+ 0 - 2
src/ui/view/PropertyTable.java

@@ -1,7 +1,5 @@
 package ui.view;
 
-import java.util.Vector;
-
 import javax.swing.table.DefaultTableModel;
 
 public class PropertyTable extends DefaultTableModel {