From: WiESi <wi...@us...> - 2006-03-19 10:17:44
|
Update of /cvsroot/javaamp/javaamp/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv26976/src Modified Files: EqualizerDialog.java FileInformationDialog.java GetFileInfoThread.java GraphicsLoader.java JavaAmp.java LoadInfoDialog.java PlayDialog.java PlayQueue.java PlaylistDialog.java SimpleVisualization.java Spline.java Added Files: ID3v2Tags.java Language.java PreferencesDialog.java Log Message: Many changes --- NEW FILE: Language.java --- import java.io.*; import java.util.*; public class Language { static Properties lang; public final static void loadLanguage(Class cls, String language) throws Exception { Properties p = new Properties(); try { p.load(new FileInputStream(new File(System.getProperty("user.dir"), "/language/languages.ini"))); } catch(Exception e) { p.load(cls.getResourceAsStream("/language/languages.ini")); } int j = 0, k = -1; for(int i = 0; i < p.keySet().toArray().length; i++) { if(p.keySet().toArray()[i].toString().equals(language)) { j++; k = i; if(j > 1) throw new Exception( "Language definition twice ore more not allowed"); } } if(j < 1) throw new Exception("Language not defined"); String file = p.get(language).toString(); p = new Properties(); try { p.load(new FileInputStream(new File(System.getProperty("user.dir"), "/language/" + file))); } catch(Exception e) { p.load(cls.getResourceAsStream("/language/" + file)); } lang = p; } public final static String[] getAvailableLanguages(Class cls) throws Exception { Properties p = new Properties(); try { p.load(new FileInputStream(new File(System.getProperty("user.dir"), "/language/languages.ini"))); } catch(Exception e) { p.load(cls.getResourceAsStream("/language/languages.ini")); } String[] s = new String[p.keySet().toArray().length]; for(int i = 0; i < p.keySet().toArray().length; i++) s[i] = p.keySet().toArray()[i].toString(); return s; } public final static String get(String key) { return lang.get(key).toString(); } } Index: EqualizerDialog.java =================================================================== RCS file: /cvsroot/javaamp/javaamp/src/EqualizerDialog.java,v retrieving revision 1.14 retrieving revision 1.15 diff -u -d -r1.14 -r1.15 --- EqualizerDialog.java 10 Mar 2006 14:29:09 -0000 1.14 +++ EqualizerDialog.java 19 Mar 2006 10:17:39 -0000 1.15 @@ -141,7 +141,7 @@ bebBorder = new BevelBorder(BevelBorder.RAISED); tobOn = new JToggleButton(new ImageIcon(GraphicsLoader.eqd2)); - tobOn.setToolTipText("Activate equalizer"); + tobOn.setToolTipText(Language.get("ACTIVATE_EQUALIZER")); tobOn.setFocusable(false); tobOn.setEnabled(false); tobOn.setBounds(5, 5, 20, 15); @@ -151,7 +151,7 @@ eqvals[i] = 31; sliPre = new JSlider(JSlider.VERTICAL, 0, 63, 32); - sliPre.setToolTipText("Preamplifier"); + sliPre.setToolTipText(Language.get("PREAMPLIFIER")); sliPre.setInverted(true); sliPre.setOpaque(false); sliPre.setFocusable(false); @@ -166,18 +166,18 @@ eqlEqualizer.setBounds(30, 28, 239, 66); btnPresets = new JButton(new ImageIcon(GraphicsLoader.eqd1)); - btnPresets.setToolTipText("Presets"); + btnPresets.setToolTipText(Language.get("PRESETS")); btnPresets.setFocusable(false); btnPresets.setBounds(220, 5, 50, 15); pomPresets = new JPopupMenu(); - JMenuItem meiPresets = new JMenuItem("Presets"); + JMenuItem meiPresets = new JMenuItem(Language.get("PRESETS")); meiPresets.setEnabled(false); pomPresets.add(meiPresets); pomPresets.addSeparator(); - menLoad = new JMenu("Load"); - meiLoadPreset = new JMenuItem("Preset"); + menLoad = new JMenu(Language.get("LOAD")); + meiLoadPreset = new JMenuItem(Language.get("PRESET")); menLoad.add(meiLoadPreset); - meiLoadEQF = new JMenuItem("From EQF-file"); + meiLoadEQF = new JMenuItem(Language.get("LOAD_FROM_EQF")); meiLoadEQF.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { try { @@ -190,10 +190,10 @@ }); menLoad.add(meiLoadEQF); pomPresets.add(menLoad); - menSave = new JMenu("Save"); - meiSavePreset = new JMenuItem("Preset"); + menSave = new JMenu(Language.get("SAVE")); + meiSavePreset = new JMenuItem(Language.get("PRESET")); menSave.add(meiSavePreset); - meiSaveEQF = new JMenuItem("To EQF-file"); + meiSaveEQF = new JMenuItem(Language.get("SAVE_TO_EQF")); meiSaveEQF.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { try { @@ -206,8 +206,8 @@ }); menSave.add(meiSaveEQF); pomPresets.add(menSave); - menDelete = new JMenu("Delete"); - meiDeletePreset = new JMenuItem("Preset"); + menDelete = new JMenu(Language.get("DELETE")); + meiDeletePreset = new JMenuItem(Language.get("PRESET")); menDelete.add(meiDeletePreset); pomPresets.add(menDelete); btnPresets.addActionListener(new ActionListener() { @@ -248,10 +248,10 @@ return f.toString().toLowerCase().endsWith(".eqf"); } public String getDescription() { - return "EQF files"; + return Language.get("EQF_FILES"); } }); - owner.fchChooser.setDialogTitle("Load EQF"); + owner.fchChooser.setDialogTitle(Language.get("LOAD_EQF")); if(owner.fchChooser.showOpenDialog(this) != JFileChooser.APPROVE_OPTION) return; FileInputStream fis = new FileInputStream( @@ -259,7 +259,7 @@ byte[] in = new byte[299]; int r = fis.read(in); if(r != 299) - throw new Exception("Unknown file exception!"); + throw new Exception(Language.get("UNKNOWN_FILE_EXCEPTION")); System.arraycopy(in, 288, eqvals, 0, 10); sliPre.setValue(in[298]); eqlEqualizer.repaint(); @@ -280,10 +280,10 @@ return f.toString().toLowerCase().endsWith(".eqf"); } public String getDescription() { - return "EQF files"; + return Language.get("EQF_FILES"); } }); - owner.fchChooser.setDialogTitle("Save as EQF"); + owner.fchChooser.setDialogTitle(Language.get("SAVE_EQF")); if(owner.fchChooser.showSaveDialog(this) != JFileChooser.APPROVE_OPTION) return; byte[] out = new byte[299]; Index: Spline.java =================================================================== RCS file: /cvsroot/javaamp/javaamp/src/Spline.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -r1.1 -r1.2 --- Spline.java 7 Mar 2006 16:13:18 -0000 1.1 +++ Spline.java 19 Mar 2006 10:17:39 -0000 1.2 @@ -36,10 +36,10 @@ last_interval = 0; n = xx.length; if(n <= 3) - throw new RuntimeException("Not enough points to build spline, n=" + - n); + throw new RuntimeException(Language.get("NOT_ENOUGH_POINTS_BUILD") + + ", n=" + n); if(n != ff.length) - throw new RuntimeException("Not same number of x and f(x)"); + throw new RuntimeException(Language.get("NOT_SAME_NUMBER")); x = new double[n]; f = new double[n]; b = new double[n]; @@ -129,13 +129,14 @@ // t < x[interval + 1] if(n <= 1) - throw new RuntimeException("Not enough points to compute value"); + throw new RuntimeException(Language.get( + "NOT_ENOUGH_POINTS_COMPUTE")); // Search for correct interval for t. interval = last_interval; // Heuristic if(t < x[0]) - throw new RuntimeException("Requested point below Spline region"); + throw new RuntimeException(Language.get("BELOW_SPLINE")); if(t > x[n - 1]) - throw new RuntimeException("Requested point above Spline region"); + throw new RuntimeException(Language.get("ABOVE_SPLINE")); if(t > x[n - 2]) interval = n-2; else if (t >= x[last_interval]) @@ -152,33 +153,6 @@ return s; } - public double integrate() { - double suma, sumb, sumc, sumd; - double dx, t; - if(n <= 3) - throw new RuntimeException("Not enough data to integrate"); - if(!uniform) { - t = 0.0; - for(int i = 0; i < n - 1; i++) { - dx = x[i + 1] - x[i]; - t = t + (f[i] + (b[i] / 2.0 + (c[i] / 3.0 + dx * d[i] / 4.0) * - dx) * dx) * dx; - } - return t; - } - // Compute uniform integral of spline fit - suma = sumb = sumc = sumd = 0.0; - for(int i = 0; i < n; i++) { - suma = suma + d[i]; - sumb = sumb + c[i]; - sumc = sumc + b[i]; - sumd = sumd + f[i]; - } - dx = x[1] - x[0]; // Assumes equally spaced points - return (sumd + (sumc / 2.0 + (sumb / 3.0 + dx * suma / 4.0) * dx) * - dx) * dx; - } - private final static void dHeapSort(double key[], double trail[]) { int nkey = key.length; int last_parent_pos = (nkey - 2) / 2; --- NEW FILE: PreferencesDialog.java --- import java.awt.*; import java.awt.event.*; import java.util.*; import javax.swing.*; import javax.swing.border.*; import javax.swing.event.*; import javax.swing.tree.*; import org.lwjgl.*; public class PreferencesDialog extends JDialog { JavaAmp owner; JScrollPane scpPreferences; JTree trePreferences; DefaultMutableTreeNode mtnJavaAmp; DefaultMutableTreeNode mtnGenPref; DefaultMutableTreeNode mtnPlaylist; DefaultMutableTreeNode mtnTitles; DefaultMutableTreeNode mtnAppearance; DefaultMutableTreeNode mtnPlugins; DefaultMutableTreeNode mtnVisualization; JPanel panJavaAmp; JPanel panGenPref; JLabel lblLanguage; JComboBox cmbLanguage; JLabel lblFindLanguages; JPanel panInternet; JCheckBox chbProxy; JLabel lblProxyHost; JTextField tfdProxyHost; JLabel lblProxyPort; JTextField tfdPort; JCheckBox chbSplash; JCheckBox chbMultiple; JCheckBox chbUpdate; JLabel lblShowIn; JCheckBox chbTaskbar; JCheckBox chbSysTray; JCheckBox chbScroll; JPanel panPlaylist; JPanel panTitles; JPanel panApperance; JPanel panPlugins; JPanel panVisualization; JButton btnClose; public PreferencesDialog(JavaAmp o) throws Exception { super(o); owner = o; setTitle(Language.get("PREFERENCES")); setSize(585, 450); setResizable(false); setLocation((getToolkit().getScreenSize().width - getWidth()) / 2, (getToolkit().getScreenSize().height - getHeight()) / 2); setLayout(null); DefaultMutableTreeNode root = new DefaultMutableTreeNode(); mtnJavaAmp = new DefaultMutableTreeNode("JavaAmp"); root.add(mtnJavaAmp); mtnGenPref = new DefaultMutableTreeNode(Language.get( "GENERAL_PREFERENCES")); mtnPlaylist = new DefaultMutableTreeNode(Language.get( "PLAYLIST")); mtnGenPref.add(mtnPlaylist); mtnTitles = new DefaultMutableTreeNode(Language.get("TITLES")); mtnGenPref.add(mtnTitles); root.add(mtnGenPref); mtnAppearance = new DefaultMutableTreeNode(Language.get( "APPEARANCE")); root.add(mtnAppearance); mtnPlugins = new DefaultMutableTreeNode(Language.get("PLUGINS")); mtnVisualization = new DefaultMutableTreeNode(Language.get( "VISUALIZATION")); mtnPlugins.add(mtnVisualization); root.add(mtnPlugins); DefaultTreeModel dtm = new DefaultTreeModel(root); trePreferences = new JTree(dtm); trePreferences.setRootVisible(false); trePreferences.setShowsRootHandles(false); for(int i = 0; i < trePreferences.getRowCount(); i++) trePreferences.expandRow(i); DefaultTreeSelectionModel dtsm = new DefaultTreeSelectionModel(); dtsm.setSelectionMode(DefaultTreeSelectionModel.SINGLE_TREE_SELECTION); dtsm.addTreeSelectionListener(new TreeSelectionListener() { public void valueChanged(TreeSelectionEvent e) { if(e.getPath().equals(new TreePath(mtnJavaAmp.getPath()))) makeVisible(panJavaAmp); else if(e.getPath().equals(new TreePath(mtnGenPref.getPath()))) makeVisible(panGenPref); else if(e.getPath().equals(new TreePath(mtnPlaylist.getPath()))) makeVisible(panPlaylist); else if(e.getPath().equals(new TreePath(mtnTitles.getPath()))) makeVisible(panTitles); else if(e.getPath().equals(new TreePath( mtnAppearance.getPath()))) makeVisible(panApperance); else if(e.getPath().equals(new TreePath(mtnPlugins.getPath()))) makeVisible(panPlugins); else if(e.getPath().equals(new TreePath( mtnVisualization.getPath()))) makeVisible(panVisualization); } }); trePreferences.setSelectionModel(dtsm); scpPreferences = new JScrollPane(trePreferences, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED); scpPreferences.setBounds(10, 10, 150, 365); btnClose = new JButton(Language.get("CLOSE")); btnClose.setDefaultCapable(true); btnClose.setBounds(10, 385, 150, 25); panJavaAmp = new JPanel(null); panJavaAmp.setBorder(BorderFactory.createTitledBorder( "JavaAmp")); panJavaAmp.setBounds(170, 10, 395, 400); panGenPref = new JPanel(null); panGenPref.setBorder(BorderFactory.createTitledBorder( Language.get("GENERAL_PREFERENCES"))); panGenPref.setBounds(170, 10, 395, 400); lblLanguage = new JLabel(Language.get("LANGUAGE")); lblLanguage.setBounds(15, 15, lblLanguage.getFontMetrics( lblLanguage.getFont()).stringWidth(lblLanguage.getText()), 20); panGenPref.add(lblLanguage); String[] langs = Language.getAvailableLanguages(owner.getClass()); Arrays.sort(langs); cmbLanguage = new JComboBox(langs); cmbLanguage.setBounds(80, 15, 160, 20); panGenPref.add(cmbLanguage); lblFindLanguages = new JLabel( "<html><u>" + Language.get("FIND_LANGUAGES") + "</u></html>"); lblFindLanguages.setForeground(Color.BLUE); lblFindLanguages.setCursor(Cursor.getPredefinedCursor( Cursor.HAND_CURSOR)); lblFindLanguages.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent e) { Sys.openURL("http://javaamp.sourceforge.net/"); } }); lblFindLanguages.setBounds(250, 15, lblFindLanguages.getFontMetrics( lblFindLanguages.getFont()).stringWidth(Language.get( "FIND_LANGUAGES")), 20); panGenPref.add(lblFindLanguages); panInternet = new JPanel(null); panInternet.setBorder(BorderFactory.createTitledBorder( Language.get("INTERNET_SETTINGS"))); panInternet.setBounds(10, 40, 375, 75); chbProxy = new JCheckBox(Language.get("ENABLE_PROXY")); chbProxy.setBounds(15, 15, 90, 20); panInternet.add(chbProxy); lblProxyHost = new JLabel(Language.get("PROXY_HOST")); lblProxyHost.setBounds(15, 40, 70, 20); panInternet.add(lblProxyHost); tfdProxyHost = new JTextField(); tfdProxyHost.setBounds(85, 40, 120, 20); panInternet.add(tfdProxyHost); lblProxyPort = new JLabel(Language.get("PROXY_PORT")); lblProxyPort.setBounds(230, 40, 70, 20); panInternet.add(lblProxyPort); tfdPort = new JTextField(); tfdPort.setBounds(300, 40, 60, 20); panInternet.add(tfdPort); panGenPref.add(panInternet); chbSplash = new JCheckBox(Language.get("SHOW_SPLASH")); chbSplash.setBounds(10, 120, 120, 20); panGenPref.add(chbSplash); chbMultiple = new JCheckBox(Language.get("ALLOW_MULTIPLE")); chbMultiple.setBounds(10, 140, chbMultiple.getFontMetrics( chbMultiple.getFont()).stringWidth(chbMultiple.getText()) + 25, 20); panGenPref.add(chbMultiple); chbUpdate = new JCheckBox(Language.get("CHECK_NEW")); chbUpdate.setBounds(10, 160, 190, 20); panGenPref.add(chbUpdate); lblShowIn = new JLabel(Language.get("SHOW_JAVAAMP_IN")); lblShowIn.setBounds(10, 180, 90, 20); panGenPref.add(lblShowIn); chbTaskbar = new JCheckBox(Language.get("TASKBAR")); chbTaskbar.setBounds(30, 200, 60, 20); panGenPref.add(chbTaskbar); chbSysTray = new JCheckBox(Language.get("SYSTRAY")); chbSysTray.setBounds(30, 220, 80, 20); panGenPref.add(chbSysTray); chbScroll = new JCheckBox(Language.get("SCROLL_TITLE")); chbScroll.setBounds(10, 240, 140, 20); panGenPref.add(chbScroll); panPlaylist = new JPanel(null); panPlaylist.setBorder(BorderFactory.createTitledBorder( Language.get("GENERAL_PREFERENCES") + " - " + Language.get("PLAYLIST"))); panPlaylist.setBounds(170, 10, 395, 400); panTitles = new JPanel(null); panTitles.setBorder(BorderFactory.createTitledBorder( Language.get("GENERAL_PREFERENCES") + " - " + Language.get("TITLES"))); panTitles.setBounds(170, 10, 395, 400); panApperance = new JPanel(null); panApperance.setBorder(BorderFactory.createTitledBorder( Language.get("APPEARANCE"))); panApperance.setBounds(170, 10, 395, 400); panPlugins = new JPanel(null); panPlugins.setBorder(BorderFactory.createTitledBorder( Language.get("PLUGINS"))); panPlugins.setBounds(170, 10, 395, 400); panVisualization = new JPanel(null); panVisualization.setBorder(BorderFactory.createTitledBorder( Language.get("PLUGINS") + " - " + Language.get("VISUALIZATION"))); panVisualization.setBounds(170, 10, 395, 400); add(scpPreferences); add(panJavaAmp); add(panGenPref); add(panPlaylist); add(panTitles); add(panApperance); add(panPlugins); add(panVisualization); add(btnClose); makeVisible(panJavaAmp); } public void makeVisible(JPanel pan) { panJavaAmp.setVisible(false); panGenPref.setVisible(false); panPlaylist.setVisible(false); panTitles.setVisible(false); panApperance.setVisible(false); panPlugins.setVisible(false); panVisualization.setVisible(false); pan.setVisible(true); } } --- NEW FILE: ID3v2Tags.java --- import java.util.*; public class ID3v2Tags { public final static Hashtable<String, String> tags; static { tags = new Hashtable<String, String>(); tags.put("AENC", "Audio encryption"); tags.put("APIC", "Attached picture"); tags.put("ASPI", "Audio seek point index"); tags.put("COMM", "Comments"); tags.put("COMR", "Commercial frame"); tags.put("ENCR", "Encryption method registration"); tags.put("EQU2", "Equalisation (2)"); tags.put("ETCO", "Event timing codes"); tags.put("GEOB", "General encapsulated object"); tags.put("GRID", "Group identification registration"); tags.put("LINK", "Linked information"); tags.put("MCDI", "Music CD identifier"); tags.put("MLLT", "MPEG location lookup table"); tags.put("OWNE", "Ownership frame"); tags.put("PRIV", "Private frame"); tags.put("PCNT", "Play counter"); tags.put("POPM", "Popularimeter"); tags.put("POSS", "Position synchronisation frame"); tags.put("RBUF", "Recommended buffer size"); tags.put("RVA2", "Relative volume adjustment (2)"); tags.put("RVRB", "Reverb"); tags.put("SEEK", "Seek frame"); tags.put("SIGN", "Signature frame"); tags.put("SYLT", "Synchronised lyric/text"); tags.put("SYTC", "Synchronised tempo codes"); tags.put("TALB", "Album/Movie/Show title"); tags.put("TBPM", "BPM (beats per minute)"); tags.put("TCOM", "Composer"); tags.put("TCON", "Content type"); tags.put("TCOP", "Copyright message"); tags.put("TDEN", "Encoding time"); tags.put("TDLY", "Playlist delay"); tags.put("TDOR", "Original release time"); tags.put("TDRC", "Recording time"); tags.put("TDRL", "Release time"); tags.put("TDTG", "Tagging time"); tags.put("TENC", "Encoded by"); tags.put("TEXT", "Lyricist/Text writer"); tags.put("TFLT", "File type"); tags.put("TIPL", "Involved people list"); tags.put("TIT1", "Content group description"); tags.put("TIT2", "Title/songname/content description"); tags.put("TIT3", "Subtitle/Description refinement"); tags.put("TKEY", "Initial key"); tags.put("TLAN", "Language(s)"); tags.put("TLEN", "Length"); tags.put("TMCL", "Musician credits list"); tags.put("TMED", "Media type"); tags.put("TMOO", "Mood"); tags.put("TOAL", "Original album/movie/show title"); tags.put("TOFN", "Original filename"); tags.put("TOLY", "Original lyricist(s)/text writer(s)"); tags.put("TOPE", "Original artist(s)/performer(s)"); tags.put("TOWN", "File owner/licensee"); tags.put("TPE1", "Lead performer(s)/Soloist(s)"); tags.put("TPE2", "Band/orchestra/accompaniment"); tags.put("TPE3", "Conductor/performer refinement"); tags.put("TPE4", "Interpreted, remixed, or otherwise modified by"); tags.put("TPOS", "Part of a set"); tags.put("TPRO", "Produced notice"); tags.put("TPUB", "Publisher"); tags.put("TRCK", "Track number/Position in set"); tags.put("TRSN", "Internet radio station name"); tags.put("TRSO", "Internet radio station owner"); tags.put("TSOA", "Album sort order"); tags.put("TSOP", "Performer sort order"); tags.put("TSOT", "Title sort order"); tags.put("TSRC", "ISRC (international standard recording code)"); tags.put("TSSE", "Software/Hardware and settings used for encoding"); tags.put("TSST", "Set subtitle"); tags.put("TXXX", "User defined text information frame"); tags.put("UFID", "Unique file identifier"); tags.put("USER", "Terms of use"); tags.put("USLT", "Unsynchronised lyric/text transcription"); tags.put("WCOM", "Commercial information"); tags.put("WCOP", "Copyright/Legal information"); tags.put("WOAF", "Official audio file webpage"); tags.put("WOAR", "Official artist/performer webpage"); tags.put("WOAS", "Official audio source webpage"); tags.put("WORS", "Official Internet radio station homepage"); tags.put("WPAY", "Payment"); tags.put("WPUB", "Publishers official webpage"); tags.put("WXXX", "User defined URL link frame"); } } Index: JavaAmp.java =================================================================== RCS file: /cvsroot/javaamp/javaamp/src/JavaAmp.java,v retrieving revision 1.11 retrieving revision 1.12 diff -u -d -r1.11 -r1.12 --- JavaAmp.java 10 Mar 2006 14:29:09 -0000 1.11 +++ JavaAmp.java 19 Mar 2006 10:17:39 -0000 1.12 @@ -11,6 +11,7 @@ PlayDialog playDialog; PlaylistDialog playlistDialog; EqualizerDialog equalizerDialog; + PreferencesDialog preferencesDialog; VisualizationBridge vb; @@ -22,6 +23,14 @@ Random random; public JavaAmp() throws Exception { + try { + Language.loadLanguage(getClass(), "German"); + } + catch(Exception e) { + String[] langs = Language.getAvailableLanguages(getClass()); + Language.loadLanguage(getClass(), langs[0]); + } + GraphicsLoader.startLoading(this); FMOD.create(); @@ -45,6 +54,7 @@ playDialog = new PlayDialog(this); equalizerDialog = new EqualizerDialog(this); playlistDialog = new PlaylistDialog(this); + preferencesDialog = new PreferencesDialog(this); Dimension si = getToolkit().getScreenSize(); Insets in = getToolkit().getScreenInsets(getGraphicsConfiguration()); int x = (si.width + in.left - in.right - 275) / 2; @@ -54,14 +64,14 @@ playlistDialog.setLocation(x, y + 230); if(!GraphicsLoader.finishLoading()) - throw new Exception("Error loading one or more graphics!"); + throw new Exception(Language.get("ERROR_LOADING_GRAPHICS")); playDialog.setVisible(true); equalizerDialog.setVisible(true); playlistDialog.setVisible(true); } - public static void error(Exception e) { + public final static void error(Exception e) { e.printStackTrace(); StringBuilder str = new StringBuilder(e.toString()); str.append('\n'); @@ -70,11 +80,11 @@ str.append(e.getStackTrace()[i]); str.append('\n'); } - Sys.alert("JavaAmp: Error!", str.toString()); + Sys.alert("JavaAmp: Error", str.toString()); System.exit(1); } - public static void warning(Exception e) { + public final static void warning(Exception e) { e.printStackTrace(); StringBuilder str = new StringBuilder(e.toString()); str.append('\n'); @@ -83,12 +93,12 @@ str.append(e.getStackTrace()[i]); str.append('\n'); } - Sys.alert("JavaAmp: Warning!", str.toString()); + Sys.alert("JavaAmp: Warning", str.toString()); } - public static void main(String[] args) { + public final static void main(String[] args) { Locale.setDefault(Locale.ENGLISH); - Toolkit.getDefaultToolkit().setDynamicLayout(true); + Toolkit.getDefaultToolkit().setDynamicLayout(false); System.setProperty("sun.awt.noerasebackground", "true"); try { UIManager.setLookAndFeel( Index: PlayQueue.java =================================================================== RCS file: /cvsroot/javaamp/javaamp/src/PlayQueue.java,v retrieving revision 1.15 retrieving revision 1.16 diff -u -d -r1.15 -r1.16 --- PlayQueue.java 10 Mar 2006 14:29:09 -0000 1.15 +++ PlayQueue.java 19 Mar 2006 10:17:39 -0000 1.16 @@ -96,7 +96,8 @@ rl.unlock(); if(!error && type == 1) { if(!FMusic.FMUSIC_PlaySong(module)) - JavaAmp.warning(new Exception("FMusic error!")); + JavaAmp.warning(new Exception(Language.get( + "FMUSIC_ERROR"))); else { while(pause == 1 || FMusic.FMUSIC_IsPlaying(module)) { if(!running) { @@ -132,7 +133,8 @@ else if(!error && type == 2) { c = FSound.FSOUND_Stream_Play(FSound.FSOUND_FREE, stream); if(c < 0) - JavaAmp.warning(new Exception("FSound error!")); + JavaAmp.warning(new Exception(Language.get( + "FSOUND_ERROR"))); else { FSound.FSOUND_SetVolume(c, owner.playDialog.sliVolume.getValue()); @@ -188,7 +190,7 @@ } } else if(!error) - JavaAmp.warning(new Exception("Unknown error!")); + JavaAmp.warning(new Exception(Language.get("UNKNOWN_ERROR"))); if(owner.playDialog.loopmode != 1) { fieCurrent = null; if(!change) { Index: PlaylistDialog.java =================================================================== RCS file: /cvsroot/javaamp/javaamp/src/PlaylistDialog.java,v retrieving revision 1.22 retrieving revision 1.23 diff -u -d -r1.22 -r1.23 --- PlaylistDialog.java 3 Mar 2006 18:29:19 -0000 1.22 +++ PlaylistDialog.java 19 Mar 2006 10:17:39 -0000 1.23 @@ -122,6 +122,7 @@ int height = oh - my + e.getY(); if(height < 115) height = 115; + setSize(width, height); scpPlaylist.setBounds(5, 5, width - 10, height - 32); @@ -239,23 +240,23 @@ } }); - btnAdd = new JButton("+"); - btnAdd.setToolTipText("Add"); + btnAdd = new JButton(Language.get("ADD_SHORT")); + btnAdd.setToolTipText(Language.get("ADD")); btnAdd.setFocusable(false); btnAdd.setBounds(5, 90, 60, 20); pomAdd = new JPopupMenu(); - JMenuItem meiAdd = new JMenuItem("Add"); + JMenuItem meiAdd = new JMenuItem(Language.get("ADD")); meiAdd.setEnabled(false); pomAdd.add(meiAdd); pomAdd.addSeparator(); - meiAddFile = new JMenuItem("File"); + meiAddFile = new JMenuItem(Language.get("FILE")); meiAddFile.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { addFiles(); } }); pomAdd.add(meiAddFile); - meiAddDir = new JMenuItem("Directory"); + meiAddDir = new JMenuItem(Language.get("DIRECTORY")); meiAddDir.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { owner.fchChooser.setMultiSelectionEnabled(true); @@ -269,7 +270,7 @@ owner.fchChooser.setFileFilter( owner.fchChooser.getAcceptAllFileFilter()); owner.fchChooser.setDialogTitle( - "Add directory to playlist"); + Language.get("ADD_DIRECTORY")); if(owner.fchChooser.showOpenDialog(null) != JFileChooser.APPROVE_OPTION) return; @@ -280,7 +281,7 @@ } }); pomAdd.add(meiAddDir); - meiAddURL = new JMenuItem("URL"); + meiAddURL = new JMenuItem(Language.get("URL")); meiAddURL.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { addURL(); @@ -293,16 +294,16 @@ } }); - btnRem = new JButton("-"); - btnRem.setToolTipText("Remove"); + btnRem = new JButton(Language.get("REMOVE_SHORT")); + btnRem.setToolTipText(Language.get("REMOVE")); btnRem.setFocusable(false); btnRem.setBounds(67, 90, 60, 20); pomRem = new JPopupMenu(); - JMenuItem meiRem = new JMenuItem("Remove"); + JMenuItem meiRem = new JMenuItem(Language.get("REMOVE")); meiRem.setEnabled(false); pomRem.add(meiRem); pomRem.addSeparator(); - meiRemSel = new JMenuItem("Selection"); + meiRemSel = new JMenuItem(Language.get("SELECTION")); meiRemSel.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { int[] sel = lstPlaylist.getSelectedIndices(); @@ -310,7 +311,7 @@ } }); pomRem.add(meiRemSel); - meiRemAll = new JMenuItem("All"); + meiRemAll = new JMenuItem(Language.get("ALL")); meiRemAll.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { listmodel.clear(); @@ -318,8 +319,8 @@ }); pomRem.add(meiRemAll); - menRemPhy = new JMenu("Physically"); - meiRemSelPhy = new JMenuItem("Selection"); + menRemPhy = new JMenu(Language.get("PHYSICALLY")); + meiRemSelPhy = new JMenuItem(Language.get("SELECTION")); meiRemSelPhy.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { int[] sel = lstPlaylist.getSelectedIndices(); @@ -328,15 +329,15 @@ if(listmodel.get(sel[i] - i + errs).type != FileEntry.TYPE_FILE) { errs++; - JavaAmp.warning(new Exception( - "Only files can be deleted!")); + JavaAmp.warning(new Exception(Language.get( + "ONLY_FILES"))); continue; } if(!listmodel.get(sel[i] - i + errs).file.delete()) { errs++; - JavaAmp.warning(new IOException( - "File cannont be deleted!")); + JavaAmp.warning(new IOException(Language.get( + "NOT_DELETED"))); continue; } listmodel.remove(sel[i] - i + errs); @@ -344,7 +345,7 @@ } }); menRemPhy.add(meiRemSelPhy); - meiRemAllPhy = new JMenuItem("All"); + meiRemAllPhy = new JMenuItem(Language.get("ALL")); meiRemAllPhy.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { int num = lstPlaylist.getModel().getSize(); @@ -353,14 +354,14 @@ if(listmodel.get(errs).type != FileEntry.TYPE_FILE) { errs++; - JavaAmp.warning(new Exception( - "Only files can be deleted!")); + JavaAmp.warning(new Exception(Language.get( + "ONLY_FILES"))); continue; } if(!listmodel.get(errs).file.delete()) { errs++; - JavaAmp.warning(new IOException( - "File cannont be deleted!")); + JavaAmp.warning(new IOException(Language.get( + "NOT_DELETED"))); continue; } listmodel.remove(errs); @@ -375,16 +376,16 @@ } }); - btnSel = new JButton("Sel"); - btnSel.setToolTipText("Select"); + btnSel = new JButton(Language.get("SELECT_SHORT")); + btnSel.setToolTipText(Language.get("SELECT")); btnSel.setFocusable(false); btnSel.setBounds(129, 90, 60, 20); pomSel = new JPopupMenu(); - JMenuItem meiSel = new JMenuItem("Select"); + JMenuItem meiSel = new JMenuItem(Language.get("SELECT")); meiSel.setEnabled(false); pomSel.add(meiSel); pomSel.addSeparator(); - meiSelAll = new JMenuItem("All"); + meiSelAll = new JMenuItem(Language.get("ALL")); meiSelAll.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { lstPlaylist.setSelectionInterval(0, @@ -392,14 +393,14 @@ } }); pomSel.add(meiSelAll); - meiSelZero = new JMenuItem("Nothing"); + meiSelZero = new JMenuItem(Language.get("NOTHING")); meiSelZero.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { lstPlaylist.setSelectedIndices(new int[] { }); } }); pomSel.add(meiSelZero); - meiSelInvert = new JMenuItem("Invert"); + meiSelInvert = new JMenuItem(Language.get("INVERT")); meiSelInvert.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { ArrayList<Integer> sels = new ArrayList<Integer>(); @@ -419,31 +420,31 @@ } }); - btnMsc = new JButton("Msc"); - btnMsc.setToolTipText("Miscellaneous"); + btnMsc = new JButton(Language.get("MISCELLANEOUS_SHORT")); + btnMsc.setToolTipText(Language.get("MISCELLANEOUS")); btnMsc.setFocusable(false); btnMsc.setBounds(191, 90, 60, 20); pomMsc = new JPopupMenu(); - JMenuItem meiMsc = new JMenuItem("Miscellaneous"); + JMenuItem meiMsc = new JMenuItem(Language.get("MISCELLANEOUS")); meiMsc.setEnabled(false); pomMsc.add(meiMsc); pomMsc.addSeparator(); - menLst = new JMenu("List"); - meiLoadList = new JMenuItem("Load list"); + menLst = new JMenu(Language.get("PLAYLIST")); + meiLoadList = new JMenuItem(Language.get("LOAD_PLAYLIST")); meiLoadList.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { loadList(); } }); menLst.add(meiLoadList); - meiSaveList = new JMenuItem("Save list"); + meiSaveList = new JMenuItem(Language.get("SAVE_PLAYLIST")); meiSaveList.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { saveList(); } }); menLst.add(meiSaveList); - meiGenHTMLList = new JMenuItem("Generate HTML-list"); + meiGenHTMLList = new JMenuItem(Language.get("GENERATE_HTML")); meiGenHTMLList.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { genHTMLList(); @@ -451,7 +452,8 @@ }); menLst.add(meiGenHTMLList); pomMsc.add(menLst); - meiLoadInfos = new JMenuItem("Load informations (unexactly)"); + meiLoadInfos = new JMenuItem(Language.get( + "LOAD_INFORMATIONS_UNEXACTLY")); meiLoadInfos.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if(listmodel.getSize() <= 0) @@ -460,7 +462,8 @@ } }); pomMsc.add(meiLoadInfos); - meiLoadInfosAccurate = new JMenuItem("Load informations (exactly)"); + meiLoadInfosAccurate = new JMenuItem(Language.get( + "LOAD_INFORMATIONS_EXACTLY")); meiLoadInfosAccurate.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if(listmodel.getSize() <= 0) @@ -476,18 +479,18 @@ }); pomFile = new JPopupMenu(); - JMenuItem meiFile = new JMenuItem("File"); + JMenuItem meiFile = new JMenuItem(Language.get("FILE")); meiFile.setEnabled(false); pomFile.add(meiFile); pomFile.addSeparator(); - meiFilePlay = new JMenuItem("Play"); + meiFilePlay = new JMenuItem(Language.get("PLAY")); meiFilePlay.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { playSelection(); } }); pomFile.add(meiFilePlay); - meiFileDel = new JMenuItem("Remove"); + meiFileDel = new JMenuItem(Language.get("REMOVE")); meiFileDel.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { for(ActionListener act : meiRemSel.getActionListeners()) @@ -495,7 +498,7 @@ } }); pomFile.add(meiFileDel); - meiFileInfo = new JMenuItem("File informations"); + meiFileInfo = new JMenuItem(Language.get("FILE_INFORMATIONS")); meiFileInfo.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { showFileInfoDialog(); @@ -534,8 +537,8 @@ } public void addURL() { - String str = owner.oppMessages.showInputDialog(this, "Enter URL:", - "Add URL", JOptionPane.PLAIN_MESSAGE); + String str = owner.oppMessages.showInputDialog(this, Language.get( + "ENTER_URL"), Language.get("ADD_URL"), JOptionPane.PLAIN_MESSAGE); if(str == null) return; URL url = null; @@ -584,7 +587,7 @@ owner.fchChooser.getAcceptAllFileFilter()); owner.fchChooser.setFileFilter( owner.fchChooser.getAcceptAllFileFilter()); - owner.fchChooser.setDialogTitle("Add file(s) to playlist"); + owner.fchChooser.setDialogTitle(Language.get("ADD_FILES")); if(owner.fchChooser.showOpenDialog(null) != JFileChooser.APPROVE_OPTION) return; Vector<FileEntry> vpf = new Vector<FileEntry>(); @@ -652,7 +655,7 @@ return f.toString().toLowerCase().endsWith(".m3u"); } public String getDescription() { - return "M3U files"; + return Language.get("M3U_FILES"); } }); owner.fchChooser.addChoosableFileFilter( @@ -661,7 +664,7 @@ return f.toString().toLowerCase().endsWith(".pls"); } public String getDescription() { - return "PLS files"; + return Language.get("PLS_FILES"); } }); owner.fchChooser.setFileFilter( @@ -671,10 +674,10 @@ f.toString().toLowerCase().endsWith(".pls"); } public String getDescription() { - return "M3U and PLS files"; + return Language.get("M3U_AND_PLS_FILES"); } }); - owner.fchChooser.setDialogTitle("Load playlist"); + owner.fchChooser.setDialogTitle(Language.get("LOAD_PLAYLIST")); if(owner.fchChooser.showOpenDialog(null) != JFileChooser.APPROVE_OPTION) return; File file = owner.fchChooser.getSelectedFile(); @@ -789,7 +792,7 @@ return f.toString().toLowerCase().endsWith(".pls"); } public String getDescription() { - return "PLS files"; + return Language.get("PLS_FILES"); } }; owner.fchChooser.addChoosableFileFilter(ffPls); @@ -799,10 +802,10 @@ return f.toString().toLowerCase().endsWith(".m3u"); } public String getDescription() { - return "M3U files"; + return Language.get("M3U_FILES"); } }); - owner.fchChooser.setDialogTitle("Save playlist"); + owner.fchChooser.setDialogTitle(Language.get("SAVE_PLAYLIST")); if(owner.fchChooser.showSaveDialog(null) != JFileChooser.APPROVE_OPTION) return; if(owner.fchChooser.getFileFilter().equals(ffPls)) @@ -942,7 +945,7 @@ ps.println("</html>"); ps.close(); if(!Sys.openURL("playlist.html")) - throw new Exception("Unable to open HTML-file!"); + throw new Exception(Language.get("UNABLE_OPEN_HTML")); } catch(Exception e) { owner.warning(e); Index: SimpleVisualization.java =================================================================== RCS file: /cvsroot/javaamp/javaamp/src/SimpleVisualization.java,v retrieving revision 1.4 retrieving revision 1.5 diff -u -d -r1.4 -r1.5 --- SimpleVisualization.java 28 Feb 2006 11:51:33 -0000 1.4 +++ SimpleVisualization.java 19 Mar 2006 10:17:39 -0000 1.5 @@ -11,10 +11,11 @@ FloatBuffer spectrum; Random rnd; + Spline splinex, spliney, splinez; Vector<float[]> points; float[][] old; float[] sum; - float ang, camx; + float camx, camy, camz, pi; public void init(FloatBuffer spec) { spectrum = spec; @@ -23,7 +24,9 @@ points = new Vector<float[]>(); old = new float[300][30]; sum = new float[20]; - ang = 0f; + camx = rnd.nextFloat() * 60f; + camy = rnd.nextFloat() * 20; + camz = rnd.nextFloat() * 30f - 10f; glClearColor(0, 0, 0, 1); glColor3f(1, 1, 1); @@ -57,10 +60,51 @@ else points.set(i, t); } - ang += 0.005f; - if(ang > Math.PI * 2) - ang -= Math.PI * 2; - camx = (float)(30d + Math.sin(ang) * 30); + if(splinex == null && rnd.nextInt(10) == 0) { + double[] xx = new double[5]; + double[] ff = new double[5]; + for(int i = 0; i < 5; i++) { + xx[i] = i; + if(i == 0) + ff[i] = camx; + else + ff[i] = rnd.nextDouble() * 60d; + } + splinex = new Spline(xx, ff); + + xx = new double[5]; + ff = new double[5]; + for(int i = 0; i < 5; i++) { + xx[i] = i; + if(i == 0) + ff[i] = camy; + else + ff[i] = rnd.nextDouble() * 20d; + } + spliney = new Spline(xx, ff); + + xx = new double[5]; + ff = new double[5]; + for(int i = 0; i < 5; i++) { + xx[i] = i; + if(i == 0) + ff[i] = camz; + else + ff[i] = rnd.nextDouble() * 50d - 10d; + } + splinez = new Spline(xx, ff); + pi = 0; + } + if(splinex != null) { + pi += 0.001f; + if(pi > 4) + splinex = null; + else { + camx = (float)splinex.spline_value(pi); + camy = (float)spliney.spline_value(pi); + camz = (float)splinez.spline_value(pi); + } + } glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glLoadIdentity(); @@ -68,7 +112,7 @@ glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluPerspective(60, 800f / 600f, 0.1f, 1000f); - gluLookAt(camx, 25, -5, camx, 0, 200, 15 - camx / 2f, 30, 0); + gluLookAt(camx, camy, camz, camx, 0, 200, 0, 1, 0); glMatrixMode(GL_MODELVIEW); glPointSize(2); Index: PlayDialog.java =================================================================== RCS file: /cvsroot/javaamp/javaamp/src/PlayDialog.java,v retrieving revision 1.12 retrieving revision 1.13 diff -u -d -r1.12 -r1.13 --- PlayDialog.java 10 Mar 2006 14:29:09 -0000 1.12 +++ PlayDialog.java 19 Mar 2006 10:17:39 -0000 1.13 @@ -25,11 +25,16 @@ JButton btnVis, btnBack, btnPlay, btnPause, btnStop, btnNext, btnOpen, btnRepeat; + JPopupMenu pomPref; + JMenuItem meiJavaAmp; + JMenuItem meiPreferences; + JMenuItem meiExit; + JavaAmp owner; Container cntContainer; BevelBorder bebBorder; int ct, mx, my, ow, oh, ow2, oh2, ow3, oh3; // ct: 0=Fehler, 1=Position, - // 2=Min, 3=Schl + // 2=Min, 3=Schl, 4=Einst int loopmode; // 0=kein, 1=eine datei, 2=alle dateien boolean dockedEqualizer, dockedEqualizer2; boolean dockedPlaylist, dockedPlaylist2; @@ -66,13 +71,16 @@ oh2 = owner.playlistDialog.getLocation().y - oh; ow3 = owner.equalizerDialog.getLocation().x - ow; oh3 = owner.equalizerDialog.getLocation().y - oh; - if(e.getY() >= 12 || e.getX() <= 250) + if(my >= 12) + ct = 1; + else if(mx <= 11) + ct = 4; + else if(mx > 262) + ct = 3; + else if(mx > 250) + ct = 2; + else ct = 1; - else if(my < 12) - if(mx > 262) - ct = 3; - else if(mx > 250) - ct = 2; paint(getGraphics()); } @@ -85,17 +93,20 @@ } if(e.getButton() == MouseEvent.BUTTON1 && my < 12 && e.getY() < 12) - if(ct == 3 && mx > 262 && e.getX() > 262) + if(ct == 3 && e.getX() > 262) System.exit(0); - else if(ct == 2 && mx > 250 && e.getX() > 250) + else if(ct == 2 && e.getX() > 250) owner.setExtendedState(JFrame.ICONIFIED); + else if(ct == 4 && e.getX() <= 11) + pomPref.show(owner, owner.playDialog.getX(), + owner.playDialog.getY()); ct = 0; paint(getGraphics()); } }); addMouseMotionListener(new MouseMotionAdapter() { public void mouseDragged(MouseEvent e) { - if(ct == 0 || ct == 2 || ct == 3) { + if(ct == 0 || ct == 2 || ct == 3 || ct == 4) { if(e.getY() >= 12) ct = 0; else if((ct == 0 || ct == 3) && mx > 262 && e.getX() > 262) @@ -103,6 +114,8 @@ else if((ct == 0 || ct == 2) && mx > 250 && mx <= 262 && e.getX() > 250 && e.getX() <= 262) ct = 2; + else if((ct == 0 || ct == 4) && mx <= 11 && e.getX() <= 11) + ct = 4; else ct = 0; paint(getGraphics()); @@ -199,6 +212,31 @@ cntContainer.setLayout(null); bebBorder = new BevelBorder(BevelBorder.RAISED); + pomPref = new JPopupMenu(); + meiJavaAmp = new JMenuItem("JavaAmp..."); + meiJavaAmp.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + showAbout(); + } + }); + pomPref.add(meiJavaAmp); + pomPref.addSeparator(); + meiPreferences = new JMenuItem(Language.get("PREFERENCES")); + meiPreferences.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + showPreferences(); + } + }); + pomPref.add(meiPreferences); + pomPref.addSeparator(); + meiExit = new JMenuItem(Language.get("EXIT")); + meiExit.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + System.exit(0); + } + }); + pomPref.add(meiExit); + splSpectrum = new SpectrumLabel(owner); splSpectrum.setBounds(5, 17, 100, 53); splSpectrum.init(FSound.FSOUND_DSP_GetSpectrum()); @@ -207,14 +245,14 @@ lblSongInfo.setBounds(107, 17, 163, 15); sliVolume = new JSlider(0, 255, 255); - sliVolume.setToolTipText("Volume"); + sliVolume.setToolTipText(Language.get("VOLUME")); sliVolume.setOpaque(false); sliVolume.setFocusable(false); sliVolume.setBounds(110, 51, 65, 23); sliVolume.addMouseListener(new MouseAdapter() { public void mousePressed(MouseEvent e) { - lblSongInfo.text2 = "Volume: " + (sliVolume.getValue() * 100 / - 255) + " %"; + lblSongInfo.text2 = Language.get("VOLUME") + ": " + + (sliVolume.getValue() * 100 / 255) + " %"; lblSongInfo.showing = false; } @@ -224,15 +262,15 @@ }); sliVolume.addChangeListener(new ChangeListener() { public void stateChanged(ChangeEvent e) { - lblSongInfo.text2 = "Volume: " + (sliVolume.getValue() * 100 / - 255) + " %"; + lblSongInfo.text2 = Language.get("VOLUME") + ": " + + (sliVolume.getValue() * 100 / 255) + " %"; if(pq != null) FSound.FSOUND_SetVolume(pq.c, sliVolume.getValue()); } }); sliPan = new JSlider(0, 255, 128); - sliPan.setToolTipText("Pan"); + sliPan.setToolTipText(Language.get("PAN")); sliPan.setOpaque(false); sliPan.setFocusable(false); sliPan.setBounds(180, 51, 43, 23); @@ -240,11 +278,14 @@ public void mousePressed(MouseEvent e) { int val = sliPan.getValue() * 200 / 255 - 100; if(val < 0) - lblSongInfo.text2 = "Balance: " + (-val) + " % left"; + lblSongInfo.text2 = Language.get("PAN") + ": " + (-val) + + " % " + Language.get("LEFT"); else if(val > 0) - lblSongInfo.text2 = "Balance: " + val + " % right"; + lblSongInfo.text2 = Language.get("PAN") + ": " + val + + " % " + Language.get("RIGHT"); else - lblSongInfo.text2 = "Balance: Center"; + lblSongInfo.text2 = Language.get("PAN") + ": " + + Language.get("CENTER"); lblSongInfo.showing = false; } @@ -256,18 +297,21 @@ public void stateChanged(ChangeEvent e) { int val = sliPan.getValue() * 200 / 255 - 100; if(val < 0) - lblSongInfo.text2 = "Balance: " + (-val) + " % left"; + lblSongInfo.text2 = Language.get("PAN") + ": " + (-val) + + " % " + Language.get("LEFT"); else if(val > 0) - lblSongInfo.text2 = "Balance: " + val + " % right"; + lblSongInfo.text2 = Language.get("PAN") + ": " + val + + " % " + Language.get("RIGHT"); else - lblSongInfo.text2 = "Balance: Center"; + lblSongInfo.text2 = Language.get("PAN") + ": " + + Language.get("CENTER"); if(pq != null) FSound.FSOUND_SetPan(pq.c, sliPan.getValue()); } }); prbTrack = new JProgressBar(0, 255); - prbTrack.setToolTipText("Position"); + prbTrack.setToolTipText(Language.get("POSITION")); prbTrack.setCursor(Cursor.getPredefinedCursor(Cursor.E_RESIZE_CURSOR)); prbTrack.setString("0"); prbTrack.setStringPainted(false); @@ -283,10 +327,16 @@ public void mouseReleased(MouseEvent e) { if(!prbTrack.getString().equals("1")) return; - if(pq != null && pq.stream != null) + if(pq != null && pq.stream != null) { + int x = e.getX(); + if(x < 0) + x = 0; + else if(x >= prbTrack.getWidth()) + x = prbTrack.getWidth() - 1; FSound.FSOUND_Stream_SetTime(pq.stream, (int)((double)( - e.getX() * 255 / prbTrack.getWidth()) / 255d * + x * 255 / prbTrack.getWidth()) / 255d * (double)pq.streamlen)); + } prbTrack.setString("0"); } }); @@ -300,7 +350,7 @@ }); btnVis = new JButton(new ImageIcon(GraphicsLoader.pd10)); - btnVis.setToolTipText("Start visualization"); + btnVis.setToolTipText(Language.get("START_VISUALIZATION")); btnVis.setFocusable(false); btnVis.setBounds(228, 38, 20, 15); btnVis.addActionListener(new ActionListener() { @@ -319,7 +369,7 @@ }); tobEQ = new JToggleButton(new ImageIcon(GraphicsLoader.pd1), true); - tobEQ.setToolTipText("Show equalizer"); + tobEQ.setToolTipText(Language.get("SHOW_EQUALIZER")); tobEQ.setFocusable(false); tobEQ.setBounds(228, 55, 20, 15); tobEQ.addActionListener(new ActionListener() { @@ -334,7 +384,7 @@ }); tobPL = new JToggleButton(new ImageIcon(GraphicsLoader.pd2), true); - tobPL.setToolTipText("Show playlist"); + tobPL.setToolTipText(Language.get("SHOW_PLAYLIST")); tobPL.setFocusable(false); tobPL.setBounds(250, 55, 20, 15); tobPL.addActionListener(new ActionListener() { @@ -350,20 +400,23 @@ tobShuffle = new JToggleButton(new ImageIcon(GraphicsLoader.pd9), false); - tobShuffle.setToolTipText("Shuffle: Off"); + tobShuffle.setToolTipText(Language.get("SHUFFLE") + ": " + + Language.get("OFF")); tobShuffle.setFocusable(false); tobShuffle.setBounds(147, 92, 45, 15); tobShuffle.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if(tobShuffle.isSelected()) - tobShuffle.setToolTipText("Shuffle: On"); + tobShuffle.setToolTipText(Language.get("SHUFFLE") + ": " + + Language.get("ON")); else - tobShuffle.setToolTipText("Shuffle: Off"); + tobShuffle.setToolTipText(Language.get("SHUFFLE") + ": " + + Language.get("OFF")); } }); btnBack = new JButton(new ImageIcon(GraphicsLoader.pd3)); - btnBack.setToolTipText("Previous"); + btnBack.setToolTipText(Language.get("PREVIOUS")); btnBack.setFocusable(false); btnBack.setBounds(5, 90, 20, 20); btnBack.addActionListener(new ActionListener() { @@ -390,7 +443,7 @@ }); btnPlay = new JButton(new ImageIcon(GraphicsLoader.pd4)); - btnPlay.setToolTipText("Play"); + btnPlay.setToolTipText(Language.get("PLAY")); btnPlay.setFocusable(false); btnPlay.setBounds(27, 90, 20, 20); btnPlay.addActionListener(new ActionListener() { @@ -418,7 +471,7 @@ }); btnPause = new JButton(new ImageIcon(GraphicsLoader.pd5)); - btnPause.setToolTipText("Pause"); + btnPause.setToolTipText(Language.get("PAUSE")); btnPause.setFocusable(false); btnPause.setBounds(49, 90, 20, 20); btnPause.addActionListener(new ActionListener() { @@ -433,7 +486,7 @@ }); btnStop = new JButton(new ImageIcon(GraphicsLoader.pd6)); - btnStop.setToolTipText("Stop"); + btnStop.setToolTipText(Language.get("STOP")); btnStop.setFocusable(false); btnStop.setBounds(71, 90, 20, 20); btnStop.addActionListener(new ActionListener() { @@ -446,7 +499,7 @@ }); btnNext = new JButton(new ImageIcon(GraphicsLoader.pd7)); - btnNext.setToolTipText("Next"); + btnNext.setToolTipText(Language.get("NEXT")); btnNext.setFocusable(false); btnNext.setBounds(93, 90, 20, 20); btnNext.addActionListener(new ActionListener() { @@ -472,7 +525,7 @@ }); btnOpen = new JButton(new ImageIcon(GraphicsLoader.pd8)); - btnOpen.setToolTipText("Open"); + btnOpen.setToolTipText(Language.get("OPEN")); btnOpen.setFocusable(false); btnOpen.setBounds(120, 90, 20, 20); btnOpen.addActionListener(new ActionListener() { @@ -487,7 +540,7 @@ owner.fchChooser.getAcceptAllFileFilter()); owner.fchChooser.setFileFilter( owner.fchChooser.getAcceptAllFileFilter()); - owner.fchChooser.setDialogTitle("Open file(s)"); + owner.fchChooser.setDialogTitle(Language.get("OPEN_FILES")); if(owner.fchChooser.showOpenDialog(null) != JFileChooser.APPROVE_OPTION) return; @@ -507,7 +560,8 @@ }); btnRepeat = new JButton(new ImageIcon(GraphicsLoader.pd11)); - btnRepeat.setToolTipText("Repeat: Off"); + btnRepeat.setToolTipText(Language.get("REPEAT") + ": " + + Language.get("OFF")); btnRepeat.setFocusable(false); btnRepeat.setBounds(194, 92, 25, 15); btnRepeat.addActionListener(new ActionListener() { @@ -518,15 +572,18 @@ switch(loopmode) { case 0: btnRepeat.setIcon(new ImageIcon(GraphicsLoader.pd11)); - btnRepeat.setToolTipText("Repeat: Off"); + btnRepeat.setToolTipText(Language.get("REPEAT") + ": " + + Language.get("OFF")); break; case 1: btnRepeat.setIcon(new ImageIcon(GraphicsLoader.pd12)); - btnRepeat.setToolTipText("Repeat: One file"); + btnRepeat.setToolTipText(Language.get("REPEAT") + ": " + + Language.get("ONE_FILE")); break; default: btnRepeat.setIcon(new ImageIcon(GraphicsLoader.pd13)); - btnRepeat.setToolTipText("Repeat: All files"); + btnRepeat.setToolTipText(Language.get("REPEAT") + ": " + + Language.get("ALL_FILES")); } } }); @@ -553,6 +610,19 @@ splSpectrum.start(); } + public void showAbout() { + owner.oppMessages.showMessageDialog(null, "<html><font size=3><b>Java" + + "Amp</b></font><br>Copyright © 2006 Andreas Wiesbauer<br>v0." + + "0.4 - Mar 17 2006<br>Visit http://javaamp.sourceforge.net for up" + + "dates.<br>Relesed under the conditions of the BSD-license.</html" + + ">", "About JavaAmp", JOptionPane.INFORMATION_MESSAGE, + new ImageIcon(GraphicsLoader.jaa1)); + } + + public void showPreferences() { + owner.preferencesDialog.setVisible(true); + } + public void paint(Graphics g) { super.paint(graOffscreen); if(ct <= 1) @@ -561,6 +631,8 @@ graOffscreen.drawImage(GraphicsLoader.pd15, 0, 0, this); else if(ct == 3) graOffscreen.drawImage(GraphicsLoader.pd16, 0, 0, this); + else if(ct == 4) + graOffscreen.drawImage(GraphicsLoader.pd17, 0, 0, this); g.drawImage(buiOffscreen, 0, 0, this); } } \ No newline at end of file Index: FileInformationDialog.java =================================================================== RCS file: /cvsroot/javaamp/javaamp/src/FileInformationDialog.java,v retrieving revision 1.8 retrieving revision 1.9 diff -u -d -r1.8 -r1.9 --- FileInformationDialog.java 7 Mar 2006 16:13:18 -0000 1.8 +++ FileInformationDialog.java 19 Mar 2006 10:17:39 -0000 1.9 @@ -33,7 +33,7 @@ DefaultTableModel dtmGen; public FileInformationDialog(JavaAmp o) { - super(o.playlistDialog, "File informations", true); + super(o.playlistDialog, Language.get("FILE_INFORMATIONS"), true); owner = o; setSize(500, 400); @@ -55,7 +55,7 @@ containers[i] = new Container(); containers[i].setLayout(new BorderLayout()); tables[i] = new JTable(new DefaultTableModel(new String[] { - "Key", "Value" }, 0)); + Language.get("KEY"), Language.get("VALUE") }, 0)); scrollPanes[i] = new JScrollPane(tables[i], JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED); @@ -65,7 +65,7 @@ cntGen = new Container(); cntGen.setLayout(new BorderLayout()); tabGen = new JTable(new DefaultTableModel(new String[] { - "Key", "Value" }, 0)); + Language.get("KEY"), Language.get("VALUE") }, 0)); dtmGen = (DefaultTableModel)tabGen.getModel(); scpGen = new JScrollPane(tabGen, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, @@ -107,6 +107,12 @@ tag.getType())].getModel()).addRow( new String[] { "GENRE", Genres.getGenre( tag.getValueAsString()) }); + else if(tag.getType() == FSound.FSOUND_TAGFIELD_ID3V2 && + ID3v2Tags.tags.get(tag.getName()) != null) + ((DefaultTableModel)tables[getIDfromType( + tag.getType())].getModel()).addRow( + new String[] { ID3v2Tags.tags.get(tag.getName()), + tag.getValueAsString() }); else ((DefaultTableModel)tables[getIDfromType( tag.getType())].getModel()).addRow( @@ -118,23 +124,23 @@ for(int i = 0; i < containers.length; i++) if(tables[i].getModel().getRowCount() > 0) tapType.add(descriptions[i], containers[i]); - dtmGen.addRow(new String[] { "File length", + dtmGen.addRow(new String[] { Language.get("FILE_LENGTH"), JavaAmpToolkit.getDuration(FSound.FSOUND_Stream_GetLengthMs( stream) / 1000) }); if(entry.type == FileEntry.TYPE_FILE) { File file = entry.file; - dtmGen.addRow(new String[] { "File size", (file.length() / - 1024) + " KB" }); - dtmGen.addRow(new String[] { "Last modified", + dtmGen.addRow(new String[] { Language.get("FILE_SIZE"), + (file.length() / 1024) + " KB" }); + dtmGen.addRow(new String[] { Language.get("LAST_MODIFIED"), DateFormat.getDateInstance().format(new Date( file.lastModified())) }); } else { URL url = entry.url; - dtmGen.addRow(new String[] { "Protocol", + dtmGen.addRow(new String[] { Language.get("PROTOCOL"), url.getProtocol() }); } - tapType.add("General", cntGen); + tapType.add(Language.get("GENERAL"), cntGen); FSound.FSOUND_Stream_Close(stream); return true; } Index: LoadInfoDialog.java =================================================================== RCS file: /cvsroot/javaamp/javaamp/src/LoadInfoDialog.java,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -r1.2 -r1.3 --- LoadInfoDialog.java 3 Mar 2006 18:29:19 -0000 1.2 +++ LoadInfoDialog.java 19 Mar 2006 10:17:39 -0000 1.3 @@ -14,7 +14,7 @@ Thread thread; public LoadInfoDialog(JavaAmp o, boolean a) { - super(o.playlistDialog, "Loading file informations...", true); + super(o.playlistDialog, Language.get("LOADING_INFORMATIONS"), true); owner = o; accurate = a; running = true; @@ -37,7 +37,7 @@ prbStatus.setString("0/" + max); prbStatus.setStringPainted(true); - btnCancel = new JButton("Cancel"); + btnCancel = new JButton(Language.get("CANCEL")); btnCancel.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { running = false; Index: GetFileInfoThread.java =================================================================== RCS file: /cvsroot/javaamp/javaamp/src/GetFileInfoThread.java,v retrieving revision 1.6 retrieving revision 1.7 diff -u -d -r1.6 -r1.7 --- GetFileInfoThread.java 28 Feb 2006 16:08:13 -0000 1.6 +++ GetFileInfoThread.java 19 Mar 2006 10:17:39 -0000 1.7 @@ -90,6 +90,14 @@ flag = false; break; } + else { + fld = new FSoundTagField(val, "TPE1"); + if(FSound.FSOUND_Stream_FindTagField(stream, fld)) { + info.append(fld.getValueAsString()); + flag = false; + break; + } + } } if(!flag) { flag = true; @@ -101,6 +109,14 @@ flag = false; break; } + else { + fld = new FSoundTagField(val, "TIT2"); + if(FSound.FSOUND_Stream_FindTagField(stream, fld)) { + info.append(fld.getValueAsString()); + flag = false; + break; + } + } } } if(flag) { Index: GraphicsLoader.java =================================================================== RCS file: /cvsroot/javaamp/javaamp/src/GraphicsLoader.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -r1.1 -r1.2 --- GraphicsLoader.java 10 Mar 2006 14:29:09 -0000 1.1 +++ GraphicsLoader.java 19 Mar 2006 10:17:39 -0000 1.2 @@ -1,20 +1,29 @@ import java.awt.*; +import java.io.*; public class GraphicsLoader { private static MediaTracker mt; + private static int cid; + + // JavaAmp + static Image jaa1; // EqualizerDialog static Image eqd1, eqd2; // PlayDialog static Image pd1, pd2, pd3, pd4, pd5, pd6, pd7, pd8, pd9, pd10, pd11, pd12, - pd13, pd14, pd15, pd16; + pd13, pd14, pd15, pd16, pd17; public final static void startLoading(Component comp) { Class cls = comp.getClass(); Toolkit tk = comp.getToolkit(); mt = new MediaTracker(comp); + cid = 0; + + // JavaAmp + jaa1 = tk.getImage(cls.getResource("javaamp32.png")); // EqualizerDialog eqd1 = tk.getImage(cls.getResource("presets.png")); @@ -37,26 +46,35 @@ pd14 = tk.getImage(cls.getResource("javaamp.png")); pd15 = tk.getImage(cls.getResource("javaamp1.png")); pd16 = tk.getImage(cls.getResource("javaamp2.png")); + pd17 = tk.getImage(cls.getResource("javaamp3.png")); - mt.addImage(eqd1, 0); - mt.addImage(eqd2, 1); + addImage(jaa1); - mt.addImage(pd1, 2); - mt.addImage(pd2, 3); - mt.addImage(pd3, 4); - mt.addImage(pd4, 5); - mt.addImage(pd5, 6); - mt.addImage(pd6, 7); - mt.addImage(pd7, 8); - mt.addImage(pd8, 9); - mt.addImage(pd9, 10); - mt.addImage(pd10, 11); - mt.addImage(pd11, 12); - mt.addImage(pd12, 13); - mt.addImage(pd13, 14); - mt.addImage(pd14, 15); - mt.addImage(pd15, 16); - mt.addImage(pd16, 17); + addImage(eqd1); + addImage(eqd2); + + addImage(pd1); + addImage(pd2); + addImage(pd3); + addImage(pd4); + addImage(pd5); + addImage(pd6); + addImage(pd7); + addImage(pd8); + addImage(pd9); + addImage(pd10); + addImage(pd11); + addImage(pd12); + addImage(pd13); + addImage(pd14); + addImage(pd15); + addImage(pd16); + addImage(pd17); + } + + private final static void addImage(Image i) { + mt.addImage(i, cid); + cid++; } public final static boolean finishLoading() { |