1 2import se.datadosen.component.*; 3import se.datadosen.jalbum.Config; 4import se.datadosen.util.SmartResourceBundle; 5 6 7SmartResourceBundle texts = SmartResourceBundle.getBundle(new File(skinDirectory, "texts"), "texts"); 8 9 10class FlashPanel extends JCollapsiblePanel { 11 12 String[] wmodeOption = new String[]{ "direct","opaque","gpu" }; 13 JComboBox wmode = new JComboBox(wmodeOption); 14 JLabel wmodeLabel = new JLabel(text.getString("ui.wmode")); 15 16 String[] qualityOption = new String[]{ "high","medium","low" }; 17 JComboBox quality = new JComboBox(qualityOption); 18 JLabel qualityLabel = new JLabel(text.getString("ui.quality")); 19 20 JSpinner preloadAim = new JSpinner(new SpinnerNumberModel(3, 1, 16, 1)); 21 22 JSpinner frameRate = new JSpinner(new SpinnerNumberModel(150, 25, 150, 1)); 23 24 25 public FlashPanel() { 26 super(texts.getString("ui.flashSection"), new RiverLayout()); 27 28 add(wmodeLabel); 29 add("tab", wmode); 30 31 add("p", qualityLabel); 32 add("tab", quality); 33 34 add("p", new JLabel(text.getString("ui.preloadAim"))); 35 add("tab", preloadAim); 36 37 add("p", new JLabel(text.getString("ui.frameRate"))); 38 add("tab", frameRate); 39 } 40} 41 42javax.swing.filechooser.FileFilter mp3Files = new javax.swing.filechooser.FileFilter() { 43 public boolean accept(File f) { 44 return f.isDirectory() || f.getName().toLowerCase().endsWith(".mp3"); 45 } 46 public String getDescription() { 47 return "mp3 files"; 48 } 49}; 50 51class AppearancePanel extends JCollapsiblePanel { 52 53 JColorSelector backgroundColor = new JColorSelector(texts.getString("ui.colorWindowTitle"), new JTextField(6)); 54 55 JCheckBox hideControlPanel = new JCheckBox(text.getString("ui.hideControlPanel")); 56 JCheckBox autostart = new JCheckBox(text.getString("ui.autostart")); 57 JSmartTextField rssSource = new JSmartTextField("album.rss"); 58 59 JSpinner inOutBias = new JSpinner(new SpinnerNumberModel(500, 0, 1000, 10)); 60 JSpinner zoomDrama = new JSpinner(new SpinnerNumberModel(100, 0, 1000, 10)); 61 JSpinner appearTime = new JSpinner(new SpinnerNumberModel(4000, 0, 360000, 500)); 62 JSpinner hangTime = new JSpinner(new SpinnerNumberModel(900, 0, 100000, 100)); 63 JSpinner removeTime = new JSpinner(new SpinnerNumberModel(5000, 0, 360000, 500)); 64 JSmartTextField musicUrl = new JSmartTextField(""); 65 JButton musicButton = new JButton(texts.getString("ui.pickSong")); 66 67 musicButton.addActionListener(new ActionListener() { 68 public void actionPerformed(ActionEvent e) { 69 JFileChooser fc = new JFileChooser(); 70 String url = musicUrl.getText(); 71 if (url.startsWith("file:")) { 72 URL realURL = new URL(url); 73 fc.setSelectedFile(new File(URLDecoder.decode(realURL.getFile(), "UTF-8"))); 74 } 75 fc.setFileFilter(mp3Files); 76 int res = fc.showOpenDialog(window); 77 if (res == JFileChooser.APPROVE_OPTION) { 78 musicUrl.setText(fc.getSelectedFile().toURI().toString()); 79 } 80 } 81 }); 82 JSpinner musicPrebufferTime = new JSpinner(new SpinnerNumberModel(5, 1, 1000, 1)); 83 84 85 86 AppearancePanel() { 87 super(texts.getString("ui.appearanceSection"), new RiverLayout()); 88 89 setExpanded(true); 90 91 backgroundColor.setColor("#000000"); 92 add(new JLabel(texts.getString("ui.backgroundColorWindow"))); 93 add("tab", backgroundColor); 94 add(backgroundColor.getTextComponent()); 95 96 add("p", new JLabel(text.getString("ui.inOutBias"))); 97 add("tab", inOutBias); 98 add("br", new JLabel(text.getString("ui.inOutBias2"))); 99 100 add("p", new JLabel(text.getString("ui.zoomDrama"))); 101 add("tab", zoomDrama); 102 add("br", new JLabel(text.getString("ui.zoomDrama2"))); 103 104 add("p", new JLabel(text.getString("ui.appearTime"))); 105 add("tab", appearTime); 106 add("p", new JLabel(text.getString("ui.hangTime"))); 107 add("tab", hangTime); 108 add("p", new JLabel(text.getString("ui.removeTime"))); 109 add("tab", removeTime); 110 111 add("p", hideControlPanel); 112 add("br", autostart); 113 114 add("p", new JLabel(text.getString("ui.rssSource"))); 115 add("br hfill", rssSource); 116 117 add("p", new JLabel(text.getString("ui.musicUrl"))); 118 add("br hfill", musicUrl); 119 add(musicButton); 120 121 add("p", new JLabel(text.getString("ui.musicPrebufferTime"))); 122 add("br", musicPrebufferTime); 123 124 } 125} 126 127 128 129 130ControlPanel ui = new ControlPanel() { 131 132 FlashPanel flashPanel = new FlashPanel(); 133 AppearancePanel appearancePanel = new AppearancePanel(); 134 135 { 136 JPanel panel = new JPanel(); 137 panel.setLayout(new RiverLayout()); 138 139 panel.add("br hfill", appearancePanel); 140 panel.add("br hfill", flashPanel); 141 142 JScrollPane scrollPane = new JScrollPane(panel, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_NEVER); 143 scrollPane.setViewportBorder(BorderFactory.createEmptyBorder()); 144 scrollPane.setOpaque(false); 145 scrollPane.getViewport().setOpaque(false); 146 147 add("hfill vfill", scrollPane); 148 149 } 150}; 151 152window.setSkinUI(ui); 153