NetworkTreeCellRenderer.java 3.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. package de.tu_darmstadt.tk.SmartHomeNetworkSim.view.popups;
  2. import java.awt.Color;
  3. import java.awt.Component;
  4. import javax.swing.JCheckBox;
  5. import javax.swing.JTree;
  6. import javax.swing.tree.DefaultMutableTreeNode;
  7. import javax.swing.tree.TreeCellRenderer;
  8. import de.tu_darmstadt.tk.SmartHomeNetworkSim.control.Controller;
  9. import de.tu_darmstadt.tk.SmartHomeNetworkSim.core.Connection;
  10. import de.tu_darmstadt.tk.SmartHomeNetworkSim.core.Link;
  11. import de.tu_darmstadt.tk.SmartHomeNetworkSim.core.SmartDevice;
  12. import de.tu_darmstadt.tk.SmartHomeNetworkSim.core.configuration.NetworkTreeNodeStatus;
  13. import de.tu_darmstadt.tk.SmartHomeNetworkSim.core.util.Pair;
  14. /**
  15. * TreeCellRenderer for the Network tree, which visualizes the different network parts
  16. *
  17. * @author Andreas T. Meyer-Berg
  18. */
  19. public class NetworkTreeCellRenderer implements TreeCellRenderer {
  20. /**
  21. * Label which describes the node
  22. */
  23. private JCheckBox label;
  24. /**
  25. * Controller to manipulate / get infos from the model
  26. */
  27. private Controller controller;
  28. /**
  29. * Creates a new NetworkTreeCellRenderer
  30. * @param controller Controller for manipulation
  31. */
  32. public NetworkTreeCellRenderer(Controller controller) {
  33. this.controller = controller;
  34. label = new JCheckBox();
  35. label.setBackground(Color.WHITE);
  36. }
  37. @Override
  38. public Component getTreeCellRendererComponent(JTree tree, Object value,
  39. boolean selected, boolean expanded, boolean leaf, int row,
  40. boolean hasFocus) {
  41. /**
  42. * Object which should be rendered
  43. */
  44. Object o = ((DefaultMutableTreeNode) value).getUserObject();
  45. /**
  46. * Status of the object (hidden, expanded etc.)
  47. */
  48. NetworkTreeNodeStatus status = controller.getSettingsController().getNetworkTreeSettingsController().getStatusOfObject(o);
  49. label.setSelected(status.isVisible());
  50. if (o instanceof SmartDevice) {
  51. /**
  52. * Device to be rendered
  53. */
  54. SmartDevice device = (SmartDevice) o;
  55. boolean hidden = !status.isVisible();
  56. //label.setIcon(new ImageIcon(Utility.loadFile("/images/smartHome_icon.png").getScaledInstance(12, 12, 0)));
  57. label.setText("<html><font color=\""+(hidden?"red":"black")+"\">"+device.getName()+"</font></html>");
  58. } else if (o instanceof Connection){
  59. /**
  60. * Connection to be rendered
  61. */
  62. Connection connection = (Connection) o;
  63. //label.setIcon(new ImageIcon(Utility.loadFile("/images/smartHome_icon.png").getScaledInstance(12, 12, 0)));
  64. label.setText(connection.getName());
  65. }else if(o instanceof Link){
  66. /**
  67. * Link to be rendered
  68. */
  69. Link link = (Link) o;
  70. //label.setIcon(new ImageIcon(Utility.loadFile("/images/smartHome_icon.png").getScaledInstance(12, 12, 0)));
  71. /**
  72. * Index & Color of the link
  73. */
  74. Pair<Integer,Color> pair = controller.getSettingsController().getLinkColors().getColorOfLink(link);
  75. int r = pair.getRight().getRed();
  76. int g = pair.getRight().getGreen();
  77. int b = pair.getRight().getBlue();
  78. label.setText("<html><font color=\"rgb("+r+","+g+","+b+")\">"+link.getName()+"</font></html>");
  79. }
  80. else {
  81. /**
  82. * Default use toString
  83. */
  84. //label.setIcon(null);
  85. label.setText("" + value);
  86. }
  87. return label;
  88. }
  89. }