diff --git a/main/src/main/java/sd/dashboard/ConfigurationDialog.java b/main/src/main/java/sd/dashboard/ConfigurationDialog.java index d823d63..b7ef368 100644 --- a/main/src/main/java/sd/dashboard/ConfigurationDialog.java +++ b/main/src/main/java/sd/dashboard/ConfigurationDialog.java @@ -50,10 +50,11 @@ public class ConfigurationDialog { // Criar painel de configuração VBox content = new VBox(15); content.setPadding(new Insets(20)); + content.setStyle("-fx-background-color: #2b2b2b;"); // Seção 1: Parâmetros de Chegada Label arrivalHeader = new Label("Parâmetros de Chegada de Veículos"); - arrivalHeader.setStyle("-fx-font-weight: bold; -fx-font-size: 14px;"); + arrivalHeader.setStyle("-fx-font-weight: bold; -fx-font-size: 14px; -fx-text-fill: white;"); GridPane arrivalGrid = new GridPane(); arrivalGrid.setHgap(10); @@ -62,6 +63,7 @@ public class ConfigurationDialog { // Modelo de chegada Label modelLabel = new Label("Modelo de chegada:"); + modelLabel.setStyle("-fx-text-fill: white;"); ComboBox modelCombo = new ComboBox<>(); modelCombo.getItems().addAll("POISSON", "FIXED"); modelCombo.setValue("POISSON"); @@ -70,6 +72,7 @@ public class ConfigurationDialog { // Taxa de chegada (λ) Label rateLabel = new Label("Taxa de chegada (λ) [veículos/s]:"); + rateLabel.setStyle("-fx-text-fill: white;"); Spinner rateSpinner = new Spinner<>(0.1, 2.0, 0.5, 0.1); rateSpinner.setEditable(true); rateSpinner.setPrefWidth(100); @@ -78,6 +81,7 @@ public class ConfigurationDialog { // Intervalo fixo (se aplicável) Label intervalLabel = new Label("Intervalo fixo [s]:"); + intervalLabel.setStyle("-fx-text-fill: white;"); Spinner intervalSpinner = new Spinner<>(0.5, 10.0, 2.0, 0.5); intervalSpinner.setEditable(true); intervalSpinner.setPrefWidth(100); @@ -94,7 +98,7 @@ public class ConfigurationDialog { // Seção 2: Parâmetros de Tempo Label timeHeader = new Label("Parâmetros de Tempo"); - timeHeader.setStyle("-fx-font-weight: bold; -fx-font-size: 14px;"); + timeHeader.setStyle("-fx-font-weight: bold; -fx-font-size: 14px; -fx-text-fill: white;"); GridPane timeGrid = new GridPane(); timeGrid.setHgap(10); @@ -103,6 +107,7 @@ public class ConfigurationDialog { // Duração da simulação Label durationLabel = new Label("Duração da simulação [s]:"); + durationLabel.setStyle("-fx-text-fill: white;"); Spinner durationSpinner = new Spinner<>(60, 7200, 300, 60); durationSpinner.setEditable(true); durationSpinner.setPrefWidth(100); @@ -111,6 +116,7 @@ public class ConfigurationDialog { // Escala temporal (para visualização) Label scaleLabel = new Label("Escala temporal (0=instantâneo, 1=tempo real):"); + scaleLabel.setStyle("-fx-text-fill: white;"); Spinner scaleSpinner = new Spinner<>(0.0, 1.0, 0.01, 0.01); scaleSpinner.setEditable(true); scaleSpinner.setPrefWidth(100); @@ -119,6 +125,7 @@ public class ConfigurationDialog { // Tempo de drenagem Label drainLabel = new Label("Tempo de drenagem [s]:"); + drainLabel.setStyle("-fx-text-fill: white;"); Spinner drainSpinner = new Spinner<>(0, 300, 60, 10); drainSpinner.setEditable(true); drainSpinner.setPrefWidth(100); @@ -127,7 +134,7 @@ public class ConfigurationDialog { // Seção 3: Distribuição de Tipos de Veículos Label vehicleHeader = new Label("Distribuição de Tipos de Veículos"); - vehicleHeader.setStyle("-fx-font-weight: bold; -fx-font-size: 14px;"); + vehicleHeader.setStyle("-fx-font-weight: bold; -fx-font-size: 14px; -fx-text-fill: white;"); GridPane vehicleGrid = new GridPane(); vehicleGrid.setHgap(10); @@ -135,6 +142,7 @@ public class ConfigurationDialog { vehicleGrid.setPadding(new Insets(10)); Label bikeLabel = new Label("Bicicletas/Motos [%]:"); + bikeLabel.setStyle("-fx-text-fill: white;"); Spinner bikeSpinner = new Spinner<>(0, 100, 10, 5); bikeSpinner.setEditable(true); bikeSpinner.setPrefWidth(100); @@ -142,6 +150,7 @@ public class ConfigurationDialog { vehicleGrid.add(bikeSpinner, 1, 0); Label lightLabel = new Label("Veículos Ligeiros [%]:"); + lightLabel.setStyle("-fx-text-fill: white;"); Spinner lightSpinner = new Spinner<>(0, 100, 70, 5); lightSpinner.setEditable(true); lightSpinner.setPrefWidth(100); @@ -149,6 +158,7 @@ public class ConfigurationDialog { vehicleGrid.add(lightSpinner, 1, 1); Label heavyLabel = new Label("Veículos Pesados [%]:"); + heavyLabel.setStyle("-fx-text-fill: white;"); Spinner heavySpinner = new Spinner<>(0, 100, 20, 5); heavySpinner.setEditable(true); heavySpinner.setPrefWidth(100); @@ -159,7 +169,7 @@ public class ConfigurationDialog { Label noteLabel = new Label("Nota: Estes parâmetros sobrepõem os valores do ficheiro .properties selecionado.\n" + "Para usar os valores padrão do ficheiro, deixe em branco ou cancele."); noteLabel.setWrapText(true); - noteLabel.setStyle("-fx-font-size: 11px; -fx-text-fill: #666666;"); + noteLabel.setStyle("-fx-font-size: 11px; -fx-text-fill: #aaaaaa;"); // Adicionar tudo ao conteúdo content.getChildren().addAll( diff --git a/main/src/main/java/sd/dashboard/DashboardUI.java b/main/src/main/java/sd/dashboard/DashboardUI.java index 8757784..6f3b011 100644 --- a/main/src/main/java/sd/dashboard/DashboardUI.java +++ b/main/src/main/java/sd/dashboard/DashboardUI.java @@ -96,6 +96,7 @@ public class DashboardUI extends Application { // Build UI Layout BorderPane root = new BorderPane(); root.getStyleClass().add("root"); + root.setStyle("-fx-background-color: #2b2b2b;"); // Header (Top) VBox header = createHeader(); diff --git a/main/src/main/resources/dashboard.css b/main/src/main/resources/dashboard.css index 5cd7e57..18fbee2 100644 --- a/main/src/main/resources/dashboard.css +++ b/main/src/main/resources/dashboard.css @@ -1,6 +1,6 @@ /* Global Styles */ .root { - -fx-background-color: #f4f7f6; + -fx-background-color: #2b2b2b; -fx-font-family: 'Segoe UI', sans-serif; } @@ -63,24 +63,24 @@ /* Cards / Panels */ .card { - -fx-background-color: white; + -fx-background-color: #1e1e1e; -fx-background-radius: 8; - -fx-effect: dropshadow(three-pass-box, rgba(0,0,0,0.05), 10, 0, 0, 2); + -fx-effect: dropshadow(three-pass-box, rgba(0,0,0,0.3), 10, 0, 0, 2); -fx-padding: 0; } .card-header { - -fx-background-color: #ecf0f1; + -fx-background-color: #3a3a3a; -fx-background-radius: 8 8 0 0; -fx-padding: 10 15; - -fx-border-color: #bdc3c7; + -fx-border-color: #555555; -fx-border-width: 0 0 1 0; } .card-title { -fx-font-size: 16px; -fx-font-weight: bold; - -fx-text-fill: #2c3e50; + -fx-text-fill: white; } .card-content { @@ -90,43 +90,48 @@ /* Statistics Grid */ .stat-label { -fx-font-size: 14px; - -fx-text-fill: #7f8c8d; + -fx-text-fill: #cccccc; } .stat-value { -fx-font-size: 20px; -fx-font-weight: bold; - -fx-text-fill: #2980b9; + -fx-text-fill: #4ca1af; } /* Tables */ .table-view { - -fx-background-color: transparent; + -fx-background-color: #1e1e1e; -fx-border-color: transparent; } .table-view .column-header-background { - -fx-background-color: #ecf0f1; - -fx-border-color: #bdc3c7; + -fx-background-color: #3a3a3a; + -fx-border-color: #555555; -fx-border-width: 0 0 1 0; } .table-view .column-header .label { - -fx-text-fill: #2c3e50; + -fx-text-fill: white; -fx-font-weight: bold; } .table-row-cell { - -fx-background-color: white; + -fx-background-color: #1e1e1e; -fx-border-color: transparent; + -fx-text-fill: white; } .table-row-cell:odd { - -fx-background-color: #f9f9f9; + -fx-background-color: #252525; } .table-row-cell:selected { - -fx-background-color: #3498db; + -fx-background-color: #4ca1af; + -fx-text-fill: white; +} + +.table-cell { -fx-text-fill: white; }