瀏覽代碼

switches jetzt trackbar

dominik.rieder 7 年之前
父節點
當前提交
1cd6241438

+ 3 - 0
src/interfaces/GraphListener.java

@@ -3,11 +3,14 @@ package interfaces;
 import java.util.ArrayList;
 
 import classes.HolonObject;
+import classes.HolonSwitch;
 
 public interface GraphListener {
 	
 	public void repaintTree();
 	
 	public void addTrackedObject(ArrayList<HolonObject> hlList);
+	
+	public void addTrackedSwitch(ArrayList<HolonSwitch> swList);
 
 }

+ 19 - 6
src/ui/controller/Control.java

@@ -15,6 +15,7 @@ import classes.CpsUpperNode;
 import classes.AbstractCpsObject;
 import classes.HolonElement;
 import classes.HolonObject;
+import classes.HolonSwitch;
 import interfaces.CategoryListener;
 import ui.model.Model;
 import ui.view.MyCanvas;
@@ -721,16 +722,13 @@ public class Control {
 		}
 	}
 
-	/**
-	 * Set Tracking Objects
-	 */
+	//========================= MANAGING TRACKED OBJECTS ====================
+	
+	//OBJECTS:
 	public void setTrackingObj(ArrayList<HolonObject> objArr) {
 		statsController.setTrackingObj(objArr);
 	}
 
-	/**
-	 * Get Tracking Objects
-	 */
 	public ArrayList<HolonObject> getTrackingObj() {
 		return statsController.getTrackingObj();
 	}
@@ -742,6 +740,21 @@ public class Control {
 	public void removeTrackingObj(HolonObject obj) {
 		statsController.removeTrackingObj(obj);
 	}
+	
+	//SWITCHES:
+	public ArrayList<HolonSwitch> getTrackingSwitches() {
+		return statsController.getTrackingSwitches();
+	}
+
+	public void addTrackingSwitch(HolonSwitch sw) {
+		statsController.addTrackingSwitches(sw);
+	}
+	
+	public void removeTrackingSwitch(HolonSwitch sw){
+		statsController.removeTrackingSwitch(sw);
+	}
+	
+	//========================== MANAGING TRACKED OBJECTS END ================
 
 	/**
 	 * Controlling Nodes of Nodes

+ 17 - 0
src/ui/controller/StatsController.java

@@ -4,6 +4,7 @@ import java.util.ArrayList;
 
 import classes.HolonElement;
 import classes.HolonObject;
+import classes.HolonSwitch;
 import ui.model.Model;
 
 public class StatsController {
@@ -34,4 +35,20 @@ public class StatsController {
 		model.setTrackingObj(objArr);
 		model.addObjectsToGraphListeners();
 	}
+
+	public ArrayList<HolonSwitch> getTrackingSwitches() {
+		return model.getTrackingSwitches();
+	}
+
+	public void addTrackingSwitches(HolonSwitch sw) {
+		model.getTrackingSwitches().add(sw);
+		model.addObjectsToGraphListeners();
+	}
+
+	public void removeTrackingSwitch(HolonSwitch sw) {
+		ArrayList<HolonSwitch> swArr = model.getTrackingSwitches();
+		swArr.remove(sw);
+		model.setTrackingSwitches(swArr);
+		model.addObjectsToGraphListeners();
+	}
 }

+ 13 - 1
src/ui/model/Model.java

@@ -14,6 +14,7 @@ import classes.CpsEdge;
 import classes.AbstractCpsObject;
 import classes.HolonElement;
 import classes.HolonObject;
+import classes.HolonSwitch;
 import interfaces.CategoryListener;
 import interfaces.GraphListener;
 import interfaces.ObjectListener;
@@ -72,10 +73,11 @@ public class Model {
 	private ArrayList<Category> categories;
 
 	/*
-	 * Array of all HolonObj, that should be tracked through out the statistics
+	 * Array of all HolonObj and HolonSwitches, that should be tracked through out the statistics
 	 * tab
 	 */
 	private ArrayList<HolonObject> trackingObj;
+	private ArrayList<HolonSwitch> trackingSwitches;
 
 	/*
 	 * Array of all CpsObjects in our canvas. It is set by default as an empty
@@ -122,6 +124,7 @@ public class Model {
 		setCvsObjIdx(new HashMap<Integer, Integer>());
 		setClipboradObjects(new ArrayList<AbstractCpsObject>());
 		setTrackingObj(new ArrayList<HolonObject>());
+		setTrackingSwitches(new ArrayList<HolonSwitch>());
 		setEleToDelete(new HashMap<Integer, ArrayList<HolonElement>>());
 		setSingleTable(new PropertyTable());
 		setMultiTable(new PropertyTable());
@@ -675,6 +678,14 @@ public class Model {
 	public ArrayList<HolonObject> getTrackingObj() {
 		return trackingObj;
 	}
+	
+	public void setTrackingSwitches(ArrayList<HolonSwitch> toTrack){
+		trackingSwitches = toTrack;
+	}
+	
+	public ArrayList<HolonSwitch> getTrackingSwitches(){
+		return trackingSwitches;
+	}
 
 	public void addGraphListener(GraphListener gl) {
 		graphListeners.add(gl);
@@ -707,6 +718,7 @@ public class Model {
 	public void addObjectsToGraphListeners() {
 		for (GraphListener gl : graphListeners) {
 			gl.addTrackedObject(trackingObj);
+			gl.addTrackedSwitch(trackingSwitches);
 			gl.repaintTree();
 		}
 	}

+ 25 - 4
src/ui/view/MyCanvas.java

@@ -259,7 +259,8 @@ public class MyCanvas extends JPanel implements MouseListener, MouseMotionListen
 				animT.start();
 			}
 		});
-
+		
+		//adds the selected object(s) to the statistic panel
 		itemTrack.addActionListener(new ActionListener() {
 			@Override
 			public void actionPerformed(ActionEvent e) {
@@ -282,6 +283,23 @@ public class MyCanvas extends JPanel implements MouseListener, MouseMotionListen
 						controller.addTextToConsole(", ID:", Color.BLACK, 12, false, false, false);
 						controller.addTextToConsole("" + o.getID(), Color.RED, 12, true, false, true);
 					}
+					if(o instanceof HolonSwitch){
+						boolean found = false;
+						if(controller.getTrackingSwitches() != null){
+							for(HolonSwitch sw : controller.getTrackingSwitches()){
+								if(sw.getID() == o.getID()){
+									found = true;
+								}
+							}
+						}
+						if(!found){
+							controller.addTrackingSwitch((HolonSwitch) o);
+						}
+						controller.addTextToConsole("Tracking: ", Color.BLACK, 12, false, false, false);
+						controller.addTextToConsole("" + o.getName(), Color.BLUE, 12, true, false, false);
+						controller.addTextToConsole(", ID:", Color.BLACK, 12, false, false, false);
+						controller.addTextToConsole("" + o.getID(), Color.RED, 12, true, false, true);
+					}
 				}
 			}
 		});
@@ -672,14 +690,17 @@ public class MyCanvas extends JPanel implements MouseListener, MouseMotionListen
 					itemUngroup.setEnabled(true);
 				else
 					itemUngroup.setEnabled(false);
-
+				/*
 				if (!(tempCps instanceof HolonSwitch)) {
 					itemTrack.setEnabled(true);
 					itemUntrack.setEnabled(true);
 				} else {
-					itemTrack.setEnabled(false);
-					itemUntrack.setEnabled(false);
+				*/
+					itemTrack.setEnabled(true);
+					itemUntrack.setEnabled(true);
+					/*
 				}
+				*/
 				if (model.getSelectedCpsObjects().size() == 0) {
 					controller.addSelectedObject(tempCps);
 				}

+ 0 - 231
src/ui/view/StatisticPane.java

@@ -1,231 +0,0 @@
-package ui.view;
-
-import javax.swing.DefaultListModel;
-import javax.swing.JList;
-import javax.swing.JPanel;
-import javax.swing.JScrollPane;
-import java.awt.BorderLayout;
-import java.awt.FlowLayout;
-import javax.swing.GroupLayout;
-import javax.swing.GroupLayout.Alignment;
-import javax.swing.GroupLayout.Group;
-import javax.swing.JLabel;
-import java.awt.Font;
-import javax.swing.JCheckBox;
-import javax.swing.LayoutStyle.ComponentPlacement;
-import java.awt.Color;
-import javax.swing.SwingConstants;
-import javax.swing.event.ListSelectionEvent;
-import javax.swing.event.ListSelectionListener;
-
-import classes.HolonObject;
-import interfaces.GraphListener;
-import ui.controller.Control;
-import ui.model.Model;
-
-import javax.swing.JComboBox;
-import javax.swing.JButton;
-import java.awt.event.ActionListener;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.awt.event.ActionEvent;
-
-public class StatisticPane extends JPanel implements GraphListener{
-	private JScrollPane listScrollPane = new JScrollPane();
-    private JList objectList;
-    private DefaultListModel listModel =  new DefaultListModel();
-    private Model model;
-    private Control controller;
-    //private StatisticGraph statGraph1;
-    private JPanel statGraph1;
-    //private StatisticGraph statGraph2;
-    private JPanel statGraph2;
-    private HashMap<String, HolonObject> objectHashMap = new HashMap<String, HolonObject>();
-    private JLabel nameThreshHolder;
-    private GroupLayout groupLayout;
-    
-    
-    public StatisticPane(Model m, Control c){
-    	model = m;
-    	controller = c;
-    	objectList = new JList(listModel);
-    	listScrollPane.setViewportView(objectList);
-    	
-    	JLabel lblOverallStatistics = new JLabel("Overall Statistics:");
-    	lblOverallStatistics.setFont(new Font("Tahoma", Font.PLAIN, 13));
-    	
-    	JCheckBox chckbxNewCheckBox = new JCheckBox("total consumption");
-    	chckbxNewCheckBox.setForeground(Color.RED);
-    	
-    	JCheckBox chckbxNewCheckBox_1 = new JCheckBox("total production");
-    	chckbxNewCheckBox_1.setForeground(Color.BLUE);
-    	
-    	JLabel lblObject = new JLabel("Object:");
-    	lblObject.setFont(new Font("Tahoma", Font.PLAIN, 13));
-    	
-    	JLabel lblName = new JLabel("Name:");
-    	
-    	nameThreshHolder = new JLabel("...");
-    	nameThreshHolder.setHorizontalAlignment(SwingConstants.LEFT);
-    	
-    	JCheckBox checkBox = new JCheckBox("total consumption");
-    	checkBox.setForeground(Color.RED);
-    	
-    	JCheckBox checkBox_1 = new JCheckBox("total production");
-    	checkBox_1.setForeground(Color.BLUE);
-    	
-    	//statGraph1 = new StatisticGraph(model, controller);
-    	statGraph1 = new JPanel();
-    	
-    	JButton btnRefresh = new JButton("Refresh Tracked Objects");
-    	btnRefresh.addActionListener(new ActionListener() {
-    		public void actionPerformed(ActionEvent e) {
-    			refreshTrackedList();
-    		}
-    	});
-    	
-    	//statGraph2 = new StatisticGraph(model, controller);
-    	statGraph2 = new JPanel();
-    	
-    	JButton btnUntrack = new JButton("Untrack");
-    	btnUntrack.addActionListener(new ActionListener() {
-    		public void actionPerformed(ActionEvent e) {
-    			controller.getTrackingObj().remove(objectHashMap.get(nameThreshHolder.getText()));
-    			refreshTrackedList();
-    			nameThreshHolder.setText("...");
-    		}
-    	});
-    	
-    	JButton btnAddGraph = new JButton("add Graph");
-    	btnAddGraph.addActionListener(new ActionListener() {
-    		public void actionPerformed(ActionEvent e) {
-    			JPanel tmp = new JPanel();
-    		}
-    	});
-    	
-    	/*
-		Group gr = groupLayout.createParallelGroup();
-		for(int i = 0; i < 4; i++){
-			gr.addComponent(statGraph2, GroupLayout.DEFAULT_SIZE, 199, Short.MAX_VALUE);
-		}
-		*/
-    	groupLayout = new GroupLayout(this);
-    	groupLayout.setHorizontalGroup(
-    		groupLayout.createParallelGroup(Alignment.LEADING)
-    			.addGroup(groupLayout.createSequentialGroup()
-    				.addContainerGap()
-    				.addGroup(groupLayout.createParallelGroup(Alignment.LEADING)
-    					.addGroup(groupLayout.createSequentialGroup()
-    						.addComponent(listScrollPane, GroupLayout.PREFERRED_SIZE, 177, GroupLayout.PREFERRED_SIZE)
-    						.addGap(323))
-    					.addGroup(groupLayout.createParallelGroup(Alignment.LEADING)
-    						.addGroup(groupLayout.createSequentialGroup()
-    							.addGroup(groupLayout.createParallelGroup(Alignment.LEADING)
-    								.addGroup(groupLayout.createSequentialGroup()
-    									.addGap(10)
-    									.addGroup(groupLayout.createParallelGroup(Alignment.LEADING)
-    										.addGroup(groupLayout.createSequentialGroup()
-    											.addComponent(lblName)
-    											.addPreferredGap(ComponentPlacement.RELATED)
-    											.addComponent(nameThreshHolder, GroupLayout.PREFERRED_SIZE, 107, GroupLayout.PREFERRED_SIZE))
-    										.addComponent(checkBox, GroupLayout.PREFERRED_SIZE, 111, GroupLayout.PREFERRED_SIZE)
-    										.addComponent(checkBox_1, GroupLayout.PREFERRED_SIZE, 101, GroupLayout.PREFERRED_SIZE)))
-    								.addComponent(lblOverallStatistics, GroupLayout.PREFERRED_SIZE, 126, GroupLayout.PREFERRED_SIZE)
-    								.addGroup(groupLayout.createSequentialGroup()
-    									.addGap(10)
-    									.addGroup(groupLayout.createParallelGroup(Alignment.LEADING)
-    										.addComponent(chckbxNewCheckBox_1)
-    										.addComponent(chckbxNewCheckBox)))
-    								.addComponent(lblObject, GroupLayout.PREFERRED_SIZE, 56, GroupLayout.PREFERRED_SIZE)
-    								.addGroup(groupLayout.createSequentialGroup()
-    									.addComponent(btnUntrack)
-    									.addGap(18)
-    									.addComponent(btnAddGraph)))
-    							.addGap(125)
-    							.addGroup(groupLayout.createParallelGroup(Alignment.LEADING)
-    								.addComponent(statGraph2, GroupLayout.DEFAULT_SIZE, 199, Short.MAX_VALUE)
-    								.addComponent(statGraph1, GroupLayout.DEFAULT_SIZE, 199, Short.MAX_VALUE)))
-    						.addGroup(groupLayout.createSequentialGroup()
-    							.addComponent(btnRefresh)
-    							.addContainerGap(349, Short.MAX_VALUE)))))
-    	);
-    	groupLayout.setVerticalGroup(
-    		groupLayout.createParallelGroup(Alignment.LEADING)
-    			.addGroup(groupLayout.createSequentialGroup()
-    				.addGap(17)
-    				.addGroup(groupLayout.createParallelGroup(Alignment.LEADING)
-    					.addGroup(groupLayout.createSequentialGroup()
-    						.addComponent(lblOverallStatistics)
-    						.addPreferredGap(ComponentPlacement.UNRELATED)
-    						.addComponent(chckbxNewCheckBox)
-    						.addPreferredGap(ComponentPlacement.RELATED)
-    						.addComponent(chckbxNewCheckBox_1))
-    					.addComponent(statGraph1, GroupLayout.PREFERRED_SIZE, 125, GroupLayout.PREFERRED_SIZE))
-    				.addGap(41)
-    				.addGroup(groupLayout.createParallelGroup(Alignment.LEADING)
-    					.addGroup(groupLayout.createSequentialGroup()
-    						.addComponent(lblObject)
-    						.addPreferredGap(ComponentPlacement.UNRELATED)
-    						.addGroup(groupLayout.createParallelGroup(Alignment.BASELINE)
-    							.addComponent(lblName)
-    							.addComponent(nameThreshHolder))
-    						.addPreferredGap(ComponentPlacement.RELATED)
-    						.addComponent(checkBox)
-    						.addPreferredGap(ComponentPlacement.RELATED)
-    						.addComponent(checkBox_1)
-    						.addPreferredGap(ComponentPlacement.UNRELATED)
-    						.addGroup(groupLayout.createParallelGroup(Alignment.BASELINE)
-    							.addComponent(btnUntrack)
-    							.addComponent(btnAddGraph))
-    						.addGap(30)
-    						.addComponent(btnRefresh)
-    						.addPreferredGap(ComponentPlacement.RELATED, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
-    						.addComponent(listScrollPane, GroupLayout.PREFERRED_SIZE, 160, GroupLayout.PREFERRED_SIZE)
-    						.addPreferredGap(ComponentPlacement.RELATED))
-    					.addComponent(statGraph2, GroupLayout.PREFERRED_SIZE, 122, GroupLayout.PREFERRED_SIZE))
-    				.addContainerGap(89, GroupLayout.PREFERRED_SIZE))
-    	);
-    	setLayout(groupLayout);
-    	
-    	objectList.addListSelectionListener(new ListSelectionListener(){
-    		
-    		@Override
-    		public void valueChanged(ListSelectionEvent arg0){
-    			if(objectList.getSelectedValue() != null){
-    			nameThreshHolder.setText(objectList.getSelectedValue().toString());
-    			}
-    		}
-    	});
-
-    }
-    
-    public void refreshTrackedList(){
-		listModel.removeAllElements();
-		objectHashMap.clear();
-		for(int i = 0; i < controller.getTrackingObj().size(); i++){
-			String name = controller.getTrackingObj().get(i).getName() + " " +
-			controller.getTrackingObj().get(i).getID();
-			
-			listModel.addElement(name);
-			objectHashMap.put(name, controller.getTrackingObj().get(i));
-			if(i < 8){
-				//statGraph1.addObject(controller.getTrackingObj().get(i));
-			}
-		}
-    }
-    public void updateGraphs(){
-    	statGraph1.repaint();
-    }
-
-	@Override
-	public void repaintTree() {
-		// TODO Auto-generated method stub
-		statGraph1.repaint();
-	}
-
-	@Override
-	public void addTrackedObject(ArrayList<HolonObject> hl) {
-		// TODO Auto-generated method stub
-		
-	}
-}

+ 42 - 5
src/ui/view/splitPane.java

@@ -24,6 +24,7 @@ import javax.swing.tree.TreeNode;
 import DataSets.GraphDataSet;
 import DataSets.PropertyDataSet;
 import classes.HolonObject;
+import classes.HolonSwitch;
 import classes.TrackedDataSet;
 import interfaces.GraphListener;
 import ui.controller.Control;
@@ -58,15 +59,20 @@ public class splitPane extends JSplitPane implements GraphListener {
 	public static final int PRODUCTION = 1;
 	public static final int ACTIVATED_ELEMENTS = 2;
 	public static final int ON_OFF = 3;
-
+	
+	// editable textfields
 	private JTextField graphNrTxtField;
 	private JTextField redField;
 	private JTextField greenField;
 	private JTextField blueField;
+	
+	// Tree Properties
 	private JTree objectTree;
 	private DefaultTreeModel treeModel;
 	private DefaultMutableTreeNode objectsNode;
 	private DefaultMutableTreeNode wholeHolon;
+	private DefaultMutableTreeNode switchesNode;
+	
 	private Hashtable<String, GraphDataSet> objectHashtable;
 	private Hashtable<String, StatisticGraphPanel> graphHashtable;
 	private Hashtable<String, Integer> propValTable;
@@ -404,6 +410,10 @@ public class splitPane extends JSplitPane implements GraphListener {
 		colorPanel = new JPanel();
 		colorPanel.setBorder(new LineBorder(new Color(0, 0, 0)));
 		colorPanel.setBackground(Color.WHITE);
+		
+		
+		//======================================== LAYOUT FOR COMPONENTS ON THE LEFT SIDE ============================
+		
 		GroupLayout gl_panel = new GroupLayout(panel);
 		gl_panel.setHorizontalGroup(gl_panel.createParallelGroup(Alignment.LEADING)
 				.addGroup(gl_panel.createSequentialGroup().addContainerGap().addGroup(gl_panel
@@ -475,7 +485,12 @@ public class splitPane extends JSplitPane implements GraphListener {
 								.addComponent(colorPanel, GroupLayout.PREFERRED_SIZE, 33, GroupLayout.PREFERRED_SIZE)
 								.addPreferredGap(ComponentPlacement.RELATED).addComponent(btnAdd)
 								.addContainerGap(35, Short.MAX_VALUE)));
-
+		
+		//======================================= LAYOUT END =======================================
+		
+		
+		//======================================= TREE STRUCTURE====================================
+		
 		objectTree = new JTree();
 		treeModel = (DefaultTreeModel) objectTree.getModel();
 		DefaultMutableTreeNode root = new DefaultMutableTreeNode("Statistics");
@@ -487,12 +502,15 @@ public class splitPane extends JSplitPane implements GraphListener {
 		wholeHolon.add(new DefaultMutableTreeNode("Percentage of partially Supplied Objects"));
 
 		objectsNode = new DefaultMutableTreeNode("Objects");
-		DefaultMutableTreeNode defaultNode = new DefaultMutableTreeNode("empty");
-
-		objectsNode.add(defaultNode);
+		objectsNode.add(new DefaultMutableTreeNode("empty"));
+		
+		switchesNode = new DefaultMutableTreeNode("Switches");
+		switchesNode.add(new DefaultMutableTreeNode("empty"));
+		
 		treeModel.setRoot(root);
 		root.add(wholeHolon);
 		root.add(objectsNode);
+		root.add(switchesNode);
 		objectTree.setModel(treeModel);
 
 		treeScrollPane.setViewportView(objectTree);
@@ -563,6 +581,10 @@ public class splitPane extends JSplitPane implements GraphListener {
 			}
 
 		});
+		
+		//=============================== TREE STRUCTURE END ====================================
+		
+		
 		panel.setLayout(gl_panel);
 
 		JScrollPane graphScrollPane = new JScrollPane();
@@ -605,6 +627,21 @@ public class splitPane extends JSplitPane implements GraphListener {
 		}
 
 	}
+	
+	@Override
+	public void addTrackedSwitch(ArrayList<HolonSwitch> swList){
+		switchesNode.removeAllChildren();
+		if(swList.size() > 0 && swList != null){
+			for(HolonSwitch sw : swList){
+				String name = sw.getName() + " " + sw.getID();
+				DefaultMutableTreeNode tmp = new DefaultMutableTreeNode(name);
+				tmp.add(new DefaultMutableTreeNode("activated"));
+				switchesNode.add(tmp);
+			}
+		} else {
+			switchesNode.add(new DefaultMutableTreeNode("empty"));
+		}
+	}
 
 	public void colorChanged(Color color) {
 		colorPanel.setBackground(color);