StatisticPane.java 8.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231
  1. package ui.view;
  2. import javax.swing.DefaultListModel;
  3. import javax.swing.JList;
  4. import javax.swing.JPanel;
  5. import javax.swing.JScrollPane;
  6. import java.awt.BorderLayout;
  7. import java.awt.FlowLayout;
  8. import javax.swing.GroupLayout;
  9. import javax.swing.GroupLayout.Alignment;
  10. import javax.swing.GroupLayout.Group;
  11. import javax.swing.JLabel;
  12. import java.awt.Font;
  13. import javax.swing.JCheckBox;
  14. import javax.swing.LayoutStyle.ComponentPlacement;
  15. import java.awt.Color;
  16. import javax.swing.SwingConstants;
  17. import javax.swing.event.ListSelectionEvent;
  18. import javax.swing.event.ListSelectionListener;
  19. import classes.HolonObject;
  20. import interfaces.GraphListener;
  21. import ui.controller.Control;
  22. import ui.model.Model;
  23. import javax.swing.JComboBox;
  24. import javax.swing.JButton;
  25. import java.awt.event.ActionListener;
  26. import java.util.ArrayList;
  27. import java.util.HashMap;
  28. import java.awt.event.ActionEvent;
  29. public class StatisticPane extends JPanel implements GraphListener{
  30. private JScrollPane listScrollPane = new JScrollPane();
  31. private JList objectList;
  32. private DefaultListModel listModel = new DefaultListModel();
  33. private Model model;
  34. private Control controller;
  35. //private StatisticGraph statGraph1;
  36. private JPanel statGraph1;
  37. //private StatisticGraph statGraph2;
  38. private JPanel statGraph2;
  39. private HashMap<String, HolonObject> objectHashMap = new HashMap<String, HolonObject>();
  40. private JLabel nameThreshHolder;
  41. private GroupLayout groupLayout;
  42. public StatisticPane(Model m, Control c){
  43. model = m;
  44. controller = c;
  45. objectList = new JList(listModel);
  46. listScrollPane.setViewportView(objectList);
  47. JLabel lblOverallStatistics = new JLabel("Overall Statistics:");
  48. lblOverallStatistics.setFont(new Font("Tahoma", Font.PLAIN, 13));
  49. JCheckBox chckbxNewCheckBox = new JCheckBox("total consumption");
  50. chckbxNewCheckBox.setForeground(Color.RED);
  51. JCheckBox chckbxNewCheckBox_1 = new JCheckBox("total production");
  52. chckbxNewCheckBox_1.setForeground(Color.BLUE);
  53. JLabel lblObject = new JLabel("Object:");
  54. lblObject.setFont(new Font("Tahoma", Font.PLAIN, 13));
  55. JLabel lblName = new JLabel("Name:");
  56. nameThreshHolder = new JLabel("...");
  57. nameThreshHolder.setHorizontalAlignment(SwingConstants.LEFT);
  58. JCheckBox checkBox = new JCheckBox("total consumption");
  59. checkBox.setForeground(Color.RED);
  60. JCheckBox checkBox_1 = new JCheckBox("total production");
  61. checkBox_1.setForeground(Color.BLUE);
  62. //statGraph1 = new StatisticGraph(model, controller);
  63. statGraph1 = new JPanel();
  64. JButton btnRefresh = new JButton("Refresh Tracked Objects");
  65. btnRefresh.addActionListener(new ActionListener() {
  66. public void actionPerformed(ActionEvent e) {
  67. refreshTrackedList();
  68. }
  69. });
  70. //statGraph2 = new StatisticGraph(model, controller);
  71. statGraph2 = new JPanel();
  72. JButton btnUntrack = new JButton("Untrack");
  73. btnUntrack.addActionListener(new ActionListener() {
  74. public void actionPerformed(ActionEvent e) {
  75. controller.getTrackingObj().remove(objectHashMap.get(nameThreshHolder.getText()));
  76. refreshTrackedList();
  77. nameThreshHolder.setText("...");
  78. }
  79. });
  80. JButton btnAddGraph = new JButton("add Graph");
  81. btnAddGraph.addActionListener(new ActionListener() {
  82. public void actionPerformed(ActionEvent e) {
  83. JPanel tmp = new JPanel();
  84. }
  85. });
  86. /*
  87. Group gr = groupLayout.createParallelGroup();
  88. for(int i = 0; i < 4; i++){
  89. gr.addComponent(statGraph2, GroupLayout.DEFAULT_SIZE, 199, Short.MAX_VALUE);
  90. }
  91. */
  92. groupLayout = new GroupLayout(this);
  93. groupLayout.setHorizontalGroup(
  94. groupLayout.createParallelGroup(Alignment.LEADING)
  95. .addGroup(groupLayout.createSequentialGroup()
  96. .addContainerGap()
  97. .addGroup(groupLayout.createParallelGroup(Alignment.LEADING)
  98. .addGroup(groupLayout.createSequentialGroup()
  99. .addComponent(listScrollPane, GroupLayout.PREFERRED_SIZE, 177, GroupLayout.PREFERRED_SIZE)
  100. .addGap(323))
  101. .addGroup(groupLayout.createParallelGroup(Alignment.LEADING)
  102. .addGroup(groupLayout.createSequentialGroup()
  103. .addGroup(groupLayout.createParallelGroup(Alignment.LEADING)
  104. .addGroup(groupLayout.createSequentialGroup()
  105. .addGap(10)
  106. .addGroup(groupLayout.createParallelGroup(Alignment.LEADING)
  107. .addGroup(groupLayout.createSequentialGroup()
  108. .addComponent(lblName)
  109. .addPreferredGap(ComponentPlacement.RELATED)
  110. .addComponent(nameThreshHolder, GroupLayout.PREFERRED_SIZE, 107, GroupLayout.PREFERRED_SIZE))
  111. .addComponent(checkBox, GroupLayout.PREFERRED_SIZE, 111, GroupLayout.PREFERRED_SIZE)
  112. .addComponent(checkBox_1, GroupLayout.PREFERRED_SIZE, 101, GroupLayout.PREFERRED_SIZE)))
  113. .addComponent(lblOverallStatistics, GroupLayout.PREFERRED_SIZE, 126, GroupLayout.PREFERRED_SIZE)
  114. .addGroup(groupLayout.createSequentialGroup()
  115. .addGap(10)
  116. .addGroup(groupLayout.createParallelGroup(Alignment.LEADING)
  117. .addComponent(chckbxNewCheckBox_1)
  118. .addComponent(chckbxNewCheckBox)))
  119. .addComponent(lblObject, GroupLayout.PREFERRED_SIZE, 56, GroupLayout.PREFERRED_SIZE)
  120. .addGroup(groupLayout.createSequentialGroup()
  121. .addComponent(btnUntrack)
  122. .addGap(18)
  123. .addComponent(btnAddGraph)))
  124. .addGap(125)
  125. .addGroup(groupLayout.createParallelGroup(Alignment.LEADING)
  126. .addComponent(statGraph2, GroupLayout.DEFAULT_SIZE, 199, Short.MAX_VALUE)
  127. .addComponent(statGraph1, GroupLayout.DEFAULT_SIZE, 199, Short.MAX_VALUE)))
  128. .addGroup(groupLayout.createSequentialGroup()
  129. .addComponent(btnRefresh)
  130. .addContainerGap(349, Short.MAX_VALUE)))))
  131. );
  132. groupLayout.setVerticalGroup(
  133. groupLayout.createParallelGroup(Alignment.LEADING)
  134. .addGroup(groupLayout.createSequentialGroup()
  135. .addGap(17)
  136. .addGroup(groupLayout.createParallelGroup(Alignment.LEADING)
  137. .addGroup(groupLayout.createSequentialGroup()
  138. .addComponent(lblOverallStatistics)
  139. .addPreferredGap(ComponentPlacement.UNRELATED)
  140. .addComponent(chckbxNewCheckBox)
  141. .addPreferredGap(ComponentPlacement.RELATED)
  142. .addComponent(chckbxNewCheckBox_1))
  143. .addComponent(statGraph1, GroupLayout.PREFERRED_SIZE, 125, GroupLayout.PREFERRED_SIZE))
  144. .addGap(41)
  145. .addGroup(groupLayout.createParallelGroup(Alignment.LEADING)
  146. .addGroup(groupLayout.createSequentialGroup()
  147. .addComponent(lblObject)
  148. .addPreferredGap(ComponentPlacement.UNRELATED)
  149. .addGroup(groupLayout.createParallelGroup(Alignment.BASELINE)
  150. .addComponent(lblName)
  151. .addComponent(nameThreshHolder))
  152. .addPreferredGap(ComponentPlacement.RELATED)
  153. .addComponent(checkBox)
  154. .addPreferredGap(ComponentPlacement.RELATED)
  155. .addComponent(checkBox_1)
  156. .addPreferredGap(ComponentPlacement.UNRELATED)
  157. .addGroup(groupLayout.createParallelGroup(Alignment.BASELINE)
  158. .addComponent(btnUntrack)
  159. .addComponent(btnAddGraph))
  160. .addGap(30)
  161. .addComponent(btnRefresh)
  162. .addPreferredGap(ComponentPlacement.RELATED, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
  163. .addComponent(listScrollPane, GroupLayout.PREFERRED_SIZE, 160, GroupLayout.PREFERRED_SIZE)
  164. .addPreferredGap(ComponentPlacement.RELATED))
  165. .addComponent(statGraph2, GroupLayout.PREFERRED_SIZE, 122, GroupLayout.PREFERRED_SIZE))
  166. .addContainerGap(89, GroupLayout.PREFERRED_SIZE))
  167. );
  168. setLayout(groupLayout);
  169. objectList.addListSelectionListener(new ListSelectionListener(){
  170. @Override
  171. public void valueChanged(ListSelectionEvent arg0){
  172. if(objectList.getSelectedValue() != null){
  173. nameThreshHolder.setText(objectList.getSelectedValue().toString());
  174. }
  175. }
  176. });
  177. }
  178. public void refreshTrackedList(){
  179. listModel.removeAllElements();
  180. objectHashMap.clear();
  181. for(int i = 0; i < controller.getTrackingObj().size(); i++){
  182. String name = controller.getTrackingObj().get(i).getName() + " " +
  183. controller.getTrackingObj().get(i).getID();
  184. listModel.addElement(name);
  185. objectHashMap.put(name, controller.getTrackingObj().get(i));
  186. if(i < 8){
  187. //statGraph1.addObject(controller.getTrackingObj().get(i));
  188. }
  189. }
  190. }
  191. public void updateGraphs(){
  192. statGraph1.repaint();
  193. }
  194. @Override
  195. public void repaintGraph() {
  196. // TODO Auto-generated method stub
  197. statGraph1.repaint();
  198. }
  199. @Override
  200. public void addTrackedObject(ArrayList<HolonObject> hl) {
  201. // TODO Auto-generated method stub
  202. }
  203. }