package rmblworx.tools.timey.gui;
import java.util.List;
import java.util.Vector;
/*
* Copyright 2014-2015 Christian Raue
* MIT License http://opensource.org/licenses/mit-license.php
*/
/**
* Basisklasse für GUI-Controller.
* @author Christian Raue {@literal <christian.raue@gmail.com>}
*/
public abstract class Controller {
/**
* In der für diesen Controller verantwortlichen GUI eingebettete Controller.
*/
private final List<Controller> embeddedControllers = new Vector<>();
private GuiHelper guiHelper;
public final void addEmbeddedController(final Controller embeddedController) {
embeddedControllers.add(embeddedController);
}
public final List<Controller> getEmbeddedControllers() {
return embeddedControllers;
}
public final void setGuiHelper(final GuiHelper guiHelper) {
this.guiHelper = guiHelper;
passGuiHelperToEmbeddedControllers();
}
public final GuiHelper getGuiHelper() {
return guiHelper;
}
/**
* Macht die GuiHelper-Instanz auch allen eingebetteten Controllern bekannt.
*/
private synchronized void passGuiHelperToEmbeddedControllers() {
for (final Controller embeddedController : embeddedControllers) {
embeddedController.setGuiHelper(guiHelper);
}
}
}