2 * To change this template, choose Tools | Templates
3 * and open the template in the editor.
9 * Created on 2011/05/28, 18:14:51
11 package yukihane.inqubus.gui;
13 import java.awt.datatransfer.DataFlavor;
14 import java.awt.datatransfer.Transferable;
16 import java.util.Collection;
17 import java.util.List;
18 import java.util.regex.Matcher;
19 import java.util.regex.Pattern;
20 import javax.swing.TransferHandler;
21 import javax.swing.UIManager;
22 import javax.swing.UIManager.LookAndFeelInfo;
23 import yukihane.inqubus.model.SourceTypeComboBoxModel;
24 import yukihane.inqubus.model.Target;
25 import yukihane.inqubus.model.TargetsTableModel;
31 public class MainFrame extends javax.swing.JFrame {
33 private final TargetsTableModel targetModel = new TargetsTableModel();
35 /** Creates new form MainFrame */
38 jPanel1.setTransferHandler(new DownloadListTransferHandler());
39 jTable1.setTransferHandler(new TableTransferHandler());
42 /** This method is called from within the constructor to
43 * initialize the form.
44 * WARNING: Do NOT modify this code. The content of this method is
45 * always regenerated by the Form Editor.
47 @SuppressWarnings("unchecked")
48 // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
49 private void initComponents() {
51 jPanel1 = new javax.swing.JPanel();
52 jScrollPane1 = new javax.swing.JScrollPane();
53 jTable1 = new javax.swing.JTable();
54 jPanel2 = new javax.swing.JPanel();
55 jButton2 = new javax.swing.JButton();
56 jButton3 = new javax.swing.JButton();
57 jButton4 = new javax.swing.JButton();
58 jPanel3 = new javax.swing.JPanel();
59 jButton1 = new javax.swing.JButton();
60 jLabel1 = new javax.swing.JLabel();
61 jLabel2 = new javax.swing.JLabel();
62 jLabel3 = new javax.swing.JLabel();
63 jComboBox1 = new javax.swing.JComboBox();
64 jComboBox2 = new javax.swing.JComboBox();
65 jComboBox3 = new javax.swing.JComboBox();
66 jCheckBox1 = new javax.swing.JCheckBox();
67 jCheckBox2 = new javax.swing.JCheckBox();
68 jTextField1 = new javax.swing.JTextField();
69 jTextField2 = new javax.swing.JTextField();
70 jTextField3 = new javax.swing.JTextField();
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 jLabel3.setText("投コメ");
125 jComboBox1.setModel(new SourceTypeComboBoxModel());
127 jComboBox2.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" }));
129 jComboBox3.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" }));
131 jCheckBox1.setText("変換を行う");
133 jCheckBox2.setText("自動で処理開始");
135 jTextField1.setText("jTextField1");
137 jTextField2.setText("jTextField2");
139 jTextField3.setText("jTextField3");
141 javax.swing.GroupLayout jPanel3Layout = new javax.swing.GroupLayout(jPanel3);
142 jPanel3.setLayout(jPanel3Layout);
143 jPanel3Layout.setHorizontalGroup(
144 jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
145 .addGroup(jPanel3Layout.createSequentialGroup()
147 .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
148 .addGroup(jPanel3Layout.createSequentialGroup()
149 .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
150 .addComponent(jLabel3)
151 .addComponent(jLabel2)
152 .addComponent(jLabel1))
153 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
154 .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
155 .addGroup(jPanel3Layout.createSequentialGroup()
156 .addComponent(jComboBox3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
157 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
158 .addComponent(jTextField3, javax.swing.GroupLayout.DEFAULT_SIZE, 352, Short.MAX_VALUE))
159 .addGroup(jPanel3Layout.createSequentialGroup()
160 .addComponent(jComboBox2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
161 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
162 .addComponent(jTextField2, javax.swing.GroupLayout.DEFAULT_SIZE, 352, Short.MAX_VALUE))
163 .addGroup(jPanel3Layout.createSequentialGroup()
164 .addComponent(jComboBox1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
165 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
166 .addComponent(jTextField1, javax.swing.GroupLayout.DEFAULT_SIZE, 380, Short.MAX_VALUE))))
167 .addGroup(jPanel3Layout.createSequentialGroup()
168 .addComponent(jCheckBox1)
169 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
170 .addComponent(jCheckBox2)
171 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 209, Short.MAX_VALUE)
172 .addComponent(jButton1)))
175 jPanel3Layout.setVerticalGroup(
176 jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
177 .addGroup(jPanel3Layout.createSequentialGroup()
179 .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
180 .addComponent(jLabel1)
181 .addComponent(jComboBox1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
182 .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
183 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
184 .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
185 .addComponent(jLabel2)
186 .addComponent(jComboBox2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
187 .addComponent(jTextField2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
188 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
189 .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
190 .addComponent(jLabel3)
191 .addComponent(jComboBox3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
192 .addComponent(jTextField3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
194 .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
195 .addComponent(jCheckBox1)
196 .addComponent(jCheckBox2)
197 .addComponent(jButton1))
198 .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
201 javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
202 jPanel1.setLayout(jPanel1Layout);
203 jPanel1Layout.setHorizontalGroup(
204 jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
205 .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup()
207 .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
208 .addComponent(jScrollPane1, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 480, Short.MAX_VALUE)
209 .addComponent(jPanel3, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
210 .addComponent(jPanel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
213 jPanel1Layout.setVerticalGroup(
214 jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
215 .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup()
217 .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 188, Short.MAX_VALUE)
218 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
219 .addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
220 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
221 .addComponent(jPanel3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
225 jMenu1.setText("File");
226 jMenuBar1.add(jMenu1);
228 jMenu2.setText("Edit");
229 jMenuBar1.add(jMenu2);
231 setJMenuBar(jMenuBar1);
233 javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
234 getContentPane().setLayout(layout);
235 layout.setHorizontalGroup(
236 layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
237 .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
239 layout.setVerticalGroup(
240 layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
241 .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
245 }// </editor-fold>//GEN-END:initComponents
248 * @param args the command line arguments
250 public static void main(String args[]) {
252 for (LookAndFeelInfo info : UIManager.getInstalledLookAndFeels()) {
253 if ("Nimbus".equals(info.getName())) {
254 UIManager.setLookAndFeel(info.getClassName());
258 } catch (Exception e) {
260 UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
261 } catch (Exception ex) {
264 java.awt.EventQueue.invokeLater(new Runnable() {
267 new MainFrame().setVisible(true);
271 // Variables declaration - do not modify//GEN-BEGIN:variables
272 private javax.swing.JButton jButton1;
273 private javax.swing.JButton jButton2;
274 private javax.swing.JButton jButton3;
275 private javax.swing.JButton jButton4;
276 private javax.swing.JCheckBox jCheckBox1;
277 private javax.swing.JCheckBox jCheckBox2;
278 private javax.swing.JComboBox jComboBox1;
279 private javax.swing.JComboBox jComboBox2;
280 private javax.swing.JComboBox jComboBox3;
281 private javax.swing.JLabel jLabel1;
282 private javax.swing.JLabel jLabel2;
283 private javax.swing.JLabel jLabel3;
284 private javax.swing.JMenu jMenu1;
285 private javax.swing.JMenu jMenu2;
286 private javax.swing.JMenuBar jMenuBar1;
287 private javax.swing.JPanel jPanel1;
288 private javax.swing.JPanel jPanel2;
289 private javax.swing.JPanel jPanel3;
290 private javax.swing.JScrollPane jScrollPane1;
291 private javax.swing.JTable jTable1;
292 private javax.swing.JTextField jTextField1;
293 private javax.swing.JTextField jTextField2;
294 private javax.swing.JTextField jTextField3;
295 // End of variables declaration//GEN-END:variables
297 private class DownloadListTransferHandler extends TransferHandler {
299 private final Pattern movieIdPattern = Pattern.compile("(\\w\\w\\d+)");
302 public boolean canImport(TransferHandler.TransferSupport support) {
303 Transferable transferable = support.getTransferable();
304 if (transferable.isDataFlavorSupported(DataFlavor.javaFileListFlavor)
305 || transferable.isDataFlavorSupported(DataFlavor.stringFlavor)) {
312 public boolean importData(TransferHandler.TransferSupport support) {
314 Transferable transferable = support.getTransferable();
315 if (transferable.isDataFlavorSupported(DataFlavor.javaFileListFlavor)) {
316 List<File> data = (List<File>) transferable.getTransferData(DataFlavor.javaFileListFlavor);
317 Collection<Target> targets = Target.from(data);
318 targetModel.addTarget(targets);
319 } else if (transferable.isDataFlavorSupported(DataFlavor.stringFlavor)) {
320 String data = (String) transferable.getTransferData(DataFlavor.stringFlavor);
321 Matcher matcher = movieIdPattern.matcher(data);
322 if (matcher.find()) {
323 String movieId = matcher.group(1);
324 Target target = Target.fromId(movieId);
325 targetModel.addTarget(target);
332 } catch (Exception e) {
339 private class TableTransferHandler extends DownloadListTransferHandler {
342 public boolean canImport(TransferHandler.TransferSupport support) {
343 return super.canImport(support);
347 public boolean importData(TransferHandler.TransferSupport support) {
348 return super.importData(support);