/*
* JSettingsDialog.java
*
* Created on 27. April 2006, 19:59
*
* Copyright (C) 27. April 2006 <Reiner>
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; exwithout even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
*/
package jexifviewer;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.GridBagConstraints;
import java.awt.Insets;
import java.awt.RenderingHints;
// import java.net.URL;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.Locale;
import java.util.MissingResourceException;
import java.util.ResourceBundle;
import java.awt.Component;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.Font;
import java.awt.GraphicsEnvironment;
import javax.swing.event.ListSelectionListener;
import javax.swing.event.ListSelectionEvent;
import javax.swing.border.SoftBevelBorder;
import javax.swing.BorderFactory;
import javax.swing.Box;
import javax.swing.BoxLayout;
import javax.swing.DefaultListModel;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JColorChooser;
import javax.swing.JComboBox;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTabbedPane;
import javax.swing.JTextField;
import javax.swing.SpinnerNumberModel;
import javax.swing.ToolTipManager;
import javax.swing.border.CompoundBorder;
import javax.swing.border.EtchedBorder;
import shared.layout.JGridBagPanel;
import shared.numberspinner.JNumberSpinner;
import shared.checklist.JCheckList;
import shared.checklist.JCheckListData;
import shared.cvshelper.Cvs;
import shared.dialog.JModalDialog;
/**
*
* @author reiner
*/
@Cvs
(
header = "$Header: /home/reiner/cvs/Java/JExifViewer/src/jexifviewer/JSettingsDialog.java,v 1.10 2010/04/02 12:12:13 reiner Exp $"
)
public final class JSettingsDialog extends JModalDialog
{
JNumberSpinner m_spinner_FillTimer;
JCheckBox m_checkBox_displayAllImages;
JNumberSpinner m_spinner_ImgDisplayTimer;
JNumberSpinner m_spinner_SortDeep;
JTextField m_textField_extField;
JComboBox m_comboBox_saveImage;
JNumberSpinner m_spinner_imgCacheSize;
JCheckBox m_checkBox_usePreload;
JComboBox m_comboBox_interpolation;
JLabel m_imgBackColorDisplay;
JCheckBox m_checkBox_confirmDelete;
JCheckBox m_checkBox_confirmOverwrite;
JComboBox m_comboBox_language;
JCheckBox m_checkBox_checkUpdate;
JNumberSpinner m_spinner_ToolTips;
JCheckBox m_checkBox_tooltipTable;
JCheckBox m_checkBox_tooltipBold;
JCheckBox m_checkBox_useFullScreenMode;
JNumberSpinner m_spinner_SlideShowTimer;
DefaultListModel m_listModel;
/** Creates a new instance of JSettingsDialog */
public JSettingsDialog(JMainFrame frame)
{
super(frame, Main.getString("settings_caption"), Main.getString("ok"), Main.getString("cancel"), 0);
}
protected void doInit()
{
Dimension dim;
JPanel ctrlPanel = new JPanel();
ctrlPanel.setLayout(new BorderLayout());
JTabbedPane tab = new JTabbedPane(JTabbedPane.TOP, JTabbedPane.SCROLL_TAB_LAYOUT);
JGridBagPanel panelTree = new JGridBagPanel();
JGridBagPanel panelTable = new JGridBagPanel();
JGridBagPanel panelImage = new JGridBagPanel();
JGridBagPanel panelOther = new JGridBagPanel();
JGridBagPanel panelSlideShow = new JGridBagPanel();
JGridBagPanel panelToolTip = new JGridBagPanel();
panelTree.setBorder(new CompoundBorder(BorderFactory.createEtchedBorder(EtchedBorder.LOWERED), BorderFactory.createEmptyBorder(5, 5, 5, 5)));
panelTable.setBorder(new CompoundBorder(BorderFactory.createEtchedBorder(EtchedBorder.LOWERED), BorderFactory.createEmptyBorder(5,5,5,5)));
panelImage.setBorder(new CompoundBorder(BorderFactory.createEtchedBorder(EtchedBorder.LOWERED), BorderFactory.createEmptyBorder(5,5,5,5)));
panelOther.setBorder(new CompoundBorder(BorderFactory.createEtchedBorder(EtchedBorder.LOWERED), BorderFactory.createEmptyBorder(5,5,5,5)));
panelSlideShow.setBorder(new CompoundBorder(BorderFactory.createEtchedBorder(EtchedBorder.LOWERED), BorderFactory.createEmptyBorder(5,5,5,5)));
panelToolTip.setBorder(new CompoundBorder(BorderFactory.createEtchedBorder(EtchedBorder.LOWERED), BorderFactory.createEmptyBorder(5,5,5,5)));
/*
panelTree.setBorder(BorderFactory.createEmptyBorder(5,5,5,5));
panelTable.setBorder(BorderFactory.createEmptyBorder(5,5,5,5));
panelImage.setBorder(BorderFactory.createEmptyBorder(5,5,5,5));
panelOther.setBorder(BorderFactory.createEmptyBorder(5,5,5,5));
panelSlideShow.setBorder(BorderFactory.createEmptyBorder(5,5,5,5));
panelToolTip.setBorder(BorderFactory.createEmptyBorder(5,5,5,5));
*/
int row = 0;
// Tree
// FillTimer
panelTree.addComponent(new JLabel(Main.getString("settings_label_filltimer")), 0, row, GridBagConstraints.WEST, new Insets(5, 0, 0, 0), GridBagConstraints.REMAINDER, 1);
m_spinner_FillTimer = new JNumberSpinner(new SpinnerNumberModel(0, 0, 10000, 50));
m_spinner_FillTimer.setValue(Main.m_settings.getFillListTimer());
row++;
panelTree.addComponent(m_spinner_FillTimer, GridBagConstraints.RELATIVE, row, GridBagConstraints.WEST, new Insets(2, 0, 0, 0));
panelTree.addComponent(new JLabel(Main.getString("settings_label_filltimer_msec")), GridBagConstraints.RELATIVE, row, GridBagConstraints.NORTHWEST, new Insets(2, 5, 0, 0));
// Table
// Display all Images
row = 0;
m_checkBox_displayAllImages = new JCheckBox(Main.getString("settings_checkbox_displayallimages"), Main.m_settings.isDisplayAllInages());
panelTable.addComponent(m_checkBox_displayAllImages, 0, row, GridBagConstraints.WEST, new Insets(5, 0, 0, 0), GridBagConstraints.REMAINDER, 1);
// ImgDisplayTimer
row++;
panelTable.addComponent(new JLabel(Main.getString("settings_label_imgtimer")), 0, row, GridBagConstraints.WEST, new Insets(10, 0, 0, 0), GridBagConstraints.REMAINDER, 1);
m_spinner_ImgDisplayTimer = new JNumberSpinner(new SpinnerNumberModel(0, 0, 10000, 50));
m_spinner_ImgDisplayTimer.setValue(Main.m_settings.getImgDisplayTimer());
row++;
panelTable.addComponent(m_spinner_ImgDisplayTimer, GridBagConstraints.RELATIVE, row, GridBagConstraints.WEST, new Insets(2, 0, 5, 0));
panelTable.addComponent(new JLabel(Main.getString("settings_label_imgtimer_msec")), 1, row, GridBagConstraints.NORTHWEST, new Insets(2, 5, 0, 0), GridBagConstraints.REMAINDER, 1);
// SortDeep
row++;
panelTable.addComponent(new JLabel(Main.getString("settings_label_sortdeep")), 0, row, GridBagConstraints.WEST, new Insets(10, 0, 0, 0), GridBagConstraints.REMAINDER, 1);
m_spinner_SortDeep = new JNumberSpinner(new SpinnerNumberModel(1, 1, 30, 1));
m_spinner_SortDeep.setValue(Main.m_settings.getSortDeep());
row++;
panelTable.addComponent(m_spinner_SortDeep, GridBagConstraints.RELATIVE, row, GridBagConstraints.WEST, new Insets(2, 0, 5, 0));
// Image Extensions
row++;
panelTable.addComponent(new JLabel(Main.getString("settings_label_imgext")), 0, row, GridBagConstraints.WEST, new Insets(10, 0, 0, 0), GridBagConstraints.REMAINDER, 1);
StringBuilder strBuilder = new StringBuilder();
for (String item : Main.m_settings.m_jpgExtensions)
{
if (strBuilder.length() != 0)
strBuilder.append(",");
strBuilder.append(item);
}
m_textField_extField = new JTextField(strBuilder.toString(), 16);
m_textField_extField.setMinimumSize(m_textField_extField.getPreferredSize());
row++;
panelTable.addComponent(m_textField_extField, GridBagConstraints.RELATIVE, row, GridBagConstraints.WEST, new Insets(2, 0, 10, 0), GridBagConstraints.REMAINDER, 1);
// Image
row = 0;
m_comboBox_saveImage = new JComboBox();
m_comboBox_saveImage.addItem(Main.getString("settings_combobox_saveimg_no"));
m_comboBox_saveImage.addItem(Main.getString("settings_combobox_saveimg_yes"));
m_comboBox_saveImage.addItem(Main.getString("settings_combobox_saveimg_ask"));
m_comboBox_saveImage.setSelectedIndex(Main.m_settings.getSaveImage());
row++;
panelImage.addComponent(new JLabel(Main.getString("settings_label_imgsave")), GridBagConstraints.RELATIVE, row, GridBagConstraints.WEST, new Insets(5, 0, 0, 0), GridBagConstraints.REMAINDER, 1);
row++;
panelImage.addComponent(m_comboBox_saveImage, GridBagConstraints.RELATIVE, row, GridBagConstraints.WEST, new Insets(5, 0, 0, 0), GridBagConstraints.REMAINDER, 1);
// Cache size
row++;
panelImage.addComponent(new JLabel(Main.getString("settings_label_imgCacheSize")), 0, row, GridBagConstraints.WEST, new Insets(10, 0, 0, 0), GridBagConstraints.REMAINDER, 1);
m_spinner_imgCacheSize = new JNumberSpinner(new SpinnerNumberModel(1, 1, 100, 1));
m_spinner_imgCacheSize.setValue(Main.m_settings.getImgCacheSize());
row++;
panelImage.addComponent(m_spinner_imgCacheSize, GridBagConstraints.RELATIVE, row, GridBagConstraints.WEST, new Insets(2, 0, 5, 0), GridBagConstraints.REMAINDER, 1);
// Use preload
row++;
m_checkBox_usePreload = new JCheckBox(Main.getString("settings_checkbox_usepreload"), Main.m_settings.isImgUsePreload());
panelImage.addComponent(m_checkBox_usePreload, GridBagConstraints.RELATIVE, row, GridBagConstraints.NORTHWEST, new Insets(5, 0, 5, 0), GridBagConstraints.REMAINDER, 1);
// Interpolation
m_comboBox_interpolation = new JComboBox();
m_comboBox_interpolation.addItem(Main.getString("settings_combobox_interpolation_neighbor"));
m_comboBox_interpolation.addItem(Main.getString("settings_combobox_interpolation_bilinear"));
m_comboBox_interpolation.addItem(Main.getString("settings_combobox_interpolation_bicubic"));
int h;
Object interpolation = Main.m_settings.getInterpolation();
if (interpolation.equals(RenderingHints.VALUE_INTERPOLATION_BILINEAR))
h = 1;
else if (interpolation.equals(RenderingHints.VALUE_INTERPOLATION_BICUBIC))
h = 2;
else h=0;
m_comboBox_interpolation.setSelectedIndex(h);
row++;
panelImage.addComponent(new JLabel(Main.getString("settings_label_interpolation")), GridBagConstraints.RELATIVE, row, GridBagConstraints.WEST, new Insets(5, 0, 0, 0), GridBagConstraints.REMAINDER, 1);
row++;
panelImage.addComponent(m_comboBox_interpolation, GridBagConstraints.RELATIVE, row, GridBagConstraints.WEST, new Insets(5, 0, 5, 0), GridBagConstraints.REMAINDER, 1);
row++;
panelImage.addComponent(new JLabel(Main.getString("settings_label_backgroundcolor")), GridBagConstraints.RELATIVE, row, GridBagConstraints.WEST, new Insets(5, 0, 0, 0), GridBagConstraints.REMAINDER, 1);
row++;
m_imgBackColorDisplay = new JLabel();
m_imgBackColorDisplay.setOpaque(true);
m_imgBackColorDisplay.setBackground(Main.m_settings.getImgViewBackColor());
m_imgBackColorDisplay.setBorder(new SoftBevelBorder(SoftBevelBorder.LOWERED));
panelImage.addComponent(m_imgBackColorDisplay, GridBagConstraints.RELATIVE, row, GridBagConstraints.NORTHWEST, new Insets(5, 0, 0, 10), 1, 1);
final JButton imgBackColor = new JButton(Main.getString("settings_label_backgroundcolor_change"));
panelImage.addComponent(imgBackColor, 1, row, GridBagConstraints.WEST, new Insets(5, 0, 10, 0), GridBagConstraints.REMAINDER, 1);
dim = imgBackColor.getPreferredSize();
m_imgBackColorDisplay.setPreferredSize(new Dimension((int)dim.getHeight(), (int)dim.getHeight()));
m_imgBackColorDisplay.setMinimumSize(new Dimension((int)dim.getHeight(), (int)dim.getHeight()));
imgBackColor.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent event)
{
Color col = JColorChooser.showDialog(imgBackColor.getParent(), Main.getString("settings_label_backgroundcolor_title"), m_imgBackColorDisplay.getBackground());
if (col != null)
{
m_imgBackColorDisplay.setBackground(col);
}
}
});
// Other
row = 0;
m_checkBox_confirmDelete = new JCheckBox(Main.getString("settings_checkbox_confirmdelete"), Main.m_settings.isDelConfirm());
panelOther.addComponent(m_checkBox_confirmDelete, 0, row, GridBagConstraints.WEST, new Insets(5, 0, 0, 0), GridBagConstraints.REMAINDER, 1);
row++;
m_checkBox_confirmOverwrite = new JCheckBox(Main.getString("settings_checkbox_confirmoverwrite"), Main.m_settings.isOverwriteConfirm());
panelOther.addComponent(m_checkBox_confirmOverwrite, 0, row, GridBagConstraints.WEST, new Insets(5, 0, 0, 0), GridBagConstraints.REMAINDER, 1);
row++;
m_checkBox_useFullScreenMode = new JCheckBox(Main.getString("settings_checkbox_usefullscreenmode"), Main.m_settings.getUseFullScreenMode());
panelOther.addComponent(m_checkBox_useFullScreenMode, 0, row, GridBagConstraints.WEST, new Insets(5, 0, 0, 0), GridBagConstraints.REMAINDER, 1);
if (!GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice().isFullScreenSupported())
{
m_checkBox_useFullScreenMode.setSelected(false);
m_checkBox_useFullScreenMode.setEnabled(false);
}
// Language
m_comboBox_language = new JComboBox();
String lang[] = Locale.getISOLanguages();
m_comboBox_language.addItem(String.format(Main.getString("settings_language_default"), Main.m_sysLocale.getLanguage()));
// m_comboBox_language.addItem(String.format(Main.getString("settings_language_default"), "en"));
for (String item : lang)
{
try
{
ResourceBundle resBundle = ResourceBundle.getBundle("JExifViewerLang_" + item);
m_comboBox_language.addItem(item);
}
catch(MissingResourceException ex)
{}
}
String loc = Main.m_settings.getLocale();
if (loc.length() != 0)
m_comboBox_language.setSelectedItem(loc);
else
m_comboBox_language.setSelectedIndex(0);
row++;
panelOther.addComponent(new JLabel(Main.getString("settings_label_language")), GridBagConstraints.RELATIVE, row, GridBagConstraints.WEST, new Insets(15, 0, 0, 0), GridBagConstraints.REMAINDER, 1);
row++;
panelOther.addComponent(m_comboBox_language, 0, row, GridBagConstraints.WEST, new Insets(5, 0, 0, 0), GridBagConstraints.REMAINDER, 1);
row++;
m_checkBox_checkUpdate = new JCheckBox(Main.getString("settings_checkbox_checkupdate"), Main.m_settings.isCheckUpdate());
panelOther.addComponent(m_checkBox_checkUpdate, 0, row, GridBagConstraints.WEST, new Insets(20, 0, 0, 0), GridBagConstraints.REMAINDER, 1);
// Tooltip
row = 0;
final JCheckList list = new JCheckList();
m_listModel = list.getModel();
ArrayList<Integer> tagArray = new ArrayList<Integer>();
for (int tag : JExifDataModel.m_colTag)
{
if (tag != JExifTag.GPSTAG_TAG_MAPLINK)
tagArray.add(tag);
}
final String separator = Main.getString("list_separator");
for (int tag : Main.m_settings.m_toolTipTags)
{
JCheckListData<Integer> data = new JCheckListData<Integer>();
data.setLabel(tag >= 0 ? Main.getString(String.format("colheader_tag_0x%1$04X", tag)) : separator);
data.setChecked(true);
data.setIsSeparator(tag < 0);
data.setData(new Integer(tag));
m_listModel.addElement(data);
if (tag >= 0)
{
for (int i=0; i<tagArray.size(); i++)
{
if (tagArray.get(i) == tag)
{
tagArray.remove(i);
break;
}
}
}
}
for (int tag : tagArray)
{
JCheckListData<Integer> data = new JCheckListData<Integer>();
data.setLabel(Main.getString(String.format("colheader_tag_0x%1$04X", tag)));
data.setData(new Integer(tag));
m_listModel.addElement(data);
}
JCheckListData<Integer> data = new JCheckListData<Integer>();
data.setLabel("<" + separator + ">");
data.setIsSeparator(true);
m_listModel.addElement(data);
data = new JCheckListData<Integer>();
data.setLabel("<" + separator + ">");
data.setIsSeparator(true);
m_listModel.add(0, data);
JScrollPane scrollPane = new JScrollPane();
scrollPane.getViewport().add(list);
panelToolTip.addComponent(new JLabel(Main.getString("settings_label_tooltipfield")), 0, row, GridBagConstraints.WEST, new Insets(0, 0, 0, 0), GridBagConstraints.REMAINDER, 1);
row++;
panelToolTip.addComponent(scrollPane, 0, row, GridBagConstraints.WEST, new Insets(0, 0, 0, 0), 1, 2);
final JButton upButton = new JButton("\u2191");
Font font = upButton.getFont().deriveFont(Font.BOLD, (float)24.0);
upButton.setFont(font);
upButton.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent ev)
{
int index = list.getSelectedIndex();
if (index > 0)
{
JCheckListData data = (JCheckListData)m_listModel.get(index);
if ((index == 2 || index == 1) && data.isSeparator())
{
m_listModel.remove(index);
list.setSelectedIndex(index-1);
list.ensureIndexIsVisible(0);
}
else if (index == m_listModel.getSize() - 1)
{
data = new JCheckListData<Integer>();
data.setLabel(separator);
data.setIsSeparator(true);
m_listModel.add(index, data);
list.setSelectedIndex(index);
list.ensureIndexIsVisible(index+1);
}
else if (index > 1)
{
data = (JCheckListData)m_listModel.get(index);
m_listModel.add(index-1, m_listModel.remove(index));
index--;
list.setSelectedIndex(index);
list.ensureIndexIsVisible(index);
}
}
if ((index = list.getSelectedIndex()) >= 0)
{
JCheckListData data = (JCheckListData)m_listModel.get(index);
upButton.setEnabled(index > 1 || data.isSeparator() ? true : false);
}
}
});
panelToolTip.addComponent(upButton, 1, row, GridBagConstraints.SOUTHWEST, new Insets(0, 10, 0, 0), 1, 1, 0, 0.5);
final JButton downButton = new JButton("\u2193");
downButton.setFont(font);
downButton.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent ev)
{
int index = list.getSelectedIndex();
if (index >= 0 && index < m_listModel.getSize() - 1)
{
JCheckListData data = (JCheckListData)m_listModel.get(index);
if ((index == m_listModel.getSize() - 3 || index == m_listModel.getSize() - 2) && data.isSeparator())
{
m_listModel.remove(index);
list.setSelectedIndex(m_listModel.getSize() - 2);
list.ensureIndexIsVisible(m_listModel.getSize() - 1);
}
else if (index == 0)
{
data = new JCheckListData<Integer>();
data.setLabel(separator);
data.setIsSeparator(true);
m_listModel.add(1, data);
list.setSelectedIndex(1);
list.ensureIndexIsVisible(0);
}
else if (index < m_listModel.getSize() - 2)
{
data = (JCheckListData)m_listModel.get(index);
m_listModel.add(index+1, m_listModel.remove(index));
index++;
list.setSelectedIndex(index);
list.ensureIndexIsVisible(index);
}
}
if ((index = list.getSelectedIndex()) >= 0)
{
JCheckListData data = (JCheckListData)m_listModel.get(index);
downButton.setEnabled(index < m_listModel.getSize() - 2 || data.isSeparator() ? true : false);
}
}
});
list.getSelectionModel().addListSelectionListener(new ListSelectionListener()
{
public void valueChanged(ListSelectionEvent e)
{
int index = list.getSelectedIndex();
if (index >= 0)
{
JCheckListData data = (JCheckListData)m_listModel.get(index);
upButton.setEnabled(index == 0 || (index == 1 && !data.isSeparator()) ? false : true);
downButton.setEnabled(index == m_listModel.getSize() - 1 || (index == m_listModel.getSize() - 2 && !data.isSeparator()) ? false : true);
}
}
});
row++;
panelToolTip.addComponent(downButton, 1, row, GridBagConstraints.NORTHWEST, new Insets(3, 10, 0, 0), 1, 1, 0, 0.5);
row++;
panelToolTip.addComponent(new JLabel(Main.getString("settings_label_tooltipdismissdelay")), 0, row, GridBagConstraints.WEST, new Insets(10, 0, 5, 0), GridBagConstraints.REMAINDER, 1);
row++;
m_spinner_ToolTips = new JNumberSpinner(new SpinnerNumberModel(20, 0, 60, 1));
m_spinner_ToolTips.setValue(Main.m_settings.getToolTipDismissDelay()/1000);
JPanel panelBox = new JPanel();
panelBox.setLayout(new BoxLayout(panelBox, BoxLayout.X_AXIS));
panelBox.add(m_spinner_ToolTips);
JLabel ttSec = new JLabel(Main.getString("settings_label_tooltipdismissdelay_sec"));
ttSec.setAlignmentY(Component.CENTER_ALIGNMENT);
panelBox.add(Box.createRigidArea(new Dimension(5, 0)));
panelBox.add(ttSec);
panelToolTip.addComponent(panelBox, 0, row, GridBagConstraints.WEST, new Insets(0, 0, 0, 0));
row++;
panelBox = new JPanel();
panelBox.setLayout(new BoxLayout(panelBox, BoxLayout.X_AXIS));
m_checkBox_tooltipTable = new JCheckBox(Main.getString("settings_checkbox_tooltiptable"), Main.m_settings.isToolTipTable());
panelBox.add(m_checkBox_tooltipTable);
row++;
m_checkBox_tooltipBold = new JCheckBox(Main.getString("settings_checkbox_tooltipbold"), Main.m_settings.isToolTipBold());
panelToolTip.addComponent(m_checkBox_tooltipBold, 1, row, GridBagConstraints.WEST, new Insets(0, 0, 0, 0), GridBagConstraints.REMAINDER, 1);
panelBox.add(Box.createRigidArea(new Dimension(15, 0)));
panelBox.add(m_checkBox_tooltipBold);
panelToolTip.addComponent(panelBox, 0, row, GridBagConstraints.WEST, new Insets(10, 0, 0, 0), GridBagConstraints.REMAINDER, 1);
// Slideshow
row = 0;
panelSlideShow.addComponent(new JLabel(Main.getString("settings_label_slideshowtimer")), 0, row, GridBagConstraints.WEST, new Insets(10, 0, 0, 0), GridBagConstraints.REMAINDER, 1);
row++;
m_spinner_SlideShowTimer = new JNumberSpinner(new SpinnerNumberModel(0, 0, 1000, 5));
m_spinner_SlideShowTimer.setValue(Main.m_settings.getSlideShowTimer()/1000);
panelSlideShow.addComponent(m_spinner_SlideShowTimer, 0, row, GridBagConstraints.WEST, new Insets(5, 0, 0, 0));
panelSlideShow.addComponent(new JLabel(Main.getString("settings_label_slideshowtimer_sec")), GridBagConstraints.RELATIVE, row, GridBagConstraints.WEST, new Insets(2, 5, 0, 0));
tab.addTab(Main.getString("settings_tab_tree"), panelTree);
tab.addTab(Main.getString("settings_tab_table"), panelTable);
tab.addTab(Main.getString("settings_tab_image"), panelImage);
tab.addTab(Main.getString("settings_tab_slideshow"), panelSlideShow);
tab.addTab(Main.getString("settings_tab_tooltip"), panelToolTip);
tab.addTab(Main.getString("settings_tab_other"), panelOther);
tab.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
tab.setFocusable(false);
setPreferredSize(new Dimension(500, 400));
ctrlPanel.add(tab, BorderLayout.NORTH);
this.setResizable(false);
addCtrlPanel(ctrlPanel);
}
protected boolean doGetData()
{
try
{
m_spinner_FillTimer.commitEdit();
}
catch (ParseException ex)
{}
try
{
m_spinner_ImgDisplayTimer.commitEdit();
}
catch (ParseException ex)
{}
// Tree
Main.m_settings.setFillListTimer((Integer)m_spinner_FillTimer.getValue());
// Table
Main.m_settings.setImgDisplayTimer((Integer)m_spinner_ImgDisplayTimer.getValue());
Main.m_settings.setDisplayAllInages(m_checkBox_displayAllImages.isSelected());
String[] strArray = m_textField_extField.getText().split("[,;]");
Main.m_settings.m_jpgExtensions = new String[strArray.length];
int i = 0;
for (String item : strArray)
Main.m_settings.m_jpgExtensions[i++] = item.toLowerCase().trim();
Main.m_settings.setSortDeep((Integer)m_spinner_SortDeep.getValue());
// Image
Main.m_settings.setSaveImage(m_comboBox_saveImage.getSelectedIndex());
Main.m_settings.setImgCacheSize((Integer)m_spinner_imgCacheSize.getValue());
Main.m_settings.setImgUsePreload(m_checkBox_usePreload.isSelected());
int h = m_comboBox_interpolation.getSelectedIndex();
Object interpolation;
if (h==1) interpolation = RenderingHints.VALUE_INTERPOLATION_BILINEAR;
else if (h==2) interpolation = RenderingHints.VALUE_INTERPOLATION_BICUBIC;
else interpolation = RenderingHints.VALUE_INTERPOLATION_NEAREST_NEIGHBOR;
Main.m_settings.setInterpolation(interpolation);
Main.m_settings.setImgViewBackColor(m_imgBackColorDisplay.getBackground());
// Other
Main.m_settings.setDelConfirm(m_checkBox_confirmDelete.isSelected());
Main.m_settings.setOverwriteConfirm(m_checkBox_confirmOverwrite.isSelected());
Main.m_settings.setUseFullScreenMode(m_checkBox_useFullScreenMode.isEnabled() && m_checkBox_useFullScreenMode.isSelected());
//Language
if (m_comboBox_language.getSelectedIndex() != 0)
Main.m_settings.setLocale((String)m_comboBox_language.getSelectedItem());
else Main.m_settings.setLocale("");
Main.m_settings.setCheckUpdate(m_checkBox_checkUpdate.isSelected());
// Slideshow
Main.m_settings.setSlideShowTimer((Integer)m_spinner_SlideShowTimer.getValue()*1000);
// Tooltips
int index = 0;
for (i=1; i<m_listModel.size()-1; i++)
{
JCheckListData data = (JCheckListData)m_listModel.get(i);
if (data.isChecked() || data.isSeparator())
index++;
}
Main.m_settings.m_toolTipTags = new int[index];
index = 0;
for (i=1; i<m_listModel.size()-1; i++)
{
JCheckListData data = (JCheckListData)m_listModel.get(i);
if (data.isChecked() || data.isSeparator())
Main.m_settings.m_toolTipTags[index++] = data.isSeparator() ? -1 : (Integer)data.getData();
}
Main.m_settings.setToolTipDismissDelay((Integer)m_spinner_ToolTips.getValue()*1000);
ToolTipManager.sharedInstance().setDismissDelay(Main.m_settings.getToolTipDismissDelay());
Main.m_settings.setToolTipTable(m_checkBox_tooltipTable.isSelected());
Main.m_settings.setToolTipBold(m_checkBox_tooltipBold.isSelected());
return true;
}
}