package aliview.settings;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.AbstractButton;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
import javax.swing.border.EmptyBorder;
import javax.swing.plaf.FontUIResource;
import aliview.HelpUtils;
import java.awt.Font;
import java.awt.GridBagLayout;
import java.awt.GridBagConstraints;
import java.awt.Insets;
import java.awt.Dimension;
import java.util.Enumeration;
import javax.swing.SwingConstants;
public class GeneralSettingsPanel extends JPanel{
JCheckBox cbxReverseHorizontalMouseWheel;
JCheckBox cbxReverseVerticalMouseWheel;
JCheckBox checkBoxHideAskBeforeEditMode;
private JTextField txtHWheelMod;
private JTextField txtVWheelMod;
private JTextField txtLargeFileIndexingl;
private JTextField txtFontSize;
private JTextField txtMaxHistogramLargeFiles;
private JCheckBox chckbxOverrideDefaultFont;
static JFrame parFrame;
public GeneralSettingsPanel(final JFrame parFrame) {
this.parFrame = parFrame;
this.setBorder(new EmptyBorder(10, 10, 10, 10));
GridBagLayout gridBagLayout = new GridBagLayout();
gridBagLayout.columnWidths = new int[]{324, 100, 100, 0};
gridBagLayout.rowHeights = new int[]{23, 23, 23, 23, 0, 23, 0, 0, 23, 0, 0, 23, 23, 0};
gridBagLayout.columnWeights = new double[]{0.0, 1.0, 0.0, Double.MIN_VALUE};
gridBagLayout.rowWeights = new double[]{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, Double.MIN_VALUE};
setLayout(gridBagLayout);
JLabel lblReverseHorizontal = new JLabel("Reverse horizontal mouse wheel movement");
GridBagConstraints gbc_lblReverseHorizontal = new GridBagConstraints();
gbc_lblReverseHorizontal.fill = GridBagConstraints.BOTH;
gbc_lblReverseHorizontal.insets = new Insets(0, 0, 5, 5);
gbc_lblReverseHorizontal.gridx = 0;
gbc_lblReverseHorizontal.gridy = 0;
add(lblReverseHorizontal, gbc_lblReverseHorizontal);
cbxReverseHorizontalMouseWheel = new JCheckBox();
cbxReverseHorizontalMouseWheel.setSelected(Settings.getReverseHorizontalMouseWheel().getBooleanValue());
GridBagConstraints gbc_cbxReverseHorizontalMouseWheel = new GridBagConstraints();
gbc_cbxReverseHorizontalMouseWheel.fill = GridBagConstraints.BOTH;
gbc_cbxReverseHorizontalMouseWheel.insets = new Insets(0, 0, 5, 0);
gbc_cbxReverseHorizontalMouseWheel.gridx = 2;
gbc_cbxReverseHorizontalMouseWheel.gridy = 0;
add(cbxReverseHorizontalMouseWheel, gbc_cbxReverseHorizontalMouseWheel);
JLabel lblReverseVertical = new JLabel("Reverse vertical mouse wheel movement");
GridBagConstraints gbc_lblReverseVertical = new GridBagConstraints();
gbc_lblReverseVertical.fill = GridBagConstraints.BOTH;
gbc_lblReverseVertical.insets = new Insets(0, 0, 5, 5);
gbc_lblReverseVertical.gridx = 0;
gbc_lblReverseVertical.gridy = 1;
add(lblReverseVertical, gbc_lblReverseVertical);
cbxReverseVerticalMouseWheel = new JCheckBox();
cbxReverseVerticalMouseWheel.setSelected(Settings.getReverseVerticalMouseWheel().getBooleanValue());
GridBagConstraints gbc_cbxReverseVerticalMouseWheel = new GridBagConstraints();
gbc_cbxReverseVerticalMouseWheel.fill = GridBagConstraints.BOTH;
gbc_cbxReverseVerticalMouseWheel.insets = new Insets(0, 0, 5, 0);
gbc_cbxReverseVerticalMouseWheel.gridx = 2;
gbc_cbxReverseVerticalMouseWheel.gridy = 1;
add(cbxReverseVerticalMouseWheel, gbc_cbxReverseVerticalMouseWheel);
JLabel lblHWheelMod = new JLabel("Horizontal scroll speed (" +
Settings.getHorizontalScrollModifier().getMinIntVal() + "-" + Settings.getHorizontalScrollModifier().getMaxIntVal() + ")");
GridBagConstraints gbc_lblHWheelMod = new GridBagConstraints();
gbc_lblHWheelMod.fill = GridBagConstraints.BOTH;
gbc_lblHWheelMod.insets = new Insets(0, 0, 5, 5);
gbc_lblHWheelMod.gridx = 0;
gbc_lblHWheelMod.gridy = 2;
add(lblHWheelMod, gbc_lblHWheelMod);
txtHWheelMod = new JTextField();
txtHWheelMod.setText("" + Settings.getHorizontalScrollModifier().getIntValue());
GridBagConstraints gbc_txtHWheelMod = new GridBagConstraints();
gbc_txtHWheelMod.fill = GridBagConstraints.BOTH;
gbc_txtHWheelMod.insets = new Insets(0, 0, 5, 0);
gbc_txtHWheelMod.gridx = 2;
gbc_txtHWheelMod.gridy = 2;
add(txtHWheelMod, gbc_txtHWheelMod);
JLabel lblVWheelMod = new JLabel("Vertical scroll speed (" +
Settings.getVerticalScrollModifier().getMinIntVal() + "-" + Settings.getVerticalScrollModifier().getMaxIntVal() + ")");
GridBagConstraints gbc_lblVWheelMod = new GridBagConstraints();
gbc_lblVWheelMod.fill = GridBagConstraints.BOTH;
gbc_lblVWheelMod.insets = new Insets(0, 0, 5, 5);
gbc_lblVWheelMod.gridx = 0;
gbc_lblVWheelMod.gridy = 3;
add(lblVWheelMod, gbc_lblVWheelMod);
txtVWheelMod = new JTextField();
txtVWheelMod.setText("" + Settings.getVerticalScrollModifier().getIntValue());
GridBagConstraints gbc_txtVWheelMod = new GridBagConstraints();
gbc_txtVWheelMod.fill = GridBagConstraints.BOTH;
gbc_txtVWheelMod.insets = new Insets(0, 0, 5, 0);
gbc_txtVWheelMod.gridx = 2;
gbc_txtVWheelMod.gridy = 3;
add(txtVWheelMod, gbc_txtVWheelMod);
txtFontSize = new JTextField();
txtFontSize.setText("" + Settings.getCustomFontSize().getIntValue());
GridBagConstraints gbc_textField = new GridBagConstraints();
gbc_textField.insets = new Insets(0, 0, 5, 0);
gbc_textField.fill = GridBagConstraints.HORIZONTAL;
gbc_textField.gridx = 2;
gbc_textField.gridy = 4;
add(txtFontSize, gbc_textField);
txtFontSize.setColumns(10);
txtFontSize.setToolTipText("You will also need to close and reopen program before changes take place");
txtFontSize.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
//setNewFontSizeInstantly(txtFontSize.getText());
}
});
chckbxOverrideDefaultFont = new JCheckBox("Override default program font size");
chckbxOverrideDefaultFont.setToolTipText("You will also need to close and reopen program before changes take place");
chckbxOverrideDefaultFont.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
JCheckBox box = (JCheckBox) e.getSource();
if(box.isSelected()){
txtFontSize.setEnabled(true);
}else{
txtFontSize.setEnabled(false);
}
}
});
chckbxOverrideDefaultFont.setSelected(Settings.getUseCustomFontSize().getBooleanValue());
if(chckbxOverrideDefaultFont.isSelected()){
txtFontSize.setEnabled(true);
}else{
txtFontSize.setEnabled(false);
}
GridBagConstraints gbc_chckbxOverrideDefaultProgram = new GridBagConstraints();
gbc_chckbxOverrideDefaultProgram.anchor = GridBagConstraints.WEST;
gbc_chckbxOverrideDefaultProgram.insets = new Insets(0, 0, 5, 5);
gbc_chckbxOverrideDefaultProgram.gridx = 0;
gbc_chckbxOverrideDefaultProgram.gridy = 4;
add(chckbxOverrideDefaultFont, gbc_chckbxOverrideDefaultProgram);
JLabel lblClearAll = new JLabel("Clear all \"Hide this checkbox\" selections");
lblClearAll.setHorizontalAlignment(SwingConstants.LEFT);
GridBagConstraints gbc_lblClearAll = new GridBagConstraints();
gbc_lblClearAll.anchor = GridBagConstraints.WEST;
gbc_lblClearAll.insets = new Insets(0, 0, 5, 5);
gbc_lblClearAll.gridx = 0;
gbc_lblClearAll.gridy = 6;
add(lblClearAll, gbc_lblClearAll);
JButton clearCbxButton = new JButton("Clear");
clearCbxButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
Settings.clearAllHideThisDialogCheckboxes();
}
});
clearCbxButton.setPreferredSize(new Dimension(100, 30));
GridBagConstraints gbc_clearCBXbutton = new GridBagConstraints();
gbc_clearCBXbutton.insets = new Insets(0, 0, 5, 0);
gbc_clearCBXbutton.gridx = 2;
gbc_clearCBXbutton.gridy = 6;
add(clearCbxButton, gbc_clearCBXbutton);
JLabel lblAskBeforeEntering = new JLabel("Hide dialog asking before entering edit mode");
lblAskBeforeEntering.setHorizontalAlignment(SwingConstants.LEFT);
GridBagConstraints gbc_lblAskBeforeEntering = new GridBagConstraints();
gbc_lblAskBeforeEntering.anchor = GridBagConstraints.WEST;
gbc_lblAskBeforeEntering.insets = new Insets(0, 0, 5, 5);
gbc_lblAskBeforeEntering.gridx = 0;
gbc_lblAskBeforeEntering.gridy = 7;
add(lblAskBeforeEntering, gbc_lblAskBeforeEntering);
checkBoxHideAskBeforeEditMode = new JCheckBox("");
checkBoxHideAskBeforeEditMode.setSelected(Settings.getHideAskBeforeEditMode().getBooleanValue());
GridBagConstraints gbc_checkBox = new GridBagConstraints();
gbc_checkBox.anchor = GridBagConstraints.WEST;
gbc_checkBox.insets = new Insets(0, 0, 5, 0);
gbc_checkBox.gridx = 2;
gbc_checkBox.gridy = 7;
add(checkBoxHideAskBeforeEditMode, gbc_checkBox);
GridBagConstraints gbc_lblNumberOfFiles = new GridBagConstraints();
gbc_lblNumberOfFiles.fill = GridBagConstraints.BOTH;
gbc_lblNumberOfFiles.insets = new Insets(0, 0, 5, 5);
gbc_lblNumberOfFiles.gridx = 0;
gbc_lblNumberOfFiles.gridy = 8;
JLabel lblNumberOfFiles = new JLabel("Number of sequences to Index at a time in very large files");
add(lblNumberOfFiles, gbc_lblNumberOfFiles);
GridBagConstraints gbc_txtLargeFileIndexingl = new GridBagConstraints();
gbc_txtLargeFileIndexingl.fill = GridBagConstraints.BOTH;
gbc_txtLargeFileIndexingl.insets = new Insets(0, 0, 5, 0);
gbc_txtLargeFileIndexingl.gridx = 2;
gbc_txtLargeFileIndexingl.gridy = 8;
txtLargeFileIndexingl = new JTextField();
txtLargeFileIndexingl.setText("" + Settings.getLargeFileIndexing().getIntValue());
add(txtLargeFileIndexingl, gbc_txtLargeFileIndexingl);
JLabel lblNumberOfSequences = new JLabel("Number of sequences to count when calculating ClustalX-");
GridBagConstraints gbc_lblNumberOfSequences = new GridBagConstraints();
gbc_lblNumberOfSequences.anchor = GridBagConstraints.WEST;
gbc_lblNumberOfSequences.insets = new Insets(0, 0, 5, 5);
gbc_lblNumberOfSequences.gridx = 0;
gbc_lblNumberOfSequences.gridy = 9;
add(lblNumberOfSequences, gbc_lblNumberOfSequences);
txtMaxHistogramLargeFiles = new JTextField();
txtMaxHistogramLargeFiles.setText("" + Settings.getMaxFileHistogramSequences().getIntValue());
GridBagConstraints gbc_textField_1 = new GridBagConstraints();
gbc_textField_1.insets = new Insets(0, 0, 5, 0);
gbc_textField_1.fill = GridBagConstraints.HORIZONTAL;
gbc_textField_1.gridx = 2;
gbc_textField_1.gridy = 9;
add(txtMaxHistogramLargeFiles, gbc_textField_1);
JLabel lblNewLabel = new JLabel("consensus on large files");
GridBagConstraints gbc_lblNewLabel = new GridBagConstraints();
gbc_lblNewLabel.anchor = GridBagConstraints.WEST;
gbc_lblNewLabel.insets = new Insets(0, 0, 5, 5);
gbc_lblNewLabel.gridx = 0;
gbc_lblNewLabel.gridy = 10;
add(lblNewLabel, gbc_lblNewLabel);
GridBagConstraints gbc_4 = new GridBagConstraints();
gbc_4.fill = GridBagConstraints.BOTH;
gbc_4.insets = new Insets(0, 0, 5, 5);
gbc_4.gridx = 0;
gbc_4.gridy = 11;
JLabel label_1 = new JLabel("");
add(label_1, gbc_4);
JButton btnHelp = new JButton("Help");
btnHelp.setPreferredSize(new Dimension(100,30));
btnHelp.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
HelpUtils.display(HelpUtils.General_settings, parFrame);
}
});
GridBagConstraints gbc_btnHelp = new GridBagConstraints();
gbc_btnHelp.anchor = GridBagConstraints.WEST;
gbc_btnHelp.insets = new Insets(0, 0, 0, 5);
gbc_btnHelp.gridx = 0;
gbc_btnHelp.gridy = 12;
add(btnHelp, gbc_btnHelp);
JButton btnCancel = new JButton("Cancel");
btnCancel.setPreferredSize(new Dimension(100, 30));
btnCancel.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
parFrame.dispose();
}
});
GridBagConstraints gbc_btnCancel = new GridBagConstraints();
gbc_btnCancel.anchor = GridBagConstraints.EAST;
gbc_btnCancel.insets = new Insets(0, 0, 0, 5);
gbc_btnCancel.gridx = 1;
gbc_btnCancel.gridy = 12;
add(btnCancel, gbc_btnCancel);
JButton btnOk = new JButton("OK");
btnOk.setPreferredSize(new Dimension(100, 30));
btnOk.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
saveSettings();
parFrame.dispose();
}
});
GridBagConstraints gbc_btnOk = new GridBagConstraints();
gbc_btnOk.anchor = GridBagConstraints.EAST;
gbc_btnOk.fill = GridBagConstraints.VERTICAL;
gbc_btnOk.gridx = 2;
gbc_btnOk.gridy = 12;
add(btnOk, gbc_btnOk);
}
/*
private void setNewFontSizeInstantly(String string)
{
float userSize = Float.parseFloat(txtFontSize.getText());
Object obj = UIManager.getLookAndFeelDefaults().get("defaultFont");
if(obj != null && obj instanceof Font){
Font defaultFont = (Font) obj;
UIManager.getLookAndFeelDefaults().put("defaultFont", defaultFont.deriveFont(userSize));
}
// and some more keys
setUIFontSize(userSize);
}
public static void setUIFontSize (float newSize){
Enumeration<Object> keys = UIManager.getLookAndFeelDefaults().keys();
while (keys.hasMoreElements()) {
Object key = keys.nextElement();
Object value = UIManager.get (key);
if (value != null && value instanceof Font){
Font derivFont = ((Font)value).deriveFont(newSize);
FontUIResource fontRes = new FontUIResource(derivFont);
UIManager.getLookAndFeelDefaults().put (key, fontRes);
}
}
SwingUtilities.updateComponentTreeUI(parFrame);
}
*/
public void saveSettings(){
Settings.putBooleanValue(Settings.getReverseHorizontalMouseWheel(), cbxReverseHorizontalMouseWheel.isSelected());
Settings.putBooleanValue(Settings.getReverseVerticalMouseWheel(), cbxReverseVerticalMouseWheel.isSelected());
Settings.putBooleanValue(Settings.getUseCustomFontSize(), chckbxOverrideDefaultFont.isSelected());
Settings.putBooleanValue(Settings.getHideAskBeforeEditMode(), checkBoxHideAskBeforeEditMode.isSelected());
try {
Settings.getCustomFontSize().putIntValue(Integer.parseInt(txtFontSize.getText()));
} catch (NumberFormatException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
Settings.getMaxFileHistogramSequences().putIntValue(Integer.parseInt(txtMaxHistogramLargeFiles.getText()));
} catch (NumberFormatException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
Settings.getHorizontalScrollModifier().putIntValue(Integer.parseInt(txtHWheelMod.getText()));
} catch (NumberFormatException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
Settings.getVerticalScrollModifier().putIntValue(Integer.parseInt(txtVWheelMod.getText()));
} catch (NumberFormatException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
Settings.getLargeFileIndexing().putIntValue(Integer.parseInt(txtLargeFileIndexingl.getText()));
} catch (NumberFormatException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}