splitPane.java 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665
  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 java.util.Hashtable;
  7. import java.util.Random;
  8. import javax.swing.GroupLayout;
  9. import javax.swing.GroupLayout.Alignment;
  10. import javax.swing.JLabel;
  11. import javax.swing.LayoutStyle.ComponentPlacement;
  12. import javax.swing.event.DocumentEvent;
  13. import javax.swing.event.DocumentListener;
  14. import javax.swing.event.TreeSelectionEvent;
  15. import javax.swing.event.TreeSelectionListener;
  16. import javax.swing.tree.DefaultMutableTreeNode;
  17. import javax.swing.tree.DefaultTreeModel;
  18. import javax.swing.tree.MutableTreeNode;
  19. import javax.swing.tree.TreeNode;
  20. import DataSets.GraphDataSet;
  21. import DataSets.PropertyDataSet;
  22. import classes.HolonObject;
  23. import classes.TrackedDataSet;
  24. import interfaces.GraphListener;
  25. import ui.controller.Control;
  26. import javax.swing.JTextField;
  27. import javax.swing.JComboBox;
  28. import javax.swing.JButton;
  29. import javax.swing.JTree;
  30. import java.awt.Color;
  31. import java.awt.event.ActionEvent;
  32. import java.awt.event.ActionListener;
  33. import java.awt.event.ItemEvent;
  34. import java.awt.event.ItemListener;
  35. import javax.swing.border.CompoundBorder;
  36. import javax.swing.border.LineBorder;
  37. import javax.swing.JPopupMenu;
  38. import java.awt.Component;
  39. import java.awt.Dimension;
  40. import java.awt.event.MouseAdapter;
  41. import java.awt.event.MouseEvent;
  42. import javax.swing.JMenuItem;
  43. import javax.swing.BorderFactory;
  44. import javax.swing.Box;
  45. import javax.swing.BoxLayout;
  46. import java.awt.FlowLayout;
  47. import java.awt.BorderLayout;
  48. public class splitPane extends JSplitPane implements GraphListener {
  49. // Property Integers
  50. public static final int CONSUMPTION = 0;
  51. public static final int PRODUCTION = 1;
  52. public static final int ACTIVATED_ELEMENTS = 2;
  53. public static final int ON_OFF = 3;
  54. private JTextField graphNrTxtField;
  55. private JTextField redField;
  56. private JTextField greenField;
  57. private JTextField blueField;
  58. private JTree objectTree;
  59. private DefaultTreeModel treeModel;
  60. private DefaultMutableTreeNode objectsNode;
  61. private DefaultMutableTreeNode wholeHolon;
  62. private Hashtable<String, GraphDataSet> objectHashtable;
  63. private Hashtable<String, StatisticGraphPanel> graphHashtable;
  64. private Hashtable<String, Integer> propValTable;
  65. private JPanel colorPanel;
  66. private PropertyDataSet currentProperty = new PropertyDataSet();
  67. private JComboBox colorComboBox;
  68. private Control controller;
  69. private JPanel graphPanel;
  70. JLabel showObjectlbl;
  71. JLabel showPropertylbl;
  72. public splitPane(Control cont) {
  73. this.controller = cont;
  74. objectHashtable = new Hashtable<String, GraphDataSet>();
  75. graphHashtable = new Hashtable<String, StatisticGraphPanel>();
  76. propValTable = new Hashtable<String, Integer>();
  77. propValTable.put("total Production", PRODUCTION);
  78. propValTable.put("total Consumption", CONSUMPTION);
  79. propValTable.put("number of activated Elements", ACTIVATED_ELEMENTS);
  80. JScrollPane dataPane = new JScrollPane();
  81. setLeftComponent(dataPane);
  82. JPanel panel = new JPanel();
  83. dataPane.setViewportView(panel);
  84. JScrollPane treeScrollPane = new JScrollPane();
  85. JLabel lblObject = new JLabel("Object(s):");
  86. showObjectlbl = new JLabel("...");
  87. JLabel lblProperty = new JLabel("Property:");
  88. showPropertylbl = new JLabel("...");
  89. JLabel lblGraph = new JLabel("Graph:");
  90. JLabel lblColor = new JLabel("Color:");
  91. colorComboBox = new JComboBox();
  92. colorComboBox.addItem("");
  93. colorComboBox.addItem("Red");
  94. colorComboBox.addItem("Blue");
  95. colorComboBox.addItem("Green");
  96. colorComboBox.addItem("Yellow");
  97. colorComboBox.addItem("Orange");
  98. colorComboBox.addItem("Cyan");
  99. colorComboBox.addItem("Magenta");
  100. colorComboBox.addItem("Pink");
  101. colorComboBox.addItem("Gray");
  102. colorComboBox.addItem("Random");
  103. colorComboBox.addItemListener(new ItemListener() {
  104. @Override
  105. public void itemStateChanged(ItemEvent e) {
  106. String colorName = (String) colorComboBox.getSelectedItem();
  107. Color tmpColor = Color.WHITE;
  108. switch (colorName) {
  109. case "":
  110. tmpColor = currentProperty.getColor();
  111. break;
  112. case "Red":
  113. tmpColor = Color.RED;
  114. colorChanged(tmpColor);
  115. break;
  116. case "Blue":
  117. tmpColor = Color.BLUE;
  118. colorChanged(tmpColor);
  119. break;
  120. case "Green":
  121. tmpColor = Color.GREEN;
  122. colorChanged(tmpColor);
  123. break;
  124. case "Yellow":
  125. tmpColor = Color.YELLOW;
  126. colorChanged(tmpColor);
  127. break;
  128. case "Orange":
  129. tmpColor = Color.ORANGE;
  130. colorChanged(tmpColor);
  131. break;
  132. case "Cyan":
  133. tmpColor = Color.CYAN;
  134. colorChanged(tmpColor);
  135. break;
  136. case "Magenta":
  137. tmpColor = Color.MAGENTA;
  138. colorChanged(tmpColor);
  139. break;
  140. case "Pink":
  141. tmpColor = Color.PINK;
  142. colorChanged(tmpColor);
  143. break;
  144. case "Gray":
  145. tmpColor = Color.GRAY;
  146. colorChanged(tmpColor);
  147. break;
  148. case "Random":
  149. Random rdm = new Random();
  150. tmpColor = new Color(rdm.nextInt(255), rdm.nextInt(255), rdm.nextInt(255));
  151. }
  152. redField.setText(Integer.toString(tmpColor.getRed()));
  153. greenField.setText(Integer.toString(tmpColor.getGreen()));
  154. blueField.setText(Integer.toString(tmpColor.getBlue()));
  155. }
  156. });
  157. // ====================GRAPH NR TEXTFIELD======================//
  158. graphNrTxtField = new JTextField();
  159. graphNrTxtField.setColumns(10);
  160. graphNrTxtField.getDocument().addDocumentListener(new DocumentListener() {
  161. /*
  162. * if textField for Red changes, changes will applied in the
  163. * DataStructure "currentProperty" if Value is legit
  164. */
  165. @Override
  166. public void insertUpdate(DocumentEvent e) {
  167. if (currentProperty != null) {
  168. currentProperty.setGraph(graphNrTxtField.getText());
  169. }
  170. }
  171. @Override
  172. public void removeUpdate(DocumentEvent e) {
  173. if (currentProperty != null) {
  174. currentProperty.setGraph(graphNrTxtField.getText());
  175. }
  176. }
  177. @Override
  178. public void changedUpdate(DocumentEvent e) {
  179. }
  180. });
  181. // ====================GRAPH NR TEXTFIELD END==================//
  182. // ====================RED TEXTFIELD===========================//
  183. redField = new JTextField();
  184. redField.setColumns(10);
  185. redField.getDocument().addDocumentListener(new DocumentListener() {
  186. /*
  187. * if textField for Red changes, changes will applied in the
  188. * DataStructure "currentProperty" if Value is legit
  189. */
  190. @Override
  191. public void insertUpdate(DocumentEvent e) {
  192. int tmp = -1;
  193. try {
  194. tmp = Integer.parseInt(redField.getText());
  195. } catch (NumberFormatException e1) {
  196. }
  197. if (tmp > -1 && tmp <= 255) {
  198. if (currentProperty != null) {
  199. Color oldColor = currentProperty.getColor();
  200. Color color = new Color(tmp, oldColor.getGreen(), oldColor.getBlue());
  201. currentProperty.setColor(color);
  202. colorChanged(color);
  203. }
  204. }
  205. }
  206. @Override
  207. public void removeUpdate(DocumentEvent e) {
  208. int tmp = -1;
  209. try {
  210. tmp = Integer.parseInt(redField.getText());
  211. } catch (NumberFormatException e1) {
  212. }
  213. if (tmp > -1 && tmp <= 255) {
  214. if (currentProperty != null) {
  215. Color oldColor = currentProperty.getColor();
  216. Color color = new Color(tmp, oldColor.getGreen(), oldColor.getBlue());
  217. currentProperty.setColor(color);
  218. colorChanged(color);
  219. }
  220. }
  221. }
  222. @Override
  223. public void changedUpdate(DocumentEvent e) {
  224. }
  225. });
  226. // ======================RED TEXTFIELD END==========================//
  227. // ======================GREEN TEXTFIELD============================//
  228. greenField = new JTextField();
  229. greenField.setColumns(10);
  230. greenField.getDocument().addDocumentListener(new DocumentListener() {
  231. /*
  232. * if textField for Red changes, changes will applied in the
  233. * DataStructure "currentProperty" if Value is legit
  234. */
  235. @Override
  236. public void insertUpdate(DocumentEvent e) {
  237. int tmp = -1;
  238. try {
  239. tmp = Integer.parseInt(greenField.getText());
  240. } catch (NumberFormatException e1) {
  241. }
  242. if (tmp > -1 && tmp <= 255) {
  243. if (currentProperty != null) {
  244. Color oldColor = currentProperty.getColor();
  245. Color color = new Color(oldColor.getRed(), tmp, oldColor.getBlue());
  246. currentProperty.setColor(color);
  247. colorChanged(color);
  248. }
  249. }
  250. }
  251. @Override
  252. public void removeUpdate(DocumentEvent e) {
  253. int tmp = -1;
  254. try {
  255. tmp = Integer.parseInt(greenField.getText());
  256. } catch (NumberFormatException e1) {
  257. }
  258. if (tmp > -1 && tmp <= 255) {
  259. if (currentProperty != null) {
  260. Color oldColor = currentProperty.getColor();
  261. Color color = new Color(oldColor.getRed(), tmp, oldColor.getBlue());
  262. currentProperty.setColor(color);
  263. colorChanged(color);
  264. }
  265. }
  266. }
  267. @Override
  268. public void changedUpdate(DocumentEvent e) {
  269. }
  270. });
  271. // ======================GREEN TEXTFIELD END========================//
  272. // ======================BLUE TEXTFIELD=============================//
  273. blueField = new JTextField();
  274. blueField.setColumns(10);
  275. blueField.getDocument().addDocumentListener(new DocumentListener() {
  276. /*
  277. * if textField for Red changes, changes will applied in the
  278. * DataStructure "currentProperty" if Value is legit
  279. */
  280. @Override
  281. public void insertUpdate(DocumentEvent e) {
  282. int tmp = -1;
  283. try {
  284. tmp = Integer.parseInt(blueField.getText());
  285. } catch (NumberFormatException e1) {
  286. }
  287. if (tmp > -1 && tmp <= 255) {
  288. if (currentProperty != null) {
  289. Color oldColor = currentProperty.getColor();
  290. Color color = new Color(oldColor.getRed(), oldColor.getGreen(), tmp);
  291. currentProperty.setColor(color);
  292. colorChanged(color);
  293. }
  294. }
  295. }
  296. @Override
  297. public void removeUpdate(DocumentEvent e) {
  298. int tmp = -1;
  299. try {
  300. tmp = Integer.parseInt(blueField.getText());
  301. } catch (NumberFormatException e1) {
  302. }
  303. if (tmp > -1 && tmp <= 255) {
  304. if (currentProperty != null) {
  305. Color oldColor = currentProperty.getColor();
  306. Color color = new Color(oldColor.getRed(), oldColor.getGreen(), tmp);
  307. currentProperty.setColor(color);
  308. colorChanged(color);
  309. }
  310. }
  311. }
  312. @Override
  313. public void changedUpdate(DocumentEvent e) {
  314. }
  315. });
  316. // ======================BLUE TEXTFIELD END=========================//
  317. JLabel lblR = new JLabel("R:");
  318. JLabel lblG = new JLabel("G:");
  319. JLabel lblB = new JLabel("B:");
  320. JButton btnAdd = new JButton("Add");
  321. btnAdd.addActionListener(new ActionListener() {
  322. public void actionPerformed(ActionEvent e) {
  323. DefaultMutableTreeNode selectedNode = (DefaultMutableTreeNode) objectTree
  324. .getLastSelectedPathComponent();
  325. if (selectedNode == null) {
  326. return;
  327. } else {
  328. if (selectedNode.getLevel() == 3) {
  329. StatisticGraphPanel tmp = null;
  330. if (graphNrTxtField.getText().length() > 0) {
  331. if (!graphHashtable.containsKey(graphNrTxtField.getText())
  332. && graphNrTxtField.getText().length() > 0) {
  333. tmp = new StatisticGraphPanel(controller.getModel(), controller,
  334. graphNrTxtField.getText(), graphHashtable);
  335. //tmp.setPreferredSize(new Dimension(280, 150));
  336. //tmp.setMaximumSize(new Dimension(1000, 1000));
  337. // tmp.setMinimumSize(new Dimension(100, 45));
  338. tmp.setBorder(new LineBorder(new Color(0, 0, 0), 1));
  339. graphPanel.add(tmp);
  340. graphPanel.add(Box.createRigidArea(new Dimension(50, 50)));
  341. graphPanel.revalidate();
  342. graphPanel.updateUI();
  343. graphHashtable.put(graphNrTxtField.getText(), tmp);
  344. }
  345. String object = ((DefaultMutableTreeNode) selectedNode.getParent()).toString();
  346. String property = selectedNode.toString();
  347. GraphDataSet dataSet = objectHashtable.get(object);
  348. TrackedDataSet tds = new TrackedDataSet(dataSet.getObject(), propValTable.get(property),
  349. currentProperty.getColor());
  350. graphHashtable.get(graphNrTxtField.getText()).addObjec(tds);
  351. }
  352. }
  353. }
  354. }
  355. });
  356. colorPanel = new JPanel();
  357. colorPanel.setBorder(new LineBorder(new Color(0, 0, 0)));
  358. colorPanel.setBackground(Color.WHITE);
  359. GroupLayout gl_panel = new GroupLayout(panel);
  360. gl_panel.setHorizontalGroup(gl_panel.createParallelGroup(Alignment.LEADING)
  361. .addGroup(gl_panel.createSequentialGroup().addContainerGap().addGroup(gl_panel
  362. .createParallelGroup(Alignment.TRAILING, false).addComponent(treeScrollPane,
  363. Alignment.LEADING)
  364. .addGroup(Alignment.LEADING,
  365. gl_panel.createSequentialGroup()
  366. .addGroup(gl_panel.createParallelGroup(Alignment.LEADING).addComponent(lblGraph)
  367. .addComponent(lblObject).addComponent(lblProperty)
  368. .addComponent(lblColor)
  369. .addGroup(gl_panel.createSequentialGroup().addComponent(lblR)
  370. .addPreferredGap(ComponentPlacement.RELATED).addGroup(gl_panel
  371. .createParallelGroup(Alignment.LEADING, false)
  372. .addComponent(colorPanel, GroupLayout.DEFAULT_SIZE,
  373. GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
  374. .addComponent(redField, GroupLayout.DEFAULT_SIZE, 37,
  375. Short.MAX_VALUE))))
  376. .addPreferredGap(ComponentPlacement.RELATED)
  377. .addGroup(gl_panel.createParallelGroup(Alignment.LEADING, false)
  378. .addComponent(showObjectlbl, GroupLayout.DEFAULT_SIZE,
  379. GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
  380. .addComponent(showPropertylbl, GroupLayout.DEFAULT_SIZE,
  381. GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
  382. .addComponent(colorComboBox, 0, GroupLayout.DEFAULT_SIZE,
  383. Short.MAX_VALUE)
  384. .addComponent(graphNrTxtField)
  385. .addGroup(gl_panel.createSequentialGroup().addGroup(gl_panel
  386. .createParallelGroup(Alignment.TRAILING).addComponent(btnAdd)
  387. .addGroup(gl_panel.createSequentialGroup().addComponent(lblG)
  388. .addPreferredGap(ComponentPlacement.RELATED)
  389. .addComponent(greenField, GroupLayout.PREFERRED_SIZE,
  390. 37, GroupLayout.PREFERRED_SIZE)))
  391. .addPreferredGap(ComponentPlacement.RELATED).addComponent(lblB)
  392. .addPreferredGap(ComponentPlacement.RELATED)
  393. .addComponent(blueField, GroupLayout.PREFERRED_SIZE, 37,
  394. GroupLayout.PREFERRED_SIZE)))))
  395. .addGap(32)));
  396. gl_panel.setVerticalGroup(
  397. gl_panel.createParallelGroup(Alignment.LEADING)
  398. .addGroup(gl_panel.createSequentialGroup().addContainerGap()
  399. .addComponent(treeScrollPane, GroupLayout.PREFERRED_SIZE, 174,
  400. GroupLayout.PREFERRED_SIZE)
  401. .addPreferredGap(ComponentPlacement.RELATED)
  402. .addGroup(gl_panel.createParallelGroup(Alignment.BASELINE)
  403. .addComponent(lblObject, GroupLayout.PREFERRED_SIZE, 14,
  404. GroupLayout.PREFERRED_SIZE)
  405. .addComponent(showObjectlbl))
  406. .addPreferredGap(ComponentPlacement.RELATED)
  407. .addGroup(gl_panel.createParallelGroup(Alignment.BASELINE).addComponent(lblProperty)
  408. .addComponent(showPropertylbl))
  409. .addPreferredGap(ComponentPlacement.RELATED)
  410. .addGroup(gl_panel.createParallelGroup(Alignment.BASELINE).addComponent(lblGraph)
  411. .addComponent(graphNrTxtField, GroupLayout.PREFERRED_SIZE,
  412. GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
  413. .addPreferredGap(ComponentPlacement.RELATED)
  414. .addGroup(gl_panel.createParallelGroup(Alignment.BASELINE).addComponent(lblColor)
  415. .addComponent(colorComboBox, GroupLayout.PREFERRED_SIZE,
  416. GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
  417. .addGap(18)
  418. .addGroup(gl_panel.createParallelGroup(Alignment.BASELINE).addComponent(lblR)
  419. .addComponent(redField, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE,
  420. GroupLayout.PREFERRED_SIZE)
  421. .addComponent(lblG)
  422. .addComponent(greenField, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE,
  423. GroupLayout.PREFERRED_SIZE)
  424. .addComponent(lblB).addComponent(blueField, GroupLayout.PREFERRED_SIZE,
  425. GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
  426. .addPreferredGap(ComponentPlacement.RELATED)
  427. .addComponent(colorPanel, GroupLayout.PREFERRED_SIZE, 33, GroupLayout.PREFERRED_SIZE)
  428. .addPreferredGap(ComponentPlacement.RELATED).addComponent(btnAdd)
  429. .addContainerGap(35, Short.MAX_VALUE)));
  430. objectTree = new JTree();
  431. treeModel = (DefaultTreeModel) objectTree.getModel();
  432. DefaultMutableTreeNode root = new DefaultMutableTreeNode("Statistics");
  433. wholeHolon = new DefaultMutableTreeNode("whole Holon");
  434. wholeHolon.add(new DefaultMutableTreeNode("total Production"));
  435. wholeHolon.add(new DefaultMutableTreeNode("total Consumption"));
  436. wholeHolon.add(new DefaultMutableTreeNode("Percentage of Supplied Objects"));
  437. wholeHolon.add(new DefaultMutableTreeNode("Percentage of not Supplied Objects"));
  438. wholeHolon.add(new DefaultMutableTreeNode("Percentage of partially Supplied Objects"));
  439. objectsNode = new DefaultMutableTreeNode("Objects");
  440. DefaultMutableTreeNode defaultNode = new DefaultMutableTreeNode("empty");
  441. objectsNode.add(defaultNode);
  442. treeModel.setRoot(root);
  443. root.add(wholeHolon);
  444. root.add(objectsNode);
  445. objectTree.setModel(treeModel);
  446. treeScrollPane.setViewportView(objectTree);
  447. JPopupMenu popupMenu = new JPopupMenu();
  448. addPopup(objectTree, popupMenu);
  449. JMenuItem mntmUntrack = new JMenuItem("Untrack");
  450. mntmUntrack.addActionListener(new ActionListener() {
  451. public void actionPerformed(ActionEvent e) {
  452. DefaultMutableTreeNode selectedNode = (DefaultMutableTreeNode) objectTree
  453. .getLastSelectedPathComponent();
  454. if (selectedNode.getLevel() == 2 && !selectedNode.getParent().toString().equals("whole Holon")) {
  455. String object = selectedNode.toString();
  456. controller.removeTrackingObj((HolonObject) objectHashtable.get(object).getObject());
  457. }
  458. }
  459. });
  460. popupMenu.add(mntmUntrack);
  461. objectTree.addTreeSelectionListener(new TreeSelectionListener() {
  462. @Override
  463. public void valueChanged(TreeSelectionEvent e) {
  464. resetFields();
  465. showObjectlbl.setText("...");
  466. showPropertylbl.setText("...");
  467. DefaultMutableTreeNode selectedNode = (DefaultMutableTreeNode) objectTree
  468. .getLastSelectedPathComponent();
  469. if (selectedNode == null) {
  470. return;
  471. } else {
  472. if (selectedNode.getLevel() == 0) {
  473. disableFields();
  474. }
  475. if (selectedNode.getLevel() == 1) {
  476. disableFields();
  477. currentProperty = null;
  478. showObjectlbl.setText(selectedNode.toString());
  479. }
  480. if (selectedNode.getLevel() == 2) {
  481. if (((DefaultMutableTreeNode) selectedNode.getParent()).toString().equals("whole Holon")) {
  482. enableFields();
  483. showPropertylbl.setText(selectedNode.toString());
  484. showObjectlbl.setText(selectedNode.getParent().toString());
  485. } else {
  486. disableFields();
  487. currentProperty = null;
  488. showObjectlbl.setText(selectedNode.toString());
  489. }
  490. }
  491. if (selectedNode.getLevel() == 3) {
  492. enableFields();
  493. String object = ((DefaultMutableTreeNode) selectedNode.getParent()).toString();
  494. String property = selectedNode.toString();
  495. currentProperty = objectHashtable.get(object).getPropertytTable().get(property);
  496. Color color = currentProperty.getColor();
  497. redField.setText(Integer.toString(color.getRed()));
  498. greenField.setText(Integer.toString(color.getGreen()));
  499. blueField.setText(Integer.toString(color.getBlue()));
  500. showObjectlbl.setText(object);
  501. showPropertylbl.setText(property);
  502. graphNrTxtField.setText(currentProperty.getAssignedGraph());
  503. colorPanel.setBackground(color);
  504. }
  505. }
  506. }
  507. });
  508. panel.setLayout(gl_panel);
  509. JScrollPane graphScrollPane = new JScrollPane();
  510. setRightComponent(graphScrollPane);
  511. graphPanel = new JPanel();
  512. graphPanel.setLayout(new BoxLayout(graphPanel, BoxLayout.Y_AXIS));
  513. graphPanel.revalidate();
  514. graphPanel.updateUI();
  515. graphScrollPane.setViewportView(graphPanel);
  516. repaintTree();
  517. }
  518. @Override
  519. public void repaintTree() {
  520. treeModel.reload();
  521. }
  522. @Override
  523. public void addTrackedObject(ArrayList<HolonObject> hlList) {
  524. objectsNode.removeAllChildren();
  525. objectHashtable.clear();
  526. if (hlList.size() > 0 && hlList != null) {
  527. for (HolonObject hO : hlList) {
  528. Hashtable<String, PropertyDataSet> tmpHash = new Hashtable<String, PropertyDataSet>();
  529. String name = hO.getName() + " " + hO.getID();
  530. DefaultMutableTreeNode tmp = new DefaultMutableTreeNode(name);
  531. tmp.add(new DefaultMutableTreeNode("total Production"));
  532. tmp.add(new DefaultMutableTreeNode("total Consumption"));
  533. tmp.add(new DefaultMutableTreeNode("number of activated Elements"));
  534. tmpHash.put("total Production", new PropertyDataSet());
  535. tmpHash.put("total Consumption", new PropertyDataSet());
  536. tmpHash.put("number of activated Elements", new PropertyDataSet());
  537. GraphDataSet gS = new GraphDataSet(hO, tmpHash);
  538. objectHashtable.put(name, gS);
  539. objectsNode.add(tmp);
  540. }
  541. } else {
  542. objectsNode.add(new DefaultMutableTreeNode("empty"));
  543. }
  544. }
  545. public void colorChanged(Color color) {
  546. colorPanel.setBackground(color);
  547. }
  548. public void resetFields() {
  549. colorPanel.setBackground(Color.WHITE);
  550. redField.setText("");
  551. greenField.setText("");
  552. blueField.setText("");
  553. // graphNrTxtField.setText("");
  554. colorComboBox.setSelectedIndex(0);
  555. }
  556. public void disableFields() {
  557. redField.setEnabled(false);
  558. greenField.setEnabled(false);
  559. blueField.setEnabled(false);
  560. graphNrTxtField.setEnabled(false);
  561. colorComboBox.setEnabled(false);
  562. colorPanel.setBackground(Color.LIGHT_GRAY);
  563. }
  564. public void enableFields() {
  565. redField.setEnabled(true);
  566. greenField.setEnabled(true);
  567. blueField.setEnabled(true);
  568. graphNrTxtField.setEnabled(true);
  569. colorComboBox.setEnabled(true);
  570. colorPanel.setBackground(Color.WHITE);
  571. }
  572. public void repaintGraphs() {
  573. for (StatisticGraphPanel sg : graphHashtable.values()) {
  574. sg.repaint();
  575. }
  576. }
  577. private static void addPopup(Component component, final JPopupMenu popup) {
  578. component.addMouseListener(new MouseAdapter() {
  579. public void mousePressed(MouseEvent e) {
  580. if (e.isPopupTrigger()) {
  581. showMenu(e);
  582. }
  583. }
  584. public void mouseReleased(MouseEvent e) {
  585. if (e.isPopupTrigger()) {
  586. showMenu(e);
  587. }
  588. }
  589. private void showMenu(MouseEvent e) {
  590. popup.show(e.getComponent(), e.getX(), e.getY());
  591. }
  592. });
  593. }
  594. }