LinkColorController.java 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. package de.tu_darmstadt.tk.SmartHomeNetworkSim.control;
  2. import java.awt.Color;
  3. import de.tu_darmstadt.tk.SmartHomeNetworkSim.core.Link;
  4. import de.tu_darmstadt.tk.SmartHomeNetworkSim.core.Model;
  5. import de.tu_darmstadt.tk.SmartHomeNetworkSim.core.configuration.LinkColorManager;
  6. import de.tu_darmstadt.tk.SmartHomeNetworkSim.core.util.Pair;
  7. /**
  8. * Controller which enables access to the link colors
  9. *
  10. * @author Andreas T. Meyer-Berg
  11. */
  12. public class LinkColorController {
  13. /**
  14. * Link colors
  15. */
  16. private LinkColorManager linkColorManager;
  17. /**
  18. * Model of the program
  19. */
  20. private Model model;
  21. /**
  22. * Main Controller
  23. */
  24. private Controller controller;
  25. /**
  26. * Creates new LinkColorController which enables access to Colors of Links
  27. *
  28. * @param model Model which should be manipulated
  29. * @param controller controller which can be used
  30. */
  31. public LinkColorController(Model model, Controller controller) {
  32. this.model = model;
  33. this.controller = controller;
  34. linkColorManager = this.model.getConfigurator().getLinkColors();
  35. }
  36. /**
  37. * Returns the color and index of the given Link
  38. * @param link link which should be looked up
  39. * @return Pair of Index and Color of the Link
  40. */
  41. public Pair<Integer,Color> getColorOfLink(Link link){
  42. Pair<Integer,Color> pair = linkColorManager.getColorOfLink(link);
  43. if(pair == null){
  44. pair = new Pair<Integer, Color>(-1,linkColorManager.getNextLinkColor());
  45. linkColorManager.addLinkColor(link, pair);
  46. }
  47. return pair;
  48. }
  49. /**
  50. * Changes Color of link to the new Color
  51. * @param link link which should be updated
  52. * @param color new color
  53. */
  54. public void setColorOfLink(Link link, Color color){
  55. Pair<Integer, Color> elem = linkColorManager.getColorOfLink(link);
  56. if(elem!=null)
  57. elem.setRight(color);
  58. else
  59. linkColorManager.addLinkColor(link, new Pair<Integer,Color>(-1,color));
  60. controller.notifyObservers();
  61. }
  62. /**
  63. * Removes the given Link and its color
  64. * @param link link to be removed
  65. */
  66. public void removeLink(Link link){
  67. linkColorManager.removeLink(link);;
  68. }
  69. }