/*
* Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
* Copyright (C) $$Year-Rel$$ The Jalview Authors
*
* This file is part of Jalview.
*
* Jalview is free software: you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation, either version 3
* of the License, or (at your option) any later version.
*
* Jalview is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty
* of MERCHANTABILITY or FITNESS FOR A PARTICULAR
* PURPOSE. See the GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Jalview. If not, see .
* The Jalview Authors are detailed in the 'AUTHORS' file.
*/
package jalview.jbgui;
import jalview.fts.core.FTSDataColumnPreferences;
import jalview.fts.core.FTSDataColumnPreferences.PreferenceSource;
import jalview.fts.service.pdb.PDBFTSRestClient;
import jalview.gui.JvSwingUtils;
import jalview.gui.StructureViewer.ViewerType;
import jalview.util.MessageManager;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.GridLayout;
import java.awt.Insets;
import java.awt.Rectangle;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.FocusEvent;
import java.awt.event.KeyEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.BorderFactory;
import javax.swing.ButtonGroup;
import javax.swing.DefaultListCellRenderer;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JComboBox;
import javax.swing.JFileChooser;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.JScrollPane;
import javax.swing.JTabbedPane;
import javax.swing.JTextField;
import javax.swing.ListSelectionModel;
import javax.swing.SwingConstants;
import javax.swing.border.Border;
import javax.swing.border.EmptyBorder;
import javax.swing.border.EtchedBorder;
import javax.swing.border.TitledBorder;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
/**
* Base class for the Preferences panel.
*
* @author $author$
* @version $Revision$
*/
public class GPreferences extends JPanel
{
private static final Font LABEL_FONT = JvSwingUtils.getLabelFont();
private static final Font LABEL_FONT_ITALIC = JvSwingUtils.getLabelFont(
false, true);
/*
* Visual tab components
*/
protected JCheckBox fullScreen = new JCheckBox();
protected JCheckBox openoverv = new JCheckBox();
protected JCheckBox seqLimit = new JCheckBox();
protected JCheckBox rightAlign = new JCheckBox();
protected JComboBox fontSizeCB = new JComboBox();
protected JComboBox fontStyleCB = new JComboBox();
protected JComboBox fontNameCB = new JComboBox();
protected JCheckBox showUnconserved = new JCheckBox();
protected JCheckBox idItalics = new JCheckBox();
protected JCheckBox smoothFont = new JCheckBox();
protected JCheckBox scaleProteinToCdna = new JCheckBox();
protected JComboBox gapSymbolCB = new JComboBox();
protected JCheckBox wrap = new JCheckBox();
protected JComboBox sortby = new JComboBox();
protected JComboBox sortAnnBy = new JComboBox();
protected JComboBox sortAutocalc = new JComboBox();
protected JCheckBox startupCheckbox = new JCheckBox();
protected JTextField startupFileTextfield = new JTextField();
// below are in the 'second column'
protected JCheckBox annotations = new JCheckBox();
protected JCheckBox quality = new JCheckBox();
protected JCheckBox conservation = new JCheckBox();
protected JCheckBox identity = new JCheckBox();
protected JCheckBox showGroupConsensus = new JCheckBox();
protected JCheckBox showGroupConservation = new JCheckBox();
protected JCheckBox showConsensHistogram = new JCheckBox();
protected JCheckBox showConsensLogo = new JCheckBox();
protected JCheckBox showDbRefTooltip = new JCheckBox();
protected JCheckBox showNpTooltip = new JCheckBox();
/*
* Structure tab and components
*/
protected JPanel structureTab;
protected JCheckBox structFromPdb = new JCheckBox();
protected JCheckBox useRnaView = new JCheckBox();
protected JCheckBox addSecondaryStructure = new JCheckBox();
protected JCheckBox addTempFactor = new JCheckBox();
protected JComboBox structViewer = new JComboBox();
protected JTextField chimeraPath = new JTextField();
protected ButtonGroup mappingMethod = new ButtonGroup();
protected JRadioButton siftsMapping = new JRadioButton();
protected JRadioButton nwMapping = new JRadioButton();
/*
* Colours tab components
*/
protected JPanel minColour = new JPanel();
protected JPanel maxColour = new JPanel();
protected JComboBox protColour = new JComboBox();
protected JComboBox nucColour = new JComboBox();
/*
* Connections tab components
*/
protected JList linkURLList = new JList();
protected JTextField proxyServerTB = new JTextField();
protected JTextField proxyPortTB = new JTextField();
protected JTextField defaultBrowser = new JTextField();
protected JList linkNameList = new JList();
protected JCheckBox useProxy = new JCheckBox();
protected JCheckBox usagestats = new JCheckBox();
protected JCheckBox questionnaire = new JCheckBox();
protected JCheckBox versioncheck = new JCheckBox();
/*
* Output tab components
*/
protected JComboBox epsRendering = new JComboBox();
protected JLabel userIdWidthlabel = new JLabel();
protected JCheckBox autoIdWidth = new JCheckBox();
protected JTextField userIdWidth = new JTextField();
protected JCheckBox blcjv = new JCheckBox();
protected JCheckBox pileupjv = new JCheckBox();
protected JCheckBox clustaljv = new JCheckBox();
protected JCheckBox msfjv = new JCheckBox();
protected JCheckBox fastajv = new JCheckBox();
protected JCheckBox pfamjv = new JCheckBox();
protected JCheckBox pirjv = new JCheckBox();
protected JCheckBox modellerOutput = new JCheckBox();
protected JCheckBox embbedBioJSON = new JCheckBox();
/*
* Editing tab components
*/
protected JCheckBox autoCalculateConsCheck = new JCheckBox();
protected JCheckBox padGaps = new JCheckBox();
protected JCheckBox sortByTree = new JCheckBox();
/*
* DAS Settings tab
*/
protected JPanel dasTab = new JPanel();
/*
* Web Services tab
*/
protected JPanel wsTab = new JPanel();
/**
* Creates a new GPreferences object.
*/
public GPreferences()
{
try
{
jbInit();
} catch (Exception ex)
{
ex.printStackTrace();
}
}
/**
* Construct the panel and its tabbed sub-panels.
*
* @throws Exception
*/
private void jbInit() throws Exception
{
final JTabbedPane tabbedPane = new JTabbedPane();
this.setLayout(new BorderLayout());
JPanel okCancelPanel = initOkCancelPanel();
this.add(tabbedPane, BorderLayout.CENTER);
this.add(okCancelPanel, BorderLayout.SOUTH);
tabbedPane.add(initVisualTab(),
MessageManager.getString("label.visual"));
tabbedPane.add(initColoursTab(),
MessageManager.getString("label.colours"));
tabbedPane.add(initStructureTab(),
MessageManager.getString("label.structure"));
tabbedPane.add(initConnectionsTab(),
MessageManager.getString("label.connections"));
tabbedPane.add(initOutputTab(),
MessageManager.getString("label.output"));
tabbedPane.add(initEditingTab(),
MessageManager.getString("label.editing"));
/*
* See DasSourceBrowser for the real work of configuring this tab.
*/
dasTab.setLayout(new BorderLayout());
tabbedPane.add(dasTab, MessageManager.getString("label.das_settings"));
/*
* See WsPreferences for the real work of configuring this tab.
*/
wsTab.setLayout(new BorderLayout());
tabbedPane.add(wsTab, MessageManager.getString("label.web_services"));
/*
* Handler to validate a tab before leaving it - currently only for
* Structure.
*/
tabbedPane.addChangeListener(new ChangeListener()
{
private Component lastTab;
@Override
public void stateChanged(ChangeEvent e)
{
if (lastTab == structureTab
&& tabbedPane.getSelectedComponent() != structureTab)
{
if (!validateStructure())
{
tabbedPane.setSelectedComponent(structureTab);
return;
}
}
lastTab = tabbedPane.getSelectedComponent();
}
});
}
/**
* Initialises the Editing tabbed panel.
*
* @return
*/
private JPanel initEditingTab()
{
JPanel editingTab = new JPanel();
editingTab.setLayout(null);
autoCalculateConsCheck.setFont(LABEL_FONT);
autoCalculateConsCheck.setText(MessageManager
.getString("label.autocalculate_consensus"));
autoCalculateConsCheck.setBounds(new Rectangle(21, 52, 209, 23));
padGaps.setFont(LABEL_FONT);
padGaps.setText(MessageManager.getString("label.pad_gaps_when_editing"));
padGaps.setBounds(new Rectangle(22, 94, 168, 23));
sortByTree.setFont(LABEL_FONT);
sortByTree
.setText(MessageManager.getString("label.sort_with_new_tree"));
sortByTree
.setToolTipText(MessageManager
.getString("label.any_trees_calculated_or_loaded_alignment_automatically_sort"));
sortByTree.setBounds(new Rectangle(22, 136, 168, 23));
editingTab.add(autoCalculateConsCheck);
editingTab.add(padGaps);
editingTab.add(sortByTree);
return editingTab;
}
/**
* Initialises the Output tabbed panel.
*
* @return
*/
private JPanel initOutputTab()
{
JPanel outputTab = new JPanel();
outputTab.setLayout(null);
JLabel epsLabel = new JLabel();
epsLabel.setFont(LABEL_FONT);
epsLabel.setHorizontalAlignment(SwingConstants.RIGHT);
epsLabel.setText(MessageManager.getString("label.eps_rendering_style"));
epsLabel.setBounds(new Rectangle(9, 31, 140, 24));
epsRendering.setFont(LABEL_FONT);
epsRendering.setBounds(new Rectangle(154, 34, 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") + " ");
blcjv.setText(MessageManager.getString("label.blc") + " ");
fastajv.setText(MessageManager.getString("label.fasta") + " ");
msfjv.setText(MessageManager.getString("label.msf") + " ");
pfamjv.setText(MessageManager.getString("label.pfam") + " ");
pileupjv.setText(MessageManager.getString("label.pileup") + " ");
msfjv.setFont(LABEL_FONT);
msfjv.setHorizontalAlignment(SwingConstants.LEFT);
pirjv.setText(MessageManager.getString("label.pir") + " ");
JPanel jPanel11 = new JPanel();
jPanel11.setFont(LABEL_FONT);
TitledBorder titledBorder2 = new TitledBorder(
MessageManager.getString("label.file_output"));
jPanel11.setBorder(titledBorder2);
jPanel11.setBounds(new Rectangle(30, 72, 196, 182));
GridLayout gridLayout3 = new GridLayout();
jPanel11.setLayout(gridLayout3);
gridLayout3.setRows(8);
blcjv.setFont(LABEL_FONT);
blcjv.setHorizontalAlignment(SwingConstants.LEFT);
clustaljv.setFont(LABEL_FONT);
clustaljv.setHorizontalAlignment(SwingConstants.LEFT);
pfamjv.setFont(LABEL_FONT);
pfamjv.setHorizontalAlignment(SwingConstants.LEFT);
pileupjv.setFont(LABEL_FONT);
pileupjv.setHorizontalAlignment(SwingConstants.LEFT);
pirjv.setFont(LABEL_FONT);
pirjv.setHorizontalAlignment(SwingConstants.LEFT);
autoIdWidth.setFont(LABEL_FONT);
autoIdWidth.setText(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.addActionListener(new ActionListener()
{
@Override
public void actionPerformed(ActionEvent e)
{
autoIdWidth_actionPerformed();
}
});
userIdWidthlabel.setFont(LABEL_FONT);
userIdWidthlabel.setText(MessageManager
.getString("label.figure_id_column_width"));
userIdWidth
.setToolTipText(JvSwingUtils.wrapTooltip(true, MessageManager
.getString("label.manually_specify_width_left_column")));
userIdWidthlabel
.setToolTipText(JvSwingUtils.wrapTooltip(true, MessageManager
.getString("label.manually_specify_width_left_column")));
userIdWidthlabel.setBounds(new Rectangle(236, 120, 168, 23));
userIdWidth.setFont(JvSwingUtils.getTextAreaFont());
userIdWidth.setText("");
userIdWidth.setBounds(new Rectangle(232, 144, 84, 23));
userIdWidth.addActionListener(new ActionListener()
{
@Override
public void actionPerformed(ActionEvent e)
{
userIdWidth_actionPerformed();
}
});
modellerOutput.setFont(LABEL_FONT);
modellerOutput.setText(MessageManager
.getString("label.use_modeller_output"));
modellerOutput.setBounds(new Rectangle(228, 226, 168, 23));
embbedBioJSON.setFont(LABEL_FONT);
embbedBioJSON.setText(MessageManager.getString("label.embbed_biojson"));
embbedBioJSON.setBounds(new Rectangle(228, 200, 250, 23));
jPanel11.add(jLabel1);
jPanel11.add(blcjv);
jPanel11.add(clustaljv);
jPanel11.add(fastajv);
jPanel11.add(msfjv);
jPanel11.add(pfamjv);
jPanel11.add(pileupjv);
jPanel11.add(pirjv);
outputTab.add(autoIdWidth);
outputTab.add(userIdWidth);
outputTab.add(userIdWidthlabel);
outputTab.add(modellerOutput);
outputTab.add(embbedBioJSON);
outputTab.add(epsLabel);
outputTab.add(epsRendering);
outputTab.add(jPanel11);
return outputTab;
}
/**
* Initialises the Connections tabbed panel.
*
* @return
*/
private JPanel initConnectionsTab()
{
JPanel connectTab = new JPanel();
connectTab.setLayout(new GridBagLayout());
JLabel serverLabel = new JLabel();
serverLabel.setText(MessageManager.getString("label.address"));
serverLabel.setHorizontalAlignment(SwingConstants.RIGHT);
serverLabel.setFont(LABEL_FONT);
proxyServerTB.setFont(LABEL_FONT);
proxyPortTB.setFont(LABEL_FONT);
JLabel portLabel = new JLabel();
portLabel.setFont(LABEL_FONT);
portLabel.setHorizontalAlignment(SwingConstants.RIGHT);
portLabel.setText(MessageManager.getString("label.port"));
JLabel browserLabel = new JLabel();
browserLabel.setFont(new java.awt.Font("SansSerif", 0, 11));
browserLabel.setHorizontalAlignment(SwingConstants.TRAILING);
browserLabel.setText(MessageManager
.getString("label.default_browser_unix"));
defaultBrowser.setFont(LABEL_FONT);
defaultBrowser.setText("");
usagestats.setText(MessageManager
.getString("label.send_usage_statistics"));
usagestats.setFont(LABEL_FONT);
usagestats.setHorizontalAlignment(SwingConstants.RIGHT);
usagestats.setHorizontalTextPosition(SwingConstants.LEADING);
questionnaire.setText(MessageManager
.getString("label.check_for_questionnaires"));
questionnaire.setFont(LABEL_FONT);
questionnaire.setHorizontalAlignment(SwingConstants.RIGHT);
questionnaire.setHorizontalTextPosition(SwingConstants.LEADING);
versioncheck.setText(MessageManager
.getString("label.check_for_latest_version"));
versioncheck.setFont(LABEL_FONT);
versioncheck.setHorizontalAlignment(SwingConstants.RIGHT);
versioncheck.setHorizontalTextPosition(SwingConstants.LEADING);
JButton newLink = new JButton();
newLink.setText(MessageManager.getString("action.new"));
newLink.addActionListener(new java.awt.event.ActionListener()
{
@Override
public void actionPerformed(ActionEvent e)
{
newLink_actionPerformed(e);
}
});
JButton editLink = new JButton();
editLink.setText(MessageManager.getString("action.edit"));
editLink.addActionListener(new java.awt.event.ActionListener()
{
@Override
public void actionPerformed(ActionEvent e)
{
editLink_actionPerformed(e);
}
});
JButton deleteLink = new JButton();
deleteLink.setText(MessageManager.getString("action.delete"));
deleteLink.addActionListener(new java.awt.event.ActionListener()
{
@Override
public void actionPerformed(ActionEvent e)
{
deleteLink_actionPerformed(e);
}
});
linkURLList.addListSelectionListener(new ListSelectionListener()
{
@Override
public void valueChanged(ListSelectionEvent e)
{
int index = linkURLList.getSelectedIndex();
linkNameList.setSelectedIndex(index);
}
});
linkNameList.addListSelectionListener(new ListSelectionListener()
{
@Override
public void valueChanged(ListSelectionEvent e)
{
int index = linkNameList.getSelectedIndex();
linkURLList.setSelectedIndex(index);
}
});
JScrollPane linkScrollPane = new JScrollPane();
linkScrollPane.setBorder(null);
JPanel linkPanel = new JPanel();
linkPanel.setBorder(new TitledBorder(MessageManager
.getString("label.url_linkfrom_sequence_id")));
linkPanel.setLayout(new BorderLayout());
GridLayout gridLayout1 = new GridLayout();
JPanel editLinkButtons = new JPanel();
editLinkButtons.setLayout(gridLayout1);
gridLayout1.setRows(3);
linkNameList.setFont(LABEL_FONT);
linkNameList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
BorderLayout borderLayout3 = new BorderLayout();
JPanel linkPanel2 = new JPanel();
linkPanel2.setLayout(borderLayout3);
linkURLList.setFont(LABEL_FONT);
linkURLList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
defaultBrowser.addMouseListener(new MouseAdapter()
{
@Override
public void mouseClicked(MouseEvent e)
{
if (e.getClickCount() > 1)
{
defaultBrowser_mouseClicked(e);
}
}
});
useProxy.setFont(LABEL_FONT);
useProxy.setHorizontalAlignment(SwingConstants.RIGHT);
useProxy.setHorizontalTextPosition(SwingConstants.LEADING);
useProxy.setText(MessageManager.getString("label.use_proxy_server"));
useProxy.addActionListener(new ActionListener()
{
@Override
public void actionPerformed(ActionEvent e)
{
useProxy_actionPerformed();
}
});
linkPanel.add(editLinkButtons, BorderLayout.EAST);
editLinkButtons.add(newLink, null);
editLinkButtons.add(editLink, null);
editLinkButtons.add(deleteLink, null);
linkPanel.add(linkScrollPane, BorderLayout.CENTER);
linkScrollPane.getViewport().add(linkPanel2, null);
linkPanel2.add(linkURLList, BorderLayout.CENTER);
linkPanel2.add(linkNameList, BorderLayout.WEST);
JPanel jPanel1 = new JPanel();
TitledBorder titledBorder1 = new TitledBorder(
MessageManager.getString("label.proxy_server"));
jPanel1.setBorder(titledBorder1);
jPanel1.setLayout(new GridBagLayout());
jPanel1.add(serverLabel, new GridBagConstraints(0, 1, 1, 1, 0.0, 0.0,
GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(0,
2, 4, 0), 5, 0));
jPanel1.add(portLabel, new GridBagConstraints(2, 1, 1, 1, 0.0, 0.0,
GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(0,
0, 4, 0), 11, 6));
connectTab.add(linkPanel, new GridBagConstraints(0, 0, 2, 1, 1.0, 1.0,
GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(
16, 0, 0, 12), 359, -17));
connectTab.add(jPanel1, new GridBagConstraints(0, 2, 2, 1, 1.0, 1.0,
GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(
21, 0, 35, 12), 4, 6));
connectTab.add(browserLabel, new GridBagConstraints(0, 1, 1, 1, 0.0,
0.0, GridBagConstraints.WEST, GridBagConstraints.NONE,
new Insets(16, 0, 0, 0), 5, 1));
jPanel1.add(useProxy, new GridBagConstraints(0, 0, 2, 1, 0.0, 0.0,
GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(0,
2, 5, 185), 2, -4));
jPanel1.add(proxyPortTB, new GridBagConstraints(3, 1, 1, 1, 1.0, 0.0,
GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL,
new Insets(0, 2, 4, 2), 54, 1));
jPanel1.add(proxyServerTB, new GridBagConstraints(1, 1, 1, 1, 1.0, 0.0,
GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL,
new Insets(0, 2, 4, 0), 263, 1));
connectTab.add(defaultBrowser, new GridBagConstraints(1, 1, 1, 1, 1.0,
0.0, GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL,
new Insets(15, 0, 0, 15), 307, 1));
connectTab.add(usagestats, new GridBagConstraints(0, 4, 1, 1, 1.0, 0.0,
GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL,
new Insets(0, 2, 4, 2), 70, 1));
connectTab.add(questionnaire, new GridBagConstraints(1, 4, 1, 1, 1.0,
0.0, GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL,
new Insets(0, 2, 4, 2), 70, 1));
connectTab.add(versioncheck, new GridBagConstraints(0, 5, 1, 1, 1.0,
0.0, GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL,
new Insets(0, 2, 4, 2), 70, 1));
return connectTab;
}
/**
* Initialises the parent panel which contains the tabbed sections.
*
* @return
*/
private JPanel initOkCancelPanel()
{
JButton ok = new JButton();
ok.setText(MessageManager.getString("action.ok"));
ok.addActionListener(new ActionListener()
{
@Override
public void actionPerformed(ActionEvent e)
{
ok_actionPerformed(e);
}
});
JButton cancel = new JButton();
cancel.setText(MessageManager.getString("action.cancel"));
cancel.addActionListener(new ActionListener()
{
@Override
public void actionPerformed(ActionEvent e)
{
cancel_actionPerformed(e);
}
});
JPanel okCancelPanel = new JPanel();
okCancelPanel.add(ok);
okCancelPanel.add(cancel);
return okCancelPanel;
}
/**
* Initialises the Colours tabbed panel.
*
* @return
*/
private JPanel initColoursTab()
{
JPanel coloursTab = new JPanel();
coloursTab.setBorder(new TitledBorder(MessageManager
.getString("action.open_new_alignment")));
coloursTab.setLayout(new FlowLayout());
JLabel mincolourLabel = new JLabel();
mincolourLabel.setFont(LABEL_FONT);
mincolourLabel.setHorizontalAlignment(SwingConstants.RIGHT);
mincolourLabel.setText(MessageManager.getString("label.min_colour"));
minColour.setFont(LABEL_FONT);
minColour.setBorder(BorderFactory.createEtchedBorder());
minColour.setPreferredSize(new Dimension(40, 20));
minColour.addMouseListener(new MouseAdapter()
{
@Override
public void mousePressed(MouseEvent e)
{
minColour_actionPerformed(minColour);
}
});
JLabel maxcolourLabel = new JLabel();
maxcolourLabel.setFont(LABEL_FONT);
maxcolourLabel.setHorizontalAlignment(SwingConstants.RIGHT);
maxcolourLabel.setText(MessageManager.getString("label.max_colour"));
maxColour.setFont(LABEL_FONT);
maxColour.setBorder(BorderFactory.createEtchedBorder());
maxColour.setPreferredSize(new Dimension(40, 20));
maxColour.addMouseListener(new MouseAdapter()
{
@Override
public void mousePressed(MouseEvent e)
{
maxColour_actionPerformed(maxColour);
}
});
protColour.setFont(LABEL_FONT);
protColour.setBounds(new Rectangle(172, 225, 155, 21));
JLabel protColourLabel = new JLabel();
protColourLabel.setFont(LABEL_FONT);
protColourLabel.setHorizontalAlignment(SwingConstants.LEFT);
protColourLabel.setText(MessageManager
.getString("label.prot_alignment_colour") + " ");
JvSwingUtils.addtoLayout(coloursTab, MessageManager
.getString("label.default_colour_scheme_for_alignment"),
protColourLabel, protColour);
nucColour.setFont(LABEL_FONT);
nucColour.setBounds(new Rectangle(172, 240, 155, 21));
JLabel nucColourLabel = new JLabel();
nucColourLabel.setFont(LABEL_FONT);
nucColourLabel.setHorizontalAlignment(SwingConstants.LEFT);
nucColourLabel.setText(MessageManager
.getString("label.nuc_alignment_colour") + " ");
JvSwingUtils.addtoLayout(coloursTab, MessageManager
.getString("label.default_colour_scheme_for_alignment"),
nucColourLabel, nucColour);
JPanel annotationShding = new JPanel();
annotationShding.setBorder(new TitledBorder(MessageManager
.getString("label.annotation_shading_default")));
annotationShding.setLayout(new GridLayout(1, 2));
JvSwingUtils.addtoLayout(annotationShding, MessageManager
.getString("label.default_minimum_colour_annotation_shading"),
mincolourLabel, minColour);
JvSwingUtils.addtoLayout(annotationShding, MessageManager
.getString("label.default_maximum_colour_annotation_shading"),
maxcolourLabel, maxColour);
coloursTab.add(annotationShding); // , FlowLayout.LEFT);
return coloursTab;
}
/**
* Initialises the Structure tabbed panel.
*
* @return
*/
private JPanel initStructureTab()
{
structureTab = new JPanel();
structureTab.setBorder(new TitledBorder(MessageManager
.getString("label.structure_options")));
structureTab.setLayout(null);
final int width = 400;
final int height = 22;
final int lineSpacing = 25;
int ypos = 15;
structFromPdb.setFont(LABEL_FONT);
structFromPdb
.setText(MessageManager.getString("label.struct_from_pdb"));
structFromPdb.setBounds(new Rectangle(5, ypos, width, height));
structFromPdb.addActionListener(new ActionListener()
{
@Override
public void actionPerformed(ActionEvent e)
{
boolean selected = structFromPdb.isSelected();
// enable other options only when the first is checked
useRnaView.setEnabled(selected);
addSecondaryStructure.setEnabled(selected);
addTempFactor.setEnabled(selected);
}
});
structureTab.add(structFromPdb);
// indent checkboxes that are conditional on the first one
ypos += lineSpacing;
useRnaView.setFont(LABEL_FONT);
useRnaView.setText(MessageManager.getString("label.use_rnaview"));
useRnaView.setBounds(new Rectangle(25, ypos, width, height));
structureTab.add(useRnaView);
ypos += lineSpacing;
addSecondaryStructure.setFont(LABEL_FONT);
addSecondaryStructure.setText(MessageManager
.getString("label.autoadd_secstr"));
addSecondaryStructure.setBounds(new Rectangle(25, ypos, width, height));
structureTab.add(addSecondaryStructure);
ypos += lineSpacing;
addTempFactor.setFont(LABEL_FONT);
addTempFactor.setText(MessageManager.getString("label.autoadd_temp"));
addTempFactor.setBounds(new Rectangle(25, ypos, width, height));
structureTab.add(addTempFactor);
ypos += lineSpacing;
JLabel viewerLabel = new JLabel();
viewerLabel.setFont(LABEL_FONT);
viewerLabel.setHorizontalAlignment(SwingConstants.LEFT);
viewerLabel.setText(MessageManager.getString("label.structure_viewer"));
viewerLabel.setBounds(new Rectangle(10, ypos, 200, height));
structureTab.add(viewerLabel);
structViewer.setFont(LABEL_FONT);
structViewer.setBounds(new Rectangle(160, ypos, 120, height));
structViewer.addItem(ViewerType.JMOL.name());
structViewer.addItem(ViewerType.CHIMERA.name());
structViewer.addActionListener(new ActionListener()
{
@Override
public void actionPerformed(ActionEvent e)
{
structureViewer_actionPerformed((String) structViewer
.getSelectedItem());
}
});
structureTab.add(structViewer);
ypos += lineSpacing;
JLabel pathLabel = new JLabel();
pathLabel.setFont(new java.awt.Font("SansSerif", 0, 11));
pathLabel.setHorizontalAlignment(SwingConstants.LEFT);
pathLabel.setText(MessageManager.getString("label.chimera_path"));
final String tooltip = JvSwingUtils.wrapTooltip(true,
MessageManager.getString("label.chimera_path_tip"));
pathLabel.setToolTipText(tooltip);
pathLabel.setBounds(new Rectangle(10, ypos, 140, height));
structureTab.add(pathLabel);
chimeraPath.setFont(LABEL_FONT);
chimeraPath.setText("");
chimeraPath.setBounds(new Rectangle(160, ypos, 300, height));
chimeraPath.addMouseListener(new MouseAdapter()
{
@Override
public void mouseClicked(MouseEvent e)
{
if (e.getClickCount() == 2)
{
String chosen = openFileChooser();
if (chosen != null)
{
chimeraPath.setText(chosen);
}
}
}
});
structureTab.add(chimeraPath);
ypos += lineSpacing;
nwMapping.setFont(LABEL_FONT);
nwMapping.setText(MessageManager.getString("label.nw_mapping"));
siftsMapping.setFont(LABEL_FONT);
siftsMapping.setText(MessageManager.getString("label.sifts_mapping"));
mappingMethod.add(nwMapping);
mappingMethod.add(siftsMapping);
JPanel mappingPanel = new JPanel();
mappingPanel.setFont(LABEL_FONT);
TitledBorder mmTitledBorder = new TitledBorder(
MessageManager.getString("label.mapping_method"));
mmTitledBorder.setTitleFont(LABEL_FONT);
mappingPanel.setBorder(mmTitledBorder);
mappingPanel.setBounds(new Rectangle(10, ypos, 452, 45));
// GridLayout mappingLayout = new GridLayout();
mappingPanel.setLayout(new GridLayout());
mappingPanel.add(nwMapping);
mappingPanel.add(siftsMapping);
structureTab.add(mappingPanel);
ypos += lineSpacing;
ypos += lineSpacing;
FTSDataColumnPreferences docFieldPref = new FTSDataColumnPreferences(
PreferenceSource.PREFERENCES, PDBFTSRestClient.getInstance());
docFieldPref.setBounds(new Rectangle(10, ypos, 450, 120));
structureTab.add(docFieldPref);
return structureTab;
}
/**
* Action on choosing a structure viewer from combobox options.
*
* @param selectedItem
*/
protected void structureViewer_actionPerformed(String selectedItem)
{
}
/**
* Show a dialog for the user to choose a file. Returns the chosen path, or
* null on Cancel.
*
* @return
*/
protected String openFileChooser()
{
String choice = null;
JFileChooser chooser = new JFileChooser();
// chooser.setFileView(new JalviewFileView());
chooser.setDialogTitle(MessageManager
.getString("label.open_local_file"));
chooser.setToolTipText(MessageManager.getString("action.open"));
int value = chooser.showOpenDialog(this);
if (value == JFileChooser.APPROVE_OPTION)
{
choice = chooser.getSelectedFile().getPath();
}
return choice;
}
/**
* Validate the structure tab preferences; if invalid, set focus on this tab.
*
* @param e
*/
protected boolean validateStructure(FocusEvent e)
{
if (!validateStructure())
{
e.getComponent().requestFocusInWindow();
return false;
}
return true;
}
protected boolean validateStructure()
{
return false;
}
/**
* Initialises the Visual tabbed panel.
*
* @return
*/
private JPanel initVisualTab()
{
JPanel visualTab = new JPanel();
visualTab.setBorder(new TitledBorder(MessageManager
.getString("action.open_new_alignment")));
visualTab.setLayout(null);
fullScreen.setFont(LABEL_FONT);
fullScreen.setHorizontalAlignment(SwingConstants.RIGHT);
fullScreen.setHorizontalTextPosition(SwingConstants.LEFT);
fullScreen.setText(MessageManager.getString("label.maximize_window"));
quality.setEnabled(false);
quality.setFont(LABEL_FONT);
quality.setHorizontalAlignment(SwingConstants.RIGHT);
quality.setHorizontalTextPosition(SwingConstants.LEFT);
quality.setSelected(true);
quality.setText(MessageManager.getString("label.quality"));
conservation.setEnabled(false);
conservation.setFont(LABEL_FONT);
conservation.setHorizontalAlignment(SwingConstants.RIGHT);
conservation.setHorizontalTextPosition(SwingConstants.LEFT);
conservation.setSelected(true);
conservation.setText(MessageManager.getString("label.conservation"));
identity.setEnabled(false);
identity.setFont(LABEL_FONT);
identity.setHorizontalAlignment(SwingConstants.RIGHT);
identity.setHorizontalTextPosition(SwingConstants.LEFT);
identity.setSelected(true);
identity.setText(MessageManager.getString("label.consensus"));
JLabel showGroupbits = new JLabel();
showGroupbits.setFont(LABEL_FONT);
showGroupbits.setHorizontalAlignment(SwingConstants.RIGHT);
showGroupbits.setHorizontalTextPosition(SwingConstants.LEFT);
showGroupbits.setText(MessageManager.getString("action.show_group")
+ ":");
JLabel showConsensbits = new JLabel();
showConsensbits.setFont(LABEL_FONT);
showConsensbits.setHorizontalAlignment(SwingConstants.RIGHT);
showConsensbits.setHorizontalTextPosition(SwingConstants.LEFT);
showConsensbits.setText(MessageManager.getString("label.consensus")
+ ":");
showConsensHistogram.setEnabled(false);
showConsensHistogram.setFont(LABEL_FONT);
showConsensHistogram.setHorizontalAlignment(SwingConstants.RIGHT);
showConsensHistogram.setHorizontalTextPosition(SwingConstants.LEFT);
showConsensHistogram.setSelected(true);
showConsensHistogram.setText(MessageManager
.getString("label.histogram"));
showConsensLogo.setEnabled(false);
showConsensLogo.setFont(LABEL_FONT);
showConsensLogo.setHorizontalAlignment(SwingConstants.RIGHT);
showConsensLogo.setHorizontalTextPosition(SwingConstants.LEFT);
showConsensLogo.setSelected(true);
showConsensLogo.setText(MessageManager.getString("label.logo"));
showGroupConsensus.setEnabled(false);
showGroupConsensus.setFont(LABEL_FONT);
showGroupConsensus.setHorizontalAlignment(SwingConstants.RIGHT);
showGroupConsensus.setHorizontalTextPosition(SwingConstants.LEFT);
showGroupConsensus.setSelected(true);
showGroupConsensus.setText(MessageManager.getString("label.consensus"));
showGroupConservation.setEnabled(false);
showGroupConservation.setFont(LABEL_FONT);
showGroupConservation.setHorizontalAlignment(SwingConstants.RIGHT);
showGroupConservation.setHorizontalTextPosition(SwingConstants.LEFT);
showGroupConservation.setSelected(true);
showGroupConservation.setText(MessageManager
.getString("label.conservation"));
showNpTooltip.setEnabled(true);
showNpTooltip.setFont(LABEL_FONT);
showNpTooltip.setHorizontalAlignment(SwingConstants.RIGHT);
showNpTooltip.setHorizontalTextPosition(SwingConstants.LEFT);
showNpTooltip.setSelected(true);
showNpTooltip.setText(MessageManager
.getString("label.non_positional_features"));
showDbRefTooltip.setEnabled(true);
showDbRefTooltip.setFont(LABEL_FONT);
showDbRefTooltip.setHorizontalAlignment(SwingConstants.RIGHT);
showDbRefTooltip.setHorizontalTextPosition(SwingConstants.LEFT);
showDbRefTooltip.setSelected(true);
showDbRefTooltip.setText(MessageManager
.getString("label.database_references"));
annotations.setFont(LABEL_FONT);
annotations.setHorizontalAlignment(SwingConstants.RIGHT);
annotations.setHorizontalTextPosition(SwingConstants.LEADING);
annotations.setSelected(true);
annotations.setText(MessageManager.getString("label.show_annotations"));
annotations.setBounds(new Rectangle(169, 12, 200, 23));
annotations.addActionListener(new ActionListener()
{
@Override
public void actionPerformed(ActionEvent e)
{
annotations_actionPerformed(e);
}
});
identity.addActionListener(new ActionListener()
{
@Override
public void actionPerformed(ActionEvent e)
{
annotations_actionPerformed(e);
}
});
showGroupConsensus.addActionListener(new ActionListener()
{
@Override
public void actionPerformed(ActionEvent e)
{
annotations_actionPerformed(e);
}
});
showUnconserved.setFont(LABEL_FONT);
showUnconserved.setHorizontalAlignment(SwingConstants.RIGHT);
showUnconserved.setHorizontalTextPosition(SwingConstants.LEFT);
showUnconserved.setSelected(true);
showUnconserved.setText(MessageManager
.getString("action.show_unconserved"));
showUnconserved.addActionListener(new ActionListener()
{
@Override
public void actionPerformed(ActionEvent e)
{
showunconserved_actionPerformed(e);
}
});
// TODO these are not yet added to / action from Preferences
// JCheckBox shareSelections = new JCheckBox();
// shareSelections.setFont(verdana11);
// shareSelections.setHorizontalAlignment(SwingConstants.RIGHT);
// shareSelections.setHorizontalTextPosition(SwingConstants.LEFT);
// shareSelections.setSelected(true);
// shareSelections.setText(MessageManager
// .getString("label.share_selection_across_views"));
// JCheckBox followHighlight = new JCheckBox();
// followHighlight.setFont(verdana11);
// followHighlight.setHorizontalAlignment(SwingConstants.RIGHT);
// followHighlight.setHorizontalTextPosition(SwingConstants.LEFT);
// // showUnconserved.setBounds(new Rectangle(169, 40, 200, 23));
// followHighlight.setSelected(true);
// followHighlight.setText(MessageManager
// .getString("label.scroll_highlighted_regions"));
seqLimit.setFont(LABEL_FONT);
seqLimit.setHorizontalAlignment(SwingConstants.RIGHT);
seqLimit.setHorizontalTextPosition(SwingConstants.LEFT);
seqLimit.setText(MessageManager.getString("label.full_sequence_id"));
smoothFont.setFont(LABEL_FONT);
smoothFont.setHorizontalAlignment(SwingConstants.RIGHT);
smoothFont.setHorizontalTextPosition(SwingConstants.LEADING);
smoothFont.setText(MessageManager.getString("label.smooth_font"));
scaleProteinToCdna.setFont(LABEL_FONT);
scaleProteinToCdna.setHorizontalAlignment(SwingConstants.RIGHT);
scaleProteinToCdna.setHorizontalTextPosition(SwingConstants.LEADING);
scaleProteinToCdna.setText(MessageManager
.getString("label.scale_protein_to_cdna"));
scaleProteinToCdna.setToolTipText(MessageManager
.getString("label.scale_protein_to_cdna_tip"));
JLabel gapLabel = new JLabel();
gapLabel.setFont(LABEL_FONT);
gapLabel.setHorizontalAlignment(SwingConstants.RIGHT);
gapLabel.setText(MessageManager.getString("label.gap_symbol") + " ");
JLabel fontLabel = new JLabel();
fontLabel.setFont(LABEL_FONT);
fontLabel.setHorizontalAlignment(SwingConstants.RIGHT);
fontLabel.setText(MessageManager.getString("label.font"));
fontSizeCB.setFont(LABEL_FONT);
fontSizeCB.setBounds(new Rectangle(320, 112, 65, 23));
fontStyleCB.setFont(LABEL_FONT);
fontStyleCB.setBounds(new Rectangle(382, 112, 80, 23));
fontNameCB.setFont(LABEL_FONT);
fontNameCB.setBounds(new Rectangle(172, 112, 147, 23));
gapSymbolCB.setFont(LABEL_FONT);
gapSymbolCB.setBounds(new Rectangle(172, 215, 69, 23));
DefaultListCellRenderer dlcr = new DefaultListCellRenderer();
dlcr.setHorizontalAlignment(DefaultListCellRenderer.CENTER);
gapSymbolCB.setRenderer(dlcr);
startupCheckbox.setText(MessageManager.getString("action.open_file"));
startupCheckbox.setFont(LABEL_FONT);
startupCheckbox.setHorizontalAlignment(SwingConstants.RIGHT);
startupCheckbox.setHorizontalTextPosition(SwingConstants.LEFT);
startupCheckbox.setSelected(true);
startupFileTextfield.setFont(LABEL_FONT);
startupFileTextfield.setBounds(new Rectangle(172, 310, 330, 20));
startupFileTextfield.addMouseListener(new MouseAdapter()
{
@Override
public void mouseClicked(MouseEvent e)
{
if (e.getClickCount() > 1)
{
startupFileTextfield_mouseClicked();
}
}
});
sortby.setFont(LABEL_FONT);
sortby.setBounds(new Rectangle(172, 260, 155, 21));
JLabel sortLabel = new JLabel();
sortLabel.setFont(LABEL_FONT);
sortLabel.setHorizontalAlignment(SwingConstants.RIGHT);
sortLabel.setText(MessageManager.getString("label.sort_by"));
sortAnnBy.setFont(LABEL_FONT);
sortAnnBy.setBounds(new Rectangle(172, 285, 110, 21));
JLabel sortAnnLabel = new JLabel();
sortAnnLabel.setFont(LABEL_FONT);
sortAnnLabel.setHorizontalAlignment(SwingConstants.RIGHT);
sortAnnLabel.setText(MessageManager.getString("label.sort_ann_by"));
sortAutocalc.setFont(LABEL_FONT);
sortAutocalc.setBounds(new Rectangle(290, 285, 165, 21));
JPanel annsettingsPanel = new JPanel();
annsettingsPanel.setBounds(new Rectangle(173, 34, 320, 75));
annsettingsPanel.setLayout(new FlowLayout(FlowLayout.LEFT, 0, 0));
annsettingsPanel.setBorder(new EtchedBorder());
visualTab.add(annsettingsPanel);
Border jb = new EmptyBorder(1, 1, 4, 5);
quality.setBorder(jb);
conservation.setBorder(jb);
identity.setBorder(jb);
showConsensbits.setBorder(jb);
showGroupbits.setBorder(jb);
showGroupConsensus.setBorder(jb);
showGroupConservation.setBorder(jb);
showConsensHistogram.setBorder(jb);
showConsensLogo.setBorder(jb);
JPanel autoAnnotSettings = new JPanel();
autoAnnotSettings.setLayout(new GridLayout(3, 3));
annsettingsPanel.add(autoAnnotSettings);
autoAnnotSettings.add(quality);
autoAnnotSettings.add(conservation);
autoAnnotSettings.add(identity);
autoAnnotSettings.add(showGroupbits);
autoAnnotSettings.add(showGroupConservation);
autoAnnotSettings.add(showGroupConsensus);
autoAnnotSettings.add(showConsensbits);
autoAnnotSettings.add(showConsensHistogram);
autoAnnotSettings.add(showConsensLogo);
JPanel tooltipSettings = new JPanel();
tooltipSettings.setBorder(new TitledBorder(MessageManager
.getString("label.sequence_id_tooltip")));
tooltipSettings.setBounds(173, 140, 220, 62);
tooltipSettings.setLayout(new GridLayout(2, 1));
tooltipSettings.add(showDbRefTooltip);
tooltipSettings.add(showNpTooltip);
visualTab.add(tooltipSettings);
wrap.setFont(LABEL_FONT);
wrap.setHorizontalAlignment(SwingConstants.TRAILING);
wrap.setHorizontalTextPosition(SwingConstants.LEADING);
wrap.setText(MessageManager.getString("label.wrap_alignment"));
rightAlign.setFont(LABEL_FONT);
rightAlign.setForeground(Color.black);
rightAlign.setHorizontalAlignment(SwingConstants.RIGHT);
rightAlign.setHorizontalTextPosition(SwingConstants.LEFT);
rightAlign.setText(MessageManager.getString("label.right_align_ids"));
idItalics.setFont(LABEL_FONT_ITALIC);
idItalics.setHorizontalAlignment(SwingConstants.RIGHT);
idItalics.setHorizontalTextPosition(SwingConstants.LEADING);
idItalics.setText(MessageManager
.getString("label.sequence_name_italics"));
openoverv.setFont(LABEL_FONT);
openoverv.setActionCommand(MessageManager
.getString("label.open_overview"));
openoverv.setHorizontalAlignment(SwingConstants.RIGHT);
openoverv.setHorizontalTextPosition(SwingConstants.LEFT);
openoverv.setText(MessageManager.getString("label.open_overview"));
JPanel jPanel2 = new JPanel();
jPanel2.setBounds(new Rectangle(7, 17, 158, 310));
jPanel2.setLayout(new GridLayout(14, 1));
jPanel2.add(fullScreen);
jPanel2.add(openoverv);
jPanel2.add(seqLimit);
jPanel2.add(rightAlign);
jPanel2.add(fontLabel);
jPanel2.add(showUnconserved);
jPanel2.add(idItalics);
jPanel2.add(smoothFont);
jPanel2.add(scaleProteinToCdna);
jPanel2.add(gapLabel);
jPanel2.add(wrap);
jPanel2.add(sortLabel);
jPanel2.add(sortAnnLabel);
jPanel2.add(startupCheckbox);
visualTab.add(jPanel2);
visualTab.add(annotations);
visualTab.add(startupFileTextfield);
visualTab.add(sortby);
visualTab.add(sortAnnBy);
visualTab.add(sortAutocalc);
visualTab.add(gapSymbolCB);
visualTab.add(fontNameCB);
visualTab.add(fontSizeCB);
visualTab.add(fontStyleCB);
return visualTab;
}
protected void autoIdWidth_actionPerformed()
{
// TODO Auto-generated method stub
}
protected void userIdWidth_actionPerformed()
{
// TODO Auto-generated method stub
}
protected void maxColour_actionPerformed(JPanel panel)
{
}
protected void minColour_actionPerformed(JPanel panel)
{
}
protected void showunconserved_actionPerformed(ActionEvent e)
{
// TODO Auto-generated method stub
}
/**
* DOCUMENT ME!
*
* @param e
* DOCUMENT ME!
*/
public void ok_actionPerformed(ActionEvent e)
{
}
/**
* DOCUMENT ME!
*
* @param e
* DOCUMENT ME!
*/
public void cancel_actionPerformed(ActionEvent e)
{
}
/**
* DOCUMENT ME!
*
* @param e
* DOCUMENT ME!
*/
public void annotations_actionPerformed(ActionEvent e)
{
}
/**
* DOCUMENT ME!
*/
public void startupFileTextfield_mouseClicked()
{
}
public void newLink_actionPerformed(ActionEvent e)
{
}
public void editLink_actionPerformed(ActionEvent e)
{
}
public void deleteLink_actionPerformed(ActionEvent e)
{
}
public void defaultBrowser_mouseClicked(MouseEvent e)
{
}
public void linkURLList_keyTyped(KeyEvent e)
{
}
public void useProxy_actionPerformed()
{
proxyServerTB.setEnabled(useProxy.isSelected());
proxyPortTB.setEnabled(useProxy.isSelected());
}
}