From e001163a742b131727bc22147b21687b09ad6987 Mon Sep 17 00:00:00 2001 From: Kenneth van Ewijk Date: Thu, 26 Feb 2015 18:23:23 +0100 Subject: [PATCH] Implemented Add dialogs. Fixed some Add Event bugs. --- AddArtistPanel.java | 113 ++++++++++++++++ AddEventPanel.java | 307 ++++++++++++++++++++++++++++++++++++++++++++ AddStagePanel.java | 91 +++++++++++++ MenuBar.java | 6 +- PanelTable.java | 2 +- 5 files changed, 515 insertions(+), 4 deletions(-) create mode 100644 AddArtistPanel.java create mode 100644 AddEventPanel.java create mode 100644 AddStagePanel.java diff --git a/AddArtistPanel.java b/AddArtistPanel.java new file mode 100644 index 0000000..2fda7ce --- /dev/null +++ b/AddArtistPanel.java @@ -0,0 +1,113 @@ +import java.awt.BorderLayout; +import java.awt.FlowLayout; +import java.awt.GridLayout; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; + +import javax.swing.JButton; +import javax.swing.JFrame; +import javax.swing.JLabel; +import javax.swing.JOptionPane; +import javax.swing.JPanel; +import javax.swing.JTextField; + + +public class AddArtistPanel extends JFrame{ + + private static final long serialVersionUID = 1; + + public AddArtistPanel(Agenda agenda) + { + super("Artist addscreen!"); + setDefaultCloseOperation(HIDE_ON_CLOSE); + JPanel content = new JPanel(new BorderLayout()); + JPanel south = new JPanel(new FlowLayout()); + JPanel center = new JPanel(new GridLayout(4,2)); + content.add(south, BorderLayout.SOUTH); + content.add(center, BorderLayout.CENTER); + + JPanel panel1 = new JPanel(); + JLabel name = new JLabel("Artist name: "); + panel1.add(name); + center.add(panel1); + + JPanel panel2 = new JPanel(); + JTextField nameTF = new JTextField("",15); + panel2.add(nameTF); + center.add(panel2); + + JLabel genre = new JLabel("Genre: "); + JPanel panel3 = new JPanel(); + panel3.add(genre); + center.add(panel3); + + JTextField genreTF = new JTextField("",15); + JPanel panel4 = new JPanel(); + panel4.add(genreTF); + center.add(panel4); + + JPanel panel5 = new JPanel(); + JLabel image = new JLabel("Image: "); + panel5.add(image); + center.add(panel5); + + JPanel panel6 = new JPanel(); + JTextField imageTF = new JTextField("", 15); + panel6.add(imageTF); + center.add(panel6); + + JPanel panel7 = new JPanel(); + JLabel description = new JLabel("Description: "); + panel7.add(description); + center.add(panel7); + + JPanel panel8 = new JPanel(); + JTextField descriptionTF = new JTextField("", 15); + panel8.add(descriptionTF); + center.add(panel8); + + + + JButton add = new JButton("Add artist!"); + south.add(add); + + add.addActionListener(new ActionListener() + { + public void actionPerformed(ActionEvent e) { + String name = nameTF.getText(); + String genre = genreTF.getText(); + String image = imageTF.getText(); + String description = descriptionTF.getText(); + + boolean alreadyExists = false; + for (Artist artist : agenda.getArtists()) + { + if (artist.getName().equals(name)) + { + alreadyExists = true; + } + } + if (name.isEmpty() == true){ + JOptionPane.showMessageDialog(null, "Fill in a correct name!"); + } + else if (alreadyExists == false) + { + Artist a = new Artist(name,genre,image,description, description); + agenda.addArtist(a); + JOptionPane.showMessageDialog(null, "Artist added!"); + setVisible(false); + dispose(); + } else { + JOptionPane.showMessageDialog(null, "Choose a different artist name!"); + } + + } + }); + + + setContentPane(content); + setVisible(true); + setSize(500,320); + } + +} diff --git a/AddEventPanel.java b/AddEventPanel.java new file mode 100644 index 0000000..c4ead88 --- /dev/null +++ b/AddEventPanel.java @@ -0,0 +1,307 @@ +import java.awt.BorderLayout; +import java.awt.FlowLayout; +import java.awt.GridLayout; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.util.GregorianCalendar; + +import javax.swing.JButton; +import javax.swing.JComboBox; +import javax.swing.JFrame; +import javax.swing.JLabel; +import javax.swing.JOptionPane; +import javax.swing.JPanel; +import javax.swing.JSeparator; +import javax.swing.JTextField; +import javax.swing.SwingConstants; + + +public class AddEventPanel extends JFrame{ + + private static final long serialVersionUID = 1; + + public AddEventPanel(Agenda agenda) + { + super("Event addscreen!"); + setDefaultCloseOperation(HIDE_ON_CLOSE); + JPanel content = new JPanel(new BorderLayout()); + JPanel south = new JPanel(new FlowLayout()); + JPanel center = new JPanel(new GridLayout(7,2)); + content.add(south, BorderLayout.SOUTH); + content.add(center, BorderLayout.CENTER); + + GregorianCalendar today = new GregorianCalendar(); + + JPanel panel1 = new JPanel(); + JLabel name = new JLabel("Event name: "); + panel1.add(name); + center.add(panel1); + + JPanel panel2 = new JPanel(); + JTextField nameTF = new JTextField("",15); + panel2.add(nameTF); + center.add(panel2); + + JLabel starttime = new JLabel("Starttime: "); + JPanel panel3 = new JPanel(); + panel3.add(starttime); + center.add(panel3); + + Integer[] hours = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23 }; + JComboBox hour = new JComboBox(hours); + hour.setSelectedIndex(today.get(GregorianCalendar.HOUR_OF_DAY)); + JPanel panel4 = new JPanel(); + panel4.add(hour); + center.add(panel4); + + Integer[] minutes = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59}; + JComboBox minute = new JComboBox(minutes); + minute.setSelectedIndex(today.get(GregorianCalendar.MINUTE)); + panel4.add(minute); + panel4.add(new JSeparator(SwingConstants.VERTICAL)); + panel4.add(new JSeparator(SwingConstants.VERTICAL)); + + + Integer[] days = { 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31}; + JComboBox day = new JComboBox(days); + day.setSelectedIndex(today.get(GregorianCalendar.DAY_OF_MONTH) - 1); + panel4.add(day); + + String[] months = { "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"}; + JComboBox month = new JComboBox(months); + month.setSelectedIndex(today.get(GregorianCalendar.MONTH)); + panel4.add(month); + + + Integer[] years = { 2015,2016,2017,2018}; + JComboBox year = new JComboBox(years); + panel4.add(year); + + + + JPanel panel5 = new JPanel(); + JLabel endtime = new JLabel("Endtime: "); + panel5.add(endtime); + center.add(panel5); + + JComboBox hourE = new JComboBox(hours); + hourE.setSelectedIndex(today.get(GregorianCalendar.HOUR_OF_DAY)); + JPanel panel6 = new JPanel(); + panel6.add(hourE); + center.add(panel6); + + JComboBox minuteE = new JComboBox(minutes); + minuteE.setSelectedIndex(today.get(GregorianCalendar.MINUTE)); + panel6.add(minuteE); + panel6.add(new JSeparator(SwingConstants.VERTICAL)); + panel6.add(new JSeparator(SwingConstants.VERTICAL)); + + + JComboBox dayE = new JComboBox(days); + dayE.setSelectedIndex(today.get(GregorianCalendar.DAY_OF_MONTH) - 1); + panel6.add(dayE); + + JComboBox monthE = new JComboBox(months); + monthE.setSelectedIndex(today.get(GregorianCalendar.MONTH)); + panel6.add(monthE); + + + JComboBox yearE = new JComboBox(years); + panel6.add(yearE); + + + JPanel panel7 = new JPanel(); + JLabel artist2 = new JLabel("Artist: "); + panel7.add(artist2); + center.add(panel7); + + JPanel panel8 = new JPanel(); + String[] artists = new String[agenda.getArtists().size()]; + + for ( int idx = 0; idx < agenda.getArtists().size(); idx ++) + { + artists[idx] = agenda.getArtists().get(idx).getName(); + } + + JComboBox artist = new JComboBox(artists); + panel8.add(artist); + center.add(panel8); + + JPanel panel9 = new JPanel(); + JLabel stage = new JLabel("Stage: "); + panel9.add(stage); + center.add(panel9); + + JPanel panel10 = new JPanel(); + String[] stages = new String[agenda.getStages().size()]; + + for ( int idx = 0; idx < agenda.getStages().size(); idx ++) + { + stages[idx] = agenda.getStages().get(idx).getName(); + } + + JComboBox stage2 = new JComboBox(stages); + panel10.add(stage2); + center.add(panel10); + + JPanel panel11 = new JPanel(); + JLabel description = new JLabel("Description: "); + panel11.add(description); + center.add(panel11); + + JPanel panel12 = new JPanel(); + JTextField descriptionTF = new JTextField("",15); + panel12.add(descriptionTF); + center.add(panel12); + + JPanel panel13 = new JPanel(); + JLabel expectedPopularity = new JLabel("Expected Popularity: "); + panel13.add(expectedPopularity); + center.add(panel13); + + JPanel panel14 = new JPanel(); + Integer[] eps= { 1,2,3,4,5,6,7,8,9,10}; + JComboBox ep = new JComboBox(eps); + panel14.add(ep); + center.add(panel14); + + + + + + JButton add = new JButton("Add event!"); + south.add(add); + + add.addActionListener(new ActionListener() + { + public void actionPerformed(ActionEvent e) { + boolean everythingCorrect = true; + String name = nameTF.getText(); + + int hourS = hour.getSelectedIndex(); + int minuteS = minute.getSelectedIndex(); + int dayS = day.getSelectedIndex() + 1; + String monthS = (String) month.getSelectedItem(); + int yearS = year.getSelectedIndex() + 2015; + + int hourEnd = hourE.getSelectedIndex(); + int minuteEnd = minuteE.getSelectedIndex(); + int dayEnd = dayE.getSelectedIndex() + 1; + String monthEnd = (String) monthE.getSelectedItem(); + int yearEnd = yearE.getSelectedIndex() + 2015; + + String artistName = (String)artist.getSelectedItem(); + + Artist artist = null; + + for(Artist a : agenda.getArtists()) + { + if (a.getName().equals(artistName)) + { + artist = a; + } + } + + String stageName = (String)stage2.getSelectedItem(); + + Stage stage = null; + + for(Stage s : agenda.getStages()) + { + if (s.getName().equals(stageName)) + { + stage = s; + } + } + + String description = descriptionTF.getText(); + + int popularity = ep.getSelectedIndex() + 1; + + if (dayS > monthDays(monthS)){ + everythingCorrect = false; + JOptionPane.showMessageDialog(null, "Invalid Date!"); + } + else if (yearS > yearEnd || monthToInt(monthS) > monthToInt(monthEnd) || dayS > dayEnd || hourS > hourEnd || minuteS > minuteEnd){ + everythingCorrect = false; + JOptionPane.showMessageDialog(null, "End time is earlier then start time!"); + } + else if (dayS != dayEnd || monthS.equals(monthEnd) == false || yearS != yearEnd){ + everythingCorrect = false; + JOptionPane.showMessageDialog(null, "Event is too long! It can't be longer than a single day."); + } else if (name.isEmpty()){ + everythingCorrect = false; + JOptionPane.showMessageDialog(null, "Fill in a correct name!"); + } else if (stage == null){ + everythingCorrect = false; + JOptionPane.showMessageDialog(null, "Missing a stage!"); + } else if (artist == null){ + JOptionPane.showMessageDialog(null, "Missing a artist!"); + } + + + if (everythingCorrect == true) + { + Event event = new Event(name,yearS,monthToInt(monthS),dayS,hourS,minuteS,yearEnd,monthToInt(monthEnd),dayEnd,hourEnd, minuteEnd, artist, stage,description, popularity); + agenda.addEvent(event); + everythingCorrect = false; + JOptionPane.showMessageDialog(null, "Event added!"); + setVisible(false); + dispose(); + Window.updatePanel("table"); + } + + + } + }); + + + setContentPane(content); + setVisible(true); + setSize(700,320); + + } + + public int monthToInt(String month) + { + int number = 0; + switch (month) + { + case "January": number = 1; break; + case "February": number = 2; break; + case "March": number = 3; break; + case "April": number = 4; break; + case "May": number = 5; break; + case "June":number = 6; break; + case "July": number = 7; break; + case "August": number = 8; break; + case "September":number = 9; break; + case "October": number = 10; break; + case "November": number = 11; break; + case "December": number = 12; break; + } + return number; + } + + public int monthDays(String month) + { + int number = 0; + switch (month) + { + case "January": number = 31; break; + case "February": number = 28; break; + case "March": number = 31; break; + case "April": number = 30; break; + case "May": number = 31; break; + case "June":number = 30; break; + case "July": number = 31; break; + case "August": number = 31; break; + case "September":number = 30; break; + case "October": number = 31; break; + case "November": number = 30; break; + case "December": number = 31; break; + } + return number; + } + +} diff --git a/AddStagePanel.java b/AddStagePanel.java new file mode 100644 index 0000000..df5eace --- /dev/null +++ b/AddStagePanel.java @@ -0,0 +1,91 @@ +import java.awt.BorderLayout; +import java.awt.FlowLayout; +import java.awt.GridLayout; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; + +import javax.swing.JButton; +import javax.swing.JFrame; +import javax.swing.JLabel; +import javax.swing.JOptionPane; +import javax.swing.JPanel; +import javax.swing.JTextField; + + +public class AddStagePanel extends JFrame{ + + private static final long serialVersionUID = 1; + + public AddStagePanel(Agenda agenda) + { + super("Stage addscreen!"); + setDefaultCloseOperation(HIDE_ON_CLOSE); + JPanel content = new JPanel(new BorderLayout()); + JPanel south = new JPanel(new FlowLayout()); + JPanel center = new JPanel(new GridLayout(2,2)); + content.add(south, BorderLayout.SOUTH); + content.add(center, BorderLayout.CENTER); + + JPanel panel1 = new JPanel(); + JLabel name = new JLabel("Stage name: "); + panel1.add(name); + center.add(panel1); + + JPanel panel2 = new JPanel(); + JTextField nameTF = new JTextField("",15); + panel2.add(nameTF); + center.add(panel2); + + JLabel description = new JLabel("Stage Description: "); + JPanel panel3 = new JPanel(); + panel3.add(description); + center.add(panel3); + + JTextField descriptionTF = new JTextField("",15); + JPanel panel4 = new JPanel(); + panel4.add(descriptionTF); + center.add(panel4); + + + JButton add = new JButton("Add stage!"); + south.add(add); + + add.addActionListener(new ActionListener() + { + public void actionPerformed(ActionEvent e) { + String name = nameTF.getText(); + String description = descriptionTF.getText(); + + boolean alreadyExists = false; + for (Stage stage : agenda.getStages()) + { + if (stage.getName().equals(name)) + { + alreadyExists = true; + } + } + if (name.isEmpty()){ + JOptionPane.showMessageDialog(null, "Fill in a correct name!"); + } + else if ( alreadyExists == false ) + { + Stage s = new Stage(name,description); + agenda.addStage(s); + JOptionPane.showMessageDialog(null, "Stage added!"); + setVisible(false); + dispose(); + } + else { + JOptionPane.showMessageDialog(null, "Choose a different stage name!"); + } + + } + }); + + + setContentPane(content); + setVisible(true); + setSize(400,180); + } + +} diff --git a/MenuBar.java b/MenuBar.java index 8ab6e97..e09e783 100644 --- a/MenuBar.java +++ b/MenuBar.java @@ -27,21 +27,21 @@ public class MenuBar extends JMenuBar { newEvent.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N, ActionEvent.CTRL_MASK)); newEvent.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { - //TODO + new AddEventPanel(w.getAgenda()); } }); JMenuItem newArtist = new JMenuItem("New Artist"); newArtist.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { - //TODO + new AddArtistPanel(w.getAgenda()); } }); JMenuItem newStage = new JMenuItem("New Stage"); newStage.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { - //TODO + new AddStagePanel(w.getAgenda()); } }); diff --git a/PanelTable.java b/PanelTable.java index bf9d248..c8dfeff 100644 --- a/PanelTable.java +++ b/PanelTable.java @@ -87,7 +87,7 @@ public class PanelTable extends JPanel implements Panel{ data = new Object[rows][columnes]; for(int x = 0; x < rows; x++) { Object[] tempData = new Object[columnes]; - tempData[0] = "Stage 1"; + tempData[0] = events.get(x).getStage().getName(); tempData[1] = events.get(x).getEventName(); tempData[2] = events.get(x).getArtist().getName(); tempData[3] = formatter.format(events.get(x).getStartDate().getTime());