FlexiblePane.java 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. package ui.view;
  2. import java.awt.Color;
  3. import java.awt.Component;
  4. import java.awt.Font;
  5. import java.awt.event.ComponentAdapter;
  6. import java.awt.event.ComponentEvent;
  7. import javax.swing.BoxLayout;
  8. import javax.swing.JPanel;
  9. import javax.swing.JScrollPane;
  10. import classes.HolonObject;
  11. import classes.SubNet;
  12. import ui.controller.Control;
  13. public class FlexiblePane extends JScrollPane {
  14. private JPanel flexPanel;
  15. private Control controller;
  16. public FlexiblePane(Control controller) {
  17. this.controller = controller;
  18. flexPanel = new JPanel();
  19. flexPanel.setLayout(new BoxLayout(flexPanel, BoxLayout.Y_AXIS));
  20. setViewportView(flexPanel);
  21. class ResizeListener extends ComponentAdapter{
  22. public void componentResized(ComponentEvent e){
  23. flexPanel.requestFocusInWindow();
  24. }
  25. }
  26. this.addComponentListener(new ResizeListener());
  27. }
  28. public void recalculate(){
  29. flexPanel.removeAll();
  30. FlexibleData maingrid = new FlexibleData("Main Grid", 0,0);
  31. maingrid.getColorPanel().setVisible(false);
  32. maingrid.getNamelbl().setFont(new Font("Tahoma", Font.BOLD, 11));
  33. flexPanel.add(maingrid);
  34. float gridProd = 0;
  35. float gridCons = 0;
  36. int counter = 1;
  37. for(SubNet sn: controller.getSimManager().getSubNets()){
  38. JPanel objects = new JPanel();
  39. objects.setLayout(new BoxLayout(objects, BoxLayout.Y_AXIS));
  40. int index = flexPanel.getComponentCount();
  41. float subProd = 0;
  42. float subCons = 0;
  43. Color subColor = sn.getObjects().get(0).getBorderColor();
  44. for(HolonObject hl: sn.getObjects()){
  45. subProd += hl.getFlexProd();
  46. subCons += hl.getFlexCons();
  47. FlexibleData tmp = new FlexibleData(hl.getName()+" "+hl.getId(),
  48. hl.getFlexProd(), hl.getFlexCons());
  49. tmp.getColorPanel().setBackground(subColor);
  50. objects.add(tmp);
  51. }
  52. gridProd += subProd;
  53. gridCons += subCons;
  54. FlexibleData subnet = new FlexibleData("Subnet "+ counter, subProd, subCons);
  55. subnet.getNamelbl().setFont(new Font("Tahoma", Font.BOLD, 11));
  56. subnet.getColorPanel().setBackground(subColor);
  57. FlexSubData wholeSubnet = new FlexSubData(subnet);
  58. wholeSubnet.setObjects(objects);
  59. wholeSubnet.setListener(this);
  60. flexPanel.add(wholeSubnet, index);
  61. //flexPanel.add(new FlexibleData("Subnet "+ counter, subProd, subCons), index);
  62. counter++;
  63. }
  64. if (flexPanel.getComponent(0) instanceof FlexibleData){
  65. ((FlexibleData)flexPanel.getComponent(0)).setProd(gridProd);
  66. ((FlexibleData)flexPanel.getComponent(0)).setCons(gridCons);
  67. ((FlexibleData)flexPanel.getComponent(0)).setProdConsVal(gridProd, gridCons);
  68. }
  69. flexPanel.revalidate();
  70. flexPanel.repaint();
  71. flexPanel.updateUI();
  72. }
  73. public JPanel getPanel(){
  74. return flexPanel;
  75. }
  76. }