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/Agenda/Agenda.java b/src/main/java/GUI/Agenda/Agenda.java
index 842d9f5..ed5d61d 100644
--- a/src/main/java/GUI/Agenda/Agenda.java
+++ b/src/main/java/GUI/Agenda/Agenda.java
@@ -101,7 +101,7 @@ public class Agenda extends JPanel {
table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
table.setRowHeight(100);
- agenda = this;
+ Agenda tmp = this;
table.addMouseListener(new MouseInputAdapter() {
@Override
public void mouseReleased(MouseEvent mouseEvent) {
@@ -113,7 +113,7 @@ public class Agenda extends JPanel {
Projection projection = null;
if (currentCellValue.getClass() == Projection.class)
projection = (Projection) currentCellValue;
- PopUpProjection popUpProjection = new PopUpProjection(projection, agenda);
+ PopUpProjection popUpProjection = new PopUpProjection(projection, tmp);
popUpProjection.show(mouseEvent.getComponent(), mouseEvent.getX(), mouseEvent.getY());
}
}
diff --git a/src/main/java/GUI/GUI.form b/src/main/java/GUI/GUI.form
index 0ddae9d..92ce595 100644
--- a/src/main/java/GUI/GUI.form
+++ b/src/main/java/GUI/GUI.form
@@ -31,19 +31,21 @@
-
+
+
-
+
+
@@ -75,7 +77,7 @@
-
+
@@ -84,38 +86,7 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
diff --git a/src/main/java/GUI/GUI.java b/src/main/java/GUI/GUI.java
index 27fd50e..48c94d8 100644
--- a/src/main/java/GUI/GUI.java
+++ b/src/main/java/GUI/GUI.java
@@ -1,8 +1,10 @@
package GUI;
+import DB.Competition;
import DB.Slot;
+import Exceptions.NotFoundInTable;
import GUI.Agenda.Agenda;
-import GUI.Types.CompetType;
+import GUI.Theme.PrimaryContainedButtonUI;
import GUI.Types.ProjectionType;
import javax.swing.*;
@@ -19,6 +21,7 @@ public class GUI extends JFrame implements ActionListener {
private JButton LMButton;
private JButton HCButton;
private JButton UCRButton;
+ private JPanel competitionButtonPanel;
private JMenuBar menuBar = new JMenuBar();
private JMenu menuFichier = new JMenu("File");
private JMenuItem menuItemAddProj = new JMenuItem("Add projection");
@@ -26,9 +29,9 @@ public class GUI extends JFrame implements ActionListener {
private int currentPage;
private Agenda agenda;
private ArrayList slots = new ArrayList();
- private CompetType currentCompetition = CompetType.LM;
+ private Competition currentCompetition = new Competition("Long Métrage");
- public GUI() {
+ public GUI() throws NotFoundInTable {
super();
construct();
}
@@ -55,15 +58,19 @@ public class GUI extends JFrame implements ActionListener {
agenda = new Agenda(agendaPanel, this.currentPage, this.currentCompetition);
previousButton.addActionListener(this);
nextButton.addActionListener(this);
- HCButton.addActionListener(this);
- LMButton.addActionListener(this);
- UCRButton.addActionListener(this);
menuItemAddProj.addActionListener(this);
menuItemRemoveProj.addActionListener(this);
setVisible(true);
}
- private void switchCompetition(CompetType competType) {
+ private void competitionButton() {
+ 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);
+ }
}
@Override
@@ -80,21 +87,6 @@ public class GUI extends JFrame implements ActionListener {
Agenda agenda = new Agenda(agendaPanel, this.currentPage, this.currentCompetition);
this.currentPage = agenda.getCurrentPage();
- this.repaint();
- this.revalidate();
- } else if (source == LMButton) {
- this.currentCompetition = CompetType.LM;
- this.agenda = new Agenda(agendaPanel, 0, this.currentCompetition);
- this.repaint();
- this.revalidate();
- } else if (source == HCButton) {
- this.currentCompetition = CompetType.HC;
- this.agenda = new Agenda(agendaPanel, 0, this.currentCompetition);
- this.repaint();
- this.revalidate();
- } else if (source == UCRButton) {
- this.currentCompetition = CompetType.UCR;
- this.agenda = new Agenda(agendaPanel, 0, this.currentCompetition);
this.repaint();
this.revalidate();
} else if (source == this.menuItemAddProj) {
@@ -103,4 +95,19 @@ public class GUI extends JFrame implements ActionListener {
agenda.openDialog(ProjectionType.REMOVE);
}
}
+
+ private void switchAgenda(Competition competition) {
+ this.currentCompetition = competition;
+ this.agenda = new Agenda(agendaPanel, 0, this.currentCompetition);
+ this.repaint();
+ this.revalidate();
+ }
+
+ 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 0821b41..00746ee 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.*;
@@ -45,9 +47,7 @@ public class ProjectionHandler extends JDialog {
throw new ProjectionNotSpecified();
this.projectionType = projectionType;
this.agenda = agenda;
- try {
- competitionComboBox.getModel().setSelectedItem(agenda.getCompetition());
- } catch (NotFoundInTable ignored) {}
+ competitionComboBox.getModel().setSelectedItem(agenda.getCompetition());
if (agenda.getDate() != null || agenda.getSlot() != null) {
updateMovies();
updateDates();
@@ -56,14 +56,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());
@@ -74,7 +74,7 @@ public class ProjectionHandler extends JDialog {
comboBox.setEnabled(false);
}
- private void createUIComponents() {
+ private void createUI() {
setContentPane(contentPane);
setModal(true);
setPreferredSize(new Dimension(500, 300));
@@ -107,6 +107,16 @@ public class ProjectionHandler extends JDialog {
dispose();
}
+ 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 0e11a2e..cf4e7eb 100644
--- a/src/main/java/ProjectionPlanning/Main.java
+++ b/src/main/java/ProjectionPlanning/Main.java
@@ -3,10 +3,17 @@ 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 {
DB.connect();
+ try {
+ UIManager.setLookAndFeel(new MaterialLookAndFeel(new MaterialLiteTheme()));
+ } catch (UnsupportedLookAndFeelException ignored) {}
new GUI();
}
}