/*
* PS3 Media Server, for streaming any medias to your PS3.
* Copyright (C) 2008 A.Brochard
*
* 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; version 2
* of the License only.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without 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 net.pms.newgui;
import com.jgoodies.forms.builder.PanelBuilder;
import com.jgoodies.forms.factories.Borders;
import com.jgoodies.forms.layout.CellConstraints;
import com.jgoodies.forms.layout.FormLayout;
import com.sun.jna.Platform;
import net.pms.Messages;
import net.pms.PMS;
import net.pms.configuration.PmsConfiguration;
import net.pms.dlna.DLNAMediaDatabase;
import net.pms.util.FormLayoutUtil;
import net.pms.util.KeyedComboBoxModel;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.File;
import java.util.Locale;
public class NavigationShareTab {
private static final Logger logger = LoggerFactory.getLogger(NavigationShareTab.class);
public static final String ALL_DRIVES = Messages.getString("FoldTab.0");
private static final String PANEL_COL_SPEC = "left:pref, 50dlu, pref, 150dlu, pref, 25dlu, pref, 25dlu, pref, default:grow";
private static final String PANEL_ROW_SPEC = "p, 3dlu, p, 3dlu, p, 3dlu, p, 3dlu, p, 3dlu, p, 8dlu, p, 3dlu, p, 3dlu, p, 3dlu, p, 3dlu, p, 3dlu, p, 3dlu, p, 8dlu, fill:default:grow";
private static final String SHARED_FOLDER_COL_SPEC = "left:pref, left:pref, pref, pref, pref, 0:grow";
private static final String SHARED_FOLDER_ROW_SPEC = "p, 3dlu, p, 3dlu, fill:default:grow";
private JList FList;
private DefaultListModel df;
private JCheckBox hidevideosettings;
private JCheckBox hidetranscode;
private JCheckBox hidemedialibraryfolder;
private JCheckBox hideextensions;
private JCheckBox hideemptyfolders;
private JCheckBox hideengines;
private JButton but5;
private JTextField seekpos;
private JCheckBox thumbgenCheckBox;
private JCheckBox mplayer_thumb;
private JCheckBox dvdiso_thumb;
private JCheckBox image_thumb;
private JCheckBox cacheenable;
private JCheckBox archive;
private JComboBox sortmethod;
private JComboBox audiothumbnail;
private JTextField defaultThumbFolder;
private JCheckBox iphoto;
private JCheckBox aperture;
private JCheckBox itunes;
private JButton select;
private JButton cachereset;
public DefaultListModel getDf() {
return df;
}
private final PmsConfiguration configuration;
NavigationShareTab(PmsConfiguration configuration) {
this.configuration = configuration;
}
private void updateModel() {
if (df.size() == 1 && df.getElementAt(0).equals(ALL_DRIVES)) {
configuration.setFolders("");
} else {
StringBuilder sb = new StringBuilder();
for (int i = 0; i < df.size(); i++) {
if (i > 0) {
sb.append(",");
}
String entry = (String) df.getElementAt(i);
// escape embedded commas. note: backslashing isn't safe as it conflicts with
// Windows path separators:
// http://ps3mediaserver.org/forum/viewtopic.php?f=14&t=8883&start=250#p43520
sb.append(entry.replace(",", ","));
}
configuration.setFolders(sb.toString());
}
}
public JComponent build() {
// Apply the orientation for the locale
Locale locale = new Locale(configuration.getLanguage());
ComponentOrientation orientation = ComponentOrientation.getOrientation(locale);
String colSpec = FormLayoutUtil.getColSpec(PANEL_COL_SPEC, orientation);
// Set basic layout
FormLayout layout = new FormLayout(colSpec, PANEL_ROW_SPEC);
PanelBuilder builder = new PanelBuilder(layout);
builder.border(Borders.DLU4);
builder.opaque(true);
CellConstraints cc = new CellConstraints();
// Init all gui components
initSimpleComponents(cc);
PanelBuilder builderSharedFolder = initSharedFoldersGuiComponents(cc);
// Build gui with initialized components
JComponent cmp = builder.addSeparator(Messages.getString("FoldTab.13"),
FormLayoutUtil.flip(cc.xyw(1, 1, 10), colSpec, orientation));
cmp = (JComponent) cmp.getComponent(0);
cmp.setFont(cmp.getFont().deriveFont(Font.BOLD));
builder.add(thumbgenCheckBox, FormLayoutUtil.flip(cc.xyw(1, 3, 3), colSpec, orientation));
builder.addLabel(Messages.getString("NetworkTab.16"), FormLayoutUtil.flip(cc.xyw(4, 3, 3), colSpec, orientation));
builder.add(seekpos, FormLayoutUtil.flip(cc.xyw(6, 3, 1), colSpec, orientation));
builder.add(mplayer_thumb, FormLayoutUtil.flip(cc.xyw(1, 5, 3), colSpec, orientation));
builder.add(dvdiso_thumb, FormLayoutUtil.flip(cc.xyw(3, 5, 3), colSpec, orientation));
builder.add(image_thumb, FormLayoutUtil.flip(cc.xyw(1, 7, 3), colSpec, orientation));
builder.addLabel(Messages.getString("FoldTab.26"), FormLayoutUtil.flip(cc.xyw(1, 9, 3), colSpec, orientation));
builder.add(audiothumbnail, FormLayoutUtil.flip(cc.xyw(4, 9, 3), colSpec, orientation));
builder.addLabel(Messages.getString("FoldTab.27"), FormLayoutUtil.flip(cc.xyw(1, 11, 1), colSpec, orientation));
builder.add(defaultThumbFolder, FormLayoutUtil.flip(cc.xyw(4, 11, 3), colSpec, orientation));
builder.add(select, FormLayoutUtil.flip(cc.xyw(7, 11, 1), colSpec, orientation));
cmp = builder.addSeparator(Messages.getString("NetworkTab.15"), FormLayoutUtil.flip(cc.xyw(1, 13, 10), colSpec, orientation));
cmp = (JComponent) cmp.getComponent(0);
cmp.setFont(cmp.getFont().deriveFont(Font.BOLD));
builder.add(archive, FormLayoutUtil.flip(cc.xyw(1, 15, 3), colSpec, orientation));
builder.add(hidevideosettings, FormLayoutUtil.flip(cc.xyw(4, 15, 2), colSpec, orientation));
builder.add(hidetranscode, FormLayoutUtil.flip(cc.xyw(7, 15, 4), colSpec, orientation));
builder.add(hideextensions, FormLayoutUtil.flip(cc.xyw(1, 17, 3), colSpec, orientation));
builder.add(hideengines, FormLayoutUtil.flip(cc.xyw(4, 17, 2), colSpec, orientation));
builder.add(hideemptyfolders, FormLayoutUtil.flip(cc.xyw(7, 17, 4), colSpec, orientation));
builder.add(itunes, FormLayoutUtil.flip(cc.xyw(1, 19, 3), colSpec, orientation));
builder.add(iphoto, FormLayoutUtil.flip(cc.xyw(4, 19, 2), colSpec, orientation));
builder.add(aperture, FormLayoutUtil.flip(cc.xyw(7, 19, 4), colSpec, orientation));
builder.add(cacheenable, FormLayoutUtil.flip(cc.xy(1, 21), colSpec, orientation));
builder.add(cachereset, FormLayoutUtil.flip(cc.xyw(4, 21, 2), colSpec, orientation));
builder.add(hidemedialibraryfolder, FormLayoutUtil.flip(cc.xyw(7, 21, 4), colSpec, orientation));
builder.addLabel(Messages.getString("FoldTab.18"), FormLayoutUtil.flip(cc.xyw(1, 23, 3), colSpec, orientation));
builder.add(sortmethod, FormLayoutUtil.flip(cc.xyw(4, 23, 3), colSpec, orientation));
builder.add(builderSharedFolder.getPanel(), FormLayoutUtil.flip(cc.xyw(1, 27, 10), colSpec, orientation));
JPanel panel = builder.getPanel();
// Apply the orientation to the panel and all components in it
panel.applyComponentOrientation(orientation);
JScrollPane scrollPane = new JScrollPane(
panel,
JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,
JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
scrollPane.setBorder(BorderFactory.createEmptyBorder());
return scrollPane;
}
private void initSimpleComponents(CellConstraints cc) {
// Generate thumbnails
thumbgenCheckBox = new JCheckBox(Messages.getString("NetworkTab.2"));
thumbgenCheckBox.setContentAreaFilled(false);
thumbgenCheckBox.addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent e) {
configuration.setThumbnailGenerationEnabled((e.getStateChange() == ItemEvent.SELECTED));
}
});
if (configuration.isThumbnailGenerationEnabled()) {
thumbgenCheckBox.setSelected(true);
}
//ThumbnailSeekPos
seekpos = new JTextField("" + configuration.getThumbnailSeekPos());
seekpos.addKeyListener(new KeyAdapter() {
@Override
public void keyReleased(KeyEvent e) {
try {
int ab = Integer.parseInt(seekpos.getText());
configuration.setThumbnailSeekPos(ab);
} catch (NumberFormatException nfe) {
logger.debug("Could not parse thumbnail seek position from \"" + seekpos.getText() + "\"");
}
}
});
// UseMplayerForVideoThumbs
mplayer_thumb = new JCheckBox(Messages.getString("FoldTab.14"));
mplayer_thumb.setContentAreaFilled(false);
mplayer_thumb.addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent e) {
configuration.setUseMplayerForVideoThumbs((e.getStateChange() == ItemEvent.SELECTED));
}
});
if (configuration.isUseMplayerForVideoThumbs()) {
mplayer_thumb.setSelected(true);
}
// DvdIsoThumbnails
dvdiso_thumb = new JCheckBox(Messages.getString("FoldTab.19"));
dvdiso_thumb.setContentAreaFilled(false);
dvdiso_thumb.addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent e) {
configuration.setDvdIsoThumbnails((e.getStateChange() == ItemEvent.SELECTED));
}
});
if (configuration.isDvdIsoThumbnails()) {
dvdiso_thumb.setSelected(true);
}
// ImageThumbnailsEnabled
image_thumb = new JCheckBox(Messages.getString("FoldTab.21"));
image_thumb.setContentAreaFilled(false);
image_thumb.addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent e) {
configuration.setImageThumbnailsEnabled((e.getStateChange() == ItemEvent.SELECTED));
}
});
if (configuration.getImageThumbnailsEnabled()) {
image_thumb.setSelected(true);
}
// AudioThumbnailMethod
final KeyedComboBoxModel thumbKCBM = new KeyedComboBoxModel(new Object[]{"0", "1", "2"}, new Object[]{Messages.getString("FoldTab.35"), Messages.getString("FoldTab.23"), Messages.getString("FoldTab.24")});
audiothumbnail = new JComboBox(thumbKCBM);
audiothumbnail.setEditable(false);
thumbKCBM.setSelectedKey("" + configuration.getAudioThumbnailMethod());
audiothumbnail.addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent e) {
if (e.getStateChange() == ItemEvent.SELECTED) {
try {
configuration.setAudioThumbnailMethod(Integer.parseInt((String) thumbKCBM.getSelectedKey()));
} catch (NumberFormatException nfe) {
logger.debug("Could not parse audio thumbnail method from \"" + thumbKCBM.getSelectedKey() + "\"");
}
}
}
});
// AlternateThumbFolder
defaultThumbFolder = new JTextField(configuration.getAlternateThumbFolder());
defaultThumbFolder.addKeyListener(new KeyAdapter() {
@Override
public void keyReleased(KeyEvent e) {
configuration.setAlternateThumbFolder(defaultThumbFolder.getText());
}
});
// AlternateThumbFolder: select
select = new JButton("...");
select.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
JFileChooser chooser = null;
try {
chooser = new JFileChooser();
} catch (Exception ee) {
chooser = new JFileChooser(new RestrictedFileSystemView());
}
chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
int returnVal = chooser.showDialog((Component) e.getSource(), Messages.getString("FoldTab.28"));
if (returnVal == JFileChooser.APPROVE_OPTION) {
defaultThumbFolder.setText(chooser.getSelectedFile().getAbsolutePath());
configuration.setAlternateThumbFolder(chooser.getSelectedFile().getAbsolutePath());
}
}
});
// HideVideoSettings
hidevideosettings = new JCheckBox(Messages.getString("FoldTab.6"));
hidevideosettings.setContentAreaFilled(false);
if (configuration.getHideVideoSettings()) {
hidevideosettings.setSelected(true);
}
hidevideosettings.addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent e) {
configuration.setHideVideoSettings((e.getStateChange() == ItemEvent.SELECTED));
}
});
hidetranscode = new JCheckBox(Messages.getString("FoldTab.33"));
hidetranscode.setContentAreaFilled(false);
if (configuration.getHideTranscodeEnabled()) {
hidetranscode.setSelected(true);
}
hidetranscode.addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent e) {
configuration.setHideTranscodeEnabled((e.getStateChange() == ItemEvent.SELECTED));
}
});
hidemedialibraryfolder = new JCheckBox(Messages.getString("FoldTab.32"));
hidemedialibraryfolder.setContentAreaFilled(false);
if (configuration.isHideMediaLibraryFolder()) {
hidemedialibraryfolder.setSelected(true);
}
hidemedialibraryfolder.addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent e) {
configuration.setHideMediaLibraryFolder((e.getStateChange() == ItemEvent.SELECTED));
}
});
archive = new JCheckBox(Messages.getString("NetworkTab.1"));
archive.setContentAreaFilled(false);
archive.addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent e) {
configuration.setArchiveBrowsing(e.getStateChange() == ItemEvent.SELECTED);
}
});
if (configuration.isArchiveBrowsing()) {
archive.setSelected(true);
}
cachereset = new JButton(Messages.getString("NetworkTab.18"));
cacheenable = new JCheckBox(Messages.getString("NetworkTab.17"));
cacheenable.setContentAreaFilled(false);
cacheenable.setSelected(configuration.getUseCache());
cacheenable.addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent e) {
configuration.setUseCache((e.getStateChange() == ItemEvent.SELECTED));
cachereset.setEnabled(configuration.getUseCache());
if ((LooksFrame) PMS.get().getFrame() != null) {
((LooksFrame) PMS.get().getFrame()).getFt().setScanLibraryEnabled(configuration.getUseCache());
}
}
});
cachereset.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
int option = JOptionPane.showConfirmDialog(
(Component) PMS.get().getFrame(),
Messages.getString("NetworkTab.13") + Messages.getString("NetworkTab.19"),
Messages.getString("Dialog.Question"),
JOptionPane.YES_NO_OPTION);
if (option == JOptionPane.YES_OPTION) {
PMS.get().getDatabase().init(true);
}
}
});
cachereset.setEnabled(configuration.getUseCache());
// HideExtensions
hideextensions = new JCheckBox(Messages.getString("FoldTab.5"));
hideextensions.setContentAreaFilled(false);
if (configuration.isHideExtensions()) {
hideextensions.setSelected(true);
}
hideextensions.addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent e) {
configuration.setHideExtensions((e.getStateChange() == ItemEvent.SELECTED));
}
});
// HideEngineNames
hideengines = new JCheckBox(Messages.getString("FoldTab.8"));
hideengines.setContentAreaFilled(false);
if (configuration.isHideEngineNames()) {
hideengines.setSelected(true);
}
hideengines.addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent e) {
configuration.setHideEngineNames((e.getStateChange() == ItemEvent.SELECTED));
}
});
// HideEmptyFolders
hideemptyfolders = new JCheckBox(Messages.getString("FoldTab.31"));
hideemptyfolders.setContentAreaFilled(false);
if (configuration.isHideEmptyFolders()) {
hideemptyfolders.setSelected(true);
}
hideemptyfolders.addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent e) {
configuration.setHideEmptyFolders((e.getStateChange() == ItemEvent.SELECTED));
}
});
// ItunesEnabled
itunes = new JCheckBox(Messages.getString("FoldTab.30"));
itunes.setContentAreaFilled(false);
if (configuration.isShowItunesLibrary()) {
itunes.setSelected(true);
}
if (!(Platform.isMac() || Platform.isWindows())) {
itunes.setEnabled(false);
}
itunes.addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent e) {
configuration.setShowItunesLibrary((e.getStateChange() == ItemEvent.SELECTED));
}
});
// IphotoEnabled
iphoto = new JCheckBox(Messages.getString("FoldTab.29"));
iphoto.setContentAreaFilled(false);
if (configuration.isShowIphotoLibrary()) {
iphoto.setSelected(true);
}
if (!Platform.isMac()) {
iphoto.setEnabled(false);
}
iphoto.addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent e) {
configuration.setShowIphotoLibrary((e.getStateChange() == ItemEvent.SELECTED));
}
});
// ApertureEnabled
aperture = new JCheckBox(Messages.getString("FoldTab.34"));
aperture.setContentAreaFilled(false);
if (configuration.isShowApertureLibrary()) {
aperture.setSelected(true);
}
if (!Platform.isMac()) {
aperture.setEnabled(false);
}
aperture.addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent e) {
configuration.setShowApertureLibrary((e.getStateChange() == ItemEvent.SELECTED));
}
});
// sort method
final KeyedComboBoxModel kcbm = new KeyedComboBoxModel(
new Object[]{
"0", // alphabetical
"4", // natural sort
"3", // ASCIIbetical
"1", // newest first
"2", // oldest first
"5" // random
},
new Object[]{
Messages.getString("FoldTab.15"),
Messages.getString("FoldTab.22"),
Messages.getString("FoldTab.20"),
Messages.getString("FoldTab.16"),
Messages.getString("FoldTab.17"),
Messages.getString("FoldTab.36")
}
);
sortmethod = new JComboBox(kcbm);
sortmethod.setEditable(false);
kcbm.setSelectedKey("" + configuration.getSortMethod());
sortmethod.addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent e) {
if (e.getStateChange() == ItemEvent.SELECTED) {
try {
configuration.setSortMethod(Integer.parseInt((String) kcbm.getSelectedKey()));
} catch (NumberFormatException nfe) {
logger.debug("Could not parse sort method from \"" + kcbm.getSelectedKey() + "\"");
}
}
}
});
}
private PanelBuilder initSharedFoldersGuiComponents(CellConstraints cc) {
// Apply the orientation for the locale
Locale locale = new Locale(configuration.getLanguage());
ComponentOrientation orientation = ComponentOrientation.getOrientation(locale);
String colSpec = FormLayoutUtil.getColSpec(SHARED_FOLDER_COL_SPEC, orientation);
FormLayout layoutFolders = new FormLayout(colSpec, SHARED_FOLDER_ROW_SPEC);
PanelBuilder builderFolder = new PanelBuilder(layoutFolders);
builderFolder.opaque(true);
JComponent cmp = builderFolder.addSeparator(Messages.getString("FoldTab.7"), FormLayoutUtil.flip(cc.xyw(1, 1, 6), colSpec, orientation));
cmp = (JComponent) cmp.getComponent(0);
cmp.setFont(cmp.getFont().deriveFont(Font.BOLD));
JButton but = new JButton(LooksFrame.readImageIcon("folder_new-32.png"));
but.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
JFileChooser chooser = null;
try {
chooser = new JFileChooser();
} catch (Exception ee) {
chooser = new JFileChooser(new RestrictedFileSystemView());
}
chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
//int returnVal = chooser.showDialog((Component) e.getSource(), Messages.getString("FoldTab.9"));
int returnVal = chooser.showOpenDialog((Component) e.getSource());
if (returnVal == JFileChooser.APPROVE_OPTION) {
((DefaultListModel) FList.getModel()).add(FList.getModel().getSize(), chooser.getSelectedFile().getAbsolutePath());
if (FList.getModel().getElementAt(0).equals(ALL_DRIVES)) {
((DefaultListModel) FList.getModel()).remove(0);
}
updateModel();
}
}
});
builderFolder.add(but, FormLayoutUtil.flip(cc.xy(1, 3), colSpec, orientation));
JButton but2 = new JButton(LooksFrame.readImageIcon("button_cancel-32.png"));
//but2.setBorder(BorderFactory.createEtchedBorder());
but2.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
if (FList.getSelectedIndex() > -1) {
((DefaultListModel) FList.getModel()).remove(FList.getSelectedIndex());
if (FList.getModel().getSize() == 0) {
((DefaultListModel) FList.getModel()).add(0, ALL_DRIVES);
}
updateModel();
}
}
});
builderFolder.add(but2, FormLayoutUtil.flip(cc.xy(2, 3), colSpec, orientation));
JButton but3 = new JButton(LooksFrame.readImageIcon("kdevelop_down-32.png"));
but3.setToolTipText(Messages.getString("FoldTab.12"));
// but3.setBorder(BorderFactory.createEmptyBorder());
but3.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
DefaultListModel model = ((DefaultListModel) FList.getModel());
for (int i = 0; i < model.size() - 1; i++) {
if (FList.isSelectedIndex(i)) {
String value = model.get(i).toString();
model.set(i, model.get(i + 1));
model.set(i + 1, value);
FList.setSelectedIndex(i + 1);
updateModel();
break;
}
}
}
});
builderFolder.add(but3, FormLayoutUtil.flip(cc.xy(3, 3), colSpec, orientation));
JButton but4 = new JButton(LooksFrame.readImageIcon("up-32.png"));
but4.setToolTipText(Messages.getString("FoldTab.12"));
// but4.setBorder(BorderFactory.createEmptyBorder());
but4.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
DefaultListModel model = ((DefaultListModel) FList.getModel());
for (int i = 1; i < model.size(); i++) {
if (FList.isSelectedIndex(i)) {
String value = model.get(i).toString();
model.set(i, model.get(i - 1));
model.set(i - 1, value);
FList.setSelectedIndex(i - 1);
updateModel();
break;
}
}
}
});
builderFolder.add(but4, FormLayoutUtil.flip(cc.xy(4, 3), colSpec, orientation));
but5 = new JButton(LooksFrame.readImageIcon("search-32.png"));
but5.setToolTipText(Messages.getString("FoldTab.2"));
//but5.setBorder(BorderFactory.createEmptyBorder());
but5.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (configuration.getUseCache()) {
DLNAMediaDatabase database = PMS.get().getDatabase();
if (database != null) {
if (!database.isScanLibraryRunning()) {
int option = JOptionPane.showConfirmDialog(
(Component) PMS.get().getFrame(),
Messages.getString("FoldTab.3") + Messages.getString("FoldTab.4"),
Messages.getString("Dialog.Question"),
JOptionPane.YES_NO_OPTION);
if (option == JOptionPane.YES_OPTION) {
database.scanLibrary();
but5.setIcon(LooksFrame.readImageIcon("viewmagfit-32.png"));
}
} else {
int option = JOptionPane.showConfirmDialog(
(Component) PMS.get().getFrame(),
Messages.getString("FoldTab.10"),
Messages.getString("Dialog.Question"),
JOptionPane.YES_NO_OPTION);
if (option == JOptionPane.YES_OPTION) {
database.stopScanLibrary();
PMS.get().getFrame().setStatusLine(null);
but5.setIcon(LooksFrame.readImageIcon("search-32.png"));
}
}
}
}
}
});
builderFolder.add(but5, FormLayoutUtil.flip(cc.xy(5, 3), colSpec, orientation));
but5.setEnabled(configuration.getUseCache());
df = new DefaultListModel();
File[] folders = PMS.get().getFoldersConf();
if (folders != null && folders.length > 0) {
for (File file : folders) {
df.addElement(file.getAbsolutePath());
}
} else {
df.addElement(ALL_DRIVES);
}
FList = new JList();
FList.setModel(df);
JScrollPane pane = new JScrollPane(FList);
builderFolder.add(pane, FormLayoutUtil.flip(cc.xyw(1, 5, 6), colSpec, orientation));
return builderFolder;
}
public void setScanLibraryEnabled(boolean enabled) {
but5.setEnabled(enabled);
but5.setIcon(LooksFrame.readImageIcon("search-32.png"));
}
}