Pārlūkot izejas kodu

Added act changing support.

Gilian Joosen 10 gadi atpakaļ
vecāks
revīzija
7c7a17ecd8

+ 15 - 0
src/agenda/Act.java

@@ -81,4 +81,19 @@ public class Act {
         string+= this.actTime;
         return string;
     }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public void setGenre(String genre) {
+        this.genre = genre;
+    }
+
+    public void setArtists(Artist[] artists) {
+        this.artists = new ArrayList<>();
+        for(Artist artist: artists){
+            this.artists.add(artist);
+        }
+    }
 }

+ 8 - 0
src/agenda/Artist.java

@@ -24,4 +24,12 @@ public class Artist {
     public String toString(){
         return this.name;
     }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public void setGenre(String genre) {
+        this.genre = genre;
+    }
 }

+ 4 - 0
src/agenda/Stage.java

@@ -19,4 +19,8 @@ public class Stage {
     public String toString(){
         return this.name;
     }
+
+    public void setName(String name) {
+        this.name = name;
+    }
 }

+ 13 - 10
src/gui/panels/edit/ActsPane.java

@@ -2,9 +2,7 @@ package gui.panels.edit;
 
 import agenda.Act;
 import agenda.Agenda;
-import agenda.Stage;
-import gui.panels.agenda.InfoPane;
-import gui.panels.edit.dialogs.AddActDialogPanel;
+import gui.panels.edit.dialogs.ActDialogPanel;
 
 import javax.swing.*;
 import javax.swing.event.ListSelectionEvent;
@@ -12,7 +10,6 @@ import javax.swing.event.ListSelectionListener;
 import java.awt.*;
 import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;
-import java.util.ArrayList;
 
 /**
  * Created by gjoosen on 19/02/15.
@@ -20,15 +17,15 @@ import java.util.ArrayList;
 public class ActsPane extends JPanel {
 
     private JList actsList;
-    private Agenda agenda;
+    private final Agenda agenda;
     private DefaultListModel model;
     
     private JPanel detailsPanel;
 
-    public ActsPane(Agenda agenda, final JPanel detailsPanel){
+    public ActsPane(Agenda agenda, JPanel panel){
         this.agenda = agenda;
         this.model = new DefaultListModel();
-        this.detailsPanel = detailsPanel;
+        this.detailsPanel = panel;
         super.setLayout(new BorderLayout());
         super.add(new Label("Acts"), BorderLayout.NORTH);
         super.add(new JPanel(), BorderLayout.EAST);
@@ -49,8 +46,14 @@ public class ActsPane extends JPanel {
         this.actsList.addListSelectionListener(new ListSelectionListener() {
             @Override
             public void valueChanged(ListSelectionEvent e) {
-                detailsPanel.removeAll();
-                detailsPanel.add(new InfoPane());
+                
+                if(e.getValueIsAdjusting()) {
+                    JDialog dialog = new ActDialogPanel(ActsPane.this.agenda, model, (Act) actsList.getSelectedValue());
+                    dialog.setLocation(getCenterOfScreen(dialog));
+                    dialog.setLocationRelativeTo(null);
+                    dialog.pack();
+                    dialog.setVisible(true);
+                }
             }
         });
 
@@ -69,7 +72,7 @@ public class ActsPane extends JPanel {
         addButton.addActionListener(new ActionListener() {
             @Override
             public void actionPerformed(ActionEvent e) {
-                JDialog dialog = new AddActDialogPanel(agenda, model);
+                JDialog dialog = new ActDialogPanel(agenda, model);
                 dialog.pack();
                 dialog.setLocation(getCenterOfScreen(dialog));
                 dialog.setVisible(true);

+ 16 - 4
src/gui/panels/edit/ArtistPane.java

@@ -2,14 +2,14 @@ package gui.panels.edit;
 
 import agenda.Agenda;
 import agenda.Artist;
-import gui.panels.edit.dialogs.AddArtistDialogPanel;
+import gui.panels.edit.dialogs.ArtistDialogPanel;
 
 import javax.swing.*;
+import javax.swing.event.ListSelectionEvent;
+import javax.swing.event.ListSelectionListener;
 import java.awt.*;
 import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;
-import java.util.ArrayList;
-import java.util.List;
 
 /**
  * Created by gjoosen on 13/02/15.
@@ -46,6 +46,18 @@ public class ArtistPane extends JPanel {
         
         //the cell renderer.
         this.artistList.setCellRenderer(new ArtistCellRenderer());
+        
+        this.artistList.addListSelectionListener(new ListSelectionListener() {
+            @Override
+            public void valueChanged(ListSelectionEvent e) {
+                if(e.getValueIsAdjusting()){
+                    JDialog dialog = new ArtistDialogPanel(ArtistPane.this.agenda, model, (Artist) artistList.getSelectedValue());
+                    dialog.setLocation(getCenterOfScreen(dialog));
+                    dialog.pack();
+                    dialog.setVisible(true);
+                }
+            }
+        });
 
         //the JList inside a scrollPane.
         JScrollPane scrollPane = new JScrollPane(this.artistList);
@@ -60,7 +72,7 @@ public class ArtistPane extends JPanel {
         addArtist.addActionListener(new ActionListener() {
             @Override
             public void actionPerformed(ActionEvent e) {
-                JDialog dialog = new AddArtistDialogPanel(agenda, model);
+                JDialog dialog = new ArtistDialogPanel(agenda, model);
                 dialog.setLocation(getCenterOfScreen(dialog));
                 dialog.pack();
                 dialog.setVisible(true);

+ 0 - 1
src/gui/panels/edit/EditPane.java

@@ -24,7 +24,6 @@ public class EditPane extends JPanel {
         super.setLayout(new GridLayout(1, 4));
 
         this.detailsPanel = this.detailsPanel();
-        super.add(this.detailsPanel);
         super.add(new ArtistPane(this.agenda, this.detailsPanel));
         super.add(new StagesPane(this.agenda, this.detailsPanel));
         super.add(new ActsPane(this.agenda, this.detailsPanel));

+ 17 - 4
src/gui/panels/edit/StagesPane.java

@@ -2,7 +2,7 @@ package gui.panels.edit;
 
 import agenda.Agenda;
 import agenda.Stage;
-import gui.panels.edit.dialogs.AddStageDialogPanel;
+import gui.panels.edit.dialogs.StageDialogPanel;
 
 import javax.swing.*;
 import javax.swing.event.ListSelectionEvent;
@@ -10,7 +10,6 @@ import javax.swing.event.ListSelectionListener;
 import java.awt.*;
 import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;
-import java.util.*;
 
 /**
  * Created by gjoosen on 19/02/15.
@@ -18,7 +17,7 @@ import java.util.*;
 public class StagesPane extends JPanel {
 
     private JList stagesList;
-    private Agenda agenda;
+    private final Agenda agenda;
     private DefaultListModel model;
     
     private JPanel detailsPanel;
@@ -46,6 +45,20 @@ public class StagesPane extends JPanel {
 
         //the cell renderer.
         this.stagesList.setCellRenderer(new StageCellRenderer());
+        
+        //select stage
+        this.stagesList.addListSelectionListener(new ListSelectionListener() {
+            @Override
+            public void valueChanged(ListSelectionEvent e) {
+                if(e.getValueIsAdjusting()){
+                    JDialog dialog = new StageDialogPanel(StagesPane.this.agenda, model, (Stage) stagesList.getSelectedValue());
+                    dialog.setLocation(getCenterOfScreen(dialog));
+                    dialog.setLocationRelativeTo(null);
+                    dialog.pack();
+                    dialog.setVisible(true);
+                }
+            }
+        });
 
         //the JList inside a scrollPane.
         JScrollPane scrollPane = new JScrollPane(this.stagesList);
@@ -60,7 +73,7 @@ public class StagesPane extends JPanel {
         addButton.addActionListener(new ActionListener() {
             @Override
             public void actionPerformed(ActionEvent e) {
-                JDialog dialog = new AddStageDialogPanel(agenda, model);
+                JDialog dialog = new StageDialogPanel(agenda, model);
                 dialog.setLocationRelativeTo(null);
                 dialog.pack();
                 dialog.setLocation(getCenterOfScreen(dialog));

+ 60 - 10
src/gui/panels/edit/dialogs/AddActDialogPanel.java → src/gui/panels/edit/dialogs/ActDialogPanel.java

@@ -12,7 +12,7 @@ import java.util.ArrayList;
 /**
  * Created by gjoosen on 20/02/15.
  */
-public class AddActDialogPanel extends JDialog{
+public class ActDialogPanel extends JDialog{
 
     private Agenda agenda;
     private JTextField name, genre;
@@ -20,8 +20,9 @@ public class AddActDialogPanel extends JDialog{
 
     private DefaultListModel model;
     private final DefaultListModel  artistModel = new DefaultListModel();
+    private Act act;
     
-    public AddActDialogPanel(Agenda agenda, DefaultListModel model){
+    public ActDialogPanel(Agenda agenda, DefaultListModel model){
         this.agenda = agenda;
         this.model = model;
 
@@ -41,6 +42,32 @@ public class AddActDialogPanel extends JDialog{
         super.setVisible(true);
         super.pack();
     }
+
+    public ActDialogPanel(Agenda agenda, DefaultListModel model, Act act){
+        this.agenda = agenda;
+        this.model = model;
+        this.act = act;
+        
+        JPanel main = new JPanel();
+        main.setLayout(new BoxLayout(main, BoxLayout.Y_AXIS));
+        main.add(new Label("edit act"));
+        main.add(this.namePanel());
+        this.name.setText(act.getName());
+        //add
+        main.add(this.stageChooser(act));
+        main.add(this.genreChooser());
+        this.genre.setText(this.act.getGenre());
+        //todo dates
+        main.add(this.dates());
+
+        for(Artist artist: this.act.getArtists()){
+            this.artistModel.addElement(artist);
+        }
+        
+        main.add(this.artistsChooser());
+        main.add(this.buttons());
+        super.add(main);
+    }
     
     private JPanel namePanel(){
         JPanel name = new JPanel();
@@ -66,6 +93,23 @@ public class AddActDialogPanel extends JDialog{
         
         return panel;
     }
+
+    private JPanel stageChooser(Act act){
+        JPanel panel = new JPanel();
+        this.stageComboBox = new JComboBox();
+        this.stageComboBox.addItem(act.getStage());
+        for(Stage stage: this.agenda.getStages()){
+            if(act.getStage() != stage){
+                this.stageComboBox.addItem(stage);
+            }
+        }
+
+        panel.setLayout(new BoxLayout(panel, BoxLayout.X_AXIS));
+        panel.add(new JLabel("stage:"));
+        panel.add(this.stageComboBox);
+
+        return panel;
+    }
     
     private JPanel genreChooser(){
         JPanel genrePanel = new JPanel();
@@ -84,7 +128,7 @@ public class AddActDialogPanel extends JDialog{
     }
     
     private JPanel artistsChooser(){
-        final JPanel artists = new JPanel();
+        JPanel artists = new JPanel();
         artists.setLayout(new BoxLayout(artists, BoxLayout.X_AXIS));
         
         //list
@@ -161,7 +205,7 @@ public class AddActDialogPanel extends JDialog{
         artists.add(buttonPanel);
         return artists;
     }
-    
+
     private JPanel buttons(){
         JPanel buttons = new JPanel();
 
@@ -209,14 +253,20 @@ public class AddActDialogPanel extends JDialog{
         }
         
         
+        if(this.act == null){
+            Act act = new Act(this.name.getText(), (Stage) this.stageComboBox.getSelectedItem(), this.genre.getText(), new ActTime(2015,02,11,21,00  ,2015,02,11,23,00), artists);
+            this.model.addElement(act);
+            this.agenda.addAct(act);
+        }else{
+            this.act.setName(this.name.getText());
+            this.act.setGenre(this.genre.getText());
+            this.act.setStage((Stage) this.stageComboBox.getSelectedItem());
+            this.act.setArtists(artists);
+            this.model.removeElement(this.act);
+            this.model.addElement(act);
+        }
         
-        
-        Act act = new Act(this.name.getText(), (Stage) this.stageComboBox.getSelectedItem(), this.genre.getText(), new ActTime(2015,02,11,21,00  ,2015,02,11,23,00), artists);
         System.out.println(act);
-        
-        this.model.addElement(act);
-        this.agenda.addAct(act);
-        
         dispose();
 
     }

+ 33 - 6
src/gui/panels/edit/dialogs/AddArtistDialogPanel.java → src/gui/panels/edit/dialogs/ArtistDialogPanel.java

@@ -11,27 +11,46 @@ import java.awt.event.ActionListener;
 /**
  * Created by gjoosen on 19/02/15.
  */
-public class AddArtistDialogPanel extends JDialog{
+public class ArtistDialogPanel extends JDialog{
 
     private JTextField name, genre;
     private Agenda agenda;
 
     private DefaultListModel model;
+    
+    private Artist artist;
 
-    public AddArtistDialogPanel(Agenda agenda, DefaultListModel model){
+    public ArtistDialogPanel(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(new Label("new artist"));
         main.add(this.namePanel());
         main.add(this.genrePanel());
         main.add(this.buttons());
         super.add(main);
         super.setVisible(true);
         super.pack();
+    }
+    
+    public ArtistDialogPanel(Agenda agenda, DefaultListModel model, Artist artist){
+        this.agenda = agenda;
+        this.model = model;
+        this.artist = artist;
 
+        JPanel main = new JPanel();
+        main.setLayout(new BoxLayout(main, BoxLayout.Y_AXIS));
+        main.add(new Label("edit artist"));
+        main.add(this.namePanel());
+        main.add(this.genrePanel());
+        main.add(this.buttons());
+
+        this.name.setText(this.artist.getName());
+        this.genre.setText(this.artist.getGenre());
+
+        super.add(main);
     }
 
     private JPanel genrePanel(){
@@ -92,9 +111,17 @@ public class AddArtistDialogPanel extends JDialog{
         }
 
         //Save artist
-        Artist artist = new Artist(this.name.getText(), this.genre.getText());
-        this.model.addElement(artist);
-        this.agenda.addArtist(artist);
+
+        if(this.artist == null){
+            Artist artist = new Artist(this.name.getText(), this.genre.getText());
+            this.model.addElement(artist);
+            this.agenda.addArtist(artist);
+        }else{
+            this.model.removeElement(this.artist);
+            this.artist.setName(this.name.getText());
+            this.artist.setGenre(this.genre.getText());
+            this.model.addElement(this.artist);
+        }
         super.dispose();
     }
 

+ 41 - 13
src/gui/panels/edit/dialogs/AddStageDialogPanel.java → src/gui/panels/edit/dialogs/StageDialogPanel.java

@@ -12,28 +12,44 @@ import java.awt.event.ActionListener;
 /**
  * Created by gjoosen on 19/02/15.
  */
-public class AddStageDialogPanel extends JDialog{
+public class StageDialogPanel extends JDialog{
 
     private Agenda agenda;
     private DefaultListModel model;
     private JTextField name;
+    private Stage stage;
     
-    public AddStageDialogPanel(Agenda agenda, DefaultListModel model){
+    public StageDialogPanel(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(new Label("new stage"));
         main.add(this.namePanel());
         main.add(this.buttons());
         super.add(main);
-        super.setVisible(true);
-        super.pack();
+    }
 
+    //edit dialog.
+    public StageDialogPanel(Agenda agenda, DefaultListModel model, Stage stage){
+        this.agenda = agenda;
+        this.model = model;
+        this.stage = stage;
 
+        JPanel main = new JPanel();
+        main.setLayout(new BoxLayout(main, BoxLayout.Y_AXIS));
+        main.add(new Label("edit stage"));
+        main.add(this.namePanel());
+        main.add(this.buttons());
+        
+        this.name.setText(stage.getName());
+        
+        super.add(main);
     }
     
+    
+    
     private JPanel namePanel(){
         JPanel name = new JPanel();
         name.setLayout(new BoxLayout(name, BoxLayout.X_AXIS));
@@ -67,17 +83,29 @@ public class AddStageDialogPanel extends JDialog{
     }
     
     private void save(){
-        if(this.name.getText().equals("")){
-            JOptionPane.showMessageDialog(null, "Name can't be empty!", "Warning", JOptionPane.WARNING_MESSAGE);
-            return;
+        if(this.stage != null){
+            if(this.name.getText().equals("")){
+                JOptionPane.showMessageDialog(null, "Name can't be empty!", "Warning", JOptionPane.WARNING_MESSAGE);
+                return;
+            }else{
+                this.model.removeElement(this.stage);
+                this.stage.setName(this.name.getText());
+                this.model.addElement(this.stage);
+                dispose();
+            }
         }else{
-            Stage stage = new Stage(this.name.getText());
-            this.agenda.addStage(stage);
-            this.model.addElement(stage);
-            dispose();
+            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();
     }