X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fjbgui%2FGPreferences.java;h=87cc87b3dab038c031763bc1414a2a61461eb463;hb=470b622223b227bdbd4af3151f9d002a95bb1f52;hp=a38283b8578411f88b4274b15c484235db91244b;hpb=ec536f23e7346a8450dae7080e83c2b82807ff70;p=jalview.git diff --git a/src/jalview/jbgui/GPreferences.java b/src/jalview/jbgui/GPreferences.java index a38283b..87cc87b 100755 --- a/src/jalview/jbgui/GPreferences.java +++ b/src/jalview/jbgui/GPreferences.java @@ -24,10 +24,12 @@ import jalview.bin.Cache; import jalview.fts.core.FTSDataColumnPreferences; import jalview.fts.core.FTSDataColumnPreferences.PreferenceSource; import jalview.fts.service.pdb.PDBFTSRestClient; +import jalview.gui.Desktop; import jalview.gui.JalviewBooleanRadioButtons; +import jalview.gui.JvOptionPane; import jalview.gui.JvSwingUtils; import jalview.gui.StructureViewer.ViewerType; -import jalview.io.BackupFilenameFilter; +import jalview.io.BackupFilenameParts; import jalview.io.BackupFiles; import jalview.util.MessageManager; @@ -294,6 +296,8 @@ public class GPreferences extends JPanel protected JPanel presetsPanel = new JPanel(); + protected JButton revertButton = new JButton(); + protected JComboBox backupfilesPresetsCombo = new JComboBox<>(); protected JPanel suffixPanel = new JPanel(); @@ -532,9 +536,6 @@ public class GPreferences extends JPanel 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); @@ -642,6 +643,7 @@ public class GPreferences extends JPanel linkTab.setLayout(new GridBagLayout()); // Set up table for Url links + linkUrlTable.getTableHeader().setReorderingAllowed(false); linkUrlTable.setFillsViewportHeight(true); linkUrlTable.setAutoResizeMode(JTable.AUTO_RESIZE_ALL_COLUMNS); linkUrlTable.setAutoCreateRowSorter(true); @@ -1714,6 +1716,23 @@ public class GPreferences extends JPanel updateBackupFilesExampleLabel(); } + private boolean warnAboutSuffixReverseChange() + { + boolean savedSuffixReverse = Cache.getDefault(BackupFiles.REVERSE_ORDER, + false); + int savedSuffixDigits = Cache.getDefault(BackupFiles.SUFFIX_DIGITS, 3); + String savedSuffixTemplate = Cache.getDefault(BackupFiles.SUFFIX, + ".bak" + BackupFiles.NUM_PLACEHOLDER); + + boolean nowSuffixReverse = suffixReverse.isSelected(); + int nowSuffixDigits = getSpinnerInt(suffixDigitsSpinner, 3); + String nowSuffixTemplate = suffixTemplate.getText(); + return nowSuffixReverse != savedSuffixReverse + && nowSuffixDigits == savedSuffixDigits + && nowSuffixTemplate != null + && nowSuffixTemplate.equals(savedSuffixTemplate); + } + /** * Initialises the Backups tabbed panel. * @@ -1727,9 +1746,9 @@ public class GPreferences extends JPanel backupsTab.setLayout(new GridBagLayout()); GridBagConstraints gbc = new GridBagConstraints(); - gbc.weightx = 1.0; + gbc.weightx = 0.0; gbc.weighty = 0.0; - gbc.anchor = GridBagConstraints.NORTHWEST; + gbc.anchor = GridBagConstraints.FIRST_LINE_START; gbc.fill = GridBagConstraints.NONE; initBackupsTabPresetsPanel(); @@ -1737,7 +1756,6 @@ public class GPreferences extends JPanel initBackupsTabKeepFilesPanel(); initBackupsTabFilenameExamplesPanel(); - gbc.weightx = 0.5; enableBackupFiles.setFont(LABEL_FONT_BOLD); enableBackupFiles .setText(MessageManager.getString("label.enable_backupfiles")); @@ -1746,44 +1764,56 @@ public class GPreferences extends JPanel @Override public void actionPerformed(ActionEvent e) { - boolean selected = enableBackupFiles.isSelected(); // enable other options only when the first is checked backupsOptionsSetEnabled(); } }); - // enable checkbox 1 row + + // enable checkbox 1 col gbc.gridwidth = 1; + gbc.gridheight = 1; gbc.gridx = 0; - gbc.gridy = 0; + gbc.gridy = 0; // row 0 backupsTab.add(enableBackupFiles, gbc); + // summary of scheme box (over two rows) gbc.gridx = 1; - gbc.weightx = 1.0; + gbc.weightx = 0.0; gbc.gridheight = 2; - // gbc.anchor = GridBagConstraints.NORTHEAST; - // gbc.fill = GridBagConstraints.HORIZONTAL; + gbc.anchor = GridBagConstraints.FIRST_LINE_END; + gbc.fill = GridBagConstraints.BOTH; backupsTab.add(exampleFilesPanel, gbc); + gbc.gridheight = 1; + gbc.anchor = GridBagConstraints.FIRST_LINE_START; + gbc.fill = GridBagConstraints.NONE; + // fill empty space on right + gbc.gridx++; + gbc.weightx = 1.0; + backupsTab.add(new JPanel(), gbc); + + // schemes box + gbc.weightx = 0.0; gbc.gridx = 0; - gbc.gridy = 1; + gbc.gridy++; // row 1 backupsTab.add(presetsPanel, gbc); - gbc.anchor = GridBagConstraints.NORTHWEST; - gbc.fill = GridBagConstraints.NONE; + // gbc.anchor = GridBagConstraints.NORTHWEST; + // now using whole row gbc.gridwidth = 2; gbc.gridheight = 1; - // whole suffix panel next row + // keep files box gbc.gridx = 0; - gbc.gridy = 2; + gbc.gridy++; // row 2 backupsTab.add(keepfilesPanel, gbc); - // keep files panel - gbc.gridy = 3; + // filename strategy box + gbc.gridy++; // row 3 backupsTab.add(suffixPanel, gbc); // fill empty space - gbc.gridy = 4; + gbc.gridy++; // row 4 gbc.weighty = 1.0; backupsTab.add(new JPanel(), gbc); @@ -1791,7 +1821,9 @@ public class GPreferences extends JPanel return backupsTab; } - private final IntKeyStringValueEntry[] backupfilesPresetEntries = { + protected static final int BACKUPFILESSCHEMECUSTOMISE = 0; + + private static final IntKeyStringValueEntry[] backupfilesPresetEntries = { new IntKeyStringValueEntry(1, MessageManager.getString("label.default")), new IntKeyStringValueEntry(2, @@ -1801,14 +1833,17 @@ public class GPreferences extends JPanel new IntKeyStringValueEntry(4, MessageManager.getString("label.rolled_backups")), // ... - new IntKeyStringValueEntry(255, - MessageManager.getString("label.previously_saved_scheme")), // IMPORTANT, keep "Custom" entry with key 0 (even though it appears last) - new IntKeyStringValueEntry(0, + new IntKeyStringValueEntry(BACKUPFILESSCHEMECUSTOMISE, MessageManager.getString("label.customise")) }; - private final Map backupfilesPresetEntriesValues = new HashMap() + private static final Map backupfilesPresetEntriesValues = new HashMap() { + /** + * + */ + private static final long serialVersionUID = 125L; + { put(1, new BackupFilesPresetEntry( ".bak" + BackupFiles.NUM_PLACEHOLDER, 3, false, false, 3, @@ -1824,8 +1859,27 @@ public class GPreferences extends JPanel private JPanel initBackupsTabPresetsPanel() { - presetsPanel.setBorder( - new TitledBorder(MessageManager.getString("label.schemes"))); + + String title = MessageManager.getString("label.schemes"); + // TitledBorder tb = new TitledBorder(new EmptyBorder(0, 0, 0, 0), title); + // TitledBorder tb = new TitledBorder(title); + // tb.setTitleFont(LABEL_FONT); + // presetsPanel.setBorder(tb); + + presetsPanel.setLayout(new GridBagLayout()); + + GridBagConstraints gbc = new GridBagConstraints(); + gbc.weightx = 0.0; + gbc.weighty = 0.0; + gbc.anchor = GridBagConstraints.BASELINE_LEADING; + gbc.fill = GridBagConstraints.NONE; + gbc.gridwidth = 1; + gbc.gridheight = 1; + + // "Scheme: " + gbc.gridx = 0; + gbc.gridy = 0; + presetsPanel.add(new JLabel(title + ":"), gbc); for (int i = 0; i < backupfilesPresetEntries.length; i++) { @@ -1846,33 +1900,64 @@ public class GPreferences extends JPanel } }); - presetsPanel.add(backupfilesPresetsCombo); + // dropdown list of preset schemes + gbc.gridx = 1; + presetsPanel.add(backupfilesPresetsCombo, gbc); + + revertButton.setText(MessageManager.getString("label.cancel_changes")); + revertButton.addActionListener(new ActionListener() + { + @Override + public void actionPerformed(ActionEvent e) + { + loadLastSavedBackupsOptions(); + } + + }); + revertButton.setFont(LABEL_FONT); + + // "Cancel changes" button (aligned with combo box above) + gbc.gridx = 1; + gbc.gridy++; + presetsPanel.add(revertButton, gbc); + return presetsPanel; } + private JPanel initBackupsTabFilenameExamplesPanel() + { + String title = MessageManager + .getString("label.summary_of_backups_scheme"); + TitledBorder tb = new TitledBorder(title); + exampleFilesPanel.setBorder(tb); + exampleFilesPanel.setLayout(new GridBagLayout()); + + + backupfilesExampleLabel.setEditable(false); + backupfilesExampleLabel + .setBackground(exampleFilesPanel.getBackground()); + + updateBackupFilesExampleLabel(); + + GridBagConstraints gbc = new GridBagConstraints(); + gbc.weightx = 1.0; + gbc.weighty = 1.0; + gbc.fill = GridBagConstraints.NONE; + gbc.anchor = GridBagConstraints.FIRST_LINE_START; + + exampleFilesPanel.add(backupfilesExampleLabel, gbc); + return exampleFilesPanel; + } + private void backupsTabUpdatePresets() { IntKeyStringValueEntry entry = (IntKeyStringValueEntry) backupfilesPresetsCombo .getSelectedItem(); int key = entry.getKey(); String value = entry.getValue(); - // 0 reserved for "Custom" and 255 reserved or "Previously saved scheme" - boolean special = key == 0 || key == 255; - if (special) - { - if (key == 0) - { - // backupsSetCustomOptions(); - } - else if (key == 255) - { - loadLastSavedBackupsOptions(); - // switch to "Customise" scheme? probably not - // setComboIntStringKey(backupfilesPresetsCombo, 0); - } - } - else + // BACKUPFILESSCHEMECUSTOMISE (==0) reserved for "Custom" + if (key != BACKUPFILESSCHEMECUSTOMISE) { if (backupfilesPresetEntriesValues.containsKey(key)) { @@ -1888,7 +1973,7 @@ public class GPreferences extends JPanel updateBackupFilesExampleLabel(); } - protected int getComboIntStringKey(JComboBox c) + protected int getComboIntStringKey(JComboBox c) { IntKeyStringValueEntry e = (IntKeyStringValueEntry) c.getSelectedItem(); return e != null ? e.getKey() : 0; @@ -1900,8 +1985,6 @@ public class GPreferences extends JPanel for (int i = 0; i < c.getItemCount(); i++) { IntKeyStringValueEntry e = c.getItemAt(i); - int k = e.getKey(); - String v = e.getValue(); if (e.getKey() == key) { c.setSelectedIndex(i); @@ -1989,7 +2072,22 @@ public class GPreferences extends JPanel @Override public void actionPerformed(ActionEvent e) { - updateBackupFilesExampleLabel(); + boolean okay = true; + if (warnAboutSuffixReverseChange()) + { + // Warning popup + okay = confirmSuffixReverseChange(); + } + if (okay) + { + updateBackupFilesExampleLabel(); + } + else + { + boolean savedSuffixReverse = Cache + .getDefault(BackupFiles.REVERSE_ORDER, false); + suffixReverse.setSelected(savedSuffixReverse); + } } }); @@ -2034,6 +2132,20 @@ public class GPreferences extends JPanel return suffixPanel; } + private boolean confirmSuffixReverseChange() + { + boolean ret = false; + String warningMessage = MessageManager + .getString("label.warning_confirm_change_reverse"); + int confirm = JvOptionPane.showConfirmDialog(Desktop.desktop, + warningMessage, + MessageManager.getString("label.change_increment_decrement"), + JvOptionPane.YES_NO_OPTION, JvOptionPane.WARNING_MESSAGE); + + ret = (confirm == JvOptionPane.YES_OPTION); + return ret; + } + private JPanel initBackupsTabKeepFilesPanel() { keepfilesPanel.setBorder( @@ -2057,7 +2169,6 @@ public class GPreferences extends JPanel @Override public void actionPerformed(ActionEvent e) { - boolean selected = backupfilesKeepAll.isSelected(); keepRollMaxOptionsEnabled(); updateBackupFilesExampleLabel(); } @@ -2075,7 +2186,7 @@ public class GPreferences extends JPanel setIntegerSpinner(backupfilesRollMaxSpinner, 1, 999, 4, true, c); backupfilesConfirmDelete.setLabels( - MessageManager.getString("label.confirm_delete"), + MessageManager.getString("label.always_ask"), MessageManager.getString("label.auto_delete")); // update the enabled section keepRollMaxOptionsEnabled(); @@ -2135,42 +2246,10 @@ public class GPreferences extends JPanel return keepfilesPanel; } - private JPanel initBackupsTabFilenameExamplesPanel() - { - String title = MessageManager - .getString("label.summary_of_backups_scheme"); - TitledBorder tb = new TitledBorder(new EmptyBorder(0, 0, 0, 0), title); - // tb.setTitleFont(LABEL_FONT); - exampleFilesPanel.setBorder(tb); - exampleFilesPanel.setLayout(new GridBagLayout()); - - // inordinately difficult to get this titledborder the right size for the - // title - - backupfilesExampleLabel.setEditable(false); - backupfilesExampleLabel.setPreferredSize(new Dimension(280, 85)); - backupfilesExampleLabel.setAlignmentX(LEFT_ALIGNMENT); - backupfilesExampleLabel.setAlignmentY(TOP_ALIGNMENT); - - backupfilesExampleLabel.setFont(LABEL_FONT_ITALIC); - backupfilesExampleLabel - .setBackground(exampleFilesPanel.getBackground()); - - updateBackupFilesExampleLabel(); - exampleFilesPanel.setMinimumSize(new Dimension(280, 85)); - - GridBagConstraints gbc = new GridBagConstraints(); - gbc.anchor = GridBagConstraints.EAST; - - gbc.gridy = 0; - exampleFilesPanel.add(backupfilesExampleLabel, gbc); - return exampleFilesPanel; - } - protected void updateBackupFilesExampleLabel() { int exampleindex = 12; - String base = MessageManager.getString("label.filename"); + String base = MessageManager.getString("label.filename") + ".fa"; if (base == null || base.length() == 0) { base = "file_name.fa"; @@ -2191,32 +2270,16 @@ public class GPreferences extends JPanel return; } - try - { - backupfilesRollMaxSpinner.commitEdit(); - rollMax = (Integer) backupfilesRollMaxSpinner.getValue(); - rollMax = rollMax < 1 ? 1 : rollMax; - } catch (Exception e) - { - System.out.println( - "Failed casting (Integer) backupfilesRollMaxSpinner.getValue()"); - } + rollMax = getSpinnerInt(backupfilesRollMaxSpinner, 4); + rollMax = rollMax < 1 ? 1 : rollMax; if (suffix.indexOf(BackupFiles.NUM_PLACEHOLDER) == -1) { rollMax = 1; } - try - { - suffixDigitsSpinner.commitEdit(); - digits = (Integer) suffixDigitsSpinner.getValue(); - digits = digits < 1 ? 1 : digits; - } catch (Exception e) - { - System.out.println( - "Failed casting (Integer) suffixTemplateSpinner.getValue()"); - } + digits = getSpinnerInt(suffixDigitsSpinner, 3); + digits = digits < 1 ? 1 : digits; int lowersurround = 2; int uppersurround = 0; @@ -2247,7 +2310,7 @@ public class GPreferences extends JPanel { exampleSB.append("\n"); } - exampleSB.append(BackupFilenameFilter.getBackupFilename(index, + exampleSB.append(BackupFilenameParts.getBackupFilename(index, base, suffix, digits)); if (min == max) { @@ -2300,7 +2363,7 @@ public class GPreferences extends JPanel { exampleSB.append("\n"); } - exampleSB.append(BackupFilenameFilter.getBackupFilename(index, + exampleSB.append(BackupFilenameParts.getBackupFilename(index, base, suffix, digits)); if (min == max) { @@ -2709,18 +2772,20 @@ class BackupFilesPresetEntry class BackupFilesPresetsComboBoxRenderer extends DefaultListCellRenderer { + /** + * + */ + private static final long serialVersionUID = 88L; + @Override - public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) { + public Component getListCellRendererComponent(JList list, Object value, + int index, boolean isSelected, boolean cellHasFocus) + { super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus); try { IntKeyStringValueEntry e = (IntKeyStringValueEntry) value; - if (e.getKey() == 255) - { - // "Previously saved scheme" item - this.setFont(this.getFont().deriveFont(Font.ITALIC)); - } - else if (e.getKey() == 0) + if (e.getKey() == GPreferences.BACKUPFILESSCHEMECUSTOMISE) { // "Customise" item this.setFont(this.getFont().deriveFont(Font.BOLD)); @@ -2731,4 +2796,4 @@ class BackupFilesPresetsComboBoxRenderer extends DefaultListCellRenderer return this; } -} \ No newline at end of file +}