JAL-1152 new Structure tab on Preferences for SS derivation / annotation
authorgmungoc <g.m.carstairs@dundee.ac.uk>
Wed, 5 Nov 2014 12:21:23 +0000 (12:21 +0000)
committergmungoc <g.m.carstairs@dundee.ac.uk>
Wed, 5 Nov 2014 12:21:23 +0000 (12:21 +0000)
resources/lang/Messages.properties
resources/lang/Messages_es.properties
src/jalview/bin/Cache.java
src/jalview/gui/AlignViewport.java
src/jalview/gui/Preferences.java
src/jalview/gui/StructureViewer.java
src/jalview/jbgui/GAlignFrame.java
src/jalview/jbgui/GPreferences.java

index 93977b4..ac5394d 100644 (file)
@@ -21,7 +21,7 @@ action.edit = Edit
 action.new = New
 action.open_file = Open file
 action.show_unconserved = Show Unconserved
-action.open_new_aligmnent = Open new alignment
+action.open_new_alignment = Open new alignment
 action.raise_associated_windows = Raise Associated Windows
 action.minimize_associated_windows = Minimize Associated Windows
 action.close_all = Close all
@@ -243,6 +243,11 @@ label.apply_all_groups = Apply to all groups
 label.autocalculated_annotation = Autocalculated Annotation
 label.show_first = Show first
 label.show_last = Show last
+label.struct_from_pdb = Process secondary structure from PDB
+label.use_rnaview = Use RNAView for secondary structure
+label.autoadd_secstr = Add secondary structure annotation to alignment
+label.autoadd_temp = Add Temperature Factor annotation to alignment
+label.structure_viewer = Default structure viewer
 label.min_colour = Minimum Colour
 label.max_colour = Maximum Colour
 label.use_original_colours = Use Original Colours
@@ -416,6 +421,7 @@ label.input_cut_paste = Cut & Paste Input
 label.input_cut_paste_params = Cut & Paste Input - {0}
 label.alignment_output_command = Alignment output - {0}
 label.annotations = Annotations
+label.structure_options = Structure Options
 label.features = Features
 label.overview_params = Overview {0}
 label.paste_newick_file = Paste Newick file
index 08fd094..a1663d9 100644 (file)
@@ -21,7 +21,7 @@ action.edit = Editar
 action.new = Nuevo
 action.open_file = Abrir fichero
 action.show_unconserved = Mostrar regiones no conservadas
-action.open_new_aligmnent = Abrir nuevo alineamiento
+action.open_new_alignment = Abrir nuevo alineamiento
 action.raise_associated_windows = Destacar ventanas asociadas
 action.minimize_associated_windows = Minimizar ventanas asociadas
 action.close_all = Cerrar todo
index 21a030b..a48b750 100755 (executable)
@@ -158,14 +158,21 @@ import org.apache.log4j.SimpleLayout;
  * when shading by annotation</li>
  * <li>www.jalview.org (http://www.jalview.org) a property enabling all HTTP
  * requests to be redirected to a mirror of http://www.jalview.org</li>
- * 
  * <li>FIGURE_AUTOIDWIDTH (false) Expand the left hand column of an exported
  * alignment figure to accommodate even the longest sequence ID or annotation
  * label.</li>
  * <li>FIGURE_FIXEDIDWIDTH Specifies the width to use for the left-hand column
  * when exporting an alignment as a figure (setting FIGURE_AUTOIDWIDTH to true
  * will override this).</li>
- * <li></li>
+ * <li>STRUCT_FROM_PDB (false) derive secondary structure annotation from PDB
+ * record</li>
+ * <li>USE_RNAVIEW (false) use RNAViewer to derive secondary structure</li>
+ * <li>ADD_SS_ANN (false) add secondary structure annotation to alignment
+ * display</li>
+ * <li>ADD_TEMPFACT_ANN (false) add Temperature Factor annotation to alignment
+ * display</li>
+ * <li>STRUCTURE_DISPLAY choose from JMOL (default) or CHIMERA for 3D structure
+ * display</li>
  * 
  * </ul>
  * Deprecated settings:
@@ -207,13 +214,6 @@ public class Cache
 
   public static final String DAS_ACTIVE_SOURCE = "DAS_ACTIVE_SOURCE";
 
-  /*
-   * Property key/value constants
-   */
-  public static final String SORT_ANNOTATIONS = "SORT_ANNOTATIONS";
-
-  public static final String SHOW_AUTOCALC_ABOVE = "SHOW_AUTOCALC_ABOVE";
-
   /**
    * Initialises the Jalview Application Log
    */
index a738991..5c383d8 100644 (file)
@@ -366,10 +366,10 @@ public class AlignViewport extends AlignmentViewport implements
     sortByTree = Cache.getDefault("SORT_BY_TREE", false);
     followSelection = Cache.getDefault("FOLLOW_SELECTIONS", true);
     sortAnnotationsBy = SequenceAnnotationOrder.valueOf(Cache.getDefault(
-            Cache.SORT_ANNOTATIONS, SequenceAnnotationOrder.NONE.name()));
-    showAutocalculatedAbove = Cache
-.getDefault(Cache.SHOW_AUTOCALC_ABOVE,
-            false);
+            Preferences.SORT_ANNOTATIONS,
+            SequenceAnnotationOrder.NONE.name()));
+    showAutocalculatedAbove = Cache.getDefault(
+            Preferences.SHOW_AUTOCALC_ABOVE, false);
   }
 
   /**
index dfb89b2..2e8aa89 100755 (executable)
@@ -22,6 +22,7 @@ package jalview.gui;
 
 import jalview.analysis.AnnotationSorter.SequenceAnnotationOrder;
 import jalview.bin.Cache;
+import jalview.gui.StructureViewer.Viewer;
 import jalview.io.JalviewFileChooser;
 import jalview.io.JalviewFileView;
 import jalview.jbgui.GPreferences;
@@ -43,6 +44,7 @@ import javax.swing.JColorChooser;
 import javax.swing.JFileChooser;
 import javax.swing.JInternalFrame;
 import javax.swing.JOptionPane;
+import javax.swing.JPanel;
 
 /**
  * DOCUMENT ME!
@@ -53,6 +55,24 @@ import javax.swing.JOptionPane;
 public class Preferences extends GPreferences
 {
 
+  public static final String ADD_TEMPFACT_ANN = "ADD_TEMPFACT_ANN";
+
+  public static final String ADD_SS_ANN = "ADD_SS_ANN";
+
+  public static final String USE_RNAVIEW = "USE_RNAVIEW";
+
+  public static final String STRUCT_FROM_PDB = "STRUCT_FROM_PDB";
+
+  public static final String STRUCTURE_DISPLAY = "STRUCTURE_DISPLAY";
+
+  public static final String SORT_ANNOTATIONS = "SORT_ANNOTATIONS";
+
+  public static final String SHOW_AUTOCALC_ABOVE = "SHOW_AUTOCALC_ABOVE";
+
+  private static final int MIN_FONT_SIZE = 1;
+
+  private static final int MAX_FONT_SIZE = 30;
+
   /**
    * Holds name and link separated with | character. Sequence ID must be
    * $SEQUENCE_ID$ or $SEQUENCE_ID=/.possible | chars ./=$
@@ -129,13 +149,13 @@ public class Preferences extends GPreferences
    */
   public Preferences()
   {
-
+    super();
     frame = new JInternalFrame();
     frame.setContentPane(this);
     dasSource = new DasSourceBrowser();
-    dasPanel.add(dasSource, BorderLayout.CENTER);
+    dasTab.add(dasSource, BorderLayout.CENTER);
     wsPrefs = new WsPreferences();
-    wsPanel.add(wsPrefs, BorderLayout.CENTER);
+    wsTab.add(wsPrefs, BorderLayout.CENTER);
     int width = 500, height = 420;
     if (new jalview.util.Platform().isAMac())
     {
@@ -147,6 +167,9 @@ public class Preferences extends GPreferences
             MessageManager.getString("label.preferences"), width, height);
     frame.setMinimumSize(new Dimension(width, height));
 
+    /*
+     * Set Visual tab defaults
+     */
     seqLimit.setSelected(Cache.getDefault("SHOW_JVSUFFIX", true));
     rightAlign.setSelected(Cache.getDefault("RIGHT_ALIGN_IDS", false));
     fullScreen.setSelected(Cache.getDefault("SHOW_FULLSCREEN", false));
@@ -158,37 +181,27 @@ public class Preferences extends GPreferences
     openoverv.setSelected(Cache.getDefault("SHOW_OVERVIEW", false));
     showUnconserved
             .setSelected(Cache.getDefault("SHOW_UNCONSERVED", false));
+    showGroupConsensus.setSelected(Cache.getDefault("SHOW_GROUP_CONSENSUS",
+            false));
+    showGroupConservation.setSelected(Cache.getDefault(
+            "SHOW_GROUP_CONSERVATION", false));
+    showConsensHistogram.setSelected(Cache.getDefault(
+            "SHOW_CONSENSUS_HISTOGRAM", true));
+    showConsensLogo.setSelected(Cache.getDefault("SHOW_CONSENSUS_LOGO",
+            false));
     showNpTooltip.setSelected(Cache
             .getDefault("SHOW_NPFEATS_TOOLTIP", true));
     showDbRefTooltip.setSelected(Cache.getDefault("SHOW_DBREFS_TOOLTIP",
             true));
-    sortByTree.setSelected(Cache.getDefault("SORT_BY_TREE", false));
-    for (int i = ColourSchemeProperty.FIRST_COLOUR; i <= ColourSchemeProperty.LAST_COLOUR; i++)
-    {
-      colour.addItem(ColourSchemeProperty.getColourName(i));
-    }
-
-    String string = Cache.getDefault("DEFAULT_COLOUR", "None");
-
-    colour.setSelectedItem(string);
-
-    /**
-     * default min-max colours for annotation shading
-     */
-    minColour.setBackground(Cache.getDefaultColour("ANNOTATIONCOLOUR_MIN",
-            Color.orange));
-    maxColour.setBackground(Cache.getDefaultColour("ANNOTATIONCOLOUR_MAX",
-            Color.red));
 
     String[] fonts = java.awt.GraphicsEnvironment
             .getLocalGraphicsEnvironment().getAvailableFontFamilyNames();
-
     for (int i = 0; i < fonts.length; i++)
     {
       fontNameCB.addItem(fonts[i]);
     }
 
-    for (int i = 1; i < 31; i++)
+    for (int i = MIN_FONT_SIZE; i <= MAX_FONT_SIZE; i++)
     {
       fontSizeCB.addItem(i + "");
     }
@@ -213,12 +226,6 @@ public class Preferences extends GPreferences
 
     gapSymbolCB.setSelectedItem(Cache.getDefault("GAP_SYMBOL", "-"));
 
-    startupCheckbox
-            .setSelected(Cache.getDefault("SHOW_STARTUP_FILE", true));
-    startupFileTextfield.setText(Cache.getDefault("STARTUP_FILE",
-            Cache.getDefault("www.jalview.org", "http://www.jalview.org")
-                    + "/examples/exampleFile_2_3.jar"));
-
     sortby.addItem("No sort");
     sortby.addItem("Id");
     sortby.addItem("Pairwise Identity");
@@ -230,52 +237,53 @@ public class Preferences extends GPreferences
     sortAnnBy
             .addItem(SequenceAnnotationOrder.LABEL_AND_SEQUENCE.toString());
     SequenceAnnotationOrder savedSort = SequenceAnnotationOrder
-            .valueOf(Cache.getDefault(Cache.SORT_ANNOTATIONS,
+            .valueOf(Cache.getDefault(SORT_ANNOTATIONS,
                     SequenceAnnotationOrder.NONE.name()));
     sortAnnBy.setSelectedItem(savedSort.toString());
 
     sortAutocalc.addItem("Autocalculated first");
     sortAutocalc.addItem("Autocalculated last");
-
-    final boolean showAbove = Cache.getDefault(Cache.SHOW_AUTOCALC_ABOVE,
+    final boolean showAbove = Cache.getDefault(SHOW_AUTOCALC_ABOVE,
             true);
     sortAutocalc.setSelectedItem(showAbove ? sortAutocalc.getItemAt(0)
             : sortAutocalc.getItemAt(1));
+    startupCheckbox
+            .setSelected(Cache.getDefault("SHOW_STARTUP_FILE", true));
+    startupFileTextfield.setText(Cache.getDefault("STARTUP_FILE",
+            Cache.getDefault("www.jalview.org", "http://www.jalview.org")
+                    + "/examples/exampleFile_2_3.jar"));
 
-    epsRendering.addItem(MessageManager.getString("label.prompt_each_time"));
-    epsRendering.addItem(MessageManager.getString("label.lineart"));
-    epsRendering.addItem(MessageManager.getString("action.text"));
-    epsRendering.setSelectedIndex(0);
-    autoIdWidth.setSelected(Cache.getDefault("FIGURE_AUTOIDWIDTH", false));
-    userIdWidth.setEnabled(autoIdWidth.isSelected());
-    userIdWidthlabel.setEnabled(autoIdWidth.isSelected());
-    Integer wi = Cache.getIntegerProperty("FIGURE_USERIDWIDTH");
-    userIdWidth.setText(wi == null ? "" : wi.toString());
-    blcjv.setSelected(Cache.getDefault("BLC_JVSUFFIX", true));
-    clustaljv.setSelected(Cache.getDefault("CLUSTAL_JVSUFFIX", true));
-    fastajv.setSelected(Cache.getDefault("FASTA_JVSUFFIX", true));
-    msfjv.setSelected(Cache.getDefault("MSF_JVSUFFIX", true));
-    pfamjv.setSelected(Cache.getDefault("PFAM_JVSUFFIX", true));
-    pileupjv.setSelected(Cache.getDefault("PILEUP_JVSUFFIX", true));
-    pirjv.setSelected(Cache.getDefault("PIR_JVSUFFIX", true));
-
-    modellerOutput.setSelected(Cache.getDefault("PIR_MODELLER", false));
-
-    autoCalculateConsCheck.setSelected(Cache.getDefault(
-            "AUTO_CALC_CONSENSUS", true));
-    showGroupConsensus.setSelected(Cache.getDefault("SHOW_GROUP_CONSENSUS",
-            false));
-    showGroupConservation.setSelected(Cache.getDefault(
-            "SHOW_GROUP_CONSERVATION", false));
-    showConsensHistogram.setSelected(Cache.getDefault(
-            "SHOW_CONSENSUS_HISTOGRAM", true));
-    showConsensLogo.setSelected(Cache.getDefault("SHOW_CONSENSUS_LOGO",
-            false));
-
-    padGaps.setSelected(Cache.getDefault("PAD_GAPS", false));
+    /*
+     * Set Colours tab defaults
+     */
+    for (int i = ColourSchemeProperty.FIRST_COLOUR; i <= ColourSchemeProperty.LAST_COLOUR; i++)
+    {
+      colour.addItem(ColourSchemeProperty.getColourName(i));
+    }
+    String string = Cache.getDefault("DEFAULT_COLOUR", "None");
+    colour.setSelectedItem(string);
+    minColour.setBackground(Cache.getDefaultColour("ANNOTATIONCOLOUR_MIN",
+            Color.orange));
+    maxColour.setBackground(Cache.getDefaultColour("ANNOTATIONCOLOUR_MAX",
+            Color.red));
 
-    /***************************************************************************
-     * Set up Connections
+    /*
+     * Set Structure tab defaults.
+     */
+    final boolean structSelected = Cache.getDefault(STRUCT_FROM_PDB, false);
+    structFromPdb.setSelected(structSelected);
+    useRnaView.setSelected(Cache.getDefault(USE_RNAVIEW, false));
+    useRnaView.setEnabled(structSelected);
+    addSecondaryStructure
+            .setSelected(Cache.getDefault(ADD_SS_ANN, false));
+    addSecondaryStructure.setEnabled(structSelected);
+    addTempFactor.setSelected(Cache.getDefault(ADD_TEMPFACT_ANN, false));
+    addTempFactor.setEnabled(structSelected);
+    structViewer.setSelectedItem(Cache.getDefault(STRUCTURE_DISPLAY,
+            Viewer.JMOL.name()));
+
+    /*
+     * Set Connections tab defaults
      */
     nameLinks = new Vector();
     urlLinks = new Vector();
@@ -297,34 +305,57 @@ public class Preferences extends GPreferences
     defaultBrowser.setText(Cache.getDefault("DEFAULT_BROWSER", ""));
 
     usagestats.setSelected(Cache.getDefault("USAGESTATS", false));
+    // note antisense here: default is true
     questionnaire
-            .setSelected(Cache.getProperty("NOQUESTIONNAIRES") == null); // note
-                                                                         // antisense
-                                                                         // here
-    versioncheck.setSelected(Cache.getDefault("VERSION_CHECK", true)); // default
-                                                                       // is
-                                                                       // true
+            .setSelected(Cache.getProperty("NOQUESTIONNAIRES") == null);
+    versioncheck.setSelected(Cache.getDefault("VERSION_CHECK", true));
+
+    /*
+     * Set Output tab defaults
+     */
+    epsRendering
+            .addItem(MessageManager.getString("label.prompt_each_time"));
+    epsRendering.addItem(MessageManager.getString("label.lineart"));
+    epsRendering.addItem(MessageManager.getString("action.text"));
+    epsRendering.setSelectedItem(Cache.getDefault("EPS_RENDERING",
+            "Prompt each time"));
+    autoIdWidth.setSelected(Cache.getDefault("FIGURE_AUTOIDWIDTH", false));
+    userIdWidth.setEnabled(autoIdWidth.isSelected());
+    userIdWidthlabel.setEnabled(autoIdWidth.isSelected());
+    Integer wi = Cache.getIntegerProperty("FIGURE_USERIDWIDTH");
+    userIdWidth.setText(wi == null ? "" : wi.toString());
+    blcjv.setSelected(Cache.getDefault("BLC_JVSUFFIX", true));
+    clustaljv.setSelected(Cache.getDefault("CLUSTAL_JVSUFFIX", true));
+    fastajv.setSelected(Cache.getDefault("FASTA_JVSUFFIX", true));
+    msfjv.setSelected(Cache.getDefault("MSF_JVSUFFIX", true));
+    pfamjv.setSelected(Cache.getDefault("PFAM_JVSUFFIX", true));
+    pileupjv.setSelected(Cache.getDefault("PILEUP_JVSUFFIX", true));
+    pirjv.setSelected(Cache.getDefault("PIR_JVSUFFIX", true));
+    modellerOutput.setSelected(Cache.getDefault("PIR_MODELLER", false));
+
+    /*
+     * Set Editing tab defaults
+     */
+    autoCalculateConsCheck.setSelected(Cache.getDefault(
+            "AUTO_CALC_CONSENSUS", true));
+    padGaps.setSelected(Cache.getDefault("PAD_GAPS", false));
+    sortByTree.setSelected(Cache.getDefault("SORT_BY_TREE", false));
+
     annotations_actionPerformed(null); // update the display of the annotation
                                        // settings
-    try
-    {
-      jbInit();
-    } catch (Exception ex)
-    {
-      ex.printStackTrace();
-    }
-
   }
 
   /**
-   * DOCUMENT ME!
+   * Save user selections on the Preferences tabs to the Cache and write out to
+   * file.
    * 
    * @param e
-   *          DOCUMENT ME!
    */
   public void ok_actionPerformed(ActionEvent e)
   {
-
+    /*
+     * Save Visual settings
+     */
     Cache.applicationProperties.setProperty("SHOW_JVSUFFIX",
             Boolean.toString(seqLimit.isSelected()));
     Cache.applicationProperties.setProperty("RIGHT_ALIGN_IDS",
@@ -342,8 +373,6 @@ public class Preferences extends GPreferences
     Cache.applicationProperties.setProperty("SHOW_IDENTITY",
             Boolean.toString(identity.isSelected()));
 
-    Cache.applicationProperties.setProperty("DEFAULT_COLOUR", colour
-            .getSelectedItem().toString());
     Cache.applicationProperties.setProperty("GAP_SYMBOL", gapSymbolCB
             .getSelectedItem().toString());
 
@@ -389,19 +418,41 @@ public class Preferences extends GPreferences
             .forDescription(sortAnnBy.getSelectedItem().toString());
     if (annSortOrder != null)
     {
-      Cache.applicationProperties.setProperty(Cache.SORT_ANNOTATIONS,
+      Cache.applicationProperties.setProperty(SORT_ANNOTATIONS,
               annSortOrder.name());
     }
 
     final boolean showAutocalcFirst = sortAutocalc.getSelectedIndex() == 0;
-    Cache.applicationProperties.setProperty(Cache.SHOW_AUTOCALC_ABOVE,
+    Cache.applicationProperties.setProperty(SHOW_AUTOCALC_ABOVE,
             Boolean.valueOf(showAutocalcFirst).toString());
 
+    /*
+     * Save Colours settings
+     */
+    Cache.applicationProperties.setProperty("DEFAULT_COLOUR", colour
+            .getSelectedItem().toString());
     Cache.setColourProperty("ANNOTATIONCOLOUR_MIN",
             minColour.getBackground());
     Cache.setColourProperty("ANNOTATIONCOLOUR_MAX",
             maxColour.getBackground());
 
+    /*
+     * Save Structure settings
+     */
+    Cache.applicationProperties.setProperty(ADD_TEMPFACT_ANN,
+            Boolean.toString(addTempFactor.isSelected()));
+    Cache.applicationProperties.setProperty(ADD_SS_ANN,
+            Boolean.toString(addSecondaryStructure.isSelected()));
+    Cache.applicationProperties.setProperty(USE_RNAVIEW,
+            Boolean.toString(useRnaView.isSelected()));
+    Cache.applicationProperties.setProperty(STRUCT_FROM_PDB,
+            Boolean.toString(structFromPdb.isSelected()));
+    Cache.applicationProperties.setProperty(STRUCTURE_DISPLAY, structViewer
+            .getSelectedItem().toString());
+
+    /*
+     * Save Output settings
+     */
     if (epsRendering.getSelectedItem().equals("Prompt each time"))
     {
       Cache.applicationProperties.remove("EPS_RENDERING");
@@ -412,6 +463,9 @@ public class Preferences extends GPreferences
               .getSelectedItem().toString());
     }
 
+    /*
+     * Save Connections settings
+     */
     if (defaultBrowser.getText().trim().length() < 1)
     {
       Cache.applicationProperties.remove("DEFAULT_BROWSER");
@@ -496,6 +550,10 @@ public class Preferences extends GPreferences
       // by just adding the given line
       Cache.removeProperty("NOQUESTIONNAIRES");
     }
+
+    /*
+     * Save Output settings
+     */
     Cache.applicationProperties.setProperty("BLC_JVSUFFIX",
             Boolean.toString(blcjv.isSelected()));
     Cache.applicationProperties.setProperty("CLUSTAL_JVSUFFIX",
@@ -520,6 +578,9 @@ public class Preferences extends GPreferences
     Cache.applicationProperties.setProperty("FIGURE_USERIDWIDTH",
             userIdWidth.getText());
 
+    /*
+     * Save Editing settings
+     */
     Cache.applicationProperties.setProperty("AUTO_CALC_CONSENSUS",
             Boolean.toString(autoCalculateConsCheck.isSelected()));
     Cache.applicationProperties.setProperty("SORT_BY_TREE",
@@ -529,7 +590,9 @@ public class Preferences extends GPreferences
 
     dasSource.saveProperties(Cache.applicationProperties);
     wsPrefs.updateAndRefreshWsMenuConfig(false);
+
     Cache.saveProperties();
+
     try
     {
       frame.setClosed(true);
@@ -717,35 +780,33 @@ public class Preferences extends GPreferences
     super.showunconserved_actionPerformed(e);
   }
 
-  private void jbInit() throws Exception
-  {
-  }
-
   public static Collection getGroupURLLinks()
   {
     return groupURLLinks;
   }
 
-  public void minColour_actionPerformed()
+  @Override
+  public void minColour_actionPerformed(JPanel panel)
   {
     Color col = JColorChooser.showDialog(this,
             MessageManager.getString("label.select_colour_minimum_value"), minColour.getBackground());
     if (col != null)
     {
-      minColour.setBackground(col);
+      panel.setBackground(col);
     }
-    minColour.repaint();
+    panel.repaint();
   }
 
-  public void maxColour_actionPerformed()
+  @Override
+  public void maxColour_actionPerformed(JPanel panel)
   {
     Color col = JColorChooser.showDialog(this,
             MessageManager.getString("label.select_colour_maximum_value"), maxColour.getBackground());
     if (col != null)
     {
-      maxColour.setBackground(col);
+      panel.setBackground(col);
     }
-    maxColour.repaint();
+    panel.repaint();
   }
 
   @Override
index ccb3c18..ad7b675 100644 (file)
  */
 package jalview.gui;
 
-import java.awt.Rectangle;
-
 import jalview.api.structures.JalviewStructureDisplayI;
 import jalview.bin.Cache;
 import jalview.datamodel.PDBEntry;
 import jalview.datamodel.SequenceI;
-import jalview.gui.StructureViewer.Viewer;
 import jalview.structure.StructureSelectionManager;
 
+import java.awt.Rectangle;
+
 /**
  * proxy for handling structure viewers.
  * 
@@ -49,13 +48,14 @@ public class StructureViewer
 
   public Viewer getViewerType()
   {
-    String viewType = Cache.getDefault("STRUCTURE_DISPLAY", "JMOL");
+    String viewType = Cache.getDefault(Preferences.STRUCTURE_DISPLAY,
+            Viewer.JMOL.name());
     return Viewer.valueOf(viewType);
   }
 
   public void setViewerType(Viewer type)
   {
-    Cache.setProperty("STRUCTURE_DISPLAY", type.toString());
+    Cache.setProperty(Preferences.STRUCTURE_DISPLAY, type.name());
   }
 
   public StructureViewer(StructureSelectionManager structureSelectionManager)
index a7852b4..1e67ff7 100755 (executable)
@@ -23,6 +23,7 @@ package jalview.jbgui;
 import jalview.analysis.AnnotationSorter.SequenceAnnotationOrder;
 import jalview.bin.Cache;
 import jalview.gui.JvSwingUtils;
+import jalview.gui.Preferences;
 import jalview.schemes.ColourSchemeProperty;
 import jalview.util.MessageManager;
 
@@ -1140,7 +1141,7 @@ public class GAlignFrame extends JInternalFrame
       }
     });
     SequenceAnnotationOrder sortAnnotationsBy = SequenceAnnotationOrder
-            .valueOf(Cache.getDefault(Cache.SORT_ANNOTATIONS,
+            .valueOf(Cache.getDefault(Preferences.SORT_ANNOTATIONS,
                     SequenceAnnotationOrder.NONE.name()));
     sortAnnBySequence.setText(MessageManager
             .getString("label.sort_annotations_by_sequence"));
@@ -1422,7 +1423,8 @@ public class GAlignFrame extends JInternalFrame
     });
 
     showAutoFirst.setText(MessageManager.getString("label.show_first"));
-    showAutoFirst.setState(Cache.getDefault(Cache.SHOW_AUTOCALC_ABOVE,
+    showAutoFirst.setState(Cache.getDefault(
+            Preferences.SHOW_AUTOCALC_ABOVE,
             false));
     showAutoFirst.addActionListener(new ActionListener()
     {
index 2223c1f..f3289a3 100755 (executable)
@@ -21,6 +21,7 @@
 package jalview.jbgui;
 
 import jalview.gui.JvSwingUtils;
+import jalview.gui.StructureViewer.Viewer;
 import jalview.util.MessageManager;
 
 import java.awt.BorderLayout;
@@ -59,52 +60,25 @@ 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 annotations = new JCheckBox();
-
-  protected JPanel minColour = new JPanel();
-
-  JLabel mincolourLabel = new JLabel();
-
-  protected JPanel maxColour = new JPanel();
-
-  JLabel maxcolourLabel = new JLabel();
-
-  JLabel gapLabel = new JLabel();
-
-  protected JComboBox<String> colour = new JComboBox<String>();
+  protected JCheckBox openoverv = new JCheckBox();
 
-  JLabel colourLabel = new JLabel();
+  protected JCheckBox seqLimit = new JCheckBox();
 
-  JLabel fontLabel = new JLabel();
+  protected JCheckBox rightAlign = new JCheckBox();
 
   protected JComboBox<String> fontSizeCB = new JComboBox<String>();
 
@@ -112,96 +86,93 @@ public class GPreferences extends JPanel
 
   protected JComboBox<String> fontNameCB = new JComboBox<String>();
 
-  protected JComboBox<String> gapSymbolCB = 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();
+  protected JCheckBox showUnconserved = new JCheckBox();
 
-  JLabel portLabel = new JLabel();
+  protected JCheckBox idItalics = new JCheckBox();
 
-  JLabel browserLabel = new JLabel();
+  protected JCheckBox smoothFont = new JCheckBox();
 
-  protected JTextField defaultBrowser = new JTextField();
+  protected JComboBox<String> gapSymbolCB = new JComboBox<String>();
 
-  JButton newLink = new JButton();
+  protected JCheckBox wrap = new JCheckBox();
 
-  JButton editLink = new JButton();
+  protected JComboBox<String> sortby = new JComboBox<String>();
 
-  JButton deleteLink = new JButton();
+  protected JComboBox<String> sortAnnBy = new JComboBox<String>();
 
-  JScrollPane linkScrollPane = new JScrollPane();
+  protected JComboBox<String> sortAutocalc = new JComboBox<String>();
 
-  JPanel linkPanel = new JPanel();
+  protected JCheckBox startupCheckbox = new JCheckBox();
 
-  BorderLayout borderLayout2 = new BorderLayout();
+  protected JTextField startupFileTextfield = new JTextField();
 
-  JPanel editLinkButtons = new JPanel();
+  // below are in the 'second column'
+  protected JCheckBox annotations = new JCheckBox();
 
-  GridLayout gridLayout1 = new GridLayout();
+  protected JCheckBox quality = new JCheckBox();
 
-  protected JList linkNameList = new JList();
+  protected JCheckBox conservation = new JCheckBox();
 
-  JPanel linkPanel2 = new JPanel();
+  protected JCheckBox identity = new JCheckBox();
 
-  BorderLayout borderLayout3 = new BorderLayout();
+  protected JCheckBox showGroupConsensus = new JCheckBox();
 
-  protected JCheckBox useProxy = new JCheckBox();
+  protected JCheckBox showGroupConservation = new JCheckBox();
 
-  JPanel jPanel1 = new JPanel();
+  protected JCheckBox showConsensHistogram = new JCheckBox();
 
-  TitledBorder titledBorder1 = new TitledBorder(
-          MessageManager.getString("label.proxy_server"));
+  protected JCheckBox showConsensLogo = new JCheckBox();
 
-  TitledBorder titledBorder2 = new TitledBorder(
-          MessageManager.getString("label.file_output"));
+  protected JCheckBox showDbRefTooltip = new JCheckBox();
 
-  GridBagLayout gridBagLayout2 = new GridBagLayout();
+  protected JCheckBox showNpTooltip = new JCheckBox();
 
-  GridBagLayout gridBagLayout1 = new GridBagLayout();
+  /*
+   * Annotations tab components
+   */
+  protected JCheckBox structFromPdb = new JCheckBox();
 
-  GridBagLayout gridBagLayout3 = new GridBagLayout();
+  protected JCheckBox useRnaView = new JCheckBox();
 
-  protected JComboBox<String> sortby = new JComboBox<String>();
+  protected JCheckBox addSecondaryStructure = new JCheckBox();
 
-  JLabel sortLabel = new JLabel();
+  protected JCheckBox addTempFactor = new JCheckBox();
 
-  protected JComboBox<String> sortAnnBy = new JComboBox<String>();
+  protected JComboBox<String> structViewer = new JComboBox<String>();
 
-  protected JComboBox<String> sortAutocalc = new JComboBox<String>();
+  /*
+   * Colours tab components
+   */
+  protected JPanel minColour = new JPanel();
 
-  JLabel sortAnnLabel = 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();
 
+  /*
+   * Output tab components
+   */
   protected JComboBox<String> epsRendering = new JComboBox<String>();
 
   protected JLabel userIdWidthlabel = new JLabel();
@@ -210,8 +181,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();
@@ -224,73 +193,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.
@@ -307,237 +231,205 @@ 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(MessageManager.getString("action.ok"));
-    ok.addActionListener(new ActionListener()
+    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"));
+  }
+
+  /**
+   * 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)
       {
-        ok_actionPerformed(e);
+        autoIdWidth_actionPerformed();
       }
     });
-    cancel.setText(MessageManager.getString("action.cancel"));
-    cancel.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)
       {
-        cancel_actionPerformed(e);
-      }
-    });
-    quality.setEnabled(false);
-    quality.setFont(verdana11);
-    quality.setHorizontalAlignment(SwingConstants.RIGHT);
-    quality.setHorizontalTextPosition(SwingConstants.LEFT);
-    quality.setSelected(true);
-    quality.setText(MessageManager.getString("label.quality"));
-    visualTab.setBorder(new TitledBorder(MessageManager
-            .getString("action.open_new_aligmnent")));
-    visualTab.setLayout(null);
-    visual2Tab.setBorder(new TitledBorder(MessageManager
-            .getString("action.open_new_aligmnent")));
-    visual2Tab.setLayout(new FlowLayout());
-    fullScreen.setFont(verdana11);
-    fullScreen.setHorizontalAlignment(SwingConstants.RIGHT);
-    fullScreen.setHorizontalTextPosition(SwingConstants.LEFT);
-    fullScreen.setText(MessageManager.getString("label.maximize_window"));
-    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"));
-    showGroupbits.setFont(verdana11);
-    showGroupbits.setHorizontalAlignment(SwingConstants.RIGHT);
-    showGroupbits.setHorizontalTextPosition(SwingConstants.LEFT);
-    showGroupbits.setText(MessageManager.getString("action.show_group")
-            + ":");
-    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: fit these in to preferences panel!!!!!
-    shareSelections.setFont(verdana11);
-    shareSelections.setHorizontalAlignment(SwingConstants.RIGHT);
-    shareSelections.setHorizontalTextPosition(SwingConstants.LEFT);
-    shareSelections.setSelected(true);
-    shareSelections.setText(MessageManager
-            .getString("label.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(MessageManager
-            .getString("label.scroll_highlighted_regions"));
-
-    gapLabel.setFont(verdana11);
-    gapLabel.setHorizontalAlignment(SwingConstants.RIGHT);
-    gapLabel.setText(MessageManager.getString("label.gap_symbol") + " ");
-    colour.setFont(verdana11);
-    colour.setBounds(new Rectangle(172, 225, 155, 21));
-    colourLabel.setFont(verdana11);
-    colourLabel.setHorizontalAlignment(SwingConstants.RIGHT);
-    colourLabel.setText(MessageManager.getString("label.alignment_colour")
-            + " ");
-    fontLabel.setFont(verdana11);
-    fontLabel.setHorizontalAlignment(SwingConstants.RIGHT);
-    fontLabel.setText(MessageManager.getString("label.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, 196, 69, 23));
-    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();
-      }
-    });
-    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();
-      }
-    });
-
-    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, 287, 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);
+  /**
+   * 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(MessageManager.getString("label.port"));
+    JLabel browserLabel = new JLabel();
     browserLabel.setFont(new java.awt.Font("SansSerif", 0, 11));
     browserLabel.setHorizontalAlignment(SwingConstants.TRAILING);
     browserLabel.setText(MessageManager
@@ -559,6 +451,7 @@ public class GPreferences extends JPanel
     versioncheck.setFont(verdana11);
     versioncheck.setHorizontalAlignment(SwingConstants.RIGHT);
     versioncheck.setHorizontalTextPosition(SwingConstants.LEADING);
+    JButton newLink = new JButton();
     newLink.setText(MessageManager.getString("action.new"));
     newLink.addActionListener(new java.awt.event.ActionListener()
     {
@@ -567,6 +460,7 @@ public class GPreferences extends JPanel
         newLink_actionPerformed(e);
       }
     });
+    JButton editLink = new JButton();
     editLink.setText(MessageManager.getString("action.edit"));
     editLink.addActionListener(new java.awt.event.ActionListener()
     {
@@ -575,6 +469,7 @@ public class GPreferences extends JPanel
         editLink_actionPerformed(e);
       }
     });
+    JButton deleteLink = new JButton();
     deleteLink.setText(MessageManager.getString("action.delete"));
     deleteLink.addActionListener(new java.awt.event.ActionListener()
     {
@@ -602,14 +497,20 @@ public class GPreferences extends JPanel
       }
     });
 
+    JScrollPane linkScrollPane = new JScrollPane();
     linkScrollPane.setBorder(null);
+    JPanel linkPanel = new JPanel();
     linkPanel.setBorder(new TitledBorder(MessageManager
             .getString("label.url_linkfrom_sequence_id")));
-    linkPanel.setLayout(borderLayout2);
+    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);
@@ -635,146 +536,493 @@ public class GPreferences extends JPanel
         useProxy_actionPerformed();
       }
     });
+    linkPanel.add(editLinkButtons, BorderLayout.EAST);
+    editLinkButtons.add(newLink, null);
+    editLinkButtons.add(editLink, null);
+    editLinkButtons.add(deleteLink, null);
+    linkPanel.add(linkScrollPane, BorderLayout.CENTER);
+    linkScrollPane.getViewport().add(linkPanel2, null);
+    linkPanel2.add(linkURLList, BorderLayout.CENTER);
+    linkPanel2.add(linkNameList, BorderLayout.WEST);
+    JPanel jPanel1 = new JPanel();
+    TitledBorder titledBorder1 = new TitledBorder(
+            MessageManager.getString("label.proxy_server"));
     jPanel1.setBorder(titledBorder1);
-    jPanel1.setLayout(gridBagLayout1);
-    sortby.setFont(verdana11);
-    sortby.setBounds(new Rectangle(172, 240, 155, 21));
-    sortLabel.setFont(verdana11);
-    sortLabel.setHorizontalAlignment(SwingConstants.RIGHT);
-    sortLabel.setText(MessageManager.getString("label.sort_by"));
-    sortAnnBy.setFont(verdana11);
-    sortAnnBy.setBounds(new Rectangle(172, 264, 120, 21));
-    sortAnnLabel.setFont(verdana11);
-    sortAnnLabel.setHorizontalAlignment(SwingConstants.RIGHT);
-    sortAnnLabel.setText(MessageManager.getString("label.sort_ann_by"));
-    sortAutocalc.setFont(verdana11);
-    sortAutocalc.setBounds(new Rectangle(300, 264, 185, 21));
-    jPanel2.setBounds(new Rectangle(7, 17, 158, 297));
-    jPanel2.setLayout(gridLayout2);
-    gridLayout2.setRows(13);
-    exportTab.setLayout(null);
-    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));
-    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") + "     ");
-    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(MessageManager.getString("label.full_sequence_id"));
-    gridLayout3.setRows(8);
-    smoothFont.setFont(verdana11);
-    smoothFont.setHorizontalAlignment(SwingConstants.RIGHT);
-    smoothFont.setHorizontalTextPosition(SwingConstants.LEADING);
-    smoothFont.setText(MessageManager.getString("label.smooth_font"));
-    calcTab.setLayout(null);
-    autoCalculateConsCheck.setFont(JvSwingUtils.getLabelFont());
-    autoCalculateConsCheck.setText(MessageManager
-            .getString("label.autocalculate_consensus"));
-    autoCalculateConsCheck.setBounds(new Rectangle(21, 52, 209, 23));
-    padGaps.setFont(JvSwingUtils.getLabelFont());
-    padGaps.setText(MessageManager.getString("label.pad_gaps_when_editing"));
-    padGaps.setBounds(new Rectangle(22, 94, 168, 23));
-    sortByTree.setFont(JvSwingUtils.getLabelFont());
-    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));
-
-    autoIdWidth.setFont(JvSwingUtils.getLabelFont());
-    autoIdWidth.setText(MessageManager
-            .getString("label.automatically_set_id_width"));
-    autoIdWidth
-            .setToolTipText(JvSwingUtils.wrapTooltip(true, MessageManager.getString("label.adjusts_width_generated_eps_png")));
-    autoIdWidth.setBounds(new Rectangle(228, 96, 188, 23));
-    autoIdWidth.addActionListener(new ActionListener()
-    {
-
-      @Override
-      public void actionPerformed(ActionEvent e)
-      {
-        autoIdWidth_actionPerformed();
+    jPanel1.setLayout(new GridBagLayout());
+    jPanel1.add(serverLabel, new GridBagConstraints(0, 1, 1, 1, 0.0, 0.0,
+            GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(0,
+                    2, 4, 0), 5, 0));
+    jPanel1.add(portLabel, new GridBagConstraints(2, 1, 1, 1, 0.0, 0.0,
+            GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(0,
+                    0, 4, 0), 11, 6));
+    connectTab.add(linkPanel, new GridBagConstraints(0, 0, 2, 1, 1.0, 1.0,
+            GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(
+                    16, 0, 0, 12), 359, -17));
+    connectTab.add(jPanel1, new GridBagConstraints(0, 2, 2, 1, 1.0, 1.0,
+            GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(
+                    21, 0, 35, 12), 4, 6));
+    connectTab.add(browserLabel, new GridBagConstraints(0, 1, 1, 1, 0.0,
+            0.0, GridBagConstraints.WEST, GridBagConstraints.NONE,
+            new Insets(16, 0, 0, 0), 5, 1));
+    jPanel1.add(useProxy, new GridBagConstraints(0, 0, 2, 1, 0.0, 0.0,
+            GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(0,
+                    2, 5, 185), 2, -4));
+    jPanel1.add(proxyPortTB, new GridBagConstraints(3, 1, 1, 1, 1.0, 0.0,
+            GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL,
+            new Insets(0, 2, 4, 2), 54, 1));
+    jPanel1.add(proxyServerTB, new GridBagConstraints(1, 1, 1, 1, 1.0, 0.0,
+            GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL,
+            new Insets(0, 2, 4, 0), 263, 1));
+    connectTab.add(defaultBrowser, new GridBagConstraints(1, 1, 1, 1, 1.0,
+            0.0, GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL,
+            new Insets(15, 0, 0, 15), 307, 1));
+    connectTab.add(usagestats, new GridBagConstraints(0, 4, 1, 1, 1.0, 0.0,
+            GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL,
+            new Insets(0, 2, 4, 2), 70, 1));
+    connectTab.add(questionnaire, new GridBagConstraints(1, 4, 1, 1, 1.0,
+            0.0, GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL,
+            new Insets(0, 2, 4, 2), 70, 1));
+    connectTab.add(versioncheck, new GridBagConstraints(0, 5, 1, 1, 1.0,
+            0.0, GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL,
+            new Insets(0, 2, 4, 2), 70, 1));
+    return connectTab;
+  }
+
+  /**
+   * Initialises the parent panel which contains the tabbed sections.
+   * 
+   * @return
+   */
+  private JPanel initOkCancelPanel()
+  {
+    JButton ok = new JButton();
+    ok.setText(MessageManager.getString("action.ok"));
+    ok.addActionListener(new ActionListener()
+    {
+      public void actionPerformed(ActionEvent e)
+      {
+        ok_actionPerformed(e);
       }
     });
-    userIdWidthlabel.setFont(JvSwingUtils.getLabelFont());
-    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()
+    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()
+  {
+    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()
+  {
+    JPanel 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)
       {
-        userIdWidth_actionPerformed();
+        boolean selected = structFromPdb.isSelected();
+        // enable other options only when the first is checked
+        useRnaView.setEnabled(selected);
+        addSecondaryStructure.setEnabled(selected);
+        addTempFactor.setEnabled(selected);
       }
     });
-    modellerOutput.setFont(JvSwingUtils.getLabelFont());
-    modellerOutput.setText(MessageManager
-            .getString("label.use_modeller_output"));
-    modellerOutput.setBounds(new Rectangle(228, 226, 168, 23));
+    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(150, ypos, 120, height));
+    structViewer.addItem(Viewer.JMOL.name());
+    structViewer.addItem(Viewer.CHIMERA.name());
+    structureTab.add(structViewer);
+
+    return structureTab;
+  }
 
-    dasPanel.setLayout(borderLayout4);
-    wsPanel.setLayout(borderLayout5);
-    wrap.setFont(JvSwingUtils.getLabelFont());
+  /**
+   * 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(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, 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, 120, 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(300, 265, 185, 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(JvSwingUtils.getLabelFont());
+    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(JvSwingUtils.getLabelFont());
+    idItalics.setFont(verdana11);
     idItalics.setHorizontalAlignment(SwingConstants.RIGHT);
     idItalics.setHorizontalTextPosition(SwingConstants.LEADING);
     idItalics.setText(MessageManager
             .getString("label.sequence_name_italics"));
-    openoverv.setFont(JvSwingUtils.getLabelFont());
+    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);
@@ -788,6 +1036,7 @@ public class GPreferences extends JPanel
     jPanel2.add(sortLabel);
     jPanel2.add(sortAnnLabel);
     jPanel2.add(startupCheckbox);
+    visualTab.add(jPanel2);
     visualTab.add(annotations);
     visualTab.add(startupFileTextfield);
     visualTab.add(sortby);
@@ -797,147 +1046,7 @@ public class GPreferences extends JPanel
     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(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);
-    visualTab.add(jPanel2);
-    JvSwingUtils.addtoLayout(visual2Tab, 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);
-    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);
-    editLinkButtons.add(deleteLink, null);
-    linkPanel.add(linkScrollPane, BorderLayout.CENTER);
-    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);
-    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(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));
-
-    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, MessageManager.getString("label.visual"));
-    tabbedPane.add(visual2Tab, MessageManager.getString("label.colours"));
-    tabbedPane.add(connectTab,
-            MessageManager.getString("label.connections"));
-    tabbedPane.add(exportTab, MessageManager.getString("label.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, MessageManager.getString("label.editing"));
-    calcTab.add(autoCalculateConsCheck);
-    calcTab.add(padGaps);
-    calcTab.add(sortByTree);
-
-    tabbedPane
-            .add(dasPanel, MessageManager.getString("label.das_settings"));
-    tabbedPane.add(wsPanel, MessageManager.getString("label.web_services"));
-
-    exportTab.add(epsLabel);
-    exportTab.add(epsRendering);
-    exportTab.add(jPanel11);
+    return visualTab;
   }
 
   protected void autoIdWidth_actionPerformed()
@@ -952,16 +1061,12 @@ public class GPreferences extends JPanel
 
   }
 
-  protected void maxColour_actionPerformed()
+  protected void maxColour_actionPerformed(JPanel panel)
   {
-    // TODO Auto-generated method stub
-
   }
 
-  protected void minColour_actionPerformed()
+  protected void minColour_actionPerformed(JPanel panel)
   {
-    // TODO Auto-generated method stub
-
   }
 
   protected void showunconserved_actionPerformed(ActionEvent e)