1 package yukihane.inqubus.gui;
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;
22 class FfmpegParamPanel extends JPanel {
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("アスペクト比を維持");
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());
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("縦");
63 final JPanel pnlFfmpegParamOption = new JPanel();
64 pnlFfmpegParamOption.setBorder(BorderFactory.createEtchedBorder());
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()
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()
89 .addComponent(cbFfmpegOptionResize)
90 .addPreferredGap(ComponentPlacement.UNRELATED)
91 .addComponent(lblFfmpegOptionResizeWidth)
92 .addPreferredGap(ComponentPlacement.RELATED)
93 .addComponent(fldFfmpegOptionResizeWidth, GroupLayout.PREFERRED_SIZE, 48, GroupLayout.PREFERRED_SIZE)
95 .addComponent(lblFfmpegOptionResizeHeight)
96 .addPreferredGap(ComponentPlacement.RELATED)
97 .addComponent(fldFfmpegOptionResizeHeight, GroupLayout.PREFERRED_SIZE, 48, GroupLayout.PREFERRED_SIZE))
98 .addGroup(glFfmpegParamOption.createSequentialGroup()
100 .addComponent(cbFfmpegOptionKeepAspect)))
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)
133 final GroupLayout glFfmpegParam = new GroupLayout(this);
134 setLayout(glFfmpegParam);
135 glFfmpegParam.setHorizontalGroup(
136 glFfmpegParam.createParallelGroup(Alignment.LEADING)
137 .addGroup(glFfmpegParam.createSequentialGroup()
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))
144 glFfmpegParam.setVerticalGroup(
145 glFfmpegParam.createParallelGroup(Alignment.LEADING)
146 .addGroup(glFfmpegParam.createSequentialGroup()
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)