diff --git a/src/main/java/ctbrec/sites/mfc/MyFreeCams.java b/src/main/java/ctbrec/sites/mfc/MyFreeCams.java index aaf99b19..b2cdb332 100644 --- a/src/main/java/ctbrec/sites/mfc/MyFreeCams.java +++ b/src/main/java/ctbrec/sites/mfc/MyFreeCams.java @@ -105,7 +105,7 @@ public class MyFreeCams implements Site { @Override public boolean supportsTips() { - return false; + return true; } @Override diff --git a/src/main/java/ctbrec/ui/CamrecApplication.java b/src/main/java/ctbrec/ui/CamrecApplication.java index 9af83fd3..127fc697 100644 --- a/src/main/java/ctbrec/ui/CamrecApplication.java +++ b/src/main/java/ctbrec/ui/CamrecApplication.java @@ -32,19 +32,11 @@ import javafx.application.HostServices; import javafx.application.Platform; import javafx.beans.value.ChangeListener; import javafx.beans.value.ObservableValue; -import javafx.geometry.Insets; -import javafx.geometry.Pos; -import javafx.scene.Node; -import javafx.scene.Parent; import javafx.scene.Scene; import javafx.scene.control.Alert; -import javafx.scene.control.Button; import javafx.scene.control.Tab; import javafx.scene.control.TabPane; import javafx.scene.image.Image; -import javafx.scene.layout.HBox; -import javafx.scene.layout.StackPane; -import javafx.scene.text.Font; import javafx.stage.Stage; import okhttp3.Request; import okhttp3.Response; @@ -57,19 +49,17 @@ public class CamrecApplication extends Application { private Recorder recorder; static HostServices hostServices; private SettingsTab settingsTab; - private TabPane tabPane = new TabPane(); private TabPane rootPane = new TabPane(); static EventBus bus; - private HBox tokenPanel; private Site site; private List sites = new ArrayList<>(); @Override public void start(Stage primaryStage) throws Exception { - site = new MyFreeCams(); - sites.add(site); Chaturbate ctb = new Chaturbate(); sites.add(ctb); + site = new MyFreeCams(); + sites.add(site); loadConfig(); bus = new AsyncEventBus(Executors.newSingleThreadExecutor()); hostServices = getHostServices(); @@ -97,12 +87,10 @@ public class CamrecApplication extends Application { Scene scene = new Scene(rootPane, windowWidth, windowHeight); primaryStage.setScene(scene); for (Site site : sites) { - SiteTabPane siteTabPane = new SiteTabPane(site, scene); - Tab siteTab = new Tab(site.getName()); - siteTab.setClosable(false); - siteTab.setContent(siteTabPane); + SiteTab siteTab = new SiteTab(site, scene); rootPane.getTabs().add(siteTab); } + ((SiteTab)rootPane.getTabs().get(0)).selected(); RecordedModelsTab modelsTab = new RecordedModelsTab("Recording", recorder, site); rootPane.getTabs().add(modelsTab); @@ -168,37 +156,6 @@ public class CamrecApplication extends Application { } } }); - - String username = Config.getInstance().getSettings().username; - if (site.supportsTips() && username != null && !username.trim().isEmpty()) { - double fontSize = tabPane.getTabMaxHeight() / 2 - 1; - Button buyTokens = new Button("Buy Tokens"); - buyTokens.setFont(Font.font(fontSize)); - buyTokens.setOnAction((e) -> DesktopIntergation.open(site.getBuyTokensLink())); - buyTokens.setMaxHeight(tabPane.getTabMaxHeight()); - TokenLabel tokenBalance = new TokenLabel(site); - tokenPanel = new HBox(5, tokenBalance, buyTokens); - tokenPanel.setAlignment(Pos.BASELINE_RIGHT); - tokenPanel.setMaxHeight(tabPane.getTabMaxHeight()); - tokenPanel.setMaxWidth(200); - tokenBalance.setFont(Font.font(fontSize)); - HBox.setMargin(tokenBalance, new Insets(0, 5, 0, 0)); - HBox.setMargin(buyTokens, new Insets(0, 5, 0, 0)); - for (Node node : tabPane.getChildrenUnmodifiable()) { - if (node.getStyleClass().contains("tab-header-area")) { - Parent header = (Parent) node; - for (Node nd : header.getChildrenUnmodifiable()) { - if (nd.getStyleClass().contains("tab-header-background")) { - StackPane pane = (StackPane) nd; - StackPane.setAlignment(tokenPanel, Pos.CENTER_RIGHT); - pane.getChildren().add(tokenPanel); - } - } - - } - } - tokenBalance.loadBalance(); - } } private void createRecorder() { diff --git a/src/main/java/ctbrec/ui/SiteTab.java b/src/main/java/ctbrec/ui/SiteTab.java new file mode 100644 index 00000000..e00355d2 --- /dev/null +++ b/src/main/java/ctbrec/ui/SiteTab.java @@ -0,0 +1,52 @@ +package ctbrec.ui; + +import ctbrec.Config; +import ctbrec.sites.Site; +import javafx.geometry.Insets; +import javafx.geometry.Pos; +import javafx.scene.Scene; +import javafx.scene.control.Button; +import javafx.scene.control.Tab; +import javafx.scene.layout.BorderPane; +import javafx.scene.layout.HBox; + +public class SiteTab extends Tab implements TabSelectionListener { + + private BorderPane rootPane = new BorderPane(); + private HBox tokenPanel; + private SiteTabPane siteTabPane; + + public SiteTab(Site site, Scene scene) { + super(site.getName()); + + setClosable(false); + setContent(rootPane); + siteTabPane = new SiteTabPane(site, scene); + rootPane.setCenter(siteTabPane); + + String username = Config.getInstance().getSettings().username; + if (site.supportsTips() && username != null && !username.trim().isEmpty()) { + + Button buyTokens = new Button("Buy Tokens"); + buyTokens.setOnAction((e) -> DesktopIntergation.open(site.getBuyTokensLink())); + TokenLabel tokenBalance = new TokenLabel(site); + tokenPanel = new HBox(5, tokenBalance, buyTokens); + tokenPanel.setAlignment(Pos.BASELINE_RIGHT); + rootPane.setTop(tokenPanel); + // HBox.setMargin(tokenBalance, new Insets(0, 5, 0, 0)); + // HBox.setMargin(buyTokens, new Insets(0, 5, 0, 0)); + tokenBalance.loadBalance(); + BorderPane.setMargin(tokenPanel, new Insets(5, 10, 0, 10)); + } + } + + @Override + public void selected() { + siteTabPane.selected(); + } + + @Override + public void deselected() { + siteTabPane.deselected(); + } +} diff --git a/src/main/java/ctbrec/ui/SiteTabPane.java b/src/main/java/ctbrec/ui/SiteTabPane.java index b254fcdc..38785bfd 100644 --- a/src/main/java/ctbrec/ui/SiteTabPane.java +++ b/src/main/java/ctbrec/ui/SiteTabPane.java @@ -31,4 +31,18 @@ public class SiteTabPane extends TabPane { } }); } + + 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(); + } + } }