X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FPreferences.java;h=c4f32c39f8acd7525386774a9cd73cc82d158595;hb=deb7e7788d802d45cc6b2f8a5a04285308f1e8ee;hp=0e04117f5d5b0a55f65c294e9a1123382a7c9ee8;hpb=9092d9f4c2231645b58968e964c858e010be14e2;p=jalview.git diff --git a/src/jalview/gui/Preferences.java b/src/jalview/gui/Preferences.java index 0e04117..c4f32c3 100755 --- a/src/jalview/gui/Preferences.java +++ b/src/jalview/gui/Preferences.java @@ -27,14 +27,13 @@ import java.awt.Dimension; import java.awt.Font; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; -import java.awt.event.MouseEvent; import java.io.File; import java.util.ArrayList; import java.util.List; +import java.util.concurrent.CompletableFuture; import javax.help.HelpSetException; import javax.swing.JComboBox; -import javax.swing.JFileChooser; import javax.swing.JInternalFrame; import javax.swing.JPanel; import javax.swing.ListSelectionModel; @@ -50,9 +49,12 @@ import javax.swing.table.TableColumn; import javax.swing.table.TableModel; import javax.swing.table.TableRowSorter; +//import edu.stanford.ejalbert.launching.IBrowserLaunching; import ext.edu.ucsf.rbvi.strucviz2.StructureManager; import jalview.analysis.AnnotationSorter.SequenceAnnotationOrder; import jalview.bin.Cache; +import jalview.bin.Console; +import jalview.bin.MemorySetting; import jalview.ext.pymol.PymolManager; import jalview.gui.Help.HelpId; import jalview.gui.StructureViewer.ViewerType; @@ -154,6 +156,9 @@ public class Preferences extends GPreferences public static List groupURLLinks; static { + // don't populate with session properties + Cache.disableSessionProperties(); + // get links selected to be in the menu (SEQUENCE_LINKS) // and links entered by the user but not selected (STORED_LINKS) String inMenuString = Cache.getDefault("SEQUENCE_LINKS", ""); @@ -178,6 +183,9 @@ public class Preferences extends GPreferences */ groupURLLinks = new ArrayList<>(); + + // reenable + Cache.enableSessionProperties(); } JInternalFrame frame; @@ -186,7 +194,7 @@ public class Preferences extends GPreferences private OptionsParam promptEachTimeOpt = new OptionsParam( MessageManager.getString("label.prompt_each_time"), - "Prompt each time"); + LineartOptions.PROMPT_EACH_TIME); private OptionsParam lineArtOpt = new OptionsParam( MessageManager.getString("label.lineart"), "Lineart"); @@ -219,26 +227,38 @@ public class Preferences extends GPreferences public static void openPreferences() { - openPreferences(0, null); + openPreferences(null, null); } - public static void openPreferences(int selectTab, String message) + public static void openPreferences(TabRef selectTab, String message) { Preferences p = getInstance(); - p.selectTab(selectTab); - p.setMessage(message); + if (selectTab != null) + p.selectTab(selectTab, message); p.frame.show(); p.frame.moveToFront(); p.frame.grabFocus(); } + public void selectTab(TabRef selectTab, String message) + { + this.selectTab(selectTab); + if (message != null) + this.setMessage(message); + this.frame.show(); + } + /** * Creates a new Preferences object. */ private Preferences() { super(); + // don't populate with session properties + Cache.disableSessionProperties(); + frame = new JInternalFrame(); + frame.setFrameIcon(null); frame.setContentPane(this); if (!Platform.isJS()) /** @@ -346,8 +366,8 @@ public class Preferences extends GPreferences startupCheckbox .setSelected(Cache.getDefault("SHOW_STARTUP_FILE", true)); startupFileTextfield.setText(Cache.getDefault("STARTUP_FILE", - Cache.getDefault("www.jalview.org", "http://www.jalview.org") - + "/examples/exampleFile_2_3.jar")); + Cache.getDefault("www.jalview.org", "https://www.jalview.org") + + "/examples/exampleFile_2_7.jvp")); /* * Set Colours tab defaults @@ -374,12 +394,10 @@ public class Preferences extends GPreferences /* * Set overview panel defaults */ - gapColour.setBackground( - Cache.getDefaultColour(GAP_COLOUR, - jalview.renderer.OverviewResColourFinder.OVERVIEW_DEFAULT_GAP)); - hiddenColour.setBackground( - Cache.getDefaultColour(HIDDEN_COLOUR, - jalview.renderer.OverviewResColourFinder.OVERVIEW_DEFAULT_HIDDEN)); + gapColour.setBackground(Cache.getDefaultColour(GAP_COLOUR, + OverviewCanvas.OVERVIEW_DEFAULT_GAP)); + hiddenColour.setBackground(Cache.getDefaultColour(HIDDEN_COLOUR, + OverviewCanvas.OVERVIEW_DEFAULT_HIDDEN)); useLegacyGap.setSelected(Cache.getDefault(USE_LEGACY_GAP, false)); gapLabel.setEnabled(!useLegacyGap.isSelected()); gapColour.setEnabled(!useLegacyGap.isSelected()); @@ -389,20 +407,19 @@ public class Preferences extends GPreferences /* * Set Structure tab defaults */ - final boolean structSelected = Cache.getDefault(STRUCT_FROM_PDB, false); + final boolean structSelected = Cache.getDefault(STRUCT_FROM_PDB, true); structFromPdb.setSelected(structSelected); - useRnaView.setSelected(Cache.getDefault(USE_RNAVIEW, false)); - useRnaView.setEnabled(structSelected); - addSecondaryStructure.setSelected(Cache.getDefault(ADD_SS_ANN, false)); + addSecondaryStructure.setSelected(Cache.getDefault(ADD_SS_ANN, true)); addSecondaryStructure.setEnabled(structSelected); - addTempFactor.setSelected(Cache.getDefault(ADD_TEMPFACT_ANN, false)); + addTempFactor.setSelected(Cache.getDefault(ADD_TEMPFACT_ANN, true)); addTempFactor.setEnabled(structSelected); /* * set choice of structure viewer, and path if saved as a preference; * default to Jmol (first choice) if an unexpected value is found */ - String viewerType = Cache.getDefault(STRUCTURE_DISPLAY, ViewerType.JMOL.name()); + String viewerType = Cache.getDefault(STRUCTURE_DISPLAY, + ViewerType.JMOL.name()); structViewer.setSelectedItem(viewerType); String viewerPath = ""; ViewerType type = null; @@ -425,7 +442,7 @@ public class Preferences extends GPreferences } } catch (IllegalArgumentException e) { - Cache.log.error("Unknown structure viewer type: " + viewerType + Console.error("Unknown structure viewer type: " + viewerType + ", defaulting to Jmol"); type = ViewerType.JMOL; } @@ -438,10 +455,28 @@ public class Preferences extends GPreferences { if (validateViewerPath()) { - Cache.setProperty(structViewer.getSelectedItem() - .equals(ViewerType.CHIMERAX.name()) - ? CHIMERAX_PATH - : CHIMERA_PATH, structureViewerPath.getText()); + String path = structureViewerPath.getText(); + try + { + ViewerType type = ViewerType.valueOf(viewerType); + switch (type) + { + case JMOL: + break; + case CHIMERA: + Cache.setProperty(CHIMERA_PATH, path); + break; + case CHIMERAX: + Cache.setProperty(CHIMERAX_PATH, path); + break; + case PYMOL: + Cache.setProperty(PYMOL_PATH, path); + break; + } + } catch (IllegalArgumentException x) + { + Console.error("Failed to set path - unknown viewer type", x); + } } } }); @@ -596,7 +631,7 @@ public class Preferences extends GPreferences proxyType.setSelected(customProxy.getModel(), true); break; default: - Cache.log.warn( + Console.warn( "Incorrect PROXY_TYPE - should be 'none' (clear proxy properties), 'false' (system settings), 'true' (custom settings): " + proxyTypeString); } @@ -613,8 +648,6 @@ public class Preferences extends GPreferences setCustomProxyEnabled(); applyProxyButtonEnabled(false); - defaultBrowser.setText(Cache.getDefault("DEFAULT_BROWSER", "")); - usagestats.setSelected(Cache.getDefault("USAGESTATS", false)); // note antisense here: default is true questionnaire @@ -655,12 +688,18 @@ public class Preferences extends GPreferences annotations_actionPerformed(null); // update the display of the annotation // settings - - + /* * Set Backups tab defaults */ loadLastSavedBackupsOptions(); + + /* + * Set Startup tab defaults + */ + + // re-enable + Cache.enableSessionProperties(); } /** @@ -673,10 +712,12 @@ public class Preferences extends GPreferences protected void setupOutputCombo(JComboBox comboBox, String propertyKey) { + Cache.disableSessionProperties(); + comboBox.addItem(promptEachTimeOpt); comboBox.addItem(lineArtOpt); comboBox.addItem(textOpt); - + /* * JalviewJS doesn't support Lineart so force it to Text */ @@ -694,6 +735,8 @@ public class Preferences extends GPreferences { comboBox.setSelectedItem(promptEachTimeOpt); } + + Cache.enableSessionProperties(); } /** @@ -705,6 +748,8 @@ public class Preferences extends GPreferences @Override public void ok_actionPerformed(ActionEvent e) { + Cache.disableSessionProperties(); + if (!validateSettings()) { return; @@ -718,6 +763,7 @@ public class Preferences extends GPreferences /* * Save Visual settings */ + Cache.applicationProperties.setProperty("SHOW_JVSUFFIX", Boolean.toString(seqLimit.isSelected())); Cache.applicationProperties.setProperty("RIGHT_ALIGN_IDS", @@ -821,14 +867,11 @@ public class Preferences extends GPreferences Boolean.toString(addTempFactor.isSelected())); Cache.applicationProperties.setProperty(ADD_SS_ANN, Boolean.toString(addSecondaryStructure.isSelected())); - Cache.applicationProperties.setProperty(USE_RNAVIEW, - Boolean.toString(useRnaView.isSelected())); Cache.applicationProperties.setProperty(STRUCT_FROM_PDB, Boolean.toString(structFromPdb.isSelected())); String viewer = structViewer.getSelectedItem().toString(); String viewerPath = structureViewerPath.getText(); - Cache.applicationProperties.setProperty(STRUCTURE_DISPLAY, - viewer); + Cache.applicationProperties.setProperty(STRUCTURE_DISPLAY, viewer); if (viewer.equals(ViewerType.CHIMERA.name())) { Cache.setOrRemove(CHIMERA_PATH, viewerPath); @@ -860,10 +903,6 @@ public class Preferences extends GPreferences */ // Proxy settings set first (to catch web services) - Cache.setOrRemove("DEFAULT_BROWSER", defaultBrowser.getText()); - - jalview.util.BrowserLauncher.resetBrowser(); - // save user-defined and selected links String menuLinks = sequenceUrlLinks.writeUrlsAsString(true); if (menuLinks.isEmpty()) @@ -959,16 +998,16 @@ public class Preferences extends GPreferences Cache.applicationProperties.setProperty(BackupFiles.ENABLED, Boolean.toString(enableBackupFiles.isSelected())); int preset = getComboIntStringKey(backupfilesPresetsCombo); - Cache.applicationProperties.setProperty(BackupFiles.NS + "_PRESET", Integer.toString(preset)); + Cache.applicationProperties.setProperty(BackupFiles.NS + "_PRESET", + Integer.toString(preset)); if (preset == BackupFilesPresetEntry.BACKUPFILESSCHEMECUSTOM) { BackupFilesPresetEntry customBFPE = getBackupfilesCurrentEntry(); BackupFilesPresetEntry.backupfilesPresetEntriesValues.put( BackupFilesPresetEntry.BACKUPFILESSCHEMECUSTOM, customBFPE); - Cache.applicationProperties - .setProperty(BackupFilesPresetEntry.CUSTOMCONFIG, - customBFPE.toString()); + Cache.applicationProperties.setProperty( + BackupFilesPresetEntry.CUSTOMCONFIG, customBFPE.toString()); } BackupFilesPresetEntry savedBFPE = BackupFilesPresetEntry.backupfilesPresetEntriesValues @@ -976,6 +1015,21 @@ public class Preferences extends GPreferences Cache.applicationProperties.setProperty( BackupFilesPresetEntry.SAVEDCONFIG, savedBFPE.toString()); + /* + * Save Memory Settings + */ + Cache.applicationProperties.setProperty( + MemorySetting.CUSTOMISED_SETTINGS, + Boolean.toString(customiseMemorySetting.isSelected())); + Cache.applicationProperties.setProperty(MemorySetting.MEMORY_JVMMEMPC, + Integer.toString(jvmMemoryPercentSlider.getValue())); + Cache.applicationProperties.setProperty(MemorySetting.MEMORY_JVMMEMMAX, + jvmMemoryMaxTextField.getText()); + + /* + * save and close Preferences + */ + Cache.saveProperties(); Desktop.instance.doConfigureStructurePrefs(); try @@ -984,10 +1038,14 @@ public class Preferences extends GPreferences } catch (Exception ex) { } + + Cache.enableSessionProperties(); } public void saveProxySettings() { + Cache.disableSessionProperties(); + String newProxyType = customProxy.isSelected() ? Cache.PROXYTYPE_CUSTOM : noProxy.isSelected() ? Cache.PROXYTYPE_NONE : Cache.PROXYTYPE_SYSTEM; @@ -1008,6 +1066,8 @@ public class Preferences extends GPreferences wsPrefs.update++; } previousProxyType = newProxyType; + + Cache.enableSessionProperties(); } /** @@ -1039,6 +1099,8 @@ public class Preferences extends GPreferences @Override public void startupFileTextfield_mouseClicked() { + Cache.disableSessionProperties(); + // TODO: JAL-3048 not needed for Jalview-JS String fileFormat = Cache.getProperty("DEFAULT_FILE_FORMAT"); JalviewFileChooser chooser = JalviewFileChooser @@ -1060,6 +1122,8 @@ public class Preferences extends GPreferences startupFileTextfield .setText(chooser.getSelectedFile().getAbsolutePath()); } + + Cache.enableSessionProperties(); } /** @@ -1149,7 +1213,7 @@ public class Preferences extends GPreferences if (index == -1) { // button no longer enabled if row is not selected - Cache.log.debug("Edit with no row selected in linkUrlTable"); + Console.debug("Edit with no row selected in linkUrlTable"); return; } @@ -1201,7 +1265,7 @@ public class Preferences extends GPreferences if (index == -1) { // button no longer enabled if row is not selected - Cache.log.debug("Delete with no row selected in linkUrlTable"); + Console.debug("Delete with no row selected in linkUrlTable"); return; } else @@ -1213,30 +1277,6 @@ public class Preferences extends GPreferences ((UrlLinkTableModel) linkUrlTable.getModel()).removeRow(modelIndex); } - @Override - public void defaultBrowser_mouseClicked(MouseEvent e) - { - // TODO: JAL-3048 not needed for j2s - if (!Platform.isJS()) // BH 2019 - /** - * Java only - * - * @j2sIgnore - */ - { - JFileChooser chooser = new JFileChooser("."); - chooser.setDialogTitle( - MessageManager.getString("label.select_default_browser")); - - int value = chooser.showOpenDialog(this); - - if (value == JFileChooser.APPROVE_OPTION) - { - defaultBrowser.setText(chooser.getSelectedFile().getAbsolutePath()); - } - } - } - /* * (non-Javadoc) * @@ -1278,8 +1318,7 @@ public class Preferences extends GPreferences if (!useLegacyGap.isSelected()) { JalviewColourChooser.showColourChooser(this, - MessageManager.getString("label.select_gap_colour"), - gap); + MessageManager.getString("label.select_gap_colour"), gap); } } @@ -1287,8 +1326,7 @@ public class Preferences extends GPreferences public void hiddenColour_actionPerformed(JPanel hidden) { JalviewColourChooser.showColourChooser(this, - MessageManager.getString("label.select_hidden_colour"), - hidden); + MessageManager.getString("label.select_hidden_colour"), hidden); } @Override @@ -1297,13 +1335,11 @@ public class Preferences extends GPreferences boolean enabled = useLegacyGap.isSelected(); if (enabled) { - gapColour.setBackground( - jalview.renderer.OverviewResColourFinder.OVERVIEW_DEFAULT_LEGACY_GAP); + gapColour.setBackground(OverviewCanvas.OVERVIEW_DEFAULT_LEGACY_GAP); } else { - gapColour.setBackground( - jalview.renderer.OverviewResColourFinder.OVERVIEW_DEFAULT_GAP); + gapColour.setBackground(OverviewCanvas.OVERVIEW_DEFAULT_GAP); } gapColour.setEnabled(!enabled); gapLabel.setEnabled(!enabled); @@ -1315,8 +1351,7 @@ public class Preferences extends GPreferences useLegacyGap.setSelected(false); useLegacyGaps_actionPerformed(null); showHiddenAtStart.setSelected(false); - hiddenColour.setBackground( - jalview.renderer.OverviewResColourFinder.OVERVIEW_DEFAULT_HIDDEN); + hiddenColour.setBackground(OverviewCanvas.OVERVIEW_DEFAULT_HIDDEN); } @Override @@ -1398,6 +1433,7 @@ public class Preferences extends GPreferences */ String viewerPath = ""; List paths = null; + Cache.disableSessionProperties(); try { ViewerType viewerType = ViewerType.valueOf(selectedItem); @@ -1423,6 +1459,7 @@ public class Preferences extends GPreferences { // only valid entries should be in the drop-down } + Cache.enableSessionProperties(); structureViewerPath.setText(viewerPath); paths.add(0, structureViewerPath.getText()); @@ -1443,8 +1480,10 @@ public class Preferences extends GPreferences MessageManager.getString("label.viewer_missing")), "", JvOptionPane.YES_NO_OPTION, JvOptionPane.WARNING_MESSAGE, null, options, options[0]); + if (showHelp == JvOptionPane.NO_OPTION) { + this.selectTab(Preferences.TabRef.STRUCTURE_TAB, null); try { Help.showHelpWindow(HelpId.StructureViewer); @@ -1453,6 +1492,24 @@ public class Preferences extends GPreferences e.printStackTrace(); } } + else if (showHelp == JvOptionPane.OK_OPTION) + { + this.selectTab(Preferences.TabRef.STRUCTURE_TAB, null); + CompletableFuture cf = CompletableFuture.runAsync(() -> { + try + { + for (int i = 0; i < 3; i++) + { + structureViewerPath.setBackground(Color.PINK); + Thread.sleep(500); + structureViewerPath.setBackground(Color.WHITE); + Thread.sleep(500); + } + } catch (InterruptedException e) + { + } + }); + } } }