*/
package jalview.jbgui;
+import jalview.bin.Cache;
import jalview.fts.core.FTSDataColumnPreferences;
import jalview.fts.core.FTSDataColumnPreferences.PreferenceSource;
import jalview.fts.service.pdb.PDBFTSRestClient;
+import jalview.gui.JalviewBooleanRadioButtons;
import jalview.gui.JvSwingUtils;
import jalview.gui.StructureViewer.ViewerType;
+import jalview.io.BackupFilenameFilter;
+import jalview.io.BackupFiles;
import jalview.util.MessageManager;
import java.awt.BorderLayout;
import java.awt.event.ActionListener;
import java.awt.event.FocusEvent;
import java.awt.event.KeyEvent;
+import java.awt.event.KeyListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.JScrollPane;
+import javax.swing.JSpinner;
import javax.swing.JTabbedPane;
import javax.swing.JTable;
+import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.ListSelectionModel;
+import javax.swing.SpinnerModel;
+import javax.swing.SpinnerNumberModel;
import javax.swing.SwingConstants;
import javax.swing.border.Border;
import javax.swing.border.EmptyBorder;
protected JComboBox<String> nucColour = new JComboBox<>();
- protected JButton gapColour = new JButton();
+ /*
+ * Overview tab components
+ */
+ protected JPanel gapColour = new JPanel();
+
+ protected JPanel hiddenColour = new JPanel();
+
+ protected JCheckBox useLegacyGap;
- protected JButton hiddenColour = new JButton();
+ protected JCheckBox showHiddenAtStart;
+
+ protected JLabel gapLabel;
/*
* Connections tab components
protected JCheckBox sortByTree = new JCheckBox();
- /*
- * DAS Settings tab
- */
- protected JPanel dasTab = new JPanel();
/*
* Web Services tab
*/
protected JPanel wsTab = new JPanel();
+ /*
+ * Backups tab components
+ * a lot of these are member variables instead of local variables only so that they
+ * can be enabled/disabled easily
+ */
+
+ protected JCheckBox enableBackupFiles = new JCheckBox();
+
+ protected JPanel suffixPanel = new JPanel();
+
+ protected JPanel keepfilesPanel = new JPanel();
+
+ protected JPanel exampleFilesPanel = new JPanel();
+
+ protected JTextField suffixTemplate = new JTextField(null, 8);
+
+ protected JLabel suffixTemplateLabel = new JLabel();
+
+ protected JLabel suffixDigitsLabel = new JLabel();
+
+ protected JSpinner suffixDigitsSpinner = new JSpinner();
+
+ protected JalviewBooleanRadioButtons suffixReverse = new JalviewBooleanRadioButtons();
+
+ protected JalviewBooleanRadioButtons backupfilesKeepAll = new JalviewBooleanRadioButtons();
+
+ protected JSpinner backupfilesRollMaxSpinner = new JSpinner();
+
+ protected JalviewBooleanRadioButtons backupfilesConfirmDelete = new JalviewBooleanRadioButtons();
+
+ protected JLabel exampleLabel = new JLabel();
+
+ protected JScrollPane exampleScrollPane = new JScrollPane();
+
+ protected JTextArea backupfilesExampleLabel = new JTextArea();
+
/**
* Creates a new GPreferences object.
*/
tabbedPane.add(initColoursTab(),
MessageManager.getString("label.colours"));
+ tabbedPane.add(initOverviewTab(),
+ MessageManager.getString("label.overview"));
+
tabbedPane.add(initStructureTab(),
MessageManager.getString("label.structure"));
tabbedPane.add(initConnectionsTab(),
MessageManager.getString("label.connections"));
+ tabbedPane.add(initBackupsTab(),
+ MessageManager.getString("label.backups"));
+
tabbedPane.add(initLinksTab(),
MessageManager.getString("label.urllinks"));
MessageManager.getString("label.editing"));
/*
- * See DasSourceBrowser for the real work of configuring this tab.
- */
- dasTab.setLayout(new BorderLayout());
- tabbedPane.add(dasTab, MessageManager.getString("label.das_settings"));
-
- /*
* See WsPreferences for the real work of configuring this tab.
*/
wsTab.setLayout(new BorderLayout());
embbedBioJSON.setText(MessageManager.getString("label.embbed_biojson"));
embbedBioJSON.setBounds(new Rectangle(228, 200, 250, 23));
+
+ TitledBorder backupFilesBorder = new TitledBorder(
+ MessageManager
+ .getString("label.backup_files"));
+
+
jPanel11.add(jLabel1);
jPanel11.add(blcjv);
jPanel11.add(clustaljv);
MessageManager.getString("label.default_browser_unix"));
defaultBrowser.setFont(LABEL_FONT);
defaultBrowser.setText("");
-
+ final String tooltip = JvSwingUtils.wrapTooltip(true,
+ MessageManager.getString("label.double_click_to_browse"));
+ defaultBrowser.setToolTipText(tooltip);
defaultBrowser.addMouseListener(new MouseAdapter()
{
@Override
private JPanel initColoursTab()
{
JPanel coloursTab = new JPanel();
- JPanel alignmentPanel = new JPanel();
- alignmentPanel.setBorder(new TitledBorder(
+ coloursTab.setBorder(new TitledBorder(
MessageManager.getString("action.open_new_alignment")));
- alignmentPanel.setLayout(new FlowLayout());
+ coloursTab.setLayout(new FlowLayout());
JLabel mincolourLabel = new JLabel();
mincolourLabel.setFont(LABEL_FONT);
mincolourLabel.setHorizontalAlignment(SwingConstants.RIGHT);
protColourLabel.setHorizontalAlignment(SwingConstants.LEFT);
protColourLabel.setText(
MessageManager.getString("label.prot_alignment_colour") + " ");
- JvSwingUtils.addtoLayout(alignmentPanel,
+ JvSwingUtils.addtoLayout(coloursTab,
MessageManager
.getString("label.default_colour_scheme_for_alignment"),
protColourLabel, protColour);
nucColourLabel.setHorizontalAlignment(SwingConstants.LEFT);
nucColourLabel.setText(
MessageManager.getString("label.nuc_alignment_colour") + " ");
- JvSwingUtils.addtoLayout(alignmentPanel,
+ JvSwingUtils.addtoLayout(coloursTab,
MessageManager
.getString("label.default_colour_scheme_for_alignment"),
nucColourLabel, nucColour);
MessageManager.getString(
"label.default_maximum_colour_annotation_shading"),
maxcolourLabel, maxColour);
- alignmentPanel.add(annotationShding); // , FlowLayout.LEFT);
+ coloursTab.add(annotationShding); // , FlowLayout.LEFT);
+ return coloursTab;
+ }
+ /**
+ * Initialises the Overview tabbed panel.
+ *
+ * @return
+ */
+ private JPanel initOverviewTab()
+ {
JPanel overviewPanel = new JPanel();
overviewPanel.setBorder(new TitledBorder(
MessageManager.getString("label.overview_settings")));
- overviewPanel.setLayout(new FlowLayout());
gapColour.setFont(LABEL_FONT);
- gapColour.setBorder(BorderFactory.createEtchedBorder());
+ // fixing the border colours stops apparent colour bleed from the panel
+ gapColour.setBorder(
+ BorderFactory.createEtchedBorder(Color.white, Color.lightGray));
gapColour.setPreferredSize(new Dimension(40, 20));
gapColour.addMouseListener(new MouseAdapter()
{
});
hiddenColour.setFont(LABEL_FONT);
- hiddenColour.setBorder(BorderFactory.createEtchedBorder());
+ // fixing the border colours stops apparent colour bleed from the panel
+ hiddenColour.setBorder(
+ BorderFactory.createEtchedBorder(Color.white, Color.lightGray));
hiddenColour.setPreferredSize(new Dimension(40, 20));
hiddenColour.addMouseListener(new MouseAdapter()
{
}
});
- JCheckBox gapSetting = new JCheckBox(
+ useLegacyGap = new JCheckBox(
MessageManager.getString("label.ov_legacy_gap"));
- gapSetting.setFont(LABEL_FONT);
- gapSetting.setHorizontalAlignment(SwingConstants.LEFT);
- JLabel gapLabel = new JLabel(
+ useLegacyGap.setFont(LABEL_FONT);
+ useLegacyGap.setHorizontalAlignment(SwingConstants.LEFT);
+ useLegacyGap.setVerticalTextPosition(SwingConstants.TOP);
+ gapLabel = new JLabel(
MessageManager.getString("label.gap_colour"));
gapLabel.setFont(LABEL_FONT);
gapLabel.setHorizontalAlignment(SwingConstants.LEFT);
- JCheckBox hiddenSetting = new JCheckBox(
+ gapLabel.setVerticalTextPosition(SwingConstants.TOP);
+ showHiddenAtStart = new JCheckBox(
MessageManager.getString("label.ov_show_hide_default"));
- hiddenSetting.setFont(LABEL_FONT);
- hiddenSetting.setHorizontalAlignment(SwingConstants.LEFT);
+ showHiddenAtStart.setFont(LABEL_FONT);
+ showHiddenAtStart.setHorizontalAlignment(SwingConstants.LEFT);
+ showHiddenAtStart.setVerticalTextPosition(SwingConstants.TOP);
JLabel hiddenLabel = new JLabel(
MessageManager.getString("label.hidden_colour"));
hiddenLabel.setFont(LABEL_FONT);
hiddenLabel.setHorizontalAlignment(SwingConstants.LEFT);
+ hiddenLabel.setVerticalTextPosition(SwingConstants.TOP);
+
+ useLegacyGap.addActionListener(new ActionListener()
+ {
+ @Override
+ public void actionPerformed(ActionEvent e)
+ {
+ useLegacyGaps_actionPerformed(e);
+ }
+ });
overviewPanel.setLayout(new GridBagLayout());
GridBagConstraints c1 = new GridBagConstraints();
c1.gridx = 0;
c1.gridy = 0;
c1.weightx = 1;
+ c1.ipady = 20;
c1.anchor = GridBagConstraints.FIRST_LINE_START;
- overviewPanel.add(gapSetting, c1);
+ overviewPanel.add(useLegacyGap, c1);
GridBagConstraints c2 = new GridBagConstraints();
c2.fill = GridBagConstraints.HORIZONTAL;
c2.gridx = 1;
c2.gridy = 0;
- c2.insets = new Insets(0, 5, 0, 5);
+ c2.insets = new Insets(0, 15, 0, 10);
overviewPanel.add(gapLabel, c2);
GridBagConstraints c3 = new GridBagConstraints();
c3.fill = GridBagConstraints.HORIZONTAL;
c3.gridx = 2;
c3.gridy = 0;
+ c3.insets = new Insets(0, 0, 0, 15);
overviewPanel.add(gapColour, c3);
GridBagConstraints c4 = new GridBagConstraints();
c4.gridx = 0;
c4.gridy = 1;
c4.weightx = 1;
- overviewPanel.add(hiddenSetting, c4);
+ overviewPanel.add(showHiddenAtStart, c4);
GridBagConstraints c5 = new GridBagConstraints();
c5.fill = GridBagConstraints.HORIZONTAL;
c5.gridx = 1;
c5.gridy = 1;
- c5.insets = new Insets(0, 5, 0, 5);
+ c5.insets = new Insets(0, 15, 0, 10);
overviewPanel.add(hiddenLabel, c5);
GridBagConstraints c6 = new GridBagConstraints();
c6.fill = GridBagConstraints.HORIZONTAL;
c6.gridx = 2;
c6.gridy = 1;
+ c6.insets = new Insets(0, 0, 0, 15);
overviewPanel.add(hiddenColour, c6);
+ JButton resetButton = new JButton(
+ MessageManager.getString("label.reset_to_defaults"));
+
+ resetButton.addActionListener(new ActionListener()
+ {
+ @Override
+ public void actionPerformed(ActionEvent e)
+ {
+ resetOvDefaults_actionPerformed(e);
+ }
+ });
+
+ GridBagConstraints c7 = new GridBagConstraints();
+ c7.fill = GridBagConstraints.NONE;
+ c7.gridx = 0;
+ c7.gridy = 2;
+ c7.insets = new Insets(10, 0, 0, 0);
+ c7.anchor = GridBagConstraints.WEST;
+ overviewPanel.add(resetButton, c7);
+
// Add padding so the panel doesn't look ridiculous
JPanel spacePanel = new JPanel();
overviewPanel.add(spacePanel,
- new GridBagConstraints(0, 2, 1, 1, 1.0, 1.0,
+ new GridBagConstraints(0, 3, 1, 1, 1.0, 1.0,
GridBagConstraints.WEST, GridBagConstraints.BOTH,
new Insets(0, 0, 0, 5), 0, 0));
- coloursTab.setLayout(new GridLayout(2, 1));
- coloursTab.add(alignmentPanel);
- coloursTab.add(overviewPanel);
- return coloursTab;
+ return overviewPanel;
}
/**
pathLabel.setFont(new java.awt.Font("SansSerif", 0, 11));
pathLabel.setHorizontalAlignment(SwingConstants.LEFT);
pathLabel.setText(MessageManager.getString("label.chimera_path"));
- final String tooltip = JvSwingUtils.wrapTooltip(true,
- MessageManager.getString("label.chimera_path_tip"));
- pathLabel.setToolTipText(tooltip);
pathLabel.setBounds(new Rectangle(10, ypos, 140, height));
structureTab.add(pathLabel);
chimeraPath.setFont(LABEL_FONT);
chimeraPath.setText("");
+ final String tooltip = JvSwingUtils.wrapTooltip(true,
+ MessageManager.getString("label.chimera_path_tip"));
+ chimeraPath.setToolTipText(tooltip);
chimeraPath.setBounds(new Rectangle(160, ypos, 300, height));
chimeraPath.addMouseListener(new MouseAdapter()
{
startupCheckbox.setSelected(true);
startupFileTextfield.setFont(LABEL_FONT);
startupFileTextfield.setBounds(new Rectangle(172, 310, 330, 20));
+ final String tooltip = JvSwingUtils.wrapTooltip(true,
+ MessageManager.getString("label.double_click_to_browse"));
+ startupFileTextfield.setToolTipText(tooltip);
startupFileTextfield.addMouseListener(new MouseAdapter()
{
@Override
return visualTab;
}
+ /**
+ * Initialises the Backups tabbed panel.
+ *
+ * @return
+ */
+ private JPanel initBackupsTab()
+ {
+ JPanel backupsTab = new JPanel();
+ backupsTab.setBorder(new TitledBorder(MessageManager
+ .getString("label.backup_files")));
+ backupsTab.setLayout(new GridBagLayout());
+
+ enableBackupFiles.setFont(LABEL_FONT);
+ enableBackupFiles.setText(
+ MessageManager.getString("label.enable_backupfiles"));
+ enableBackupFiles
+ .setSelected(Cache.getDefault(BackupFiles.ENABLED, true));
+ enableBackupFiles.addActionListener(new ActionListener()
+ {
+ @Override
+ public void actionPerformed(ActionEvent e)
+ {
+ boolean selected = enableBackupFiles.isSelected();
+ // enable other options only when the first is checked
+ backupsOptionsSetEnabled(selected);
+ }
+ });
+
+ GridBagConstraints gbc = new GridBagConstraints();
+ gbc.weightx = 1.0;
+ gbc.weighty = 0.0;
+ gbc.anchor = GridBagConstraints.NORTHWEST;
+
+ // enable checkbox 1 row
+ gbc.gridwidth = 1;
+ gbc.gridy = 0;
+ backupsTab.add(enableBackupFiles, gbc);
+
+ // whole suffix panel next row
+ initBackupsTabSuffixPanel();
+ gbc.gridy = 1;
+ backupsTab.add(suffixPanel, gbc);
+
+ // keep files panel
+ initBackupsTabKeepFilesPanel();
+ gbc.gridy = 2;
+ backupsTab.add(keepfilesPanel, gbc);
+
+ // whole examples panel next row
+ initBackupsTabFilenameExamplesPanel();
+ gbc.gridy = 3;
+ backupsTab.add(exampleFilesPanel, gbc);
+
+ return backupsTab;
+ }
+
+
+ public JPanel initBackupsTabSuffixPanel()
+ {
+ suffixPanel.setBorder(new TitledBorder(
+ MessageManager.getString("label.suffix_format")));
+ suffixPanel.setLayout(new GridBagLayout());
+
+ suffixTemplateLabel
+ .setText(MessageManager.getString("label.suffix_template"));
+ suffixTemplateLabel.setHorizontalAlignment(SwingConstants.LEFT);
+ suffixTemplateLabel.setFont(LABEL_FONT);
+
+ String suffix = Cache.getDefault(BackupFiles.SUFFIX, BackupFiles.getNumPlaceHolder());
+ suffixTemplate.setText(suffix);
+ final String tooltip = JvSwingUtils.wrapTooltip(true, MessageManager
+ .getString("label.suffix_template_tooltip"));
+ suffixTemplate.setToolTipText(tooltip);
+ suffixTemplate.addActionListener(new ActionListener()
+ {
+ @Override
+ public void actionPerformed(ActionEvent e)
+ {
+ updateBackupFilesExampleLabel();
+ }
+
+ });
+ KeyListener kl = new KeyListener()
+ {
+ @Override
+ public void keyReleased(KeyEvent e)
+ {
+ updateBackupFilesExampleLabel();
+ }
+
+ @Override
+ public void keyPressed(KeyEvent e)
+ {
+ }
+
+ // disable use of ':'
+ @Override
+ public void keyTyped(KeyEvent e)
+ {
+ char c = e.getKeyChar();
+ if (c == ':')
+ {
+ // don't process ':'
+ e.consume();
+ }
+ }
+
+ };
+ suffixTemplate.addKeyListener(kl);
+
+ // digits spinner
+ suffixDigitsLabel
+ .setText(MessageManager.getString("label.index_digits"));
+ suffixDigitsLabel.setHorizontalAlignment(SwingConstants.LEFT);
+ suffixDigitsLabel.setFont(LABEL_FONT);
+ int defaultmin = 1;
+ try
+ {
+ defaultmin = Integer.parseInt(
+ MessageManager.getString("default.suffix_index_digits_min"));
+ } catch (Exception e)
+ {
+ defaultmin = 1;
+ System.out.println(
+ "Exception setting suffix digits min from default.suffix_index_digits_min label, setting to "
+ + defaultmin);
+ }
+ int defaultmax = 6;
+ try {
+ defaultmax = Integer.parseInt(
+ MessageManager.getString("default.suffix_index_digits_max"));
+ } catch (Exception e) {
+ defaultmax = 6;
+ System.out.println(
+ "Exception setting suffix digits max from default.suffix_index_digits_max label, setting to "
+ + defaultmax);
+ }
+ setIntegerSpinner(suffixDigitsSpinner, defaultmin, defaultmax,
+ Cache.getDefault(BackupFiles.SUFFIX_DIGITS, 3));
+
+ suffixReverse.setSelected(
+ Cache.getDefault(BackupFiles.REVERSE_ORDER, false));
+ suffixReverse.setLabels(
+ MessageManager.getString("label.reverse_roll"),
+ MessageManager.getString("label.increment_index"));
+ suffixReverse.addActionListener(new ActionListener()
+ {
+ @Override
+ public void actionPerformed(ActionEvent e)
+ {
+ updateBackupFilesExampleLabel();
+ }
+ });
+
+ GridBagConstraints sgbc = new GridBagConstraints();
+
+ // first row (template text box)
+ sgbc.anchor = GridBagConstraints.WEST;
+ sgbc.gridx = 0;
+ sgbc.gridy = 0;
+ sgbc.gridwidth = 1;
+ sgbc.gridheight = 1;
+ sgbc.weightx = 1.0;
+ sgbc.weighty = 0.0;
+ sgbc.fill = GridBagConstraints.NONE;
+ suffixPanel.add(suffixTemplateLabel,sgbc);
+
+ sgbc.gridx = 1;
+ sgbc.fill = GridBagConstraints.HORIZONTAL;
+ suffixPanel.add(suffixTemplate, sgbc);
+
+ // second row (number of digits spinner)
+ sgbc.gridy = 1;
+
+ sgbc.gridx = 0;
+ sgbc.fill = GridBagConstraints.NONE;
+ suffixPanel.add(suffixDigitsLabel, sgbc);
+
+ sgbc.gridx = 1;
+ sgbc.fill = GridBagConstraints.HORIZONTAL;
+ suffixPanel.add(suffixDigitsSpinner, sgbc);
+
+ // third row (forward order radio selection)
+ sgbc.gridx = 0;
+ sgbc.gridy = 2;
+ sgbc.gridwidth = GridBagConstraints.REMAINDER;
+ sgbc.fill = GridBagConstraints.HORIZONTAL;
+ suffixPanel.add(suffixReverse.getFalseButton(), sgbc);
+
+ // fourth row (reverse order radio selection)
+ sgbc.gridy = 3;
+ suffixPanel.add(suffixReverse.getTrueButton(), sgbc);
+ return suffixPanel;
+ }
+
+ private JPanel initBackupsTabKeepFilesPanel()
+ {
+ keepfilesPanel.setBorder(
+ new TitledBorder(MessageManager.getString("label.keep_files")));
+ keepfilesPanel.setLayout(new GridBagLayout());
+
+ backupfilesKeepAll
+ .setSelected(Cache.getDefault(BackupFiles.NO_MAX, true));
+ backupfilesKeepAll.setLabels(
+ MessageManager.getString("label.keep_all_backup_files"),
+ MessageManager.getString(
+ "label.keep_only_this_number_of_backup_files"));
+ backupfilesKeepAll.addTrueActionListener(new ActionListener()
+ {
+ @Override
+ public void actionPerformed(ActionEvent e)
+ {
+ updateBackupFilesExampleLabel();
+ }
+ });
+ backupfilesKeepAll.addActionListener(new ActionListener()
+ {
+ @Override
+ public void actionPerformed(ActionEvent e)
+ {
+ boolean selected = backupfilesKeepAll.isSelected();
+ keepRollMaxOptionsEnabled(!selected);
+ updateBackupFilesExampleLabel();
+ }
+ });
+
+ setIntegerSpinner(backupfilesRollMaxSpinner, 1, 999,
+ Cache.getDefault(BackupFiles.ROLL_MAX, 3));
+
+ backupfilesConfirmDelete.setSelected(
+ Cache.getDefault(BackupFiles.CONFIRM_DELETE_OLD, true));
+ backupfilesConfirmDelete.setLabels(
+ MessageManager.getString("label.confirm_delete"),
+ MessageManager.getString("label.auto_delete"));
+ // update the enabled section
+ keepRollMaxOptionsEnabled(!backupfilesKeepAll.isSelected());
+
+ GridBagConstraints kgbc = new GridBagConstraints();
+
+ // first row (template text box)
+ kgbc.anchor = GridBagConstraints.WEST;
+ kgbc.gridx = 0;
+ kgbc.gridy = 0;
+ kgbc.gridwidth = GridBagConstraints.REMAINDER;
+ kgbc.gridheight = 1;
+ kgbc.weightx = 1.0;
+ kgbc.weighty = 0.0;
+ kgbc.fill = GridBagConstraints.HORIZONTAL;
+ keepfilesPanel.add(backupfilesKeepAll.getTrueButton(), kgbc);
+
+ // second row
+ kgbc.gridy = 1;
+
+ kgbc.gridx = 0;
+ kgbc.gridwidth = GridBagConstraints.RELATIVE;
+ keepfilesPanel.add(backupfilesKeepAll.getFalseButton(), kgbc);
+
+ kgbc.gridx = 1;
+ // kgbc.fill = GridBagConstraints.HORIZONTAL;
+ keepfilesPanel.add(backupfilesRollMaxSpinner, kgbc);
+
+ // third row (indented)
+ kgbc.gridy = 2;
+ kgbc.insets = new Insets(0, 20, 0, 0);
+
+ kgbc.gridx = 0;
+ kgbc.gridwidth = GridBagConstraints.REMAINDER;
+ kgbc.fill = GridBagConstraints.HORIZONTAL;
+ kgbc.weightx = 1.0;
+ keepfilesPanel.add(backupfilesConfirmDelete.getTrueButton(), kgbc);
+
+ // fourth row (indented)
+ kgbc.gridy = 3;
+ keepfilesPanel.add(backupfilesConfirmDelete.getFalseButton(), kgbc);
+ return keepfilesPanel;
+ }
+
+ private JPanel initBackupsTabFilenameExamplesPanel()
+ {
+ exampleFilesPanel.setBorder(new TitledBorder(
+ MessageManager.getString("label.examples")));
+ exampleFilesPanel.setLayout(new GridBagLayout());
+
+ exampleLabel.setText(
+ MessageManager.getString("label.suffix_example_filenames"));
+ exampleLabel.setFont(LABEL_FONT);
+ exampleLabel.setHorizontalAlignment(SwingConstants.LEFT);
+
+ backupfilesExampleLabel.setEditable(false);
+ backupfilesExampleLabel.setPreferredSize(new Dimension(300, 100));
+ backupfilesExampleLabel.setAlignmentX(LEFT_ALIGNMENT);
+ backupfilesExampleLabel.setAlignmentY(TOP_ALIGNMENT);
+
+ backupfilesExampleLabel.setFont(LABEL_FONT_ITALIC);
+ backupfilesExampleLabel.setBackground(exampleLabel.getBackground());
+
+ /*
+ exampleScrollPane.setBounds(0, 0, 200, 100);
+ exampleScrollPane.setPreferredSize(new Dimension(800, 800));
+ exampleScrollPane.add(backupfilesExampleLabel);
+ */
+ updateBackupFilesExampleLabel();
+
+ GridBagConstraints gbc = new GridBagConstraints();
+ gbc.anchor = GridBagConstraints.WEST;
+
+ gbc.gridy = 0;
+ exampleFilesPanel.add(exampleLabel, gbc);
+ gbc.gridy = 1;
+ exampleFilesPanel.add(backupfilesExampleLabel, gbc);
+ // exampleFilesPanel.add(exampleScrollPane, gbc);
+ return exampleFilesPanel;
+ }
+
+ private void updateBackupFilesExampleLabel()
+ {
+ int exampleindex = 12;
+ String base = "filename";
+ String extension = ".fa";
+
+ String suffix = suffixTemplate.getText();
+ int digits = 3;
+ try {
+ suffixDigitsSpinner.commitEdit();
+ digits = (Integer) suffixDigitsSpinner.getValue();
+ digits = digits < 1 ? 1 : digits;
+ } catch (Exception e)
+ {
+ System.out.println("Failed casting (Integer) suffixTemplateSpinner.getValue()");
+ }
+ boolean reverse = suffixReverse.isSelected();
+ boolean keepAll = backupfilesKeepAll.isSelected();
+ int rollMax = 4;
+ try
+ {
+ backupfilesRollMaxSpinner.commitEdit();
+ rollMax = (Integer) backupfilesRollMaxSpinner.getValue();
+ rollMax = rollMax < 1 ? 1 : rollMax;
+ } catch (Exception e)
+ {
+ System.out.println(
+ "Failed casting (Integer) backupfilesRollMaxSpinner.getValue()");
+ }
+
+ int surround = 3;
+ StringBuilder exampleSB = new StringBuilder();
+ boolean firstLine = true;
+ if (reverse)
+ {
+
+ int min = 1;
+ int max = keepAll ? exampleindex : rollMax;
+ for (int index = min; index <= max; index++)
+ {
+ if (index == min + surround && index <= max - surround)
+ {
+ exampleSB.append("\n...");
+ }
+ else if (index > min + surround && index <= max - surround)
+ {
+ // nothing
+ }
+ else
+ {
+ if (firstLine)
+ {
+ firstLine = false;
+ }
+ else
+ {
+ exampleSB.append("\n");
+ }
+ exampleSB.append(BackupFilenameFilter.getBackupFilename(index,
+ base, suffix, digits, extension));
+ if (min == max)
+ {
+ // no extra text needed
+ }
+ else if (index == min)
+ {
+ exampleSB.append(" (most recent)");
+ }
+ else if (index == max)
+ {
+ exampleSB.append(" (oldest)");
+ }
+ }
+ }
+ }
+ else
+ {
+
+ int min = (keepAll || exampleindex - rollMax < 0) ? 1
+ : exampleindex - rollMax + 1;
+ int max = exampleindex;
+
+ for (int index = min; index <= max; index++)
+ {
+
+ if (index == min + surround && index <= max - surround)
+ {
+ exampleSB.append("\n...");
+ }
+ else if (index > min + surround && index <= max - surround)
+ {
+ // nothing
+ }
+ else
+ {
+ if (firstLine)
+ {
+ firstLine = false;
+ }
+ else
+ {
+ exampleSB.append("\n");
+ }
+ exampleSB.append(BackupFilenameFilter.getBackupFilename(index,
+ base, suffix, digits, extension));
+ if (min == max)
+ {
+ // no extra text needed
+ }
+ else if (index == min)
+ {
+ exampleSB.append(" (oldest)");
+ }
+ else if (index == max)
+ {
+ exampleSB.append(" (most recent)");
+ }
+ }
+ }
+
+ }
+
+ backupfilesExampleLabel.setText(exampleSB.toString());
+ }
+
+ protected void setIntegerSpinner(JSpinner s, int min,
+ int max, int def)
+ {
+ // integer spinner for number of digits
+ if (def > max)
+ {
+ max = def;
+ }
+ SpinnerModel sModel = new SpinnerNumberModel(def, min, max, 1);
+ s.setModel(sModel);
+
+ s.addChangeListener(new ChangeListener()
+ {
+ @Override
+ public void stateChanged(ChangeEvent e)
+ {
+ updateBackupFilesExampleLabel();
+ }
+
+ });
+
+ }
+
+ public static int getSpinnerInt(JSpinner s, int def)
+ {
+ int i = def;
+ try
+ {
+ s.commitEdit();
+ i = (Integer) s.getValue();
+ } catch (Exception e)
+ {
+ System.out.println("Failed casting (Integer) JSpinner s.getValue()");
+ }
+ return i;
+ }
+
+ private void keepRollMaxOptionsEnabled(boolean enabled)
+ {
+ backupfilesRollMaxSpinner.setEnabled(enabled);
+ backupfilesConfirmDelete.setEnabled(enabled);
+
+ }
+ private void backupsOptionsSetEnabled(boolean enabled)
+ {
+ suffixPanel.setEnabled(enabled);
+ keepfilesPanel.setEnabled(enabled);
+ exampleFilesPanel.setEnabled(enabled);
+
+ suffixTemplate.setEnabled(enabled);
+ suffixTemplateLabel.setEnabled(enabled);
+ suffixDigitsLabel.setEnabled(enabled);
+ suffixDigitsSpinner.setEnabled(enabled);
+ suffixReverse.setEnabled(enabled);
+ backupfilesKeepAll.setEnabled(enabled);
+ backupfilesRollMaxSpinner.setEnabled(enabled);
+ backupfilesConfirmDelete.setEnabled(enabled);
+ exampleLabel.setEnabled(enabled);
+ exampleScrollPane.setEnabled(enabled);
+ backupfilesExampleLabel.setEnabled(enabled);
+
+ keepRollMaxOptionsEnabled(enabled && !backupfilesKeepAll.isSelected());
+ }
+
protected void autoIdWidth_actionPerformed()
{
// TODO Auto-generated method stub
{
}
- protected void gapColour_actionPerformed(JButton btn)
+ protected void gapColour_actionPerformed(JPanel panel)
{
}
- protected void hiddenColour_actionPerformed(JButton btn)
+ protected void hiddenColour_actionPerformed(JPanel panel)
{
}
}
+ protected void useLegacyGaps_actionPerformed(ActionEvent e)
+ {
+ }
+
+ protected void resetOvDefaults_actionPerformed(ActionEvent e)
+ {
+ }
+
/**
* DOCUMENT ME!
*