splitPane.java 8.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234
  1. package ui.view;
  2. import javax.swing.JSplitPane;
  3. import javax.swing.JScrollPane;
  4. import javax.swing.JPanel;
  5. import java.util.ArrayList;
  6. import javax.swing.GroupLayout;
  7. import javax.swing.GroupLayout.Alignment;
  8. import javax.swing.JLabel;
  9. import javax.swing.LayoutStyle.ComponentPlacement;
  10. import javax.swing.event.TreeSelectionEvent;
  11. import javax.swing.event.TreeSelectionListener;
  12. import javax.swing.tree.DefaultMutableTreeNode;
  13. import javax.swing.tree.DefaultTreeModel;
  14. import javax.swing.tree.MutableTreeNode;
  15. import javax.swing.tree.TreeNode;
  16. import classes.HolonObject;
  17. import interfaces.GraphListener;
  18. import javax.swing.JTextField;
  19. import javax.swing.JComboBox;
  20. import javax.swing.JButton;
  21. import javax.swing.JTree;
  22. import java.awt.Color;
  23. public class splitPane extends JSplitPane implements GraphListener {
  24. private JTextField graphNrTxtField;
  25. private JTextField redField;
  26. private JTextField blueField;
  27. private JTextField greenField;
  28. private JTree objectTree;
  29. private DefaultTreeModel treeModel;
  30. DefaultMutableTreeNode objectsNode;
  31. DefaultMutableTreeNode wholeHolon;
  32. JLabel showObjectlbl;
  33. JLabel showPropertylbl;
  34. public splitPane() {
  35. JPanel panel = new JPanel();
  36. setLeftComponent(panel);
  37. JScrollPane treeScrollPane = new JScrollPane();
  38. JLabel lblObject = new JLabel("Object(s):");
  39. showObjectlbl = new JLabel("...");
  40. JLabel lblProperty = new JLabel("Property:");
  41. showPropertylbl = new JLabel("...");
  42. JLabel lblGraph = new JLabel("Graph:");
  43. graphNrTxtField = new JTextField();
  44. graphNrTxtField.setColumns(10);
  45. JLabel lblColor = new JLabel("Color:");
  46. JComboBox colorComboBox = new JComboBox();
  47. redField = new JTextField();
  48. redField.setColumns(10);
  49. blueField = new JTextField();
  50. blueField.setColumns(10);
  51. greenField = new JTextField();
  52. greenField.setColumns(10);
  53. JLabel lblR = new JLabel("R:");
  54. JLabel lblB = new JLabel("B:");
  55. JLabel lblG = new JLabel("G:");
  56. JButton btnAdd = new JButton("Add");
  57. JPanel colorPanel = new JPanel();
  58. colorPanel.setBackground(Color.GRAY);
  59. GroupLayout gl_panel = new GroupLayout(panel);
  60. gl_panel.setHorizontalGroup(
  61. gl_panel.createParallelGroup(Alignment.LEADING)
  62. .addGroup(gl_panel.createSequentialGroup()
  63. .addGroup(gl_panel.createParallelGroup(Alignment.LEADING)
  64. .addGroup(gl_panel.createSequentialGroup()
  65. .addContainerGap()
  66. .addGroup(gl_panel.createParallelGroup(Alignment.LEADING)
  67. .addComponent(treeScrollPane, GroupLayout.DEFAULT_SIZE, 165, Short.MAX_VALUE)
  68. .addGroup(gl_panel.createSequentialGroup()
  69. .addGroup(gl_panel.createParallelGroup(Alignment.LEADING)
  70. .addComponent(lblGraph)
  71. .addComponent(lblObject)
  72. .addComponent(lblProperty)
  73. .addComponent(lblColor)
  74. .addGroup(gl_panel.createSequentialGroup()
  75. .addComponent(lblR)
  76. .addPreferredGap(ComponentPlacement.RELATED)
  77. .addComponent(redField, GroupLayout.PREFERRED_SIZE, 37, GroupLayout.PREFERRED_SIZE)))
  78. .addPreferredGap(ComponentPlacement.RELATED)
  79. .addGroup(gl_panel.createParallelGroup(Alignment.LEADING, false)
  80. .addComponent(showObjectlbl, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
  81. .addComponent(showPropertylbl, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
  82. .addComponent(graphNrTxtField)
  83. .addComponent(colorComboBox, 0, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
  84. .addGroup(gl_panel.createSequentialGroup()
  85. .addComponent(lblB)
  86. .addPreferredGap(ComponentPlacement.RELATED)
  87. .addComponent(blueField, GroupLayout.PREFERRED_SIZE, 37, GroupLayout.PREFERRED_SIZE)
  88. .addPreferredGap(ComponentPlacement.RELATED)
  89. .addComponent(lblG)
  90. .addPreferredGap(ComponentPlacement.RELATED)
  91. .addComponent(greenField, GroupLayout.PREFERRED_SIZE, 37, GroupLayout.PREFERRED_SIZE))))
  92. .addComponent(colorPanel, Alignment.TRAILING, GroupLayout.PREFERRED_SIZE, 150, GroupLayout.PREFERRED_SIZE)))
  93. .addGroup(gl_panel.createSequentialGroup()
  94. .addGap(67)
  95. .addComponent(btnAdd)))
  96. .addContainerGap())
  97. );
  98. gl_panel.setVerticalGroup(
  99. gl_panel.createParallelGroup(Alignment.LEADING)
  100. .addGroup(gl_panel.createSequentialGroup()
  101. .addContainerGap()
  102. .addComponent(treeScrollPane, GroupLayout.PREFERRED_SIZE, 153, GroupLayout.PREFERRED_SIZE)
  103. .addGap(27)
  104. .addGroup(gl_panel.createParallelGroup(Alignment.BASELINE)
  105. .addComponent(lblObject, GroupLayout.PREFERRED_SIZE, 14, GroupLayout.PREFERRED_SIZE)
  106. .addComponent(showObjectlbl))
  107. .addPreferredGap(ComponentPlacement.RELATED)
  108. .addGroup(gl_panel.createParallelGroup(Alignment.BASELINE)
  109. .addComponent(lblProperty)
  110. .addComponent(showPropertylbl))
  111. .addPreferredGap(ComponentPlacement.RELATED)
  112. .addGroup(gl_panel.createParallelGroup(Alignment.BASELINE)
  113. .addComponent(lblGraph)
  114. .addComponent(graphNrTxtField, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
  115. .addPreferredGap(ComponentPlacement.RELATED)
  116. .addGroup(gl_panel.createParallelGroup(Alignment.BASELINE)
  117. .addComponent(lblColor)
  118. .addComponent(colorComboBox, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
  119. .addGap(18)
  120. .addGroup(gl_panel.createParallelGroup(Alignment.BASELINE)
  121. .addComponent(lblR)
  122. .addComponent(redField, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
  123. .addComponent(lblB)
  124. .addComponent(blueField, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
  125. .addComponent(lblG)
  126. .addComponent(greenField, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
  127. .addPreferredGap(ComponentPlacement.UNRELATED)
  128. .addComponent(colorPanel, GroupLayout.PREFERRED_SIZE, 33, GroupLayout.PREFERRED_SIZE)
  129. .addPreferredGap(ComponentPlacement.RELATED, 53, Short.MAX_VALUE)
  130. .addComponent(btnAdd)
  131. .addGap(34))
  132. );
  133. objectTree = new JTree();
  134. treeModel = (DefaultTreeModel)objectTree.getModel();
  135. DefaultMutableTreeNode root = new DefaultMutableTreeNode("Statistics");
  136. wholeHolon = new DefaultMutableTreeNode("whole Holon");
  137. wholeHolon.add(new DefaultMutableTreeNode("total Production"));
  138. wholeHolon.add(new DefaultMutableTreeNode("total Consumption"));
  139. wholeHolon.add(new DefaultMutableTreeNode("Percentage of Supplied Objects"));
  140. wholeHolon.add(new DefaultMutableTreeNode("Percentage of not Supplied Objects"));
  141. wholeHolon.add(new DefaultMutableTreeNode("Percentage of partially Supplied Objects"));
  142. objectsNode = new DefaultMutableTreeNode("Objects");
  143. DefaultMutableTreeNode defaultNode = new DefaultMutableTreeNode("empty");
  144. objectsNode.add(defaultNode);
  145. treeModel.setRoot(root);
  146. root.add(wholeHolon);
  147. root.add(objectsNode);
  148. objectTree.setModel(treeModel);
  149. treeScrollPane.setViewportView(objectTree);
  150. objectTree.addTreeSelectionListener(new TreeSelectionListener(){
  151. @Override
  152. public void valueChanged(TreeSelectionEvent e) {
  153. showObjectlbl.setText("...");
  154. showPropertylbl.setText("...");
  155. DefaultMutableTreeNode selectedNode = (DefaultMutableTreeNode)objectTree.getLastSelectedPathComponent();
  156. if(selectedNode == null){
  157. return;
  158. }else{
  159. if(selectedNode.getLevel() == 1){
  160. showObjectlbl.setText(selectedNode.toString());
  161. }
  162. if(selectedNode.getLevel() == 2){
  163. if(((DefaultMutableTreeNode)selectedNode.getParent()).toString().equals("whole Holon")){
  164. showPropertylbl.setText(selectedNode.toString());
  165. showObjectlbl.setText(selectedNode.getParent().toString());
  166. }else{
  167. showObjectlbl.setText(selectedNode.toString());
  168. }
  169. }
  170. if(selectedNode.getLevel() == 3){
  171. showObjectlbl.setText(((DefaultMutableTreeNode)selectedNode.getParent()).toString());
  172. showPropertylbl.setText(selectedNode.toString());
  173. }
  174. }
  175. }
  176. });
  177. panel.setLayout(gl_panel);
  178. JScrollPane graphScrollPane = new JScrollPane();
  179. setRightComponent(graphScrollPane);
  180. repaintGraph();
  181. }
  182. @Override
  183. public void repaintGraph() {
  184. treeModel.reload();
  185. }
  186. @Override
  187. public void addTrackedObject(ArrayList<HolonObject> hlList) {
  188. if(hlList.size() > 0 && hlList != null){
  189. objectsNode.removeAllChildren();
  190. for(HolonObject hO : hlList){
  191. DefaultMutableTreeNode tmp = new DefaultMutableTreeNode(hO.getName() + " " + hO.getID());
  192. tmp.add(new DefaultMutableTreeNode("total Production"));
  193. tmp.add(new DefaultMutableTreeNode("total Consumption"));
  194. tmp.add(new DefaultMutableTreeNode("number of activated Elements"));
  195. objectsNode.add(tmp);
  196. }
  197. }else{
  198. objectsNode.add(new DefaultMutableTreeNode("empty"));
  199. }
  200. }
  201. }