OSDN Git Service

merge.
[coroid/inqubus.git] / frontend / src / saccubus / MainFrame.java
1 package saccubus;
2
3 import saccubus.converter.Converter;
4 import java.awt.BorderLayout;
5 import java.awt.Dimension;
6 import java.awt.GridBagConstraints;
7 import java.awt.GridBagLayout;
8 import java.awt.GridLayout;
9 import java.awt.Image;
10 import java.awt.Insets;
11 import java.awt.Toolkit;
12 import java.awt.dnd.DnDConstants;
13 import java.awt.dnd.DropTarget;
14 import java.awt.event.ActionEvent;
15 import java.awt.event.ActionListener;
16 import java.awt.event.KeyEvent;
17 import java.awt.event.WindowAdapter;
18 import java.awt.event.WindowEvent;
19 import java.io.File;
20 import javax.swing.BorderFactory;
21 import javax.swing.ButtonGroup;
22 import javax.swing.JButton;
23 import javax.swing.JCheckBox;
24 import javax.swing.JComboBox;
25 import javax.swing.JFileChooser;
26 import javax.swing.JFrame;
27 import javax.swing.JLabel;
28 import javax.swing.JMenu;
29 import javax.swing.JMenuBar;
30 import javax.swing.JMenuItem;
31 import javax.swing.JOptionPane;
32 import javax.swing.JPanel;
33 import javax.swing.JPasswordField;
34 import javax.swing.JRadioButton;
35 import javax.swing.JTabbedPane;
36 import javax.swing.JTextField;
37 import javax.swing.SwingUtilities;
38 import nicobrowser.entity.NicoContent;
39 import saccubus.ConvertStopFlag.State;
40 import saccubus.converter.profile.FfmpegOption;
41 import saccubus.converter.profile.NgSetting;
42 import saccubus.net.TextProgressListener;
43 import saccubus.properties.BasicSetting;
44 import saccubus.properties.ConvertSetting;
45 import saccubus.properties.InputCommentSetting;
46 import saccubus.properties.InputVideoSetting;
47 import saccubus.properties.SProperties;
48 import saccubus.properties.InputTcommentSetting;
49 import saccubus.properties.MovieSetting;
50 import saccubus.properties.OutputVideoSetting;
51 import saccubus.util.FileDropTarget;
52 import saccubus.util.PopupRightClick;
53 import yukihane.nicovideo.NicoDBFinder;
54
55 /**
56  * <p>
57  * \83^\83C\83g\83\8b\82³\82«\82ã\82Î\82·
58  * </p>
59  * 
60  * <p>
61  * \90à\96¾: \83j\83R\83j\83R\93®\89æ\82Ì\93®\89æ\82ð\83R\83\81\83\93\83g\82Â\82«\82Å\95Û\91
62  * </p>
63  * 
64  * <p>
65  * \92\98\8dì\8c : Copyright (c) 2007 PSI
66  * </p>
67  * 
68  * <p>
69  * \89ï\8eÐ\96¼:
70  * </p>
71  * 
72  * @author \96¢\93ü\97Í
73  * @version 1.0
74  */
75 public class MainFrame extends JFrame {
76
77     private static final long serialVersionUID = 2564486741331062989L;
78     public static final String VERSION = "1.22r NicoBrowser\8ag\92£ 1.1.1";
79     public static final Image WinIcon = Toolkit.getDefaultToolkit().createImage(saccubus.MainFrame.class.getResource(
80             "icon32.png"));
81     JPanel contentPane;
82     BorderLayout borderLayout1 = new BorderLayout();
83     JMenuBar jMenuBar1 = new JMenuBar();
84     JMenu jMenuFile = new JMenu();
85     JMenuItem jMenuFileExit = new JMenuItem();
86     JMenu jMenuHelp = new JMenu();
87     JMenuItem jMenuHelpAbout = new JMenuItem();
88     JLabel statusBar = new JLabel();
89     JTabbedPane MainTabbedPane = new JTabbedPane();
90     JPanel SavingInfoTabPanel = new JPanel();
91     JPanel FFMpegTabPanel = new JPanel();
92     JPanel VideoInfoPanel = new JPanel();
93     JTextField VideoID_TextField = new JTextField();
94     JButton DoButton = new JButton();
95     public static final String DoButtonDefString = "\95Ï\8a·";
96     public static final String DoButtonStopString = "\92â\8e~";
97     public static final String DoButtonWaitString = "\91Ò\8b@";
98     JPanel UserInfoPanel = new JPanel();
99     GridBagLayout gridBagLayout3 = new GridBagLayout();
100     JLabel MailAddrLabel = new JLabel();
101     JTextField MailAddrField = new JTextField();
102     JLabel PasswordLabel = new JLabel();
103     JPasswordField PasswordField = new JPasswordField();
104     GridBagLayout gridBagLayout4 = new GridBagLayout();
105     GridBagLayout gridBagLayout6 = new GridBagLayout();
106     ButtonGroup CommentSaveButtonGroup = new ButtonGroup();
107     ButtonGroup ConvSaveButtonGroup = new ButtonGroup();
108
109     public MainFrame() {
110         videoSaveInfoPanel = savePanel.getVideoSaveInfoPanel();
111
112         try {
113             setDefaultCloseOperation(EXIT_ON_CLOSE);
114             jbInit();
115             setPopup();
116             setDropTarget();
117             SProperties setting = SProperties.loadSetting(null,
118                     null);
119             this.setSetting(setting);
120         } catch (Exception exception) {
121             exception.printStackTrace();
122         }
123     }
124
125     /**
126      * \83R\83\93\83|\81[\83l\83\93\83g\82Ì\8f\89\8aú\89»\81B
127      *
128      * @throws java.lang.Exception
129      */
130     private void jbInit() throws Exception {
131         GridBagConstraints gridBagConstraints74 = new GridBagConstraints(1, 1, 1, 1, 0.0, 0.0, GridBagConstraints.CENTER,
132                 GridBagConstraints.BOTH, new Insets(0, 0, 0, 5), 0, 0);
133         gridBagConstraints74.gridwidth = 2;
134         GridBagConstraints gridBagConstraints73 = new GridBagConstraints();
135         gridBagConstraints73.fill = GridBagConstraints.HORIZONTAL;
136         gridBagConstraints73.gridy = 6;
137         gridBagConstraints73.weightx = 1.0;
138         gridBagConstraints73.gridwidth = 4;
139         gridBagConstraints73.insets = new Insets(0, 0, 0, 5);
140         gridBagConstraints73.gridx = 1;
141         GridBagConstraints gridBagConstraints72 = new GridBagConstraints();
142         gridBagConstraints72.gridx = 0;
143         gridBagConstraints72.anchor = GridBagConstraints.WEST;
144         gridBagConstraints72.insets = new Insets(0, 5, 0, 5);
145         gridBagConstraints72.fill = GridBagConstraints.NONE;
146         gridBagConstraints72.gridwidth = 1;
147         gridBagConstraints72.gridy = 6;
148         ShadowKindLabel = new JLabel();
149         ShadowKindLabel.setText("\89e\82Ì\8eí\97Þ");
150         ShadowKindLabel.setDisplayedMnemonic(KeyEvent.VK_UNDEFINED);
151         GridBagConstraints gridBagConstraints71 = new GridBagConstraints(1, 0, 1, 1, 0.0, 0.0, GridBagConstraints.CENTER,
152                 GridBagConstraints.NONE, new Insets(0, 0, 0, 0), 0, 6);
153         gridBagConstraints71.fill = GridBagConstraints.BOTH;
154         gridBagConstraints71.ipady = 0;
155         GridBagConstraints gridBagConstraints70 = new GridBagConstraints();
156         gridBagConstraints70.fill = GridBagConstraints.HORIZONTAL;
157         gridBagConstraints70.gridy = 1;
158         gridBagConstraints70.ipadx = 0;
159         gridBagConstraints70.ipady = 0;
160         gridBagConstraints70.weightx = 1.0;
161         gridBagConstraints70.insets = new Insets(0, 0, 0, 0);
162         gridBagConstraints70.gridx = 1;
163         GridBagConstraints gridBagConstraints69 = new GridBagConstraints();
164         gridBagConstraints69.gridx = 0;
165         gridBagConstraints69.ipadx = 0;
166         gridBagConstraints69.ipady = 0;
167         gridBagConstraints69.insets = new Insets(0, 5, 0, 5);
168         gridBagConstraints69.anchor = GridBagConstraints.WEST;
169         gridBagConstraints69.gridy = 1;
170         GridBagConstraints gridBagConstraints68 = new GridBagConstraints();
171         gridBagConstraints68.fill = GridBagConstraints.BOTH;
172         gridBagConstraints68.gridy = 0;
173         gridBagConstraints68.ipady = 0;
174         gridBagConstraints68.weightx = 1.0;
175         gridBagConstraints68.insets = new Insets(0, 0, 0, 0);
176         gridBagConstraints68.gridx = 1;
177         GridBagConstraints gridBagConstraints67 = new GridBagConstraints();
178         gridBagConstraints67.gridx = 0;
179         gridBagConstraints67.ipadx = 0;
180         gridBagConstraints67.ipady = 0;
181         gridBagConstraints67.insets = new Insets(0, 5, 0, 5);
182         gridBagConstraints67.anchor = GridBagConstraints.WEST;
183         gridBagConstraints67.gridy = 0;
184         GridBagConstraints gridBagConstraints66 = new GridBagConstraints();
185         gridBagConstraints66.gridx = 0;
186         gridBagConstraints66.insets = new Insets(0, 5, 5, 5);
187         gridBagConstraints66.anchor = GridBagConstraints.WEST;
188         gridBagConstraints66.gridwidth = 2;
189         gridBagConstraints66.gridy = 1;
190         ViewCommentLabel = new JLabel();
191         ViewCommentLabel.setText("\95\\8e¦\83R\83\81\83\93\83g\90\94");
192         GridBagConstraints gridBagConstraints65 = new GridBagConstraints();
193         gridBagConstraints65.fill = GridBagConstraints.HORIZONTAL;
194         gridBagConstraints65.gridy = 1;
195         gridBagConstraints65.weightx = 1.0;
196         gridBagConstraints65.gridwidth = 6;
197         gridBagConstraints65.insets = new Insets(0, 5, 5, 5);
198         gridBagConstraints65.gridx = 3;
199         GridBagConstraints gridBagConstraints64 = new GridBagConstraints(1, 1,
200                 1, 1, 0.0, 0.0, GridBagConstraints.CENTER,
201                 GridBagConstraints.BOTH, new Insets(0, 0, 0, 5), 0, 0);
202         gridBagConstraints64.gridy = 3;
203         gridBagConstraints64.fill = GridBagConstraints.HORIZONTAL;
204         gridBagConstraints64.gridx = 4;
205         GridBagConstraints gridBagConstraints63 = new GridBagConstraints(0, 4,
206                 2, 1, 1.0, 0.0, GridBagConstraints.CENTER,
207                 GridBagConstraints.HORIZONTAL, new Insets(0, 5, 0, 5), 0, 0);
208         gridBagConstraints63.gridy = 7;
209         gridBagConstraints63.gridx = 0;
210         gridBagConstraints63.gridwidth = 5;
211         GridBagConstraints gridBagConstraints62 = new GridBagConstraints(0, 3,
212                 2, 1, 1.0, 0.0, GridBagConstraints.CENTER,
213                 GridBagConstraints.BOTH, new Insets(0, 5, 5, 5), 0, 0);
214         gridBagConstraints62.gridy = 5;
215         gridBagConstraints62.gridx = 1;
216         gridBagConstraints62.fill = GridBagConstraints.HORIZONTAL;
217         gridBagConstraints62.insets = new Insets(0, 0, 5, 5);
218         gridBagConstraints62.gridwidth = 4;
219         GridBagConstraints gridBagConstraints61 = new GridBagConstraints(0, 2,
220                 1, 1, 0.0, 0.0, GridBagConstraints.CENTER,
221                 GridBagConstraints.BOTH, new Insets(5, 5, 5, 5), 0, 0);
222         gridBagConstraints61.gridy = 5;
223         gridBagConstraints61.gridx = 0;
224         gridBagConstraints61.fill = GridBagConstraints.VERTICAL;
225         gridBagConstraints61.anchor = GridBagConstraints.WEST;
226         gridBagConstraints61.gridwidth = 1;
227         GridBagConstraints gridBagConstraints60 = new GridBagConstraints(0, 1,
228                 1, 1, 1.0, 0.0, GridBagConstraints.CENTER,
229                 GridBagConstraints.BOTH, new Insets(0, 5, 0, 5), 0, 0);
230         gridBagConstraints60.gridy = 3;
231         gridBagConstraints60.gridx = 1;
232         gridBagConstraints60.fill = GridBagConstraints.HORIZONTAL;
233         gridBagConstraints60.insets = new Insets(0, 0, 0, 5);
234         gridBagConstraints60.gridwidth = 3;
235         GridBagConstraints gridBagConstraints59 = new GridBagConstraints(0, 0,
236                 2, 1, 1.0, 0.0, GridBagConstraints.CENTER,
237                 GridBagConstraints.HORIZONTAL, new Insets(0, 5, 5, 5), 0, 0);
238         gridBagConstraints59.gridy = 3;
239         gridBagConstraints59.insets = new Insets(5, 5, 5, 5);
240         gridBagConstraints59.gridx = 0;
241         gridBagConstraints59.fill = GridBagConstraints.NONE;
242         gridBagConstraints59.anchor = GridBagConstraints.WEST;
243         gridBagConstraints59.weightx = 0.0;
244         gridBagConstraints59.gridwidth = 1;
245         GridBagConstraints gridBagConstraints58 = new GridBagConstraints();
246         gridBagConstraints58.gridx = 0;
247         gridBagConstraints58.anchor = GridBagConstraints.WEST;
248         gridBagConstraints58.insets = new Insets(0, 5, 5, 5);
249         gridBagConstraints58.gridwidth = 5;
250         gridBagConstraints58.weightx = 1.0;
251         gridBagConstraints58.fill = GridBagConstraints.HORIZONTAL;
252         gridBagConstraints58.gridy = 0;
253         GridBagConstraints gridBagConstraints57 = new GridBagConstraints();
254         gridBagConstraints57.fill = GridBagConstraints.BOTH;
255         gridBagConstraints57.gridy = 2;
256         gridBagConstraints57.weightx = 1.0;
257         gridBagConstraints57.insets = new Insets(0, 0, 5, 5);
258         gridBagConstraints57.gridx = 1;
259         GridBagConstraints gridBagConstraints56 = new GridBagConstraints();
260         gridBagConstraints56.gridx = 0;
261         gridBagConstraints56.insets = new Insets(0, 5, 5, 5);
262         gridBagConstraints56.anchor = GridBagConstraints.WEST;
263         gridBagConstraints56.gridy = 2;
264         ExtOptionLabel = new JLabel();
265         ExtOptionLabel.setText("\8fo\97Í\93®\89æ\82Ì\8ag\92£\8eq");
266         GridBagConstraints gridBagConstraints55 = new GridBagConstraints();
267         gridBagConstraints55.gridx = 0;
268         gridBagConstraints55.fill = GridBagConstraints.HORIZONTAL;
269         gridBagConstraints55.weightx = 1.0;
270         gridBagConstraints55.gridwidth = 2;
271         gridBagConstraints55.gridy = 1;
272         GridBagConstraints gridBagConstraints54 = new GridBagConstraints(0, 2,
273                 2, 1, 1.0, 0.0, GridBagConstraints.CENTER,
274                 GridBagConstraints.BOTH, new Insets(5, 5, 5, 5), 0, 0);
275         gridBagConstraints54.gridwidth = 3;
276         GridBagConstraints gridBagConstraints53 = new GridBagConstraints(1, 3,
277                 2, 1, 1.0, 0.0, GridBagConstraints.CENTER,
278                 GridBagConstraints.BOTH, new Insets(0, 0, 5, 5), 0, 0);
279         gridBagConstraints53.gridy = 5;
280         gridBagConstraints53.gridheight = 1;
281         gridBagConstraints53.weightx = 1.0;
282         gridBagConstraints53.gridwidth = 1;
283         GridBagConstraints gridBagConstraints52 = new GridBagConstraints(2, 2,
284                 1, 1, 1.0, 0.0, GridBagConstraints.CENTER,
285                 GridBagConstraints.BOTH, new Insets(0, 0, 5, 5), 0, 0);
286         gridBagConstraints52.gridy = 4;
287         gridBagConstraints52.gridwidth = 1;
288         gridBagConstraints52.weightx = 1.0;
289         gridBagConstraints52.gridx = 1;
290         GridBagConstraints gridBagConstraints51 = new GridBagConstraints(2, 1,
291                 1, 1, 1.0, 0.0, GridBagConstraints.CENTER,
292                 GridBagConstraints.BOTH, new Insets(0, 0, 5, 5), 0, 0);
293         gridBagConstraints51.gridy = 3;
294         gridBagConstraints51.gridwidth = 1;
295         gridBagConstraints51.weightx = 1.0;
296         gridBagConstraints51.gridx = 1;
297         GridBagConstraints gridBagConstraints50 = new GridBagConstraints(0, 3,
298                 1, 1, 0.0, 0.0, GridBagConstraints.WEST,
299                 GridBagConstraints.BOTH, new Insets(0, 5, 5, 5), 0, 0);
300         gridBagConstraints50.gridy = 5;
301         GridBagConstraints gridBagConstraints49 = new GridBagConstraints(0, 2,
302                 2, 1, 0.0, 0.0, GridBagConstraints.WEST,
303                 GridBagConstraints.BOTH, new Insets(0, 5, 5, 5), 0, 0);
304         gridBagConstraints49.gridy = 4;
305         gridBagConstraints49.gridwidth = 1;
306         GridBagConstraints gridBagConstraints48 = new GridBagConstraints(0, 1,
307                 1, 1, 0.0, 0.0, GridBagConstraints.WEST,
308                 GridBagConstraints.BOTH, new Insets(0, 5, 5, 5), 0, 0);
309         gridBagConstraints48.gridy = 3;
310
311         GridBagConstraints gridBagConstraints33 = new GridBagConstraints();
312         gridBagConstraints33.gridx = 0;
313         gridBagConstraints33.fill = GridBagConstraints.HORIZONTAL;
314         gridBagConstraints33.weightx = 1.0;
315         gridBagConstraints33.insets = new Insets(0, 5, 5, 5);
316         gridBagConstraints33.gridwidth = 5;
317         gridBagConstraints33.gridy = 9;
318
319         GridBagConstraints gridBagConstraints14 = new GridBagConstraints();
320         gridBagConstraints14.gridx = 0;
321         gridBagConstraints14.anchor = GridBagConstraints.WEST;
322         gridBagConstraints14.fill = GridBagConstraints.HORIZONTAL;
323         gridBagConstraints14.weightx = 1.0;
324         gridBagConstraints14.gridwidth = 5;
325         gridBagConstraints14.insets = new Insets(0, 5, 0, 5);
326         gridBagConstraints14.gridy = 8;
327         GridBagConstraints gridBagConstraints7 = new GridBagConstraints(0, 0,
328                 1, 1, 1.0, 1.0, GridBagConstraints.NORTH,
329                 GridBagConstraints.HORIZONTAL, new Insets(0, 5, 0, 5), 0, 0);
330         gridBagConstraints7.weighty = 0.0;
331         GridBagConstraints gridBagConstraints6 = new GridBagConstraints();
332         gridBagConstraints6.gridx = 0;
333         gridBagConstraints6.weighty = 1.0;
334         gridBagConstraints6.weightx = 1.0;
335         gridBagConstraints6.insets = new Insets(0, 5, 0, 5);
336         gridBagConstraints6.fill = GridBagConstraints.HORIZONTAL;
337         gridBagConstraints6.anchor = GridBagConstraints.NORTH;
338         gridBagConstraints6.gridy = 1;
339         GridBagConstraints gridBagConstraints1 = new GridBagConstraints(0, 1,
340                 1, 1, 1.0, 0.0, GridBagConstraints.CENTER,
341                 GridBagConstraints.HORIZONTAL, new Insets(0, 5, 0, 5), 0, 0);
342         gridBagConstraints1.fill = GridBagConstraints.HORIZONTAL;
343         gridBagConstraints1.anchor = GridBagConstraints.NORTH;
344         gridBagConstraints1.weighty = 1.0;
345         this.setIconImage(WinIcon);
346         contentPane = (JPanel) this.getContentPane();
347         contentPane.setLayout(borderLayout1);
348         setSize(new Dimension(400, 450));
349         setTitle("\82³\82«\82ã\82Î\82· " + VERSION);
350         this.addWindowListener(new MainFrame_this_windowAdapter(this));
351         statusBar.setText(" ");
352         jMenuFile.setText("\83t\83@\83C\83\8b");
353         jMenuFileExit.setText("\8fI\97¹");
354         jMenuFileExit.addActionListener(new MainFrame_jMenuFileExit_ActionAdapter(
355                 this));
356         jMenuHelp.setText("\83w\83\8b\83v");
357         jMenuHelpAbout.setText("\83o\81[\83W\83\87\83\93\8fî\95ñ");
358         jMenuHelpAbout.addActionListener(new MainFrame_jMenuHelpAbout_ActionAdapter(
359                 this));
360         VideoInfoPanel.setLayout(gridBagLayout1);
361         VideoID_TextField.setText("http://www.nicovideo.jp/watch/");
362         DoButton.setText(DoButtonDefString);
363         DoButton.addActionListener(new MainFrame_DoButton_actionAdapter(this));
364         SavingInfoTabPanel.setLayout(new GridLayout());
365         UserInfoPanel.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(), "\83\86\81[\83U\90Ý\92è"));
366         UserInfoPanel.setLayout(gridBagLayout3);
367         MailAddrLabel.setText("\83\81\81[\83\8b\83A\83h\83\8c\83X");
368         PasswordLabel.setText("\83p\83X\83\8f\81[\83h");
369
370         setListenerToSavePanelButton();
371
372         FFMpegTabPanel.setLayout(gridBagLayout6);
373         PathSettingPanel.setBorder(BorderFactory.createTitledBorder(
374                 BorderFactory.createEtchedBorder(), "\83v\83\8d\83O\83\89\83\80\82Ì\88Ê\92u\82Ì\90Ý\92è"));
375         PathSettingPanel.setLayout(gridBagLayout7);
376         FFmpegPathLabel.setText("FFmpeg");
377         SettingFFmpegPathButton.setText("\8eQ\8fÆ");
378         SettingFFmpegPathButton.addActionListener(new MainFrame_SettingFFmpegPathButton_actionAdapter(
379                 this));
380         VhookPathLabel.setText("\8ag\92£vhook\83\89\83C\83u\83\89\83\8a");
381         SettingVhookPathButton.setText("\8eQ\8fÆ");
382         SettingVhookPathButton.addActionListener(new MainFrame_SettingVhookPathButton_actionAdapter(
383                 this));
384         VhookSettingPanel.setLayout(gridBagLayout8);
385         VhookSettingPanel.setBorder(BorderFactory.createTitledBorder(
386                 BorderFactory.createEtchedBorder(), "\8ag\92£vhook\83\89\83C\83u\83\89\83\8a\82Ì\90Ý\92è"));
387         FFmpegSettingPanel.setBorder(BorderFactory.createTitledBorder(
388                 BorderFactory.createEtchedBorder(), "FFmpeg\82Ì\90Ý\92è"));
389         FFmpegSettingPanel.setLayout(gridBagLayout9);
390         FontPathLabel.setText("\83t\83H\83\93\83g\83p\83X");
391         SettingFontPathButton.setText("\8eQ\8fÆ");
392         SettingFontPathButton.addActionListener(new MainFrame_SettingFontPathButton_actionAdapter(
393                 this));
394         ShowConvVideoCheckBox.setText("\95Ï\8a·\92\86\82Ì\89æ\91\9c\82ð\95\\8e¦\82·\82é");
395         InLabel.setText("\93ü\97Í\83I\83v\83V\83\87\83\93");
396         OutLabel.setText("\8fo\97Í\83I\83v\83V\83\87\83\93");
397         MainOptionLabel.setText("\83\81\83C\83\93\83I\83v\83V\83\87\83\93");
398         FontIndexLabel.setText("\83t\83H\83\93\83g\94Ô\8d\86");
399         VideoID_Label.setText("URL/ID");
400         WayBackLabel.setText("\89ß\8b\8e\83\8d\83O");
401         OpPanel.setLayout(new GridBagLayout());
402
403         BasicInfoTabPanel.setLayout(gridBagLayout12);
404         jMenuBar1.add(jMenuFile);
405         jMenuFile.add(jMenuFileExit);
406         jMenuBar1.add(jMenuHelp);
407         jMenuHelp.add(jMenuHelpAbout);
408         setJMenuBar(jMenuBar1);
409
410         contentPane.add(statusBar, BorderLayout.SOUTH);
411         contentPane.add(MainTabbedPane, java.awt.BorderLayout.CENTER);
412         contentPane.add(VideoInfoPanel, java.awt.BorderLayout.NORTH);
413         UserInfoPanel.add(PasswordField, new GridBagConstraints(1, 1, 1, 1,
414                 1.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH,
415                 new Insets(0, 5, 5, 5), 0, 0));
416         UserInfoPanel.add(MailAddrField, new GridBagConstraints(1, 0, 1, 1,
417                 1.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH,
418                 new Insets(0, 5, 5, 5), 0, 0));
419         UserInfoPanel.add(PasswordLabel, new GridBagConstraints(0, 1, 1, 1,
420                 0.0, 0.0, GridBagConstraints.EAST, GridBagConstraints.NONE,
421                 new Insets(0, 5, 5, 0), 0, 0));
422         UserInfoPanel.add(MailAddrLabel, new GridBagConstraints(0, 0, 1, 1,
423                 0.0, 0.0, GridBagConstraints.EAST, GridBagConstraints.NONE,
424                 new Insets(0, 5, 5, 0), 0, 0));
425         PathSettingPanel.add(FFmpegPathField, new GridBagConstraints(0, 1, 1,
426                 1, 1.0, 0.0, GridBagConstraints.CENTER,
427                 GridBagConstraints.BOTH, new Insets(0, 5, 0, 5), 0, 0));
428         PathSettingPanel.add(SettingFFmpegPathButton, gridBagConstraints74);
429         PathSettingPanel.add(FFmpegPathLabel, new GridBagConstraints(0, 0, 2,
430                 1, 1.0, 0.0, GridBagConstraints.WEST, GridBagConstraints.NONE,
431                 new Insets(0, 5, 5, 5), 0, 0));
432         PathSettingPanel.add(VhookPathField, new GridBagConstraints(0, 3, 1, 1,
433                 1.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH,
434                 new Insets(0, 5, 5, 5), 0, 0));
435         PathSettingPanel.add(SettingVhookPathButton, new GridBagConstraints(1,
436                 3, 1, 1, 0.0, 0.0, GridBagConstraints.CENTER,
437                 GridBagConstraints.BOTH, new Insets(0, 0, 5, 5), 0, 0));
438         PathSettingPanel.add(VhookPathLabel, gridBagConstraints54);
439         FFmpegSettingPanel.add(CommandLineOutOptionField, gridBagConstraints53);
440         FFmpegSettingPanel.add(CommandLineInOptionField, gridBagConstraints52);
441         FFmpegSettingPanel.add(MainOptionField, gridBagConstraints51);
442         FFmpegSettingPanel.add(MainOptionLabel, gridBagConstraints48);
443         FFmpegSettingPanel.add(InLabel, gridBagConstraints49);
444         FFmpegSettingPanel.add(OutLabel, gridBagConstraints50);
445         FFmpegSettingPanel.add(getFFmpegOptionComboBoxPanel(),
446                 gridBagConstraints55);
447         FFmpegSettingPanel.add(ExtOptionLabel, gridBagConstraints56);
448         FFmpegSettingPanel.add(getExtOptionField(), gridBagConstraints57);
449         VideoInfoPanel.add(DoButton, gridBagConstraints71);
450         VideoInfoPanel.add(OpPanel, new GridBagConstraints(0, 0, 1, 1, 1.0,
451                 0.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH,
452                 new Insets(0, 0, 0, 0), 0, 0));
453         OpPanel.add(VideoID_Label, gridBagConstraints67);
454         OpPanel.add(VideoID_TextField, gridBagConstraints68);
455         OpPanel.add(WayBackLabel, gridBagConstraints69);
456         OpPanel.add(WayBackField, gridBagConstraints70);
457
458         MainTabbedPane.add(BasicInfoTabPanel, "\8aî\96{\90Ý\92è");
459         MainTabbedPane.add(SavingInfoTabPanel, "\95Û\91\90Ý\92è");
460         MainTabbedPane.add(FFMpegTabPanel, "\93®\89æ\90Ý\92è");
461         MainTabbedPane.addTab("\95Ï\8a·\90Ý\92è", null, getConvertingSettingPanel(), null);
462         SavingInfoTabPanel.add(savePanel);
463         BasicInfoTabPanel.add(UserInfoPanel, gridBagConstraints7);
464         BasicInfoTabPanel.add(getProxyInfoPanel(), gridBagConstraints6);
465         VhookSettingPanel.add(FontPathLabel, gridBagConstraints59);
466         VhookSettingPanel.add(ShowConvVideoCheckBox, gridBagConstraints63);
467         VhookSettingPanel.add(FontPathField, gridBagConstraints60);
468         VhookSettingPanel.add(FontIndexField, gridBagConstraints62);
469         VhookSettingPanel.add(FontIndexLabel, gridBagConstraints61);
470         VhookSettingPanel.add(SettingFontPathButton, gridBagConstraints64);
471         VhookSettingPanel.add(getFixFontSizeCheckBox(), gridBagConstraints14);
472         VhookSettingPanel.add(getOpaqueCommentCheckBox(), gridBagConstraints33);
473         VhookSettingPanel.add(getNotUseVhookCheckBox(), gridBagConstraints58);
474         VhookSettingPanel.add(getViewCommentField(), gridBagConstraints65);
475         VhookSettingPanel.add(ViewCommentLabel, gridBagConstraints66);
476         VhookSettingPanel.add(ShadowKindLabel, gridBagConstraints72);
477         VhookSettingPanel.add(getShadowComboBox(), gridBagConstraints73);
478
479         FFMpegTabPanel.add(PathSettingPanel, new GridBagConstraints(0, 0, 1, 1,
480                 1.0, 0.0, GridBagConstraints.NORTHEAST,
481                 GridBagConstraints.HORIZONTAL, new Insets(0, 5, 0, 5), 0, 0));
482         FFMpegTabPanel.add(FFmpegSettingPanel, gridBagConstraints1);
483     }
484
485     /**
486      * \95Û\91\90Ý\92è\83p\83l\83\8b\93à\82Ì\83{\83^\83\93\82É\83A\83N\83V\83\87\83\93\83\8a\83X\83i\82ð\8a\84\82è\93\96\82Ä\82é.
487      */
488     private void setListenerToSavePanelButton() {
489         ActionListener al;
490         al = new InputVideoPanelButtonListener();
491         videoSaveInfoPanel.getShowSavingVideoFolderDialogButton().addActionListener(al);
492         videoSaveInfoPanel.getShowSavingVideoFileDialogButton().addActionListener(al);
493         videoSaveInfoPanel.getNibrFileChooserButton().addActionListener(al);
494
495         al = new VideoUseRadioButtonListener();
496         videoSaveInfoPanel.getVideoNoSaveButton().addActionListener(al);
497         videoSaveInfoPanel.getVideoSaveButton().addActionListener(al);
498         videoSaveInfoPanel.getVideoUseNiBrButton().addActionListener(al);
499
500         al = new InputCommentPanelButtonListener();
501         savePanel.getShowSavingCommentFolderDialogButton().addActionListener(al);
502         savePanel.getShowSavingCommentFileDialogButton().addActionListener(al);
503
504         al = new OutputVideoPanelButtonListener();
505         savePanel.getShowSavingConvertedVideoFolderDialogButton().addActionListener(al);
506         savePanel.getShowSavingConvertedVideoFileDialogButton().addActionListener(al);
507     }
508
509     private void setPopup() {
510         MainOptionField.addMouseListener(new PopupRightClick(
511                 this.MainOptionField));
512         CommandLineInOptionField.addMouseListener(new PopupRightClick(
513                 this.CommandLineInOptionField));
514         CommandLineOutOptionField.addMouseListener(new PopupRightClick(
515                 this.CommandLineOutOptionField));
516         savePanel.getCommentNumField().addMouseListener(new PopupRightClick(
517                 savePanel.getCommentNumField()));
518
519         savePanel.getCommentSavedFileField().addMouseListener(new PopupRightClick(
520                 savePanel.getCommentSavedFileField()));
521         savePanel.getCommentSavedFolderField().addMouseListener(new PopupRightClick(
522                 savePanel.getCommentSavedFolderField()));
523
524         savePanel.getConvertedVideoSavedFileField().addMouseListener(new PopupRightClick(
525                 savePanel.getConvertedVideoSavedFileField()));
526         savePanel.getConvertedVideoSavedFolderField().addMouseListener(new PopupRightClick(
527                 savePanel.getConvertedVideoSavedFolderField()));
528
529         videoSaveInfoPanel.getVideoSavedFileField().addMouseListener(new PopupRightClick(
530                 videoSaveInfoPanel.getVideoSavedFileField()));
531         videoSaveInfoPanel.getVideoSavedFolderField().addMouseListener(new PopupRightClick(
532                 videoSaveInfoPanel.getVideoSavedFolderField()));
533         videoSaveInfoPanel.getNibrFileField().addMouseListener(
534                 new PopupRightClick(videoSaveInfoPanel.getNibrFileField()));
535
536         FFmpegPathField.addMouseListener(new PopupRightClick(
537                 this.FFmpegPathField));
538         VhookPathField.addMouseListener(new PopupRightClick(this.VhookPathField));
539         VideoID_TextField.addMouseListener(new PopupRightClick(
540                 this.VideoID_TextField));
541         ViewCommentField.addMouseListener(new PopupRightClick(
542                 this.ViewCommentField));
543         FontPathField.addMouseListener(new PopupRightClick(this.FontPathField));
544         MailAddrField.addMouseListener(new PopupRightClick(this.MailAddrField));
545         PasswordField.addMouseListener(new PopupRightClick(this.PasswordField));
546         WayBackField.addMouseListener(new PopupRightClick(this.WayBackField));
547
548         ProxyTextField.addMouseListener(new PopupRightClick(this.ProxyTextField));
549         ProxyPortTextField.addMouseListener(new PopupRightClick(
550                 this.ProxyPortTextField));
551
552         FontIndexField.addMouseListener(new PopupRightClick(this.FontIndexField));
553
554         NGWordTextField.addMouseListener(new PopupRightClick(
555                 this.NGWordTextField));
556         NGIDTextField.addMouseListener(new PopupRightClick(this.NGIDTextField));
557     }
558
559     private void setDropTarget() {
560         addTarget(videoSaveInfoPanel.getVideoSavedFileField(), false);
561         addTarget(videoSaveInfoPanel.getVideoSavedFolderField(), true);
562         addTarget(videoSaveInfoPanel.getNibrFileField(), false);
563
564         addTarget(savePanel.getCommentSavedFileField(), false);
565         addTarget(savePanel.getCommentSavedFolderField(), true);
566
567         addTarget(savePanel.getConvertedVideoSavedFileField(), false);
568         addTarget(savePanel.getConvertedVideoSavedFolderField(), true);
569
570         addTarget(FFmpegPathField, false);
571         addTarget(VhookPathField, false);
572         addTarget(FontPathField, false);
573
574     }
575
576     /**
577      * \83e\83L\83X\83g\83t\83B\81[\83\8b\83h\82É\91Î\82µ\83h\83\8d\83b\83v\82ð\8ds\82Á\82½\8fê\8d\87\82É\83t\83@\83C\83\8b\82à\82µ\82­\82Í\83f\83B\83\8c\83N\83g\83\8a\82Ì\95\8e\9a\97ñ\82ð\90Ý\92è\82Å\82«\82é\82æ\82¤\82É\82·\82é.
578      * @param c \90Ý\92è\91Î\8fÛ\82Ì\83e\83L\83X\83g\83t\83B\81[\83\8b\83h\83I\83u\83W\83F\83N\83g.
579      * @param isDir \83f\83B\83\8c\83N\83g\83\8a\82ð\90Ý\92è\82·\82é\8fê\8d\87\82Ítrue, \83t\83@\83C\83\8b\82Ì\8fê\8d\87\82Ífalse.
580      * @return \83h\83\8d\83b\83v\83^\81[\83Q\83b\83g(\97p\93r\96³\82µ).
581      */
582     private DropTarget addTarget(JTextField c, boolean isDir) {
583         return new DropTarget(c, DnDConstants.ACTION_COPY, new FileDropTarget(
584                 c, isDir), true);
585     }
586     private File CurrentDir = new File(".");
587     JPanel PathSettingPanel = new JPanel();
588     JLabel FFmpegPathLabel = new JLabel();
589     GridBagLayout gridBagLayout7 = new GridBagLayout();
590     JTextField FFmpegPathField = new JTextField();
591     JButton SettingFFmpegPathButton = new JButton();
592     JLabel VhookPathLabel = new JLabel();
593     JTextField VhookPathField = new JTextField();
594     JButton SettingVhookPathButton = new JButton();
595     JPanel VhookSettingPanel = new JPanel();
596     GridBagLayout gridBagLayout8 = new GridBagLayout();
597     JPanel FFmpegSettingPanel = new JPanel();
598     GridBagLayout gridBagLayout9 = new GridBagLayout();
599     JLabel FontPathLabel = new JLabel();
600     JTextField FontPathField = new JTextField();
601     JButton SettingFontPathButton = new JButton();
602     JCheckBox ShowConvVideoCheckBox = new JCheckBox();
603     JTextField CommandLineOutOptionField = new JTextField();
604
605     private void showSaveDialog(String title, JTextField field, boolean isSave,
606             boolean isDir) {
607         JFileChooser chooser = new JFileChooser(CurrentDir);
608         chooser.setDialogTitle(title);
609         int code = 0;
610         if (isDir) {
611             chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
612         }
613         if (isSave) {
614             code = chooser.showSaveDialog(this);
615         } else {
616             code = chooser.showOpenDialog(this);
617         }
618         if (code == JFileChooser.APPROVE_OPTION) {
619             if (isDir) {
620                 CurrentDir = chooser.getCurrentDirectory();
621                 field.setText(CurrentDir.getAbsolutePath());
622             } else {
623                 File selected = chooser.getSelectedFile();
624                 CurrentDir = chooser.getCurrentDirectory();
625                 field.setText(selected.getAbsolutePath());
626             }
627         }
628     }
629
630     private SProperties getSetting() {
631         SProperties setting = new SProperties(
632                 getBasicSetting(),
633                 getInputVideoSetting(),
634                 getInputCommentSetting(),
635                 getTcommentSetting(),
636                 getOutputVideoSetting(),
637                 getMovieSetting(),
638                 getConvertSetting());
639         return setting;
640     }
641
642     /**
643      * \90Ý\92è\82ð\89æ\96Ê\82É\94½\89f\82·\82é.
644      * @param setting \94½\89f\82·\82é\90Ý\92è.
645      */
646     private void setSetting(SProperties setting) {
647         // \8aî\96{\90Ý\92è
648         final BasicSetting basic = setting.getBasicSetting();
649         MailAddrField.setText(basic.getUser().getMail());
650         PasswordField.setText(basic.getUser().getPassword());
651         // \83v\83\8d\83L\83V\8aÖ\98A
652         UseProxyCheckBox.setSelected(basic.isProxyUse());
653         ProxyTextField.setText(basic.getProxyHost());
654         int proxy_port = basic.getProxyPort();
655         if (proxy_port >= 0 && proxy_port <= 65535) {
656             ProxyPortTextField.setText(Integer.toString(proxy_port));
657         } else {
658             ProxyPortTextField.setText("");
659         }
660
661         // \95Û\91\90Ý\92è - \93ü\97Í\93®\89æ
662         final InputVideoSetting inVideo = setting.getInputVideoSetting();
663         JRadioButton activeButton;
664         switch (inVideo.getProcessKind()) {
665             case NO_SAVE:
666                 activeButton = videoSaveInfoPanel.getVideoNoSaveButton();
667                 break;
668             case NICOBROWSER:
669                 activeButton = videoSaveInfoPanel.getVideoUseNiBrButton();
670                 break;
671             case SAVE:
672             default:
673                 activeButton = videoSaveInfoPanel.getVideoSaveButton();
674                 break;
675         }
676         activeButton.doClick();
677
678         videoSaveInfoPanel.getVideoSavedFileField().setText(inVideo.getFile().getPath());
679         videoSaveInfoPanel.getVideoSavedFolderField().setText(inVideo.getFolder().getPath());
680         videoSaveInfoPanel.getDelVideoCheckBox().setSelected(inVideo.isDeleteAfterConvert());
681         final boolean videoFixName = inVideo.isAutoNaming();
682         videoSaveInfoPanel.getSaveFileRadioButton().setSelected(!videoFixName);
683         videoSaveInfoPanel.getSaveFolderRadioButton().setSelected(videoFixName);
684         videoSaveInfoPanel.getNibrFileField().setText(inVideo.getNicoBrowserFile().getPath());
685
686         // \95Û\91\90Ý\92è - \93ü\97Í\83R\83\81\83\93\83g
687         final InputCommentSetting inputComment = setting.getInputCommentSetting();
688         savePanel.getSavingCommentCheckBox().setSelected(inputComment.getProcessKind());
689         savePanel.getCommentSavedFileField().setText(inputComment.getFile().getPath());
690         savePanel.getDelCommentCheckBox().setSelected(inputComment.isDeleteAfterConvert());
691         savePanel.getCommentSavedFolderField().setText(inputComment.getFolder().getPath());
692         savePanel.getCommentNumField().setText(Integer.toString(inputComment.getNumOfComment()));
693         savePanel.getFixCommentNumCheckBox().setSelected(inputComment.isSelfAdjustNumOfComment());
694         boolean commentFixName = inputComment.isAutoNaming();
695         savePanel.getCommentSaveFileRadioButton().setSelected(!commentFixName);
696         savePanel.getCommentSaveFolderRadioButton().setSelected(commentFixName);
697
698         // \93\8a\8de\8eÒ\83R\83\81\83\93\83g
699         InputTcommentSetting tcom = setting.getInputTcommentSetting();
700         savePanel.setTcommentDownload(tcom.getProcessKind());
701         savePanel.setTcommentDelete(tcom.isDeleteAfterConvert());
702         savePanel.setTcommentAutoFileName(tcom.isAutoNaming());
703         savePanel.setTcommentDirectoryName(tcom.getFolder().getPath());
704         savePanel.setTcommentFileName(tcom.getFile().getPath());
705
706         // \95Û\91\90Ý\92è - \8fo\97Í\83R\83\81\83\93\83g\95t\82«\93®\89æ
707         final OutputVideoSetting outputVideo = setting.getOutputVideoSetting();
708         savePanel.getSavingConvertedVideoCheckBox().setSelected(outputVideo.getProcessKind());
709         savePanel.getAddCommentCheckBox().setSelected(outputVideo.isAddComment());
710         savePanel.getAddTcommentCheckBox().setSelected(outputVideo.isAddTcomment());
711         savePanel.getConvertedVideoSavedFileField().setText(outputVideo.getFile().getPath());
712         savePanel.getConvertedVideoSavedFolderField().setText(outputVideo.getFolder().getPath());
713         savePanel.getNotAddVideoIdConvVideoCheckBox().setSelected(outputVideo.isCutIdName());
714         boolean convFixName = outputVideo.isAutoNaming();
715         savePanel.getConvSaveFileRadioButton().setSelected(!convFixName);
716         savePanel.getConvSaveFolderRadioButton().setSelected(convFixName);
717
718         // \93®\89æ\90Ý\92è
719         final MovieSetting movie = setting.getMovieSetting();
720         FFmpegPathField.setText(movie.getFfmpeg().toString());
721         VhookPathField.setText(movie.getVhook().toString());
722         ExtOptionField.setText(movie.getFfmpegOption().getExtOption());
723         MainOptionField.setText(movie.getFfmpegOption().getMainOption());
724         CommandLineOutOptionField.setText(movie.getFfmpegOption().getOutOption());
725         CommandLineInOptionField.setText(movie.getFfmpegOption().getInOption());
726         FFmpegOptionModel.reload(movie.getOptionFile());
727
728         // \95Ï\8a·\90Ý\92è
729         final ConvertSetting conv = setting.getConvertSetting();
730         NotUseVhookCheckBox.setSelected(conv.isVhookDisabled());
731         ViewCommentField.setText(Integer.toString(conv.getMaxNumOfComment()));
732         FontPathField.setText(conv.getFont().toString());
733         FontIndexField.setText(Integer.toString(conv.getFontIndex()));
734         ShadowComboBox.setSelectedIndex(conv.getShadowIndex());
735         ShowConvVideoCheckBox.setSelected(conv.isShowConverting());
736         FixFontSizeCheckBox.setSelected(conv.isSelfAdjustFontSize());
737         OpaqueCommentCheckBox.setSelected(conv.isCommentOpaque());
738         NGWordTextField.setText(conv.getNgSetting().getWord());
739         NGIDTextField.setText(conv.getNgSetting().getId());
740     }
741
742     /**
743      * [\83t\83@\83C\83\8b|\8fI\97¹] \83A\83N\83V\83\87\83\93\82ª\8eÀ\8ds\82³\82ê\82Ü\82µ\82½\81B
744      *
745      * @param actionEvent
746      *            ActionEvent
747      */
748     void jMenuFileExit_actionPerformed(ActionEvent actionEvent) {
749         SProperties setting = getSetting();
750         SProperties.saveSetting(setting);
751         System.exit(0);
752     }
753
754     /**
755      * [\83w\83\8b\83v|\83o\81[\83W\83\87\83\93\8fî\95ñ] \83A\83N\83V\83\87\83\93\82ª\8eÀ\8ds\82³\82ê\82Ü\82µ\82½\81B
756      *
757      * @param actionEvent
758      *            ActionEvent
759      */
760     void jMenuHelpAbout_actionPerformed(ActionEvent actionEvent) {
761         MainFrame_AboutBox dlg = new MainFrame_AboutBox(this);
762         dlg.pack();
763         dlg.setLocationRelativeTo(this);
764         dlg.setVisible(true);
765     }
766
767     /* \95Ï\8a·\81E\95Û\91\82·\82é */
768     Converter Converter = null;
769     JTextField CommandLineInOptionField = new JTextField();
770     JLabel InLabel = new JLabel();
771     JLabel OutLabel = new JLabel();
772     JLabel MainOptionLabel = new JLabel();
773     JTextField MainOptionField = new JTextField();
774     JLabel FontIndexLabel = new JLabel();
775     JTextField FontIndexField = new JTextField();
776     JLabel VideoID_Label = new JLabel();
777     JLabel WayBackLabel = new JLabel();
778     JTextField WayBackField = new JTextField();
779     GridBagLayout gridBagLayout10 = new GridBagLayout();
780     GridBagLayout gridBagLayout11 = new GridBagLayout();
781     GridBagLayout gridBagLayout1 = new GridBagLayout();
782     JPanel OpPanel = new JPanel();
783     GridLayout gridLayout1 = new GridLayout();
784     JPanel BasicInfoTabPanel = new JPanel();
785     GridBagLayout gridBagLayout12 = new GridBagLayout();
786     private JPanel ConvertingSettingPanel = null;
787     private JPanel NGWordSettingPanel = null;
788     private JLabel NGWordLavel = null;
789     private JTextField NGWordTextField = null;
790     private JLabel NGIDLabel = null;
791     private JTextField NGIDTextField = null;
792     private JPanel ProxyInfoPanel = null;
793     private JLabel ProxyLabel = null;
794     private JTextField ProxyTextField = null;
795     private JLabel ProxyPortLabel = null;
796     private JTextField ProxyPortTextField = null;
797     private JCheckBox UseProxyCheckBox = null;
798     private JCheckBox FixFontSizeCheckBox = null;
799     private JCheckBox OpaqueCommentCheckBox = null;
800     private final SavePanel savePanel = new SavePanel();
801     private final VideoSaveInfoPanel videoSaveInfoPanel;
802     private JComboBox FFmpegOptionComboBox = null;
803     private JButton FFmpegOptionReloadButton = null;
804     private JPanel FFmpegOptionComboBoxPanel = null;
805
806     public void DoButton_actionPerformed(ActionEvent e) {
807         if (Converter == null || Converter.isConverted()) {
808             String url;
809
810             // NicoBrowser\83t\83@\83C\83\8b\82ð\97\98\97p\82·\82é\8fê\8d\87\82Í\81A\83t\83@\83C\83\8b\96¼\82©\82ç\83r\83f\83IID\82ð\93Á\92è.
811             if (videoSaveInfoPanel.getVideoUseNiBrButton().isSelected()) {
812                 try {
813                     String fileName = videoSaveInfoPanel.getNibrFileField().getText();
814                     NicoDBFinder finder = NicoDBFinder.getInstance();
815                     NicoContent info = finder.findNicoContent(fileName);
816                     if (info != null) {
817                         url = info.getNicoId();
818                     } else {
819                         url = "";
820                     }
821                 } catch (Exception ex) {
822                     JOptionPane.showMessageDialog(this, ex.getMessage(), "\83G\83\89\81[", JOptionPane.ERROR_MESSAGE);
823                     return;
824                 }
825             } else {
826                 url = VideoID_TextField.getText();
827             }
828
829             TextProgressListener sl = new TextProgressListener() {
830
831                 public void setText(final String text) {
832                     SwingUtilities.invokeLater(new Runnable() {
833
834                         public void run() {
835                             statusBar.setText(text);
836                         }
837                     });
838                 }
839             };
840
841             ConvertStopFlag.StateChangeListener scl = new ConvertStopFlag.StateChangeListener() {
842
843                 public void changeState(final State s) {
844                     SwingUtilities.invokeLater(new Runnable() {
845
846                         public void run() {
847                             switch (s) {
848                                 case PROCESSING:
849                                     DoButton.setText(DoButtonStopString);
850                                     break;
851                                 case STOPPING:
852                                     DoButton.setText(DoButtonWaitString);
853                                     break;
854                                 case FINISHED:
855                                     DoButton.setText(DoButtonDefString);
856                             }
857                         }
858                     });
859                 }
860             };
861
862             Converter = new Converter(url, WayBackField.getText(), getSetting().toProfile(), sl,
863                     new ConvertStopFlag(scl));
864             new Thread(Converter).start();
865         } else { /* \8aJ\8en\82µ\82Ä\82¢\82é\82Ì\82Å\81A\83X\83g\83b\83v\82·\82é\81B */
866             final ConvertStopFlag flag = Converter.getStopFlag();
867             if (!flag.needStop()) { /* \82Ü\82¾\83X\83g\83b\83v\82µ\82Ä\82¢\82È\82¢\81B */
868                 flag.requestStop();
869             }
870         }
871     }
872
873     /* FFmpeg\82Ö\82Ì\83p\83X */
874     public void SettingFFmpegPathButton_actionPerformed(ActionEvent e) {
875         showSaveDialog("FFmpeg\82Ö\82Ì\83p\83X", FFmpegPathField, false, false);
876     }
877
878     public void SettingVhookPathButton_actionPerformed(ActionEvent e) {
879         showSaveDialog("\8ag\92£vhook\83\89\83C\83u\83\89\83\8a\82Ö\82Ì\83p\83X", VhookPathField, false, false);
880     }
881
882     public void SettingFontPathButton_actionPerformed(ActionEvent e) {
883         showSaveDialog("\83t\83H\83\93\83g\82Ö\82Ì\83p\83X", FontPathField, false, false);
884     }
885
886     public void this_windowClosing(WindowEvent e) {
887         this.jMenuFileExit_actionPerformed(null);
888     }
889
890     /**
891      * This method initializes ConvertingSettingPanel
892      *
893      * @return javax.swing.JPanel
894      */
895     private JPanel getConvertingSettingPanel() {
896         if (ConvertingSettingPanel == null) {
897             GridBagConstraints gridBagConstraints11 = new GridBagConstraints();
898             gridBagConstraints11.weighty = 1.0;
899             gridBagConstraints11.weightx = 1.0;
900             gridBagConstraints11.insets = new Insets(0, 5, 0, 5);
901             gridBagConstraints11.gridy = 1;
902             gridBagConstraints11.gridx = 0;
903             gridBagConstraints11.anchor = GridBagConstraints.NORTH;
904             gridBagConstraints11.fill = GridBagConstraints.HORIZONTAL;
905             GridBagConstraints gridBagConstraints = new GridBagConstraints(0,
906                     2, 1, 1, 1.0, 1.0, GridBagConstraints.NORTH,
907                     GridBagConstraints.HORIZONTAL, new Insets(0, 5, 0, 5), 0, 0);
908             gridBagConstraints.gridx = 0;
909             gridBagConstraints.anchor = GridBagConstraints.CENTER;
910             gridBagConstraints.weighty = 0.0;
911             gridBagConstraints.gridy = 0;
912             ConvertingSettingPanel = new JPanel();
913             ConvertingSettingPanel.setLayout(new GridBagLayout());
914             ConvertingSettingPanel.add(getNGWordSettingPanel(),
915                     gridBagConstraints11);
916             ConvertingSettingPanel.add(VhookSettingPanel, gridBagConstraints);
917         }
918         return ConvertingSettingPanel;
919     }
920
921     /**
922      * This method initializes NGWordSettingPanel
923      *
924      * @return javax.swing.JPanel
925      */
926     private JPanel getNGWordSettingPanel() {
927         if (NGWordSettingPanel == null) {
928             GridBagConstraints gridBagConstraints5 = new GridBagConstraints();
929             gridBagConstraints5.fill = GridBagConstraints.HORIZONTAL;
930             gridBagConstraints5.gridy = 1;
931             gridBagConstraints5.weightx = 1.0;
932             gridBagConstraints5.insets = new Insets(0, 5, 5, 5);
933             gridBagConstraints5.gridx = 1;
934             GridBagConstraints gridBagConstraints4 = new GridBagConstraints();
935             gridBagConstraints4.gridx = 0;
936             gridBagConstraints4.anchor = GridBagConstraints.WEST;
937             gridBagConstraints4.insets = new Insets(0, 5, 5, 0);
938             gridBagConstraints4.gridy = 1;
939             NGIDLabel = new JLabel();
940             NGIDLabel.setText("NG ID");
941             GridBagConstraints gridBagConstraints3 = new GridBagConstraints();
942             gridBagConstraints3.fill = GridBagConstraints.HORIZONTAL;
943             gridBagConstraints3.gridy = 0;
944             gridBagConstraints3.weightx = 1.0;
945             gridBagConstraints3.insets = new Insets(0, 5, 5, 5);
946             gridBagConstraints3.gridx = 1;
947             GridBagConstraints gridBagConstraints2 = new GridBagConstraints();
948             gridBagConstraints2.gridx = 0;
949             gridBagConstraints2.insets = new Insets(0, 5, 5, 0);
950             gridBagConstraints2.gridy = 0;
951             NGWordLavel = new JLabel();
952             NGWordLavel.setText("NG\83\8f\81[\83h");
953             NGWordSettingPanel = new JPanel();
954             NGWordSettingPanel.setLayout(new GridBagLayout());
955             NGWordSettingPanel.setBorder(BorderFactory.createTitledBorder(null,
956                     "NG\83\8f\81[\83h\81EID\90Ý\92è"));
957             NGWordSettingPanel.add(NGWordLavel, gridBagConstraints2);
958             NGWordSettingPanel.add(getNGWordTextField(), gridBagConstraints3);
959             NGWordSettingPanel.add(NGIDLabel, gridBagConstraints4);
960             NGWordSettingPanel.add(getNGIDTextField(), gridBagConstraints5);
961         }
962         return NGWordSettingPanel;
963     }
964
965     /**
966      * This method initializes NGWordTextField
967      *
968      * @return javax.swing.JTextField
969      */
970     private JTextField getNGWordTextField() {
971         if (NGWordTextField == null) {
972             NGWordTextField = new JTextField();
973         }
974         return NGWordTextField;
975     }
976
977     /**
978      * This method initializes NGIDTextField
979      *
980      * @return javax.swing.JTextField
981      */
982     private JTextField getNGIDTextField() {
983         if (NGIDTextField == null) {
984             NGIDTextField = new JTextField();
985         }
986         return NGIDTextField;
987     }
988
989     /**
990      * This method initializes ProxyInfoPanel
991      *
992      * @return javax.swing.JPanel
993      */
994     private JPanel getProxyInfoPanel() {
995         if (ProxyInfoPanel == null) {
996             GridBagConstraints gridBagConstraints13 = new GridBagConstraints();
997             gridBagConstraints13.gridx = 0;
998             gridBagConstraints13.gridwidth = 2;
999             gridBagConstraints13.weightx = 1.0;
1000             gridBagConstraints13.fill = GridBagConstraints.HORIZONTAL;
1001             gridBagConstraints13.insets = new Insets(0, 5, 0, 5);
1002             gridBagConstraints13.gridy = 0;
1003             GridBagConstraints gridBagConstraints12 = new GridBagConstraints();
1004             gridBagConstraints12.fill = GridBagConstraints.HORIZONTAL;
1005             gridBagConstraints12.gridy = 2;
1006             gridBagConstraints12.weightx = 1.0;
1007             gridBagConstraints12.insets = new Insets(5, 0, 5, 5);
1008             gridBagConstraints12.gridx = 1;
1009             GridBagConstraints gridBagConstraints10 = new GridBagConstraints();
1010             gridBagConstraints10.gridx = 0;
1011             gridBagConstraints10.insets = new Insets(5, 5, 5, 5);
1012             gridBagConstraints10.gridy = 2;
1013             ProxyPortLabel = new JLabel();
1014             ProxyPortLabel.setText("\83|\81[\83g\94Ô\8d\86");
1015             GridBagConstraints gridBagConstraints9 = new GridBagConstraints();
1016             gridBagConstraints9.fill = GridBagConstraints.BOTH;
1017             gridBagConstraints9.gridy = 1;
1018             gridBagConstraints9.weightx = 1.0;
1019             gridBagConstraints9.insets = new Insets(0, 0, 0, 5);
1020             gridBagConstraints9.gridx = 1;
1021             GridBagConstraints gridBagConstraints8 = new GridBagConstraints();
1022             gridBagConstraints8.gridx = 0;
1023             gridBagConstraints8.insets = new Insets(0, 5, 0, 5);
1024             gridBagConstraints8.fill = GridBagConstraints.NONE;
1025             gridBagConstraints8.anchor = GridBagConstraints.EAST;
1026             gridBagConstraints8.gridy = 1;
1027             ProxyLabel = new JLabel();
1028             ProxyLabel.setText("\83v\83\8d\83L\83V");
1029             ProxyInfoPanel = new JPanel();
1030             ProxyInfoPanel.setLayout(new GridBagLayout());
1031             ProxyInfoPanel.setBorder(BorderFactory.createTitledBorder(null,
1032                     "\83v\83\8d\83L\83V\90Ý\92è"));
1033             ProxyInfoPanel.add(ProxyLabel, gridBagConstraints8);
1034             ProxyInfoPanel.add(getProxyTextField(), gridBagConstraints9);
1035             ProxyInfoPanel.add(ProxyPortLabel, gridBagConstraints10);
1036             ProxyInfoPanel.add(getProxyPortTextField(), gridBagConstraints12);
1037             ProxyInfoPanel.add(getUseProxyCheckBox(), gridBagConstraints13);
1038         }
1039         return ProxyInfoPanel;
1040     }
1041
1042     /**
1043      * This method initializes ProxyTextField
1044      *
1045      * @return javax.swing.JTextField
1046      */
1047     private JTextField getProxyTextField() {
1048         if (ProxyTextField == null) {
1049             ProxyTextField = new JTextField();
1050         }
1051         return ProxyTextField;
1052     }
1053
1054     /**
1055      * This method initializes ProxyPortTextField
1056      *
1057      * @return javax.swing.JTextField
1058      */
1059     private JTextField getProxyPortTextField() {
1060         if (ProxyPortTextField == null) {
1061             ProxyPortTextField = new JTextField();
1062         }
1063         return ProxyPortTextField;
1064     }
1065
1066     /**
1067      * This method initializes UseProxyCheckBox
1068      *
1069      * @return javax.swing.JCheckBox
1070      */
1071     private JCheckBox getUseProxyCheckBox() {
1072         if (UseProxyCheckBox == null) {
1073             UseProxyCheckBox = new JCheckBox();
1074             UseProxyCheckBox.setText("\83v\83\8d\83L\83V\82ð\8eg\82¤");
1075         }
1076         return UseProxyCheckBox;
1077     }
1078
1079     /**
1080      * This method initializes FixFontSizeCheckBox
1081      *
1082      * @return javax.swing.JCheckBox
1083      */
1084     private JCheckBox getFixFontSizeCheckBox() {
1085         if (FixFontSizeCheckBox == null) {
1086             FixFontSizeCheckBox = new JCheckBox();
1087             FixFontSizeCheckBox.setText("\83t\83H\83\93\83g\83T\83C\83Y\82ð\89æ\96Ê\82É\82 \82í\82¹\82Ä\8e©\93®\92²\90®\82·\82é");
1088         }
1089         return FixFontSizeCheckBox;
1090     }
1091
1092     /**
1093      * This method initializes OpaqueCommentCheckBox
1094      *
1095      * @return javax.swing.JCheckBox
1096      */
1097     private JCheckBox getOpaqueCommentCheckBox() {
1098         if (OpaqueCommentCheckBox == null) {
1099             OpaqueCommentCheckBox = new JCheckBox();
1100             OpaqueCommentCheckBox.setText("\91S\82Ä\82Ì\83R\83\81\83\93\83g\82ð\95s\93§\96¾\82É\82·\82é");
1101         }
1102         return OpaqueCommentCheckBox;
1103     }
1104     /**
1105      * This method initializes FFmpegOptionComboBox
1106      *
1107      * @return javax.swing.JComboBox
1108      */
1109     private final OptionComboBoxModel FFmpegOptionModel = new OptionComboBoxModel();
1110     private JLabel ExtOptionLabel = null;
1111     private JTextField ExtOptionField = null;
1112     private JCheckBox NotUseVhookCheckBox = null;
1113     private JTextField ViewCommentField = null;
1114     private JLabel ViewCommentLabel = null;
1115     private JLabel ShadowKindLabel = null;
1116     private JComboBox ShadowComboBox = null;
1117
1118     private JComboBox getFFmpegOptionComboBox() {
1119         if (FFmpegOptionComboBox == null) {
1120             FFmpegOptionComboBox = new JComboBox(FFmpegOptionModel);
1121             FFmpegOptionComboBox.addActionListener(new java.awt.event.ActionListener() {
1122
1123                 public void actionPerformed(java.awt.event.ActionEvent e) {
1124                     if (FFmpegOptionModel.isFile()) {// \83t\83@\83C\83\8b
1125                         ExtOptionField.setEnabled(false);
1126                         MainOptionField.setEnabled(false);
1127                         CommandLineInOptionField.setEnabled(false);
1128                         CommandLineOutOptionField.setEnabled(false);
1129                     } else {// \83t\83@\83C\83\8b\82Å\82È\82¢
1130                         ExtOptionField.setEnabled(true);
1131                         MainOptionField.setEnabled(true);
1132                         CommandLineInOptionField.setEnabled(true);
1133                         CommandLineOutOptionField.setEnabled(true);
1134                     }
1135                 }
1136             });
1137         }
1138         return FFmpegOptionComboBox;
1139     }
1140
1141     /**
1142      * This method initializes FFmpegOptionReloadButton
1143      *
1144      * @return javax.swing.JButton
1145      */
1146     private JButton getFFmpegOptionReloadButton() {
1147         if (FFmpegOptionReloadButton == null) {
1148             FFmpegOptionReloadButton = new JButton();
1149             FFmpegOptionReloadButton.setText("\8dX\90V");
1150             FFmpegOptionReloadButton.addActionListener(new java.awt.event.ActionListener() {
1151
1152                 public void actionPerformed(java.awt.event.ActionEvent e) {
1153                     FFmpegOptionModel.reload();
1154                 }
1155             });
1156         }
1157         return FFmpegOptionReloadButton;
1158     }
1159
1160     /**
1161      * This method initializes FFmpegOptionComboBoxPanel
1162      *
1163      * @return javax.swing.JPanel
1164      */
1165     private JPanel getFFmpegOptionComboBoxPanel() {
1166         if (FFmpegOptionComboBoxPanel == null) {
1167             GridBagConstraints gridBagConstraints47 = new GridBagConstraints();
1168             gridBagConstraints47.fill = GridBagConstraints.BOTH;
1169             gridBagConstraints47.gridx = -1;
1170             gridBagConstraints47.gridy = -1;
1171             gridBagConstraints47.insets = new Insets(0, 0, 5, 5);
1172             GridBagConstraints gridBagConstraints46 = new GridBagConstraints();
1173             gridBagConstraints46.fill = GridBagConstraints.HORIZONTAL;
1174             gridBagConstraints46.gridwidth = 3;
1175             gridBagConstraints46.gridx = -1;
1176             gridBagConstraints46.gridy = -1;
1177             gridBagConstraints46.weightx = 1.0;
1178             gridBagConstraints46.insets = new Insets(0, 5, 5, 5);
1179             FFmpegOptionComboBoxPanel = new JPanel();
1180             FFmpegOptionComboBoxPanel.setLayout(new GridBagLayout());
1181             FFmpegOptionComboBoxPanel.add(getFFmpegOptionComboBox(),
1182                     gridBagConstraints46);
1183             FFmpegOptionComboBoxPanel.add(getFFmpegOptionReloadButton(),
1184                     gridBagConstraints47);
1185         }
1186         return FFmpegOptionComboBoxPanel;
1187     }
1188
1189     /**
1190      * This method initializes ExtOptionField
1191      *
1192      * @return javax.swing.JTextField
1193      */
1194     private JTextField getExtOptionField() {
1195         if (ExtOptionField == null) {
1196             ExtOptionField = new JTextField();
1197         }
1198         return ExtOptionField;
1199     }
1200
1201     /**
1202      * This method initializes NotUseVhookCheckBox
1203      *
1204      * @return javax.swing.JCheckBox
1205      */
1206     private JCheckBox getNotUseVhookCheckBox() {
1207         if (NotUseVhookCheckBox == null) {
1208             NotUseVhookCheckBox = new JCheckBox();
1209             NotUseVhookCheckBox.setText("\8ag\92£vhook\83\89\83C\83u\83\89\83\8a\82ð\96³\8cø\82É\82·\82é\81i\83f\83o\83b\83O\97p\81j");
1210         }
1211         return NotUseVhookCheckBox;
1212     }
1213
1214     /**
1215      * This method initializes ViewCommentField
1216      *
1217      * @return javax.swing.JTextField
1218      */
1219     private JTextField getViewCommentField() {
1220         if (ViewCommentField == null) {
1221             ViewCommentField = new JTextField();
1222         }
1223         return ViewCommentField;
1224     }
1225
1226     /**
1227      * This method initializes ShadowComboBox
1228      *
1229      * @return javax.swing.JComboBox
1230      */
1231     private JComboBox getShadowComboBox() {
1232         if (ShadowComboBox == null) {
1233             ShadowComboBox = new JComboBox(SProperties.ShadowKindArray);
1234         }
1235         return ShadowComboBox;
1236     }
1237
1238     private BasicSetting getBasicSetting() {
1239         String mail = MailAddrField.getText();
1240         String pass = String.valueOf(PasswordField.getPassword());
1241         boolean proxyUse = UseProxyCheckBox.isSelected();
1242         String proxyHost = ProxyTextField.getText();
1243         int proxyPort;
1244         try {
1245             proxyPort = Integer.parseInt(ProxyPortTextField.getText());
1246         } catch (NumberFormatException e) {
1247             proxyPort = -1;
1248         }
1249         return new BasicSetting(mail, pass, proxyUse, proxyHost, proxyPort);
1250     }
1251
1252     private InputVideoSetting getInputVideoSetting() {
1253         VideoSaveKind kind;
1254         if (videoSaveInfoPanel.getVideoNoSaveButton().isSelected() == true) {
1255             kind = VideoSaveKind.NO_SAVE;
1256         } else if (videoSaveInfoPanel.getVideoUseNiBrButton().isSelected() == true) {
1257             kind = VideoSaveKind.NICOBROWSER;
1258         } else {
1259             kind = VideoSaveKind.SAVE;
1260         }
1261         boolean autoNaming = videoSaveInfoPanel.getSaveFolderRadioButton().isSelected();
1262         String folder = videoSaveInfoPanel.getVideoSavedFolderField().getText();
1263         String file = videoSaveInfoPanel.getVideoSavedFileField().getText();
1264         boolean delete = videoSaveInfoPanel.getDelVideoCheckBox().isSelected();
1265         String nibrFile = videoSaveInfoPanel.getNibrFileField().getText();
1266
1267         return new InputVideoSetting(kind, autoNaming, new File(folder), new File(file), delete, new File(nibrFile));
1268     }
1269
1270     private InputCommentSetting getInputCommentSetting() {
1271         boolean download = savePanel.getSavingCommentCheckBox().isSelected();
1272         String file = savePanel.getCommentSavedFileField().getText();
1273         int back_comment;
1274         try {
1275             back_comment = Integer.parseInt(savePanel.getCommentNumField().getText());
1276         } catch (NumberFormatException ex) {
1277             back_comment = 500;
1278         }
1279         boolean delete = savePanel.getDelCommentCheckBox().isSelected();
1280         boolean autoNaming = savePanel.getCommentSaveFolderRadioButton().isSelected();
1281         String folder = savePanel.getCommentSavedFolderField().getText();
1282         boolean adjustNumOfCom = savePanel.getFixCommentNumCheckBox().isSelected();
1283
1284         return new InputCommentSetting(download, autoNaming, new File(folder), new File(file), delete, adjustNumOfCom,
1285                 back_comment);
1286     }
1287
1288     /**
1289      * \89æ\96Ê\93ü\97Í\92l\82©\82ç\93\8a\8de\8eÒ\83R\83\81\83\93\83g\90Ý\92è\82ð\8dì\90¬\82·\82é.
1290      * @return \8dì\90¬\82µ\82½\93\8a\8de\8eÒ\83R\83\81\83\93\83g\90Ý\92è.
1291      */
1292     private InputTcommentSetting getTcommentSetting() {
1293         boolean down = savePanel.isTcommentDownload();
1294         boolean del = savePanel.isTcommentDelete();
1295         boolean naming = savePanel.isTcommentAutoFileName();
1296         String dir = savePanel.getTcommentDirectoryName();
1297         String f = savePanel.getTcommentFileName();
1298         return new InputTcommentSetting(down, naming, dir, f, del);
1299     }
1300
1301     private OutputVideoSetting getOutputVideoSetting() {
1302         boolean process = savePanel.getSavingConvertedVideoCheckBox().isSelected();
1303         boolean addComment = savePanel.getAddCommentCheckBox().isSelected();
1304         boolean addTcomment = savePanel.getAddTcommentCheckBox().isSelected();
1305         String file = savePanel.getConvertedVideoSavedFileField().getText();
1306         boolean cutId = savePanel.getNotAddVideoIdConvVideoCheckBox().isSelected();
1307         boolean autoNaming = savePanel.getConvSaveFolderRadioButton().isSelected();
1308         String folder = savePanel.getConvertedVideoSavedFolderField().getText();
1309
1310         return new OutputVideoSetting(process, autoNaming, new File(folder), new File(file), cutId, addComment,
1311                 addTcomment);
1312     }
1313
1314     private MovieSetting getMovieSetting() {
1315         String ffmpeg = FFmpegPathField.getText();
1316         String vhook = VhookPathField.getText();
1317         String ext = ExtOptionField.getText();
1318         String main = MainOptionField.getText();
1319         String in = CommandLineInOptionField.getText();
1320         String out = CommandLineOutOptionField.getText();
1321         File optionFile = FFmpegOptionModel.getSelectedFile();
1322
1323         FfmpegOption opt = new FfmpegOption(ext, main, in, out);
1324         return new MovieSetting(new File(ffmpeg), new File(vhook), optionFile, opt);
1325     }
1326
1327     private ConvertSetting getConvertSetting() {
1328         boolean vhookDisabled = NotUseVhookCheckBox.isSelected();
1329         int maxComment = 30;
1330         try {
1331             maxComment = Integer.parseInt(ViewCommentField.getText());
1332         } catch (NumberFormatException ex) {
1333         }
1334         File font = new File(FontPathField.getText());
1335         int fontIndex = Integer.parseInt(FontIndexField.getText());
1336         int shadowIndex = ShadowComboBox.getSelectedIndex();
1337         boolean showConv = ShowConvVideoCheckBox.isSelected();
1338         boolean adjustFont = FixFontSizeCheckBox.isSelected();
1339         boolean commentOpaque = OpaqueCommentCheckBox.isSelected();
1340         NgSetting ngSetting = new NgSetting(NGWordTextField.getText(), NGIDTextField.getText());
1341
1342         return new ConvertSetting(vhookDisabled, maxComment, font, fontIndex, shadowIndex, showConv, adjustFont,
1343                 commentOpaque, ngSetting);
1344     }
1345
1346     private class InputVideoPanelButtonListener implements ActionListener {
1347
1348         public void actionPerformed(ActionEvent e) {
1349             final Object source = e.getSource();
1350             final VideoSaveInfoPanel panel = videoSaveInfoPanel;
1351             String title;
1352             JTextField field;
1353             boolean isSave;
1354             boolean isDir;
1355
1356             if (source == panel.getShowSavingVideoFolderDialogButton()) {
1357                 title = "\93®\89æ\82Ì\95Û\91\90æ(\83t\83H\83\8b\83_)";
1358                 field = panel.getVideoSavedFolderField();
1359                 isSave = true;
1360                 isDir = true;
1361             } else if (source == panel.getShowSavingVideoFileDialogButton()) {
1362                 title = "\93®\89æ\82Ì\95Û\91\90æ(\83t\83@\83C\83\8b)";
1363                 field = panel.getVideoSavedFileField();
1364                 isSave = true;
1365                 isDir = false;
1366             } else if (source == panel.getNibrFileChooserButton()) {
1367                 title = "NicoBrowser\83t\83@\83C\83\8b\91I\91ð";
1368                 field = panel.getNibrFileField();
1369                 isSave = false;
1370                 isDir = false;
1371             } else {
1372                 return;
1373             }
1374             showSaveDialog(title, field, isSave, isDir);
1375         }
1376     }
1377
1378     private class InputCommentPanelButtonListener implements ActionListener {
1379
1380         public void actionPerformed(ActionEvent e) {
1381             final Object source = e.getSource();
1382             String title;
1383             JTextField field;
1384             boolean isSave;
1385             boolean isDir;
1386             if (source == savePanel.getShowSavingCommentFolderDialogButton()) {
1387                 title = "\83R\83\81\83\93\83g\82Ì\95Û\91\90æ(\83t\83H\83\8b\83_)";
1388                 field = savePanel.getCommentSavedFolderField();
1389                 isSave = true;
1390                 isDir = true;
1391             } else if (source == savePanel.getShowSavingCommentFolderDialogButton()) {
1392                 title = "\83R\83\81\83\93\83g\82Ì\95Û\91\90æ(\83t\83@\83C\83\8b)";
1393                 field = savePanel.getCommentSavedFileField();
1394                 isSave = true;
1395                 isDir = false;
1396             } else {
1397                 return;
1398             }
1399             showSaveDialog(title, field, isSave, isDir);
1400         }
1401     }
1402
1403     private class OutputVideoPanelButtonListener implements ActionListener {
1404
1405         public void actionPerformed(ActionEvent e) {
1406             final Object source = e.getSource();
1407             String title;
1408             JTextField field;
1409             boolean isSave;
1410             boolean isDir;
1411             if (source == savePanel.getShowSavingConvertedVideoFolderDialogButton()) {
1412                 title = "\83R\83\81\83\93\83g\95t\82«\93®\89æ\82Ì\95Û\91\90æ(\83t\83H\83\8b\83_)";
1413                 field = savePanel.getConvertedVideoSavedFolderField();
1414                 isSave = true;
1415                 isDir = true;
1416             } else if (source == savePanel.getShowSavingConvertedVideoFileDialogButton()) {
1417                 title = "\83R\83\81\83\93\83g\95t\82«\93®\89æ\82Ì\95Û\91\90æ(\83t\83@\83C\83\8b)";
1418                 field = savePanel.getConvertedVideoSavedFileField();
1419                 isSave = true;
1420                 isDir = false;
1421             } else {
1422                 return;
1423             }
1424             showSaveDialog(title, field, isSave, isDir);
1425         }
1426     }
1427
1428     private class VideoUseRadioButtonListener implements ActionListener {
1429
1430         public void actionPerformed(ActionEvent e) {
1431             Object source = e.getSource();
1432             if (source == videoSaveInfoPanel.getVideoUseNiBrButton()) {
1433                 maskExt();
1434             } else {
1435                 maskBase();
1436             }
1437         }
1438
1439         private void maskBase() {
1440             mask(true);
1441         }
1442
1443         private void maskExt() {
1444             mask(false);
1445         }
1446
1447         private void mask(boolean b) {
1448             final VideoSaveInfoPanel panel = videoSaveInfoPanel;
1449             VideoID_TextField.setEditable(b);
1450             panel.getDelVideoCheckBox().setEnabled(b);
1451
1452             panel.getSaveFolderRadioButton().setEnabled(b);
1453             panel.getVideoSavedFolderField().setEnabled(b);
1454             panel.getShowSavingVideoFolderDialogButton().setEnabled(b);
1455
1456             panel.getSaveFileRadioButton().setEnabled(b);
1457             panel.getVideoSavedFileField().setEnabled(b);
1458             panel.getShowSavingVideoFileDialogButton().setEnabled(b);
1459
1460             panel.getNibrFileField().setEnabled(!b);
1461             panel.getNibrFileChooserButton().setEnabled(!b);
1462         }
1463     }
1464 }
1465
1466 class MainFrame_this_windowAdapter extends WindowAdapter {
1467
1468     private MainFrame adaptee;
1469
1470     MainFrame_this_windowAdapter(MainFrame adaptee) {
1471         this.adaptee = adaptee;
1472     }
1473
1474     @Override
1475     public void windowClosing(WindowEvent e) {
1476         adaptee.this_windowClosing(e);
1477     }
1478 }
1479
1480 class MainFrame_SettingFontPathButton_actionAdapter implements ActionListener {
1481
1482     private MainFrame adaptee;
1483
1484     MainFrame_SettingFontPathButton_actionAdapter(MainFrame adaptee) {
1485         this.adaptee = adaptee;
1486     }
1487
1488     public void actionPerformed(ActionEvent e) {
1489         adaptee.SettingFontPathButton_actionPerformed(e);
1490     }
1491 }
1492
1493 class MainFrame_SettingVhookPathButton_actionAdapter implements ActionListener {
1494
1495     private MainFrame adaptee;
1496
1497     MainFrame_SettingVhookPathButton_actionAdapter(MainFrame adaptee) {
1498         this.adaptee = adaptee;
1499     }
1500
1501     public void actionPerformed(ActionEvent e) {
1502         adaptee.SettingVhookPathButton_actionPerformed(e);
1503     }
1504 }
1505
1506 class MainFrame_SettingFFmpegPathButton_actionAdapter implements ActionListener {
1507
1508     private MainFrame adaptee;
1509
1510     MainFrame_SettingFFmpegPathButton_actionAdapter(MainFrame adaptee) {
1511         this.adaptee = adaptee;
1512     }
1513
1514     public void actionPerformed(ActionEvent e) {
1515         adaptee.SettingFFmpegPathButton_actionPerformed(e);
1516     }
1517 }
1518
1519 class MainFrame_DoButton_actionAdapter implements ActionListener {
1520
1521     private MainFrame adaptee;
1522
1523     MainFrame_DoButton_actionAdapter(MainFrame adaptee) {
1524         this.adaptee = adaptee;
1525     }
1526
1527     public void actionPerformed(ActionEvent e) {
1528         adaptee.DoButton_actionPerformed(e);
1529     }
1530 }
1531
1532 class MainFrame_jMenuFileExit_ActionAdapter implements ActionListener {
1533
1534     MainFrame adaptee;
1535
1536     MainFrame_jMenuFileExit_ActionAdapter(MainFrame adaptee) {
1537         this.adaptee = adaptee;
1538     }
1539
1540     public void actionPerformed(ActionEvent actionEvent) {
1541         adaptee.jMenuFileExit_actionPerformed(actionEvent);
1542     }
1543 }
1544
1545 class MainFrame_jMenuHelpAbout_ActionAdapter implements ActionListener {
1546
1547     MainFrame adaptee;
1548
1549     MainFrame_jMenuHelpAbout_ActionAdapter(MainFrame adaptee) {
1550         this.adaptee = adaptee;
1551     }
1552
1553     public void actionPerformed(ActionEvent actionEvent) {
1554         adaptee.jMenuHelpAbout_actionPerformed(actionEvent);
1555     }
1556 }