OSDN Git Service

NGワード登録時, 登録した情報が見えるようにスクロールする
[coroid/inqubus.git] / frontend / src / yukihane / inqubus / gui / FfmpegParamPanel.java
1 package yukihane.inqubus.gui;
2
3 import java.io.File;
4 import javax.swing.BorderFactory;
5 import javax.swing.GroupLayout;
6 import javax.swing.GroupLayout.Alignment;
7 import javax.swing.JCheckBox;
8 import javax.swing.JComboBox;
9 import javax.swing.JLabel;
10 import javax.swing.JPanel;
11 import javax.swing.JTextField;
12 import javax.swing.LayoutStyle.ComponentPlacement;
13 import org.apache.commons.lang.StringUtils;
14 import saccubus.FFmpegSelectedItem;
15 import saccubus.OptionComboBoxModel;
16 import yukihane.inqubus.Config;
17
18 /**
19  *
20  * @author yuki
21  */
22 class FfmpegParamPanel extends JPanel {
23
24     private static final long serialVersionUID = 1L;
25     // ffmpeg - ffmpegパラメータ
26     final OptionComboBoxModel mdlFfmpegOption = new OptionComboBoxModel();
27     final JComboBox<FFmpegSelectedItem> cmbFfmpegOptionFile = new JComboBox<>(mdlFfmpegOption);
28     final JTextField fldFfmpegOptionExtension = new JTextField();
29     final JTextField fldFfmpegOptionMain = new JTextField();
30     final JTextField fldFfmpegOptionIn = new JTextField();
31     final JTextField fldFfmpegOptionOut = new JTextField();
32     final JTextField fldFfmpegOptionAv = new JTextField();
33     final JCheckBox cbFfmpegOptionResize = new JCheckBox("次のサイズに収まるよう縮小(-s)");
34     final JTextField fldFfmpegOptionResizeWidth = new JTextField();
35     final JTextField fldFfmpegOptionResizeHeight = new JTextField();
36     final JCheckBox cbFfmpegOptionKeepAspect = new JCheckBox("アスペクト比を維持");
37
38     void init(Config p) {
39         final String fof = p.getFfmpegOptionFile();
40         mdlFfmpegOption.reload(StringUtils.isNotEmpty(fof) ? new File(fof) : null);
41         fldFfmpegOptionExtension.setText(p.getFfmpegExtension());
42         fldFfmpegOptionMain.setText(p.getFfmpegMainOption());
43         fldFfmpegOptionIn.setText(p.getFfmpegInOption());
44         fldFfmpegOptionOut.setText(p.getFfmpegOutOption());
45         fldFfmpegOptionAv.setText(p.getFfmpegAvOption());
46         cbFfmpegOptionResize.setSelected(p.getFfmpegResizeEnable());
47         fldFfmpegOptionResizeWidth.setText(p.getFfmpegResizeWidth());
48         fldFfmpegOptionResizeHeight.setText(p.getFfmpegResizeHeight());
49         cbFfmpegOptionKeepAspect.setSelected(p.getFfmpegKeepAspect());
50     }
51
52     FfmpegParamPanel() {
53         final JLabel lblFfmpegOptionExtension = new JLabel("出力動画の拡張子");
54         final JLabel lblFfmpegOptionMain = new JLabel("メインオプション");
55         final JLabel lblFfmpegOptionIn = new JLabel("入力オプション");
56         final JLabel lblFfmpegOptionOut = new JLabel("出力オプション");
57         final JLabel lblFfmpegOptionAvfilter = new JLabel("avfilterオプション");
58         final JLabel lblFfmpegOptionResizeWidth = new JLabel("横");
59         final JLabel lblFfmpegOptionResizeHeight = new JLabel("縦");
60
61
62
63         final JPanel pnlFfmpegParamOption = new JPanel();
64         pnlFfmpegParamOption.setBorder(BorderFactory.createEtchedBorder());
65
66         final GroupLayout glFfmpegParamOption = new GroupLayout(pnlFfmpegParamOption);
67         pnlFfmpegParamOption.setLayout(glFfmpegParamOption);
68         glFfmpegParamOption.setHorizontalGroup(
69             glFfmpegParamOption.createParallelGroup(Alignment.LEADING)
70             .addGroup(glFfmpegParamOption.createSequentialGroup()
71                 .addGroup(glFfmpegParamOption.createParallelGroup(Alignment.LEADING)
72                     .addGroup(glFfmpegParamOption.createSequentialGroup()
73                         .addContainerGap()
74                         .addGroup(glFfmpegParamOption.createParallelGroup(Alignment.LEADING)
75                             .addComponent(lblFfmpegOptionAvfilter)
76                             .addComponent(lblFfmpegOptionExtension)
77                             .addComponent(lblFfmpegOptionMain)
78                             .addComponent(lblFfmpegOptionIn)
79                             .addComponent(lblFfmpegOptionOut))
80                         .addPreferredGap(ComponentPlacement.RELATED)
81                         .addGroup(glFfmpegParamOption.createParallelGroup(Alignment.LEADING)
82                             .addComponent(fldFfmpegOptionExtension, GroupLayout.PREFERRED_SIZE, 51, GroupLayout.PREFERRED_SIZE)
83                             .addComponent(fldFfmpegOptionMain, GroupLayout.DEFAULT_SIZE, 268, Short.MAX_VALUE)
84                             .addComponent(fldFfmpegOptionIn, GroupLayout.DEFAULT_SIZE, 268, Short.MAX_VALUE)
85                             .addComponent(fldFfmpegOptionOut, GroupLayout.DEFAULT_SIZE, 268, Short.MAX_VALUE)
86                             .addComponent(fldFfmpegOptionAv, GroupLayout.DEFAULT_SIZE, 268, Short.MAX_VALUE)))
87                     .addGroup(glFfmpegParamOption.createSequentialGroup()
88                         .addGap(12, 12, 12)
89                         .addComponent(cbFfmpegOptionResize)
90                         .addPreferredGap(ComponentPlacement.UNRELATED)
91                         .addComponent(lblFfmpegOptionResizeWidth)
92                         .addPreferredGap(ComponentPlacement.RELATED)
93                         .addComponent(fldFfmpegOptionResizeWidth, GroupLayout.PREFERRED_SIZE, 48, GroupLayout.PREFERRED_SIZE)
94                         .addGap(12, 12, 12)
95                         .addComponent(lblFfmpegOptionResizeHeight)
96                         .addPreferredGap(ComponentPlacement.RELATED)
97                         .addComponent(fldFfmpegOptionResizeHeight, GroupLayout.PREFERRED_SIZE, 48, GroupLayout.PREFERRED_SIZE))
98                     .addGroup(glFfmpegParamOption.createSequentialGroup()
99                         .addGap(33, 33, 33)
100                         .addComponent(cbFfmpegOptionKeepAspect)))
101                 .addContainerGap())
102         );
103         glFfmpegParamOption.setVerticalGroup(
104             glFfmpegParamOption.createParallelGroup(Alignment.LEADING)
105             .addGroup(glFfmpegParamOption.createSequentialGroup()
106                 .addGroup(glFfmpegParamOption.createParallelGroup(Alignment.BASELINE)
107                     .addComponent(lblFfmpegOptionExtension)
108                     .addComponent(fldFfmpegOptionExtension, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
109                 .addGroup(glFfmpegParamOption.createParallelGroup(Alignment.BASELINE)
110                     .addComponent(lblFfmpegOptionMain)
111                     .addComponent(fldFfmpegOptionMain, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
112                 .addGroup(glFfmpegParamOption.createParallelGroup(Alignment.BASELINE)
113                     .addComponent(lblFfmpegOptionIn)
114                     .addComponent(fldFfmpegOptionIn, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
115                 .addGroup(glFfmpegParamOption.createParallelGroup(Alignment.BASELINE)
116                     .addComponent(lblFfmpegOptionOut)
117                     .addComponent(fldFfmpegOptionOut, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
118                 .addGroup(glFfmpegParamOption.createParallelGroup(Alignment.BASELINE)
119                     .addComponent(lblFfmpegOptionAvfilter)
120                     .addComponent(fldFfmpegOptionAv, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
121                 .addGroup(glFfmpegParamOption.createParallelGroup(Alignment.BASELINE)
122                     .addComponent(cbFfmpegOptionResize)
123                     .addComponent(lblFfmpegOptionResizeWidth)
124                     .addComponent(fldFfmpegOptionResizeWidth, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
125                     .addComponent(lblFfmpegOptionResizeHeight)
126                     .addComponent(fldFfmpegOptionResizeHeight, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
127                 .addComponent(cbFfmpegOptionKeepAspect)
128             )
129         );
130
131
132
133         final GroupLayout glFfmpegParam = new GroupLayout(this);
134         setLayout(glFfmpegParam);
135         glFfmpegParam.setHorizontalGroup(
136             glFfmpegParam.createParallelGroup(Alignment.LEADING)
137             .addGroup(glFfmpegParam.createSequentialGroup()
138                 .addContainerGap()
139                 .addGroup(glFfmpegParam.createParallelGroup(Alignment.LEADING)
140                     .addComponent(pnlFfmpegParamOption, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
141                     .addComponent(cmbFfmpegOptionFile, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
142                 .addContainerGap())
143         );
144         glFfmpegParam.setVerticalGroup(
145             glFfmpegParam.createParallelGroup(Alignment.LEADING)
146             .addGroup(glFfmpegParam.createSequentialGroup()
147                 .addContainerGap()
148                 .addComponent(cmbFfmpegOptionFile, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
149                 .addPreferredGap(ComponentPlacement.RELATED)
150                 .addComponent(pnlFfmpegParamOption, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
151                 .addContainerGap())
152         );
153     }
154 }