System.err.println("Error image of buttons wasn't found: " + e2.getMessage());
}
//Pictures and Border for the Player-Buttons
try {
//Replaces the margin of the buttons.
Border p = new MatteBorder(5, 15, 5, 15, bgColor);
//The getSubimage function returns a specified area of an image.
img = biButtons.getSubimage(50, 50, 50, 50);
btPlay.setIcon(new ImageIcon(img));
img = pressedButtons.getSubimage(50, 50, 50, 50);
btPlay.setPressedIcon(new ImageIcon(img));
btPlay.setBorder(p);
img = biButtons.getSubimage(150, 50, 50, 50);
btStop.setIcon(new ImageIcon(img));
img = pressedButtons.getSubimage(150, 50, 50, 50);
btStop.setPressedIcon(new ImageIcon(img));
btStop.setBorder(p);
img = biButtons.getSubimage(50, 0, 50, 50);
btNext.setIcon(new ImageIcon(img));
img = pressedButtons.getSubimage(50, 0, 50, 50);
btNext.setPressedIcon(new ImageIcon(img));
btNext.setBorder(p);
img = biButtons.getSubimage(0, 0, 50, 50);
btBefore.setIcon(new ImageIcon(img));
img = pressedButtons.getSubimage(0, 0, 50, 50);
btBefore.setPressedIcon(new ImageIcon(img));
btBefore.setBorder(p);
img = biButtons.getSubimage(100, 0, 50, 50);
tbRepeat.setIcon(new ImageIcon(img));
img = pressedButtons.getSubimage(100, 0, 50, 50);
tbRepeat.setPressedIcon(new ImageIcon(img));
tbRepeat.setBorder(p);
} catch (Exception e1) {
System.err.println("Error loading images: " + e1.getMessage());
}
//The UIManager can change all standard-implementations without overriding
UIManager.put("ToggleButton.select", Color.RED);
SwingUtilities.updateComponentTreeUI(tbRepeat);
//Action-Listeners for the Player-Buttons
btPlay.addActionListener(this);//
btStop.addActionListener(this);
btNext.addActionListener(this);
btBefore.addActionListener(this);
slPosition.addMouseListener(new MouseAdapter() {
@Override
public void mousePressed(MouseEvent arg0) {
changePos = 1;
newPos = -1;
}
@Override
public void mouseReleased(MouseEvent e) {
changePos = 0;
try {
playerInstance.setPosition(newPos);
} catch (Exception ex) {}
}
});
slPosition.addChangeListener(new ChangeListener() {
@Override
public void stateChanged(ChangeEvent arg0) {
if(changePos != 0) {
newPos = slPosition.getValue();
}
}
});
slVolume.addChangeListener(new ChangeListener() {
@Override
public void stateChanged(ChangeEvent arg0) {
float val = (float)slVolume.getValue() / slVolume.getMaximum() * 2;
//System.out.println(val);
playerInstance.setVolume(val);
}
});
tbRepeat.addItemListener(new ItemListener() {
@Override
public void itemStateChanged(ItemEvent arg0) {
if(arg0.getStateChange() == ItemEvent.SELECTED) {
playerInstance.setRepeat(true);
tbRepeat.setIcon(new ImageIcon(biButtons.getSubimage(150, 0, 50, 50)));
} else if(arg0.getStateChange() == ItemEvent.DESELECTED) {
playerInstance.setRepeat(false);
tbRepeat.setBackground(null);
tbRepeat.setIcon(new ImageIcon(biButtons.getSubimage(100, 0, 50, 50)));
}
}
});
//Center-Layout for the playlist
JPanel jpPlaylist = new JPanel(new BorderLayout());
listModel = playerInstance.getList();
liPlaylist = new JList<MusicFile>(listModel);
liPlaylist.setDragEnabled(true);
liPlaylist.setDropTarget(new DropTarget() {
/**
* These methods makes it possible to add files per drag-and-drop
* from the file-manager.
*
* It also checks if the given file is an .mp3 or .m3u file.
*/
private static final long serialVersionUID = 1766231036261266981L;
public synchronized void drop(DropTargetDropEvent evt) {
try {
evt.acceptDrop(DnDConstants.ACTION_COPY);
@SuppressWarnings("unchecked")
List<File> droppedFiles = (List<File>) evt
.getTransferable().getTransferData(
DataFlavor.javaFileListFlavor);
for (File file : droppedFiles) {
addMP3Files(file);
}
} catch (Exception ex) {
ex.printStackTrace();
}
}
});
liPlaylist.setDropMode(DropMode.INSERT);
//TransferHandler tf = new TransferHandler(getName());
//Center-south layout for the playlist-Buttons
JPanel jpPlaylistButtons = new JPanel(new FlowLayout());
btAdd = new JButton();
btRemove = new JButton();
btUp = new JButton();
btDown = new JButton();
btLike = new JButton();
//Image image = Toolkit.getDefaultToolkit().getImage(getClass().getResource("/images/jaraco_buttons.png"));
//Images for the playlist-Buttons
try {
//Border p = new LineBorder(bgColor);
//Insets margin = new Insets(0,50,0,50);
Border p = new MatteBorder(20, 15, 5, 15, bgColor);
btAdd.setIcon(new ImageIcon(biButtons.getSubimage(0, 100, 50, 50)));
btAdd.setPressedIcon(new ImageIcon(pressedButtons.getSubimage(0, 100, 50, 50)));
btAdd.setBackground(bgColor);
btAdd.setBorder(p);
//btAdd.setBorderPainted(false);
btRemove.setIcon(new ImageIcon(biButtons.getSubimage(50, 100, 50, 50)));
btRemove.setPressedIcon(new ImageIcon(pressedButtons.getSubimage(50,100,50,50)));
btRemove.setBackground(bgColor);
btRemove.setBorder(p);
//btRemove.setBorderPainted(false);
btUp.setIcon(new ImageIcon(biButtons.getSubimage(100, 100, 50, 50)));
btUp.setPressedIcon(new ImageIcon(pressedButtons.getSubimage(100, 100, 50, 50)));
btUp.setBackground(bgColor);
btUp.setBorder(p);
//btUp.setMargin(margin);
//btUp.setBorderPainted(false);
btDown.setIcon(new ImageIcon(biButtons.getSubimage(150, 100, 50, 50)));
btDown.setPressedIcon(new ImageIcon(pressedButtons.getSubimage(150, 100, 50, 50)));
btDown.setBackground(bgColor);
btDown.setBorder(p);
//btDown.setBorderPainted(false);
btLike.setIcon(new ImageIcon(biButtons.getSubimage(0, 50, 50, 50)));
btLike.setPressedIcon(new ImageIcon(pressedButtons.getSubimage(0, 50, 50, 50)));
btLike.setBackground(bgColor);
btLike.setBorder(p);
} catch (Exception e1) {
e1.printStackTrace();
}
//ActionsEvents for the playlist-Buttons
btAdd.addActionListener(this);
btRemove.addActionListener(this);
btUp.addActionListener(this);
btDown.addActionListener(this);
btLike.addActionListener(this);
//The mouse listenes for playing the double-clicked file.
liPlaylist.addMouseListener(new MouseAdapter() {
@Override
public void mousePressed(MouseEvent arg0) {
if(arg0.getClickCount() == 2 && arg0.getButton() == MouseEvent.BUTTON1) {
try {
playerInstance.resetPosition();
playerInstance.playFile(
liPlaylist.getSelectedIndex());
} catch (IOException e) {
e.printStackTrace();
} catch (JavaLayerException e) {
e.printStackTrace();
}
}
}
});
//User-List
lmUser = new DefaultListModel<String>();
liUser = new JList<String>(lmUser);
liUser.setBackground(bgColor);
liUser.setForeground(Color.white);
this.add(liUser, BorderLayout.EAST);
//Current-playing
JPanel jpCurrent = new JPanel(new BorderLayout());
biAmp = new BufferedImage[7];
try {
biAmp[0] = ImageIO.read(getClass().getResource("/images/amp_0.png"));
biAmp[1] = ImageIO.read(getClass().getResource("/images/amp_1.png"));
biAmp[2] = ImageIO.read(getClass().getResource("/images/amp_2.png"));
biAmp[2] = ImageIO.read(getClass().getResource("/images/amp_3.png"));
biAmp[4] = ImageIO.read(getClass().getResource("/images/amp_4.png"));
biAmp[5] = ImageIO.read(getClass().getResource("/images/amp_5.png"));
biAmp[6] = ImageIO.read(getClass().getResource("/images/amp_6.png"));
} catch (IOException e2) {
// TODO Auto-generated catch block
e2.printStackTrace();
}
/*
* The image-view is for showing the current amplitude.
*/
imAmp = null;
try {
imAmp = new ImageView();
imAmp.setImage(biAmp[0]);
imAmp.setSize();
imAmp.setBackground(bgColor);
} catch (Exception e1) {
e1.printStackTrace();
}
playerInstance.setAmplitudeChangeListener(new JaracoPlayer.OnAmplitudeChangeListener() {
@Override
public void amplitudeChange(byte value) {
setAmplitude(value);
}
});
JPanel jpTags = new JPanel(new BorderLayout());
lInterpret = new JLabel();
lInterpret.setFont(new Font("Arial", Font.BOLD, 30));
lInterpret.setForeground(Color.white);
lTitle = new JLabel();
lTitle.setFont(new Font("Arial", Font.PLAIN, 20));
lTitle.setForeground(Color.white);
lAlbum = new JLabel();
lAlbum.setFont(new Font("Arial", Font.ITALIC, 20));
lAlbum.setForeground(Color.white);
jpTags.add(lInterpret, BorderLayout.NORTH);
jpTags.add(lTitle, BorderLayout.CENTER);
jpTags.add(lAlbum, BorderLayout.SOUTH);
jpTags.setBackground(bgColor);
jpTags.setForeground(Color.white);
jpCurrent.add(jpTags, BorderLayout.NORTH);
jpCurrent.add(imAmp, BorderLayout.CENTER);
this.add(jpCurrent, BorderLayout.WEST);
//Playerbuttons - Add
jpPlayerButtons.add(btPlay);
jpPlayerButtons.add(btStop);
jpPlayerButtons.add(btBefore);
jpPlayerButtons.add(btNext);
jpPlayerButtons.add(tbRepeat);
jpPlayerButtons.setBackground(bgColor);
JPanel southPanel = new JPanel(new GridLayout(3, 2));
southPanel.add(slPosition, BorderLayout.SOUTH);
slPosition.setBackground(bgColor);
slVolume.setBackground(bgColor);
southPanel.add(slVolume, BorderLayout.WEST);
southPanel.add(jpPlayerButtons, BorderLayout.SOUTH);
this.add(southPanel, BorderLayout.SOUTH);
//Playlistbuttons - Add
jpPlaylistButtons.add(btAdd);
jpPlaylistButtons.add(btRemove);
jpPlaylistButtons.add(btUp);
jpPlaylistButtons.add(btDown);
jpPlaylistButtons.add(btLike);
jpPlaylistButtons.setBackground(bgColor);
Color liColor = new Color(20,25,65);
JScrollPane jpScroll = new JScrollPane(liPlaylist);
jpScroll.setBackground(liColor);
jpScroll.setBorder(new MatteBorder(5, 5, 5, 5, liColor));
jpPlaylist.add(jpScroll, BorderLayout.CENTER);
//jpPlaylist.setBackground(new Color(20,25,65));
liPlaylist.setBackground(new Color(20,25,65));
//liPlaylist.setBorder(new MatteBorder(5, 5, 5, 5, new Color(20,25,65)));