00001 package i2bpro.layer.Dialogs;
00002
00003 import i2bpro.Exceptions.ErrorMsg;
00004 import i2bpro.Exceptions.PlayListException;
00005 import i2bpro.layer.InfoMsg;
00006 import i2bpro.layer.Layer;
00007 import i2bpro.playlist.PlayList;
00008 import java.awt.BorderLayout;
00009 import java.awt.Dimension;
00010 import java.awt.GridLayout;
00011 import java.awt.Toolkit;
00012 import java.awt.event.ActionEvent;
00013 import java.awt.event.ActionListener;
00014 import java.io.IOException;
00015 import java.net.MalformedURLException;
00016 import java.util.HashMap;
00017 import java.util.regex.Matcher;
00018 import java.util.regex.Pattern;
00019 import javax.swing.ButtonGroup;
00020 import javax.swing.JButton;
00021 import javax.swing.JDialog;
00022 import javax.swing.JPanel;
00023 import javax.swing.JRadioButton;
00024 import javax.swing.border.EmptyBorder;
00025 import org.jaudiotagger.audio.exceptions.CannotReadException;
00026 import org.jaudiotagger.audio.exceptions.CannotWriteException;
00027 import org.jaudiotagger.audio.exceptions.InvalidAudioFrameException;
00028 import org.jaudiotagger.audio.exceptions.ReadOnlyFileException;
00029 import org.jaudiotagger.tag.TagException;
00030
00031
00032
00048 public final class AlbumAuswahlDlg extends JDialog implements ActionListener
00049 {
00050
00051
00052 private HashMap<Integer, HashMap<String, String>> alben =
00053 new HashMap<Integer,HashMap<String, String>>();
00054
00055
00056 private ButtonGroup group = new ButtonGroup();
00057
00058
00059
00068 public AlbumAuswahlDlg(String result)
00069 {
00070 super(Layer.getInstance(), "Albumauswahl", true);
00071 init(result);
00072 }
00073
00074
00075
00090 private void init(String result)
00091 {
00092
00093
00094 String[] lines = result.split("\n");
00095 Pattern pattern = Pattern.compile(" ");
00096 Matcher matcher;
00097 int j;
00098 int endGenre=0, beginCDID=0, endCDID=0, beginTitle=0;
00099 for (int i=1; i<lines.length; i++)
00100 {
00101 matcher = pattern.matcher(lines[i]);
00102 boolean found = false;
00103 j=1;
00104 while (matcher.find())
00105 {
00106 if (j == 1)
00107 {
00108 endGenre = matcher.start();
00109 beginCDID = matcher.end();
00110 }
00111 if (j == 2)
00112 {
00113 endCDID = matcher.start();
00114 beginTitle = matcher.end();
00115 found = true;
00116 break;
00117 }
00118 j++;
00119 }
00120
00121 if (found)
00122 {
00123 String genre = lines[i].substring(0, endGenre);
00124 String cdid = lines[i].substring(beginCDID, endCDID);
00125 String title = lines[i].substring(beginTitle, lines[i].length());
00126 alben.put(i, new HashMap<String, String>());
00127 alben.get(i).put("genre", genre);
00128 alben.get(i).put("cdid", cdid);
00129 alben.get(i).put("title", title);
00130 }
00131 }
00132
00133
00134 if (alben.isEmpty())
00135 {
00136 setVisible(false);
00137 InfoMsg.show(1);
00138 dispose();
00139 } else {
00140
00141 JPanel panel = new JPanel();
00142 panel.setLayout(new GridLayout(alben.size(),1));
00143 panel.setBorder(new EmptyBorder(5,5,5,5));
00144 for (int i=1; i<=alben.size(); i++)
00145 {
00146 String text = alben.get(i).get("title") + ", "
00147 + alben.get(i).get("genre");
00148 JRadioButton rb = new JRadioButton(text);
00149 if (i == 1) rb.setSelected(true);
00150 rb.setActionCommand(alben.get(i).get("genre")+ "+"
00151 + alben.get(i).get("cdid"));
00152 panel.add(rb);
00153 group.add(rb);
00154 }
00155 setLayout(new BorderLayout());
00156 add(panel, BorderLayout.CENTER);
00157 JButton button = new JButton("Übernehmen");
00158 button.addActionListener(this);
00159 add(button, BorderLayout.SOUTH);
00160 }
00161 }
00162
00163
00164
00177 public void run()
00178 {
00179 if (alben.isEmpty() == false)
00180 {
00181 this.pack();
00182 Dimension dim = Toolkit.getDefaultToolkit().getScreenSize();
00183 int y = (int)((dim.getHeight()/2)-(getHeight()/2));
00184 int x = (int)((dim.getWidth()/2)-(getWidth()/2));
00185 setLocation(x, y);
00186 this.setVisible(true);
00187 }
00188 }
00189
00190
00191
00201 public void actionPerformed(ActionEvent e)
00202 {
00203 if (e.getActionCommand().equals("Übernehmen"))
00204 {
00205 try
00206 {
00207 PlayList.getInstance().setAlbumInfos(
00208 group.getSelection().getActionCommand());
00209 setVisible(false);
00210 dispose();
00211 }
00212 catch (MalformedURLException ex) {ErrorMsg.show(ex.getMessage());}
00213 catch (IOException ex) {ErrorMsg.show(ex.getMessage());}
00214 catch (CannotReadException ex) {ErrorMsg.show(ex.getMessage());}
00215 catch (TagException ex) {ErrorMsg.show(ex.getMessage());}
00216 catch (ReadOnlyFileException ex) {ErrorMsg.show(ex.getMessage());}
00217 catch (InvalidAudioFrameException ex) {ErrorMsg.show(ex.getMessage());}
00218 catch (CannotWriteException ex) {ErrorMsg.show(ex.getMessage());}
00219 catch (PlayListException ex) {ErrorMsg.show(ex.getMessage());}
00220 }
00221 }
00222 }