forked from j62/ctbrec
47 lines
1.5 KiB
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();
|
|
}
|
|
}
|
|
}
|