package View;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.util.ArrayList;
import javax.swing.*;
import javax.swing.filechooser.FileNameExtensionFilter;
import Model.MediaObject;
@SuppressWarnings("serial")
public class BibView extends JFrame
{
DefaultListModel items;
ArrayList<MediaObject> l = new ArrayList<MediaObject>();
JList list;
JScrollPane scrollPane;
JButton addMedia;
JButton removeMedia;
JButton mediaVideo;
JButton mediaAudio;
JButton mediaBoth;
JButton ok;
JLabel mediaCaption;
JLabel empty1;
JLabel empty2;
JLabel empty3;
JLabel empty4;
JLabel empty5;
OutputStream fos;
InputStream fis;
int id = 0;
JFileChooser c = new JFileChooser(new File(""));
public void serializeBib(ArrayList l) throws Exception
{
fos = new FileOutputStream("Bib.ser");
ObjectOutputStream o = new ObjectOutputStream(fos);
o.writeObject(l);
}
public void deserializeBib() throws Exception
{
fis = new FileInputStream("Bib.ser");
ObjectInputStream o = new ObjectInputStream(fis);
l = (ArrayList<MediaObject>) o.readObject();
}
// TODO: Nur Test um GUI zu testen, löschen!
public static void main(String[] args)
{
BibView bib = new BibView();
}
public BibView()
{
this.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
this.setTitle("Bibliothek - Medien verwalten");
this.setSize(500, 396);
this.setLocationRelativeTo(null);
this.setLayout(new GridLayout(1, 2));
// TODO: Scrolen geht nicht!
JPanel listPanel = new JPanel();
listPanel.setLayout(new BorderLayout());
JPanel buttonPanel = new JPanel();
JPanel caption = new JPanel();
caption.setLayout(new FlowLayout());
addMedia = new JButton("Hinzufügen...");
removeMedia = new JButton("Löschen...");
mediaCaption = new JLabel("Medien erstellen");
mediaVideo = new JButton("Video erstellen");
mediaAudio = new JButton("Audio erstellen");
mediaBoth = new JButton("Video mit Audio erstellen");
empty1 = new JLabel();
empty2 = new JLabel();
empty3 = new JLabel();
empty4 = new JLabel();
empty5 = new JLabel();
ok = new JButton("OK");
caption.add(mediaCaption);
ok.addActionListener(al);
removeMedia.addActionListener(al);
addMedia.addActionListener(al);
items = new DefaultListModel();
try
{
deserializeBib();
} catch (Exception e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
for (int i = 0; i < l.size(); i++)
{
items.add(0, l.get(i).getName());
}
list = new JList(items);
list.addMouseListener(ms);
scrollPane = new JScrollPane(list);
listPanel.add(scrollPane);
buttonPanel.setLayout(new GridLayout(12, 1));
buttonPanel.add(addMedia);
buttonPanel.add(removeMedia);
buttonPanel.add(empty1);
buttonPanel.add(caption);
buttonPanel.add(mediaVideo);
buttonPanel.add(mediaAudio);
buttonPanel.add(mediaBoth);
buttonPanel.add(empty2);
buttonPanel.add(empty3);
buttonPanel.add(empty4);
buttonPanel.add(empty5);
buttonPanel.add(ok);
this.add(listPanel);
this.add(buttonPanel);
this.setVisible(true);
}
MouseListener ms = new MouseListener()
{
@Override
public void mouseClicked(MouseEvent e)
{
int click = e.getClickCount();
if (click == 2)
{
// TODO: MedienObjekt abspielen impl.
// new AudioPlayer();
System.out.println("Doppelklick");
}
}
@Override
public void mouseEntered(MouseEvent e)
{
// TODO Auto-generated method stub
}
@Override
public void mouseExited(MouseEvent e)
{
// TODO Auto-generated method stub
}
@Override
public void mousePressed(MouseEvent e)
{
// TODO Auto-generated method stub
}
@Override
public void mouseReleased(MouseEvent e)
{
// TODO Auto-generated method stub
}
};
public int getID()
{
// TODO: Wie krieg ich das hin dass mir IMMER eine eindeutige ID generiert wird?
return id += 1;
}
ActionListener al = new ActionListener()
{
public void actionPerformed(ActionEvent evt)
{
AbstractButton ab = (AbstractButton) evt.getSource();
if (ab.getActionCommand() == "OK")
{
try
{
serializeBib(l);
} catch (Exception e)
{
// TODO: Fehlermeldung ausgeben
e.printStackTrace();
}
dispose();
}
if (ab.getActionCommand() == "Hinzufügen...")
{
c.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
c.addChoosableFileFilter(new FileNameExtensionFilter(
"Media files (*.avi; *.mpg; *.mpeg; *.mov; *.wav)", "avi",
"mpg", "mpeg", "mov", "wav"));
int open = c.showOpenDialog(null);
if (open == JFileChooser.APPROVE_OPTION)
{
MediaObject tmp = new MediaObject(getID(), c.getSelectedFile().getName(), c.getSelectedFile());
l.add(tmp);
items.add(0, c.getSelectedFile().getName());
}
if (open == JFileChooser.CANCEL_OPTION)
{
}
}
if (ab.getActionCommand() == "Löschen...")
{
int delete = JOptionPane
.showConfirmDialog(rootPane, "Wirklich löschen?",
"Datei aus Bibliothek löschen", JOptionPane.YES_NO_OPTION,
JOptionPane.QUESTION_MESSAGE);
if (delete == 0)
{
try
{
items.remove(list.getSelectedIndex());
}
catch (ArrayIndexOutOfBoundsException e)
{
JOptionPane.showMessageDialog(rootPane,
"Keine Datei ausgewählt",
"Löschen nicht möglich",
JOptionPane.WARNING_MESSAGE);
}
int sel = list.getSelectedIndex();
System.out.println("getSelectedIndex " + sel);
// l.remove(list.);
}
}
}
};
}