4 * Created on 2011/05/28, 18:14:51
6 package yukihane.inqubus.gui;
8 import java.awt.datatransfer.DataFlavor;
9 import java.awt.datatransfer.Transferable;
11 import java.util.Collection;
12 import java.util.List;
13 import java.util.regex.Matcher;
14 import java.util.regex.Pattern;
15 import javax.swing.TransferHandler;
16 import javax.swing.UIManager;
17 import javax.swing.UIManager.LookAndFeelInfo;
18 import yukihane.inqubus.model.SourceTypeComboBoxModel;
19 import yukihane.inqubus.model.Target;
20 import yukihane.inqubus.model.TargetsTableModel;
26 public class MainFrame extends javax.swing.JFrame {
28 private final TargetsTableModel targetModel = new TargetsTableModel();
30 /** Creates new form MainFrame */
33 jPanel1.setTransferHandler(new DownloadListTransferHandler());
34 jTable1.setTransferHandler(new TableTransferHandler());
37 /** This method is called from within the constructor to
38 * initialize the form.
39 * WARNING: Do NOT modify this code. The content of this method is
40 * always regenerated by the Form Editor.
42 @SuppressWarnings("unchecked")
43 // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
44 private void initComponents() {
46 jPanel1 = new javax.swing.JPanel();
47 jScrollPane1 = new javax.swing.JScrollPane();
48 jTable1 = new javax.swing.JTable();
49 jPanel2 = new javax.swing.JPanel();
50 jButton2 = new javax.swing.JButton();
51 jButton3 = new javax.swing.JButton();
52 jButton4 = new javax.swing.JButton();
53 jPanel3 = new javax.swing.JPanel();
54 jButton1 = new javax.swing.JButton();
55 jLabel1 = new javax.swing.JLabel();
56 jLabel2 = new javax.swing.JLabel();
57 jComboBox1 = new javax.swing.JComboBox();
58 jComboBox2 = new javax.swing.JComboBox();
59 jCheckBox1 = new javax.swing.JCheckBox();
60 jCheckBox2 = new javax.swing.JCheckBox();
61 jTextField1 = new javax.swing.JTextField();
62 jTextField2 = new javax.swing.JTextField();
63 jLabel3 = new javax.swing.JLabel();
64 jTextField3 = new javax.swing.JTextField();
65 jLabel4 = new javax.swing.JLabel();
66 jComboBox3 = new javax.swing.JComboBox();
67 jButton5 = new javax.swing.JButton();
68 jButton6 = new javax.swing.JButton();
69 jTextField4 = new javax.swing.JTextField();
70 jButton7 = new javax.swing.JButton();
71 jMenuBar1 = new javax.swing.JMenuBar();
72 jMenu1 = new javax.swing.JMenu();
73 jMenu2 = new javax.swing.JMenu();
75 setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
77 jPanel1.setBorder(javax.swing.BorderFactory.createEtchedBorder());
79 jTable1.setModel(targetModel);
80 jTable1.setDropMode(javax.swing.DropMode.INSERT_ROWS);
81 jScrollPane1.setViewportView(jTable1);
83 jPanel2.setBorder(javax.swing.BorderFactory.createEtchedBorder());
85 jButton2.setText("開始");
87 jButton3.setText("停止");
89 jButton4.setText("選択解除");
91 javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2);
92 jPanel2.setLayout(jPanel2Layout);
93 jPanel2Layout.setHorizontalGroup(
94 jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
95 .addGroup(jPanel2Layout.createSequentialGroup()
97 .addComponent(jButton2)
98 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
99 .addComponent(jButton3)
100 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 250, Short.MAX_VALUE)
101 .addComponent(jButton4)
104 jPanel2Layout.setVerticalGroup(
105 jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
106 .addGroup(jPanel2Layout.createSequentialGroup()
108 .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
109 .addComponent(jButton2)
110 .addComponent(jButton3)
111 .addComponent(jButton4))
112 .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
115 jPanel3.setBorder(javax.swing.BorderFactory.createEtchedBorder());
117 jButton1.setText("適用");
119 jLabel1.setText("動画");
121 jLabel2.setText("コメント");
123 jComboBox1.setModel(new SourceTypeComboBoxModel());
125 jComboBox2.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" }));
127 jCheckBox1.setText("変換を行う");
129 jCheckBox2.setText("自動で処理開始");
131 jLabel3.setText("ID");
133 jLabel4.setText("出力");
135 jComboBox3.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" }));
137 jButton5.setText("...");
139 jButton6.setText("...");
141 jTextField4.setText("jTextField4");
143 jButton7.setText("...");
145 javax.swing.GroupLayout jPanel3Layout = new javax.swing.GroupLayout(jPanel3);
146 jPanel3.setLayout(jPanel3Layout);
147 jPanel3Layout.setHorizontalGroup(
148 jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
149 .addGroup(jPanel3Layout.createSequentialGroup()
151 .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
152 .addGroup(jPanel3Layout.createSequentialGroup()
153 .addComponent(jCheckBox1)
154 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
155 .addComponent(jCheckBox2)
156 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 209, Short.MAX_VALUE)
157 .addComponent(jButton1))
158 .addGroup(jPanel3Layout.createSequentialGroup()
159 .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
160 .addComponent(jLabel2)
161 .addComponent(jLabel1)
162 .addComponent(jLabel3))
163 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
164 .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
165 .addGroup(jPanel3Layout.createSequentialGroup()
166 .addComponent(jComboBox2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
167 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
168 .addComponent(jTextField2, javax.swing.GroupLayout.DEFAULT_SIZE, 306, Short.MAX_VALUE)
169 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
170 .addComponent(jButton6))
171 .addGroup(jPanel3Layout.createSequentialGroup()
172 .addComponent(jComboBox1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
173 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
174 .addComponent(jTextField1, javax.swing.GroupLayout.DEFAULT_SIZE, 334, Short.MAX_VALUE)
175 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
176 .addComponent(jButton5))
177 .addComponent(jTextField3, javax.swing.GroupLayout.PREFERRED_SIZE, 100, javax.swing.GroupLayout.PREFERRED_SIZE)))
178 .addGroup(jPanel3Layout.createSequentialGroup()
179 .addComponent(jLabel4)
180 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
181 .addComponent(jComboBox3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
182 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
183 .addComponent(jTextField4, javax.swing.GroupLayout.DEFAULT_SIZE, 307, Short.MAX_VALUE)
184 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
185 .addComponent(jButton7)))
188 jPanel3Layout.setVerticalGroup(
189 jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
190 .addGroup(jPanel3Layout.createSequentialGroup()
192 .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
193 .addComponent(jLabel3)
194 .addComponent(jTextField3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
195 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
196 .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
197 .addComponent(jLabel1)
198 .addComponent(jComboBox1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
199 .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
200 .addComponent(jButton5))
201 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
202 .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
203 .addComponent(jLabel2)
204 .addComponent(jComboBox2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
205 .addComponent(jTextField2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
206 .addComponent(jButton6))
207 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
208 .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
209 .addComponent(jLabel4)
210 .addComponent(jComboBox3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
211 .addComponent(jTextField4, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
212 .addComponent(jButton7))
214 .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
215 .addComponent(jCheckBox1)
216 .addComponent(jCheckBox2)
217 .addComponent(jButton1))
218 .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
221 javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
222 jPanel1.setLayout(jPanel1Layout);
223 jPanel1Layout.setHorizontalGroup(
224 jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
225 .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup()
227 .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
228 .addComponent(jScrollPane1, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 480, Short.MAX_VALUE)
229 .addComponent(jPanel3, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
230 .addComponent(jPanel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
233 jPanel1Layout.setVerticalGroup(
234 jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
235 .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup()
237 .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 197, Short.MAX_VALUE)
238 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
239 .addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
240 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
241 .addComponent(jPanel3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
245 jMenu1.setText("File");
246 jMenuBar1.add(jMenu1);
248 jMenu2.setText("Edit");
249 jMenuBar1.add(jMenu2);
251 setJMenuBar(jMenuBar1);
253 javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
254 getContentPane().setLayout(layout);
255 layout.setHorizontalGroup(
256 layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
257 .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
259 layout.setVerticalGroup(
260 layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
261 .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
265 }// </editor-fold>//GEN-END:initComponents
268 * @param args the command line arguments
270 public static void main(String args[]) {
272 for (LookAndFeelInfo info : UIManager.getInstalledLookAndFeels()) {
273 if ("Nimbus".equals(info.getName())) {
274 UIManager.setLookAndFeel(info.getClassName());
278 } catch (Exception e) {
280 UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
281 } catch (Exception ex) {
284 java.awt.EventQueue.invokeLater(new Runnable() {
287 new MainFrame().setVisible(true);
291 // Variables declaration - do not modify//GEN-BEGIN:variables
292 private javax.swing.JButton jButton1;
293 private javax.swing.JButton jButton2;
294 private javax.swing.JButton jButton3;
295 private javax.swing.JButton jButton4;
296 private javax.swing.JButton jButton5;
297 private javax.swing.JButton jButton6;
298 private javax.swing.JButton jButton7;
299 private javax.swing.JCheckBox jCheckBox1;
300 private javax.swing.JCheckBox jCheckBox2;
301 private javax.swing.JComboBox jComboBox1;
302 private javax.swing.JComboBox jComboBox2;
303 private javax.swing.JComboBox jComboBox3;
304 private javax.swing.JLabel jLabel1;
305 private javax.swing.JLabel jLabel2;
306 private javax.swing.JLabel jLabel3;
307 private javax.swing.JLabel jLabel4;
308 private javax.swing.JMenu jMenu1;
309 private javax.swing.JMenu jMenu2;
310 private javax.swing.JMenuBar jMenuBar1;
311 private javax.swing.JPanel jPanel1;
312 private javax.swing.JPanel jPanel2;
313 private javax.swing.JPanel jPanel3;
314 private javax.swing.JScrollPane jScrollPane1;
315 private javax.swing.JTable jTable1;
316 private javax.swing.JTextField jTextField1;
317 private javax.swing.JTextField jTextField2;
318 private javax.swing.JTextField jTextField3;
319 private javax.swing.JTextField jTextField4;
320 // End of variables declaration//GEN-END:variables
322 private class DownloadListTransferHandler extends TransferHandler {
324 private final Pattern movieIdPattern = Pattern.compile("(\\w\\w\\d+)");
327 public boolean canImport(TransferHandler.TransferSupport support) {
328 Transferable transferable = support.getTransferable();
329 if (transferable.isDataFlavorSupported(DataFlavor.javaFileListFlavor)
330 || transferable.isDataFlavorSupported(DataFlavor.stringFlavor)) {
337 public boolean importData(TransferHandler.TransferSupport support) {
339 Transferable transferable = support.getTransferable();
340 if (transferable.isDataFlavorSupported(DataFlavor.javaFileListFlavor)) {
341 List<File> data = (List<File>) transferable.getTransferData(DataFlavor.javaFileListFlavor);
342 Collection<Target> targets = Target.from(data);
343 targetModel.addTarget(targets);
344 } else if (transferable.isDataFlavorSupported(DataFlavor.stringFlavor)) {
345 String data = (String) transferable.getTransferData(DataFlavor.stringFlavor);
346 Matcher matcher = movieIdPattern.matcher(data);
347 if (matcher.find()) {
348 String movieId = matcher.group(1);
349 Target target = Target.fromId(movieId);
350 targetModel.addTarget(target);
357 } catch (Exception e) {
364 private class TableTransferHandler extends DownloadListTransferHandler {
367 public boolean canImport(TransferHandler.TransferSupport support) {
368 return super.canImport(support);
372 public boolean importData(TransferHandler.TransferSupport support) {
373 return super.importData(support);