package jp.crwdev.app.gui;
import java.awt.Color;
import java.awt.event.FocusEvent;
import java.awt.event.FocusListener;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.SpringLayout;
import javax.swing.JCheckBox;
import javax.swing.JTabbedPane;
import javax.swing.JButton;
import javax.swing.JProgressBar;
import javax.swing.JLabel;
import javax.swing.JComboBox;
import javax.swing.JTextField;
@SuppressWarnings("serial")
public class SettingPanelLayout extends JPanel {
protected DefaultTextField textTitle;
protected DefaultTextField textAuthor;
protected DefaultTextField textAuthorKana;
protected DefaultTextField textTitleKana;
protected DefaultTextField textSeriesTitle;
protected DefaultTextField textSeriesTitleKana;
protected DefaultTextField textSeriesNumber;
protected DefaultTextField outputFolder;
protected JCheckBox checkPreview;
protected JCheckBox checkSimpleZoom;
protected JCheckBox checkResize;
protected JCheckBox checkOutputResize;
protected JCheckBox checkFixedSize;
protected JTabbedPane tabbedPane;
protected JComboBox outputImageSize;
protected JComboBox outputFileType;
protected JComboBox outputBookType;
protected JButton outpuFolderButton;
protected JButton convertButton;
protected JButton cancelButton;
protected JButton packageConvertButton;
protected JButton fullscreenButton;
protected JLabel labelMessage;
protected JProgressBar progressBar;
protected JFrame mParentFrame;
/**
* Create the panel.
*/
public SettingPanelLayout(JFrame parent) {
mParentFrame = parent;
SpringLayout springLayout = new SpringLayout();
setLayout(springLayout);
checkPreview = new JCheckBox("プレビューモード");
springLayout.putConstraint(SpringLayout.NORTH, checkPreview, 3, SpringLayout.NORTH, this);
springLayout.putConstraint(SpringLayout.WEST, checkPreview, 3, SpringLayout.WEST, this);
add(checkPreview);
checkSimpleZoom = new JCheckBox("拡大プレビュー");
springLayout.putConstraint(SpringLayout.NORTH, checkSimpleZoom, 3, SpringLayout.NORTH, checkPreview);
springLayout.putConstraint(SpringLayout.WEST, checkSimpleZoom, 3, SpringLayout.EAST, checkPreview);
add(checkSimpleZoom);
fullscreenButton = new JButton("全画面");
springLayout.putConstraint(SpringLayout.NORTH, fullscreenButton, 3, SpringLayout.NORTH, checkSimpleZoom);
springLayout.putConstraint(SpringLayout.WEST, fullscreenButton, 3, SpringLayout.EAST, checkSimpleZoom);
add(fullscreenButton);
fullscreenButton.setVisible(false);
checkResize = new JCheckBox("画面サイズ合わせ");
springLayout.putConstraint(SpringLayout.WEST, checkResize, 3, SpringLayout.WEST, this);
springLayout.putConstraint(SpringLayout.NORTH, checkResize, 0, SpringLayout.SOUTH, checkPreview);
add(checkResize);
checkOutputResize = new JCheckBox("出力サイズ表示");
springLayout.putConstraint(SpringLayout.WEST, checkOutputResize, 6, SpringLayout.EAST, checkResize);
springLayout.putConstraint(SpringLayout.SOUTH, checkOutputResize, 0, SpringLayout.SOUTH, checkResize);
add(checkOutputResize);
tabbedPane = new JTabbedPane(JTabbedPane.TOP);
springLayout.putConstraint(SpringLayout.NORTH, tabbedPane, 6, SpringLayout.SOUTH, checkResize);
springLayout.putConstraint(SpringLayout.WEST, tabbedPane, 3, SpringLayout.WEST, this);
springLayout.putConstraint(SpringLayout.SOUTH, tabbedPane, 328, SpringLayout.SOUTH, checkResize);
springLayout.putConstraint(SpringLayout.EAST, tabbedPane, -3, SpringLayout.EAST, this);
add(tabbedPane);
//
textSeriesTitle = new DefaultTextField(14, "シリーズ名");
springLayout.putConstraint(SpringLayout.NORTH, textSeriesTitle, 6, SpringLayout.SOUTH, tabbedPane);
springLayout.putConstraint(SpringLayout.WEST, textSeriesTitle, 3, SpringLayout.WEST, this);
add(textSeriesTitle);
textSeriesTitle.setColumns(14);
textSeriesNumber = new DefaultTextField(3, "巻");
springLayout.putConstraint(SpringLayout.NORTH, textSeriesNumber, 0, SpringLayout.NORTH, textSeriesTitle);
springLayout.putConstraint(SpringLayout.WEST, textSeriesNumber, 3, SpringLayout.EAST, textSeriesTitle);
add(textSeriesNumber);
textSeriesNumber.setColumns(3);
textSeriesTitleKana = new DefaultTextField(14, "シリーズ名カナ");
springLayout.putConstraint(SpringLayout.NORTH, textSeriesTitleKana, 6, SpringLayout.SOUTH, textSeriesTitle);
springLayout.putConstraint(SpringLayout.WEST, textSeriesTitleKana, 3, SpringLayout.WEST, this);
add(textSeriesTitleKana);
textSeriesTitleKana.setColumns(14);
//
textTitle = new DefaultTextField(10, "タイトル");
springLayout.putConstraint(SpringLayout.NORTH, textTitle, 6, SpringLayout.SOUTH, textSeriesTitleKana);
springLayout.putConstraint(SpringLayout.WEST, textTitle, 3, SpringLayout.WEST, this);
add(textTitle);
textTitle.setColumns(10);
textAuthor = new DefaultTextField(10, "著者名");
springLayout.putConstraint(SpringLayout.NORTH, textAuthor, 6, SpringLayout.SOUTH, textTitle);
springLayout.putConstraint(SpringLayout.WEST, textAuthor, 3, SpringLayout.WEST, this);
add(textAuthor);
textAuthor.setColumns(10);
textAuthorKana = new DefaultTextField(10, "著者名カナ");
springLayout.putConstraint(SpringLayout.WEST, textAuthorKana, 182, SpringLayout.WEST, this);
springLayout.putConstraint(SpringLayout.EAST, textAuthor, -6, SpringLayout.WEST, textAuthorKana);
springLayout.putConstraint(SpringLayout.NORTH, textAuthorKana, 0, SpringLayout.NORTH, textAuthor);
springLayout.putConstraint(SpringLayout.EAST, textAuthorKana, -3, SpringLayout.EAST, this);
add(textAuthorKana);
textAuthorKana.setColumns(10);
textTitleKana = new DefaultTextField(10, "タイトルカナ");
springLayout.putConstraint(SpringLayout.WEST, textTitleKana, 182, SpringLayout.WEST, this);
springLayout.putConstraint(SpringLayout.EAST, textTitle, -6, SpringLayout.WEST, textTitleKana);
springLayout.putConstraint(SpringLayout.NORTH, textTitleKana, 6, SpringLayout.SOUTH, textSeriesTitleKana);
springLayout.putConstraint(SpringLayout.SOUTH, textTitleKana, -6, SpringLayout.NORTH, textAuthorKana);
springLayout.putConstraint(SpringLayout.EAST, textTitleKana, -3, SpringLayout.EAST, this);
textTitleKana.setColumns(10);
add(textTitleKana);
outputImageSize = new JComboBox();
springLayout.putConstraint(SpringLayout.NORTH, outputImageSize, 6, SpringLayout.SOUTH, textAuthor);
springLayout.putConstraint(SpringLayout.WEST, outputImageSize, 0, SpringLayout.WEST, checkPreview);
add(outputImageSize);
checkFixedSize = new JCheckBox("固定サイズ出力");
springLayout.putConstraint(SpringLayout.NORTH, checkFixedSize, 0, SpringLayout.NORTH, outputImageSize);
springLayout.putConstraint(SpringLayout.WEST, checkFixedSize, 6, SpringLayout.EAST, outputImageSize);
add(checkFixedSize);
outputFileType = new JComboBox();
springLayout.putConstraint(SpringLayout.NORTH, outputFileType, 6, SpringLayout.SOUTH, outputImageSize);
springLayout.putConstraint(SpringLayout.WEST, outputFileType, 0, SpringLayout.WEST, checkPreview);
add(outputFileType);
outputBookType = new JComboBox();
springLayout.putConstraint(SpringLayout.WEST, outputBookType, 6, SpringLayout.EAST, outputFileType);
springLayout.putConstraint(SpringLayout.SOUTH, outputBookType, 0, SpringLayout.SOUTH, outputFileType);
add(outputBookType);
outputFolder = new DefaultTextField(10, "出力先フォルダ");
springLayout.putConstraint(SpringLayout.NORTH, outputFolder, 6, SpringLayout.SOUTH, outputFileType);
springLayout.putConstraint(SpringLayout.WEST, outputFolder, 0, SpringLayout.WEST, checkPreview);
springLayout.putConstraint(SpringLayout.EAST, outputFolder, 0, SpringLayout.EAST, tabbedPane);
add(outputFolder);
outputFolder.setColumns(10);
outpuFolderButton = new JButton("出力フォルダ");
springLayout.putConstraint(SpringLayout.NORTH, outpuFolderButton, 6, SpringLayout.SOUTH, outputFolder);
springLayout.putConstraint(SpringLayout.WEST, outpuFolderButton, 0, SpringLayout.WEST, checkPreview);
add(outpuFolderButton);
convertButton = new JButton("変換");
springLayout.putConstraint(SpringLayout.NORTH, convertButton, 0, SpringLayout.NORTH, outpuFolderButton);
springLayout.putConstraint(SpringLayout.EAST, convertButton, 0, SpringLayout.EAST, tabbedPane);
add(convertButton);
packageConvertButton = new JButton("一括変換");
springLayout.putConstraint(SpringLayout.NORTH, packageConvertButton, 6, SpringLayout.SOUTH, outpuFolderButton);
springLayout.putConstraint(SpringLayout.WEST, packageConvertButton, 0, SpringLayout.WEST, checkPreview);
add(packageConvertButton);
cancelButton = new JButton("キャンセル");
springLayout.putConstraint(SpringLayout.SOUTH, cancelButton, -3, SpringLayout.SOUTH, this);
springLayout.putConstraint(SpringLayout.EAST, cancelButton, 0, SpringLayout.EAST, tabbedPane);
add(cancelButton);
progressBar = new JProgressBar();
springLayout.putConstraint(SpringLayout.WEST, progressBar, 0, SpringLayout.WEST, checkPreview);
springLayout.putConstraint(SpringLayout.SOUTH, progressBar, 0, SpringLayout.SOUTH, cancelButton);
springLayout.putConstraint(SpringLayout.EAST, progressBar, -6, SpringLayout.WEST, cancelButton);
add(progressBar);
labelMessage = new JLabel("");
springLayout.putConstraint(SpringLayout.WEST, labelMessage, 0, SpringLayout.WEST, checkPreview);
springLayout.putConstraint(SpringLayout.SOUTH, labelMessage, 0, SpringLayout.NORTH, cancelButton);
springLayout.putConstraint(SpringLayout.EAST, labelMessage, 0, SpringLayout.EAST, tabbedPane);
add(labelMessage);
}
/**
* 背景文字列付きテキストフィールド
* @author USER
*
*/
private class DefaultTextField extends JTextField implements FocusListener {
private String mDefaultText = "";
private boolean mIsEmpty = true;
public DefaultTextField(int size, String text){
super(size);
mDefaultText = text;
mIsEmpty = true;
super.setText(mDefaultText);
super.setForeground(Color.LIGHT_GRAY);
addFocusListener(this);
}
@Override
public void focusGained(FocusEvent e) {
if(mIsEmpty){
super.setText("");
}
setForeground(Color.BLACK);
mIsEmpty = false;
}
@Override
public void focusLost(FocusEvent e) {
if(super.getText().isEmpty()){
mIsEmpty = true;
super.setText(mDefaultText);
setForeground(Color.LIGHT_GRAY);
}
}
@Override
public void setText(String text){
super.setText(text);
if(text.isEmpty()){
mIsEmpty = true;
setForeground(Color.LIGHT_GRAY);
}else{
mIsEmpty = false;
setForeground(Color.BLACK);
}
}
@Override
public String getText(){
if(mIsEmpty){
return "";
}
else{
return super.getText();
}
}
}
@SuppressWarnings("unused")
private class DefaultTextFocusListener implements FocusListener {
private String mDefaultText = "";
private JTextField mField = null;
private boolean mIsEmpty = true;
private boolean mIsOwnEdit = false;
public DefaultTextFocusListener(String defaultText, JTextField field){
mDefaultText = defaultText;
mField = field;
mField.setText(mDefaultText);
mField.setForeground(Color.LIGHT_GRAY);
}
@Override
public void focusGained(FocusEvent e) {
if(mIsEmpty){
mField.setText("");
}else{
}
mField.setForeground(Color.BLACK);
mIsEmpty = false;
}
@Override
public void focusLost(FocusEvent e) {
if(mField.getText().isEmpty()){
mIsEmpty = true;
mField.setText(mDefaultText);
mField.setForeground(Color.LIGHT_GRAY);
}
}
}
}