📄 playerui.java
字号:
miPlayLocation.addActionListener(this);
playSubMenu.add(miPlayFile);
playSubMenu.add(miPlayLocation);
mainpopup.add(playSubMenu);
mainpopup.addSeparator();
miPlaylist = new JCheckBoxMenuItem(ui.getResource("popup.playlist"));
miPlaylist.setActionCommand(PlayerActionEvent.MIPLAYLIST);
if (config.isPlaylistEnabled()) miPlaylist.setState(true);
miPlaylist.removeActionListener(this);
miPlaylist.addActionListener(this);
mainpopup.add(miPlaylist);
miEqualizer = new JCheckBoxMenuItem(ui.getResource("popup.equalizer"));
miEqualizer.setActionCommand(PlayerActionEvent.MIEQUALIZER);
if (config.isEqualizerEnabled()) miEqualizer.setState(true);
miEqualizer.removeActionListener(this);
miEqualizer.addActionListener(this);
mainpopup.add(miEqualizer);
mainpopup.addSeparator();
mi = new JMenuItem(ui.getResource("popup.preferences"));
mi.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_P, ActionEvent.CTRL_MASK, false));
mi.setActionCommand(PlayerActionEvent.MIPREFERENCES);
mi.removeActionListener(this);
mi.addActionListener(this);
mainpopup.add(mi);
JMenu skinsSubMenu = new JMenu(ui.getResource("popup.skins"));
mi = new JMenuItem(ui.getResource("popup.skins.browser"));
mi.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S, ActionEvent.ALT_MASK, false));
mi.setActionCommand(PlayerActionEvent.MISKINBROWSER);
mi.removeActionListener(this);
mi.addActionListener(this);
skinsSubMenu.add(mi);
mi = new JMenuItem(ui.getResource("popup.skins.load"));
mi.setActionCommand(PlayerActionEvent.MILOADSKIN);
mi.removeActionListener(this);
mi.addActionListener(this);
skinsSubMenu.add(mi);
mainpopup.add(skinsSubMenu);
JMenu playbackSubMenu = new JMenu(ui.getResource("popup.playback"));
mi = new JMenuItem(ui.getResource("popup.playback.jump"));
mi.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_J, 0, false));
mi.setActionCommand(PlayerActionEvent.MIJUMPFILE);
mi.removeActionListener(this);
mi.addActionListener(this);
playbackSubMenu.add(mi);
mi = new JMenuItem(ui.getResource("popup.playback.stop"));
mi.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V, 0, false));
mi.setActionCommand(PlayerActionEvent.MISTOP);
mi.removeActionListener(this);
mi.addActionListener(this);
playbackSubMenu.add(mi);
mainpopup.add(playbackSubMenu);
mainpopup.addSeparator();
mi = new JMenuItem(ui.getResource("popup.exit"));
mi.setActionCommand(PlayerActionEvent.ACEXIT);
mi.removeActionListener(this);
mi.addActionListener(this);
mainpopup.add(mi);
// Popup menu on TitleBar
ui.getAcTitleBar().removeMouseListener(popupAdapter);
popupAdapter = new PopupAdapter(mainpopup);
ui.getAcTitleBar().addMouseListener(popupAdapter);
// Popup menu on Eject button
ejectpopup = new JPopupMenu();
mi = new JMenuItem(ui.getResource("popup.eject.openfile"));
mi.setActionCommand(PlayerActionEvent.MIPLAYFILE);
mi.removeActionListener(this);
mi.addActionListener(this);
ejectpopup.add(mi);
mi = new JMenuItem(ui.getResource("popup.eject.openlocation"));
mi.setActionCommand(PlayerActionEvent.MIPLAYLOCATION);
mi.removeActionListener(this);
mi.addActionListener(this);
ejectpopup.add(mi);
ui.getAcEject().removeMouseListener(ejectpopupAdapter);
ejectpopupAdapter = new PopupAdapter(ejectpopup);
ui.getAcEject().addMouseListener(ejectpopupAdapter);
// EqualizerUI
if (equalizerUI != null) equalizerUI.loadUI();
if (playlistUI != null) playlistUI.loadUI();
validate();
loader.loaded();
}
/**
* Load playlist.
* @param playlistName
* @return
*/
public boolean loadPlaylist(String playlistName)
{
boolean loaded = false;
PlaylistFactory plf = PlaylistFactory.getInstance();
playlist = plf.getPlaylist();
if (playlist == null)
{
config.setPlaylistClassName("javazoom.jlgui.player.amp.playlist.BasePlaylist");
playlist = plf.getPlaylist();
}
playlistUI.setPlaylist(playlist);
if ((playlistName != null) && (!playlistName.equals("")))
{
// M3U file or URL.
if ((playlistName.toLowerCase().endsWith(ui.getResource("playlist.extension.m3u"))) || (playlistName.toLowerCase().endsWith(ui.getResource("playlist.extension.pls")))) loaded = playlist.load(playlistName);
// Simple song.
else
{
String name = playlistName;
if (!Config.startWithProtocol(playlistName))
{
int indn = playlistName.lastIndexOf(java.io.File.separatorChar);
if (indn != -1) name = playlistName.substring(indn + 1);
PlaylistItem pli = new PlaylistItem(name, playlistName, -1, true);
playlist.appendItem(pli);
loaded = true;
}
else
{
PlaylistItem pli = new PlaylistItem(name, playlistName, -1, false);
playlist.appendItem(pli);
loaded = true;
}
}
}
return loaded;
}
/* (non-Javadoc)
* @see javax.swing.event.ChangeListener#stateChanged(javax.swing.event.ChangeEvent)
*/
public void stateChanged(ChangeEvent e)
{
Object src = e.getSource();
//log.debug("State (EDT=" + SwingUtilities.isEventDispatchThread() + ")");
// Volume
if (src == ui.getAcVolume())
{
Object[] args = { String.valueOf(ui.getAcVolume().getValue()) };
String volumeText = MessageFormat.format(ui.getResource("slider.volume.text"), args);
ui.getAcTitleLabel().setAcText(volumeText);
try
{
int gainValue = ui.getAcVolume().getValue();
int maxGain = ui.getAcVolume().getMaximum();
if (gainValue == 0) theSoundPlayer.setGain(0);
else theSoundPlayer.setGain(((double) gainValue / (double) maxGain));
config.setVolume(gainValue);
}
catch (BasicPlayerException ex)
{
log.debug("Cannot set gain", ex);
}
}
// Balance
else if (src == ui.getAcBalance())
{
Object[] args = { String.valueOf(Math.abs(ui.getAcBalance().getValue() * 100 / Skin.BALANCEMAX)) };
String balanceText = null;
if (ui.getAcBalance().getValue() > 0)
{
balanceText = MessageFormat.format(ui.getResource("slider.balance.text.right"), args);
}
else if (ui.getAcBalance().getValue() < 0)
{
balanceText = MessageFormat.format(ui.getResource("slider.balance.text.left"), args);
}
else
{
balanceText = MessageFormat.format(ui.getResource("slider.balance.text.center"), args);
}
ui.getAcTitleLabel().setAcText(balanceText);
try
{
float balanceValue = ui.getAcBalance().getValue() * 1.0f / Skin.BALANCEMAX;
theSoundPlayer.setPan(balanceValue);
}
catch (BasicPlayerException ex)
{
log.debug("Cannot set pan", ex);
}
}
else if (src == ui.getAcPosBar())
{
if (ui.getAcPosBar().getValueIsAdjusting() == false)
{
if (posDragging == true)
{
posDragging = false;
posValue = ui.getAcPosBar().getValue() * 1.0 / Skin.POSBARMAX;
processSeek(posValue);
}
}
else
{
posDragging = true;
posValueJump = true;
}
}
}
/* (non-Javadoc)
* @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
*/
public void actionPerformed(ActionEvent e)
{
final ActionEvent evt = e;
if (e.getActionCommand().equals(PlayerActionEvent.ACPAUSE))
{
processActionEvent(e);
}
else if ((e.getActionCommand().equals(PlayerActionEvent.ACPLAY)) && (playerState == PAUSE))
{
processActionEvent(e);
}
else
{
new Thread("PlayerUIActionEvent")
{
public void run()
{
processActionEvent(evt);
}
}.start();
}
}
/**
* Process action event.
* @param e
*/
public void processActionEvent(ActionEvent e)
{
String cmd = e.getActionCommand();
log.debug("Action=" + cmd + " (EDT=" + SwingUtilities.isEventDispatchThread() + ")");
// Preferences.
if (cmd.equalsIgnoreCase(PlayerActionEvent.MIPREFERENCES))
{
processPreferences(e.getModifiers());
}
// Skin browser
else if (cmd.equals(PlayerActionEvent.MISKINBROWSER))
{
processSkinBrowser(e.getModifiers());
}
// Jump to file
else if (cmd.equals(PlayerActionEvent.MIJUMPFILE))
{
processJumpToFile(e.getModifiers());
}
// Stop
else if (cmd.equals(PlayerActionEvent.MISTOP))
{
processStop(MouseEvent.BUTTON1_MASK);
}
// Load skin
else if (e.getActionCommand().equals(PlayerActionEvent.MILOADSKIN))
{
File[] file = FileSelector.selectFile(loader, FileSelector.OPEN, false, ui.getResource("skin.extension"), ui.getResource("loadskin.dialog.filtername"), new File(config.getLastDir()));
if (FileSelector.getInstance().getDirectory() != null) config.setLastDir(FileSelector.getInstance().getDirectory().getPath());
if (file != null)
{
String fsFile = file[0].getName();
ui.setPath(config.getLastDir() + fsFile);
loadSkin();
config.setDefaultSkin(ui.getPath());
}
}
// Shuffle
else if (cmd.equals(PlayerActionEvent.ACSHUFFLE))
{
if (ui.getAcShuffle().isSelected())
{
config.setShuffleEnabled(true);
if (playlist != null)
{
playlist.shuffle();
playlistUI.initPlayList();
// Play from the top
PlaylistItem pli = playlist.getCursor();
setCurrentSong(pli);
}
}
else
{
config.setShuffleEnabled(false);
}
}
// Repeat
else if (cmd.equals(PlayerActionEvent.ACREPEAT))
{
if (ui.getAcRepeat().isSelected())
{
config.setRepeatEnabled(true);
}
else
{
config.setRepeatEnabled(false);
}
}
// Play file
else if (cmd.equals(PlayerActionEvent.MIPLAYFILE))
{
processEject(MouseEvent.BUTTON1_MASK);
}
// Play URL
else if (cmd.equals(PlayerActionEvent.MIPLAYLOCATION))
{
processEject(MouseEvent.BUTTON3_MASK);
}
// Playlist menu item
else if (cmd.equals(PlayerActionEvent.MIPLAYLIST))
{
ui.getAcPlaylist().setSelected(miPlaylist.getState());
togglePlaylist();
}
// Playlist toggle button
else if (cmd.equals(PlayerActionEvent.ACPLAYLIST))
{
togglePlaylist();
}
// EqualizerUI menu item
else if (cmd.equals(PlayerActionEvent.MIEQUALIZER))
{
ui.getAcEqualizer().setSelected(miEqualizer.getState());
toggleEqualizer();
}
// EqualizerUI
else if (cmd.equals(PlayerActionEvent.ACEQUALIZER))
{
toggleEqualizer();
}
// Exit player
else if (cmd.equals(PlayerActionEvent.ACEXIT))
{
closePlayer();
}
// Minimize
else if (cmd.equals(PlayerActionEvent.ACMINIMIZE))
{
loader.minimize();
}
// Eject
else if (cmd.equals(PlayerActionEvent.ACEJECT))
{
processEject(e.getModifiers());
}
// Play
else if (cmd.equals(PlayerActionEvent.ACPLAY))
{
processPlay(e.getModifiers());
}
// Pause
else if (cmd.equals(PlayerActionEvent.ACPAUSE))
{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -