diff --git a/build.gradle b/build.gradle
index ea14aec..37d6120 100644
--- a/build.gradle
+++ b/build.gradle
@@ -15,6 +15,7 @@ dependencies {
implementation 'com.googlecode.json-simple:json-simple:1.1.1'
testImplementation 'org.junit.jupiter:junit-jupiter-api:5.6.0'
testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine'
+ implementation 'io.github.vincenzopalazzo:material-ui-swing:1.1.1'
}
test {
diff --git a/src/main/java/GUI/GUI.form b/src/main/java/GUI/GUI.form
index bc3b58d..92ce595 100644
--- a/src/main/java/GUI/GUI.form
+++ b/src/main/java/GUI/GUI.form
@@ -31,19 +31,21 @@
-
+
+
-
+
+
diff --git a/src/main/java/GUI/GUI.java b/src/main/java/GUI/GUI.java
index fbd83c4..48c94d8 100644
--- a/src/main/java/GUI/GUI.java
+++ b/src/main/java/GUI/GUI.java
@@ -4,6 +4,7 @@ import DB.Competition;
import DB.Slot;
import Exceptions.NotFoundInTable;
import GUI.Agenda.Agenda;
+import GUI.Theme.PrimaryContainedButtonUI;
import GUI.Types.ProjectionType;
import javax.swing.*;
@@ -66,6 +67,7 @@ public class GUI extends JFrame implements ActionListener {
competitionButtonPanel = new JPanel();
for (Competition competition : Competition.getAll()) {
JButton button = new JButton(competition.getName());
+ button.setUI(new PrimaryContainedButtonUI());
button.addActionListener(actionEvent -> switchAgenda(competition));
competitionButtonPanel.add(button);
}
@@ -103,5 +105,9 @@ public class GUI extends JFrame implements ActionListener {
private void createUIComponents() {
competitionButton();
+ nextButton = new JButton();
+ nextButton.setUI(new PrimaryContainedButtonUI());
+ previousButton = new JButton();
+ previousButton.setUI(new PrimaryContainedButtonUI());
}
}
diff --git a/src/main/java/GUI/ProjectionHandler.form b/src/main/java/GUI/ProjectionHandler.form
index b1913d5..8ca8dce 100644
--- a/src/main/java/GUI/ProjectionHandler.form
+++ b/src/main/java/GUI/ProjectionHandler.form
@@ -80,7 +80,7 @@
-
+
@@ -88,7 +88,7 @@
-
+
diff --git a/src/main/java/GUI/ProjectionHandler.java b/src/main/java/GUI/ProjectionHandler.java
index 450605f..78a1ae6 100644
--- a/src/main/java/GUI/ProjectionHandler.java
+++ b/src/main/java/GUI/ProjectionHandler.java
@@ -2,9 +2,11 @@ package GUI;
import Config.Config;
import DB.*;
-import Exceptions.NotFoundInTable;
import Exceptions.ProjectionNotSpecified;
import GUI.Agenda.Agenda;
+import GUI.Theme.DangerContainedButtonUI;
+import GUI.Theme.PrimaryContainedButtonUI;
+import GUI.Theme.SecondaryContainedButtonUI;
import GUI.Types.ProjectionType;
import javax.swing.*;
@@ -55,14 +57,14 @@ public class ProjectionHandler extends JDialog {
slotComboBox.getModel().setSelectedItem(agenda.getSlot());
updateRooms();
}
- createUIComponents();
+ createUI();
}
public ProjectionHandler(ProjectionType projectionType, Agenda agenda, Projection projection) {
this.projectionType = projectionType;
this.agenda = agenda;
this.projection = projection;
- createUIComponents();
+ createUI();
competitionComboBox.getModel().setSelectedItem(projection.getCompetition());
filmComboBox.getModel().setSelectedItem(projection.getMovie());
dayComboBox.getModel().setSelectedItem(projection.getStartDate().toLocalDate());
@@ -73,7 +75,7 @@ public class ProjectionHandler extends JDialog {
comboBox.setEnabled(false);
}
- private void createUIComponents() {
+ private void createUI() {
setContentPane(contentPane);
setModal(true);
setPreferredSize(new Dimension(500, 300));
@@ -97,6 +99,16 @@ public class ProjectionHandler extends JDialog {
confirmButton.addActionListener(actionEvent -> confirm());
}
+ private void createUIComponents() {
+ confirmButton = new JButton();
+ if (projectionType == ProjectionType.REMOVE)
+ confirmButton.setUI(new DangerContainedButtonUI());
+ else
+ confirmButton.setUI(new PrimaryContainedButtonUI());
+ cancelButton = new JButton();
+ cancelButton.setUI(new SecondaryContainedButtonUI());
+ }
+
private void updateCompetitions() {
ArrayList competitions = Competition.getAll();
if (competitions != null)
diff --git a/src/main/java/GUI/Theme/DangerContainedButtonUI.java b/src/main/java/GUI/Theme/DangerContainedButtonUI.java
new file mode 100644
index 0000000..5bfdf89
--- /dev/null
+++ b/src/main/java/GUI/Theme/DangerContainedButtonUI.java
@@ -0,0 +1,28 @@
+package GUI.Theme;
+
+import mdlaf.animation.MaterialUIMovement;
+import mdlaf.components.button.MaterialButtonUI;
+import mdlaf.utils.MaterialColors;
+
+import javax.swing.*;
+
+public class DangerContainedButtonUI extends MaterialButtonUI {
+ @Override
+ public void installUI(JComponent c) {
+ super.mouseHoverEnabled = false;
+ super.installUI(c);
+ super.mouseHoverEnabled = true;
+ super.colorMouseHoverNormalButton = MaterialColors.RED_600;
+ super.background = MaterialColors.RED_700;
+ c.setBackground(super.background);
+ super.foreground = MaterialColors.WHITE;
+ c.setForeground(super.foreground);
+
+ if (super.mouseHoverEnabled) {
+ c.addMouseListener(
+ MaterialUIMovement.getMovement(c, this.colorMouseHoverNormalButton)
+ );
+ }
+ super.borderEnabled = false;
+ }
+}
diff --git a/src/main/java/GUI/Theme/PrimaryContainedButtonUI.java b/src/main/java/GUI/Theme/PrimaryContainedButtonUI.java
new file mode 100644
index 0000000..3dc073a
--- /dev/null
+++ b/src/main/java/GUI/Theme/PrimaryContainedButtonUI.java
@@ -0,0 +1,28 @@
+package GUI.Theme;
+
+import mdlaf.animation.MaterialUIMovement;
+import mdlaf.components.button.MaterialButtonUI;
+import mdlaf.utils.MaterialColors;
+
+import javax.swing.*;
+
+public class PrimaryContainedButtonUI extends MaterialButtonUI {
+ @Override
+ public void installUI(JComponent c) {
+ super.mouseHoverEnabled = false;
+ super.installUI(c);
+ super.mouseHoverEnabled = true;
+ super.colorMouseHoverNormalButton = MaterialColors.BLUE_600;
+ super.background = MaterialColors.BLUE_700;
+ c.setBackground(super.background);
+ super.foreground = MaterialColors.WHITE;
+ c.setForeground(super.foreground);
+
+ if (super.mouseHoverEnabled) {
+ c.addMouseListener(
+ MaterialUIMovement.getMovement(c, this.colorMouseHoverNormalButton)
+ );
+ }
+ super.borderEnabled = false;
+ }
+}
diff --git a/src/main/java/GUI/Theme/SecondaryContainedButtonUI.java b/src/main/java/GUI/Theme/SecondaryContainedButtonUI.java
new file mode 100644
index 0000000..6c0c6e3
--- /dev/null
+++ b/src/main/java/GUI/Theme/SecondaryContainedButtonUI.java
@@ -0,0 +1,28 @@
+package GUI.Theme;
+
+import mdlaf.animation.MaterialUIMovement;
+import mdlaf.components.button.MaterialButtonUI;
+import mdlaf.utils.MaterialColors;
+
+import javax.swing.*;
+
+public class SecondaryContainedButtonUI extends MaterialButtonUI {
+ @Override
+ public void installUI(JComponent c) {
+ super.mouseHoverEnabled = false;
+ super.installUI(c);
+ super.mouseHoverEnabled = true;
+ super.colorMouseHoverNormalButton = MaterialColors.PURPLE_600;
+ super.background = MaterialColors.PURPLE_700;
+ c.setBackground(super.background);
+ super.foreground = MaterialColors.WHITE;
+ c.setForeground(super.foreground);
+
+ if (super.mouseHoverEnabled) {
+ c.addMouseListener(
+ MaterialUIMovement.getMovement(c, this.colorMouseHoverNormalButton)
+ );
+ }
+ super.borderEnabled = false;
+ }
+}
diff --git a/src/main/java/ProjectionPlanning/Main.java b/src/main/java/ProjectionPlanning/Main.java
index d498f78..cf4e7eb 100644
--- a/src/main/java/ProjectionPlanning/Main.java
+++ b/src/main/java/ProjectionPlanning/Main.java
@@ -3,6 +3,10 @@ package ProjectionPlanning;
import DB.DB;
import Exceptions.NotFoundInTable;
import GUI.GUI;
+import mdlaf.MaterialLookAndFeel;
+import mdlaf.themes.MaterialLiteTheme;
+
+import javax.swing.*;
public class Main {
public static void main(String[] args) throws NotFoundInTable {