MP3TagEditorPanel.java
| Index Score | ||
|---|---|---|
![]() |
![]() |
org.xnap.plugin.viewer.mp3tageditor |
![]() |
![]() |
XNap 3 |
View: Reasons, Metrics, Source Code
These are the metrics that contribute to the Enerjy Score for this file, ranked by impact. So the metrics listed at the top influence the score to a greater extent that the metrics listed at the bottom.
/*
* XNap - A P2P framework and client.
*
* See the file AUTHORS for copyright information.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
package org.xnap.plugin.viewer.mp3tageditor;
import helliker.id3.MP3File;
import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.GridBagLayout;
import java.awt.event.ActionEvent;
import java.io.File;
import java.util.StringTokenizer;
import javax.swing.AbstractAction;
import javax.swing.Action;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import org.xnap.XNap;
import org.xnap.gui.StatusBar;
import org.xnap.gui.util.GUIHelper;
import org.xnap.gui.util.GridBagHelper;
import org.xnap.util.FileHelper;
import org.xnap.util.Formatter;
public class MP3TagEditorPanel extends JPanel
{
//--- Constant(s) ---
//--- Data field(s) ---
// private JLabel jlInfo = new JLabel();
private JLabel jlName = new JLabel();
private JLabel jlLength = new JLabel();
private JLabel jlBitrate = new JLabel();
private JLabel jlSampleRate = new JLabel();
private JTextField jtTitle;
private JTextField jtArtist;
private JTextField jtAlbum;
private JTextField jtYear;
private JTextField jtComment;
private GuessAction acGuessAction = new GuessAction();
private SaveAction acSaveAction = new SaveAction();
private ResetAction acResetAction = new ResetAction();
private File currentFile;
//--- Constructor(s) ---
public MP3TagEditorPanel()
{
JPanel jpTag = new JPanel(new GridBagLayout());
jpTag.setBorder(GUIHelper.createDefaultBorder(XNap.tr("ID3 Tag")));
GridBagHelper.addLabel(jpTag, XNap.tr("Filename"));
GridBagHelper.add(jpTag, jlName);
GridBagHelper.addLabel(jpTag, XNap.tr("Length"));
GridBagHelper.add(jpTag, jlLength);
GridBagHelper.addLabel(jpTag, XNap.tr("Bitrate"));
GridBagHelper.add(jpTag, jlBitrate);
GridBagHelper.addLabel(jpTag, XNap.tr("Sample Rate"));
GridBagHelper.add(jpTag, jlSampleRate);
GridBagHelper.addLabel(jpTag, XNap.tr("Title"));
jtTitle = new JTextField();
GridBagHelper.add(jpTag, jtTitle);
GridBagHelper.addLabel(jpTag, XNap.tr("Artist"));
jtArtist = new JTextField();
GridBagHelper.add(jpTag, jtArtist);
GridBagHelper.addLabel(jpTag, XNap.tr("Album"));
jtAlbum = new JTextField();
GridBagHelper.add(jpTag, jtAlbum);
GridBagHelper.addLabel(jpTag, XNap.tr("Year"));
jtYear = new JTextField();
GridBagHelper.add(jpTag, jtYear);
GridBagHelper.addLabel(jpTag, XNap.tr("Comment"));
jtComment = new JTextField();
GridBagHelper.add(jpTag, jtComment);
// GridBagHelper.addLabel(jpTag, "");
// GridBagHelper.add(jpTag, jlInfo);
JPanel jbButtons = new JPanel();
jbButtons.setLayout(new FlowLayout(FlowLayout.RIGHT));
JButton jbGuess = new JButton(acGuessAction);
jbButtons.add(jbGuess);
JButton jbSave = new JButton(acSaveAction);
jbButtons.add(jbSave);
JButton jbReset = new JButton(acResetAction);
jbButtons.add(jbReset);
setLayout(new BorderLayout());
add(jpTag, BorderLayout.CENTER);
add(jbButtons, BorderLayout.SOUTH);
}
//--- Method(s) ---
public void clear()
{
// jlInfo.setText("");
jlName.setText("");
jlLength.setText("");
jlBitrate.setText("");
jlSampleRate.setText("");
jtTitle.setText("");
jtAlbum.setText("");
jtArtist.setText("");
jtYear.setText("");
jtComment.setText("");
}
public void display(File f)
{
clear();
currentFile = f;
try {
MP3File m = new MP3File(f);
// StringBuffer sb = new StringBuffer();
// sb.append("<html><table>");
// sb.append(GUIHelper.tableRow(XNap.tr("Filename"), f.getName()));
// sb.append(GUIHelper.tableRow
// (XNap.tr("Length"),
// Formatter.formatLength(m.getPlayingTime())));
// sb.append(GUIHelper.tableRow(XNap.tr("Bitrate"),
// m.getBitRate() + ""));
// sb.append(GUIHelper.tableRow(XNap.tr("Sample Rate"),
// m.getSampleRate() + ""));
// sb.append("</html></table>");
// jlInfo.setText(sb.toString());
jlName.setText(f.getName());
jlLength.setText(Formatter.formatLength(m.getPlayingTime()));
jlBitrate.setText(m.getBitRate() + "");
jlSampleRate.setText(m.getSampleRate() + "");
jtAlbum.setText(m.getAlbum());
jtArtist.setText(m.getArtist());
jtTitle.setText(m.getTitle());
jtYear.setText(m.getYear());
jtComment.setText(m.getComment());
setEnabled(f.canWrite());
}
catch (Exception e) {
setEnabled(false);
StatusBar.setText(XNap.tr("Could not read Id Tag")
+ " (" + e.getLocalizedMessage() + ")");
}
}
/**
* Writes id3 tags to file.
*/
protected void save()
{
try {
MP3File m = new MP3File(currentFile);
m.setTitle(jtTitle.getText());
m.setArtist(jtArtist.getText());
m.setAlbum(jtAlbum.getText());
m.setYear(jtYear.getText());
m.setComment(jtComment.getText());
m.writeTags();
StatusBar.setText(XNap.tr("Changes successfully saved."));
}
catch (Exception e) {
StatusBar.setText(XNap.tr("Could not write ID Tags to file"));
}
}
/**
* Enables or disables all controls.
*/
public void setEnabled(boolean enabled)
{
super.setEnabled(enabled);
acGuessAction.setEnabled(enabled);
acSaveAction.setEnabled(enabled);
acResetAction.setEnabled(enabled);
jtTitle.setEnabled(enabled);
jtArtist.setEnabled(enabled);
jtAlbum.setEnabled(enabled);
jtYear.setEnabled(enabled);
jtComment.setEnabled(enabled);
}
private class GuessAction extends AbstractAction
{
public GuessAction()
{
putValue(Action.NAME, XNap.tr("Guess"));
putValue(Action.SHORT_DESCRIPTION,
XNap.tr("Guess Id Tags from filename"));
putValue(Action.MNEMONIC_KEY, new Integer('G'));
this.setEnabled(false);
}
public void actionPerformed(ActionEvent event)
{
String name = FileHelper.name(currentFile.getName());
StringTokenizer st = new StringTokenizer(name, "-");
/* probably it's just the title */
if (st.countTokens() == 1) {
jtTitle.setText(st.nextToken().trim());
}
/* artist and title */
else if (st.countTokens() == 2) {
jtArtist.setText(st.nextToken().trim());
jtTitle.setText(st.nextToken().trim());
}
/* artist, album and title */
else if (st.countTokens() == 3) {
jtArtist.setText(st.nextToken().trim());
jtAlbum.setText(st.nextToken().trim());
jtTitle.setText(st.nextToken().trim());
}
}
}
protected class ResetAction extends AbstractAction
{
public ResetAction()
{
putValue(Action.NAME, XNap.tr("Reset"));
putValue(Action.SHORT_DESCRIPTION,
XNap.tr("Resets not yet saved Id Tag changes."));
putValue(Action.MNEMONIC_KEY, new Integer('R'));
this.setEnabled(false);
}
public void actionPerformed(ActionEvent event)
{
display(currentFile);
}
}
protected class SaveAction extends AbstractAction
{
public SaveAction()
{
putValue(Action.NAME, XNap.tr("Save"));
putValue(Action.SHORT_DESCRIPTION, XNap.tr("Saves new Id Tags"));
putValue(Action.MNEMONIC_KEY, new Integer('A'));
this.setEnabled(false);
}
public void actionPerformed(ActionEvent event)
{
save();
}
}
}
The table below shows all metrics for MP3TagEditorPanel.java.




