X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fjbgui%2FGPreferences.java;h=fa45769a67a6cb2de526313784ffe78a1fe7ed65;hb=547480978230204efda55a1ec533b7b25be2a06f;hp=713a7471ffde650422b404ad4a1676ae94e2aadb;hpb=fd235cc7542d6e308e054a8a76580a6c511ae631;p=jalview.git diff --git a/src/jalview/jbgui/GPreferences.java b/src/jalview/jbgui/GPreferences.java index 713a747..fa45769 100755 --- a/src/jalview/jbgui/GPreferences.java +++ b/src/jalview/jbgui/GPreferences.java @@ -1,6 +1,6 @@ /* - * Jalview - A Sequence Alignment Editor and Viewer (Version 2.8.2) - * Copyright (C) 2014 The Jalview Authors + * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$) + * Copyright (C) $$Year-Rel$$ The Jalview Authors * * This file is part of Jalview. * @@ -20,6 +20,9 @@ */ 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; @@ -42,27 +45,31 @@ import java.awt.event.KeyEvent; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; +import javax.swing.AbstractCellEditor; 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.JTable; 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; +import javax.swing.table.TableCellEditor; +import javax.swing.table.TableCellRenderer; /** * Base class for the Preferences panel. @@ -72,7 +79,10 @@ import javax.swing.event.ListSelectionListener; */ public class GPreferences extends JPanel { - private static final Font verdana11 = JvSwingUtils.getLabelFont(); + private static final Font LABEL_FONT = JvSwingUtils.getLabelFont(); + + private static final Font LABEL_FONT_ITALIC = JvSwingUtils + .getLabelFont(false, true); /* * Visual tab components @@ -85,11 +95,13 @@ public class GPreferences extends JPanel protected JCheckBox rightAlign = new JCheckBox(); - protected JComboBox fontSizeCB = new JComboBox(); + protected JComboBox fontSizeCB = new JComboBox<>(); + + protected JComboBox fontStyleCB = new JComboBox<>(); - protected JComboBox fontStyleCB = new JComboBox(); + protected JComboBox fontNameCB = new JComboBox<>(); - protected JComboBox fontNameCB = new JComboBox(); + protected JCheckBox showOccupancy = new JCheckBox(); protected JCheckBox showUnconserved = new JCheckBox(); @@ -97,15 +109,17 @@ public class GPreferences extends JPanel protected JCheckBox smoothFont = new JCheckBox(); - protected JComboBox gapSymbolCB = new JComboBox(); + protected JCheckBox scaleProteinToCdna = new JCheckBox(); + + protected JComboBox gapSymbolCB = new JComboBox<>(); protected JCheckBox wrap = new JCheckBox(); - protected JComboBox sortby = new JComboBox(); + protected JComboBox sortby = new JComboBox<>(); - protected JComboBox sortAnnBy = new JComboBox(); + protected JComboBox sortAnnBy = new JComboBox<>(); - protected JComboBox sortAutocalc = new JComboBox(); + protected JComboBox sortAutocalc = new JComboBox<>(); protected JCheckBox startupCheckbox = new JCheckBox(); @@ -145,10 +159,15 @@ public class GPreferences extends JPanel protected JCheckBox addTempFactor = new JCheckBox(); - protected JComboBox structViewer = new JComboBox(); + 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 @@ -157,12 +176,45 @@ public class GPreferences extends JPanel protected JPanel maxColour = new JPanel(); - protected JComboBox colour = new JComboBox(); + protected JComboBox protColour = new JComboBox<>(); + + protected JComboBox nucColour = new JComboBox<>(); + + /* + * Overview tab components + */ + protected JPanel overviewTab; + + protected JPanel gapColour = new JPanel(); + + protected JPanel hiddenColour = new JPanel(); + + protected JCheckBox useLegacyGap; + + protected JCheckBox showHiddenAtStart; + + protected JLabel gapLabel; + + protected JButton resetButton; /* * Connections tab components */ - protected JList linkURLList = new JList(); + protected JTable linkUrlTable = new JTable(); + + protected JButton editLink = new JButton(); + + protected JButton deleteLink = new JButton(); + + protected JTextField filterTB = new JTextField(); + + protected JButton doReset = new JButton(); + + protected JButton userOnly = new JButton(); + + protected JLabel portLabel = new JLabel(); + + protected JLabel serverLabel = new JLabel(); protected JTextField proxyServerTB = new JTextField(); @@ -170,8 +222,6 @@ public class GPreferences extends JPanel protected JTextField defaultBrowser = new JTextField(); - protected JList linkNameList = new JList(); - protected JCheckBox useProxy = new JCheckBox(); protected JCheckBox usagestats = new JCheckBox(); @@ -183,7 +233,7 @@ public class GPreferences extends JPanel /* * Output tab components */ - protected JComboBox epsRendering = new JComboBox(); + protected JComboBox epsRendering = new JComboBox<>(); protected JLabel userIdWidthlabel = new JLabel(); @@ -207,6 +257,8 @@ public class GPreferences extends JPanel protected JCheckBox modellerOutput = new JCheckBox(); + protected JCheckBox embbedBioJSON = new JCheckBox(); + /* * Editing tab components */ @@ -259,22 +311,29 @@ public class GPreferences extends JPanel tabbedPane.add(initColoursTab(), MessageManager.getString("label.colours")); + tabbedPane.add(initOverviewTab(), + MessageManager.getString("label.overview")); + tabbedPane.add(initStructureTab(), MessageManager.getString("label.structure")); tabbedPane.add(initConnectionsTab(), MessageManager.getString("label.connections")); - tabbedPane.add(initOutputTab(), MessageManager.getString("label.output")); + tabbedPane.add(initLinksTab(), + MessageManager.getString("label.urllinks")); + + tabbedPane.add(initOutputTab(), + MessageManager.getString("label.output")); - tabbedPane.add(initEditingTab(), MessageManager.getString("label.editing")); + 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")); + tabbedPane.add(dasTab, MessageManager.getString("label.das_settings")); /* * See WsPreferences for the real work of configuring this tab. @@ -317,19 +376,19 @@ public class GPreferences extends JPanel { JPanel editingTab = new JPanel(); editingTab.setLayout(null); - autoCalculateConsCheck.setFont(verdana11); - autoCalculateConsCheck.setText(MessageManager - .getString("label.autocalculate_consensus")); + autoCalculateConsCheck.setFont(LABEL_FONT); + autoCalculateConsCheck.setText( + MessageManager.getString("label.autocalculate_consensus")); autoCalculateConsCheck.setBounds(new Rectangle(21, 52, 209, 23)); - padGaps.setFont(verdana11); - padGaps.setText(MessageManager.getString("label.pad_gaps_when_editing")); + padGaps.setFont(LABEL_FONT); + padGaps.setText( + MessageManager.getString("label.pad_gaps_when_editing")); padGaps.setBounds(new Rectangle(22, 94, 168, 23)); - sortByTree.setFont(verdana11); + 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.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); @@ -347,18 +406,18 @@ public class GPreferences extends JPanel JPanel outputTab = new JPanel(); outputTab.setLayout(null); JLabel epsLabel = new JLabel(); - epsLabel.setFont(verdana11); + 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(verdana11); + epsRendering.setFont(LABEL_FONT); epsRendering.setBounds(new Rectangle(154, 34, 187, 21)); JLabel jLabel1 = new JLabel(); - jLabel1.setFont(verdana11); + jLabel1.setFont(LABEL_FONT); jLabel1.setHorizontalAlignment(SwingConstants.CENTER); jLabel1.setText(MessageManager.getString("label.append_start_end")); - jLabel1.setFont(verdana11); - fastajv.setFont(verdana11); + jLabel1.setFont(LABEL_FONT); + fastajv.setFont(LABEL_FONT); fastajv.setHorizontalAlignment(SwingConstants.LEFT); clustaljv.setText(MessageManager.getString("label.clustal") + " "); blcjv.setText(MessageManager.getString("label.blc") + " "); @@ -366,11 +425,11 @@ public class GPreferences extends JPanel msfjv.setText(MessageManager.getString("label.msf") + " "); pfamjv.setText(MessageManager.getString("label.pfam") + " "); pileupjv.setText(MessageManager.getString("label.pileup") + " "); - msfjv.setFont(verdana11); + msfjv.setFont(LABEL_FONT); msfjv.setHorizontalAlignment(SwingConstants.LEFT); pirjv.setText(MessageManager.getString("label.pir") + " "); JPanel jPanel11 = new JPanel(); - jPanel11.setFont(verdana11); + jPanel11.setFont(LABEL_FONT); TitledBorder titledBorder2 = new TitledBorder( MessageManager.getString("label.file_output")); jPanel11.setBorder(titledBorder2); @@ -378,21 +437,21 @@ public class GPreferences extends JPanel GridLayout gridLayout3 = new GridLayout(); jPanel11.setLayout(gridLayout3); gridLayout3.setRows(8); - blcjv.setFont(verdana11); + blcjv.setFont(LABEL_FONT); blcjv.setHorizontalAlignment(SwingConstants.LEFT); - clustaljv.setFont(verdana11); + clustaljv.setFont(LABEL_FONT); clustaljv.setHorizontalAlignment(SwingConstants.LEFT); - pfamjv.setFont(verdana11); + pfamjv.setFont(LABEL_FONT); pfamjv.setHorizontalAlignment(SwingConstants.LEFT); - pileupjv.setFont(verdana11); + pileupjv.setFont(LABEL_FONT); pileupjv.setHorizontalAlignment(SwingConstants.LEFT); - pirjv.setFont(verdana11); + pirjv.setFont(LABEL_FONT); pirjv.setHorizontalAlignment(SwingConstants.LEFT); - autoIdWidth.setFont(verdana11); - autoIdWidth.setText(MessageManager - .getString("label.automatically_set_id_width")); - autoIdWidth - .setToolTipText(JvSwingUtils.wrapTooltip(true, MessageManager.getString("label.adjusts_width_generated_eps_png"))); + 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() { @@ -403,13 +462,14 @@ public class GPreferences extends JPanel autoIdWidth_actionPerformed(); } }); - userIdWidthlabel.setFont(verdana11); - 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.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(""); @@ -423,6 +483,14 @@ public class GPreferences extends JPanel 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); @@ -435,13 +503,10 @@ public class GPreferences extends JPanel outputTab.add(userIdWidth); outputTab.add(userIdWidthlabel); outputTab.add(modellerOutput); + outputTab.add(embbedBioJSON); outputTab.add(epsLabel); outputTab.add(epsRendering); outputTab.add(jPanel11); - modellerOutput.setFont(verdana11); - modellerOutput.setText(MessageManager - .getString("label.use_modeller_output")); - modellerOutput.setBounds(new Rectangle(228, 226, 168, 23)); return outputTab; } @@ -454,173 +519,352 @@ public class GPreferences extends JPanel { JPanel connectTab = new JPanel(); connectTab.setLayout(new GridBagLayout()); - JLabel serverLabel = new JLabel(); - serverLabel.setText(MessageManager.getString("label.address")); - serverLabel.setHorizontalAlignment(SwingConstants.RIGHT); - serverLabel.setFont(verdana11); - proxyServerTB.setFont(verdana11); - proxyPortTB.setFont(verdana11); - JLabel portLabel = new JLabel(); - portLabel.setFont(verdana11); - portLabel.setHorizontalAlignment(SwingConstants.RIGHT); - portLabel.setText(MessageManager.getString("label.port")); + + // Label for browser text box JLabel browserLabel = new JLabel(); - browserLabel.setFont(new java.awt.Font("SansSerif", 0, 11)); + browserLabel.setFont(LABEL_FONT); browserLabel.setHorizontalAlignment(SwingConstants.TRAILING); - browserLabel.setText(MessageManager - .getString("label.default_browser_unix")); - defaultBrowser.setFont(verdana11); + browserLabel.setText( + MessageManager.getString("label.default_browser_unix")); + defaultBrowser.setFont(LABEL_FONT); defaultBrowser.setText(""); - usagestats.setText(MessageManager - .getString("label.send_usage_statistics")); - usagestats.setFont(verdana11); - usagestats.setHorizontalAlignment(SwingConstants.RIGHT); - usagestats.setHorizontalTextPosition(SwingConstants.LEADING); - questionnaire.setText(MessageManager - .getString("label.check_for_questionnaires")); - questionnaire.setFont(verdana11); - questionnaire.setHorizontalAlignment(SwingConstants.RIGHT); - questionnaire.setHorizontalTextPosition(SwingConstants.LEADING); - versioncheck.setText(MessageManager - .getString("label.check_for_latest_version")); - versioncheck.setFont(verdana11); - versioncheck.setHorizontalAlignment(SwingConstants.RIGHT); - versioncheck.setHorizontalTextPosition(SwingConstants.LEADING); + + defaultBrowser.addMouseListener(new MouseAdapter() + { + @Override + public void mouseClicked(MouseEvent e) + { + if (e.getClickCount() > 1) + { + defaultBrowser_mouseClicked(e); + } + } + }); + + JPanel proxyPanel = initConnTabProxyPanel(); + initConnTabCheckboxes(); + + // Add default Browser text box + connectTab.add(browserLabel, + new GridBagConstraints(0, 0, 1, 1, 0.0, 0.0, + GridBagConstraints.WEST, GridBagConstraints.NONE, + new Insets(10, 0, 5, 5), 5, 1)); + defaultBrowser.setFont(LABEL_FONT); + defaultBrowser.setText(""); + + connectTab.add(defaultBrowser, new GridBagConstraints(1, 0, 1, 1, 1.0, + 0.0, GridBagConstraints.CENTER, GridBagConstraints.HORIZONTAL, + new Insets(10, 0, 5, 10), 30, 1)); + + // Add proxy server panel + connectTab.add(proxyPanel, new GridBagConstraints(0, 1, 2, 1, 1.0, 0.0, + GridBagConstraints.CENTER, GridBagConstraints.HORIZONTAL, + new Insets(10, 0, 5, 12), 4, 10)); + + // Add usage stats, version check and questionnaire checkboxes + connectTab.add(usagestats, + new GridBagConstraints(0, 2, 1, 1, 1.0, 0.0, + GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, + new Insets(0, 2, 5, 5), 70, 1)); + connectTab.add(questionnaire, + new GridBagConstraints(1, 2, 1, 1, 1.0, 0.0, + GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, + new Insets(0, 2, 5, 10), 70, 1)); + connectTab.add(versioncheck, + new GridBagConstraints(0, 3, 1, 1, 1.0, 0.0, + GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, + new Insets(0, 2, 5, 5), 70, 1)); + + // Add padding so the panel doesn't look ridiculous + JPanel spacePanel = new JPanel(); + connectTab.add(spacePanel, + new GridBagConstraints(0, 4, 1, 1, 1.0, 1.0, + GridBagConstraints.WEST, GridBagConstraints.BOTH, + new Insets(0, 0, 0, 5), 70, 1)); + + return connectTab; + } + + /** + * Initialises the Links tabbed panel. + * + * @return + */ + private JPanel initLinksTab() + { + JPanel linkTab = new JPanel(); + linkTab.setLayout(new GridBagLayout()); + + // Set up table for Url links + linkUrlTable.setFillsViewportHeight(true); + linkUrlTable.setAutoResizeMode(JTable.AUTO_RESIZE_ALL_COLUMNS); + linkUrlTable.setAutoCreateRowSorter(true); + linkUrlTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); + + // adjust row height so radio buttons actually fit + // don't do this in the renderer, it causes the awt thread to activate + // constantly + JRadioButton temp = new JRadioButton(); + linkUrlTable.setRowHeight(temp.getMinimumSize().height); + + // Table in scrollpane so that the table is given a scrollbar + JScrollPane linkScrollPane = new JScrollPane(linkUrlTable); + linkScrollPane.setBorder(null); + + // Panel for links functionality + JPanel linkPanel = new JPanel(new GridBagLayout()); + linkPanel.setBorder(new TitledBorder( + MessageManager.getString("label.url_linkfrom_sequence_id"))); + + // Put the Url links panel together + + // Buttons go at top right, resizing only resizes the blank space vertically + JPanel buttonPanel = initLinkTabUrlButtons(); + GridBagConstraints linkConstraints1 = new GridBagConstraints(); + linkConstraints1.insets = new Insets(0, 0, 5, 0); + linkConstraints1.gridx = 0; + linkConstraints1.gridy = 0; + linkConstraints1.weightx = 1.0; + linkConstraints1.fill = GridBagConstraints.HORIZONTAL; + linkTab.add(buttonPanel, linkConstraints1); + + // Links table goes at top left, resizing resizes the table + GridBagConstraints linkConstraints2 = new GridBagConstraints(); + linkConstraints2.insets = new Insets(0, 0, 5, 5); + linkConstraints2.gridx = 0; + linkConstraints2.gridy = 1; + linkConstraints2.weightx = 1.0; + linkConstraints2.weighty = 1.0; + linkConstraints2.fill = GridBagConstraints.BOTH; + linkTab.add(linkScrollPane, linkConstraints2); + + // Filter box and buttons goes at bottom left, resizing resizes the text box + JPanel filterPanel = initLinkTabFilterPanel(); + GridBagConstraints linkConstraints3 = new GridBagConstraints(); + linkConstraints3.insets = new Insets(0, 0, 0, 5); + linkConstraints3.gridx = 0; + linkConstraints3.gridy = 2; + linkConstraints3.weightx = 1.0; + linkConstraints3.fill = GridBagConstraints.HORIZONTAL; + linkTab.add(filterPanel, linkConstraints3); + + return linkTab; + } + + private JPanel initLinkTabFilterPanel() + { + // Filter textbox and reset button + JLabel filterLabel = new JLabel( + MessageManager.getString("label.filter")); + filterLabel.setFont(LABEL_FONT); + filterLabel.setHorizontalAlignment(SwingConstants.RIGHT); + filterLabel.setHorizontalTextPosition(SwingConstants.LEADING); + + filterTB.setFont(LABEL_FONT); + filterTB.setText(""); + + doReset.setText(MessageManager.getString("action.showall")); + userOnly.setText(MessageManager.getString("action.customfilter")); + + // Panel for filter functionality + JPanel filterPanel = new JPanel(new GridBagLayout()); + filterPanel.setBorder(new TitledBorder("Filter")); + GridBagConstraints gbc = new GridBagConstraints(); + gbc.gridx = 0; + gbc.gridy = 0; + gbc.fill = GridBagConstraints.NONE; + gbc.anchor = GridBagConstraints.WEST; + + filterPanel.add(filterLabel, gbc); + + GridBagConstraints gbc1 = new GridBagConstraints(); + gbc1.gridx = 1; + gbc1.gridwidth = 2; + gbc1.fill = GridBagConstraints.HORIZONTAL; + gbc1.anchor = GridBagConstraints.WEST; + gbc1.weightx = 1.0; + filterPanel.add(filterTB, gbc1); + + GridBagConstraints gbc2 = new GridBagConstraints(); + gbc2.gridx = 3; + gbc2.fill = GridBagConstraints.NONE; + gbc2.anchor = GridBagConstraints.WEST; + filterPanel.add(doReset, gbc2); + + GridBagConstraints gbc3 = new GridBagConstraints(); + gbc3.gridx = 4; + gbc3.fill = GridBagConstraints.NONE; + gbc3.anchor = GridBagConstraints.WEST; + filterPanel.add(userOnly, gbc3); + + return filterPanel; + } + + private JPanel initLinkTabUrlButtons() + { + // Buttons for new / edit / delete Url links JButton newLink = new JButton(); newLink.setText(MessageManager.getString("action.new")); + + editLink.setText(MessageManager.getString("action.edit")); + + deleteLink.setText(MessageManager.getString("action.delete")); + + // no current selection, so initially disable delete/edit buttons + editLink.setEnabled(false); + deleteLink.setEnabled(false); + 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() - { - public void valueChanged(ListSelectionEvent e) - { - int index = linkURLList.getSelectedIndex(); - linkNameList.setSelectedIndex(index); - } - }); + JPanel buttonPanel = new JPanel(new GridBagLayout()); + buttonPanel.setBorder(new TitledBorder("Edit links")); + GridBagConstraints gbc = new GridBagConstraints(); + gbc.gridx = 0; + gbc.gridy = 0; + gbc.fill = GridBagConstraints.NONE; + buttonPanel.add(newLink, gbc); + + GridBagConstraints gbc1 = new GridBagConstraints(); + gbc1.gridx = 1; + gbc1.gridy = 0; + gbc1.fill = GridBagConstraints.NONE; + buttonPanel.add(editLink, gbc1); + + GridBagConstraints gbc2 = new GridBagConstraints(); + gbc2.gridx = 2; + gbc2.gridy = 0; + gbc2.fill = GridBagConstraints.NONE; + buttonPanel.add(deleteLink, gbc2); + + GridBagConstraints gbc3 = new GridBagConstraints(); + gbc3.gridx = 3; + gbc3.gridy = 0; + gbc3.fill = GridBagConstraints.HORIZONTAL; + gbc3.weightx = 1.0; + JPanel spacePanel = new JPanel(); + spacePanel.setBorder(null); + buttonPanel.add(spacePanel, gbc3); + + return buttonPanel; + } - linkNameList.addListSelectionListener(new ListSelectionListener() - { - public void valueChanged(ListSelectionEvent e) - { - int index = linkNameList.getSelectedIndex(); - linkURLList.setSelectedIndex(index); - } - }); + /** + * Initialises the proxy server panel in the Connections tab + * + * @return the proxy server panel + */ + private JPanel initConnTabProxyPanel() + { + // Label for server text box + serverLabel.setText(MessageManager.getString("label.address")); + serverLabel.setHorizontalAlignment(SwingConstants.RIGHT); + serverLabel.setFont(LABEL_FONT); - 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(verdana11); - linkNameList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); - BorderLayout borderLayout3 = new BorderLayout(); - JPanel linkPanel2 = new JPanel(); - linkPanel2.setLayout(borderLayout3); - linkURLList.setFont(verdana11); - linkURLList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); + // Proxy server and port text boxes + proxyServerTB.setFont(LABEL_FONT); + proxyPortTB.setFont(LABEL_FONT); - defaultBrowser.addMouseListener(new MouseAdapter() - { - public void mouseClicked(MouseEvent e) - { - if (e.getClickCount() > 1) - { - defaultBrowser_mouseClicked(e); - } - } - }); - useProxy.setFont(verdana11); + // 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() { + @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(); + + // Make proxy server panel + JPanel proxyPanel = 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; + proxyPanel.setBorder(titledBorder1); + 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)); + + return proxyPanel; + } + + /** + * Initialises the checkboxes in the Connections tab + */ + private void initConnTabCheckboxes() + { + // Usage stats checkbox label + usagestats.setText( + MessageManager.getString("label.send_usage_statistics")); + usagestats.setFont(LABEL_FONT); + usagestats.setHorizontalAlignment(SwingConstants.RIGHT); + usagestats.setHorizontalTextPosition(SwingConstants.LEADING); + + // Questionnaire checkbox label + questionnaire.setText( + MessageManager.getString("label.check_for_questionnaires")); + questionnaire.setFont(LABEL_FONT); + questionnaire.setHorizontalAlignment(SwingConstants.RIGHT); + questionnaire.setHorizontalTextPosition(SwingConstants.LEADING); + + // Check for latest version checkbox label + versioncheck.setText( + MessageManager.getString("label.check_for_latest_version")); + versioncheck.setFont(LABEL_FONT); + versioncheck.setHorizontalAlignment(SwingConstants.RIGHT); + versioncheck.setHorizontalTextPosition(SwingConstants.LEADING); } /** @@ -634,6 +878,7 @@ public class GPreferences extends JPanel ok.setText(MessageManager.getString("action.ok")); ok.addActionListener(new ActionListener() { + @Override public void actionPerformed(ActionEvent e) { ok_actionPerformed(e); @@ -643,6 +888,7 @@ public class GPreferences extends JPanel cancel.setText(MessageManager.getString("action.cancel")); cancel.addActionListener(new ActionListener() { + @Override public void actionPerformed(ActionEvent e) { cancel_actionPerformed(e); @@ -662,62 +908,222 @@ public class GPreferences extends JPanel private JPanel initColoursTab() { JPanel coloursTab = new JPanel(); - coloursTab.setBorder(new TitledBorder(MessageManager - .getString("action.open_new_alignment"))); + coloursTab.setBorder(new TitledBorder( + MessageManager.getString("action.open_new_alignment"))); coloursTab.setLayout(new FlowLayout()); JLabel mincolourLabel = new JLabel(); - mincolourLabel.setFont(verdana11); + mincolourLabel.setFont(LABEL_FONT); mincolourLabel.setHorizontalAlignment(SwingConstants.RIGHT); mincolourLabel.setText(MessageManager.getString("label.min_colour")); - minColour.setFont(verdana11); + 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(verdana11); + maxcolourLabel.setFont(LABEL_FONT); maxcolourLabel.setHorizontalAlignment(SwingConstants.RIGHT); maxcolourLabel.setText(MessageManager.getString("label.max_colour")); - maxColour.setFont(verdana11); + 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); } }); - colour.setFont(verdana11); - colour.setBounds(new Rectangle(172, 225, 155, 21)); - JLabel colourLabel = new JLabel(); - colourLabel.setFont(verdana11); - colourLabel.setHorizontalAlignment(SwingConstants.RIGHT); - colourLabel.setText(MessageManager.getString("label.alignment_colour") - + " "); - JvSwingUtils.addtoLayout(coloursTab, MessageManager - .getString("label.default_colour_scheme_for_alignment"), - colourLabel, colour); + + 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.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"), + JvSwingUtils.addtoLayout(annotationShding, + MessageManager.getString( + "label.default_minimum_colour_annotation_shading"), mincolourLabel, minColour); - JvSwingUtils.addtoLayout(annotationShding, MessageManager - .getString("label.default_maximum_colour_annotation_shading"), + JvSwingUtils.addtoLayout(annotationShding, + MessageManager.getString( + "label.default_maximum_colour_annotation_shading"), maxcolourLabel, maxColour); coloursTab.add(annotationShding); // , FlowLayout.LEFT); return coloursTab; } /** + * Initialises the Overview tabbed panel. + * + * @return + */ + private JPanel initOverviewTab() + { + JPanel overviewPanel = new JPanel(); + overviewPanel.setBorder(new TitledBorder( + MessageManager.getString("label.overview_settings"))); + + gapColour.setFont(LABEL_FONT); + // fixing the border colours stops apparent colour bleed from the panel + gapColour.setBorder( + BorderFactory.createEtchedBorder(Color.white, Color.lightGray)); + gapColour.setPreferredSize(new Dimension(40, 20)); + gapColour.addMouseListener(new MouseAdapter() + { + @Override + public void mousePressed(MouseEvent e) + { + gapColour_actionPerformed(gapColour); + } + }); + + hiddenColour.setFont(LABEL_FONT); + // fixing the border colours stops apparent colour bleed from the panel + hiddenColour.setBorder( + BorderFactory.createEtchedBorder(Color.white, Color.lightGray)); + hiddenColour.setPreferredSize(new Dimension(40, 20)); + hiddenColour.addMouseListener(new MouseAdapter() + { + @Override + public void mousePressed(MouseEvent e) + { + hiddenColour_actionPerformed(hiddenColour); + } + }); + + useLegacyGap = new JCheckBox( + MessageManager.getString("label.ov_legacy_gap")); + useLegacyGap.setFont(LABEL_FONT); + useLegacyGap.setHorizontalAlignment(SwingConstants.LEFT); + gapLabel = new JLabel( + MessageManager.getString("label.gap_colour")); + gapLabel.setFont(LABEL_FONT); + gapLabel.setHorizontalAlignment(SwingConstants.LEFT); + showHiddenAtStart = new JCheckBox( + MessageManager.getString("label.ov_show_hide_default")); + showHiddenAtStart.setFont(LABEL_FONT); + showHiddenAtStart.setHorizontalAlignment(SwingConstants.LEFT); + JLabel hiddenLabel = new JLabel( + MessageManager.getString("label.hidden_colour")); + hiddenLabel.setFont(LABEL_FONT); + hiddenLabel.setHorizontalAlignment(SwingConstants.LEFT); + + useLegacyGap.addActionListener(new ActionListener() + { + @Override + public void actionPerformed(ActionEvent e) + { + useLegacyGaps_actionPerformed(e); + } + }); + + overviewPanel.setLayout(new GridBagLayout()); + GridBagConstraints c1 = new GridBagConstraints(); + + c1.fill = GridBagConstraints.HORIZONTAL; + c1.gridx = 0; + c1.gridy = 0; + c1.weightx = 1; + c1.ipady = 20; + c1.anchor = GridBagConstraints.FIRST_LINE_START; + overviewPanel.add(useLegacyGap, c1); + + GridBagConstraints c2 = new GridBagConstraints(); + c2.fill = GridBagConstraints.HORIZONTAL; + c2.gridx = 1; + c2.gridy = 0; + c2.insets = new Insets(0, 15, 0, 10); + overviewPanel.add(gapLabel, c2); + + GridBagConstraints c3 = new GridBagConstraints(); + c3.fill = GridBagConstraints.HORIZONTAL; + c3.gridx = 2; + c3.gridy = 0; + c3.insets = new Insets(0, 0, 0, 15); + overviewPanel.add(gapColour, c3); + + GridBagConstraints c4 = new GridBagConstraints(); + c4.fill = GridBagConstraints.HORIZONTAL; + c4.gridx = 0; + c4.gridy = 1; + c4.weightx = 1; + overviewPanel.add(showHiddenAtStart, c4); + + GridBagConstraints c5 = new GridBagConstraints(); + c5.fill = GridBagConstraints.HORIZONTAL; + c5.gridx = 1; + c5.gridy = 1; + c5.insets = new Insets(0, 15, 0, 10); + overviewPanel.add(hiddenLabel, c5); + + GridBagConstraints c6 = new GridBagConstraints(); + c6.fill = GridBagConstraints.HORIZONTAL; + c6.gridx = 2; + c6.gridy = 1; + c6.insets = new Insets(0, 0, 0, 15); + overviewPanel.add(hiddenColour, c6); + + resetButton = new JButton( + MessageManager.getString("label.reset_to_defaults")); + + resetButton.addActionListener(new ActionListener() + { + @Override + public void actionPerformed(ActionEvent e) + { + resetOvDefaults_actionPerformed(e); + } + }); + + GridBagConstraints c7 = new GridBagConstraints(); + c7.fill = GridBagConstraints.NONE; + c7.gridx = 0; + c7.gridy = 2; + c7.insets = new Insets(10, 0, 0, 0); + c7.anchor = GridBagConstraints.WEST; + overviewPanel.add(resetButton, c7); + + // Add padding so the panel doesn't look ridiculous + JPanel spacePanel = new JPanel(); + overviewPanel.add(spacePanel, + new GridBagConstraints(0, 3, 1, 1, 1.0, 1.0, + GridBagConstraints.WEST, GridBagConstraints.BOTH, + new Insets(0, 0, 0, 5), 0, 0)); + + return overviewPanel; + } + + /** * Initialises the Structure tabbed panel. * * @return @@ -726,16 +1132,17 @@ public class GPreferences extends JPanel { structureTab = new JPanel(); - structureTab.setBorder(new TitledBorder(MessageManager - .getString("label.structure_options"))); + 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 = 30; + int ypos = 15; - structFromPdb.setFont(verdana11); - structFromPdb.setText(MessageManager.getString("label.struct_from_pdb")); + structFromPdb.setFont(LABEL_FONT); + structFromPdb + .setText(MessageManager.getString("label.struct_from_pdb")); structFromPdb.setBounds(new Rectangle(5, ypos, width, height)); structFromPdb.addActionListener(new ActionListener() { @@ -753,33 +1160,33 @@ public class GPreferences extends JPanel // indent checkboxes that are conditional on the first one ypos += lineSpacing; - useRnaView.setFont(verdana11); + 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(verdana11); - addSecondaryStructure.setText(MessageManager - .getString("label.autoadd_secstr")); + 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(verdana11); + 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(verdana11); + 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(verdana11); + structViewer.setFont(LABEL_FONT); structViewer.setBounds(new Rectangle(160, ypos, 120, height)); structViewer.addItem(ViewerType.JMOL.name()); structViewer.addItem(ViewerType.CHIMERA.name()); @@ -788,8 +1195,8 @@ public class GPreferences extends JPanel @Override public void actionPerformed(ActionEvent e) { - structureViewer_actionPerformed((String) structViewer - .getSelectedItem()); + structureViewer_actionPerformed( + (String) structViewer.getSelectedItem()); } }); structureTab.add(structViewer); @@ -805,7 +1212,7 @@ public class GPreferences extends JPanel pathLabel.setBounds(new Rectangle(10, ypos, 140, height)); structureTab.add(pathLabel); - chimeraPath.setFont(verdana11); + chimeraPath.setFont(LABEL_FONT); chimeraPath.setText(""); chimeraPath.setBounds(new Rectangle(160, ypos, 300, height)); chimeraPath.addMouseListener(new MouseAdapter() @@ -826,21 +1233,35 @@ public class GPreferences extends JPanel structureTab.add(chimeraPath); ypos += lineSpacing; - // scrl_pdbDocFieldConfig.setPreferredSize(new Dimension(450, 100)); - // scrl_pdbDocFieldConfig - // .setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER); - // scrl_pdbDocFieldConfig.setBounds(); - PDBDocFieldPreferences docFieldPref = new PDBDocFieldPreferences( - new Rectangle(10, ypos + 5, 450, 120)); - structureTab.add(docFieldPref); - - + 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. * @@ -862,8 +1283,8 @@ public class GPreferences extends JPanel JFileChooser chooser = new JFileChooser(); // chooser.setFileView(new JalviewFileView()); - chooser.setDialogTitle(MessageManager - .getString("label.open_local_file")); + chooser.setDialogTitle( + MessageManager.getString("label.open_local_file")); chooser.setToolTipText(MessageManager.getString("action.open")); int value = chooser.showOpenDialog(this); @@ -903,91 +1324,99 @@ public class GPreferences extends JPanel private JPanel initVisualTab() { JPanel visualTab = new JPanel(); - visualTab.setBorder(new TitledBorder(MessageManager - .getString("action.open_new_alignment"))); + visualTab.setBorder(new TitledBorder( + MessageManager.getString("action.open_new_alignment"))); visualTab.setLayout(null); - fullScreen.setFont(verdana11); + fullScreen.setFont(LABEL_FONT); fullScreen.setHorizontalAlignment(SwingConstants.RIGHT); fullScreen.setHorizontalTextPosition(SwingConstants.LEFT); fullScreen.setText(MessageManager.getString("label.maximize_window")); quality.setEnabled(false); - quality.setFont(verdana11); + 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(verdana11); + 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(verdana11); + identity.setFont(LABEL_FONT); identity.setHorizontalAlignment(SwingConstants.RIGHT); identity.setHorizontalTextPosition(SwingConstants.LEFT); identity.setSelected(true); identity.setText(MessageManager.getString("label.consensus")); + showOccupancy.setFont(LABEL_FONT); + showOccupancy.setEnabled(false); + showOccupancy.setHorizontalAlignment(SwingConstants.RIGHT); + showOccupancy.setHorizontalTextPosition(SwingConstants.LEFT); + showOccupancy.setSelected(true); + showOccupancy.setText(MessageManager.getString("label.occupancy")); + JLabel showGroupbits = new JLabel(); - showGroupbits.setFont(verdana11); + showGroupbits.setFont(LABEL_FONT); showGroupbits.setHorizontalAlignment(SwingConstants.RIGHT); showGroupbits.setHorizontalTextPosition(SwingConstants.LEFT); - showGroupbits.setText(MessageManager.getString("action.show_group") - + ":"); + showGroupbits + .setText(MessageManager.getString("action.show_group") + ":"); JLabel showConsensbits = new JLabel(); - showConsensbits.setFont(verdana11); + showConsensbits.setFont(LABEL_FONT); showConsensbits.setHorizontalAlignment(SwingConstants.RIGHT); showConsensbits.setHorizontalTextPosition(SwingConstants.LEFT); - showConsensbits.setText(MessageManager.getString("label.consensus") - + ":"); + showConsensbits + .setText(MessageManager.getString("label.consensus") + ":"); showConsensHistogram.setEnabled(false); - showConsensHistogram.setFont(verdana11); + showConsensHistogram.setFont(LABEL_FONT); showConsensHistogram.setHorizontalAlignment(SwingConstants.RIGHT); showConsensHistogram.setHorizontalTextPosition(SwingConstants.LEFT); showConsensHistogram.setSelected(true); - showConsensHistogram.setText(MessageManager - .getString("label.histogram")); + showConsensHistogram + .setText(MessageManager.getString("label.histogram")); showConsensLogo.setEnabled(false); - showConsensLogo.setFont(verdana11); + 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(verdana11); + 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(verdana11); + showGroupConservation.setFont(LABEL_FONT); showGroupConservation.setHorizontalAlignment(SwingConstants.RIGHT); showGroupConservation.setHorizontalTextPosition(SwingConstants.LEFT); showGroupConservation.setSelected(true); - showGroupConservation.setText(MessageManager - .getString("label.conservation")); + showGroupConservation + .setText(MessageManager.getString("label.conservation")); showNpTooltip.setEnabled(true); - showNpTooltip.setFont(verdana11); + showNpTooltip.setFont(LABEL_FONT); showNpTooltip.setHorizontalAlignment(SwingConstants.RIGHT); showNpTooltip.setHorizontalTextPosition(SwingConstants.LEFT); showNpTooltip.setSelected(true); - showNpTooltip.setText(MessageManager - .getString("label.non_positional_features")); + showNpTooltip.setText( + MessageManager.getString("label.non_positional_features")); showDbRefTooltip.setEnabled(true); - showDbRefTooltip.setFont(verdana11); + showDbRefTooltip.setFont(LABEL_FONT); showDbRefTooltip.setHorizontalAlignment(SwingConstants.RIGHT); showDbRefTooltip.setHorizontalTextPosition(SwingConstants.LEFT); showDbRefTooltip.setSelected(true); - showDbRefTooltip.setText(MessageManager - .getString("label.database_references")); - annotations.setFont(verdana11); + showDbRefTooltip + .setText(MessageManager.getString("label.database_references")); + annotations.setFont(LABEL_FONT); annotations.setHorizontalAlignment(SwingConstants.RIGHT); - annotations.setHorizontalTextPosition(SwingConstants.LEADING); + annotations.setHorizontalTextPosition(SwingConstants.LEFT); annotations.setSelected(true); annotations.setText(MessageManager.getString("label.show_annotations")); - annotations.setBounds(new Rectangle(169, 12, 200, 23)); + // annotations.setBounds(new Rectangle(169, 12, 200, 23)); annotations.addActionListener(new ActionListener() { + @Override public void actionPerformed(ActionEvent e) { annotations_actionPerformed(e); @@ -995,6 +1424,7 @@ public class GPreferences extends JPanel }); identity.addActionListener(new ActionListener() { + @Override public void actionPerformed(ActionEvent e) { annotations_actionPerformed(e); @@ -1002,19 +1432,21 @@ public class GPreferences extends JPanel }); showGroupConsensus.addActionListener(new ActionListener() { + @Override public void actionPerformed(ActionEvent e) { annotations_actionPerformed(e); } }); - showUnconserved.setFont(verdana11); + showUnconserved.setFont(LABEL_FONT); showUnconserved.setHorizontalAlignment(SwingConstants.RIGHT); showUnconserved.setHorizontalTextPosition(SwingConstants.LEFT); showUnconserved.setSelected(true); - showUnconserved.setText(MessageManager - .getString("action.show_unconserved")); + showUnconserved + .setText(MessageManager.getString("action.show_unconserved")); showUnconserved.addActionListener(new ActionListener() { + @Override public void actionPerformed(ActionEvent e) { showunconserved_actionPerformed(e); @@ -1038,43 +1470,51 @@ public class GPreferences extends JPanel // followHighlight.setText(MessageManager // .getString("label.scroll_highlighted_regions")); - seqLimit.setFont(verdana11); + seqLimit.setFont(LABEL_FONT); seqLimit.setHorizontalAlignment(SwingConstants.RIGHT); seqLimit.setHorizontalTextPosition(SwingConstants.LEFT); seqLimit.setText(MessageManager.getString("label.full_sequence_id")); - smoothFont.setFont(verdana11); + 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(verdana11); + gapLabel.setFont(LABEL_FONT); gapLabel.setHorizontalAlignment(SwingConstants.RIGHT); gapLabel.setText(MessageManager.getString("label.gap_symbol") + " "); JLabel fontLabel = new JLabel(); - fontLabel.setFont(verdana11); + fontLabel.setFont(LABEL_FONT); fontLabel.setHorizontalAlignment(SwingConstants.RIGHT); fontLabel.setText(MessageManager.getString("label.font")); - fontSizeCB.setFont(verdana11); - fontSizeCB.setBounds(new Rectangle(320, 104, 65, 23)); - fontStyleCB.setFont(verdana11); - fontStyleCB.setBounds(new Rectangle(382, 104, 80, 23)); - fontNameCB.setFont(verdana11); - fontNameCB.setBounds(new Rectangle(172, 104, 147, 23)); - gapSymbolCB.setFont(verdana11); - gapSymbolCB.setBounds(new Rectangle(172, 196, 69, 23)); + 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(verdana11); + startupCheckbox.setFont(LABEL_FONT); startupCheckbox.setHorizontalAlignment(SwingConstants.RIGHT); startupCheckbox.setHorizontalTextPosition(SwingConstants.LEFT); startupCheckbox.setSelected(true); - startupFileTextfield.setFont(verdana11); - startupFileTextfield.setBounds(new Rectangle(172, 290, 270, 20)); + 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) @@ -1083,35 +1523,30 @@ public class GPreferences extends JPanel } } }); - - sortby.setFont(verdana11); - sortby.setBounds(new Rectangle(172, 240, 155, 21)); + + sortby.setFont(LABEL_FONT); + sortby.setBounds(new Rectangle(172, 260, 155, 21)); JLabel sortLabel = new JLabel(); - sortLabel.setFont(verdana11); + sortLabel.setFont(LABEL_FONT); sortLabel.setHorizontalAlignment(SwingConstants.RIGHT); sortLabel.setText(MessageManager.getString("label.sort_by")); - sortAnnBy.setFont(verdana11); - sortAnnBy.setBounds(new Rectangle(172, 265, 110, 21)); + sortAnnBy.setFont(LABEL_FONT); + sortAnnBy.setBounds(new Rectangle(172, 285, 110, 21)); JLabel sortAnnLabel = new JLabel(); - sortAnnLabel.setFont(verdana11); + sortAnnLabel.setFont(LABEL_FONT); sortAnnLabel.setHorizontalAlignment(SwingConstants.RIGHT); sortAnnLabel.setText(MessageManager.getString("label.sort_ann_by")); - sortAutocalc.setFont(verdana11); - sortAutocalc.setBounds(new Rectangle(290, 265, 165, 21)); + sortAutocalc.setFont(LABEL_FONT); + sortAutocalc.setBounds(new Rectangle(290, 285, 165, 21)); + JPanel annsettingsPanel = new JPanel(); - annsettingsPanel.setBounds(new Rectangle(173, 34, 300, 61)); + annsettingsPanel.setBounds(new Rectangle(173, 13, 320, 96)); annsettingsPanel.setLayout(new FlowLayout(FlowLayout.LEFT, 0, 0)); - JPanel autoAnnotSettings1 = new JPanel(); - autoAnnotSettings1.setLayout(new GridLayout(3, 1, 0, 0)); - annsettingsPanel.add(autoAnnotSettings1); - JPanel autoAnnotSettings2 = new JPanel(); - autoAnnotSettings2.setLayout(new GridLayout(3, 1, 0, 0)); - annsettingsPanel.add(autoAnnotSettings2); - JPanel autoAnnotSettings3 = new JPanel(); - autoAnnotSettings3.setLayout(new GridLayout(3, 1, 0, 0)); - annsettingsPanel.add(autoAnnotSettings3); + annsettingsPanel.setBorder(new EtchedBorder()); visualTab.add(annsettingsPanel); Border jb = new EmptyBorder(1, 1, 4, 5); + annotations.setBorder(jb); + showOccupancy.setBorder(jb); quality.setBorder(jb); conservation.setBorder(jb); identity.setBorder(jb); @@ -1122,50 +1557,58 @@ public class GPreferences extends JPanel showConsensHistogram.setBorder(jb); showConsensLogo.setBorder(jb); - autoAnnotSettings2.add(conservation); - autoAnnotSettings1.add(quality); - autoAnnotSettings3.add(identity); - autoAnnotSettings1.add(showGroupbits); - autoAnnotSettings3.add(showGroupConsensus); - autoAnnotSettings2.add(showGroupConservation); - autoAnnotSettings1.add(showConsensbits); - autoAnnotSettings2.add(showConsensHistogram); - autoAnnotSettings3.add(showConsensLogo); + JPanel autoAnnotSettings = new JPanel(); + annsettingsPanel.add(autoAnnotSettings); + autoAnnotSettings.setLayout(new GridLayout(0, 2)); + autoAnnotSettings.add(annotations); + autoAnnotSettings.add(quality); + // second row of autoannotation box + autoAnnotSettings = new JPanel(); + annsettingsPanel.add(autoAnnotSettings); + + autoAnnotSettings.setLayout(new GridLayout(0, 3)); + autoAnnotSettings.add(conservation); + autoAnnotSettings.add(identity); + autoAnnotSettings.add(showOccupancy); + 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, 130, 200, 62); + 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(verdana11); + wrap.setFont(LABEL_FONT); wrap.setHorizontalAlignment(SwingConstants.TRAILING); wrap.setHorizontalTextPosition(SwingConstants.LEADING); wrap.setText(MessageManager.getString("label.wrap_alignment")); - rightAlign.setFont(verdana11); + 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(verdana11); + idItalics.setFont(LABEL_FONT_ITALIC); idItalics.setHorizontalAlignment(SwingConstants.RIGHT); idItalics.setHorizontalTextPosition(SwingConstants.LEADING); - idItalics.setText(MessageManager - .getString("label.sequence_name_italics")); - openoverv.setFont(verdana11); - openoverv.setActionCommand(MessageManager - .getString("label.open_overview")); + 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"))); + openoverv.setText(MessageManager.getString("label.open_overview")); JPanel jPanel2 = new JPanel(); - jPanel2.setBounds(new Rectangle(7, 17, 158, 297)); - GridLayout gridLayout2 = new GridLayout(); - jPanel2.setLayout(gridLayout2); - gridLayout2.setRows(13); + jPanel2.setBounds(new Rectangle(7, 17, 158, 310)); + jPanel2.setLayout(new GridLayout(14, 1)); jPanel2.add(fullScreen); jPanel2.add(openoverv); jPanel2.add(seqLimit); @@ -1174,13 +1617,13 @@ public class GPreferences extends JPanel 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); @@ -1212,12 +1655,28 @@ public class GPreferences extends JPanel { } + protected void gapColour_actionPerformed(JPanel panel) + { + } + + protected void hiddenColour_actionPerformed(JPanel panel) + { + } + protected void showunconserved_actionPerformed(ActionEvent e) { // TODO Auto-generated method stub } + protected void useLegacyGaps_actionPerformed(ActionEvent e) + { + } + + protected void resetOvDefaults_actionPerformed(ActionEvent e) + { + } + /** * DOCUMENT ME! * @@ -1282,8 +1741,82 @@ public class GPreferences extends JPanel public void useProxy_actionPerformed() { - proxyServerTB.setEnabled(useProxy.isSelected()); - proxyPortTB.setEnabled(useProxy.isSelected()); + boolean enabled = useProxy.isSelected(); + portLabel.setEnabled(enabled); + serverLabel.setEnabled(enabled); + proxyServerTB.setEnabled(enabled); + proxyPortTB.setEnabled(enabled); } + /** + * Customer renderer for JTable: supports column of radio buttons + */ + public class RadioButtonRenderer extends JRadioButton + implements TableCellRenderer + { + public RadioButtonRenderer() + { + setHorizontalAlignment(CENTER); + setToolTipText(MessageManager.getString("label.urltooltip")); + } + + @Override + public Component getTableCellRendererComponent(JTable table, + Object value, boolean isSelected, boolean hasFocus, int row, + int column) + { + setSelected((boolean) value); + + // set colours to match rest of table + if (isSelected) + { + setBackground(table.getSelectionBackground()); + setForeground(table.getSelectionForeground()); + } + else + { + setBackground(table.getBackground()); + setForeground(table.getForeground()); + } + return this; + } + } + + /** + * Customer cell editor for JTable: supports column of radio buttons in + * conjunction with renderer + */ + public class RadioButtonEditor extends AbstractCellEditor + implements TableCellEditor + { + private JRadioButton button = new JRadioButton(); + + public RadioButtonEditor() + { + button.setHorizontalAlignment(SwingConstants.CENTER); + this.button.addActionListener(new ActionListener() + { + @Override + public void actionPerformed(ActionEvent e) + { + fireEditingStopped(); + } + }); + } + + @Override + public Component getTableCellEditorComponent(JTable table, Object value, + boolean isSelected, int row, int column) + { + button.setSelected((boolean) value); + return button; + } + + @Override + public Object getCellEditorValue() + { + return button.isSelected(); + } + + } }