Browse Source

Flex View with Bars

dominik.rieder 7 years ago
parent
commit
ecbaf86553
2 changed files with 67 additions and 34 deletions
  1. 39 21
      src/ui/view/FlexibleData.java
  2. 28 13
      src/ui/view/FlexiblePane.java

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

@@ -1,20 +1,22 @@
 package ui.view;
 
 import javax.swing.JPanel;
+import javax.swing.JProgressBar;
 import javax.swing.JLabel;
 import java.awt.Font;
 import java.awt.Dimension;
 import java.awt.Color;
 import javax.swing.JSplitPane;
+import javax.swing.border.EmptyBorder;
 
 public class FlexibleData extends JPanel {
 	private JLabel name_lbl;
-	private JLabel lblProdVal;
-	private JLabel lblConsVal;
+	private JProgressBar prodVal;
+	private JProgressBar consVal;
 	private JLabel lblProdConsVal;
 	private JPanel subnetColorPanel;
-	public FlexibleData(String name, float prod, float cons) {
-		setPreferredSize(new Dimension(430, 100));
+	public FlexibleData(String name, float prod, float cons, float maxProd, float maxCons) {
+		setPreferredSize(new Dimension(563, 100));
 		setMinimumSize(new Dimension(550, 100));
 		setLayout(null);
 		
@@ -26,32 +28,38 @@ public class FlexibleData extends JPanel {
 		
 		JLabel lblFlProd = new JLabel("Flex. Prod.:");
 		lblFlProd.setForeground(new Color(0, 128, 0));
-		lblFlProd.setBounds(31, 46, 85, 27);
+		lblFlProd.setBounds(31, 46, 64, 27);
 		add(lblFlProd);
 		
 		JLabel lblFlexCons = new JLabel("Flex. Cons.:\r\n");
 		lblFlexCons.setForeground(new Color(255, 0, 0));
-		lblFlexCons.setBounds(160, 46, 85, 27);
+		lblFlexCons.setBounds(188, 46, 64, 27);
 		add(lblFlexCons);
 		
 		JLabel lblProdCons = new JLabel("Prod./Cons.:");
 		lblProdCons.setForeground(new Color(218, 165, 32));
-		lblProdCons.setBounds(300, 46, 85, 27);
+		lblProdCons.setBounds(348, 46, 85, 27);
 		add(lblProdCons);
 		
-		lblProdVal = new JLabel();
-		setProd(prod);
-		lblProdVal.setBounds(106, 47, 72, 24);
-		add(lblProdVal);
+		prodVal = new JProgressBar();
+		setProd(maxProd, prod);
+		prodVal.setBounds(94, 46, 85, 24);
+		prodVal.setBorder(new EmptyBorder(0, 0, 0, 0));
+		prodVal.setStringPainted(true);
+		prodVal.setForeground(new Color(0, 128, 0));
+		add(prodVal);
 		
-		lblConsVal = new JLabel();
-		setCons(cons);
-		lblConsVal.setBounds(240, 47, 72, 24);
-		add(lblConsVal);
+		consVal = new JProgressBar();
+		setCons(maxCons, cons);
+		consVal.setBounds(253, 46, 85, 24);
+		consVal.setBorder(new EmptyBorder(0, 0, 0, 0));
+		consVal.setStringPainted(true);
+		consVal.setForeground(Color.RED);
+		add(consVal);
 		
 		lblProdConsVal = new JLabel();
-		setProdConsVal(prod,cons);
-		lblProdConsVal.setBounds(380, 46, 240, 24);
+		setProdConsVal(prod, cons);
+		lblProdConsVal.setBounds(415, 46, 103, 24);
 		add(lblProdConsVal);
 		
 		subnetColorPanel = new JPanel();
@@ -61,12 +69,22 @@ public class FlexibleData extends JPanel {
 		add(subnetColorPanel);
 	}
 	
-	public void setProd(float p){
-		lblProdVal.setText(Float.toString(p));
+	public void setProd(float max, float current){
+		int val = prodVal.getMaximum();
+		if(max != 0){
+		val = Math.round((current/max)*prodVal.getMaximum());
+		}
+		prodVal.setValue(val);
+		prodVal.setString(Float.toString(current));
 	}
 	
-	public void setCons(float c){
-		lblConsVal.setText(Float.toString(c));
+	public void setCons(float max, float current){
+		int val = prodVal.getMaximum();
+		if(max != 0){
+		val = Math.round((current/max)*prodVal.getMaximum());
+		}
+		consVal.setValue(val);
+		consVal.setString(Float.toString(current));
 	}
 	
 	public void setProdConsVal(float prod, float cons){

+ 28 - 13
src/ui/view/FlexiblePane.java

@@ -5,6 +5,7 @@ import java.awt.Component;
 import java.awt.Font;
 import java.awt.event.ComponentAdapter;
 import java.awt.event.ComponentEvent;
+import java.util.ArrayList;
 
 import javax.swing.BoxLayout;
 import javax.swing.JPanel;
@@ -33,12 +34,13 @@ public class FlexiblePane extends JScrollPane {
 	
 	public void recalculate(){
 		flexPanel.removeAll();
-		FlexibleData maingrid = new FlexibleData("Main Grid", 0,0);
+		ArrayList<Float> maxVals = calcMax(controller.getSimManager().getSubNets());
+		float gridProd = maxVals.get(0);
+		float gridCons = maxVals.get(1);
+		FlexibleData maingrid = new FlexibleData("Main Grid", gridProd, gridCons, gridProd, gridCons);
 		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();
@@ -51,27 +53,19 @@ public class FlexiblePane extends JScrollPane {
 				subProd += hl.getFlexProd();
 				subCons += hl.getFlexCons();
 				FlexibleData tmp = new FlexibleData(hl.getName()+" "+hl.getId(),
-						hl.getFlexProd(), hl.getFlexCons());
+						hl.getFlexProd(), hl.getFlexCons(), gridProd, gridCons);
 				tmp.getColorPanel().setBackground(subColor);
 				objects.add(tmp);
 			}
-			gridProd += subProd;
-			gridCons += subCons;
-			FlexibleData subnet = new FlexibleData("Subnet "+ counter, subProd, subCons);
+			FlexibleData subnet = new FlexibleData("Subnet "+ counter, subProd, subCons, gridProd, gridCons);
 			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){
-			((FlexibleData)flexPanel.getComponent(0)).setProd(gridProd);
-			((FlexibleData)flexPanel.getComponent(0)).setCons(gridCons);
-			((FlexibleData)flexPanel.getComponent(0)).setProdConsVal(gridProd, gridCons);
-		}
 		flexPanel.revalidate();
 		flexPanel.repaint();
 		flexPanel.updateUI();
@@ -80,5 +74,26 @@ public class FlexiblePane extends JScrollPane {
 	public JPanel getPanel(){
 		return flexPanel;
 	}
+	
+	public ArrayList<Float> calcMax(ArrayList<SubNet> sn){
+		ArrayList<Float> result = new ArrayList<Float>();
+		float prod = 0;
+		float cons = 0;
+		if(sn != null){
+			for(SubNet s: sn){
+				for(HolonObject h: s.getObjects()){
+					prod += h.getFlexProd();
+					cons += h.getFlexCons();
+				}
+			}
+			result.add(prod);
+			result.add(cons);
+			return result;
+		}else{
+			result.add(prod);
+			result.add(cons);
+			return result;
+		}
+	}
 
 }