Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
604fc9491a | ||
|
|
9ff8c50309 | ||
|
|
53195bfc7f | ||
|
|
fb224081cc | ||
|
|
21d17eadd2 | ||
|
|
d769129415 | ||
|
|
285de27ba9 | ||
|
|
0ce2e7e6e9 | ||
|
|
2a10e0846d | ||
|
|
0e5a2ccb61 | ||
|
|
692e63f25c | ||
|
|
ddd9435e4f | ||
|
|
2e4e763ef7 | ||
|
|
3dafa12ba8 | ||
|
|
a15ecc78c0 | ||
|
|
d0b6bcdd74 | ||
|
|
29063703f6 | ||
|
|
4fe2761ab1 | ||
|
|
46be84245b | ||
|
|
755941598e | ||
|
|
54fe904cad | ||
|
|
b530a47a95 | ||
|
|
dc4a87a4b3 | ||
|
|
8f5ef939f6 | ||
|
|
e2b140f780 | ||
|
|
302703f6ea | ||
|
|
7fcab5a2a6 | ||
|
|
3764de4a8f | ||
|
|
8d4ffa48f1 | ||
|
|
70ac0560b1 | ||
|
|
a35af42dcf | ||
|
|
46829eff10 | ||
|
|
73493d1faa | ||
|
|
7ab04656b6 | ||
|
|
68c7392f2d | ||
|
|
b566007b77 | ||
|
|
a1520cf55c | ||
|
|
1ed16ab22f | ||
|
|
b5dbb8e058 | ||
|
|
ea3d16c533 | ||
|
|
f69ac37ea8 | ||
|
|
d065860c4b | ||
|
|
4e6abc1551 | ||
|
|
6d6c5cd153 | ||
|
|
63e6138e83 | ||
|
|
a0cdeb1794 | ||
|
|
c10341c403 | ||
|
|
0e78c56ad7 | ||
|
|
c232d6a01c | ||
|
|
451ae58a77 | ||
|
|
4e81a4aa30 | ||
|
|
ff5daf1da8 | ||
|
|
26d0fa1ff3 | ||
|
|
fc0539c6ab | ||
|
|
91f113e8e3 | ||
|
|
c27d44a559 |
+16
-17
@@ -1,28 +1,27 @@
|
||||
public class Artist {
|
||||
import javax.swing.ImageIcon;
|
||||
|
||||
private String name;
|
||||
|
||||
public class Artist
|
||||
{
|
||||
private String genre;
|
||||
private String image;
|
||||
private String name;
|
||||
private String description;
|
||||
private ImageIcon image;
|
||||
private int id;
|
||||
|
||||
|
||||
public Artist(String name, String genre, String image, String description) {
|
||||
this.setName(name);
|
||||
public Artist(String genre, String name, String description, ImageIcon image, int id)
|
||||
{
|
||||
this.genre = genre;
|
||||
this.image = image;
|
||||
this.description = description;
|
||||
}
|
||||
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
|
||||
public void setName(String name) {
|
||||
this.name = name;
|
||||
this.description = description;
|
||||
this.image = image;
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public int getID()
|
||||
{
|
||||
return id;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -1,42 +0,0 @@
|
||||
import java.awt.Graphics;
|
||||
|
||||
import javax.swing.table.AbstractTableModel;
|
||||
|
||||
/**
|
||||
* This class is used to make a temporary abstracttableModel with selected data so later it can be passed to the JTable so it refreshes.
|
||||
* @author Wesley
|
||||
* @version 1.0
|
||||
*/
|
||||
public class ContentTable extends AbstractTableModel {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
private Object[][] data;
|
||||
private String[] columnNames;
|
||||
|
||||
|
||||
public ContentTable(Object[][] data,String[] columnNames) {
|
||||
this.data = data;
|
||||
this.columnNames = columnNames;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getColumnCount() {
|
||||
return columnNames.length;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getRowCount() {
|
||||
return data.length;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object getValueAt(int rowIndex, int columnIndex) {
|
||||
return data[rowIndex][columnIndex];
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getColumnName(int col) {
|
||||
return columnNames[col];
|
||||
}
|
||||
}
|
||||
@@ -1,43 +0,0 @@
|
||||
import java.util.ArrayList;
|
||||
|
||||
public class Data {
|
||||
|
||||
private ArrayList<Stage> stages;
|
||||
private ArrayList<Event> events;
|
||||
private ArrayList<Artist> artists;
|
||||
|
||||
public Data() {
|
||||
stages = new ArrayList<>();
|
||||
events = new ArrayList<>();
|
||||
artists = new ArrayList<>();
|
||||
}
|
||||
|
||||
private void addStage(Stage stage) {
|
||||
stages.add(stage);
|
||||
}
|
||||
|
||||
private void addEvent(Event event) {
|
||||
events.add(event);
|
||||
}
|
||||
|
||||
private void addArtist(Artist artist) {
|
||||
artists.add(artist);
|
||||
}
|
||||
|
||||
public void makeArtist(String name, String genre, String image, String description) {
|
||||
Artist artist = new Artist(name,genre,image,description);
|
||||
addArtist(artist);
|
||||
}
|
||||
|
||||
/*public void makeEvent(Artist artist, int startTime, int endTime, String description) {
|
||||
Event event = new Event(artist, startTime, endTime,description);
|
||||
addEvent(event);
|
||||
}
|
||||
|
||||
public void makeStage(int expectedPopularity, String description) {
|
||||
Stage stage = new Stage(expectedPopularity, description);
|
||||
addStage(stage);
|
||||
}*/
|
||||
|
||||
|
||||
}
|
||||
+19
-46
@@ -1,61 +1,34 @@
|
||||
public class Event {
|
||||
|
||||
private Artist artist;
|
||||
public class Event
|
||||
{
|
||||
private int startTime;
|
||||
private int endTime;
|
||||
private Artist artist;
|
||||
private String description;
|
||||
private Stage stage;
|
||||
private String name;
|
||||
private int id;
|
||||
|
||||
public Event(String name, Stage stage, Artist artist, int startTime, int endTime, String description) {
|
||||
if(artist != null)
|
||||
this.setArtist(artist);
|
||||
else
|
||||
this.setArtist(null);
|
||||
public Event(int startTime, int endTime, Artist artist, String description, int id)
|
||||
{
|
||||
this.startTime = startTime;
|
||||
this.setEndTime(endTime);
|
||||
this.description = description;
|
||||
this.setName(name);
|
||||
this.stage = stage;
|
||||
}
|
||||
|
||||
public int getStartTime() {
|
||||
return startTime;
|
||||
}
|
||||
|
||||
public int getEndTime() {
|
||||
return endTime;
|
||||
}
|
||||
|
||||
public void setEndTime(int endTime) {
|
||||
this.endTime = endTime;
|
||||
this.artist = artist;
|
||||
this.description = description;
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public Stage getStage() {
|
||||
return stage;
|
||||
}
|
||||
|
||||
public void setStage(Stage stage) {
|
||||
this.stage = stage;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public void setName(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public Artist getArtist() {
|
||||
public Artist getArtist()
|
||||
{
|
||||
return artist;
|
||||
}
|
||||
|
||||
public void setArtist(Artist artist) {
|
||||
this.artist = artist;
|
||||
|
||||
public int getStartTime()
|
||||
{
|
||||
return startTime;
|
||||
}
|
||||
|
||||
|
||||
|
||||
public int getID()
|
||||
{
|
||||
return id + 10;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,51 @@
|
||||
import java.awt.BorderLayout;
|
||||
import java.awt.event.ComponentAdapter;
|
||||
import java.awt.event.ComponentEvent;
|
||||
|
||||
import javax.swing.JFrame;
|
||||
import javax.swing.JPanel;
|
||||
|
||||
|
||||
public class GUI extends JFrame
|
||||
{
|
||||
private Timeline timeline;
|
||||
|
||||
public GUI()
|
||||
{
|
||||
super("Gui");
|
||||
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
|
||||
|
||||
// JPanel contentPane = new JPanel(new BorderLayout());
|
||||
// this.setContentPane(contentPane);
|
||||
// this.setSize(600, 600);
|
||||
// this.setVisible(true);
|
||||
// System.out.println(contentPane.getWidth());
|
||||
// timeline = new Timeline(contentPane);
|
||||
// contentPane.add(timeline,BorderLayout.CENTER);
|
||||
// contentPane.add(timeline.createWestPanel(), BorderLayout.WEST);
|
||||
// timeline.refresh();
|
||||
TimelinePanel panel = new TimelinePanel();
|
||||
this.setContentPane(panel);
|
||||
this.setSize(600, 600);
|
||||
this.setVisible(true);
|
||||
|
||||
this.getRootPane().addComponentListener(new ComponentAdapter()
|
||||
{
|
||||
public void componentResized(ComponentEvent e) {
|
||||
panel.refresh();
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
public static void main(String[] args)
|
||||
{
|
||||
new GUI();
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,24 +0,0 @@
|
||||
import java.io.BufferedInputStream;
|
||||
import java.io.BufferedOutputStream;
|
||||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.ObjectInputStream;
|
||||
import java.io.ObjectOutputStream;
|
||||
|
||||
public class IO {
|
||||
|
||||
private ObjectInputStream objectInput;
|
||||
private ObjectOutputStream objectOutput;
|
||||
|
||||
|
||||
public IO(File file) throws IOException {
|
||||
objectInput = new ObjectInputStream(new BufferedInputStream(new FileInputStream(file)));
|
||||
objectOutput = new ObjectOutputStream(new BufferedOutputStream(new FileOutputStream(file)));
|
||||
}
|
||||
|
||||
public void saveObject(Object o) throws IOException {
|
||||
objectOutput.writeObject(o);
|
||||
}
|
||||
}
|
||||
@@ -1,4 +0,0 @@
|
||||
|
||||
public class Preformance {
|
||||
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
# BELANGRIJK
|
||||
De .jar file moet als externe Library toegevoegd worden.
|
||||
De sprites folder moet in de root van het project.
|
||||
|
||||
BRANCH VAN YORICK
|
||||
Ja, codemess please.
|
||||
+45
-16
@@ -1,28 +1,57 @@
|
||||
import java.util.ArrayList;
|
||||
|
||||
public class Stage {
|
||||
|
||||
private ArrayList<Event> events;
|
||||
private String name;
|
||||
private String description;
|
||||
public class Stage
|
||||
{
|
||||
private ArrayList<Event> performances;
|
||||
private int expectedPopularity;
|
||||
private String description;
|
||||
private int length;
|
||||
private int startTime,endTime;
|
||||
|
||||
public Stage(String name, int expectedPopularity, String description) {
|
||||
events = new ArrayList<>();
|
||||
this.setName(name);
|
||||
public Stage(ArrayList<Event> performances, int expectedPopularity, String description, int startTime, int endTime)
|
||||
{
|
||||
this.performances = performances;
|
||||
this.expectedPopularity = expectedPopularity;
|
||||
this.description = description;
|
||||
this.startTime = startTime;
|
||||
this.endTime = endTime;
|
||||
this.length = endTime - startTime;
|
||||
}
|
||||
|
||||
public void addEvent(Event event) {
|
||||
events.add(event);
|
||||
public void setStartTime(int startTime)
|
||||
{
|
||||
this.startTime = startTime;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
|
||||
public void setEndTime(int endTime)
|
||||
{
|
||||
this.endTime = endTime;
|
||||
}
|
||||
|
||||
public void setName(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public ArrayList<Event> getPerformances()
|
||||
{
|
||||
return performances;
|
||||
}
|
||||
|
||||
// public int getID()
|
||||
// {
|
||||
// return id + 100;
|
||||
// }
|
||||
|
||||
public int getLength()
|
||||
{
|
||||
return length;
|
||||
}
|
||||
|
||||
public int getStartTime()
|
||||
{
|
||||
return startTime;
|
||||
}
|
||||
|
||||
public int getEndTime()
|
||||
{
|
||||
return endTime;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,90 @@
|
||||
import java.awt.Color;
|
||||
import java.awt.Dimension;
|
||||
import java.awt.Graphics;
|
||||
import java.awt.Graphics2D;
|
||||
import java.awt.LayoutManager;
|
||||
import java.awt.image.BufferedImage;
|
||||
|
||||
import javax.swing.JFrame;
|
||||
import javax.swing.JPanel;
|
||||
|
||||
|
||||
public class StagePanel extends JPanel
|
||||
{
|
||||
private BufferedImage image;
|
||||
private int width, height, posX;
|
||||
private Stage stage;
|
||||
public StagePanel(int width, int height, int posX, Stage stage)
|
||||
{
|
||||
this.width = width;
|
||||
this.height = height;
|
||||
this.posX = posX;
|
||||
this.stage = stage;
|
||||
image = new BufferedImage(this.width, this.height, BufferedImage.TYPE_INT_ARGB);
|
||||
Graphics2D g2 = image.createGraphics();
|
||||
g2.setColor(Color.blue);
|
||||
g2.fillRect(0, 0, image.getWidth(), image.getHeight());
|
||||
}
|
||||
|
||||
public void paint(Graphics g)
|
||||
{
|
||||
super.paint(g);
|
||||
((Graphics2D)g).drawImage(image, this.posX, 0, this);
|
||||
}
|
||||
|
||||
public StagePanel(LayoutManager arg0)
|
||||
{
|
||||
super(arg0);
|
||||
|
||||
}
|
||||
|
||||
public StagePanel(boolean arg0)
|
||||
{
|
||||
super(arg0);
|
||||
|
||||
}
|
||||
|
||||
public void update(int posx)
|
||||
{
|
||||
this.posX = posx;
|
||||
repaint();
|
||||
}
|
||||
|
||||
|
||||
public StagePanel(LayoutManager arg0, boolean arg1)
|
||||
{
|
||||
super(arg0, arg1);
|
||||
|
||||
}
|
||||
|
||||
public int getPosX()
|
||||
{
|
||||
return this.posX;
|
||||
}
|
||||
|
||||
public void setLength(int length)
|
||||
{
|
||||
this.width = length;
|
||||
}
|
||||
|
||||
public void setStageStartTime(int startTime)
|
||||
{
|
||||
stage.setStartTime(startTime);
|
||||
}
|
||||
|
||||
public void setStageEndTime(int endTime)
|
||||
{
|
||||
stage.setEndTime(endTime);
|
||||
}
|
||||
|
||||
public int getStageStartTime()
|
||||
{
|
||||
return stage.getStartTime();
|
||||
}
|
||||
|
||||
public int getImageWidth()
|
||||
{
|
||||
return this.width;
|
||||
}
|
||||
|
||||
}
|
||||
-185
@@ -1,185 +0,0 @@
|
||||
import java.awt.BorderLayout;
|
||||
import java.awt.Dimension;
|
||||
import java.awt.Graphics;
|
||||
import java.awt.event.ActionEvent;
|
||||
import java.awt.event.ActionListener;
|
||||
import java.awt.event.MouseAdapter;
|
||||
import java.awt.event.MouseEvent;
|
||||
import java.util.ArrayList;
|
||||
|
||||
import javax.swing.JButton;
|
||||
import javax.swing.JFrame;
|
||||
import javax.swing.JOptionPane;
|
||||
import javax.swing.JPanel;
|
||||
import javax.swing.JScrollPane;
|
||||
import javax.swing.JTable;
|
||||
import javax.swing.table.AbstractTableModel;
|
||||
|
||||
/**
|
||||
* Constructs a JTable in a ScrolPane.
|
||||
* @author Wesley
|
||||
* @version 1.0
|
||||
*/
|
||||
public class TabelPanel extends JPanel {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
private JScrollPane scrollPane;
|
||||
private Object[][] data;
|
||||
private String[] columnNames = {"Stage",
|
||||
"Event",
|
||||
"Artist",
|
||||
"Begin Time",
|
||||
"End Time"};
|
||||
private ArrayList<Event> events;
|
||||
private ArrayList<Event> fullEvents;
|
||||
private JTable table;
|
||||
private JTable selectedCell;
|
||||
|
||||
/**
|
||||
* Constructor makes the table and adds it to a scrollPane.
|
||||
* @param events
|
||||
*/
|
||||
public TabelPanel(ArrayList<Event> events) {
|
||||
this.events = events;
|
||||
fullEvents = new ArrayList<>();
|
||||
compileData(columnNames.length,events.size());
|
||||
table= new JTable();
|
||||
AbstractTableModel tableModel = new ContentTable(data,columnNames);
|
||||
table.setModel(tableModel);
|
||||
table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
|
||||
table.setAutoCreateRowSorter(true);
|
||||
table.addMouseListener(new MouseAdapter() {
|
||||
public void mouseClicked(MouseEvent e) { if(e.getClickCount() > 1 ) cellClicked(e); else selectedCell = (JTable) e.getSource(); }
|
||||
});
|
||||
scrollPane = new JScrollPane(table,JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
|
||||
scrollPane.setBorder(null);
|
||||
add(scrollPane);
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the size of the scrollPane, in which the table is placed to fill out its container panel (not sure if this is needed?)
|
||||
*/
|
||||
public void paintComponent(Graphics g) {
|
||||
scrollPane.setPreferredSize(new Dimension(getWidth(),getHeight()));
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the data from the events arrayList and makes a 2D-array of it.
|
||||
* @param columnes
|
||||
* @param rows
|
||||
*/
|
||||
public void compileData(int columnes, int rows) {
|
||||
data = new Object[rows][columnes];
|
||||
for(int x = 0; x < rows; x++) {
|
||||
Object[] tempData = new Object[columnes];
|
||||
tempData[0] = events.get(x).getStage().getName();
|
||||
tempData[1] = events.get(x).getName();
|
||||
tempData[2] = events.get(x).getArtist().getName();
|
||||
tempData[3] = new Integer(events.get(x).getStartTime());
|
||||
tempData[4] = new Integer(events.get(x).getEndTime());
|
||||
data[x] = tempData;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Refreshes the content on the table with a fresh ArrayList of events, useful when things are removed and added and should be called every time you update the list.
|
||||
* @param events
|
||||
*/
|
||||
public void refreshContent(ArrayList<Event> events, boolean newList) {
|
||||
this.events = events;
|
||||
if(newList)
|
||||
this.fullEvents = events;
|
||||
compileData(columnNames.length,events.size());
|
||||
AbstractTableModel tableModel = new ContentTable(data,columnNames);
|
||||
table.setModel(tableModel);
|
||||
}
|
||||
|
||||
/**
|
||||
* Method for the action listener when a cell is clicked, opens dialog of the clicked cell.
|
||||
* @param e
|
||||
*/
|
||||
private void cellClicked(MouseEvent e) {
|
||||
JTable target = (JTable) e.getSource();
|
||||
switch(target.getSelectedColumn()) {
|
||||
case 0:
|
||||
//A dialog for podia?
|
||||
break;
|
||||
case 1:
|
||||
openEventDialog(target.getSelectedRow());
|
||||
break;
|
||||
case 2:
|
||||
openArtistDialog(target.getSelectedRow());
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Opens a dialog with information of the selected event.
|
||||
* @param row
|
||||
*/
|
||||
private void openEventDialog(int row) {
|
||||
JFrame frame = new JFrame();
|
||||
Event event = events.get(row);
|
||||
//the dialog
|
||||
frame.pack();
|
||||
frame.setSize(300, 200);
|
||||
frame.setLocationRelativeTo(this);
|
||||
frame.setVisible(true);
|
||||
}
|
||||
|
||||
/**
|
||||
* Opens a dialog with information of the selected artist
|
||||
* @param row
|
||||
*/
|
||||
private void openArtistDialog(int row) {
|
||||
JFrame frame = new JFrame();
|
||||
Artist artsit = events.get(row).getArtist();
|
||||
//the dialog
|
||||
frame.pack();
|
||||
frame.setSize(300, 200);
|
||||
frame.setLocationRelativeTo(this);
|
||||
frame.setVisible(true);
|
||||
}
|
||||
|
||||
/**
|
||||
* Filter method which filters on the currently selected cell.
|
||||
* Needs to be under a button action, also a reset button is needed so list can be restored.
|
||||
*/
|
||||
public void filter() {
|
||||
if(selectedCell != null) {
|
||||
if(fullEvents.isEmpty()) {
|
||||
fullEvents = events;
|
||||
}
|
||||
ArrayList<Event> filteredList = new ArrayList<>();
|
||||
switch(selectedCell.getSelectedColumn()) {
|
||||
case 0:
|
||||
for(Event event : fullEvents) {
|
||||
if(event.getStage().equals(events.get(selectedCell.getSelectedRow()).getStage())) {
|
||||
filteredList.add(event);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
for(Event event : fullEvents) {
|
||||
if(event.equals(events.get(selectedCell.getSelectedRow()))) {
|
||||
filteredList.add(event);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
for(Event event : fullEvents) {
|
||||
if(event.getArtist().equals(events.get(selectedCell.getSelectedRow()).getArtist())) {
|
||||
filteredList.add(event);
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
}
|
||||
refreshContent(filteredList,false);
|
||||
selectedCell = null;
|
||||
}
|
||||
else {
|
||||
JOptionPane.showMessageDialog(this, "Select a cell with the value u want to filter on","No cell selected",JOptionPane.WARNING_MESSAGE);
|
||||
}
|
||||
}
|
||||
}
|
||||
+358
@@ -0,0 +1,358 @@
|
||||
import java.awt.BorderLayout;
|
||||
import java.awt.Color;
|
||||
import java.awt.Component;
|
||||
import java.awt.Container;
|
||||
import java.awt.Dimension;
|
||||
import java.awt.FlowLayout;
|
||||
import java.awt.event.ComponentAdapter;
|
||||
import java.awt.event.ComponentEvent;
|
||||
import java.awt.event.ComponentListener;
|
||||
import java.awt.event.MouseAdapter;
|
||||
import java.awt.event.MouseEvent;
|
||||
import java.awt.event.MouseListener;
|
||||
import java.awt.event.MouseMotionAdapter;
|
||||
import java.awt.event.MouseMotionListener;
|
||||
import java.util.ArrayList;
|
||||
|
||||
import javax.swing.Box;
|
||||
import javax.swing.BoxLayout;
|
||||
import javax.swing.ImageIcon;
|
||||
import javax.swing.JButton;
|
||||
import javax.swing.JFrame;
|
||||
import javax.swing.JLabel;
|
||||
import javax.swing.JPanel;
|
||||
|
||||
|
||||
@SuppressWarnings({ "serial" })
|
||||
public class Timeline extends JPanel
|
||||
{
|
||||
private ArrayList<Stage> stages = new ArrayList<Stage>();
|
||||
private JPanel frame;
|
||||
|
||||
// Geef dit object je JFrame mee, en zet in je JFrame de volgende code:
|
||||
// this.setContentPane(timeline.getTimeline());
|
||||
// this.getRootPane().addComponentListener(new ComponentAdapter()
|
||||
// {
|
||||
// public void componentResized(ComponentEvent e) {
|
||||
// timeline.refresh();
|
||||
// }
|
||||
// });
|
||||
|
||||
|
||||
public Timeline(JPanel frame)
|
||||
{
|
||||
super();
|
||||
this.frame = frame;
|
||||
|
||||
genStages();
|
||||
this.setSize(frame.getWidth(), frame.getHeight());
|
||||
refresh();
|
||||
|
||||
}
|
||||
|
||||
public void refresh()
|
||||
{
|
||||
this.removeAll();
|
||||
// createWestPanel();
|
||||
createMainPanel();
|
||||
this.revalidate();
|
||||
}
|
||||
|
||||
private void createMainPanel()
|
||||
{
|
||||
JPanel mainPanel = new JPanel();
|
||||
mainPanel.setLayout(new BoxLayout(mainPanel, BoxLayout.Y_AXIS));
|
||||
Container topContainer = createTopPanel();
|
||||
Dimension dim = new Dimension(this.getWidth(), 60);
|
||||
topContainer.setMaximumSize(dim);
|
||||
mainPanel.add(topContainer);
|
||||
|
||||
Dimension centerDim = new Dimension(this.getWidth(), frame.getHeight());
|
||||
|
||||
// Container centerContainer = createCenterPanel();
|
||||
JPanel centerContainer = createCenterPanel();
|
||||
centerContainer.setPreferredSize(centerDim);
|
||||
|
||||
centerContainer.setMaximumSize(centerDim);
|
||||
System.out.println(centerDim);
|
||||
mainPanel.add(centerContainer);
|
||||
this.add(mainPanel, BorderLayout.CENTER);
|
||||
}
|
||||
|
||||
private JPanel createCenterPanel()
|
||||
{
|
||||
|
||||
JPanel centerPanel = new JPanel();
|
||||
centerPanel.setBackground(Color.lightGray);
|
||||
centerPanel.setLayout(new BoxLayout(centerPanel, BoxLayout.Y_AXIS));
|
||||
centerPanel.add(Box.createRigidArea(new Dimension(0, 30)));
|
||||
|
||||
for(Stage stage : stages)
|
||||
{
|
||||
StagePanel stagepanel = new StagePanel(calcLengthOfStage(stage.getLength()), 30, calcPositionOfStage(stage.getStartTime()), stage);
|
||||
Container content = stagepanel;
|
||||
content.setMaximumSize(new Dimension(this.getWidth(),30));
|
||||
content.addMouseListener(new MouseListener() {
|
||||
|
||||
@Override
|
||||
public void mouseReleased(MouseEvent e) {
|
||||
resizeTimeline(stagepanel);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void mousePressed(MouseEvent e) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void mouseExited(MouseEvent e) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void mouseEntered(MouseEvent e) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void mouseClicked(MouseEvent e) {
|
||||
|
||||
}
|
||||
});
|
||||
content.addMouseMotionListener(new MouseMotionListener() {
|
||||
|
||||
@Override
|
||||
public void mouseMoved(MouseEvent e) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void mouseDragged(MouseEvent e) {
|
||||
stagepanel.update(e.getX() - stagepanel.getImageWidth() / 2);
|
||||
}
|
||||
});
|
||||
centerPanel.add(content);
|
||||
centerPanel.add(Box.createRigidArea(new Dimension(0,15)));
|
||||
}
|
||||
|
||||
// this.add(centerPanel, BorderLayout.CENTER);
|
||||
return centerPanel;
|
||||
}
|
||||
|
||||
public void resizeTimeline(StagePanel stagepanel)
|
||||
{
|
||||
int min = findMinMax(1);
|
||||
int max = findMinMax(2);
|
||||
// System.out.println(stagepanel.getStageStartTime());
|
||||
// System.out.println(calcStartTimeOfStagePanel(stagepanel.getPosX()));
|
||||
stagepanel.setStageStartTime(calcStartTimeOfStagePanel(stagepanel.getPosX()));
|
||||
stagepanel.setStageEndTime(calcEndTimeOfStagePanel(stagepanel.getPosX(), stagepanel.getImageWidth()));
|
||||
// stagepanel.setLength(calcLengthOfStagePanel(stagepanel.getImageWidth()));
|
||||
// System.out.println(calcLengthOfStagePanel(stagepanel.getImageWidth()));
|
||||
refresh();
|
||||
|
||||
|
||||
}
|
||||
|
||||
public int calcLengthOfStage(int length)
|
||||
{
|
||||
double lengthOfStage = 0;
|
||||
int min = findMinMax(1);
|
||||
int max = findMinMax(2);
|
||||
|
||||
double frameWidth = this.getWidth();
|
||||
double pixelsPerLength = frameWidth / (max - min);
|
||||
lengthOfStage = pixelsPerLength * (double)length;
|
||||
// System.out.println((int)lengthOfStage);
|
||||
return (int)lengthOfStage;
|
||||
}
|
||||
|
||||
public int calcLengthOfStagePanel(int length)
|
||||
{
|
||||
double lengthOfStagePanel = 0;
|
||||
int min = findMinMax(1);
|
||||
int max = findMinMax(2);
|
||||
// System.out.println(length);
|
||||
double frameWidth = this.getWidth();
|
||||
double pixelsPerLength = frameWidth / (max - min);
|
||||
// System.out.println(pixelsPerLength);
|
||||
lengthOfStagePanel = (double)length / pixelsPerLength;
|
||||
// System.out.println(lengthOfStagePanel);
|
||||
|
||||
return (int)lengthOfStagePanel;
|
||||
}
|
||||
|
||||
public int calcPositionOfStage(int startTime)
|
||||
{
|
||||
int posx = 0;
|
||||
int min = findMinMax(1);
|
||||
int max = findMinMax(2);
|
||||
posx = startTime - min;
|
||||
posx = posx * this.getWidth() / (max-min);
|
||||
// System.out.println("Frame: " + this.getWidth());
|
||||
// System.out.println("startTime: " + startTime);
|
||||
// System.out.println("Max: " + max + " min: " + min);
|
||||
// System.out.println("Posx: " + posx);
|
||||
return posx;
|
||||
}
|
||||
|
||||
public int calcStartTimeOfStagePanel(int posx)
|
||||
{
|
||||
int min = findMinMax(1);
|
||||
int max = findMinMax(2);
|
||||
// double startTime = (posx / (this.getWidth() / (max - min )) ) + min;
|
||||
//Omdat het anders onnodig afgerond wordt, alles apart in doubles.
|
||||
double minmax = max-min;
|
||||
double bottom = this.getWidth() / minmax;
|
||||
double all = posx / bottom;
|
||||
double startTime = all + min;
|
||||
|
||||
|
||||
// System.out.println("starttime----------------");
|
||||
// System.out.println("Frame: " + this.getWidth());
|
||||
// System.out.println("startTime: " + startTime);
|
||||
// System.out.println("Max: " + max + " min: " + min);
|
||||
// System.out.println("Posx: " + posx);
|
||||
return (int)startTime;
|
||||
}
|
||||
|
||||
public int calcEndTimeOfStagePanel(int posx, int imageWidth)
|
||||
{
|
||||
int min = findMinMax(1);
|
||||
int max = findMinMax(2);
|
||||
//Omdat het anders onnodig afgerond wordt, alles apart in doubles.
|
||||
double minmax = max-min;
|
||||
double bottom = this.getWidth() / minmax;
|
||||
double all = posx / bottom;
|
||||
double endTime = all + min + calcLengthOfStagePanel(imageWidth);
|
||||
// System.out.println(calcLengthOfStagePanel(imageWidth));
|
||||
// System.out.println(endTime);
|
||||
return (int)endTime;
|
||||
}
|
||||
|
||||
public int findMinMax(int i)
|
||||
{
|
||||
// Event oldevent = new Event(0, 0, null, "Base", 0);
|
||||
// ArrayList<Event> oldevents = new ArrayList<Event>();
|
||||
// oldevents.add(oldevent);
|
||||
// Stage oldstage = new Stage(oldevents,0,null, 0, 0);
|
||||
ArrayList<Stage> stagescopy = (ArrayList<Stage>) stages.clone();
|
||||
|
||||
Integer earliestStartTime = null;
|
||||
Integer lastEndTime = null;
|
||||
|
||||
for(Stage stage : stagescopy)
|
||||
{
|
||||
if(i == 1)
|
||||
{
|
||||
if(earliestStartTime == null)
|
||||
{
|
||||
|
||||
earliestStartTime = stage.getStartTime();
|
||||
}
|
||||
|
||||
else
|
||||
{
|
||||
if(stage.getStartTime() < earliestStartTime)
|
||||
{
|
||||
earliestStartTime = stage.getStartTime();
|
||||
}
|
||||
}
|
||||
}
|
||||
else if( i == 2)
|
||||
{
|
||||
if(lastEndTime == null)
|
||||
{
|
||||
lastEndTime = stage.getEndTime();
|
||||
}
|
||||
else
|
||||
{
|
||||
if(stage.getEndTime() > lastEndTime)
|
||||
{
|
||||
lastEndTime = stage.getEndTime();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if(i == 1)
|
||||
{
|
||||
return earliestStartTime;
|
||||
}
|
||||
else if(i == 2)
|
||||
{
|
||||
return lastEndTime;
|
||||
}
|
||||
else
|
||||
{
|
||||
System.out.println("Return -1");
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
private JPanel createTopPanel()
|
||||
{
|
||||
JPanel topPane = new JPanel();
|
||||
topPane.setLayout(new BoxLayout(topPane, BoxLayout.Y_AXIS));
|
||||
JPanel topPanel = new JPanel(new FlowLayout());
|
||||
for(int i = 0; i <= this.getWidth() / 10; i++)
|
||||
{
|
||||
ImageIcon topImageIcon = new ImageIcon("src/test2.png");
|
||||
JLabel topImage = new JLabel(topImageIcon);
|
||||
topPanel.add(topImage);
|
||||
}
|
||||
topPane.add(Box.createRigidArea(new Dimension(0,20)));
|
||||
JPanel panel = new JPanel();
|
||||
panel.setLayout(new BoxLayout(panel, BoxLayout.X_AXIS));
|
||||
panel.add(Box.createRigidArea(new Dimension(50, 10)));
|
||||
panel.add(new JLabel(Integer.toString(findMinMax(1))));
|
||||
panel.add(Box.createHorizontalGlue());
|
||||
panel.add(new JLabel(Integer.toString(findMinMax(2))));
|
||||
panel.add(Box.createRigidArea(new Dimension(50, 10)));
|
||||
topPane.add(panel);
|
||||
topPane.add(topPanel);
|
||||
// this.add(topPane, BorderLayout.NORTH);
|
||||
return topPane;
|
||||
}
|
||||
|
||||
public JPanel createWestPanel()
|
||||
{
|
||||
JPanel westPanel = new JPanel();
|
||||
westPanel.setLayout(new BoxLayout(westPanel, BoxLayout.Y_AXIS));
|
||||
westPanel.add(Box.createRigidArea(new Dimension(0, 100)));
|
||||
for(int i = 0; i < stages.size(); i++)
|
||||
{
|
||||
JLabel stageText = new JLabel("Stage: " + (i+1) + " ");
|
||||
westPanel.add(stageText);
|
||||
westPanel.add(Box.createRigidArea(new Dimension(0, 30 )));
|
||||
}
|
||||
// this.add(westPanel, BorderLayout.WEST);
|
||||
return westPanel;
|
||||
}
|
||||
|
||||
private void genStages()
|
||||
{
|
||||
ImageIcon image = new ImageIcon();
|
||||
Artist artist2 = new Artist("Henk", "paul2", "kaas", image, 2);
|
||||
Artist artist1 = new Artist("Kaas", "Paul", "Lala", image, 1);
|
||||
Event event2 = new Event(1900, 2000, artist2, "hi2", 2);
|
||||
Event event1 = new Event(600, 1800, artist1, "hi", 1);
|
||||
ArrayList<Event> performances = new ArrayList<Event>();
|
||||
performances.add(event1);
|
||||
performances.add(event2);
|
||||
Stage stage1 = new Stage(performances, 100, null, 1800, 2100);
|
||||
stages.add(stage1);
|
||||
Stage stage2 = new Stage(performances, 100, null, 1700, 1900);
|
||||
Stage stage3 = new Stage(performances, 100, null, 1600, 1800);
|
||||
Stage stage4 = new Stage(performances, 100, null, 1600, 2100);
|
||||
stages.add(stage3);
|
||||
stages.add(stage2);
|
||||
// stages.add(stage4);
|
||||
|
||||
}
|
||||
|
||||
public JPanel getTimeline()
|
||||
{
|
||||
return this;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
import java.awt.BorderLayout;
|
||||
|
||||
import javax.swing.JPanel;
|
||||
|
||||
|
||||
public class TimelinePanel extends JPanel {
|
||||
|
||||
private Timeline timeline;
|
||||
|
||||
public TimelinePanel()
|
||||
{
|
||||
super(new BorderLayout());
|
||||
|
||||
this.setSize(600, 600);
|
||||
this.setVisible(true);
|
||||
timeline = new Timeline(this);
|
||||
this.add(timeline,BorderLayout.CENTER);
|
||||
this.add(timeline.createWestPanel(), BorderLayout.WEST);
|
||||
}
|
||||
|
||||
public void refresh()
|
||||
{
|
||||
timeline.refresh();
|
||||
}
|
||||
|
||||
}
|
||||
-88
@@ -1,88 +0,0 @@
|
||||
import java.awt.BorderLayout;
|
||||
import java.awt.event.ActionEvent;
|
||||
import java.awt.event.ActionListener;
|
||||
import java.util.ArrayList;
|
||||
|
||||
import javax.swing.JButton;
|
||||
import javax.swing.JFrame;
|
||||
import javax.swing.JPanel;
|
||||
|
||||
|
||||
public class frame extends JFrame {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
private ArrayList<Event> events;
|
||||
private TabelPanel paneel;
|
||||
|
||||
public static void main(String args[]) {
|
||||
frame frameee = new frame();
|
||||
|
||||
}
|
||||
|
||||
public frame() {
|
||||
fillArray();
|
||||
setDefaultCloseOperation(EXIT_ON_CLOSE);
|
||||
paneel = new TabelPanel(events);
|
||||
getContentPane().add(paneel);
|
||||
JButton button;
|
||||
JPanel botPanel = new JPanel();
|
||||
button = new JButton("Filta");
|
||||
button.addActionListener(new ActionListener() {
|
||||
public void actionPerformed(ActionEvent e) { paneel.filter(); }
|
||||
});
|
||||
botPanel.add(button);
|
||||
button = new JButton("Reset filta");
|
||||
button.addActionListener(new ActionListener() {
|
||||
public void actionPerformed(ActionEvent e) { paneel.refreshContent(events,true); }
|
||||
});
|
||||
botPanel.add(button);
|
||||
add(botPanel,BorderLayout.SOUTH);
|
||||
pack();
|
||||
setSize(800,600);
|
||||
setVisible(true);
|
||||
}
|
||||
|
||||
private void fillArray() {
|
||||
Artist artist1 = new Artist("John","","","");
|
||||
Artist artist2 = new Artist("Jan","","","");
|
||||
Artist artist3 = new Artist("Jaap","","","");
|
||||
Artist artist4 = new Artist("Banaan","","","");
|
||||
Artist artist5 = new Artist("Josti","","","");
|
||||
Stage stage1 = new Stage("podia1",1,"");
|
||||
Stage stage2 = new Stage("podia2",1,"");
|
||||
Stage stage3 = new Stage("podia3",1,"");
|
||||
Stage stage4 = new Stage("podia4",1,"");
|
||||
Stage stage5 = new Stage("podia5",1,"");
|
||||
events = new ArrayList<>();
|
||||
events.add(new Event("event1",stage1,artist1,1605,1640,""));
|
||||
events.add(new Event("event2",stage1,artist2,1605,1640,""));
|
||||
events.add(new Event("event3",stage3,artist3,1605,1640,""));
|
||||
events.add(new Event("event4",stage1,artist4,1605,1640,""));
|
||||
events.add(new Event("event5",stage5,artist5,1605,1640,""));
|
||||
}
|
||||
|
||||
private void fillArray2() {
|
||||
Artist artist1 = new Artist("2","","","");
|
||||
Artist artist2 = new Artist("2","","","");
|
||||
Artist artist3 = new Artist("2","","","");
|
||||
Artist artist4 = new Artist("2","","","");
|
||||
Artist artist5 = new Artist("2","","","");
|
||||
Stage stage1 = new Stage("podia1",1,"");
|
||||
Stage stage2 = new Stage("podia2",1,"");
|
||||
Stage stage3 = new Stage("podia3",1,"");
|
||||
Stage stage4 = new Stage("podia4",1,"");
|
||||
Stage stage5 = new Stage("podia5",1,"");
|
||||
events = new ArrayList<>();
|
||||
events.add(new Event("event1",stage1,artist1,1605,1640,""));
|
||||
events.add(new Event("event2",stage1,artist2,1605,1640,""));
|
||||
events.add(new Event("event3",stage3,artist3,1605,1640,""));
|
||||
events.add(new Event("event4",stage4,artist4,1605,1640,""));
|
||||
events.add(new Event("event5",stage1,artist5,1605,1640,""));
|
||||
}
|
||||
|
||||
public void refresh() {
|
||||
fillArray2();
|
||||
paneel.refreshContent(events,true);
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user