Browse Source

Flexibility View fertig

dominik.rieder 7 years ago
parent
commit
965e6e095f
3 changed files with 139 additions and 30 deletions
  1. 75 0
      src/ui/view/FlexSubData.java
  2. 27 21
      src/ui/view/FlexibleData.java
  3. 37 9
      src/ui/view/FlexiblePane.java

+ 75 - 0
src/ui/view/FlexSubData.java

@@ -0,0 +1,75 @@
+package ui.view;
+
+import javax.swing.JSplitPane;
+import javax.swing.JPanel;
+import javax.swing.BoxLayout;
+import javax.swing.JButton;
+
+import java.awt.Dimension;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.ItemEvent;
+import java.awt.event.ItemListener;
+
+import javax.swing.JToggleButton;
+import java.awt.Component;
+
+public class FlexSubData extends JSplitPane {
+	public static final String HIDE = "Hide Objects";
+	public static final String SHOW = "Show Objects";
+	private JPanel subnetInfo;
+	private JPanel objectInfo;
+	private JPanel currentObj;
+	private JButton btnShowObjects;
+	private FlexiblePane listener;
+	public FlexSubData(FlexibleData fD) {
+		setDividerSize(0);
+		setAlignmentY(Component.CENTER_ALIGNMENT);
+		setAlignmentX(Component.CENTER_ALIGNMENT);
+		setOrientation(JSplitPane.VERTICAL_SPLIT);
+		
+		//subnetInfo = new FlexibleData("test" , 0, 0);
+		subnetInfo = fD;
+		subnetInfo.setMinimumSize(new Dimension(600, 100));
+		setLeftComponent(subnetInfo);
+		subnetInfo.setLayout(null);
+		
+		btnShowObjects = new JButton(SHOW);
+		btnShowObjects.setBounds(135, 13, 99, 23);
+		btnShowObjects.addActionListener(new ActionListener(){
+			public void actionPerformed(ActionEvent e){
+				if(btnShowObjects.getText() == SHOW){
+					objectInfo.add(currentObj);
+					objectInfo.revalidate();
+					objectInfo.updateUI();
+					listener.revalidate();
+					btnShowObjects.setText(HIDE);
+				}else if(btnShowObjects.getText() == HIDE){
+					objectInfo.removeAll();
+					objectInfo.revalidate();
+					objectInfo.updateUI();
+					listener.revalidate();
+					btnShowObjects.setText(SHOW);
+				}
+			}
+		});
+		subnetInfo.add(btnShowObjects);
+		
+		objectInfo = new JPanel();
+		setRightComponent(objectInfo);
+		objectInfo.setLayout(new BoxLayout(objectInfo, BoxLayout.X_AXIS));
+	}
+	
+	public void setObjects(JPanel obj){
+		objectInfo.removeAll();
+		currentObj = obj;
+	}
+	
+	public void setListener(FlexiblePane fP){
+		listener = fP;
+	}
+	
+	public JPanel getSubInfo(){
+		return subnetInfo;
+	}
+}

+ 27 - 21
src/ui/view/FlexibleData.java

@@ -5,20 +5,22 @@ import javax.swing.JLabel;
 import java.awt.Font;
 import java.awt.Dimension;
 import java.awt.Color;
+import javax.swing.JSplitPane;
 
 public class FlexibleData extends JPanel {
 	private JLabel name_lbl;
 	private JLabel lblProdVal;
 	private JLabel lblConsVal;
 	private JLabel lblProdConsVal;
+	private JPanel subnetColorPanel;
 	public FlexibleData(String name, float prod, float cons) {
-		setPreferredSize(new Dimension(614, 100));
-		setMinimumSize(new Dimension(600, 150));
+		setPreferredSize(new Dimension(430, 100));
+		setMinimumSize(new Dimension(550, 100));
 		setLayout(null);
 		
 		name_lbl = new JLabel();
-		name_lbl.setFont(new Font("Tahoma", Font.PLAIN, 13));
-		name_lbl.setBounds(10, 11, 125, 27);
+		name_lbl.setFont(new Font("Tahoma", Font.PLAIN, 11));
+		name_lbl.setBounds(10, 11, 85, 27);
 		setlblName(name);
 		add(name_lbl);
 		
@@ -48,17 +50,15 @@ public class FlexibleData extends JPanel {
 		add(lblConsVal);
 		
 		lblProdConsVal = new JLabel();
-		if(cons != 0 && prod != 0){
-		lblProdConsVal.setText(Float.toString((prod/cons)*(-1)));
-		}else if(prod == 0 && cons == 0){
-			lblProdConsVal.setText("neither producing nor consuming...");
-		}else if(prod == 0){
-			lblProdConsVal.setText("only consuming...");
-		}else if(cons == 0){
-			lblProdConsVal.setText("only producing...");
-		}
+		setProdConsVal(prod,cons);
 		lblProdConsVal.setBounds(380, 46, 240, 24);
 		add(lblProdConsVal);
+		
+		subnetColorPanel = new JPanel();
+		subnetColorPanel.setBackground(new Color(255, 255, 255));
+		subnetColorPanel.setForeground(new Color(0, 0, 0));
+		subnetColorPanel.setBounds(94, 11, 31, 27);
+		add(subnetColorPanel);
 	}
 	
 	public void setProd(float p){
@@ -70,19 +70,25 @@ public class FlexibleData extends JPanel {
 	}
 	
 	public void setProdConsVal(float prod, float cons){
-		if(cons != 0 && prod != 0){
-		lblProdConsVal.setText(Float.toString((prod/cons)*(-1)));
-		}else if(prod == 0 && cons == 0){
-			lblProdConsVal.setText("neither producing nor consuming...");
+		if(cons != 0){
+			lblProdConsVal.setText(Float.toString((prod/cons)*(-1)));
 		}else if(prod == 0){
-			lblProdConsVal.setText("only consuming...");
-		}else if(cons == 0){
-			lblProdConsVal.setText("only producing...");
+			lblProdConsVal.setText(Float.toString(0));
+		}
+		else{
+			lblProdConsVal.setText(Character.toString('\u221e'));
 		}
 	}
 	
 	public void setlblName(String name){
 		name_lbl.setText(name);
 	}
-
+	
+	public JPanel getColorPanel(){
+		return subnetColorPanel;
+	}
+	
+	public JLabel getNamelbl(){
+		return name_lbl;
+	}
 }

+ 37 - 9
src/ui/view/FlexiblePane.java

@@ -1,5 +1,12 @@
 package ui.view;
 
+import java.awt.Color;
+import java.awt.Component;
+import java.awt.Font;
+import java.awt.event.ComponentAdapter;
+import java.awt.event.ComponentEvent;
+
+import javax.swing.BoxLayout;
 import javax.swing.JPanel;
 import javax.swing.JScrollPane;
 
@@ -7,11 +14,6 @@ import classes.HolonObject;
 import classes.SubNet;
 import ui.controller.Control;
 
-import java.awt.Color;
-import java.awt.Dimension;
-
-import javax.swing.BoxLayout;
-
 public class FlexiblePane extends JScrollPane {
 	private JPanel flexPanel;
 	private Control controller;
@@ -25,23 +27,38 @@ public class FlexiblePane extends JScrollPane {
 	
 	public void recalculate(){
 		flexPanel.removeAll();
-		flexPanel.add(new FlexibleData("Main Grid", 0,0));
+		FlexibleData maingrid = new FlexibleData("Main Grid", 0,0);
+		maingrid.getColorPanel().setVisible(false);
+		maingrid.getNamelbl().setFont(new Font("Tahoma", Font.BOLD, 11));
+		flexPanel.add(maingrid);
 		float gridProd = 0;
 		float gridCons = 0;
 		int counter = 1;
 		for(SubNet sn: controller.getSimManager().getSubNets()){
+			JPanel objects = new JPanel();
+			objects.setLayout(new BoxLayout(objects, BoxLayout.Y_AXIS));
 			int index = flexPanel.getComponentCount();
 			float subProd = 0;
 			float subCons = 0;
+			Color subColor = sn.getObjects().get(0).getBorderColor();
 			for(HolonObject hl: sn.getObjects()){
 				subProd += hl.getFlexProd();
 				subCons += hl.getFlexCons();
-				flexPanel.add(new FlexibleData(hl.getName()+" "+hl.getId(),
-						hl.getFlexProd(), hl.getFlexCons()));
+				FlexibleData tmp = new FlexibleData(hl.getName()+" "+hl.getId(),
+						hl.getFlexProd(), hl.getFlexCons());
+				tmp.getColorPanel().setBackground(subColor);
+				objects.add(tmp);
 			}
 			gridProd += subProd;
 			gridCons += subCons;
-			flexPanel.add(new FlexibleData("Subnet "+ counter, subProd, subCons), index);
+			FlexibleData subnet = new FlexibleData("Subnet "+ counter, subProd, subCons);
+			subnet.getNamelbl().setFont(new Font("Tahoma", Font.BOLD, 11));
+			subnet.getColorPanel().setBackground(subColor);
+			FlexSubData wholeSubnet = new FlexSubData(subnet);
+			wholeSubnet.setObjects(objects);
+			wholeSubnet.setListener(this);
+			flexPanel.add(wholeSubnet, index);
+			//flexPanel.add(new FlexibleData("Subnet "+ counter, subProd, subCons), index);
 			counter++;
 		}
 		if (flexPanel.getComponent(0) instanceof FlexibleData){
@@ -49,6 +66,17 @@ public class FlexiblePane extends JScrollPane {
 			((FlexibleData)flexPanel.getComponent(0)).setCons(gridCons);
 			((FlexibleData)flexPanel.getComponent(0)).setProdConsVal(gridProd, gridCons);
 		}
+		
+		class ResizeListener extends ComponentAdapter{
+			public void componentResized(ComponentEvent e){
+				flexPanel.requestFocusInWindow();
+			}
+		}
+		this.addComponentListener(new ResizeListener());
+	}
+	
+	public JPanel getPanel(){
+		return flexPanel;
 	}
 
 }