*/
package jalview.gui;
-import jalview.analysis.AnnotationSorter.SequenceAnnotationOrder;
-import jalview.bin.Cache;
-import jalview.gui.Help.HelpId;
-import jalview.gui.StructureViewer.ViewerType;
-import jalview.io.FileFormatI;
-import jalview.io.JalviewFileChooser;
-import jalview.io.JalviewFileView;
-import jalview.jbgui.GPreferences;
-import jalview.jbgui.GSequenceLink;
-import jalview.schemes.ColourSchemeI;
-import jalview.schemes.ColourSchemes;
-import jalview.schemes.ResidueColourScheme;
-import jalview.urls.UrlLinkTableModel;
-import jalview.urls.api.UrlProviderFactoryI;
-import jalview.urls.api.UrlProviderI;
-import jalview.urls.desktop.DesktopUrlProviderFactory;
-import jalview.util.MessageManager;
-import jalview.util.Platform;
-import jalview.util.UrlConstants;
-import jalview.ws.sifts.SiftsSettings;
-
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
+import java.awt.event.FocusAdapter;
+import java.awt.event.FocusEvent;
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.JColorChooser;
+import javax.swing.JComboBox;
import javax.swing.JFileChooser;
import javax.swing.JInternalFrame;
import javax.swing.JPanel;
+import javax.swing.JTabbedPane;
+import javax.swing.JTextField;
import javax.swing.ListSelectionModel;
import javax.swing.RowFilter;
import javax.swing.RowSorter;
import javax.swing.table.TableModel;
import javax.swing.table.TableRowSorter;
+import jalview.hmmer.HmmerCommand;
+import jalview.util.FileUtils;
import ext.edu.ucsf.rbvi.strucviz2.StructureManager;
+import jalview.analysis.AnnotationSorter.SequenceAnnotationOrder;
+import jalview.bin.ApplicationSingletonProvider.ApplicationSingletonI;
+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;
+import jalview.io.BackupFiles;
+import jalview.io.BackupFilesPresetEntry;
+import jalview.io.FileFormatI;
+import jalview.io.JalviewFileChooser;
+import jalview.io.JalviewFileView;
+import jalview.jbgui.GPreferences;
+import jalview.jbgui.GSequenceLink;
+import jalview.schemes.ColourSchemeI;
+import jalview.schemes.ColourSchemes;
+import jalview.schemes.ResidueColourScheme;
+import jalview.urls.UrlLinkTableModel;
+import jalview.urls.api.UrlProviderFactoryI;
+import jalview.urls.api.UrlProviderI;
+import jalview.urls.desktop.DesktopUrlProviderFactory;
+import jalview.util.MessageManager;
+import jalview.util.Platform;
+import jalview.util.UrlConstants;
+import jalview.ws.sifts.SiftsSettings;
+import jalview.ws2.client.api.WebServiceDiscovererI;
+import jalview.ws2.client.ebi.JobDispatcherWSDiscoverer;
+import jalview.ws2.client.jpred4.JPred4WSDiscoverer;
+import jalview.ws2.client.slivka.SlivkaWSDiscoverer;
/**
* DOCUMENT ME!
* @author $author$
* @version $Revision$
*/
-public class Preferences extends GPreferences
+public class Preferences extends GPreferences implements ApplicationSingletonI
{
- public static final String ENABLE_SPLIT_FRAME = "ENABLE_SPLIT_FRAME";
+ // suggested list delimiter character
+ public static final String COMMA = ",";
- public static final String SCALE_PROTEIN_TO_CDNA = "SCALE_PROTEIN_TO_CDNA";
+ public static final String HMMSEARCH_SEQCOUNT = "HMMSEARCH_SEQCOUNT";
+
+ public static final String HMMINFO_GLOBAL_BACKGROUND = "HMMINFO_GLOBAL_BACKGROUND";
+
+ public static final String HMMALIGN_TRIM_TERMINI = "HMMALIGN_TRIM_TERMINI";
+
+ public static final String ADD_SS_ANN = "ADD_SS_ANN";
+
+ public static final String ADD_TEMPFACT_ANN = "ADD_TEMPFACT_ANN";
+
+ public static final String ALLOW_UNPUBLISHED_PDB_QUERYING = "ALLOW_UNPUBLISHED_PDB_QUERYING";
+
+ public static final String ANNOTATIONCOLOUR_MAX = "ANNOTATIONCOLOUR_MAX";
+
+ public static final String ANNOTATIONCOLOUR_MIN = "ANNOTATIONCOLOUR_MIN";
+
+ public static final String ANTI_ALIAS = "ANTI_ALIAS";
+
+ public static final String AUTO_CALC_CONSENSUS = "AUTO_CALC_CONSENSUS";
+
+ public static final String AUTOASSOCIATE_PDBANDSEQS = "AUTOASSOCIATE_PDBANDSEQS";
+
+ public static final String BLOSUM62_PCA_FOR_NUCLEOTIDE = "BLOSUM62_PCA_FOR_NUCLEOTIDE";
+
+ public static final String CENTRE_COLUMN_LABELS = "CENTRE_COLUMN_LABELS";
+
+ public static final String CHIMERA_PATH = "CHIMERA_PATH";
+
+ public static final String CHIMERAX_PATH = "CHIMERAX_PATH";
+
+ public static final String DBREFFETCH_USEPICR = "DBREFFETCH_USEPICR";
public static final String DEFAULT_COLOUR = "DEFAULT_COLOUR";
+ public static final String DEFAULT_COLOUR_NUC = "DEFAULT_COLOUR_NUC";
public static final String DEFAULT_COLOUR_PROT = "DEFAULT_COLOUR_PROT";
- public static final String DEFAULT_COLOUR_NUC = "DEFAULT_COLOUR_NUC";
+ public static final String ENABLE_SPLIT_FRAME = "ENABLE_SPLIT_FRAME";
- public static final String ADD_TEMPFACT_ANN = "ADD_TEMPFACT_ANN";
+ public static final String FIGURE_AUTOIDWIDTH = "FIGURE_AUTOIDWIDTH";
- public static final String ADD_SS_ANN = "ADD_SS_ANN";
+ public static final String FIGURE_FIXEDIDWIDTH = "FIGURE_FIXEDIDWIDTH";
- public static final String USE_RNAVIEW = "USE_RNAVIEW";
+ public static final String FOLLOW_SELECTIONS = "FOLLOW_SELECTIONS";
- public static final String STRUCT_FROM_PDB = "STRUCT_FROM_PDB";
+ public static final String FONT_NAME = "FONT_NAME";
- public static final String STRUCTURE_DISPLAY = "STRUCTURE_DISPLAY";
+ public static final String FONT_SIZE = "FONT_SIZE";
- public static final String CHIMERA_PATH = "CHIMERA_PATH";
+ public static final String FONT_STYLE = "FONT_STYLE";
+
+ public static final String HMMER_PATH = "HMMER_PATH";
- public static final String SORT_ANNOTATIONS = "SORT_ANNOTATIONS";
+ public static final String CYGWIN_PATH = "CYGWIN_PATH";
+
+ public static final String HMMSEARCH_DBS = "HMMSEARCH_DBS";
+
+ public static final String GAP_COLOUR = "GAP_COLOUR";
+
+ public static final String GAP_SYMBOL = "GAP_SYMBOL";
+
+ public static final String HIDDEN_COLOUR = "HIDDEN_COLOUR";
+
+ public static final String HIDE_INTRONS = "HIDE_INTRONS";
+
+ public static final String ID_ITALICS = "ID_ITALICS";
+
+ public static final String ID_ORG_HOSTURL = "ID_ORG_HOSTURL";
+
+ public static final String MAP_WITH_SIFTS = "MAP_WITH_SIFTS";
+
+ public static final String NOQUESTIONNAIRES = "NOQUESTIONNAIRES";
+
+ public static final String NORMALISE_CONSENSUS_LOGO = "NORMALISE_CONSENSUS_LOGO";
+
+ public static final String NORMALISE_LOGO = "NORMALISE_LOGO";
+
+ public static final String PAD_GAPS = "PAD_GAPS";
+
+ public static final String PDB_DOWNLOAD_FORMAT = "PDB_DOWNLOAD_FORMAT";
+ public static final String PYMOL_PATH = "PYMOL_PATH";
+
+ public static final String QUESTIONNAIRE = "QUESTIONNAIRE";
+
+ public static final String RELAXEDSEQIDMATCHING = "RELAXEDSEQIDMATCHING";
+
+ public static final String RIGHT_ALIGN_IDS = "RIGHT_ALIGN_IDS";
+
+ public static final String SCALE_PROTEIN_TO_CDNA = "SCALE_PROTEIN_TO_CDNA";
+
+ public static final String SHOW_ANNOTATIONS = "SHOW_ANNOTATIONS";
public static final String SHOW_AUTOCALC_ABOVE = "SHOW_AUTOCALC_ABOVE";
+ public static final String SHOW_CONSENSUS = "SHOW_CONSENSUS";
+
+ public static final String SHOW_CONSENSUS_HISTOGRAM = "SHOW_CONSENSUS_HISTOGRAM";
+
+ public static final String SHOW_CONSENSUS_LOGO = "SHOW_CONSENSUS_LOGO";
+
+ public static final String SHOW_CONSERVATION = "SHOW_CONSERVATION";
+
+ public static final String SHOW_DBREFS_TOOLTIP = "SHOW_DBREFS_TOOLTIP";
+
+ public static final String SHOW_GROUP_CONSENSUS = "SHOW_GROUP_CONSENSUS";
+
+ public static final String SHOW_GROUP_CONSERVATION = "SHOW_GROUP_CONSERVATION";
+
+ public static final String SHOW_JVSUFFIX = "SHOW_JVSUFFIX";
+
+ public static final String SHOW_NPFEATS_TOOLTIP = "SHOW_NPFEATS_TOOLTIP";
public static final String SHOW_OCCUPANCY = "SHOW_OCCUPANCY";
public static final String SHOW_OV_HIDDEN_AT_START = "SHOW_OV_HIDDEN_AT_START";
+ public static final String SHOW_OVERVIEW = "SHOW_OVERVIEW";
+
+ public static final String SHOW_QUALITY = "SHOW_QUALITY";
+
+ public static final String SHOW_UNCONSERVED = "SHOW_UNCONSERVED";
+
+ public static final String SORT_ALIGNMENT = "SORT_ALIGNMENT";
+
+ public static final String SORT_ANNOTATIONS = "SORT_ANNOTATIONS";
+
+ public static final String SORT_BY_TREE = "SORT_BY_TREE";
+
+ public static final String STRUCT_FROM_PDB = "STRUCT_FROM_PDB";
+
+ public static final String STRUCTURE_DISPLAY = "STRUCTURE_DISPLAY";
+
+ public static final String STRUCTURE_DIMENSIONS = "STRUCTURE_DIMENSIONS";
+
+ public static final String UNIPROT_DOMAIN = "UNIPROT_DOMAIN";
+
+ public static final String USE_FULL_SO = "USE_FULL_SO";
public static final String USE_LEGACY_GAP = "USE_LEGACY_GAP";
- public static final String GAP_COLOUR = "GAP_COLOUR";
+ public static final String USE_RNAVIEW = "USE_RNAVIEW";
- public static final String HIDDEN_COLOUR = "HIDDEN_COLOUR";
+ public static final String USER_DEFINED_COLOURS = "USER_DEFINED_COLOURS";
+
+ public static final String WRAP_ALIGNMENT = "WRAP_ALIGNMENT";
private static final int MIN_FONT_SIZE = 1;
private static final int MAX_FONT_SIZE = 30;
+ private String previousProxyType;
+
+ private static Preferences INSTANCE = null; // add "final"
+
/**
* Holds name and link separated with | character. Sequence ID must be
* $SEQUENCE_ID$ or $SEQUENCE_ID=/.possible | chars ./=$
/**
* Holds name and link separated with | character. Sequence IDS and Sequences
- * must be $SEQUENCEIDS$ or $SEQUENCEIDS=/.possible | chars ./=$ and
- * $SEQUENCES$ or $SEQUENCES=/.possible | chars ./=$ and separation character
- * for first and second token specified after a pipe character at end |,|.
- * (TODO: proper escape for using | to separate ids or sequences
+ * must be $SEQUENCEIDS$ or $SEQUENCEIDS=/.possible | chars ./=$ and $SEQUENCES$
+ * or $SEQUENCES=/.possible | chars ./=$ and separation character for first and
+ * second token specified after a pipe character at end |,|. (TODO: proper
+ * escape for using | to separate ids or sequences
*/
public static List<String> groupURLLinks;
JInternalFrame frame;
- DasSourceBrowser dasSource;
-
private WsPreferences wsPrefs;
private OptionsParam promptEachTimeOpt = new OptionsParam(
private OptionsParam textOpt = new OptionsParam(
MessageManager.getString("action.text"), "Text");
+ // get singleton Preferences instance
+ public static Preferences getInstance()
+ {
+ if (INSTANCE == null || INSTANCE.frame == null
+ || INSTANCE.frame.isClosed())
+ {
+ INSTANCE = new Preferences();
+ }
+ return INSTANCE;
+
+ /*
+ * Replace code with the following for Jalvew-JS
+ Preferences INSTANCE = ApplicationSingletonProvider.getInstance(Preferences.class);
+ if (INSTANCE == null || INSTANCE.frame == null
+ || INSTANCE.frame.isClosed())
+ {
+ ApplicationSingletonProvider.remove(Preferences.class);
+ INSTANCE = ApplicationSingletonProvider.getInstance(Preferences.class);
+ }
+ return INSTANCE;
+ */
+ }
+
+ public static void openPreferences()
+ {
+ openPreferences(null, null);
+ }
+
+ public static void openPreferences(TabRef selectTab, String message)
+ {
+ Preferences p = getInstance();
+ 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.
*/
- public Preferences()
+ private Preferences()
{
super();
frame = new JInternalFrame();
frame.setContentPane(this);
- dasSource = new DasSourceBrowser();
- dasTab.add(dasSource, BorderLayout.CENTER);
- wsPrefs = new WsPreferences();
- wsTab.add(wsPrefs, BorderLayout.CENTER);
+ if (!Platform.isJS())
+ /**
+ * Java only
+ *
+ * @j2sIgnore
+ */
+ {
+ wsPrefs = new WsPreferences();
+ wsTab.add(wsPrefs, BorderLayout.CENTER);
+ }
+
+ if (Cache.getDefault("SHOW_SLIVKA_SERVICES", true))
+ addWebServiceTab(tabbedPane, SlivkaWSDiscoverer.getInstance());
+ if (Cache.getDefault("SHOW_EBI_SERVICES", true))
+ addWebServiceTab(tabbedPane, JobDispatcherWSDiscoverer.getInstance());
+ if (Cache.getDefault("SHOW_JPRED4_SERVICES", true))
+ addWebServiceTab(tabbedPane, JPred4WSDiscoverer.getInstance());
+
int width = 500, height = 450;
- new jalview.util.Platform();
- if (Platform.isAMac())
+ if (Platform.isAMacAndNotJS())
{
width = 570;
height = 480;
frame.setMinimumSize(new Dimension(width, height));
/*
+ * Set HMMER tab defaults
+ */
+ hmmrTrimTermini.setSelected(Cache.getDefault(HMMALIGN_TRIM_TERMINI, false));
+ if (Cache.getDefault(HMMINFO_GLOBAL_BACKGROUND, false))
+ {
+ hmmerBackgroundUniprot.setSelected(true);
+ }
+ else
+ {
+ hmmerBackgroundAlignment.setSelected(true);
+ }
+ hmmerSequenceCount
+ .setText(Cache.getProperty(HMMSEARCH_SEQCOUNT));
+ hmmerPath.setText(Cache.getProperty(HMMER_PATH));
+ hmmerPath.addActionListener(new ActionListener()
+ {
+ @Override
+ public void actionPerformed(ActionEvent e)
+ {
+ validateHmmerPath();
+ }
+ });
+ hmmerPath.addFocusListener(new FocusAdapter()
+ {
+ @Override
+ public void focusLost(FocusEvent e)
+ {
+ validateHmmerPath();
+ }
+ });
+ if (cygwinPath != null)
+ {
+ String path = Cache.getProperty(CYGWIN_PATH);
+ if (path == null)
+ {
+ path = FileUtils.getPathTo("bash");
+ }
+ cygwinPath.setText(path);
+ cygwinPath.addActionListener(new ActionListener()
+ {
+ @Override
+ public void actionPerformed(ActionEvent e)
+ {
+ validateCygwinPath();
+ }
+ });
+ cygwinPath.addFocusListener(new FocusAdapter()
+ {
+ @Override
+ public void focusLost(FocusEvent e)
+ {
+ validateCygwinPath();
+ }
+ });
+ }
+
+ /*
* Set Visual tab defaults
*/
seqLimit.setSelected(Cache.getDefault("SHOW_JVSUFFIX", true));
Cache.getDefault("SHOW_CONSENSUS_HISTOGRAM", true));
showConsensLogo
.setSelected(Cache.getDefault("SHOW_CONSENSUS_LOGO", false));
+ showInformationHistogram.setSelected(
+ Cache.getDefault("SHOW_INFORMATION_HISTOGRAM", true));
+ showHMMLogo.setSelected(Cache.getDefault("SHOW_HMM_LOGO", false));
showNpTooltip
.setSelected(Cache.getDefault("SHOW_NPFEATS_TOOLTIP", true));
showDbRefTooltip
fontStyleCB.setSelectedItem(
Cache.getDefault("FONT_STYLE", Font.PLAIN + ""));
- smoothFont.setSelected(Cache.getDefault("ANTI_ALIAS", false));
+ smoothFont.setSelected(Cache.getDefault("ANTI_ALIAS", true));
scaleProteinToCdna
.setSelected(Cache.getDefault(SCALE_PROTEIN_TO_CDNA, false));
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
/*
* 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,
+ jalview.renderer.OverviewResColourFinder.OVERVIEW_DEFAULT_GAP));
+ hiddenColour.setBackground(Cache.getDefaultColour(HIDDEN_COLOUR,
+ jalview.renderer.OverviewResColourFinder.OVERVIEW_DEFAULT_HIDDEN));
useLegacyGap.setSelected(Cache.getDefault(USE_LEGACY_GAP, false));
gapLabel.setEnabled(!useLegacyGap.isSelected());
gapColour.setEnabled(!useLegacyGap.isSelected());
showHiddenAtStart
- .setSelected(Cache.getDefault(SHOW_OV_HIDDEN_AT_START, true));
+ .setSelected(Cache.getDefault(SHOW_OV_HIDDEN_AT_START, false));
/*
- * Set Structure tab defaults.
+ * 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);
- structViewer.setSelectedItem(
- Cache.getDefault(STRUCTURE_DISPLAY, ViewerType.JMOL.name()));
- chimeraPath.setText(Cache.getDefault(CHIMERA_PATH, ""));
- chimeraPath.addActionListener(new ActionListener()
+
+ /*
+ * 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 = ViewerType.JMOL.name();
+ if (!Platform.isJS())
+ {
+ Cache.getDefault(STRUCTURE_DISPLAY,
+ ViewerType.JMOL.name());
+ }
+ // TODO - disable external viewers for JS
+ structViewer.setSelectedItem(viewerType);
+ String viewerPath = "";
+ ViewerType type = null;
+ try
+ {
+ type = ViewerType.valueOf(viewerType);
+ switch (type)
+ {
+ case JMOL:
+ break;
+ case CHIMERA:
+ viewerPath = Cache.getDefault(CHIMERA_PATH, "");
+ break;
+ case CHIMERAX:
+ viewerPath = Cache.getDefault(CHIMERAX_PATH, "");
+ break;
+ case PYMOL:
+ viewerPath = Cache.getDefault(PYMOL_PATH, "");
+ break;
+ }
+ } catch (IllegalArgumentException e)
+ {
+ Console.error("Unknown structure viewer type: " + viewerType
+ + ", defaulting to Jmol");
+ type = ViewerType.JMOL;
+ }
+ structureViewerPath.setText(viewerPath);
+
+ structureViewerPath.addActionListener(new ActionListener()
{
@Override
public void actionPerformed(ActionEvent e)
{
- validateChimeraPath();
+ if (validateViewerPath())
+ {
+ 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);
+ }
+ }
}
});
new RowSorter.SortKey(m.getNameColumn(), SortOrder.ASCENDING));
sorter.setSortKeys(sortKeys);
- sorter.sort();
+ // BH 2018 setSortKeys will do the sort
+ // sorter.sort();
// set up filtering
ActionListener onReset;
}
}
- useProxy.setSelected(Cache.getDefault("USE_PROXY", false));
- useProxy_actionPerformed(); // make sure useProxy is correctly initialised
- proxyServerTB.setText(Cache.getDefault("PROXY_SERVER", ""));
- proxyPortTB.setText(Cache.getDefault("PROXY_PORT", ""));
+ String proxyTypeString = Cache.getDefault("USE_PROXY", "false");
+ previousProxyType = proxyTypeString;
+ switch (proxyTypeString)
+ {
+ case Cache.PROXYTYPE_NONE:
+ proxyType.setSelected(noProxy.getModel(), true);
+ break;
+ case Cache.PROXYTYPE_SYSTEM:
+ proxyType.setSelected(systemProxy.getModel(), true);
+ break;
+ case Cache.PROXYTYPE_CUSTOM:
+ proxyType.setSelected(customProxy.getModel(), true);
+ break;
+ default:
+ Console.warn(
+ "Incorrect PROXY_TYPE - should be 'none' (clear proxy properties), 'false' (system settings), 'true' (custom settings): "
+ + proxyTypeString);
+ }
+ proxyServerHttpTB.setText(Cache.getDefault("PROXY_SERVER", ""));
+ proxyPortHttpTB.setText(Cache.getDefault("PROXY_PORT", ""));
+ proxyServerHttpsTB.setText(Cache.getDefault("PROXY_SERVER_HTTPS", ""));
+ proxyPortHttpsTB.setText(Cache.getDefault("PROXY_PORT_HTTPS", ""));
+ proxyAuth.setSelected(Cache.getDefault("PROXY_AUTH", false));
+ proxyAuthUsernameTB
+ .setText(Cache.getDefault("PROXY_AUTH_USERNAME", ""));
+ // we are not storing or retrieving proxy password from .jalview_properties
+ proxyAuthPasswordPB.setText(Cache.proxyAuthPassword == null ? ""
+ : new String(Cache.proxyAuthPassword));
+ setCustomProxyEnabled();
+ applyProxyButtonEnabled(false);
defaultBrowser.setText(Cache.getDefault("DEFAULT_BROWSER", ""));
/*
* Set Output tab defaults
*/
- epsRendering.addItem(promptEachTimeOpt);
- epsRendering.addItem(lineArtOpt);
- epsRendering.addItem(textOpt);
- String defaultEPS = Cache.getDefault("EPS_RENDERING",
- "Prompt each time");
- if (defaultEPS.equalsIgnoreCase("Text"))
- {
- epsRendering.setSelectedItem(textOpt);
- }
- else if (defaultEPS.equalsIgnoreCase("Lineart"))
- {
- epsRendering.setSelectedItem(lineArtOpt);
- }
- else
- {
- epsRendering.setSelectedItem(promptEachTimeOpt);
- }
+ setupOutputCombo(epsRendering, "EPS_RENDERING");
+ setupOutputCombo(htmlRendering, "HTML_RENDERING");
+ setupOutputCombo(svgRendering, "SVG_RENDERING");
autoIdWidth.setSelected(Cache.getDefault("FIGURE_AUTOIDWIDTH", false));
userIdWidth.setEnabled(!autoIdWidth.isSelected());
userIdWidthlabel.setEnabled(!autoIdWidth.isSelected());
- Integer wi = Cache.getIntegerProperty("FIGURE_USERIDWIDTH");
+ Integer wi = Cache.getIntegerProperty("FIGURE_FIXEDIDWIDTH");
userIdWidth.setText(wi == null ? "" : wi.toString());
// TODO: refactor to use common enum via FormatAdapter and allow extension
// for new flat file formats
annotations_actionPerformed(null); // update the display of the annotation
// settings
+
+
+
+ /*
+ * Set Backups tab defaults
+ */
+ loadLastSavedBackupsOptions();
+ }
+
+
+ private void addWebServiceTab(JTabbedPane tabs, WebServiceDiscovererI discoverer)
+ {
+ String name = discoverer.getName();
+ JPanel tab = new JPanel();
+ tab.setLayout(new BorderLayout());
+ tab.add(new WS2PreferencesPanel(discoverer), BorderLayout.CENTER);
+ tabs.add(tab, name + " services");
+ }
+
+ /**
+ * A helper method that sets the items and initial selection in a character
+ * rendering option list (Prompt each time/Lineart/Text)
+ *
+ * @param comboBox
+ * @param propertyKey
+ */
+ protected void setupOutputCombo(JComboBox<Object> comboBox,
+ String propertyKey)
+ {
+ comboBox.addItem(promptEachTimeOpt);
+ comboBox.addItem(lineArtOpt);
+ comboBox.addItem(textOpt);
+
+
+ /*
+ * JalviewJS doesn't support Lineart so force it to Text
+ */
+ String defaultOption = Platform.isJS() ? "Text"
+ : Cache.getDefault(propertyKey, "Prompt each time");
+ if (defaultOption.equalsIgnoreCase("Text"))
+ {
+ comboBox.setSelectedItem(textOpt);
+ }
+ else if (defaultOption.equalsIgnoreCase("Lineart"))
+ {
+ comboBox.setSelectedItem(lineArtOpt);
+ }
+ else
+ {
+ comboBox.setSelectedItem(promptEachTimeOpt);
+ }
}
/**
return;
}
+ /*
+ * Set proxy settings first (to be before web services refresh)
+ */
+ saveProxySettings();
+
/*
* Save Visual settings
*/
- Cache.applicationProperties.setProperty("SHOW_JVSUFFIX",
+ Cache.setPropertyNoSave("SHOW_JVSUFFIX",
Boolean.toString(seqLimit.isSelected()));
- Cache.applicationProperties.setProperty("RIGHT_ALIGN_IDS",
+ Cache.setPropertyNoSave("RIGHT_ALIGN_IDS",
Boolean.toString(rightAlign.isSelected()));
- Cache.applicationProperties.setProperty("SHOW_FULLSCREEN",
+ Cache.setPropertyNoSave("SHOW_FULLSCREEN",
Boolean.toString(fullScreen.isSelected()));
- Cache.applicationProperties.setProperty("SHOW_OVERVIEW",
+ Cache.setPropertyNoSave("SHOW_OVERVIEW",
Boolean.toString(openoverv.isSelected()));
- Cache.applicationProperties.setProperty("SHOW_ANNOTATIONS",
+ Cache.setPropertyNoSave("SHOW_ANNOTATIONS",
Boolean.toString(annotations.isSelected()));
- Cache.applicationProperties.setProperty("SHOW_CONSERVATION",
+ Cache.setPropertyNoSave("SHOW_CONSERVATION",
Boolean.toString(conservation.isSelected()));
- Cache.applicationProperties.setProperty("SHOW_QUALITY",
+ Cache.setPropertyNoSave("SHOW_QUALITY",
Boolean.toString(quality.isSelected()));
- Cache.applicationProperties.setProperty("SHOW_IDENTITY",
+ Cache.setPropertyNoSave("SHOW_IDENTITY",
Boolean.toString(identity.isSelected()));
- Cache.applicationProperties.setProperty("GAP_SYMBOL",
+ Cache.setPropertyNoSave("GAP_SYMBOL",
gapSymbolCB.getSelectedItem().toString());
- Cache.applicationProperties.setProperty("FONT_NAME",
+ Cache.setPropertyNoSave("FONT_NAME",
fontNameCB.getSelectedItem().toString());
- Cache.applicationProperties.setProperty("FONT_STYLE",
+ Cache.setPropertyNoSave("FONT_STYLE",
fontStyleCB.getSelectedItem().toString());
- Cache.applicationProperties.setProperty("FONT_SIZE",
+ Cache.setPropertyNoSave("FONT_SIZE",
fontSizeCB.getSelectedItem().toString());
- Cache.applicationProperties.setProperty("ID_ITALICS",
+ Cache.setPropertyNoSave("ID_ITALICS",
Boolean.toString(idItalics.isSelected()));
- Cache.applicationProperties.setProperty("SHOW_UNCONSERVED",
+ Cache.setPropertyNoSave("SHOW_UNCONSERVED",
Boolean.toString(showUnconserved.isSelected()));
- Cache.applicationProperties.setProperty(SHOW_OCCUPANCY,
+ Cache.setPropertyNoSave(SHOW_OCCUPANCY,
Boolean.toString(showOccupancy.isSelected()));
- Cache.applicationProperties.setProperty("SHOW_GROUP_CONSENSUS",
+ Cache.setPropertyNoSave("SHOW_GROUP_CONSENSUS",
Boolean.toString(showGroupConsensus.isSelected()));
- Cache.applicationProperties.setProperty("SHOW_GROUP_CONSERVATION",
+ Cache.setPropertyNoSave("SHOW_GROUP_CONSERVATION",
Boolean.toString(showGroupConservation.isSelected()));
- Cache.applicationProperties.setProperty("SHOW_CONSENSUS_HISTOGRAM",
+ Cache.setPropertyNoSave("SHOW_CONSENSUS_HISTOGRAM",
Boolean.toString(showConsensHistogram.isSelected()));
- Cache.applicationProperties.setProperty("SHOW_CONSENSUS_LOGO",
+ Cache.setPropertyNoSave("SHOW_CONSENSUS_LOGO",
Boolean.toString(showConsensLogo.isSelected()));
- Cache.applicationProperties.setProperty("ANTI_ALIAS",
+ Cache.setPropertyNoSave("SHOW_INFORMATION_HISTOGRAM",
+ Boolean.toString(showConsensHistogram.isSelected()));
+ Cache.setPropertyNoSave("SHOW_HMM_LOGO",
+ Boolean.toString(showHMMLogo.isSelected()));
+ Cache.setPropertyNoSave("ANTI_ALIAS",
Boolean.toString(smoothFont.isSelected()));
- Cache.applicationProperties.setProperty(SCALE_PROTEIN_TO_CDNA,
+ Cache.setPropertyNoSave(SCALE_PROTEIN_TO_CDNA,
Boolean.toString(scaleProteinToCdna.isSelected()));
- Cache.applicationProperties.setProperty("SHOW_NPFEATS_TOOLTIP",
+ Cache.setPropertyNoSave("SHOW_NPFEATS_TOOLTIP",
Boolean.toString(showNpTooltip.isSelected()));
- Cache.applicationProperties.setProperty("SHOW_DBREFS_TOOLTIP",
+ Cache.setPropertyNoSave("SHOW_DBREFS_TOOLTIP",
Boolean.toString(showDbRefTooltip.isSelected()));
- Cache.applicationProperties.setProperty("WRAP_ALIGNMENT",
+ Cache.setPropertyNoSave("WRAP_ALIGNMENT",
Boolean.toString(wrap.isSelected()));
- Cache.applicationProperties.setProperty("STARTUP_FILE",
+ Cache.setPropertyNoSave("STARTUP_FILE",
startupFileTextfield.getText());
- Cache.applicationProperties.setProperty("SHOW_STARTUP_FILE",
+ Cache.setPropertyNoSave("SHOW_STARTUP_FILE",
Boolean.toString(startupCheckbox.isSelected()));
- Cache.applicationProperties.setProperty("SORT_ALIGNMENT",
+ Cache.setPropertyNoSave("SORT_ALIGNMENT",
sortby.getSelectedItem().toString());
// convert description of sort order to enum name for save
.forDescription(sortAnnBy.getSelectedItem().toString());
if (annSortOrder != null)
{
- Cache.applicationProperties.setProperty(SORT_ANNOTATIONS,
+ Cache.setPropertyNoSave(SORT_ANNOTATIONS,
annSortOrder.name());
}
final boolean showAutocalcFirst = sortAutocalc.getSelectedIndex() == 0;
- Cache.applicationProperties.setProperty(SHOW_AUTOCALC_ABOVE,
+ Cache.setPropertyNoSave(SHOW_AUTOCALC_ABOVE,
Boolean.valueOf(showAutocalcFirst).toString());
/*
* Save Colours settings
*/
- Cache.applicationProperties.setProperty(DEFAULT_COLOUR_PROT,
+ Cache.setPropertyNoSave(DEFAULT_COLOUR_PROT,
protColour.getSelectedItem().toString());
- Cache.applicationProperties.setProperty(DEFAULT_COLOUR_NUC,
+ Cache.setPropertyNoSave(DEFAULT_COLOUR_NUC,
nucColour.getSelectedItem().toString());
- Cache.setColourProperty("ANNOTATIONCOLOUR_MIN",
+ Cache.setColourPropertyNoSave("ANNOTATIONCOLOUR_MIN",
minColour.getBackground());
- Cache.setColourProperty("ANNOTATIONCOLOUR_MAX",
+ Cache.setColourPropertyNoSave("ANNOTATIONCOLOUR_MAX",
maxColour.getBackground());
/*
+ * Save HMMER settings
+ */
+ Cache.setPropertyNoSave(HMMALIGN_TRIM_TERMINI,
+ Boolean.toString(hmmrTrimTermini.isSelected()));
+ Cache.setPropertyNoSave(HMMINFO_GLOBAL_BACKGROUND,
+ Boolean.toString(hmmerBackgroundUniprot.isSelected()));
+ Cache.setPropertyNoSave(HMMSEARCH_SEQCOUNT,
+ hmmerSequenceCount.getText());
+ Cache.setOrRemove(HMMER_PATH, hmmerPath.getText());
+ if (cygwinPath != null)
+ {
+ Cache.setOrRemove(CYGWIN_PATH, cygwinPath.getText());
+ }
+ AlignFrame[] frames = Desktop.getAlignFrames();
+ if (frames != null && frames.length > 0)
+ {
+ for (AlignFrame f : frames)
+ {
+ f.updateHMMERStatus();
+ }
+ }
+
+ hmmrTrimTermini.setSelected(Cache.getDefault(HMMALIGN_TRIM_TERMINI, false));
+ if (Cache.getDefault(HMMINFO_GLOBAL_BACKGROUND, false))
+ {
+ hmmerBackgroundUniprot.setSelected(true);
+ }
+ else
+ {
+ hmmerBackgroundAlignment.setSelected(true);
+ }
+ hmmerSequenceCount
+ .setText(Cache.getProperty(HMMSEARCH_SEQCOUNT));
+ hmmerPath.setText(Cache.getProperty(HMMER_PATH));
+
+ /*
* Save Overview settings
*/
- Cache.setColourProperty(GAP_COLOUR, gapColour.getBackground());
- Cache.setColourProperty(HIDDEN_COLOUR, hiddenColour.getBackground());
- Cache.applicationProperties.setProperty(USE_LEGACY_GAP,
+ Cache.setColourPropertyNoSave(GAP_COLOUR, gapColour.getBackground());
+ Cache.setColourPropertyNoSave(HIDDEN_COLOUR, hiddenColour.getBackground());
+ Cache.setPropertyNoSave(USE_LEGACY_GAP,
Boolean.toString(useLegacyGap.isSelected()));
- Cache.applicationProperties.setProperty(SHOW_OV_HIDDEN_AT_START,
+ Cache.setPropertyNoSave(SHOW_OV_HIDDEN_AT_START,
Boolean.toString(showHiddenAtStart.isSelected()));
/*
* Save Structure settings
*/
- Cache.applicationProperties.setProperty(ADD_TEMPFACT_ANN,
+ Cache.setPropertyNoSave(ADD_TEMPFACT_ANN,
Boolean.toString(addTempFactor.isSelected()));
- Cache.applicationProperties.setProperty(ADD_SS_ANN,
+ Cache.setPropertyNoSave(ADD_SS_ANN,
Boolean.toString(addSecondaryStructure.isSelected()));
- Cache.applicationProperties.setProperty(USE_RNAVIEW,
- Boolean.toString(useRnaView.isSelected()));
- Cache.applicationProperties.setProperty(STRUCT_FROM_PDB,
+ Cache.setPropertyNoSave(STRUCT_FROM_PDB,
Boolean.toString(structFromPdb.isSelected()));
- Cache.applicationProperties.setProperty(STRUCTURE_DISPLAY,
- structViewer.getSelectedItem().toString());
- Cache.setOrRemove(CHIMERA_PATH, chimeraPath.getText());
- Cache.applicationProperties.setProperty("MAP_WITH_SIFTS",
+ if (!Platform.isJS()) {
+ String viewer = structViewer.getSelectedItem().toString();
+ String viewerPath = structureViewerPath.getText();
+ Cache.setPropertyNoSave(STRUCTURE_DISPLAY, viewer);
+ if (viewer.equals(ViewerType.CHIMERA.name()))
+ {
+ Cache.setOrRemove(CHIMERA_PATH, viewerPath);
+ }
+ else if (viewer.equals(ViewerType.CHIMERAX.name()))
+ {
+ Cache.setOrRemove(CHIMERAX_PATH, viewerPath);
+ }
+ else if (viewer.equals(ViewerType.PYMOL.name()))
+ {
+ Cache.setOrRemove(PYMOL_PATH, viewerPath);
+ }
+ } // nojs
+ Cache.setPropertyNoSave("MAP_WITH_SIFTS",
Boolean.toString(siftsMapping.isSelected()));
SiftsSettings.setMapWithSifts(siftsMapping.isSelected());
/*
* Save Output settings
*/
- Cache.applicationProperties.setProperty("EPS_RENDERING",
+ Cache.setPropertyNoSave("EPS_RENDERING",
((OptionsParam) epsRendering.getSelectedItem()).getCode());
+ Cache.setPropertyNoSave("HTML_RENDERING",
+ ((OptionsParam) htmlRendering.getSelectedItem()).getCode());
+ Cache.setPropertyNoSave("SVG_RENDERING",
+ ((OptionsParam) svgRendering.getSelectedItem()).getCode());
/*
* Save Connections settings
*/
+ // Proxy settings were already set first (to catch web services)
Cache.setOrRemove("DEFAULT_BROWSER", defaultBrowser.getText());
jalview.util.BrowserLauncher.resetBrowser();
String menuLinks = sequenceUrlLinks.writeUrlsAsString(true);
if (menuLinks.isEmpty())
{
- Cache.applicationProperties.remove("SEQUENCE_LINKS");
+ Cache.removePropertyNoSave("SEQUENCE_LINKS");
}
else
{
- Cache.applicationProperties.setProperty("SEQUENCE_LINKS",
+ Cache.setPropertyNoSave("SEQUENCE_LINKS",
menuLinks.toString());
}
String nonMenuLinks = sequenceUrlLinks.writeUrlsAsString(false);
if (nonMenuLinks.isEmpty())
{
- Cache.applicationProperties.remove("STORED_LINKS");
+ Cache.removePropertyNoSave("STORED_LINKS");
}
else
{
- Cache.applicationProperties.setProperty("STORED_LINKS",
+ Cache.setPropertyNoSave("STORED_LINKS",
nonMenuLinks.toString());
}
- Cache.applicationProperties.setProperty("DEFAULT_URL",
+ Cache.setPropertyNoSave("DEFAULT_URL",
sequenceUrlLinks.getPrimaryUrlId());
- Cache.applicationProperties.setProperty("USE_PROXY",
- Boolean.toString(useProxy.isSelected()));
-
- Cache.setOrRemove("PROXY_SERVER", proxyServerTB.getText());
-
- Cache.setOrRemove("PROXY_PORT", proxyPortTB.getText());
-
- if (useProxy.isSelected())
- {
- System.setProperty("http.proxyHost", proxyServerTB.getText());
- System.setProperty("http.proxyPort", proxyPortTB.getText());
- }
- else
- {
- System.setProperty("http.proxyHost", "");
- System.setProperty("http.proxyPort", "");
- }
Cache.setProperty("VERSION_CHECK",
Boolean.toString(versioncheck.isSelected()));
if (Cache.getProperty("USAGESTATS") != null || usagestats.isSelected())
/*
* Save Output settings
*/
- Cache.applicationProperties.setProperty("BLC_JVSUFFIX",
+ Cache.setPropertyNoSave("BLC_JVSUFFIX",
Boolean.toString(blcjv.isSelected()));
- Cache.applicationProperties.setProperty("CLUSTAL_JVSUFFIX",
+ Cache.setPropertyNoSave("CLUSTAL_JVSUFFIX",
Boolean.toString(clustaljv.isSelected()));
- Cache.applicationProperties.setProperty("FASTA_JVSUFFIX",
+ Cache.setPropertyNoSave("FASTA_JVSUFFIX",
Boolean.toString(fastajv.isSelected()));
- Cache.applicationProperties.setProperty("MSF_JVSUFFIX",
+ Cache.setPropertyNoSave("MSF_JVSUFFIX",
Boolean.toString(msfjv.isSelected()));
- Cache.applicationProperties.setProperty("PFAM_JVSUFFIX",
+ Cache.setPropertyNoSave("PFAM_JVSUFFIX",
Boolean.toString(pfamjv.isSelected()));
- Cache.applicationProperties.setProperty("PILEUP_JVSUFFIX",
+ Cache.setPropertyNoSave("PILEUP_JVSUFFIX",
Boolean.toString(pileupjv.isSelected()));
- Cache.applicationProperties.setProperty("PIR_JVSUFFIX",
+ Cache.setPropertyNoSave("PIR_JVSUFFIX",
Boolean.toString(pirjv.isSelected()));
- Cache.applicationProperties.setProperty("PIR_MODELLER",
+ Cache.setPropertyNoSave("PIR_MODELLER",
Boolean.toString(modellerOutput.isSelected()));
- Cache.applicationProperties.setProperty("EXPORT_EMBBED_BIOJSON",
+ Cache.setPropertyNoSave("EXPORT_EMBBED_BIOJSON",
Boolean.toString(embbedBioJSON.isSelected()));
jalview.io.PIRFile.useModellerOutput = modellerOutput.isSelected();
- Cache.applicationProperties.setProperty("FIGURE_AUTOIDWIDTH",
+ Cache.setPropertyNoSave("FIGURE_AUTOIDWIDTH",
Boolean.toString(autoIdWidth.isSelected()));
userIdWidth_actionPerformed();
- Cache.applicationProperties.setProperty("FIGURE_USERIDWIDTH",
+ Cache.setPropertyNoSave("FIGURE_FIXEDIDWIDTH",
userIdWidth.getText());
/*
* Save Editing settings
*/
- Cache.applicationProperties.setProperty("AUTO_CALC_CONSENSUS",
+ Cache.setPropertyNoSave("AUTO_CALC_CONSENSUS",
Boolean.toString(autoCalculateConsCheck.isSelected()));
- Cache.applicationProperties.setProperty("SORT_BY_TREE",
+ Cache.setPropertyNoSave("SORT_BY_TREE",
Boolean.toString(sortByTree.isSelected()));
- Cache.applicationProperties.setProperty("PAD_GAPS",
+ Cache.setPropertyNoSave("PAD_GAPS",
Boolean.toString(padGaps.isSelected()));
- dasSource.saveProperties(Cache.applicationProperties);
- wsPrefs.updateAndRefreshWsMenuConfig(false);
+ if (!Platform.isJS())
+ {
+ wsPrefs.updateAndRefreshWsMenuConfig(false);
+ }
+
+ /*
+ * Save Backups settings
+ */
+ Cache.setPropertyNoSave(BackupFiles.ENABLED,
+ Boolean.toString(enableBackupFiles.isSelected()));
+ int preset = getComboIntStringKey(backupfilesPresetsCombo);
+ Cache.setPropertyNoSave(BackupFiles.NS + "_PRESET", Integer.toString(preset));
+
+ if (preset == BackupFilesPresetEntry.BACKUPFILESSCHEMECUSTOM)
+ {
+ BackupFilesPresetEntry customBFPE = getBackupfilesCurrentEntry();
+ BackupFilesPresetEntry.backupfilesPresetEntriesValues.put(
+ BackupFilesPresetEntry.BACKUPFILESSCHEMECUSTOM, customBFPE);
+ Cache.setPropertyNoSave(BackupFilesPresetEntry.CUSTOMCONFIG,
+ customBFPE.toString());
+ }
+
+ BackupFilesPresetEntry savedBFPE = BackupFilesPresetEntry.backupfilesPresetEntriesValues
+ .get(preset);
+ Cache.setPropertyNoSave(
+ BackupFilesPresetEntry.SAVEDCONFIG, savedBFPE.toString());
+
+ /*
+ * Save Memory Settings
+ */
+ Cache.setPropertyNoSave(
+ MemorySetting.CUSTOMISED_SETTINGS,
+ Boolean.toString(customiseMemorySetting.isSelected()));
+ Cache.setPropertyNoSave(MemorySetting.MEMORY_JVMMEMPC,
+ Integer.toString(jvmMemoryPercentSlider.getValue()));
+ Cache.setPropertyNoSave(MemorySetting.MEMORY_JVMMEMMAX,
+ jvmMemoryMaxTextField.getText());
+
+ /*
+ * save and close Preferences
+ */
Cache.saveProperties();
- Desktop.instance.doConfigureStructurePrefs();
+ Desktop.getInstance().doConfigureStructurePrefs();
try
{
frame.setClosed(true);
}
}
- /**
+ public void saveProxySettings()
+ {
+ String newProxyType = customProxy.isSelected() ? Cache.PROXYTYPE_CUSTOM
+ : noProxy.isSelected() ? Cache.PROXYTYPE_NONE
+ : Cache.PROXYTYPE_SYSTEM;
+ Cache.setPropertyNoSave("USE_PROXY", newProxyType);
+ Cache.setOrRemove("PROXY_SERVER", proxyServerHttpTB.getText());
+ Cache.setOrRemove("PROXY_PORT", proxyPortHttpTB.getText());
+ Cache.setOrRemove("PROXY_SERVER_HTTPS", proxyServerHttpsTB.getText());
+ Cache.setOrRemove("PROXY_PORT_HTTPS", proxyPortHttpsTB.getText());
+ Cache.setOrRemove("PROXY_AUTH",
+ Boolean.toString(proxyAuth.isSelected()));
+ Cache.setOrRemove("PROXY_AUTH_USERNAME", proxyAuthUsernameTB.getText());
+ Cache.proxyAuthPassword = proxyAuthPasswordPB.getPassword();
+ Cache.setProxyPropertiesFromPreferences(previousProxyType);
+ if (newProxyType.equals(Cache.PROXYTYPE_CUSTOM)
+ || !newProxyType.equals(previousProxyType))
+ {
+ // force a re-lookup of ws if proxytype is custom or has changed
+ wsPrefs.refreshWs_actionPerformed(null);
+ }
+ previousProxyType = newProxyType;
+ }
+
+ public static void setAppletDefaults()
+ {
+
+ // http://www.jalview.org/old/v2_8/examples/appletParameters.html
+
+ // showConservation true or false Default is true.
+ // showQuality true or false Default is true.
+ // showConsensus true or false Default is true.
+ // showFeatureSettings true or false Shows the feature settings window when
+ // startin
+ // showTreeBootstraps true or false (default is true) show or hide branch
+ // bootstraps
+ // showTreeDistances true or false (default is true) show or hide branch
+ // lengths
+ // showUnlinkedTreeNodes true or false (default is false) indicate if
+ // unassociated nodes should be highlighted in the tree view
+ // showUnconserved true of false (default is false) When true, only gaps and
+ // symbols different to the consensus sequence ions of the alignment
+ // showGroupConsensus true of false (default is false) When true, shows
+ // consensus annotation row for any groups on the alignment. (since 2.7)
+ // showGroupConservation true of false (default is false) When true, shows
+ // amino-acid property conservation annotation row for any groups on the
+ // showConsensusHistogram true of false (default is true) When true, shows
+ // the percentage occurence of the consensus symbol for each column as a
+ // showSequenceLogo true of false (default is false) When true, shows a
+ // sequence logo above the consensus sequence (overlaid above the Consensus
+
+ Cache.setPropertyNoSave(SHOW_CONSERVATION, "true");
+ Cache.setPropertyNoSave(SHOW_QUALITY, "false");
+ Cache.setPropertyNoSave(SHOW_CONSENSUS, "true");
+ Cache.setPropertyNoSave(SHOW_UNCONSERVED, "false");
+ Cache.setPropertyNoSave(SHOW_GROUP_CONSERVATION, "false");
+ Cache.setPropertyNoSave(SHOW_GROUP_CONSENSUS, "false");
+
+ // TODO -- just a start here
+ }
+ /**
* Do any necessary validation before saving settings. Return focus to the
* first tab which fails validation.
*
@Override
protected boolean validateStructure()
{
- return validateChimeraPath();
+ return validateViewerPath();
}
@Override
public void startupFileTextfield_mouseClicked()
{
+ // TODO: JAL-3048 not needed for Jalview-JS
String fileFormat = Cache.getProperty("DEFAULT_FILE_FORMAT");
JalviewFileChooser chooser = JalviewFileChooser
.forRead(Cache.getProperty("LAST_DIRECTORY"), fileFormat);
FileFormatI format = chooser.getSelectedFormat();
if (format != null)
{
- Cache.applicationProperties.setProperty("DEFAULT_FILE_FORMAT",
+ Cache.setPropertyNoSave("DEFAULT_FILE_FORMAT",
format.getName());
}
startupFileTextfield
{
try
{
- wsPrefs.updateWsMenuConfig(true);
- wsPrefs.refreshWs_actionPerformed(e);
+ if (!Platform.isJS())
+ {
+ wsPrefs.updateWsMenuConfig(true);
+ wsPrefs.refreshWs_actionPerformed(e);
+ }
frame.setClosed(true);
} catch (Exception ex)
{
&& (identity.isSelected() || showGroupConsensus.isSelected()));
showConsensLogo.setEnabled(annotations.isSelected()
&& (identity.isSelected() || showGroupConsensus.isSelected()));
+ showInformationHistogram.setEnabled(annotations.isSelected());
+ showHMMLogo.setEnabled(annotations.isSelected());
}
@Override
boolean valid = false;
while (!valid)
{
- if (JvOptionPane.showInternalConfirmDialog(Desktop.desktop, link,
+ if (JvOptionPane.showInternalConfirmDialog(Desktop.getDesktopPane(), link,
MessageManager.getString("label.new_sequence_url_link"),
JvOptionPane.OK_CANCEL_OPTION, -1,
null) == JvOptionPane.OK_OPTION)
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;
}
boolean valid = false;
while (!valid)
{
- if (JvOptionPane.showInternalConfirmDialog(Desktop.desktop, link,
+ if (JvOptionPane.showInternalConfirmDialog(Desktop.getDesktopPane(), link,
MessageManager.getString("label.edit_sequence_url_link"),
JvOptionPane.OK_CANCEL_OPTION, -1,
null) == JvOptionPane.OK_OPTION)
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
@Override
public void defaultBrowser_mouseClicked(MouseEvent e)
{
- JFileChooser chooser = new JFileChooser(".");
- chooser.setDialogTitle(
- MessageManager.getString("label.select_default_browser"));
+ // 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);
+ int value = chooser.showOpenDialog(this);
- if (value == JFileChooser.APPROVE_OPTION)
- {
- defaultBrowser.setText(chooser.getSelectedFile().getAbsolutePath());
+ if (value == JFileChooser.APPROVE_OPTION)
+ {
+ defaultBrowser.setText(chooser.getSelectedFile().getAbsolutePath());
+ }
}
-
}
/*
@Override
public void minColour_actionPerformed(JPanel panel)
{
- Color col = JColorChooser.showDialog(this,
+ JalviewColourChooser.showColourChooser(this,
MessageManager.getString("label.select_colour_minimum_value"),
- minColour.getBackground());
- if (col != null)
- {
- panel.setBackground(col);
- }
- panel.repaint();
+ panel);
}
@Override
public void maxColour_actionPerformed(JPanel panel)
{
- Color col = JColorChooser.showDialog(this,
+ JalviewColourChooser.showColourChooser(this,
MessageManager.getString("label.select_colour_maximum_value"),
- maxColour.getBackground());
- if (col != null)
- {
- panel.setBackground(col);
- }
- panel.repaint();
+ panel);
}
@Override
{
if (!useLegacyGap.isSelected())
{
- Color col = JColorChooser.showDialog(this,
+ JalviewColourChooser.showColourChooser(this,
MessageManager.getString("label.select_gap_colour"),
- gapColour.getBackground());
- if (col != null)
- {
- gap.setBackground(col);
- }
- gap.repaint();
+ gap);
}
}
@Override
public void hiddenColour_actionPerformed(JPanel hidden)
{
- Color col = JColorChooser.showDialog(this,
+ JalviewColourChooser.showColourChooser(this,
MessageManager.getString("label.select_hidden_colour"),
- hiddenColour.getBackground());
- if (col != null)
- {
- hidden.setBackground(col);
- }
- hidden.repaint();
+ hidden);
}
@Override
{
useLegacyGap.setSelected(false);
useLegacyGaps_actionPerformed(null);
- showHiddenAtStart.setSelected(true);
+ showHiddenAtStart.setSelected(false);
hiddenColour.setBackground(
jalview.renderer.OverviewResColourFinder.OVERVIEW_DEFAULT_HIDDEN);
}
}
} catch (NumberFormatException x)
{
- JvOptionPane.showInternalMessageDialog(Desktop.desktop,
+ userIdWidth.setText("");
+ JvOptionPane.showInternalMessageDialog(Desktop.getDesktopPane(),
MessageManager
.getString("warn.user_defined_width_requirements"),
MessageManager.getString("label.invalid_id_column_width"),
JvOptionPane.WARNING_MESSAGE);
- userIdWidth.setText("");
}
}
}
/**
- * Returns true if chimera path is to a valid executable, else show an error
- * dialog.
+ * Returns true if structure viewer path is to a valid executable, else shows an
+ * error dialog. Does nothing if the path is empty, as is the case for Jmol
+ * (built in to Jalview) or when Jalview is left to try default paths.
*/
- private boolean validateChimeraPath()
+ private boolean validateViewerPath()
{
- if (chimeraPath.getText().trim().length() > 0)
+ if (structureViewerPath.getText().trim().length() > 0)
{
- File f = new File(chimeraPath.getText());
+ File f = new File(structureViewerPath.getText());
if (!f.canExecute())
{
- JvOptionPane.showInternalMessageDialog(Desktop.desktop,
- MessageManager.getString("label.invalid_chimera_path"),
- MessageManager.getString("label.invalid_name"),
+ JvOptionPane.showInternalMessageDialog(Desktop.getDesktopPane(),
+ MessageManager.getString("label.invalid_viewer_path"),
+ MessageManager.getString("label.invalid_viewer_path"),
JvOptionPane.ERROR_MESSAGE);
return false;
}
}
return true;
}
+
+ /**
+ * Returns true if the given text field contains a path to a folder that
+ * contains an executable with the given name, else false (after showing a
+ * warning dialog). The executable name will be tried with .exe appended if not
+ * found.
+ *
+ * @param textField
+ * @param executable
+ */
+ protected boolean validateExecutablePath(JTextField textField, String executable)
+ {
+ String folder = textField.getText().trim();
+
+ if (FileUtils.getExecutable(executable, folder) != null)
+ {
+ return true;
+ }
+ if (folder.length() > 0)
+ {
+ JvOptionPane.showInternalMessageDialog(Desktop.getInstance(),
+ MessageManager.formatMessage("label.executable_not_found",
+ executable),
+ MessageManager.getString("label.invalid_folder"),
+ JvOptionPane.ERROR_MESSAGE);
+ }
+ return false;
+ }
+
+ /**
+ * Checks if a file can be executed
+ *
+ * @param path
+ * the path to the file
+ * @return
+ */
+ public boolean canExecute(String path)
+ {
+ File file = new File(path);
+ if (!file.canExecute())
+ {
+ file = new File(path + ".exe");
+ {
+ if (!file.canExecute())
+ {
+ return false;
+ }
+ }
+ }
+ return true;
+ }
/**
- * If Chimera is selected, check it can be found on default or user-specified
- * path, if not show a warning/help dialog.
+ * If Chimera or ChimeraX or Pymol is selected, check it can be found on default
+ * or user-specified path, if not show a warning/help dialog
*/
@Override
protected void structureViewer_actionPerformed(String selectedItem)
{
- if (!selectedItem.equals(ViewerType.CHIMERA.name()))
+ if (selectedItem.equals(ViewerType.JMOL.name()))
{
+ structureViewerPath.setEnabled(false);
+ structureViewerPathLabel.setEnabled(false);
return;
}
boolean found = false;
+ structureViewerPath.setEnabled(true);
+ structureViewerPathLabel.setEnabled(true);
+ structureViewerPathLabel.setText(MessageManager
+ .formatMessage("label.viewer_path", selectedItem));
/*
- * Try user-specified and standard paths for Chimera executable.
+ * Try user-specified and standard paths for structure viewer executable
*/
- List<String> paths = StructureManager.getChimeraPaths();
- paths.add(0, chimeraPath.getText());
+ String viewerPath = "";
+ List<String> paths = null;
+ try
+ {
+ ViewerType viewerType = ViewerType.valueOf(selectedItem);
+ switch (viewerType)
+ {
+ case JMOL:
+ // dealt with above
+ break;
+ case CHIMERA:
+ viewerPath = Cache.getDefault(CHIMERA_PATH, "");
+ paths = StructureManager.getChimeraPaths(false);
+ break;
+ case CHIMERAX:
+ viewerPath = Cache.getDefault(CHIMERAX_PATH, "");
+ paths = StructureManager.getChimeraPaths(true);
+ break;
+ case PYMOL:
+ viewerPath = Cache.getDefault(PYMOL_PATH, "");
+ paths = PymolManager.getPymolPaths();
+ break;
+ }
+ } catch (IllegalArgumentException e)
+ {
+ // only valid entries should be in the drop-down
+ }
+ structureViewerPath.setText(viewerPath);
+
+ paths.add(0, structureViewerPath.getText());
for (String path : paths)
{
if (new File(path.trim()).canExecute())
break;
}
}
+
if (!found)
{
String[] options = { "OK", "Help" };
- int showHelp = JvOptionPane.showInternalOptionDialog(Desktop.desktop,
+ int showHelp = JvOptionPane.showInternalOptionDialog(Desktop.getDesktopPane(),
JvSwingUtils.wrapTooltip(true,
- MessageManager.getString("label.chimera_missing")),
+ 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);
e.printStackTrace();
}
}
- }
+ else if (showHelp == JvOptionPane.OK_OPTION)
+ {
+ this.selectTab(Preferences.TabRef.STRUCTURE_TAB, null);
+ CompletableFuture<Void> 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)
+ {
+ }
+ });
+ }
+ }
+ }
+
+ @Override
+ protected void validateHmmerPath()
+ {
+ validateExecutablePath(hmmerPath, HmmerCommand.HMMBUILD);
+ }
+
+ @Override
+ protected void validateCygwinPath()
+ {
+ validateExecutablePath(cygwinPath, "run");
}
public class OptionsParam