forked from j62/ctbrec
1
0
Fork 0
ctbrec/client/src/main/java/ctbrec/ui/tabs/SiteTabPane.java

47 lines
1.5 KiB
Java

package ctbrec.ui.tabs;
import ctbrec.sites.Site;
import ctbrec.ui.SiteUiFactory;
import javafx.beans.value.ChangeListener;
import javafx.geometry.Side;
import javafx.scene.Scene;
import javafx.scene.control.Tab;
import javafx.scene.control.TabPane;
public class SiteTabPane extends TabPane {
public SiteTabPane(Site site, Scene scene) {
setSide(Side.LEFT);
// add all tabs
TabProvider tabProvider = SiteUiFactory.getUi(site).getTabProvider();
for (Tab tab : tabProvider.getTabs(scene)) {
getTabs().add(tab);
}
// register changelistener to activate / deactivate tabs, when the user switches between them
getSelectionModel().selectedItemProperty().addListener((ChangeListener<Tab>) (ov, from, to) -> {
if (from instanceof TabSelectionListener) {
((TabSelectionListener) from).deselected();
}
if (to instanceof TabSelectionListener) {
((TabSelectionListener) to).selected();
}
});
}
public void selected() {
Tab selectedTab = getSelectionModel().getSelectedItem();
if(selectedTab instanceof TabSelectionListener) {
((TabSelectionListener) selectedTab).selected();
}
}
public void deselected() {
Tab selectedTab = getSelectionModel().getSelectedItem();
if(selectedTab instanceof TabSelectionListener) {
((TabSelectionListener) selectedTab).deselected();
}
}
}