import javax.swing.JFileChooser;
import javax.swing.JLabel;
import javax.swing.JPanel;
+import javax.swing.JPasswordField;
import javax.swing.JRadioButton;
import javax.swing.JScrollPane;
import javax.swing.JSpinner;
import jalview.io.BackupFilesPresetEntry;
import jalview.io.IntKeyStringValueEntry;
import jalview.util.MessageManager;
+import jalview.util.Platform;
/**
* Base class for the Preferences panel.
protected JButton userOnly = new JButton();
+ protected JLabel httpLabel = new JLabel();
+
+ protected JLabel httpsLabel = new JLabel();
+
protected JLabel portLabel = new JLabel();
protected JLabel serverLabel = new JLabel();
- protected JTextField proxyServerTB = new JTextField();
+ protected JLabel portLabel2 = new JLabel();
+
+ protected JLabel serverLabel2 = new JLabel();
+
+ protected JLabel proxyAuthUsernameLabel = new JLabel();
+
+ protected JLabel proxyAuthPasswordLabel = new JLabel();
+
+ protected JTextField proxyServerHttpTB = new JTextField();
+
+ protected JTextField proxyPortHttpTB = new JTextField();
+
+ protected JTextField proxyServerHttpsTB = new JTextField();
- protected JTextField proxyPortTB = new JTextField();
+ protected JTextField proxyPortHttpsTB = new JTextField();
+
+ protected JCheckBox proxyAuth = new JCheckBox();
+
+ protected JTextField proxyAuthUsernameTB = new JTextField();
+
+ protected JTextField proxyAuthPasswordTB = new JPasswordField();
protected JTextField defaultBrowser = new JTextField();
- protected JCheckBox useProxy = new JCheckBox();
+ protected ButtonGroup proxyType = new ButtonGroup();
+
+ protected JRadioButton noProxy = new JRadioButton();
+
+ protected JRadioButton systemProxy = new JRadioButton();
+
+ protected JRadioButton customProxy = new JRadioButton();
protected JCheckBox usagestats = new JCheckBox();
*/
protected JComboBox<Object> epsRendering = new JComboBox<>();
+ protected JComboBox<Object> htmlRendering = new JComboBox<>();
+
+ protected JComboBox<Object> svgRendering = new JComboBox<>();
+
protected JLabel userIdWidthlabel = new JLabel();
protected JCheckBox autoIdWidth = new JCheckBox();
tabbedPane.add(initConnectionsTab(),
MessageManager.getString("label.connections"));
- tabbedPane.add(initBackupsTab(),
- MessageManager.getString("label.backups"));
+ if (!Platform.isJS())
+ {
+ tabbedPane.add(initBackupsTab(),
+ MessageManager.getString("label.backups"));
+ }
tabbedPane.add(initLinksTab(),
MessageManager.getString("label.urllinks"));
/*
* See WsPreferences for the real work of configuring this tab.
*/
- wsTab.setLayout(new BorderLayout());
- tabbedPane.add(wsTab, MessageManager.getString("label.web_services"));
+ if (!Platform.isJS())
+ {
+ wsTab.setLayout(new BorderLayout());
+ tabbedPane.add(wsTab, MessageManager.getString("label.web_services"));
+ }
/*
* Handler to validate a tab before leaving it - currently only for
}
/**
- * Initialises the Output tabbed panel.
+ * Initialises the Output tab
*
* @return
*/
{
JPanel outputTab = new JPanel();
outputTab.setLayout(null);
- JLabel epsLabel = new JLabel();
+
+ JLabel epsLabel = new JLabel(
+ MessageManager.formatMessage("label.rendering_style", "EPS"));
epsLabel.setFont(LABEL_FONT);
epsLabel.setHorizontalAlignment(SwingConstants.RIGHT);
- epsLabel.setText(MessageManager.getString("label.eps_rendering_style"));
- epsLabel.setBounds(new Rectangle(9, 31, 140, 24));
+ epsLabel.setBounds(new Rectangle(9, 31, 160, 24));
epsRendering.setFont(LABEL_FONT);
- epsRendering.setBounds(new Rectangle(154, 34, 187, 21));
+ epsRendering.setBounds(new Rectangle(174, 34, 187, 21));
+ JLabel htmlLabel = new JLabel(
+ MessageManager.formatMessage("label.rendering_style", "HTML"));
+ htmlLabel.setFont(LABEL_FONT);
+ htmlLabel.setHorizontalAlignment(SwingConstants.RIGHT);
+ htmlLabel.setBounds(new Rectangle(9, 55, 160, 24));
+ htmlRendering.setFont(LABEL_FONT);
+ htmlRendering.setBounds(new Rectangle(174, 58, 187, 21));
+ JLabel svgLabel = new JLabel(
+ MessageManager.formatMessage("label.rendering_style", "SVG"));
+ svgLabel.setFont(LABEL_FONT);
+ svgLabel.setHorizontalAlignment(SwingConstants.RIGHT);
+ svgLabel.setBounds(new Rectangle(9, 79, 160, 24));
+ svgRendering.setFont(LABEL_FONT);
+ svgRendering.setBounds(new Rectangle(174, 82, 187, 21));
+
JLabel jLabel1 = new JLabel();
jLabel1.setFont(LABEL_FONT);
jLabel1.setHorizontalAlignment(SwingConstants.CENTER);
jLabel1.setText(MessageManager.getString("label.append_start_end"));
jLabel1.setFont(LABEL_FONT);
+
fastajv.setFont(LABEL_FONT);
fastajv.setHorizontalAlignment(SwingConstants.LEFT);
clustaljv.setText(MessageManager.getString("label.clustal") + " ");
TitledBorder titledBorder2 = new TitledBorder(
MessageManager.getString("label.file_output"));
jPanel11.setBorder(titledBorder2);
- jPanel11.setBounds(new Rectangle(30, 72, 196, 182));
+ jPanel11.setBounds(new Rectangle(30, 120, 196, 182));
GridLayout gridLayout3 = new GridLayout();
jPanel11.setLayout(gridLayout3);
gridLayout3.setRows(8);
MessageManager.getString("label.automatically_set_id_width"));
autoIdWidth.setToolTipText(JvSwingUtils.wrapTooltip(true, MessageManager
.getString("label.adjusts_width_generated_eps_png")));
- autoIdWidth.setBounds(new Rectangle(228, 96, 188, 23));
+ autoIdWidth.setBounds(new Rectangle(228, 144, 320, 23));
autoIdWidth.addActionListener(new ActionListener()
{
userIdWidthlabel.setToolTipText(
JvSwingUtils.wrapTooltip(true, MessageManager.getString(
"label.manually_specify_width_left_column")));
- userIdWidthlabel.setBounds(new Rectangle(236, 120, 168, 23));
+ userIdWidthlabel.setBounds(new Rectangle(236, 168, 320, 23));
userIdWidth.setFont(JvSwingUtils.getTextAreaFont());
userIdWidth.setText("");
- userIdWidth.setBounds(new Rectangle(232, 144, 84, 23));
+ userIdWidth.setBounds(new Rectangle(232, 192, 84, 23));
userIdWidth.addActionListener(new ActionListener()
{
modellerOutput.setFont(LABEL_FONT);
modellerOutput
.setText(MessageManager.getString("label.use_modeller_output"));
- modellerOutput.setBounds(new Rectangle(228, 226, 168, 23));
+ modellerOutput.setBounds(new Rectangle(228, 274, 320, 23));
embbedBioJSON.setFont(LABEL_FONT);
embbedBioJSON.setText(MessageManager.getString("label.embbed_biojson"));
- embbedBioJSON.setBounds(new Rectangle(228, 200, 250, 23));
+ embbedBioJSON.setBounds(new Rectangle(228, 248, 250, 23));
jPanel11.add(jLabel1);
jPanel11.add(blcjv);
outputTab.add(userIdWidth);
outputTab.add(userIdWidthlabel);
outputTab.add(modellerOutput);
- outputTab.add(embbedBioJSON);
- outputTab.add(epsLabel);
- outputTab.add(epsRendering);
+ if (!Platform.isJS())
+ {
+ /*
+ * JalviewJS doesn't support Lineart option or SVG output
+ */
+ outputTab.add(embbedBioJSON);
+ outputTab.add(epsLabel);
+ outputTab.add(epsRendering);
+ outputTab.add(htmlLabel);
+ outputTab.add(htmlRendering);
+ outputTab.add(svgLabel);
+ outputTab.add(svgRendering);
+ }
outputTab.add(jPanel11);
return outputTab;
}
private JPanel initConnTabProxyPanel()
{
// Label for server text box
- serverLabel.setText(MessageManager.getString("label.address"));
+ serverLabel.setText(MessageManager.getString("label.host") + ": ");
serverLabel.setHorizontalAlignment(SwingConstants.RIGHT);
serverLabel.setFont(LABEL_FONT);
+ serverLabel2.setText(MessageManager.getString("label.host") + ": ");
+ serverLabel2.setHorizontalAlignment(SwingConstants.RIGHT);
+ serverLabel2.setFont(LABEL_FONT);
// Proxy server and port text boxes
- proxyServerTB.setFont(LABEL_FONT);
- proxyPortTB.setFont(LABEL_FONT);
+ proxyServerHttpTB.setFont(LABEL_FONT);
+ proxyServerHttpTB.setColumns(40);
+ proxyPortHttpTB.setFont(LABEL_FONT);
+ proxyPortHttpTB.setColumns(4);
+ proxyServerHttpsTB.setFont(LABEL_FONT);
+ proxyServerHttpsTB.setColumns(40);
+ proxyPortHttpsTB.setFont(LABEL_FONT);
+ proxyPortHttpsTB.setColumns(4);
+ proxyAuthUsernameTB.setFont(LABEL_FONT);
+ proxyAuthUsernameTB.setColumns(30);
+ proxyAuthPasswordTB.setFont(LABEL_FONT);
+ proxyAuthPasswordTB.setColumns(30);
// Label for Port text box
portLabel.setFont(LABEL_FONT);
portLabel.setHorizontalAlignment(SwingConstants.RIGHT);
- portLabel.setText(MessageManager.getString("label.port"));
-
- // Use proxy server checkbox
- useProxy.setFont(LABEL_FONT);
- useProxy.setHorizontalAlignment(SwingConstants.RIGHT);
- useProxy.setHorizontalTextPosition(SwingConstants.LEADING);
- useProxy.setText(MessageManager.getString("label.use_proxy_server"));
- useProxy.addActionListener(new ActionListener()
+ portLabel.setText(MessageManager.getString("label.port") + ": ");
+ portLabel2.setFont(LABEL_FONT);
+ portLabel2.setHorizontalAlignment(SwingConstants.RIGHT);
+ portLabel2.setText(MessageManager.getString("label.port") + ": ");
+
+ httpLabel.setText("HTTP");
+ httpLabel.setFont(LABEL_FONT_BOLD);
+ httpLabel.setHorizontalAlignment(SwingConstants.LEFT);
+ httpsLabel.setText("HTTPS");
+ httpsLabel.setFont(LABEL_FONT_BOLD);
+ httpsLabel.setHorizontalAlignment(SwingConstants.LEFT);
+
+ proxyAuthUsernameLabel
+ .setText(MessageManager.getString("label.username") + ": ");
+ proxyAuthUsernameLabel.setFont(LABEL_FONT);
+ proxyAuthUsernameLabel.setHorizontalAlignment(SwingConstants.RIGHT);
+ proxyAuthPasswordLabel
+ .setText(MessageManager.getString("label.password") + ": ");
+ proxyAuthPasswordLabel.setFont(LABEL_FONT);
+ proxyAuthPasswordLabel.setHorizontalAlignment(SwingConstants.RIGHT);
+
+ // Proxy type radio buttons
+ noProxy.setFont(LABEL_FONT);
+ noProxy.setHorizontalAlignment(SwingConstants.LEFT);
+ noProxy.setText(MessageManager.getString("label.no_proxy"));
+ systemProxy.setFont(LABEL_FONT);
+ systemProxy.setHorizontalAlignment(SwingConstants.LEFT);
+ systemProxy.setText(MessageManager.formatMessage("label.system_proxy",
+ displayUserHostPort(Cache.startupProxyProperties[4],
+ Cache.startupProxyProperties[0],
+ Cache.startupProxyProperties[1]),
+ displayUserHostPort(Cache.startupProxyProperties[6],
+ Cache.startupProxyProperties[2],
+ Cache.startupProxyProperties[3])));
+ customProxy.setFont(LABEL_FONT);
+ customProxy.setHorizontalAlignment(SwingConstants.LEFT);
+ customProxy.setText(
+ MessageManager.getString("label.use_proxy_server") + ":");
+ ActionListener al = new ActionListener()
+ {
+ @Override
+ public void actionPerformed(ActionEvent e)
+ {
+ proxyType_actionPerformed();
+ }
+ };
+ noProxy.addActionListener(al);
+ systemProxy.addActionListener(al);
+ customProxy.addActionListener(al);
+ proxyType.add(noProxy);
+ proxyType.add(systemProxy);
+ proxyType.add(customProxy);
+
+ proxyAuth.setFont(LABEL_FONT);
+ proxyAuth.setHorizontalAlignment(SwingConstants.LEFT);
+ proxyAuth.setText(MessageManager.getString("label.auth_required"));
+ proxyAuth.addActionListener(new ActionListener()
{
@Override
public void actionPerformed(ActionEvent e)
{
- useProxy_actionPerformed();
+ proxyAuth_actionPerformed();
}
});
+ setCustomProxyEnabled();
+
// Make proxy server panel
JPanel proxyPanel = new JPanel();
TitledBorder titledBorder1 = new TitledBorder(
- MessageManager.getString("label.proxy_server"));
+ MessageManager.getString("label.proxy_servers"));
proxyPanel.setBorder(titledBorder1);
+ GridBagConstraints gbc = new GridBagConstraints();
proxyPanel.setLayout(new GridBagLayout());
- proxyPanel.add(serverLabel,
- new GridBagConstraints(0, 1, 1, 1, 0.0, 0.0,
- GridBagConstraints.WEST, GridBagConstraints.NONE,
- new Insets(0, 2, 2, 0), 5, 0));
- proxyPanel.add(portLabel,
- new GridBagConstraints(2, 1, 1, 1, 0.0, 0.0,
- GridBagConstraints.WEST, GridBagConstraints.NONE,
- new Insets(0, 0, 2, 0), 11, 0));
- proxyPanel.add(useProxy,
- new GridBagConstraints(0, 0, 2, 1, 0.0, 0.0,
- GridBagConstraints.WEST, GridBagConstraints.NONE,
- new Insets(0, 2, 5, 185), 2, -4));
- proxyPanel.add(proxyPortTB,
- new GridBagConstraints(3, 1, 1, 1, 1.0, 0.0,
- GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL,
- new Insets(0, 2, 2, 2), 54, 1));
- proxyPanel.add(proxyServerTB,
- new GridBagConstraints(1, 1, 1, 1, 1.0, 0.0,
- GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL,
- new Insets(0, 2, 2, 0), 263, 1));
+
+ gbc.gridx = 0;
+ gbc.gridy = 0;
+ gbc.weightx = 1.0;
+ gbc.gridheight = 1;
+ gbc.anchor = GridBagConstraints.WEST;
+ gbc.fill = GridBagConstraints.BOTH;
+
+ gbc.gridwidth = 5;
+ proxyPanel.add(noProxy, gbc);
+
+ gbc.gridy++;
+ proxyPanel.add(systemProxy, gbc);
+
+ gbc.gridy++;
+ proxyPanel.add(customProxy, gbc);
+
+ gbc.gridwidth = 1;
+ gbc.gridy++;
+ gbc.gridx = 0;
+ gbc.weightx = 0.1;
+ proxyPanel.add(httpLabel, gbc);
+
+ gbc.gridx++;
+ gbc.anchor = GridBagConstraints.EAST;
+ gbc.weightx = 0.15;
+ proxyPanel.add(serverLabel, gbc);
+
+ gbc.gridx++;
+ gbc.anchor = GridBagConstraints.WEST;
+ gbc.weightx = 0.5;
+ proxyPanel.add(proxyServerHttpTB, gbc);
+
+ gbc.gridx++;
+ gbc.anchor = GridBagConstraints.EAST;
+ gbc.weightx = 0.15;
+ proxyPanel.add(portLabel, gbc);
+
+ gbc.gridx++;
+ gbc.anchor = GridBagConstraints.WEST;
+ gbc.weightx = 0.1;
+ proxyPanel.add(proxyPortHttpTB, gbc);
+
+ gbc.gridy++;
+ gbc.gridx = 0;
+ gbc.anchor = GridBagConstraints.WEST;
+ gbc.weightx = 0.1;
+ proxyPanel.add(httpsLabel, gbc);
+
+ gbc.gridx++;
+ gbc.anchor = GridBagConstraints.EAST;
+ gbc.weightx = 0.15;
+ proxyPanel.add(serverLabel2, gbc);
+
+ gbc.gridx++;
+ gbc.anchor = GridBagConstraints.WEST;
+ gbc.weightx = 0.5;
+ proxyPanel.add(proxyServerHttpsTB, gbc);
+
+ gbc.gridx++;
+ gbc.anchor = GridBagConstraints.EAST;
+ gbc.weightx = 0.15;
+ proxyPanel.add(portLabel2, gbc);
+
+ gbc.gridx++;
+ gbc.anchor = GridBagConstraints.WEST;
+ gbc.weightx = 0.1;
+ proxyPanel.add(proxyPortHttpsTB, gbc);
+
+ gbc.gridy++;
+ gbc.gridx = 0;
+ gbc.gridwidth = 5;
+ gbc.anchor = GridBagConstraints.WEST;
+ gbc.weightx = 0.1;
+ proxyPanel.add(proxyAuth, gbc);
+
+ gbc.gridy++;
+ gbc.gridx = 0;
+ gbc.gridwidth = 1;
+ gbc.anchor = GridBagConstraints.EAST;
+ proxyPanel.add(proxyAuthUsernameLabel, gbc);
+
+ gbc.gridx++;
+ gbc.gridwidth = 4;
+ gbc.anchor = GridBagConstraints.WEST;
+ proxyPanel.add(proxyAuthUsernameTB, gbc);
+
+ gbc.gridy++;
+ gbc.gridx = 0;
+ gbc.gridwidth = 1;
+ gbc.anchor = GridBagConstraints.EAST;
+ proxyPanel.add(proxyAuthPasswordLabel, gbc);
+
+ gbc.gridx++;
+ gbc.gridwidth = 4;
+ gbc.anchor = GridBagConstraints.WEST;
+ proxyPanel.add(proxyAuthPasswordTB, gbc);
return proxyPanel;
}
+ private String displayUserHostPort(String user, String host, String port)
+ {
+ boolean hostBlank = (host == null || host.isEmpty());
+ boolean portBlank = (port == null || port.isEmpty());
+ if (hostBlank && portBlank)
+ {
+ return MessageManager.getString("label.none");
+ }
+
+ StringBuilder sb = new StringBuilder();
+ if (user != null)
+ {
+ sb.append(user.isEmpty() || user.indexOf(" ") > -1 ? '"' + user + '"'
+ : user);
+ sb.append("@");
+ }
+ sb.append(hostBlank ? "" : host);
+ if (!portBlank)
+ {
+ sb.append(":");
+ sb.append(port);
+ }
+ return sb.toString();
+ }
+
/**
* Initialises the checkboxes in the Connections tab
*/
docFieldPref.setBounds(new Rectangle(10, ypos, 470, 120));
structureTab.add(docFieldPref);
+ /*
+ * hide Chimera options in JalviewJS
+ */
+ if (Platform.isJS())
+ {
+ structureViewerPathLabel.setVisible(false);
+ structureViewerPath.setVisible(false);
+ viewerLabel.setVisible(false);
+ structViewer.setVisible(false);
+ }
+
return structureTab;
}
visualTab.add(fontNameCB);
visualTab.add(fontSizeCB);
visualTab.add(fontStyleCB);
+
+ if (Platform.isJS())
+ {
+ startupCheckbox.setVisible(false);
+ startupFileTextfield.setVisible(false);
+ }
+
return visualTab;
}
BackupFilesPresetEntry savedPreset = BackupFilesPresetEntry
.getSavedBackupEntry();
enableBackupFiles
- .setSelected(Cache.getDefault(BackupFiles.ENABLED, true));
+ .setSelected(Cache.getDefault(BackupFiles.ENABLED, !Platform.isJS()));
BackupFilesPresetEntry backupfilesCustomEntry = BackupFilesPresetEntry
.createBackupFilesPresetEntry(Cache
}
- public void useProxy_actionPerformed()
+ public void setProxyAuthEnabled()
{
- boolean enabled = useProxy.isSelected();
+ boolean enabled = proxyAuth.isSelected() && proxyAuth.isEnabled();
+ proxyAuthUsernameLabel.setEnabled(enabled);
+ proxyAuthPasswordLabel.setEnabled(enabled);
+ proxyAuthUsernameTB.setEnabled(enabled);
+ proxyAuthPasswordTB.setEnabled(enabled);
+ }
+
+ public void setCustomProxyEnabled()
+ {
+ boolean enabled = customProxy.isSelected();
portLabel.setEnabled(enabled);
serverLabel.setEnabled(enabled);
- proxyServerTB.setEnabled(enabled);
- proxyPortTB.setEnabled(enabled);
+ portLabel2.setEnabled(enabled);
+ serverLabel2.setEnabled(enabled);
+ httpLabel.setEnabled(enabled);
+ httpsLabel.setEnabled(enabled);
+ proxyServerHttpTB.setEnabled(enabled);
+ proxyPortHttpTB.setEnabled(enabled);
+ proxyServerHttpsTB.setEnabled(enabled);
+ proxyPortHttpsTB.setEnabled(enabled);
+ proxyAuth.setEnabled(enabled);
+ setProxyAuthEnabled();
+ }
+
+ public void proxyType_actionPerformed()
+ {
+ setCustomProxyEnabled();
+ }
+
+ public void proxyAuth_actionPerformed()
+ {
+ setProxyAuthEnabled();
}
/**