Add SiteTab class, which contains the tabs and a header
The header can contains things like, the token label
This commit is contained in:
parent
1ba003fe56
commit
0f39aa6fc0
|
@ -105,7 +105,7 @@ public class MyFreeCams implements Site {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean supportsTips() {
|
public boolean supportsTips() {
|
||||||
return false;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -32,19 +32,11 @@ import javafx.application.HostServices;
|
||||||
import javafx.application.Platform;
|
import javafx.application.Platform;
|
||||||
import javafx.beans.value.ChangeListener;
|
import javafx.beans.value.ChangeListener;
|
||||||
import javafx.beans.value.ObservableValue;
|
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.Scene;
|
||||||
import javafx.scene.control.Alert;
|
import javafx.scene.control.Alert;
|
||||||
import javafx.scene.control.Button;
|
|
||||||
import javafx.scene.control.Tab;
|
import javafx.scene.control.Tab;
|
||||||
import javafx.scene.control.TabPane;
|
import javafx.scene.control.TabPane;
|
||||||
import javafx.scene.image.Image;
|
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 javafx.stage.Stage;
|
||||||
import okhttp3.Request;
|
import okhttp3.Request;
|
||||||
import okhttp3.Response;
|
import okhttp3.Response;
|
||||||
|
@ -57,19 +49,17 @@ public class CamrecApplication extends Application {
|
||||||
private Recorder recorder;
|
private Recorder recorder;
|
||||||
static HostServices hostServices;
|
static HostServices hostServices;
|
||||||
private SettingsTab settingsTab;
|
private SettingsTab settingsTab;
|
||||||
private TabPane tabPane = new TabPane();
|
|
||||||
private TabPane rootPane = new TabPane();
|
private TabPane rootPane = new TabPane();
|
||||||
static EventBus bus;
|
static EventBus bus;
|
||||||
private HBox tokenPanel;
|
|
||||||
private Site site;
|
private Site site;
|
||||||
private List<Site> sites = new ArrayList<>();
|
private List<Site> sites = new ArrayList<>();
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void start(Stage primaryStage) throws Exception {
|
public void start(Stage primaryStage) throws Exception {
|
||||||
site = new MyFreeCams();
|
|
||||||
sites.add(site);
|
|
||||||
Chaturbate ctb = new Chaturbate();
|
Chaturbate ctb = new Chaturbate();
|
||||||
sites.add(ctb);
|
sites.add(ctb);
|
||||||
|
site = new MyFreeCams();
|
||||||
|
sites.add(site);
|
||||||
loadConfig();
|
loadConfig();
|
||||||
bus = new AsyncEventBus(Executors.newSingleThreadExecutor());
|
bus = new AsyncEventBus(Executors.newSingleThreadExecutor());
|
||||||
hostServices = getHostServices();
|
hostServices = getHostServices();
|
||||||
|
@ -97,12 +87,10 @@ public class CamrecApplication extends Application {
|
||||||
Scene scene = new Scene(rootPane, windowWidth, windowHeight);
|
Scene scene = new Scene(rootPane, windowWidth, windowHeight);
|
||||||
primaryStage.setScene(scene);
|
primaryStage.setScene(scene);
|
||||||
for (Site site : sites) {
|
for (Site site : sites) {
|
||||||
SiteTabPane siteTabPane = new SiteTabPane(site, scene);
|
SiteTab siteTab = new SiteTab(site, scene);
|
||||||
Tab siteTab = new Tab(site.getName());
|
|
||||||
siteTab.setClosable(false);
|
|
||||||
siteTab.setContent(siteTabPane);
|
|
||||||
rootPane.getTabs().add(siteTab);
|
rootPane.getTabs().add(siteTab);
|
||||||
}
|
}
|
||||||
|
((SiteTab)rootPane.getTabs().get(0)).selected();
|
||||||
|
|
||||||
RecordedModelsTab modelsTab = new RecordedModelsTab("Recording", recorder, site);
|
RecordedModelsTab modelsTab = new RecordedModelsTab("Recording", recorder, site);
|
||||||
rootPane.getTabs().add(modelsTab);
|
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() {
|
private void createRecorder() {
|
||||||
|
|
|
@ -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();
|
||||||
|
}
|
||||||
|
}
|
|
@ -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();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue