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