color update

This commit is contained in:
2025-12-08 08:42:38 +00:00
parent 61277350d8
commit 4b90827c2a
3 changed files with 35 additions and 19 deletions

View File

@@ -50,10 +50,11 @@ public class ConfigurationDialog {
// Criar painel de configuração // Criar painel de configuração
VBox content = new VBox(15); VBox content = new VBox(15);
content.setPadding(new Insets(20)); content.setPadding(new Insets(20));
content.setStyle("-fx-background-color: #2b2b2b;");
// Seção 1: Parâmetros de Chegada // Seção 1: Parâmetros de Chegada
Label arrivalHeader = new Label("Parâmetros de Chegada de Veículos"); 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(); GridPane arrivalGrid = new GridPane();
arrivalGrid.setHgap(10); arrivalGrid.setHgap(10);
@@ -62,6 +63,7 @@ public class ConfigurationDialog {
// Modelo de chegada // Modelo de chegada
Label modelLabel = new Label("Modelo de chegada:"); Label modelLabel = new Label("Modelo de chegada:");
modelLabel.setStyle("-fx-text-fill: white;");
ComboBox<String> modelCombo = new ComboBox<>(); ComboBox<String> modelCombo = new ComboBox<>();
modelCombo.getItems().addAll("POISSON", "FIXED"); modelCombo.getItems().addAll("POISSON", "FIXED");
modelCombo.setValue("POISSON"); modelCombo.setValue("POISSON");
@@ -70,6 +72,7 @@ public class ConfigurationDialog {
// Taxa de chegada (λ) // Taxa de chegada (λ)
Label rateLabel = new Label("Taxa de chegada (λ) [veículos/s]:"); Label rateLabel = new Label("Taxa de chegada (λ) [veículos/s]:");
rateLabel.setStyle("-fx-text-fill: white;");
Spinner<Double> rateSpinner = new Spinner<>(0.1, 2.0, 0.5, 0.1); Spinner<Double> rateSpinner = new Spinner<>(0.1, 2.0, 0.5, 0.1);
rateSpinner.setEditable(true); rateSpinner.setEditable(true);
rateSpinner.setPrefWidth(100); rateSpinner.setPrefWidth(100);
@@ -78,6 +81,7 @@ public class ConfigurationDialog {
// Intervalo fixo (se aplicável) // Intervalo fixo (se aplicável)
Label intervalLabel = new Label("Intervalo fixo [s]:"); Label intervalLabel = new Label("Intervalo fixo [s]:");
intervalLabel.setStyle("-fx-text-fill: white;");
Spinner<Double> intervalSpinner = new Spinner<>(0.5, 10.0, 2.0, 0.5); Spinner<Double> intervalSpinner = new Spinner<>(0.5, 10.0, 2.0, 0.5);
intervalSpinner.setEditable(true); intervalSpinner.setEditable(true);
intervalSpinner.setPrefWidth(100); intervalSpinner.setPrefWidth(100);
@@ -94,7 +98,7 @@ public class ConfigurationDialog {
// Seção 2: Parâmetros de Tempo // Seção 2: Parâmetros de Tempo
Label timeHeader = new Label("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(); GridPane timeGrid = new GridPane();
timeGrid.setHgap(10); timeGrid.setHgap(10);
@@ -103,6 +107,7 @@ public class ConfigurationDialog {
// Duração da simulação // Duração da simulação
Label durationLabel = new Label("Duração da simulação [s]:"); Label durationLabel = new Label("Duração da simulação [s]:");
durationLabel.setStyle("-fx-text-fill: white;");
Spinner<Integer> durationSpinner = new Spinner<>(60, 7200, 300, 60); Spinner<Integer> durationSpinner = new Spinner<>(60, 7200, 300, 60);
durationSpinner.setEditable(true); durationSpinner.setEditable(true);
durationSpinner.setPrefWidth(100); durationSpinner.setPrefWidth(100);
@@ -111,6 +116,7 @@ public class ConfigurationDialog {
// Escala temporal (para visualização) // Escala temporal (para visualização)
Label scaleLabel = new Label("Escala temporal (0=instantâneo, 1=tempo real):"); Label scaleLabel = new Label("Escala temporal (0=instantâneo, 1=tempo real):");
scaleLabel.setStyle("-fx-text-fill: white;");
Spinner<Double> scaleSpinner = new Spinner<>(0.0, 1.0, 0.01, 0.01); Spinner<Double> scaleSpinner = new Spinner<>(0.0, 1.0, 0.01, 0.01);
scaleSpinner.setEditable(true); scaleSpinner.setEditable(true);
scaleSpinner.setPrefWidth(100); scaleSpinner.setPrefWidth(100);
@@ -119,6 +125,7 @@ public class ConfigurationDialog {
// Tempo de drenagem // Tempo de drenagem
Label drainLabel = new Label("Tempo de drenagem [s]:"); Label drainLabel = new Label("Tempo de drenagem [s]:");
drainLabel.setStyle("-fx-text-fill: white;");
Spinner<Integer> drainSpinner = new Spinner<>(0, 300, 60, 10); Spinner<Integer> drainSpinner = new Spinner<>(0, 300, 60, 10);
drainSpinner.setEditable(true); drainSpinner.setEditable(true);
drainSpinner.setPrefWidth(100); drainSpinner.setPrefWidth(100);
@@ -127,7 +134,7 @@ public class ConfigurationDialog {
// Seção 3: Distribuição de Tipos de Veículos // Seção 3: Distribuição de Tipos de Veículos
Label vehicleHeader = new Label("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(); GridPane vehicleGrid = new GridPane();
vehicleGrid.setHgap(10); vehicleGrid.setHgap(10);
@@ -135,6 +142,7 @@ public class ConfigurationDialog {
vehicleGrid.setPadding(new Insets(10)); vehicleGrid.setPadding(new Insets(10));
Label bikeLabel = new Label("Bicicletas/Motos [%]:"); Label bikeLabel = new Label("Bicicletas/Motos [%]:");
bikeLabel.setStyle("-fx-text-fill: white;");
Spinner<Integer> bikeSpinner = new Spinner<>(0, 100, 10, 5); Spinner<Integer> bikeSpinner = new Spinner<>(0, 100, 10, 5);
bikeSpinner.setEditable(true); bikeSpinner.setEditable(true);
bikeSpinner.setPrefWidth(100); bikeSpinner.setPrefWidth(100);
@@ -142,6 +150,7 @@ public class ConfigurationDialog {
vehicleGrid.add(bikeSpinner, 1, 0); vehicleGrid.add(bikeSpinner, 1, 0);
Label lightLabel = new Label("Veículos Ligeiros [%]:"); Label lightLabel = new Label("Veículos Ligeiros [%]:");
lightLabel.setStyle("-fx-text-fill: white;");
Spinner<Integer> lightSpinner = new Spinner<>(0, 100, 70, 5); Spinner<Integer> lightSpinner = new Spinner<>(0, 100, 70, 5);
lightSpinner.setEditable(true); lightSpinner.setEditable(true);
lightSpinner.setPrefWidth(100); lightSpinner.setPrefWidth(100);
@@ -149,6 +158,7 @@ public class ConfigurationDialog {
vehicleGrid.add(lightSpinner, 1, 1); vehicleGrid.add(lightSpinner, 1, 1);
Label heavyLabel = new Label("Veículos Pesados [%]:"); Label heavyLabel = new Label("Veículos Pesados [%]:");
heavyLabel.setStyle("-fx-text-fill: white;");
Spinner<Integer> heavySpinner = new Spinner<>(0, 100, 20, 5); Spinner<Integer> heavySpinner = new Spinner<>(0, 100, 20, 5);
heavySpinner.setEditable(true); heavySpinner.setEditable(true);
heavySpinner.setPrefWidth(100); 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" + 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."); "Para usar os valores padrão do ficheiro, deixe em branco ou cancele.");
noteLabel.setWrapText(true); 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 // Adicionar tudo ao conteúdo
content.getChildren().addAll( content.getChildren().addAll(

View File

@@ -96,6 +96,7 @@ public class DashboardUI extends Application {
// Build UI Layout // Build UI Layout
BorderPane root = new BorderPane(); BorderPane root = new BorderPane();
root.getStyleClass().add("root"); root.getStyleClass().add("root");
root.setStyle("-fx-background-color: #2b2b2b;");
// Header (Top) // Header (Top)
VBox header = createHeader(); VBox header = createHeader();

View File

@@ -1,6 +1,6 @@
/* Global Styles */ /* Global Styles */
.root { .root {
-fx-background-color: #f4f7f6; -fx-background-color: #2b2b2b;
-fx-font-family: 'Segoe UI', sans-serif; -fx-font-family: 'Segoe UI', sans-serif;
} }
@@ -63,24 +63,24 @@
/* Cards / Panels */ /* Cards / Panels */
.card { .card {
-fx-background-color: white; -fx-background-color: #1e1e1e;
-fx-background-radius: 8; -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; -fx-padding: 0;
} }
.card-header { .card-header {
-fx-background-color: #ecf0f1; -fx-background-color: #3a3a3a;
-fx-background-radius: 8 8 0 0; -fx-background-radius: 8 8 0 0;
-fx-padding: 10 15; -fx-padding: 10 15;
-fx-border-color: #bdc3c7; -fx-border-color: #555555;
-fx-border-width: 0 0 1 0; -fx-border-width: 0 0 1 0;
} }
.card-title { .card-title {
-fx-font-size: 16px; -fx-font-size: 16px;
-fx-font-weight: bold; -fx-font-weight: bold;
-fx-text-fill: #2c3e50; -fx-text-fill: white;
} }
.card-content { .card-content {
@@ -90,43 +90,48 @@
/* Statistics Grid */ /* Statistics Grid */
.stat-label { .stat-label {
-fx-font-size: 14px; -fx-font-size: 14px;
-fx-text-fill: #7f8c8d; -fx-text-fill: #cccccc;
} }
.stat-value { .stat-value {
-fx-font-size: 20px; -fx-font-size: 20px;
-fx-font-weight: bold; -fx-font-weight: bold;
-fx-text-fill: #2980b9; -fx-text-fill: #4ca1af;
} }
/* Tables */ /* Tables */
.table-view { .table-view {
-fx-background-color: transparent; -fx-background-color: #1e1e1e;
-fx-border-color: transparent; -fx-border-color: transparent;
} }
.table-view .column-header-background { .table-view .column-header-background {
-fx-background-color: #ecf0f1; -fx-background-color: #3a3a3a;
-fx-border-color: #bdc3c7; -fx-border-color: #555555;
-fx-border-width: 0 0 1 0; -fx-border-width: 0 0 1 0;
} }
.table-view .column-header .label { .table-view .column-header .label {
-fx-text-fill: #2c3e50; -fx-text-fill: white;
-fx-font-weight: bold; -fx-font-weight: bold;
} }
.table-row-cell { .table-row-cell {
-fx-background-color: white; -fx-background-color: #1e1e1e;
-fx-border-color: transparent; -fx-border-color: transparent;
-fx-text-fill: white;
} }
.table-row-cell:odd { .table-row-cell:odd {
-fx-background-color: #f9f9f9; -fx-background-color: #252525;
} }
.table-row-cell:selected { .table-row-cell:selected {
-fx-background-color: #3498db; -fx-background-color: #4ca1af;
-fx-text-fill: white;
}
.table-cell {
-fx-text-fill: white; -fx-text-fill: white;
} }