/*
* Player.java
*
* Created on __DATE__, __TIME__
*/
package hz;
import java.awt.Image;
import java.awt.MenuItem;
import java.awt.PopupMenu;
import java.awt.SystemTray;
import java.awt.Toolkit;
import java.awt.TrayIcon;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.File;
import java.util.HashMap;
import java.util.Map;
import java.util.Vector;
import javax.sound.sampled.AudioFileFormat;
import javax.sound.sampled.AudioFormat;
import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.DataLine;
import javax.sound.sampled.FloatControl;
import javax.sound.sampled.SourceDataLine;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPopupMenu;
import javax.swing.LookAndFeel;
import javax.swing.UIManager;
import org.jvnet.substance.skin.SubstanceAutumnLookAndFeel;
import org.jvnet.substance.skin.SubstanceBusinessLookAndFeel;
import org.jvnet.substance.skin.SubstanceChallengerDeepLookAndFeel;
import org.jvnet.substance.skin.SubstanceCremeCoffeeLookAndFeel;
import org.jvnet.substance.skin.SubstanceFieldOfWheatLookAndFeel;
import org.jvnet.substance.skin.SubstanceSaharaLookAndFeel;
public class Player extends javax.swing.JFrame {
static long time;
JMenuItem m1 = new JMenuItem("Delete");// 右击菜单项
JMenuItem m2 = new JMenuItem("DeleteAll");// 右击菜单项
// 托盘菜单项
private MenuItem m3 = new MenuItem("Previous");
private MenuItem m4 = new MenuItem("Next");
private MenuItem m5 = new MenuItem("Stop |");
private MenuItem m6 = new MenuItem("Exit");
private MenuItem m7 = new MenuItem("Start >");
private Position curPosition;
private HashMap map;
private Vector nameVector, urlVector, sizeVector;
private int index = 0;
private SoundThread sound;
private String url = "c:/";
private String title;// 歌曲名
private static int skin = 6;
private JPopupMenu menu = new JPopupMenu();// 右击菜单
private PopupMenu timenu = new PopupMenu();// 托盘菜单
private static Player p;
private Slidermanager s;// 滑杆类
private TrayIcon ti;// 托盘
private SystemTray st;
private LRCFrame lrc = null;
private ReadRLC rlc = null;// 读歌词
public static String lrcurl;//用户自定义歌词路径
enum Position {
LEFT, RIGHT, NORMSL
}
private final int EXTERANAL_BUFFER_SIZE = 524288;
public Player() {
initComponents();
this.setResizable(false);
setLocationRelativeTo(null);
setPupmenu();
loadList();
jList1.addMouseListener(mouseListener);
setTrayIcon();
setUI(skin);
/**
* 关闭窗口操作
* */
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
if (lrc != null) {
lrc.dispose();
jCheckBox1.setSelected(false);
}
}
public void windowIconified(WindowEvent e) {
if (lrc != null) {
lrc.dispose();
jCheckBox1.setSelected(false);
}
}
});
}
public void exit() {
try {
if (map == null) {
map = new HashMap();
}
map.put("name", nameVector);
map.put("url", urlVector);
map.put("size", sizeVector);
map.put("index", index);
map.put("skin", skin);
map.put("lrcurl", lrcurl);
PlayList.inPut(map);
} catch (Exception ee) {
ee.printStackTrace();
}
System.exit(0);
}
public void setPupmenu() {// 设置弹出菜单
m1.addActionListener(new Pupup());
m2.addActionListener(new Pupup());
m3.addActionListener(new Pupup());
m4.addActionListener(new Pupup());
m5.addActionListener(new Pupup());
m6.addActionListener(new Pupup());
m7.addActionListener(new Pupup());
menu.add(m1);
menu.add(m2);
timenu.add(m3);
timenu.add(m4);
timenu.add(m5);
timenu.add(m7);
timenu.add(m6);
}
private void createPlayer() {// 创建播放器
stop();
sound = new SoundThread();
sound.start();
}
private void stop() {// //////停止播放
if (sound != null) {
sound.stop();
s.stop();
rlc.stop();
}
}
private void loadList() {// 载入播放列表
map = PlayList.open();
if (map == null) {
nameVector = new Vector();// 播放文件名字
urlVector = new Vector();// 播放文件路径
sizeVector = new Vector();// 播放文件大小
} else {
nameVector = (Vector) map.get("name");
sizeVector = (Vector) map.get("size");
urlVector = (Vector) map.get("url");
index = (Integer) map.get("index");
skin = (Integer) map.get("skin");
lrcurl = (String) map.get("lrcurl");
jList1.setListData(nameVector);
jList1.validate();
jList1.setSelectedIndex(index);
createPlayer();
}
}
private void setTrayIcon() {
try {
if (SystemTray.isSupported()) {
st = SystemTray.getSystemTray();
Image im = Toolkit.getDefaultToolkit().getImage(("./good.gif"));
setIconImage(im);
ti = new TrayIcon(im);
ti.addActionListener(new Pupup());
ti.setPopupMenu(timenu);
st.add(ti);
}
} catch (Exception e) {
e.printStackTrace();
}
}
private void setUI(int skin) {// 设置外观
switch (skin) {
case 1:
loadskin1();
jRadioButtonMenuItem4.setSelected(true);
break;
case 2:
loadskin2();
jRadioButtonMenuItem5.setSelected(true);
break;
case 3:
loadskin3();
jRadioButtonMenuItem6.setSelected(true);
break;
case 4:
loadskin4();
jRadioButtonMenuItem7.setSelected(true);
break;
case 5:
loadskin5();
jRadioButtonMenuItem8.setSelected(true);
break;
case 6:
loadskin6();
jRadioButtonMenuItem9.setSelected(true);
break;
}
}
MouseListener mouseListener = new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
if (e.getClickCount() == 2) {
if (jRadioButtonMenuItem2.isSelected()) {
index = jList1.getSelectedIndex() - 1;
} else {
index = jList1.getSelectedIndex();
}
if (index == -1) {
index = 0;
jLabel1.setText(nameVector.elementAt(index).toString());
index = -1;
createPlayer();
return;
}
jLabel1.setText(nameVector.elementAt(index).toString());
createPlayer();
}
if (e.getButton() == MouseEvent.BUTTON3) {
menu.show(jList1, e.getX(), e.getY());
}
}
};
//GEN-BEGIN:initComponents
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
buttonGroup1 = new javax.swing.ButtonGroup();
buttonGroup2 = new javax.swing.ButtonGroup();
jPanel1 = new javax.swing.JPanel();
jLabel1 = new javax.swing.JLabel();
jButton1 = new javax.swing.JButton();
jButton2 = new javax.swing.JButton();
jToggleButton1 = new javax.swing.JToggleButton();
jSlider1 = new javax.swing.JSlider();
jToggleButton2 = new javax.swing.JToggleButton();
jCheckBox1 = new javax.swing.JCheckBox();
jPanel2 = new javax.swing.JPanel();
jToolBar1 = new javax.swing.JToolBar();
jScrollPane1 = new javax.swing.JScrollPane();
jList1 = new javax.swing.JList();
jMenuBar1 = new javax.swing.JMenuBar();
jMenu1 = new javax.swing.JMenu();
jMenuItem1 = new javax.swing.JMenuItem();
jMenuItem2 = new javax.swing.JMenuItem();
jMenuItem3 = new javax.swing.JMenuItem();
jMenu2 = new javax.swing.JMenu();
jRadioButtonMenuItem1 = new javax.swing.JRadioButtonMenuItem();
jRadioButtonMenuItem2 = new javax.swing.JRadioButtonMenuItem();
jRadioButtonMenuItem3 = new jav