package view.subview.id3; import java.awt.event.ActionListener; import java.awt.event.FocusListener; import java.awt.image.BufferedImage; import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.InputStream; import javax.imageio.ImageIO; import javax.swing.BorderFactory; import javax.swing.DefaultComboBoxModel; import javax.swing.JButton; import javax.swing.JComboBox; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JRadioButton; import javax.swing.JScrollPane; import javax.swing.JTabbedPane; import javax.swing.JTextArea; import javax.swing.JTextField; import javax.swing.border.BevelBorder; import javax.swing.event.ChangeListener; import view.structure.ImagePanel; import model.audio.interfaces.IAudioFile; import model.structure.ID3TagData; import model.util.FileUtil; import model.util.Graphics; import model.util.Util; import net.miginfocom.swing.MigLayout; import com.cf.mls.MLS; import config.Constants; public class ID3RightPanel extends JPanel { /** * */ private static final long serialVersionUID = -7604574750879411829L; /** * the multi language supporter */ private MLS mls; private JPanel audioFileDataP; private JPanel id3TagOptP; private JPanel id3TagBorderP; private JPanel fileOptP; private JLabel cdJL; private JLabel audioFileNameJL; private JLabel audioFileCurrentNameJL; private JLabel frequenceJL; private JLabel layerJL; private JLabel currDimension; private JLabel commentJL; private JLabel lengthJL; private JLabel urlJL; private JLabel dimensionJL; private JLabel currBitrateJL; private JLabel composerJL; private JLabel genreJL; private JLabel publisherJL; private JLabel copyrightJL; private JLabel albumArtistJL; private JLabel origArtistJL; private JLabel modeJL; private JLabel currModeJL; private JLabel currLengthJL; private JLabel titleJL; private JLabel albumJL; private JLabel currSizeJL; private JLabel imageJL; private JLabel sizeJL; private JLabel artistJL; private JLabel encodedByJL; private JLabel trackJL; private JLabel currFrequenceJL; private JLabel bitrateJL; private JLabel yearJL; private JLabel extJL; private JLabel currExtJL; private JLabel imageSizeJL; private JLabel currImageSizeJL; private JLabel lyricsJL; private JRadioButton urlRB; private JRadioButton maxTracksRB; private JRadioButton copyrightRB; private JRadioButton encodedByRB; private JRadioButton composerRB; private JRadioButton publisherRB; private JRadioButton commentRB; private JRadioButton albumRB; private JRadioButton albumArtistRB; private JRadioButton genreRB; private JRadioButton titleRB; private JRadioButton artistRB; private JRadioButton origArtistRB; private JRadioButton lyricsRB; private JRadioButton imageAllRB; private JRadioButton trackRB; private JRadioButton yearRB; private JRadioButton cdRB; private JRadioButton maxCDRB; private ImagePanel imageIP; private JButton fieldReplacerB; private JButton searchOnlineB; private JButton generateByNameB; private JButton ImageSettingsB; private JButton addImageB; private JButton deleteTagB; private JButton undoB; private JButton loadLyricsB; private JButton saveLyricsB; private JButton deleteLyricsB; private JButton searchLyricsB; private JButton searchImageB; private JButton saveImageB; private JButton playAudioB; private JButton deleteFileHDDB; private JComboBox<String> genreCB; private JTextArea lyricsTA; private JTabbedPane tabbedPane; private JTextField urlTF; private JTextField albumArtistTF; private JTextField maxTracksTF; private JTextField copyrightTF; private JTextField composerTF; private JTextField albumTF; private JTextField publisherTF; private JTextField commentTF; private JTextField yearTF; private JTextField titleTF; private JTextField origArtistTF; private JTextField encodedByTF; private JTextField artistTF; private JTextField maxCDTF; private JTextField trackTF; private JTextField cdTF; /** * Constructor * * @param mls * the given MLS */ public ID3RightPanel(MLS mls) { this.mls = mls; } /** * inits the panel */ public void init() { audioFileDataP = mls.generateTitledBevelPanel("mp3dataP", BevelBorder.LOWERED, true); id3TagOptP = mls.generateTitledBevelPanel("id3TagOptP", BevelBorder.LOWERED, true); id3TagBorderP = mls.generateTitledBevelPanel("id3TagBorderP", BevelBorder.LOWERED, true); fileOptP = mls.generateTitledBevelPanel("fileOptP", BevelBorder.LOWERED, true); imageIP = new ImagePanel(null); mls.addCustomJPanel(imageIP, "imageIP"); cdJL = mls.generateJLabel("cdJL", true); audioFileNameJL = mls.generateJLabel("mp3NameJL", true); audioFileCurrentNameJL = mls.generateJLabel("mp3CurrentNameJL", true); frequenceJL = mls.generateJLabel("frequenceJL", true); layerJL = mls.generateJLabel("layerJL", true); currDimension = mls.generateJLabel("currDimension", true); commentJL = mls.generateJLabel("commentJL", true); lengthJL = mls.generateJLabel("lengthJL", true); urlJL = mls.generateJLabel("urlJL", true); dimensionJL = mls.generateJLabel("dimensionJL", true); currBitrateJL = mls.generateJLabel("currBitrateJL", true); composerJL = mls.generateJLabel("composerJL", true); genreJL = mls.generateJLabel("genreJL", true); copyrightJL = mls.generateJLabel("copyrightJL", true); albumArtistJL = mls.generateJLabel("albumArtistJL", true); origArtistJL = mls.generateJLabel("origArtistJL", true); publisherJL = mls.generateJLabel("publisherJL", true); modeJL = mls.generateJLabel("modeJL", true); currModeJL = mls.generateJLabel("currModeJL", true); currLengthJL = mls.generateJLabel("currLengthJL", true); titleJL = mls.generateJLabel("titleJL", true); albumJL = mls.generateJLabel("albumJL", true); currSizeJL = mls.generateJLabel("currSizeJL", true); imageJL = mls.generateJLabel("imageJL", true); sizeJL = mls.generateJLabel("sizeJL", true); artistJL = mls.generateJLabel("artistJL", true); encodedByJL = mls.generateJLabel("encodedByJL", true); trackJL = mls.generateJLabel("trackJL", true); currFrequenceJL = mls.generateJLabel("currFrequenceJL", true); bitrateJL = mls.generateJLabel("bitrateJL", true); yearJL = mls.generateJLabel("yearJL", true); lyricsJL = mls.generateJLabel("lyricsJL", true); extJL = mls.generateJLabel("extJL", true); currExtJL = mls.generateJLabel("currExtJL", true); imageSizeJL = mls.generateJLabel("imageSizeJL", true); currImageSizeJL = mls.generateJLabel("currImageSizeJL", true); lyricsTA = mls.generateJTextArea("lyricsTA", true, true, 10, 10, ""); urlRB = mls.generateJRadioButton("urlRB", true, null); maxTracksRB = mls.generateJRadioButton("maxTracksRB", true, null); copyrightRB = mls.generateJRadioButton("copyrightRB", true, null); encodedByRB = mls.generateJRadioButton("encodedByRB", true, null); composerRB = mls.generateJRadioButton("composerRB", true, null); commentRB = mls.generateJRadioButton("commentRB", true, null); albumRB = mls.generateJRadioButton("albumRB", true, null); albumArtistRB = mls.generateJRadioButton("albumArtistRB", true, null); genreRB = mls.generateJRadioButton("genreRB", true, null); titleRB = mls.generateJRadioButton("titleRB", true, null); artistRB = mls.generateJRadioButton("artistRB", true, null); origArtistRB = mls.generateJRadioButton("origArtistRB", true, null); lyricsRB = mls.generateJRadioButton("lyricsRB", true, null); imageAllRB = mls.generateJRadioButton("imageAllRB", true, null); trackRB = mls.generateJRadioButton("trackRB", true, null); yearRB = mls.generateJRadioButton("yearRB", true, null); cdRB = mls.generateJRadioButton("cdRB", true, null); maxCDRB = mls.generateJRadioButton("maxCDRB", true, null); publisherRB = mls.generateJRadioButton("publisherRB", true, null); publisherTF = mls.generateJTextField("publisherTF", true, true, 10, ""); urlTF = mls.generateJTextField("urlTF", true, true, 10, ""); albumArtistTF = mls.generateJTextField("albumArtistTF", true, true, 10, ""); maxTracksTF = mls.generateJTextField("maxTracksTF", true, true, 10, ""); copyrightTF = mls.generateJTextField("copyrightTF", true, true, 10, ""); composerTF = mls.generateJTextField("composerTF", true, true, 10, ""); albumTF = mls.generateJTextField("albumTF", true, true, 10, ""); commentTF = mls.generateJTextField("commentTF", true, true, 10, ""); yearTF = mls.generateJTextField("yearTF", true, true, 10, ""); titleTF = mls.generateJTextField("titleTF", true, true, 10, ""); origArtistTF = mls.generateJTextField("origArtistTF", true, true, 10, ""); encodedByTF = mls.generateJTextField("encodedByTF", true, true, 10, ""); artistTF = mls.generateJTextField("artistTF", true, true, 10, ""); maxCDTF = mls.generateJTextField("maxCDTF", true, true, 10, ""); trackTF = mls.generateJTextField("trackTF", true, true, 10, ""); cdTF = mls.generateJTextField("cdTF", true, true, 10, ""); fieldReplacerB = mls.generateJButton("fieldReplacerB", true, null); searchOnlineB = mls.generateJButton("searchOnlineB", true, null); generateByNameB = mls.generateJButton("generateByNameB", true, null); ImageSettingsB = mls.generateJButton("ImageSettingsB", true, null); addImageB = mls.generateJButton("addImageB", true, null); deleteTagB = mls.generateJButton("deleteTagB", true, null); undoB = mls.generateJButton("undoB", true, null); loadLyricsB = mls.generateJButton("loadLyricsB", true, null); saveLyricsB = mls.generateJButton("saveLyricsB", true, null); deleteLyricsB = mls.generateJButton("deleteLyricsB", true, null); searchLyricsB = mls.generateJButton("searchLyricsB", true, null); searchImageB = mls.generateJButton("searchImageB", true, null); saveImageB = mls.generateJButton("saveImageB", true, null); playAudioB = mls.generateJButton("playAudioB", true, null); deleteFileHDDB = mls.generateJButton("deleteFileHDDB", true, null); tabbedPane = mls.generateJTabbedPane("tabbedPane", true); genreCB = mls.generateJComboBox("genreCB", new String[] {}, -1, true, false); JScrollPane scrollPane3 = new JScrollPane(); setLayout(new MigLayout("insets 0", "[shrink]", "[shrink][shrink][shrink][shrink]")); // audio file data audioFileDataP.setLayout(new MigLayout("insets 5", "[shrink][shrink][shrink][shrink]", "[shrink][shrink][shrink][shrink]")); audioFileDataP.add(audioFileNameJL); audioFileDataP.add(audioFileCurrentNameJL, "wrap, gapleft 10, span 3"); audioFileDataP.add(layerJL, "span 2"); audioFileDataP.add(modeJL, "gapleft 30"); audioFileDataP.add(currModeJL, "wrap, gapleft 10"); audioFileDataP.add(bitrateJL); audioFileDataP.add(currBitrateJL, "gapleft 10"); audioFileDataP.add(frequenceJL, "gapleft 30"); audioFileDataP.add(currFrequenceJL, "wrap, gapleft 10"); audioFileDataP.add(sizeJL); audioFileDataP.add(currSizeJL, "gapleft 10"); audioFileDataP.add(lengthJL, "gapleft 30"); audioFileDataP.add(currLengthJL, "gapleft 10"); add(audioFileDataP, "grow, wrap"); // tabbed pane + border id3TagBorderP.setLayout(new MigLayout("insets 5", "[grow]", "[grow]")); // image Panel JPanel imageP = new JPanel(new MigLayout("insets 5", "[grow][shrink]", "[shrink][grow][shrink]")); imageIP.setBorder(BorderFactory.createBevelBorder(BevelBorder.LOWERED)); imageP.add(imageJL, "wrap"); imageP.add(imageIP, "grow"); imageP.add(imageAllRB, "wrap"); JPanel imageButtonP = new JPanel(new MigLayout("insets 0", "[shrink][shrink][shrink][shrink]", "[shrink]")); imageButtonP.add(addImageB); imageButtonP.add(saveImageB); imageButtonP.add(ImageSettingsB, "push"); JPanel extDimP = new JPanel(new MigLayout("insets 0")); extDimP.add(dimensionJL); extDimP.add(currDimension, "wrap"); extDimP.add(extJL); extDimP.add(currExtJL, "wrap"); extDimP.add(imageSizeJL); extDimP.add(currImageSizeJL); imageButtonP.add(extDimP); imageP.add(imageButtonP, "span 2, grow"); // id3 Panel JPanel id3P = new JPanel(new MigLayout("insets 5", "[shrink][grow][shrink]", "[shrink][shrink][shrink][shrink][shrink][shrink][shrink][shrink][shrink][shrink][shrink][shrink][shrink]")); id3P.add(titleJL); id3P.add(titleTF, "grow, gapleft 10"); id3P.add(titleRB, "wrap"); id3P.add(artistJL); id3P.add(artistTF, "grow, gapleft 10"); id3P.add(artistRB, "wrap"); id3P.add(albumArtistJL); id3P.add(albumArtistTF, "grow, gapleft 10"); id3P.add(albumArtistRB, "wrap"); id3P.add(albumJL); id3P.add(albumTF, "grow, gapleft 10"); id3P.add(albumRB, "wrap"); JPanel yearTrackP = new JPanel(new MigLayout("insets 0", "[shrink][shrink][shrink][shrink][shrink][shrink][shrink][shrink][shrink][shrink]", "[shrink][shrink]")); yearTrackP.add(yearJL); yearTrackP.add(yearTF, "grow, width :50:"); yearTrackP.add(yearRB); yearTrackP.add(trackJL); yearTrackP.add(trackTF, "grow, width :50:"); yearTrackP.add(trackRB); yearTrackP.add(new JLabel("/")); yearTrackP.add(maxTracksTF, "width :50:, grow, wrap"); yearTrackP.add(new JLabel()); yearTrackP.add(new JLabel()); yearTrackP.add(new JLabel()); yearTrackP.add(cdJL); yearTrackP.add(cdTF, "grow, width :50:"); yearTrackP.add(cdRB); yearTrackP.add(new JLabel("/")); yearTrackP.add(maxCDTF, "grow, width :50:"); id3P.add(yearTrackP, "span 2 2, grow"); id3P.add(maxTracksRB, "wrap"); id3P.add(maxCDRB, "wrap"); id3P.add(genreJL); id3P.add(genreCB, "grow, gapleft 10"); id3P.add(genreRB, "wrap"); id3P.add(commentJL); id3P.add(commentTF, "grow, gapleft 10"); id3P.add(commentRB, "wrap"); id3P.add(publisherJL); id3P.add(publisherTF, "grow, gapleft 10"); id3P.add(publisherRB, "wrap"); id3P.add(composerJL); id3P.add(composerTF, "grow, gapleft 10"); id3P.add(composerRB, "wrap"); id3P.add(origArtistJL); id3P.add(origArtistTF, "grow, gapleft 10"); id3P.add(origArtistRB, "wrap"); id3P.add(copyrightJL); id3P.add(copyrightTF, "grow, gapleft 10"); id3P.add(copyrightRB, "wrap"); id3P.add(urlJL); id3P.add(urlTF, "grow, gapleft 10"); id3P.add(urlRB, "wrap"); id3P.add(encodedByJL); id3P.add(encodedByTF, "grow, gapleft 10"); id3P.add(encodedByRB); // lyrics Panel JPanel lyricsP = new JPanel(new MigLayout("insets 5", "[grow][shrink]", "[shrink][grow][shrink]")); JPanel lyricsButtonP = new JPanel(new MigLayout("insets 0")); scrollPane3.setViewportView(lyricsTA); lyricsP.add(lyricsJL, "wrap, span 2"); lyricsP.add(scrollPane3, "grow"); lyricsP.add(lyricsRB, "wrap"); lyricsButtonP.add(loadLyricsB); lyricsButtonP.add(saveLyricsB); lyricsButtonP.add(deleteLyricsB); lyricsP.add(lyricsButtonP, "span 2"); mls.addTab(tabbedPane, id3P, "id3TagTab"); mls.addTab(tabbedPane, lyricsP, "lyricsTab"); mls.addTab(tabbedPane, imageP, "ImageTab"); id3TagBorderP.add(tabbedPane, "grow"); add(id3TagBorderP, "width :370:, grow, wrap"); // id3tag options id3TagOptP.setLayout(new MigLayout("insets 5", "[shrink][shrink][shrink][shrink]", "[shrink][shrink]")); id3TagOptP.add(searchOnlineB); id3TagOptP.add(searchLyricsB); id3TagOptP.add(searchImageB, "push"); id3TagOptP.add(deleteTagB, "wrap"); id3TagOptP.add(fieldReplacerB); id3TagOptP.add(generateByNameB); id3TagOptP.add(new JLabel()); id3TagOptP.add(undoB); add(id3TagOptP, "grow, wrap"); // fileoptions fileOptP.setLayout(new MigLayout("insets 5", "[shrink][shrink]", "[shrink]")); fileOptP.add(playAudioB, "push"); fileOptP.add(deleteFileHDDB, "right"); add(fileOptP, "grow"); } /** * sets an ActionListener * * @param l * the ActionListener */ public void setActionListener(ActionListener l) { ImageSettingsB.addActionListener(l); addImageB.addActionListener(l); saveImageB.addActionListener(l); searchImageB.addActionListener(l); searchLyricsB.addActionListener(l); fieldReplacerB.addActionListener(l); searchOnlineB.addActionListener(l); generateByNameB.addActionListener(l); deleteTagB.addActionListener(l); undoB.addActionListener(l); loadLyricsB.addActionListener(l); saveLyricsB.addActionListener(l); deleteLyricsB.addActionListener(l); playAudioB.addActionListener(l); deleteFileHDDB.addActionListener(l); urlRB.addActionListener(l); maxTracksRB.addActionListener(l); copyrightRB.addActionListener(l); encodedByRB.addActionListener(l); composerRB.addActionListener(l); commentRB.addActionListener(l); albumRB.addActionListener(l); albumArtistRB.addActionListener(l); genreRB.addActionListener(l); titleRB.addActionListener(l); artistRB.addActionListener(l); origArtistRB.addActionListener(l); imageAllRB.addActionListener(l); lyricsRB.addActionListener(l); trackRB.addActionListener(l); yearRB.addActionListener(l); cdRB.addActionListener(l); maxCDRB.addActionListener(l); publisherRB.addActionListener(l); } /** * sets a FocusListener * * @param l * the FocusListener */ public void setFocusListener(FocusListener l) { this.titleTF.addFocusListener(l); this.artistTF.addFocusListener(l); this.albumArtistTF.addFocusListener(l); this.albumTF.addFocusListener(l); this.yearTF.addFocusListener(l); this.maxTracksTF.addFocusListener(l); this.maxCDTF.addFocusListener(l); this.commentTF.addFocusListener(l); this.composerTF.addFocusListener(l); this.origArtistTF.addFocusListener(l); this.copyrightTF.addFocusListener(l); this.urlTF.addFocusListener(l); this.encodedByTF.addFocusListener(l); this.trackTF.addFocusListener(l); this.cdTF.addFocusListener(l); this.publisherTF.addFocusListener(l); this.genreCB.addFocusListener(l); this.lyricsTA.addFocusListener(l); } /** * sets a ChangeListener * * @param l * the ChangeListener */ public void setChangeListener(ChangeListener l) { this.tabbedPane.addChangeListener(l); } /** * resets all RadionButtons to unselected */ public void resetRB() { urlRB.setSelected(false); maxTracksRB.setSelected(false); copyrightRB.setSelected(false); encodedByRB.setSelected(false); composerRB.setSelected(false); commentRB.setSelected(false); albumRB.setSelected(false); albumArtistRB.setSelected(false); genreRB.setSelected(false); titleRB.setSelected(false); artistRB.setSelected(false); publisherRB.setSelected(false); origArtistRB.setSelected(false); imageAllRB.setSelected(false); lyricsRB.setSelected(false); trackRB.setSelected(false); yearRB.setSelected(false); cdRB.setSelected(false); maxCDRB.setSelected(false); } /** * sets the given audio file data to the interface * * @param audioFile * given audio file * * @throws IOException */ public void setID3Data(IAudioFile audioFile) throws IOException { this.audioFileCurrentNameJL.setText(Util.stripExtraData(FileUtil.getFileName(audioFile.getFilePath()))); this.layerJL.setText("MPEG " + (audioFile.getVersion() == null ? "?" : audioFile.getVersion().charAt(0)) + " Layer " + audioFile.getLayer()); this.currBitrateJL.setText(audioFile.getBitrate() + " kb/s"); this.currModeJL.setText(audioFile.getMode()); this.currFrequenceJL.setText(audioFile.getFrequence() + " Hz"); this.currSizeJL.setText(convertSizeInMB(audioFile.getFileSize()) + " MB"); this.currLengthJL.setText(convertTime(audioFile.getAudioLength()) + " min"); this.titleTF.setText(audioFile.getTitle()); this.artistTF.setText(audioFile.getArtist()); this.albumArtistTF.setText(audioFile.getAlbumArtist()); this.albumTF.setText(audioFile.getAlbum()); this.yearTF.setText(audioFile.getYear()); this.maxTracksTF.setText(audioFile.getMaxTrack()); this.trackTF.setText(audioFile.getCurrTrack()); this.maxCDTF.setText(audioFile.getMaxCD()); this.cdTF.setText(audioFile.getCurrCD()); this.genreCB.setSelectedIndex((audioFile.getGenre() < 0 || audioFile.getGenre() > 148) ? 12 : audioFile.getGenre()); this.commentTF.setText(audioFile.getComment()); this.composerTF.setText(audioFile.getComposer()); this.origArtistTF.setText(audioFile.getOriginalArtist()); this.copyrightTF.setText(audioFile.getCopyright()); this.urlTF.setText(audioFile.getURL()); this.encodedByTF.setText(audioFile.getEncoder()); this.lyricsTA.setText(audioFile.getLyrics()); setCoverImageData(audioFile.getAlbumImage(), audioFile.getAlbumImageFormat()); } /** * resets all audio file data fields to its default value */ public void resetID3Data() { this.audioFileCurrentNameJL.setText(mls.getMessage("mp3CurrentNameJL")); this.layerJL.setText(mls.getMessage("layerJL")); this.currBitrateJL.setText(mls.getMessage("currBitrateJL")); this.currModeJL.setText(mls.getMessage("currModeJL")); this.currFrequenceJL.setText(mls.getMessage("currFrequenceJL")); this.currSizeJL.setText(mls.getMessage("currSizeJL")); this.currLengthJL.setText(mls.getMessage("currLengthJL")); this.titleTF.setText(mls.getMessage("titleTF")); this.artistTF.setText(mls.getMessage("artistTF")); this.albumArtistTF.setText(mls.getMessage("albumArtistTF")); this.albumTF.setText(mls.getMessage("albumTF")); this.yearTF.setText(mls.getMessage("yearTF")); this.maxTracksTF.setText(mls.getMessage("maxTracksTF")); this.trackTF.setText(mls.getMessage("trackTF")); this.maxCDTF.setText(mls.getMessage("maxCDTF")); this.cdTF.setText(mls.getMessage("cdTF")); this.genreCB.setSelectedIndex(12); this.commentTF.setText(mls.getMessage("commentTF")); this.composerTF.setText(mls.getMessage("composerTF")); this.origArtistTF.setText(mls.getMessage("origArtistTF")); this.copyrightTF.setText(mls.getMessage("copyrightTF")); this.urlTF.setText(mls.getMessage("urlTF")); this.encodedByTF.setText(mls.getMessage("encodedByTF")); this.lyricsTA.setText(""); this.currExtJL.setText(mls.getMessage("currExtJL")); this.currDimension.setText(mls.getMessage("currDimension")); try { setCoverImageData(null, null); } catch (IOException e) { // do nothing } } /** * gets the ID3Tag Data as shown in the interface * * @return all ID3Tag Data */ public ID3TagData getID3TagData() { ID3TagData result = new ID3TagData(); result.setTitle(this.titleTF.getText()); result.setArtist(this.artistTF.getText()); result.setAlbumArtist(this.albumArtistTF.getText()); result.setAlbum(this.albumTF.getText()); result.setYear(this.yearTF.getText()); result.setCurrTrack(this.trackTF.getText()); result.setMaxTrack(this.maxTracksTF.getText()); result.setCurrCD(this.cdTF.getText()); result.setMaxCD(this.maxCDTF.getText()); // result.setTrack(this.trackTF.getText(), this.maxTracksTF.getText()); // result.setCd(this.cdTF.getText(), this.maxCDTF.getText()); result.setGenre(this.genreCB.getSelectedIndex()); result.setComment(this.commentTF.getText()); result.setComposer(this.composerTF.getText()); result.setOrigArtist(this.origArtistTF.getText()); result.setCopyright(this.copyrightTF.getText()); result.setUrl(this.urlTF.getText()); result.setEncoder(this.encodedByTF.getText()); result.setLyrics(this.lyricsTA.getText()); return result; } /** * sets the genre combobox * * @param genres * all genres */ public void setGenres(String[] genres) { DefaultComboBoxModel<String> model = new DefaultComboBoxModel<String>(); for (int i = 0; i < genres.length; i++) model.addElement(genres[i]); this.genreCB.setModel(model); this.genreCB.setSelectedIndex(12); } /** * gets the selected genre index. does NOT start by 0 * * @return the genre */ public String getGenre() { return Integer.toString(this.genreCB.getSelectedIndex()); } /** * sets the cover image data * * @param imgBytes * bytes of the image * @param extension * image extension * * @throws IOException */ public void setCoverImageData(byte[] imgBytes, String extension) throws IOException { // convert byte array back to BufferedImage BufferedImage img; if (imgBytes == null || imgBytes.length == 0) { img = Constants.EMPTY; // set dimension + extension this.currDimension.setText(mls.getMessage("currDimension")); this.currExtJL.setText(mls.getMessage("currExtJL")); this.currImageSizeJL.setText(mls.getMessage("currImageSizeJL")); } else { InputStream in = new ByteArrayInputStream(imgBytes); img = ImageIO.read(in); in.close(); // set dimension + extension this.currDimension.setText(img.getWidth() + "x" + img.getHeight()); this.currExtJL.setText("*." + extension); long size = imgBytes.length; this.currImageSizeJL.setText(convertSizeInKB(size) + " KB"); } img = Graphics.scale(img, this.imageIP.getWidth(), this.imageIP.getHeight()); this.imageIP.setImage(img); } public int[] getImageSize() { String[] tmp = this.currDimension.getText().split("x"); if (tmp.length != 2) return null; return new int[] { Integer.parseInt(tmp[0]), Integer.parseInt(tmp[1]) }; } public String geturlTF() { return urlTF.getText(); } public String getalbumArtistTF() { return albumArtistTF.getText(); } public String getmaxTracksTF() { return maxTracksTF.getText(); } public String getcopyrightTF() { return copyrightTF.getText(); } public String getcomposerTF() { return composerTF.getText(); } public String getalbumTF() { return albumTF.getText(); } public String getcommentTF() { return commentTF.getText(); } public String getyearTF() { return yearTF.getText(); } public String gettitleTF() { return titleTF.getText(); } public String getPublisherTF() { return publisherTF.getText(); } public String getorigArtistTF() { return origArtistTF.getText(); } public String getencodedByTF() { return encodedByTF.getText(); } public String getartistTF() { return artistTF.getText(); } public String getTrackNr() { return this.trackTF.getText(); } public String getMaxTracks() { return this.maxTracksTF.getText(); } public String getCurrCD() { return this.cdTF.getText(); } public String getMaxCD() { return this.maxCDTF.getText(); } public String getLyricsTA() { return this.lyricsTA.getText(); } public void setLyricsTA(String lyrics) { this.lyricsTA.setText(lyrics); } /** * converts the given number of bytes to MB * * @param bytes * number of bytes * * @return given bytes in MB */ private String convertSizeInMB(long bytes) { // to KB double result = ((double) bytes) / 1024.0; // to MB result = result / 1024.0; return Double.toString(Math.floor((result * 100)) / 100); } /** * converts the given number of bytes to KB * * @param bytes * number of bytes * * @return given bytes in KB */ private String convertSizeInKB(long bytes) { // to KB double result = ((double) bytes) / 1024.0; return Double.toString(Math.floor((result * 100)) / 100); } /** * converts the given secs in the format min:sec * * @param secs * given secs * * @return formatted to min:sec */ private String convertTime(long secs) { double result = ((double) secs) / 60.0; String[] tmp = Double.toString(result).split("\\."); String min = tmp[0]; String sec = Double.toString(Math.floor(Double.parseDouble("0." + tmp[1]) * 60)).split("\\.")[0]; if (sec.length() == 1) sec = "0" + sec; return min + ":" + sec; } /** * sets all buttons enabled * * @param en * true for enabled, else false */ public void setButtonsEnabled(boolean en) { searchImageB.setEnabled(en); searchLyricsB.setEnabled(en); searchOnlineB.setEnabled(en); playAudioB.setEnabled(en); deleteFileHDDB.setEnabled(en); fieldReplacerB.setEnabled(en); generateByNameB.setEnabled(en); undoB.setEnabled(en); deleteTagB.setEnabled(en); loadLyricsB.setEnabled(en); deleteLyricsB.setEnabled(en); saveLyricsB.setEnabled(en); saveImageB.setEnabled(en); ImageSettingsB.setEnabled(en); addImageB.setEnabled(en); } }