Add dynamic competitions on GUI
This commit is contained in:
parent
23cd5d4b3d
commit
56b41d49a4
5 changed files with 35 additions and 69 deletions
|
@ -4,11 +4,10 @@ import Config.Config;
|
||||||
import DB.Competition;
|
import DB.Competition;
|
||||||
import DB.Projection;
|
import DB.Projection;
|
||||||
import DB.Slot;
|
import DB.Slot;
|
||||||
import Exceptions.NotFoundInTable;
|
|
||||||
import Exceptions.ProjectionNotSpecified;
|
import Exceptions.ProjectionNotSpecified;
|
||||||
import GUI.ProjectionHandler;
|
import GUI.ProjectionHandler;
|
||||||
import GUI.Types.CompetType;
|
|
||||||
import GUI.Types.ProjectionType;
|
import GUI.Types.ProjectionType;
|
||||||
|
import lombok.Getter;
|
||||||
|
|
||||||
import javax.swing.*;
|
import javax.swing.*;
|
||||||
import javax.swing.event.MouseInputAdapter;
|
import javax.swing.event.MouseInputAdapter;
|
||||||
|
@ -26,18 +25,18 @@ public class Agenda extends JPanel {
|
||||||
private Object headers[];
|
private Object headers[];
|
||||||
private int currentPage;
|
private int currentPage;
|
||||||
private JTable table;
|
private JTable table;
|
||||||
private CompetType competionType;
|
@Getter private Competition competition;
|
||||||
private Agenda agenda;
|
private Agenda agenda;
|
||||||
private ArrayList<Slot> slots;
|
private ArrayList<Slot> slots;
|
||||||
private Slot currentSlot;
|
private Slot currentSlot;
|
||||||
private LocalDate currentDay;
|
private LocalDate currentDay;
|
||||||
|
|
||||||
public Agenda(JPanel agendaPanel, int currentPage, CompetType competionType) {
|
public Agenda(JPanel agendaPanel, int currentPage, Competition competition) {
|
||||||
this.agendaPanel = agendaPanel;
|
this.agendaPanel = agendaPanel;
|
||||||
this.slots = competionType.getSlots();
|
this.slots = competition.getSlots();
|
||||||
this.headers = slots.toArray();
|
this.headers = slots.toArray();
|
||||||
this.currentPage = currentPage;
|
this.currentPage = currentPage;
|
||||||
this.competionType = competionType;
|
this.competition = competition;
|
||||||
this.agendaPanel.removeAll();
|
this.agendaPanel.removeAll();
|
||||||
int totalPages[] = dayToPage();
|
int totalPages[] = dayToPage();
|
||||||
if (this.currentPage >= totalPages.length) {
|
if (this.currentPage >= totalPages.length) {
|
||||||
|
@ -162,7 +161,7 @@ public class Agenda extends JPanel {
|
||||||
|
|
||||||
private void updateMovies() {
|
private void updateMovies() {
|
||||||
try {
|
try {
|
||||||
ArrayList<Projection> projections = Projection.getAvailable(new Competition(this.competionType.getCompetition()));
|
ArrayList<Projection> projections = Projection.getAvailable(this.competition);
|
||||||
for (Projection projection : projections) {
|
for (Projection projection : projections) {
|
||||||
addMovie(projection);
|
addMovie(projection);
|
||||||
}
|
}
|
||||||
|
@ -203,10 +202,6 @@ public class Agenda extends JPanel {
|
||||||
return this.currentPage;
|
return this.currentPage;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Competition getCompetition() throws NotFoundInTable {
|
|
||||||
return new Competition(competionType.getCompetition());
|
|
||||||
}
|
|
||||||
|
|
||||||
public Slot getSlot() {
|
public Slot getSlot() {
|
||||||
return currentSlot;
|
return currentSlot;
|
||||||
}
|
}
|
||||||
|
|
|
@ -75,7 +75,7 @@
|
||||||
<properties/>
|
<properties/>
|
||||||
<border type="none"/>
|
<border type="none"/>
|
||||||
<children>
|
<children>
|
||||||
<grid id="b1c37" layout-manager="GridLayoutManager" row-count="1" column-count="3" same-size-horizontally="false" same-size-vertically="false" hgap="-1" vgap="-1">
|
<grid id="b1c37" binding="competitionButtonPanel" custom-create="true" layout-manager="GridLayoutManager" row-count="1" column-count="1" same-size-horizontally="false" same-size-vertically="false" hgap="-1" vgap="-1">
|
||||||
<margin top="25" left="50" bottom="0" right="0"/>
|
<margin top="25" left="50" bottom="0" right="0"/>
|
||||||
<constraints>
|
<constraints>
|
||||||
<grid row="0" column="0" row-span="1" col-span="1" vsize-policy="3" hsize-policy="3" anchor="1" fill="1" indent="0" use-parent-layout="false">
|
<grid row="0" column="0" row-span="1" col-span="1" vsize-policy="3" hsize-policy="3" anchor="1" fill="1" indent="0" use-parent-layout="false">
|
||||||
|
@ -84,38 +84,7 @@
|
||||||
</constraints>
|
</constraints>
|
||||||
<properties/>
|
<properties/>
|
||||||
<border type="none"/>
|
<border type="none"/>
|
||||||
<children>
|
<children/>
|
||||||
<component id="2dfdc" class="javax.swing.JButton" binding="LMButton" default-binding="true">
|
|
||||||
<constraints>
|
|
||||||
<grid row="0" column="0" row-span="1" col-span="1" vsize-policy="0" hsize-policy="3" anchor="0" fill="1" indent="0" use-parent-layout="false">
|
|
||||||
<minimum-size width="75" height="-1"/>
|
|
||||||
</grid>
|
|
||||||
</constraints>
|
|
||||||
<properties>
|
|
||||||
<text value="LM"/>
|
|
||||||
</properties>
|
|
||||||
</component>
|
|
||||||
<component id="9869d" class="javax.swing.JButton" binding="HCButton" default-binding="true">
|
|
||||||
<constraints>
|
|
||||||
<grid row="0" column="1" row-span="1" col-span="1" vsize-policy="0" hsize-policy="3" anchor="0" fill="1" indent="0" use-parent-layout="false">
|
|
||||||
<minimum-size width="75" height="-1"/>
|
|
||||||
</grid>
|
|
||||||
</constraints>
|
|
||||||
<properties>
|
|
||||||
<text value="HC"/>
|
|
||||||
</properties>
|
|
||||||
</component>
|
|
||||||
<component id="bc004" class="javax.swing.JButton" binding="UCRButton" default-binding="true">
|
|
||||||
<constraints>
|
|
||||||
<grid row="0" column="2" row-span="1" col-span="1" vsize-policy="0" hsize-policy="3" anchor="0" fill="1" indent="0" use-parent-layout="false">
|
|
||||||
<minimum-size width="75" height="-1"/>
|
|
||||||
</grid>
|
|
||||||
</constraints>
|
|
||||||
<properties>
|
|
||||||
<text value="UCR"/>
|
|
||||||
</properties>
|
|
||||||
</component>
|
|
||||||
</children>
|
|
||||||
</grid>
|
</grid>
|
||||||
<hspacer id="975cc">
|
<hspacer id="975cc">
|
||||||
<constraints>
|
<constraints>
|
||||||
|
|
|
@ -1,8 +1,9 @@
|
||||||
package GUI;
|
package GUI;
|
||||||
|
|
||||||
|
import DB.Competition;
|
||||||
import DB.Slot;
|
import DB.Slot;
|
||||||
|
import Exceptions.NotFoundInTable;
|
||||||
import GUI.Agenda.Agenda;
|
import GUI.Agenda.Agenda;
|
||||||
import GUI.Types.CompetType;
|
|
||||||
import GUI.Types.ProjectionType;
|
import GUI.Types.ProjectionType;
|
||||||
|
|
||||||
import javax.swing.*;
|
import javax.swing.*;
|
||||||
|
@ -19,6 +20,7 @@ public class GUI extends JFrame implements ActionListener {
|
||||||
private JButton LMButton;
|
private JButton LMButton;
|
||||||
private JButton HCButton;
|
private JButton HCButton;
|
||||||
private JButton UCRButton;
|
private JButton UCRButton;
|
||||||
|
private JPanel competitionButtonPanel;
|
||||||
private JMenuBar menuBar = new JMenuBar();
|
private JMenuBar menuBar = new JMenuBar();
|
||||||
private JMenu menuFichier = new JMenu("File");
|
private JMenu menuFichier = new JMenu("File");
|
||||||
private JMenuItem menuItemAddProj = new JMenuItem("Add projection");
|
private JMenuItem menuItemAddProj = new JMenuItem("Add projection");
|
||||||
|
@ -26,9 +28,9 @@ public class GUI extends JFrame implements ActionListener {
|
||||||
private int currentPage;
|
private int currentPage;
|
||||||
private Agenda agenda;
|
private Agenda agenda;
|
||||||
private ArrayList<Slot> slots = new ArrayList<Slot>();
|
private ArrayList<Slot> slots = new ArrayList<Slot>();
|
||||||
private CompetType currentCompetition = CompetType.LM;
|
private Competition currentCompetition = new Competition("Long Métrage");
|
||||||
|
|
||||||
public GUI() {
|
public GUI() throws NotFoundInTable {
|
||||||
super();
|
super();
|
||||||
construct();
|
construct();
|
||||||
}
|
}
|
||||||
|
@ -55,15 +57,18 @@ public class GUI extends JFrame implements ActionListener {
|
||||||
agenda = new Agenda(agendaPanel, this.currentPage, this.currentCompetition);
|
agenda = new Agenda(agendaPanel, this.currentPage, this.currentCompetition);
|
||||||
previousButton.addActionListener(this);
|
previousButton.addActionListener(this);
|
||||||
nextButton.addActionListener(this);
|
nextButton.addActionListener(this);
|
||||||
HCButton.addActionListener(this);
|
|
||||||
LMButton.addActionListener(this);
|
|
||||||
UCRButton.addActionListener(this);
|
|
||||||
menuItemAddProj.addActionListener(this);
|
menuItemAddProj.addActionListener(this);
|
||||||
menuItemRemoveProj.addActionListener(this);
|
menuItemRemoveProj.addActionListener(this);
|
||||||
setVisible(true);
|
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.addActionListener(actionEvent -> switchAgenda(competition));
|
||||||
|
competitionButtonPanel.add(button);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -80,21 +85,6 @@ public class GUI extends JFrame implements ActionListener {
|
||||||
Agenda agenda = new Agenda(agendaPanel, this.currentPage, this.currentCompetition);
|
Agenda agenda = new Agenda(agendaPanel, this.currentPage, this.currentCompetition);
|
||||||
this.currentPage = agenda.getCurrentPage();
|
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.repaint();
|
||||||
this.revalidate();
|
this.revalidate();
|
||||||
} else if (source == this.menuItemAddProj) {
|
} else if (source == this.menuItemAddProj) {
|
||||||
|
@ -103,4 +93,15 @@ public class GUI extends JFrame implements ActionListener {
|
||||||
agenda.openDialog(ProjectionType.REMOVE);
|
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();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -46,9 +46,7 @@ public class ProjectionHandler extends JDialog {
|
||||||
throw new ProjectionNotSpecified();
|
throw new ProjectionNotSpecified();
|
||||||
this.projectionType = projectionType;
|
this.projectionType = projectionType;
|
||||||
this.agenda = agenda;
|
this.agenda = agenda;
|
||||||
try {
|
|
||||||
competitionComboBox.getModel().setSelectedItem(agenda.getCompetition());
|
competitionComboBox.getModel().setSelectedItem(agenda.getCompetition());
|
||||||
} catch (NotFoundInTable ignored) {}
|
|
||||||
if (agenda.getDate() != null || agenda.getSlot() != null) {
|
if (agenda.getDate() != null || agenda.getSlot() != null) {
|
||||||
updateMovies();
|
updateMovies();
|
||||||
updateDates();
|
updateDates();
|
||||||
|
|
|
@ -7,6 +7,9 @@ import GUI.GUI;
|
||||||
public class Main {
|
public class Main {
|
||||||
public static void main(String[] args) throws NotFoundInTable {
|
public static void main(String[] args) throws NotFoundInTable {
|
||||||
DB.connect();
|
DB.connect();
|
||||||
|
try {
|
||||||
|
UIManager.setLookAndFeel(new MaterialLookAndFeel(new MaterialLiteTheme()));
|
||||||
|
} catch (UnsupportedLookAndFeelException ignored) {}
|
||||||
new GUI();
|
new GUI();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Reference in a new issue