瀏覽代碼

Add stage/artist support.

Gilian Joosen 10 年之前
父節點
當前提交
1412496d10

+ 9 - 8
src/gui/panels/edit/StagesPane.java

@@ -17,6 +17,7 @@ public class StagesPane extends JPanel {
 
     private JList stagesList;
     private Agenda agenda;
+    private DefaultListModel model;
     
     public StagesPane(Agenda agenda){
         this.agenda = agenda;
@@ -27,15 +28,15 @@ public class StagesPane extends JPanel {
         super.add(this.buttonRow(), BorderLayout.SOUTH);
 
         //the JList needs an array, so you have to go from the List to an array.
-        Stage[] stages = new Stage[this.agenda.getStages().size()];
-        int i = 0;
+
+        this.model = new DefaultListModel();
+
         for(Stage stage: this.agenda.getStages()){
-            stages[i] = stage;
-            i++;
+            this.model.addElement(stage);
         }
-
-        //initialize the JList with the artist objects.
-        this.stagesList = new JList(stages);
+        
+        this.stagesList = new JList();
+        this.stagesList.setModel(this.model);
 
         //the cell renderer.
         this.stagesList.setCellRenderer(new StageCellRenderer());
@@ -54,7 +55,7 @@ public class StagesPane extends JPanel {
             @Override
             public void actionPerformed(ActionEvent e) {
                 JDialog dialog = new JDialog();
-                dialog.setContentPane(new AddStageDialogPanel());
+                dialog.setContentPane(new AddStageDialogPanel(agenda, model));
                 dialog.pack();
                 dialog.setVisible(true);
             }

+ 104 - 0
src/gui/panels/edit/dialogs/AddArtistDialogPanel.java

@@ -0,0 +1,104 @@
+package gui.panels.edit.dialogs;
+
+import agenda.Agenda;
+import agenda.Artist;
+
+import javax.swing.*;
+import java.awt.*;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+
+/**
+ * Created by gjoosen on 19/02/15.
+ */
+public class AddArtistDialogPanel extends JDialog{
+
+    private JTextField name, genre;
+    private Agenda agenda;
+
+    private DefaultListModel model;
+
+    public AddArtistDialogPanel(Agenda agenda, DefaultListModel model){
+        this.agenda = agenda;
+        this.model = model;
+
+        JPanel main = new JPanel();
+        main.setLayout(new BoxLayout(main, BoxLayout.Y_AXIS));
+        main.add(new Label("new Stage"));
+        main.add(this.namePanel());
+        main.add(this.genrePanel());
+        main.add(this.buttons());
+        super.add(main);
+        super.setVisible(true);
+        super.pack();
+
+    }
+
+    private JPanel genrePanel(){
+        JPanel panel = new JPanel();
+        panel.setLayout(new BoxLayout(panel, BoxLayout.X_AXIS));
+        panel.add(new Label("Genre:"));
+        this.genre = new JTextField();
+        panel.add(this.genre);
+        return panel;
+    }
+
+    private JPanel namePanel(){
+        JPanel name = new JPanel();
+        name.setLayout(new BoxLayout(name, BoxLayout.X_AXIS));
+        name.add(new JLabel("Name"));
+        
+        this.name = new JTextField();
+        
+        name.add(this.name);
+        return name;
+    }
+
+    private JPanel buttons(){
+        JPanel buttons = new JPanel();
+
+        JButton save = new JButton("save");
+        save.addActionListener(new ActionListener() {
+            @Override
+            public void actionPerformed(ActionEvent e) {
+                save();
+            }
+        });
+        buttons.add(save);
+
+        JButton cancel = new JButton("cancel");
+        cancel.addActionListener(new ActionListener() {
+            @Override
+            public void actionPerformed(ActionEvent e) {
+                cancel();
+            }
+        });
+
+        buttons.add(cancel);
+
+        return buttons;
+    }
+
+    protected void save(){
+        if(this.name.getText().equals("") && this.genre.getText().equals("")){
+            JOptionPane.showMessageDialog(null, "Name and Genre can't be empty!", "Warning", JOptionPane.WARNING_MESSAGE);
+            return;
+        }else if(this.genre.getText().equals("")){
+            JOptionPane.showMessageDialog(null, "Genre can't be empty!", "Warning", JOptionPane.WARNING_MESSAGE);
+            return;
+        }else if(this.name.getText().equals("")){
+            JOptionPane.showMessageDialog(null, "Name can't be empty!", "Warning", JOptionPane.WARNING_MESSAGE);
+            return;
+        }
+
+        //Save artist
+        Artist artist = new Artist(this.name.getText(), this.genre.getText());
+        this.model.addElement(artist);
+        this.agenda.addArtist(artist);
+        super.dispose();
+    }
+
+    private void cancel(){
+        dispose();
+    }
+}

+ 95 - 0
src/gui/panels/edit/dialogs/AddStageDialogPanel.java

@@ -0,0 +1,95 @@
+package gui.panels.edit.dialogs;
+
+import agenda.Agenda;
+import agenda.Artist;
+import agenda.Stage;
+
+import javax.swing.*;
+import java.awt.*;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+
+/**
+ * Created by gjoosen on 19/02/15.
+ */
+public class AddStageDialogPanel extends JDialog{
+
+    private Agenda agenda;
+    private DefaultListModel model;
+    private JTextField name;
+    
+    public AddStageDialogPanel(Agenda agenda, DefaultListModel model){
+        this.agenda = agenda;
+        this.model = model;
+        
+        JPanel main = new JPanel();
+        main.setLayout(new BoxLayout(main, BoxLayout.Y_AXIS));
+        main.add(new Label("new Stage"));
+        main.add(this.namePanel());
+        main.add(this.buttons());
+        super.add(main);
+        super.setVisible(true);
+        super.pack();
+
+
+    }
+    
+    private JPanel namePanel(){
+        JPanel name = new JPanel();
+        name.setLayout(new BoxLayout(name, BoxLayout.X_AXIS));
+        name.add(new JLabel("Name"));
+        this.name = new JTextField();
+        name.add(this.name);
+        return name;
+    }
+
+    private JPanel buttons(){
+        JPanel buttons = new JPanel();
+        
+        JButton save = new JButton("save");
+        save.addActionListener(new ActionListener() {
+            @Override
+            public void actionPerformed(ActionEvent e) {
+                save();
+            }
+        });
+        buttons.add(save);
+        
+        JButton cancel = new JButton("cancel");
+        cancel.addActionListener(new ActionListener() {
+            @Override
+            public void actionPerformed(ActionEvent e) {
+                cancel();
+            }
+        });
+        buttons.add(cancel);
+        return buttons;
+    }
+    
+    private void save(){
+        if(this.name.getText().equals("")){
+            JOptionPane.showMessageDialog(null, "Name can't be empty!", "Warning", JOptionPane.WARNING_MESSAGE);
+            return;
+        }else{
+            Stage stage = new Stage(this.name.getText());
+            this.agenda.addStage(stage);
+            this.model.addElement(stage);
+            dispose();
+        }
+    }
+    
+    private void cancel(){
+        dispose();
+    }
+    
+    protected JButton saveButton() {
+        JButton button = new JButton("save");
+        button.addActionListener(new ActionListener() {
+            @Override
+            public void actionPerformed(ActionEvent e) {
+                save();
+            }
+        });
+        return button;
+    }
+}

+ 0 - 16
test/agenda/ActTimeTest.java

@@ -1,16 +0,0 @@
-package agenda;
-
-import junit.framework.TestCase;
-
-public class ActTimeTest extends TestCase{
-
-    @org.junit.Before
-    public void setUp() throws Exception {
-    }
-
-    @org.junit.Test
-    public void testGetLength() throws Exception {
-        ActTime actTime = new ActTime(2014, 5, 31, 21, 0, 2014, 5, 31, 23, 0);
-        assert(actTime.getLength() == 120);
-    }
-}