JAL-1620 version bump and release notes
[jalview.git] / src / jalview / jbgui / GPreferences.java
index 1230373..26bd0cc 100755 (executable)
 /*
- * Jalview - A Sequence Alignment Editor and Viewer (Version 2.8.0b1)
+ * Jalview - A Sequence Alignment Editor and Viewer (Version 2.8.2b1)
  * Copyright (C) 2014 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.
+ * 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 <http://www.gnu.org/licenses/>.
+ * You should have received a copy of the GNU General Public License
+ * along with Jalview.  If not, see <http://www.gnu.org/licenses/>.
  * The Jalview Authors are detailed in the 'AUTHORS' file.
  */
 package jalview.jbgui;
 
 import jalview.gui.JvSwingUtils;
-
-import java.awt.*;
-import java.awt.event.*;
-
-import javax.swing.*;
-import javax.swing.border.*;
-import javax.swing.event.*;
+import jalview.gui.StructureViewer.Viewer;
+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.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.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.TitledBorder;
+import javax.swing.event.ChangeEvent;
+import javax.swing.event.ChangeListener;
+import javax.swing.event.ListSelectionEvent;
+import javax.swing.event.ListSelectionListener;
 
 /**
- * DOCUMENT ME!
+ * Base class for the Preferences panel.
  * 
  * @author $author$
  * @version $Revision$
  */
 public class GPreferences extends JPanel
 {
-  JTabbedPane tabbedPane = new JTabbedPane();
-
-  JButton ok = new JButton();
-
-  JButton cancel = new JButton();
-
-  JPanel okCancelPanel = new JPanel();
-
-  BorderLayout borderLayout1 = new BorderLayout();
-
-  protected JCheckBox quality = new JCheckBox();
-
-  JPanel visualTab = new JPanel();
-
-  JPanel visual2Tab = new JPanel();
+  private static final Font verdana11 = JvSwingUtils.getLabelFont();
 
+  /*
+   * Visual tab components
+   */
   protected JCheckBox fullScreen = new JCheckBox();
 
-  protected JCheckBox conservation = new JCheckBox();
-
-  protected JCheckBox identity = new JCheckBox();
+  protected JCheckBox openoverv = new JCheckBox();
 
-  protected JCheckBox annotations = new JCheckBox();
+  protected JCheckBox seqLimit = new JCheckBox();
 
-  protected JPanel minColour = new JPanel();
+  protected JCheckBox rightAlign = new JCheckBox();
 
-  JLabel mincolourLabel = new JLabel();
+  protected JComboBox<String> fontSizeCB = new JComboBox<String>();
 
-  protected JPanel maxColour = new JPanel();
+  protected JComboBox<String> fontStyleCB = new JComboBox<String>();
 
-  JLabel maxcolourLabel = new JLabel();
+  protected JComboBox<String> fontNameCB = new JComboBox<String>();
 
-  JLabel gapLabel = new JLabel();
+  protected JCheckBox showUnconserved = new JCheckBox();
 
-  protected JComboBox colour = new JComboBox();
+  protected JCheckBox idItalics = new JCheckBox();
 
-  JLabel colourLabel = new JLabel();
+  protected JCheckBox smoothFont = new JCheckBox();
 
-  JLabel fontLabel = new JLabel();
+  protected JComboBox<String> gapSymbolCB = new JComboBox<String>();
 
-  protected JComboBox fontSizeCB = new JComboBox();
+  protected JCheckBox wrap = new JCheckBox();
 
-  protected JComboBox fontStyleCB = new JComboBox();
+  protected JComboBox<String> sortby = new JComboBox<String>();
 
-  protected JComboBox fontNameCB = new JComboBox();
+  protected JComboBox<String> sortAnnBy = new JComboBox<String>();
 
-  protected JComboBox gapSymbolCB = new JComboBox();
+  protected JComboBox<String> sortAutocalc = new JComboBox<String>();
 
   protected JCheckBox startupCheckbox = new JCheckBox();
 
   protected JTextField startupFileTextfield = new JTextField();
 
-  JPanel connectTab = new JPanel();
-
-  JLabel serverLabel = new JLabel();
-
-  protected JList linkURLList = new JList();
-
-  protected JTextField proxyServerTB = new JTextField();
-
-  protected JTextField proxyPortTB = new JTextField();
-
-  JLabel portLabel = new JLabel();
-
-  JLabel browserLabel = new JLabel();
-
-  protected JTextField defaultBrowser = new JTextField();
-
-  JButton newLink = new JButton();
-
-  JButton editLink = new JButton();
+  // below are in the 'second column'
+  protected JCheckBox annotations = new JCheckBox();
 
-  JButton deleteLink = new JButton();
+  protected JCheckBox quality = new JCheckBox();
 
-  JScrollPane linkScrollPane = new JScrollPane();
+  protected JCheckBox conservation = new JCheckBox();
 
-  JPanel linkPanel = new JPanel();
+  protected JCheckBox identity = new JCheckBox();
 
-  BorderLayout borderLayout2 = new BorderLayout();
+  protected JCheckBox showGroupConsensus = new JCheckBox();
 
-  JPanel editLinkButtons = new JPanel();
+  protected JCheckBox showGroupConservation = new JCheckBox();
 
-  GridLayout gridLayout1 = new GridLayout();
+  protected JCheckBox showConsensHistogram = new JCheckBox();
 
-  protected JList linkNameList = new JList();
+  protected JCheckBox showConsensLogo = new JCheckBox();
 
-  JPanel linkPanel2 = new JPanel();
+  protected JCheckBox showDbRefTooltip = new JCheckBox();
 
-  BorderLayout borderLayout3 = new BorderLayout();
+  protected JCheckBox showNpTooltip = new JCheckBox();
 
-  protected JCheckBox useProxy = new JCheckBox();
+  /*
+   * Structure tab and components
+   */
+  protected JPanel structureTab;
 
-  JPanel jPanel1 = new JPanel();
+  protected JCheckBox structFromPdb = new JCheckBox();
 
-  TitledBorder titledBorder1 = new TitledBorder("Proxy Server");
+  protected JCheckBox useRnaView = new JCheckBox();
 
-  TitledBorder titledBorder2 = new TitledBorder("File Output");
+  protected JCheckBox addSecondaryStructure = new JCheckBox();
 
-  GridBagLayout gridBagLayout2 = new GridBagLayout();
+  protected JCheckBox addTempFactor = new JCheckBox();
 
-  GridBagLayout gridBagLayout1 = new GridBagLayout();
+  protected JComboBox<String> structViewer = new JComboBox<String>();
 
-  GridBagLayout gridBagLayout3 = new GridBagLayout();
+  protected JTextField chimeraPath = new JTextField();
 
-  protected JComboBox sortby = new JComboBox();
+  /*
+   * Colours tab components
+   */
+  protected JPanel minColour = new JPanel();
 
-  JLabel sortLabel = new JLabel();
+  protected JPanel maxColour = new JPanel();
 
-  JPanel jPanel2 = new JPanel();
+  protected JComboBox<String> colour = new JComboBox<String>();
 
-  JPanel visual2panel = new JPanel();
+  /*
+   * Connections tab components
+   */
+  protected JList linkURLList = new JList();
 
-  GridLayout gridLayout2 = new GridLayout();
+  protected JTextField proxyServerTB = new JTextField();
 
-  GridLayout gridLayout4 = new GridLayout();
+  protected JTextField proxyPortTB = new JTextField();
 
-  JPanel annsettingsPanel = new JPanel();
+  protected JTextField defaultBrowser = new JTextField();
 
-  JPanel autoAnnotSettings1 = new JPanel();
+  protected JList linkNameList = new JList();
 
-  JPanel autoAnnotSettings2 = new JPanel();
+  protected JCheckBox useProxy = new JCheckBox();
 
-  JPanel autoAnnotSettings3 = new JPanel();
+  protected JCheckBox usagestats = new JCheckBox();
 
-  JPanel exportTab = new JPanel();
+  protected JCheckBox questionnaire = new JCheckBox();
 
-  JLabel epsLabel = new JLabel();
+  protected JCheckBox versioncheck = new JCheckBox();
 
-  protected JComboBox epsRendering = new JComboBox();
+  /*
+   * Output tab components
+   */
+  protected JComboBox<String> epsRendering = new JComboBox<String>();
 
   protected JLabel userIdWidthlabel = new JLabel();
 
@@ -172,8 +190,6 @@ public class GPreferences extends JPanel
 
   protected JTextField userIdWidth = new JTextField();
 
-  JLabel jLabel1 = new JLabel();
-
   protected JCheckBox blcjv = new JCheckBox();
 
   protected JCheckBox pileupjv = new JCheckBox();
@@ -186,73 +202,28 @@ public class GPreferences extends JPanel
 
   protected JCheckBox pfamjv = new JCheckBox();
 
-  FlowLayout flowLayout1 = new FlowLayout();
-
   protected JCheckBox pirjv = new JCheckBox();
 
-  JPanel jPanel11 = new JPanel();
-
-  Font verdana11 = JvSwingUtils.getLabelFont();
-
-  protected JCheckBox seqLimit = new JCheckBox();
-
-  GridLayout gridLayout3 = new GridLayout();
-
-  protected JCheckBox smoothFont = new JCheckBox();
-
-  JPanel calcTab = new JPanel();
+  protected JCheckBox modellerOutput = new JCheckBox();
 
+  /*
+   * Editing tab components
+   */
   protected JCheckBox autoCalculateConsCheck = new JCheckBox();
 
   protected JCheckBox padGaps = new JCheckBox();
 
-  protected JCheckBox modellerOutput = new JCheckBox();
-
-  protected JPanel dasPanel = new JPanel();
-
-  BorderLayout borderLayout4 = new BorderLayout();
-
-  protected JPanel wsPanel = new JPanel();
-
-  BorderLayout borderLayout5 = new BorderLayout();
-
-  protected JCheckBox wrap = new JCheckBox();
-
-  protected JCheckBox rightAlign = new JCheckBox();
-
-  protected JCheckBox showUnconserved = new JCheckBox();
-
-  protected JCheckBox showDbRefTooltip = new JCheckBox();
-
-  protected JCheckBox showNpTooltip = new JCheckBox();
-
-  protected JCheckBox idItalics = new JCheckBox();
-
-  protected JCheckBox openoverv = new JCheckBox();
-
-  protected JCheckBox usagestats = new JCheckBox();
-
-  protected JCheckBox questionnaire = new JCheckBox();
-
-  protected JCheckBox versioncheck = new JCheckBox();
-
-  protected JLabel showGroupbits = new JLabel();
-
-  protected JLabel showConsensbits = new JLabel();
-
-  protected JCheckBox showConsensLogo = new JCheckBox();
-
-  protected JCheckBox showConsensHistogram = new JCheckBox();
-
-  protected JCheckBox showGroupConsensus = new JCheckBox();
-
-  protected JCheckBox showGroupConservation = new JCheckBox();
-
-  protected JCheckBox shareSelections = new JCheckBox();
+  protected JCheckBox sortByTree = new JCheckBox();
 
-  protected JCheckBox followHighlight = new JCheckBox();
+  /*
+   * DAS Settings tab
+   */
+  protected JPanel dasTab = new JPanel();
 
-  protected JCheckBox sortByTree = new JCheckBox();
+  /*
+   * Web Services tab
+   */
+  protected JPanel wsTab = new JPanel();
 
   /**
    * Creates a new GPreferences object.
@@ -269,243 +240,253 @@ public class GPreferences extends JPanel
   }
 
   /**
-   * DOCUMENT ME!
+   * Construct the panel and its tabbed sub-panels.
    * 
    * @throws Exception
-   *           DOCUMENT ME!
    */
   private void jbInit() throws Exception
   {
-    this.setLayout(borderLayout1);
-    ok.setText("OK");
-    ok.addActionListener(new ActionListener()
-    {
-      public void actionPerformed(ActionEvent e)
-      {
-        ok_actionPerformed(e);
-      }
-    });
-    cancel.setText("Cancel");
-    cancel.addActionListener(new ActionListener()
+    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()
     {
-      public void actionPerformed(ActionEvent e)
+      private Component lastTab;
+
+      @Override
+      public void stateChanged(ChangeEvent e)
       {
-        cancel_actionPerformed(e);
+        if (lastTab == structureTab
+                && tabbedPane.getSelectedComponent() != structureTab)
+        {
+          if (!validateStructure())
+          {
+            tabbedPane.setSelectedComponent(structureTab);
+            return;
+          }
+        }
+        lastTab = tabbedPane.getSelectedComponent();
       }
+
     });
-    quality.setEnabled(false);
-    quality.setFont(verdana11);
-    quality.setHorizontalAlignment(SwingConstants.RIGHT);
-    quality.setHorizontalTextPosition(SwingConstants.LEFT);
-    quality.setSelected(true);
-    quality.setText("Quality");
-    visualTab.setBorder(new TitledBorder("Open new alignment"));
-    visualTab.setLayout(null);
-    visual2Tab.setBorder(new TitledBorder("Open new alignment"));
-    visual2Tab.setLayout(new FlowLayout());
-    fullScreen.setFont(verdana11);
-    fullScreen.setHorizontalAlignment(SwingConstants.RIGHT);
-    fullScreen.setHorizontalTextPosition(SwingConstants.LEFT);
-    fullScreen.setText("Maximise Window");
-    conservation.setEnabled(false);
-    conservation.setFont(verdana11);
-    conservation.setHorizontalAlignment(SwingConstants.RIGHT);
-    conservation.setHorizontalTextPosition(SwingConstants.LEFT);
-    conservation.setSelected(true);
-    conservation.setText("Conservation");
-    identity.setEnabled(false);
-    identity.setFont(verdana11);
-    identity.setHorizontalAlignment(SwingConstants.RIGHT);
-    identity.setHorizontalTextPosition(SwingConstants.LEFT);
-    identity.setSelected(true);
-    identity.setText("Consensus");
-    showGroupbits.setFont(verdana11);
-    showGroupbits.setHorizontalAlignment(SwingConstants.RIGHT);
-    showGroupbits.setHorizontalTextPosition(SwingConstants.LEFT);
-    showGroupbits.setText("Show group:");
-    showConsensbits.setFont(verdana11);
-    showConsensbits.setHorizontalAlignment(SwingConstants.RIGHT);
-    showConsensbits.setHorizontalTextPosition(SwingConstants.LEFT);
-    showConsensbits.setText("Consensus:");
-    showConsensHistogram.setEnabled(false);
-    showConsensHistogram.setFont(verdana11);
-    showConsensHistogram.setHorizontalAlignment(SwingConstants.RIGHT);
-    showConsensHistogram.setHorizontalTextPosition(SwingConstants.LEFT);
-    showConsensHistogram.setSelected(true);
-    showConsensHistogram.setText("Histogram");
-    showConsensLogo.setEnabled(false);
-    showConsensLogo.setFont(verdana11);
-    showConsensLogo.setHorizontalAlignment(SwingConstants.RIGHT);
-    showConsensLogo.setHorizontalTextPosition(SwingConstants.LEFT);
-    showConsensLogo.setSelected(true);
-    showConsensLogo.setText("Logo");
-    showGroupConsensus.setEnabled(false);
-    showGroupConsensus.setFont(verdana11);
-    showGroupConsensus.setHorizontalAlignment(SwingConstants.RIGHT);
-    showGroupConsensus.setHorizontalTextPosition(SwingConstants.LEFT);
-    showGroupConsensus.setSelected(true);
-    showGroupConsensus.setText("Consensus");
-    showGroupConservation.setEnabled(false);
-    showGroupConservation.setFont(verdana11);
-    showGroupConservation.setHorizontalAlignment(SwingConstants.RIGHT);
-    showGroupConservation.setHorizontalTextPosition(SwingConstants.LEFT);
-    showGroupConservation.setSelected(true);
-    showGroupConservation.setText("Conservation");
-    showNpTooltip.setEnabled(true);
-    showNpTooltip.setFont(verdana11);
-    showNpTooltip.setHorizontalAlignment(SwingConstants.RIGHT);
-    showNpTooltip.setHorizontalTextPosition(SwingConstants.LEFT);
-    showNpTooltip.setSelected(true);
-    showNpTooltip.setText("Non-positional Features");
-    showDbRefTooltip.setEnabled(true);
-    showDbRefTooltip.setFont(verdana11);
-    showDbRefTooltip.setHorizontalAlignment(SwingConstants.RIGHT);
-    showDbRefTooltip.setHorizontalTextPosition(SwingConstants.LEFT);
-    showDbRefTooltip.setSelected(true);
-    showDbRefTooltip.setText("Database References");
-    annotations.setFont(verdana11);
-    annotations.setHorizontalAlignment(SwingConstants.RIGHT);
-    annotations.setHorizontalTextPosition(SwingConstants.LEADING);
-    annotations.setSelected(true);
-    annotations.setText("Show Annotations");
-    annotations.setBounds(new Rectangle(169, 12, 200, 23));
-    annotations.addActionListener(new ActionListener()
+  }
+
+  /**
+   * Initialises the Editing tabbed panel.
+   * 
+   * @return
+   */
+  private JPanel initEditingTab()
+  {
+    JPanel editingTab = new JPanel();
+    editingTab.setLayout(null);
+    autoCalculateConsCheck.setFont(verdana11);
+    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.setBounds(new Rectangle(22, 94, 168, 23));
+    sortByTree.setFont(verdana11);
+    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(verdana11);
+    epsLabel.setHorizontalAlignment(SwingConstants.RIGHT);
+    epsLabel.setText(MessageManager.getString("label.eps_rendering_style"));
+    epsLabel.setBounds(new Rectangle(9, 31, 140, 24));
+    epsRendering.setFont(verdana11);
+    epsRendering.setBounds(new Rectangle(154, 34, 187, 21));
+    JLabel jLabel1 = new JLabel();
+    jLabel1.setFont(verdana11);
+    jLabel1.setHorizontalAlignment(SwingConstants.CENTER);
+    jLabel1.setText(MessageManager.getString("label.append_start_end"));
+    jLabel1.setFont(verdana11);
+    fastajv.setFont(verdana11);
+    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(verdana11);
+    msfjv.setHorizontalAlignment(SwingConstants.LEFT);
+    pirjv.setText(MessageManager.getString("label.pir") + "     ");
+    JPanel jPanel11 = new JPanel();
+    jPanel11.setFont(verdana11);
+    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(verdana11);
+    blcjv.setHorizontalAlignment(SwingConstants.LEFT);
+    clustaljv.setFont(verdana11);
+    clustaljv.setHorizontalAlignment(SwingConstants.LEFT);
+    pfamjv.setFont(verdana11);
+    pfamjv.setHorizontalAlignment(SwingConstants.LEFT);
+    pileupjv.setFont(verdana11);
+    pileupjv.setHorizontalAlignment(SwingConstants.LEFT);
+    pirjv.setFont(verdana11);
+    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.setBounds(new Rectangle(228, 96, 188, 23));
+    autoIdWidth.addActionListener(new ActionListener()
     {
+
+      @Override
       public void actionPerformed(ActionEvent e)
       {
-        annotations_actionPerformed(e);
+        autoIdWidth_actionPerformed();
       }
     });
-    identity.addActionListener(new ActionListener()
+    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.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)
       {
-        annotations_actionPerformed(e);
-      }
-    });
-    showGroupConsensus.addActionListener(new ActionListener()
-    {
-      public void actionPerformed(ActionEvent e)
-      {
-        annotations_actionPerformed(e);
-      }
-    });
-    showUnconserved.setFont(verdana11);
-    showUnconserved.setHorizontalAlignment(SwingConstants.RIGHT);
-    showUnconserved.setHorizontalTextPosition(SwingConstants.LEFT);
-    showUnconserved.setSelected(true);
-    showUnconserved.setText("Show Unconserved");
-    showUnconserved.addActionListener(new ActionListener()
-    {
-      public void actionPerformed(ActionEvent e)
-      {
-        showunconserved_actionPerformed(e);
-      }
-    });
-    // / TODO: fit these in to preferences panel!!!!!
-    shareSelections.setFont(verdana11);
-    shareSelections.setHorizontalAlignment(SwingConstants.RIGHT);
-    shareSelections.setHorizontalTextPosition(SwingConstants.LEFT);
-    shareSelections.setSelected(true);
-    shareSelections.setText("Share selection across views");
-    followHighlight.setFont(verdana11);
-    followHighlight.setHorizontalAlignment(SwingConstants.RIGHT);
-    followHighlight.setHorizontalTextPosition(SwingConstants.LEFT);
-    // showUnconserved.setBounds(new Rectangle(169, 40, 200, 23));
-    followHighlight.setSelected(true);
-    followHighlight.setText("Scroll to highlighted regions");
-
-    gapLabel.setFont(verdana11);
-    gapLabel.setHorizontalAlignment(SwingConstants.RIGHT);
-    gapLabel.setText("Gap Symbol ");
-    colour.setFont(verdana11);
-    colour.setBounds(new Rectangle(172, 225, 155, 21));
-    colourLabel.setFont(verdana11);
-    colourLabel.setHorizontalAlignment(SwingConstants.RIGHT);
-    colourLabel.setText("Alignment Colour ");
-    fontLabel.setFont(verdana11);
-    fontLabel.setHorizontalAlignment(SwingConstants.RIGHT);
-    fontLabel.setText("Font ");
-    fontSizeCB.setFont(verdana11);
-    fontSizeCB.setBounds(new Rectangle(319, 104, 49, 23));
-    fontStyleCB.setFont(verdana11);
-    fontStyleCB.setBounds(new Rectangle(367, 104, 70, 23));
-    fontNameCB.setFont(verdana11);
-    fontNameCB.setBounds(new Rectangle(172, 104, 147, 23));
-    gapSymbolCB.setFont(verdana11);
-    gapSymbolCB.setBounds(new Rectangle(172, 204, 69, 23));
-    mincolourLabel.setFont(verdana11);
-    mincolourLabel.setHorizontalAlignment(SwingConstants.RIGHT);
-    mincolourLabel.setText("Minimum Colour");
-    minColour.setFont(verdana11);
-    minColour.setBorder(BorderFactory.createEtchedBorder());
-    minColour.setPreferredSize(new Dimension(40, 20));
-    minColour.addMouseListener(new MouseAdapter()
-    {
-      public void mousePressed(MouseEvent e)
-      {
-        minColour_actionPerformed();
-      }
-    });
-    maxcolourLabel.setFont(verdana11);
-    maxcolourLabel.setHorizontalAlignment(SwingConstants.RIGHT);
-    maxcolourLabel.setText("Maximum Colour ");
-    maxColour.setFont(verdana11);
-    maxColour.setBorder(BorderFactory.createEtchedBorder());
-    maxColour.setPreferredSize(new Dimension(40, 20));
-    maxColour.addMouseListener(new MouseAdapter()
-    {
-      public void mousePressed(MouseEvent e)
-      {
-        maxColour_actionPerformed();
-      }
-    });
-
-    startupCheckbox.setText("Open file");
-    startupCheckbox.setFont(verdana11);
-    startupCheckbox.setHorizontalAlignment(SwingConstants.RIGHT);
-    startupCheckbox.setHorizontalTextPosition(SwingConstants.LEFT);
-    startupCheckbox.setSelected(true);
-    startupFileTextfield.setFont(verdana11);
-    startupFileTextfield.setBounds(new Rectangle(172, 273, 270, 20));
-    startupFileTextfield.addMouseListener(new MouseAdapter()
-    {
-      public void mouseClicked(MouseEvent e)
-      {
-        if (e.getClickCount() > 1)
-        {
-          startupFileTextfield_mouseClicked();
-        }
+        userIdWidth_actionPerformed();
       }
     });
+    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(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;
+  }
 
-    connectTab.setLayout(gridBagLayout3);
-    serverLabel.setText("Address");
+  /**
+   * 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(verdana11);
     proxyServerTB.setFont(verdana11);
     proxyPortTB.setFont(verdana11);
+    JLabel portLabel = new JLabel();
     portLabel.setFont(verdana11);
     portLabel.setHorizontalAlignment(SwingConstants.RIGHT);
-    portLabel.setText("Port");
+    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("Default Browser (Unix)");
+    browserLabel.setText(MessageManager
+            .getString("label.default_browser_unix"));
     defaultBrowser.setFont(verdana11);
     defaultBrowser.setText("");
-    usagestats.setText("Send usage statistics");
+    usagestats.setText(MessageManager
+            .getString("label.send_usage_statistics"));
     usagestats.setFont(verdana11);
     usagestats.setHorizontalAlignment(SwingConstants.RIGHT);
     usagestats.setHorizontalTextPosition(SwingConstants.LEADING);
-    questionnaire.setText("Check for questionnaires");
+    questionnaire.setText(MessageManager
+            .getString("label.check_for_questionnaires"));
     questionnaire.setFont(verdana11);
     questionnaire.setHorizontalAlignment(SwingConstants.RIGHT);
     questionnaire.setHorizontalTextPosition(SwingConstants.LEADING);
-    versioncheck.setText("Check for latest version");
+    versioncheck.setText(MessageManager
+            .getString("label.check_for_latest_version"));
     versioncheck.setFont(verdana11);
     versioncheck.setHorizontalAlignment(SwingConstants.RIGHT);
     versioncheck.setHorizontalTextPosition(SwingConstants.LEADING);
-    newLink.setText("New");
+    JButton newLink = new JButton();
+    newLink.setText(MessageManager.getString("action.new"));
     newLink.addActionListener(new java.awt.event.ActionListener()
     {
       public void actionPerformed(ActionEvent e)
@@ -513,7 +494,8 @@ public class GPreferences extends JPanel
         newLink_actionPerformed(e);
       }
     });
-    editLink.setText("Edit");
+    JButton editLink = new JButton();
+    editLink.setText(MessageManager.getString("action.edit"));
     editLink.addActionListener(new java.awt.event.ActionListener()
     {
       public void actionPerformed(ActionEvent e)
@@ -521,7 +503,8 @@ public class GPreferences extends JPanel
         editLink_actionPerformed(e);
       }
     });
-    deleteLink.setText("Delete");
+    JButton deleteLink = new JButton();
+    deleteLink.setText(MessageManager.getString("action.delete"));
     deleteLink.addActionListener(new java.awt.event.ActionListener()
     {
       public void actionPerformed(ActionEvent e)
@@ -548,13 +531,20 @@ public class GPreferences extends JPanel
       }
     });
 
+    JScrollPane linkScrollPane = new JScrollPane();
     linkScrollPane.setBorder(null);
-    linkPanel.setBorder(new TitledBorder("URL link from Sequence ID"));
-    linkPanel.setLayout(borderLayout2);
+    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);
@@ -572,7 +562,7 @@ public class GPreferences extends JPanel
     useProxy.setFont(verdana11);
     useProxy.setHorizontalAlignment(SwingConstants.RIGHT);
     useProxy.setHorizontalTextPosition(SwingConstants.LEADING);
-    useProxy.setText("Use a proxy server");
+    useProxy.setText(MessageManager.getString("label.use_proxy_server"));
     useProxy.addActionListener(new ActionListener()
     {
       public void actionPerformed(ActionEvent e)
@@ -580,215 +570,6 @@ public class GPreferences extends JPanel
         useProxy_actionPerformed();
       }
     });
-    jPanel1.setBorder(titledBorder1);
-    jPanel1.setLayout(gridBagLayout1);
-    sortby.setFont(verdana11);
-    sortby.setBounds(new Rectangle(172, 249, 155, 21));
-    sortLabel.setFont(verdana11);
-    sortLabel.setHorizontalAlignment(SwingConstants.RIGHT);
-    sortLabel.setText("Sort by ");
-    jPanel2.setBounds(new Rectangle(7, 17, 158, 278));
-    jPanel2.setLayout(gridLayout2);
-    gridLayout2.setRows(12);
-    exportTab.setLayout(null);
-    epsLabel.setFont(verdana11);
-    epsLabel.setHorizontalAlignment(SwingConstants.RIGHT);
-    epsLabel.setText("EPS Rendering Style");
-    epsLabel.setBounds(new Rectangle(9, 31, 140, 24));
-    epsRendering.setFont(verdana11);
-    epsRendering.setBounds(new Rectangle(154, 34, 187, 21));
-    jLabel1.setFont(verdana11);
-    jLabel1.setHorizontalAlignment(SwingConstants.CENTER);
-    jLabel1.setText("Append /start-end (/15-380)");
-    jLabel1.setFont(verdana11);
-    fastajv.setFont(verdana11);
-    fastajv.setHorizontalAlignment(SwingConstants.LEFT);
-    clustaljv.setText("Clustal     ");
-    blcjv.setText("BLC     ");
-    fastajv.setText("Fasta     ");
-    msfjv.setText("MSF     ");
-    pfamjv.setText("PFAM     ");
-    pileupjv.setText("Pileup     ");
-    msfjv.setFont(verdana11);
-    msfjv.setHorizontalAlignment(SwingConstants.LEFT);
-    pirjv.setText("PIR     ");
-    jPanel11.setFont(verdana11);
-    jPanel11.setBorder(titledBorder2);
-    jPanel11.setBounds(new Rectangle(30, 72, 196, 182));
-    jPanel11.setLayout(gridLayout3);
-    blcjv.setFont(verdana11);
-    blcjv.setHorizontalAlignment(SwingConstants.LEFT);
-    clustaljv.setFont(verdana11);
-    clustaljv.setHorizontalAlignment(SwingConstants.LEFT);
-    pfamjv.setFont(verdana11);
-    pfamjv.setHorizontalAlignment(SwingConstants.LEFT);
-    pileupjv.setFont(verdana11);
-    pileupjv.setHorizontalAlignment(SwingConstants.LEFT);
-    pirjv.setFont(verdana11);
-    pirjv.setHorizontalAlignment(SwingConstants.LEFT);
-    seqLimit.setFont(verdana11);
-    seqLimit.setHorizontalAlignment(SwingConstants.RIGHT);
-    seqLimit.setHorizontalTextPosition(SwingConstants.LEFT);
-    seqLimit.setText("Full Sequence Id");
-    gridLayout3.setRows(8);
-    smoothFont.setFont(verdana11);
-    smoothFont.setHorizontalAlignment(SwingConstants.RIGHT);
-    smoothFont.setHorizontalTextPosition(SwingConstants.LEADING);
-    smoothFont.setText("Smooth Font");
-    calcTab.setLayout(null);
-    autoCalculateConsCheck.setFont(JvSwingUtils.getLabelFont());
-    autoCalculateConsCheck.setText("AutoCalculate Consensus");
-    autoCalculateConsCheck.setBounds(new Rectangle(21, 52, 209, 23));
-    padGaps.setFont(JvSwingUtils.getLabelFont());
-    padGaps.setText("Pad Gaps When Editing");
-    padGaps.setBounds(new Rectangle(22, 94, 168, 23));
-    sortByTree.setFont(JvSwingUtils.getLabelFont());
-    sortByTree.setText("Sort With New Tree");
-    sortByTree
-            .setToolTipText("When selected, any trees calculated or loaded onto the alignment will automatically sort the alignment.");
-    sortByTree.setBounds(new Rectangle(22, 136, 168, 23));
-
-    autoIdWidth.setFont(JvSwingUtils.getLabelFont());
-    autoIdWidth.setText("Automatically set ID width");
-    autoIdWidth
-            .setToolTipText("<html>"
-                    + JvSwingUtils
-                            .wrapTooltip("Adjusts the width of the generated EPS or PNG file to ensure even the longest sequence ID or annotation label is displayed")
-                    + "</html>");
-    autoIdWidth.setBounds(new Rectangle(228, 96, 188, 23));
-    autoIdWidth.addActionListener(new ActionListener()
-    {
-
-      @Override
-      public void actionPerformed(ActionEvent e)
-      {
-        autoIdWidth_actionPerformed();
-      }
-    });
-    userIdWidthlabel.setFont(JvSwingUtils.getLabelFont());
-    userIdWidthlabel.setText("Figure ID column width");
-    userIdWidth
-            .setToolTipText("<html>"
-                    + JvSwingUtils
-                            .wrapTooltip("Manually specify the width of the left hand column where sequence IDs and annotation labels will be rendered in exported alignment figures. This setting will be ignored if 'Automatically set ID width' is set")
-                    + "</html>");
-    userIdWidthlabel
-            .setToolTipText("<html>"
-                    + JvSwingUtils
-                            .wrapTooltip("Manually specify the width of the left hand column where sequence IDs and annotation labels will be rendered in exported alignment figures. This setting will be ignored if 'Automatically set ID width' is set")
-                    + "</html>");
-    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(JvSwingUtils.getLabelFont());
-    modellerOutput.setText("Use Modeller Output");
-    modellerOutput.setBounds(new Rectangle(228, 226, 168, 23));
-
-    dasPanel.setLayout(borderLayout4);
-    wsPanel.setLayout(borderLayout5);
-    wrap.setFont(JvSwingUtils.getLabelFont());
-    wrap.setHorizontalAlignment(SwingConstants.TRAILING);
-    wrap.setHorizontalTextPosition(SwingConstants.LEADING);
-    wrap.setText("Wrap Alignment");
-    rightAlign.setFont(JvSwingUtils.getLabelFont());
-    rightAlign.setForeground(Color.black);
-    rightAlign.setHorizontalAlignment(SwingConstants.RIGHT);
-    rightAlign.setHorizontalTextPosition(SwingConstants.LEFT);
-    rightAlign.setText("Right Align Ids");
-    idItalics.setFont(JvSwingUtils.getLabelFont());
-    idItalics.setHorizontalAlignment(SwingConstants.RIGHT);
-    idItalics.setHorizontalTextPosition(SwingConstants.LEADING);
-    idItalics.setText("Sequence Name Italics");
-    openoverv.setFont(JvSwingUtils.getLabelFont());
-    openoverv.setActionCommand("Open Overview");
-    openoverv.setHorizontalAlignment(SwingConstants.RIGHT);
-    openoverv.setHorizontalTextPosition(SwingConstants.LEFT);
-    openoverv.setText("Open Overview");
-    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(gapLabel);
-    jPanel2.add(wrap);
-    jPanel2.add(sortLabel);
-    jPanel2.add(startupCheckbox);
-    visualTab.add(annotations);
-    visualTab.add(startupFileTextfield);
-    visualTab.add(sortby);
-    visualTab.add(gapSymbolCB);
-    visualTab.add(fontNameCB);
-    visualTab.add(fontSizeCB);
-    visualTab.add(fontStyleCB);
-    annsettingsPanel.setBounds(new Rectangle(173, 34, 300, 61));
-    annsettingsPanel.setLayout(new FlowLayout(FlowLayout.LEFT, 0, 0));
-    annsettingsPanel.add(autoAnnotSettings1);
-    annsettingsPanel.add(autoAnnotSettings2);
-    annsettingsPanel.add(autoAnnotSettings3);
-    autoAnnotSettings1.setLayout(new GridLayout(3, 1, 0, 0));
-    autoAnnotSettings2.setLayout(new GridLayout(3, 1, 0, 0));
-    autoAnnotSettings3.setLayout(new GridLayout(3, 1, 0, 0));
-    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);
-
-    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 tooltipSettings = new JPanel();
-    tooltipSettings.setBorder(new TitledBorder("Sequence ID Tooltip"));
-    tooltipSettings.setBounds(173, 130, 200, 62);
-    tooltipSettings.setLayout(new GridLayout(2, 1));
-    tooltipSettings.add(showDbRefTooltip);
-    tooltipSettings.add(showNpTooltip);
-    visualTab.add(tooltipSettings);
-    visualTab.add(jPanel2);
-    JvSwingUtils.addtoLayout(visual2Tab,
-            "Default Colourscheme for alignment", colourLabel, colour);
-    JPanel annotationShding = new JPanel();
-    annotationShding.setBorder(new TitledBorder(
-            "Annotation Shading Default"));
-    annotationShding.setLayout(new GridLayout(1, 2));
-    JvSwingUtils.addtoLayout(annotationShding,
-            "Default Minimum Colour for annotation shading",
-            mincolourLabel, minColour);
-    JvSwingUtils.addtoLayout(annotationShding,
-            "Default Maximum Colour for annotation shading",
-            maxcolourLabel, maxColour);
-    visual2Tab.add(annotationShding); // , FlowLayout.LEFT);
-
-    // visual2panel.add(minColour);
-    // visual2panel.add(maxColour);
-    // visual2Tab.add(visual2panel);
-
     linkPanel.add(editLinkButtons, BorderLayout.EAST);
     editLinkButtons.add(newLink, null);
     editLinkButtons.add(editLink, null);
@@ -797,11 +578,11 @@ public class GPreferences extends JPanel
     linkScrollPane.getViewport().add(linkPanel2, null);
     linkPanel2.add(linkURLList, BorderLayout.CENTER);
     linkPanel2.add(linkNameList, BorderLayout.WEST);
-    okCancelPanel.add(ok);
-    okCancelPanel.add(cancel);
-    this.add(tabbedPane, java.awt.BorderLayout.CENTER);
-
-    this.add(okCancelPanel, java.awt.BorderLayout.SOUTH);
+    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));
@@ -817,6 +598,9 @@ public class GPreferences extends JPanel
     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));
@@ -835,67 +619,585 @@ public class GPreferences extends JPanel
     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));
-
-    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));
-    DefaultListCellRenderer dlcr = new DefaultListCellRenderer();
-    dlcr.setHorizontalAlignment(DefaultListCellRenderer.CENTER);
-    gapSymbolCB.setRenderer(dlcr);
-
-    tabbedPane.add(visualTab, "Visual");
-    tabbedPane.add(visual2Tab, "Colours");
-    tabbedPane.add(connectTab, "Connections");
-    tabbedPane.add(exportTab, "Output");
-    jPanel11.add(jLabel1);
-    jPanel11.add(blcjv);
-    jPanel11.add(clustaljv);
-    jPanel11.add(fastajv);
-    jPanel11.add(msfjv);
-    jPanel11.add(pfamjv);
-    jPanel11.add(pileupjv);
-    jPanel11.add(pirjv);
-    exportTab.add(autoIdWidth);
-    exportTab.add(userIdWidth);
-    exportTab.add(userIdWidthlabel);
-    exportTab.add(modellerOutput);
-    tabbedPane.add(calcTab, "Editing");
-    calcTab.add(autoCalculateConsCheck);
-    calcTab.add(padGaps);
-    calcTab.add(sortByTree);
-
-    tabbedPane.add(dasPanel, "DAS Settings");
-    tabbedPane.add(wsPanel, "Web Services");
-
-    exportTab.add(epsLabel);
-    exportTab.add(epsRendering);
-    exportTab.add(jPanel11);
+    return connectTab;
   }
 
-  protected void autoIdWidth_actionPerformed()
+  /**
+   * Initialises the parent panel which contains the tabbed sections.
+   * 
+   * @return
+   */
+  private JPanel initOkCancelPanel()
   {
-    // TODO Auto-generated method stub
-
-  }
-
-  protected void userIdWidth_actionPerformed()
+    JButton ok = new JButton();
+    ok.setText(MessageManager.getString("action.ok"));
+    ok.addActionListener(new ActionListener()
+    {
+      public void actionPerformed(ActionEvent e)
+      {
+        ok_actionPerformed(e);
+      }
+    });
+    JButton cancel = new JButton();
+    cancel.setText(MessageManager.getString("action.cancel"));
+    cancel.addActionListener(new ActionListener()
+    {
+      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()
   {
-    // TODO Auto-generated method stub
+    JPanel coloursTab = new JPanel();
+    coloursTab.setBorder(new TitledBorder(MessageManager
+            .getString("action.open_new_alignment")));
+    coloursTab.setLayout(new FlowLayout());
+    JLabel mincolourLabel = new JLabel();
+    mincolourLabel.setFont(verdana11);
+    mincolourLabel.setHorizontalAlignment(SwingConstants.RIGHT);
+    mincolourLabel.setText(MessageManager.getString("label.min_colour"));
+    minColour.setFont(verdana11);
+    minColour.setBorder(BorderFactory.createEtchedBorder());
+    minColour.setPreferredSize(new Dimension(40, 20));
+    minColour.addMouseListener(new MouseAdapter()
+    {
+      public void mousePressed(MouseEvent e)
+      {
+        minColour_actionPerformed(minColour);
+      }
+    });
+    JLabel maxcolourLabel = new JLabel();
+    maxcolourLabel.setFont(verdana11);
+    maxcolourLabel.setHorizontalAlignment(SwingConstants.RIGHT);
+    maxcolourLabel.setText(MessageManager.getString("label.max_colour"));
+    maxColour.setFont(verdana11);
+    maxColour.setBorder(BorderFactory.createEtchedBorder());
+    maxColour.setPreferredSize(new Dimension(40, 20));
+    maxColour.addMouseListener(new MouseAdapter()
+    {
+      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);
+    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 = 23;
+    final int lineSpacing = 30;
+    int ypos = 30;
+
+    structFromPdb.setFont(verdana11);
+    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(verdana11);
+    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.setBounds(new Rectangle(25, ypos, width, height));
+    structureTab.add(addSecondaryStructure);
+
+    ypos += lineSpacing;
+    addTempFactor.setFont(verdana11);
+    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.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.setBounds(new Rectangle(160, ypos, 120, height));
+    structViewer.addItem(Viewer.JMOL.name());
+    structViewer.addItem(Viewer.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(verdana11);
+    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);
+
+    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(verdana11);
+    fullScreen.setHorizontalAlignment(SwingConstants.RIGHT);
+    fullScreen.setHorizontalTextPosition(SwingConstants.LEFT);
+    fullScreen.setText(MessageManager.getString("label.maximize_window"));
+    quality.setEnabled(false);
+    quality.setFont(verdana11);
+    quality.setHorizontalAlignment(SwingConstants.RIGHT);
+    quality.setHorizontalTextPosition(SwingConstants.LEFT);
+    quality.setSelected(true);
+    quality.setText(MessageManager.getString("label.quality"));
+    conservation.setEnabled(false);
+    conservation.setFont(verdana11);
+    conservation.setHorizontalAlignment(SwingConstants.RIGHT);
+    conservation.setHorizontalTextPosition(SwingConstants.LEFT);
+    conservation.setSelected(true);
+    conservation.setText(MessageManager.getString("label.conservation"));
+    identity.setEnabled(false);
+    identity.setFont(verdana11);
+    identity.setHorizontalAlignment(SwingConstants.RIGHT);
+    identity.setHorizontalTextPosition(SwingConstants.LEFT);
+    identity.setSelected(true);
+    identity.setText(MessageManager.getString("label.consensus"));
+    JLabel showGroupbits = new JLabel();
+    showGroupbits.setFont(verdana11);
+    showGroupbits.setHorizontalAlignment(SwingConstants.RIGHT);
+    showGroupbits.setHorizontalTextPosition(SwingConstants.LEFT);
+    showGroupbits.setText(MessageManager.getString("action.show_group")
+            + ":");
+    JLabel showConsensbits = new JLabel();
+    showConsensbits.setFont(verdana11);
+    showConsensbits.setHorizontalAlignment(SwingConstants.RIGHT);
+    showConsensbits.setHorizontalTextPosition(SwingConstants.LEFT);
+    showConsensbits.setText(MessageManager.getString("label.consensus")
+            + ":");
+    showConsensHistogram.setEnabled(false);
+    showConsensHistogram.setFont(verdana11);
+    showConsensHistogram.setHorizontalAlignment(SwingConstants.RIGHT);
+    showConsensHistogram.setHorizontalTextPosition(SwingConstants.LEFT);
+    showConsensHistogram.setSelected(true);
+    showConsensHistogram.setText(MessageManager
+            .getString("label.histogram"));
+    showConsensLogo.setEnabled(false);
+    showConsensLogo.setFont(verdana11);
+    showConsensLogo.setHorizontalAlignment(SwingConstants.RIGHT);
+    showConsensLogo.setHorizontalTextPosition(SwingConstants.LEFT);
+    showConsensLogo.setSelected(true);
+    showConsensLogo.setText(MessageManager.getString("label.logo"));
+    showGroupConsensus.setEnabled(false);
+    showGroupConsensus.setFont(verdana11);
+    showGroupConsensus.setHorizontalAlignment(SwingConstants.RIGHT);
+    showGroupConsensus.setHorizontalTextPosition(SwingConstants.LEFT);
+    showGroupConsensus.setSelected(true);
+    showGroupConsensus.setText(MessageManager.getString("label.consensus"));
+    showGroupConservation.setEnabled(false);
+    showGroupConservation.setFont(verdana11);
+    showGroupConservation.setHorizontalAlignment(SwingConstants.RIGHT);
+    showGroupConservation.setHorizontalTextPosition(SwingConstants.LEFT);
+    showGroupConservation.setSelected(true);
+    showGroupConservation.setText(MessageManager
+            .getString("label.conservation"));
+    showNpTooltip.setEnabled(true);
+    showNpTooltip.setFont(verdana11);
+    showNpTooltip.setHorizontalAlignment(SwingConstants.RIGHT);
+    showNpTooltip.setHorizontalTextPosition(SwingConstants.LEFT);
+    showNpTooltip.setSelected(true);
+    showNpTooltip.setText(MessageManager
+            .getString("label.non_positional_features"));
+    showDbRefTooltip.setEnabled(true);
+    showDbRefTooltip.setFont(verdana11);
+    showDbRefTooltip.setHorizontalAlignment(SwingConstants.RIGHT);
+    showDbRefTooltip.setHorizontalTextPosition(SwingConstants.LEFT);
+    showDbRefTooltip.setSelected(true);
+    showDbRefTooltip.setText(MessageManager
+            .getString("label.database_references"));
+    annotations.setFont(verdana11);
+    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()
+    {
+      public void actionPerformed(ActionEvent e)
+      {
+        annotations_actionPerformed(e);
+      }
+    });
+    identity.addActionListener(new ActionListener()
+    {
+      public void actionPerformed(ActionEvent e)
+      {
+        annotations_actionPerformed(e);
+      }
+    });
+    showGroupConsensus.addActionListener(new ActionListener()
+    {
+      public void actionPerformed(ActionEvent e)
+      {
+        annotations_actionPerformed(e);
+      }
+    });
+    showUnconserved.setFont(verdana11);
+    showUnconserved.setHorizontalAlignment(SwingConstants.RIGHT);
+    showUnconserved.setHorizontalTextPosition(SwingConstants.LEFT);
+    showUnconserved.setSelected(true);
+    showUnconserved.setText(MessageManager
+            .getString("action.show_unconserved"));
+    showUnconserved.addActionListener(new ActionListener()
+    {
+      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(verdana11);
+    seqLimit.setHorizontalAlignment(SwingConstants.RIGHT);
+    seqLimit.setHorizontalTextPosition(SwingConstants.LEFT);
+    seqLimit.setText(MessageManager.getString("label.full_sequence_id"));
+    smoothFont.setFont(verdana11);
+    smoothFont.setHorizontalAlignment(SwingConstants.RIGHT);
+    smoothFont.setHorizontalTextPosition(SwingConstants.LEADING);
+    smoothFont.setText(MessageManager.getString("label.smooth_font"));
+    JLabel gapLabel = new JLabel();
+    gapLabel.setFont(verdana11);
+    gapLabel.setHorizontalAlignment(SwingConstants.RIGHT);
+    gapLabel.setText(MessageManager.getString("label.gap_symbol") + " ");
+    JLabel fontLabel = new JLabel();
+    fontLabel.setFont(verdana11);
+    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));
+    DefaultListCellRenderer dlcr = new DefaultListCellRenderer();
+    dlcr.setHorizontalAlignment(DefaultListCellRenderer.CENTER);
+    gapSymbolCB.setRenderer(dlcr);
+
+    startupCheckbox.setText(MessageManager.getString("action.open_file"));
+    startupCheckbox.setFont(verdana11);
+    startupCheckbox.setHorizontalAlignment(SwingConstants.RIGHT);
+    startupCheckbox.setHorizontalTextPosition(SwingConstants.LEFT);
+    startupCheckbox.setSelected(true);
+    startupFileTextfield.setFont(verdana11);
+    startupFileTextfield.setBounds(new Rectangle(172, 290, 270, 20));
+    startupFileTextfield.addMouseListener(new MouseAdapter()
+    {
+      public void mouseClicked(MouseEvent e)
+      {
+        if (e.getClickCount() > 1)
+        {
+          startupFileTextfield_mouseClicked();
+        }
+      }
+    });
+    sortby.setFont(verdana11);
+    sortby.setBounds(new Rectangle(172, 240, 155, 21));
+    JLabel sortLabel = new JLabel();
+    sortLabel.setFont(verdana11);
+    sortLabel.setHorizontalAlignment(SwingConstants.RIGHT);
+    sortLabel.setText(MessageManager.getString("label.sort_by"));
+    sortAnnBy.setFont(verdana11);
+    sortAnnBy.setBounds(new Rectangle(172, 265, 110, 21));
+    JLabel sortAnnLabel = new JLabel();
+    sortAnnLabel.setFont(verdana11);
+    sortAnnLabel.setHorizontalAlignment(SwingConstants.RIGHT);
+    sortAnnLabel.setText(MessageManager.getString("label.sort_ann_by"));
+    sortAutocalc.setFont(verdana11);
+    sortAutocalc.setBounds(new Rectangle(290, 265, 165, 21));
+    JPanel annsettingsPanel = new JPanel();
+    annsettingsPanel.setBounds(new Rectangle(173, 34, 300, 61));
+    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);
+    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);
+
+    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 tooltipSettings = new JPanel();
+    tooltipSettings.setBorder(new TitledBorder(MessageManager
+            .getString("label.sequence_id_tooltip")));
+    tooltipSettings.setBounds(173, 130, 200, 62);
+    tooltipSettings.setLayout(new GridLayout(2, 1));
+    tooltipSettings.add(showDbRefTooltip);
+    tooltipSettings.add(showNpTooltip);
+    visualTab.add(tooltipSettings);
 
+    wrap.setFont(verdana11);
+    wrap.setHorizontalAlignment(SwingConstants.TRAILING);
+    wrap.setHorizontalTextPosition(SwingConstants.LEADING);
+    wrap.setText(MessageManager.getString("label.wrap_alignment"));
+    rightAlign.setFont(verdana11);
+    rightAlign.setForeground(Color.black);
+    rightAlign.setHorizontalAlignment(SwingConstants.RIGHT);
+    rightAlign.setHorizontalTextPosition(SwingConstants.LEFT);
+    rightAlign.setText(MessageManager.getString("label.right_align_ids"));
+    idItalics.setFont(verdana11);
+    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"));
+    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, 297));
+    GridLayout gridLayout2 = new GridLayout();
+    jPanel2.setLayout(gridLayout2);
+    gridLayout2.setRows(13);
+    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(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 maxColour_actionPerformed()
+  protected void autoIdWidth_actionPerformed()
   {
     // TODO Auto-generated method stub
 
   }
 
-  protected void minColour_actionPerformed()
+  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