ソースを参照

Changed the structure, only 1 Agenda object is used now.
Changed the editPane, now it uses the Agenda to load stages, artists and acts.

Gilian Joosen 10 年 前
コミット
a6013f7c14

+ 11 - 2
src/agenda/Act.java

@@ -10,10 +10,11 @@ public class Act {
     
     private List<Artist> artists;
     private Stage stage;
-    private String genre;
+    private String genre, name;
     private ActTime actTime;
 
-    public Act(Stage stage, String genre, ActTime actTime, Artist... artists){
+    public Act(String name, Stage stage, String genre, ActTime actTime, Artist... artists){
+        this.name = name;
         this.stage = stage; 
         this.genre = genre;
         this.actTime = actTime;
@@ -52,6 +53,14 @@ public class Act {
         return genre;
     }
 
+    /**
+     * *
+     * @return act name
+     */
+    public String getName() {
+        return name;
+    }
+
     /**
      * * return the act time.
      * @return the act time object

+ 3 - 3
src/agenda/Agenda.java

@@ -31,9 +31,9 @@ public class Agenda {
         this.artists.add(new Artist("Sabaton", "Power metal"));
 
         //acts
-        this.acts.add(new Act(this.stages.get(0), "Heavy metal", new ActTime(2015,02,11,21,00  ,2015,02,11,23,00), this.artists.get(0)));
-        this.acts.add(new Act(this.stages.get(1), "Test metal" , new ActTime(2015,02,11,23,00  ,2015,02,12,04,30), this.artists.get(1)));
-        this.acts.add(new Act(this.stages.get(0), "Power metal" ,new ActTime(2015,02,11,20,00  ,2015,02,11,23,00), this.artists.get(2)));
+        this.acts.add(new Act(this.artists.get(0).getName(), this.stages.get(0), "Heavy metal", new ActTime(2015,02,11,21,00  ,2015,02,11,23,00), this.artists.get(0)));
+        this.acts.add(new Act(this.artists.get(1).getName(), this.stages.get(1), "Test metal" , new ActTime(2015,02,11,23,00  ,2015,02,12,04,30), this.artists.get(1)));
+        this.acts.add(new Act(this.artists.get(2).getName(), this.stages.get(0), "Power metal" ,new ActTime(2015,02,11,20,00  ,2015,02,11,23,00), this.artists.get(2)));
         
         System.out.println(this);
     }

+ 9 - 2
src/gui/frames/MainFrame.java

@@ -1,14 +1,21 @@
 package gui.frames;
 
+import agenda.Agenda;
 import gui.menubar.MenuBar;
+import gui.panels.MainPanel;
+import gui.panels.edit.EditPane;
 
 import javax.swing.JFrame;
 import javax.swing.JPanel;
 
 @SuppressWarnings("serial")
 public class MainFrame extends JFrame{
-	public MainFrame(JPanel panel){
-		this.add(panel);
+	
+    private Agenda agenda;
+    
+    public MainFrame(){
+        this.agenda = new Agenda();
+        this.add(new EditPane(this.agenda));
 		this.setResizable(true);
 		this.setBounds(100,100,1440,900);
 		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

+ 3 - 3
src/gui/main/Main.java

@@ -2,6 +2,7 @@ package gui.main;
 
 import gui.frames.MainFrame;
 import gui.panels.MainPanel;
+import gui.panels.edit.EditPane;
 
 import javax.swing.UIManager;
 import javax.swing.UnsupportedLookAndFeelException;
@@ -13,8 +14,7 @@ public class Main {
 	
 	public static void main(String[] args){
         
-		//sets the systems look and feels 
-        
+		//sets the systems look and feels
         //osx
         if(System.getProperties().getProperty("os.name").equals("Mac OS X")) {
             System.setProperty("apple.laf.useScreenMenuBar", "true");
@@ -26,7 +26,7 @@ public class Main {
 		}catch(ClassNotFoundException | InstantiationException| IllegalAccessException | UnsupportedLookAndFeelException e) {
 			e.printStackTrace();
 		}
-		new MainFrame(new MainPanel());
+		new MainFrame();
 	}
 }
 	

+ 8 - 6
src/gui/panels/MainPanel.java

@@ -6,22 +6,24 @@ import javax.swing.JPanel;
 import javax.swing.JScrollPane;
 
 import agenda.Agenda;
+import gui.panels.agenda.AgendaPane;
+import gui.panels.agenda.InfoPane;
 
 @SuppressWarnings("serial")
 public class MainPanel extends JPanel{
-	public MainPanel(){
+    
+    private Agenda agenda;
+    
+	public MainPanel(Agenda agenda){
+        this.agenda = agenda;
 		this.setLayout(new BorderLayout());
 		this.add(new InfoPane(), BorderLayout.WEST);
 		
-		Agenda agenda = new Agenda();
-		AgendaPane agendapanel = new AgendaPane(agenda);
+		AgendaPane agendapanel = new AgendaPane(this.agenda);
 		
 		JScrollPane scroll = new JScrollPane(agendapanel);
 		scroll.getVerticalScrollBar().setUnitIncrement(20);
 		
-		
 		this.add(scroll, BorderLayout.CENTER);
-		
-		
 	}
 }

+ 1 - 1
src/gui/panels/AgendaItemShape.java → src/gui/panels/agenda/AgendaItemShape.java

@@ -1,4 +1,4 @@
-package gui.panels;
+package gui.panels.agenda;
 
 import java.awt.Color;
 import java.awt.Rectangle;

+ 10 - 6
src/gui/panels/AgendaPane.java → src/gui/panels/agenda/AgendaPane.java

@@ -1,4 +1,4 @@
-package gui.panels;
+package gui.panels.agenda;
 
 import java.awt.BasicStroke;
 import java.awt.Color;
@@ -9,17 +9,13 @@ import java.awt.Graphics2D;
 import java.awt.Rectangle;
 import java.awt.event.MouseAdapter;
 import java.awt.event.MouseEvent;
-import java.awt.event.MouseWheelEvent;
-import java.awt.event.MouseWheelListener;
 import java.util.ArrayList;
-import java.util.Calendar;
 import java.util.GregorianCalendar;
 
 import javax.swing.JPanel;
 
 import agenda.Act;
 import agenda.Agenda;
-import agenda.Stage;
 
 @SuppressWarnings("serial")
 public class AgendaPane extends JPanel {
@@ -94,7 +90,15 @@ public class AgendaPane extends JPanel {
 	public void paintComponent(Graphics g){
 		super.paintComponent(g);
 		Graphics2D g2 = (Graphics2D)g;		
-		int xspacing = getWidth()/agenda.getStages().size()+20;
+        
+        
+        //agenda.getStages().size() mag niet 0 zijn (je mag niet delen door 0.)
+        int xspacing;
+        if(agenda.getStages().size() == 0){
+            xspacing = 0;
+        }else{
+            xspacing = getWidth()/agenda.getStages().size()+20;
+        }
 		for(int i = 0; i < agenda.getStages().size(); i++){
 			g2.setColor(Color.black);
 			g2.drawString(agenda.getStages().get(i).getName(), i*xspacing+itempadding, heightoffset/2);

+ 1 - 1
src/gui/panels/DaySelectorPane.java → src/gui/panels/agenda/DaySelectorPane.java

@@ -1,4 +1,4 @@
-package gui.panels;
+package gui.panels.agenda;
 
 import java.awt.FlowLayout;
 

+ 2 - 2
src/gui/panels/InfoPane.java → src/gui/panels/agenda/InfoPane.java

@@ -1,4 +1,4 @@
-package gui.panels;
+package gui.panels.agenda;
 
 import java.awt.Color;
 import java.awt.GridLayout;
@@ -20,7 +20,7 @@ public class InfoPane extends JPanel{
 	public void label(){
 		JLabel info = new JLabel("Information");
 		this.add(info);
-		
+
 	}
 	
 	public void textField(){

+ 79 - 0
src/gui/panels/edit/ActsPane.java

@@ -0,0 +1,79 @@
+package gui.panels.edit;
+
+import agenda.Act;
+import agenda.Agenda;
+import agenda.Stage;
+
+import javax.swing.*;
+import java.awt.*;
+import java.util.ArrayList;
+
+/**
+ * Created by gjoosen on 19/02/15.
+ */
+public class ActsPane extends JPanel {
+
+    private JList actsList;
+    private Agenda agenda;
+
+    public ActsPane(Agenda agenda){
+        this.agenda = agenda;
+        super.setLayout(new BorderLayout());
+        super.add(new Label("Acts"), BorderLayout.NORTH);
+        super.add(new JPanel(), BorderLayout.EAST);
+        super.add(new JPanel(), BorderLayout.WEST);
+        super.add(this.buttonRow(), BorderLayout.SOUTH);
+
+        //the JList needs an array, so you have to go from the List to an array.
+        Act[] acts = new Act[this.agenda.getActs().size()];
+        int i = 0;
+        for(Act act: this.agenda.getActs()){
+            acts[i] = act;
+            i++;
+        }
+
+        //initialize the JList with the artist objects.
+        this.actsList = new JList(acts);
+
+        //the cell renderer.
+        this.actsList.setCellRenderer(new ActCellRenderer());
+
+        //the JList inside a scrollPane.
+        JScrollPane scrollPane = new JScrollPane(this.actsList);
+
+        super.add(scrollPane, BorderLayout.CENTER);
+    }
+
+    private JPanel buttonRow(){
+        JPanel buttonPane = new JPanel();
+        buttonPane.setLayout(new BoxLayout(buttonPane, BoxLayout.X_AXIS));
+        buttonPane.add(new Button("add"));
+        buttonPane.add(new Button("remove"));
+        return buttonPane;
+    }
+    
+}
+
+class ActCellRenderer extends JLabel implements ListCellRenderer {
+
+    private static final Color HIGHLIGHT_COLOR = new Color(0, 0, 128);
+
+    public ActCellRenderer() {
+        setOpaque(true);
+        setIconTextGap(12);
+    }
+
+    public Component getListCellRendererComponent(JList list, Object value,
+                                                  int index, boolean isSelected, boolean cellHasFocus) {
+        Act act = (Act) value;
+        setText(act.getName());
+        if (isSelected) {
+            setBackground(HIGHLIGHT_COLOR);
+            setForeground(Color.white);
+        } else {
+            setBackground(Color.white);
+            setForeground(Color.black);
+        }
+        return this;
+    }
+}

+ 93 - 0
src/gui/panels/edit/ArtistPane.java

@@ -0,0 +1,93 @@
+package gui.panels.edit;
+
+import agenda.Agenda;
+import agenda.Artist;
+import gui.panels.edit.dialogs.AddArtistDialogPanel;
+
+import javax.swing.*;
+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.
+ */
+public class ArtistPane extends JPanel {
+
+    private JList artistList;
+    private Agenda agenda;
+    
+    public ArtistPane(Agenda agenda){
+        this.agenda = agenda;
+        super.setLayout(new BorderLayout());
+        super.add(new Label("Artists"), BorderLayout.NORTH);
+        super.add(new JPanel(), BorderLayout.EAST);
+        super.add(new JPanel(), BorderLayout.WEST);
+        super.add(this.buttonRow(), BorderLayout.SOUTH);
+
+        //the JList needs an array, so you have to go from the List to an array.
+        Artist[] artists = new Artist[this.agenda.getArtists().size()];
+        int i = 0;
+        for(Artist artist: this.agenda.getArtists()){
+            artists[i] = artist;
+            i++;
+        }
+
+        //initialize the JList with the artist objects.
+        this.artistList = new JList(artists);
+
+        //the cell renderer.
+        this.artistList.setCellRenderer(new ArtistCellRenderer());
+
+        //the JList inside a scrollPane.
+        JScrollPane scrollPane = new JScrollPane(this.artistList);
+
+        super.add(scrollPane, BorderLayout.CENTER);
+    }
+    
+    private JPanel buttonRow(){
+        JPanel buttonPane = new JPanel();
+        buttonPane.setLayout(new BoxLayout(buttonPane, BoxLayout.X_AXIS));
+        
+        JButton addArtist = new JButton("add");
+        addArtist.addActionListener(new ActionListener() {
+            @Override
+            public void actionPerformed(ActionEvent e) {
+                JDialog dialog = new JDialog();
+                dialog.setContentPane(new AddArtistDialogPanel());
+                dialog.pack();
+                dialog.setVisible(true);
+            }
+        });
+        
+        buttonPane.add(addArtist);
+        buttonPane.add(new Button("remove"));
+        return buttonPane;
+    }
+}
+
+class ArtistCellRenderer extends JLabel implements ListCellRenderer {
+
+    private static final Color HIGHLIGHT_COLOR = new Color(0, 0, 128);
+
+    public ArtistCellRenderer() {
+        setOpaque(true);
+        setIconTextGap(12);
+    }
+
+    public Component getListCellRendererComponent(JList list, Object value,
+                                                  int index, boolean isSelected, boolean cellHasFocus) {
+        Artist stage = (Artist) value;
+        setText(stage.getName());
+        if (isSelected) {
+            setBackground(HIGHLIGHT_COLOR);
+            setForeground(Color.white);
+        } else {
+            setBackground(Color.white);
+            setForeground(Color.black);
+        }
+        return this;
+    }
+}

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

@@ -0,0 +1,44 @@
+package gui.panels.edit;
+
+import agenda.Agenda;
+import agenda.Artist;
+import com.sun.istack.internal.NotNull;
+import javafx.scene.layout.VBox;
+
+import javax.swing.*;
+import javax.swing.border.Border;
+import java.awt.*;
+import java.util.ArrayList;
+
+/**
+ * Created by gjoosen on 13/02/15.
+ */
+public class EditPane extends JPanel {
+
+    private Agenda agenda;
+    
+    public EditPane(Agenda agenda) {
+        this.agenda = agenda;
+        super.setBackground(Color.BLACK);
+        super.setLayout(new GridLayout(1, 4));
+
+        super.add(this.detailsPanel());
+        super.add(new ArtistPane(this.agenda));
+        super.add(new StagesPane(this.agenda));
+        super.add(new ActsPane(this.agenda));
+    }
+
+    private JPanel detailsPanel() {
+        JPanel detailsPanel = new JPanel();
+        detailsPanel.setLayout(new BorderLayout());
+        detailsPanel.add(new JPanel(), BorderLayout.EAST);
+        detailsPanel.add(new JPanel(), BorderLayout.WEST);
+        detailsPanel.add(new JPanel(), BorderLayout.SOUTH);
+        detailsPanel.add(new Label("Details"), BorderLayout.NORTH);
+
+        detailsPanel.add(new JTextArea("Test"), BorderLayout.CENTER);
+        return detailsPanel;
+    }
+}
+
+

+ 91 - 0
src/gui/panels/edit/StagesPane.java

@@ -0,0 +1,91 @@
+package gui.panels.edit;
+
+import agenda.Agenda;
+import agenda.Stage;
+import gui.panels.edit.dialogs.AddStageDialogPanel;
+
+import javax.swing.*;
+import java.awt.*;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.util.*;
+
+/**
+ * Created by gjoosen on 19/02/15.
+ */
+public class StagesPane extends JPanel {
+
+    private JList stagesList;
+    private Agenda agenda;
+    
+    public StagesPane(Agenda agenda){
+        this.agenda = agenda;
+        super.setLayout(new BorderLayout());
+        super.add(new Label("Stages"), BorderLayout.NORTH);
+        super.add(new JPanel(), BorderLayout.EAST);
+        super.add(new JPanel(), BorderLayout.WEST);
+        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;
+        for(Stage stage: this.agenda.getStages()){
+            stages[i] = stage;
+            i++;
+        }
+
+        //initialize the JList with the artist objects.
+        this.stagesList = new JList(stages);
+
+        //the cell renderer.
+        this.stagesList.setCellRenderer(new StageCellRenderer());
+
+        //the JList inside a scrollPane.
+        JScrollPane scrollPane = new JScrollPane(this.stagesList);
+
+        super.add(scrollPane, BorderLayout.CENTER);
+    }
+
+    private JPanel buttonRow(){
+        JPanel buttonPane = new JPanel();
+        buttonPane.setLayout(new BoxLayout(buttonPane, BoxLayout.X_AXIS));
+        JButton addButton = new JButton("add");
+        addButton.addActionListener(new ActionListener() {
+            @Override
+            public void actionPerformed(ActionEvent e) {
+                JDialog dialog = new JDialog();
+                dialog.setContentPane(new AddStageDialogPanel());
+                dialog.pack();
+                dialog.setVisible(true);
+            }
+        });
+        buttonPane.add(addButton);
+        buttonPane.add(new Button("remove"));
+        return buttonPane;
+    }
+    
+}
+
+class StageCellRenderer extends JLabel implements ListCellRenderer {
+
+    private static final Color HIGHLIGHT_COLOR = new Color(0, 0, 128);
+
+    public StageCellRenderer() {
+        setOpaque(true);
+        setIconTextGap(12);
+    }
+
+    public Component getListCellRendererComponent(JList list, Object value,
+                                                  int index, boolean isSelected, boolean cellHasFocus) {
+        Stage stage = (Stage) value;
+        setText(stage.getName());
+        if (isSelected) {
+            setBackground(HIGHLIGHT_COLOR);
+            setForeground(Color.white);
+        } else {
+            setBackground(Color.white);
+            setForeground(Color.black);
+        }
+          return this;
+    }
+}