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 {