From: gmungoc Date: Mon, 3 Nov 2014 16:59:26 +0000 (+0000) Subject: Merge branch 'features/JAL-1152annotationSorting' of https://source.jalview.org/git... X-Git-Tag: Release_2_8_2b1^2~36^2~7^2~5 X-Git-Url: http://source.jalview.org/gitweb/?a=commitdiff_plain;h=cbd3d4ab55c9b20ae136151149386cde6f4546a5;hp=4251d86e07f0b04a485e9417c460853799a06f51;p=jalview.git Merge branch 'features/JAL-1152annotationSorting' of https://source.jalview.org/git/jalview.git into features/JAL-1152annotationSorting --- diff --git a/help/help.jhm b/help/help.jhm index b199dbf..7750265 100755 --- a/help/help.jhm +++ b/help/help.jhm @@ -112,13 +112,14 @@ + - + diff --git a/help/helpTOC.xml b/help/helpTOC.xml index 48a2b2a..4c09e8f 100755 --- a/help/helpTOC.xml +++ b/help/helpTOC.xml @@ -116,17 +116,18 @@ - - - - - - - - - - - + + + + + + + + + + + + diff --git a/help/html/menus/alignmentMenu.html b/help/html/menus/alignmentMenu.html index a7cb733..f67faa9 100755 --- a/help/html/menus/alignmentMenu.html +++ b/help/html/menus/alignmentMenu.html @@ -279,39 +279,6 @@ selected, the view will automatically scroll to display the highlighted sequence position corresponding to the position under the mouse pointer in a linked alignment or structure view. -
  • Show Annotations
    If this - is selected the "Annotation Panel" will be displayed - below the alignment. The default setting is to display the - conservation calculation, quality calculation and consensus values - as bar charts. -
  • -
  • Show All Annotations
    - Show all available annotations on the alignment. You can selectively hide these from the Popup - or Annotation menus. (Since Jalview 2.8.2)
  • -
  • Hide All Annotations
    - Hide all annotations on the alignment. (Since Jalview 2.8.2)
  • -
  • Autocalculated Annotation
    Settings - for the display of autocalculated annotation. -
      -
    • Apply to all groups
      When - ticked, any modification to the current settings will be applied - to all autocalculated annotation.
    • -
    • Show Consensus Histogram
      - Enable or disable the display of the histogram above the - consensus sequence.
    • -
    • Show Consensus Logo
      Enable - or disable the display of the Consensus Logo above the consensus - sequence.
    • -
    • Normalise Consensus Logo
      -
      When enabled, scales all logo stacks to the same height, - making it easier to compare symbol diversity in highly variable - regions.
    • -
    • Group Conservation
      When - ticked, display a conservation row for all groups (only available - for protein alignments).
    • -
    • Apply to all groups
      When - ticked, display a consensus row for all groups.
    • -
  • Show Sequence Features
    Show or hide sequence features on this alignment.
  • @@ -338,6 +305,61 @@ using the mouse. +
  • Annotations (Since Jalview 2.8.2) +
      +
    • Show Annotations
      If this + is selected the "Annotation Panel" will be displayed + below the alignment. The default setting is to display the + conservation calculation, quality calculation and consensus values + as bar charts. +
    • +
    • Show Alignment Related
      + Show all annotations that are for the alignment as a whole (for example, Consensus, + or secondary structure prediction from alignment).
    • +
    • Hide Alignment Related
      + Hide all annotations that are for the alignment as a whole.
    • +
    • Show Sequence Related
      + Show all annotations that are for individual sequences.
    • +
    • Hide Sequence Related
      + Hide all annotations that are for individual sequences.
    • +
    • You can also selectively show or hide annotations from the Popup + or Annotation menus.
    • +
    • Sort by Sequence
      Sort sequence-specific annotations by sequence order in the alignment + (and within that, by label).
    • +
    • Sort by Label
      Sort sequence-specific annotations by label + (and within that, by sequence order). If neither sort order is selected, no sorting is applied, + allowing you to make a manual ordering of the annotations.
    • +
    • Autocalculated Annotation
      Settings + for the display of autocalculated annotation. +
        +
      • Show first
        + Show autocalculated annotations above sequence-specific annotations. + Note this also applies to other annotations for the alignment, for example secondary + structure prediction from alignment.
      • +
      • Show last
        + Show autocalculated / alignment annotations below sequence-specific annotations.
      • +
      • Apply to all groups
        When + ticked, any modification to the current settings will be applied + to all autocalculated annotation.
      • +
      • Show Consensus Histogram
        + Enable or disable the display of the histogram above the + consensus sequence.
      • +
      • Show Consensus Logo
        Enable + or disable the display of the Consensus Logo above the consensus + sequence.
      • +
      • Normalise Consensus Logo
        +
        When enabled, scales all logo stacks to the same height, + making it easier to compare symbol diversity in highly variable + regions.
      • +
      • Group Conservation
        When + ticked, display a conservation row for all groups (only available + for protein alignments).
      • +
      • Group Consensus
        When + ticked, display a consensus row for all groups.
      • +
      +
    • +
    +
  • Alignment Window Format Menu
    • Font...
      Opens the diff --git a/help/html/menus/alwannotation.html b/help/html/menus/alwannotation.html new file mode 100755 index 0000000..2f98542 --- /dev/null +++ b/help/html/menus/alwannotation.html @@ -0,0 +1,79 @@ + + + +Alignment Window Menus + + + +

      Alignment Window Annotations Menu (Since Jalview 2.8.2)

      +
        +
      • Show Alignment Related
        + Show all annotations that are for the alignment as a whole (for example, Consensus, + or secondary structure prediction from alignment)).
      • +
      • Hide Alignment Related
        + Hide all annotations that are for the alignment as a whole.
      • +
      • Show Sequence Related
        + Show all annotations that are for individual sequences.
      • +
      • Hide Sequence Related
        + Hide all annotations that are for individual sequences.
      • +
      • Show Alignment Related
        + Show all annotations that are for the alignment as a whole (for example, Consensus).
      • +
      • You can also selectively show or hide annotations from the Popup + or Annotation menus.
      • +
      • Sort by Sequence
        Sort sequence-specific annotations by sequence order in the alignment + (and within that, by label).
      • +
      • Sort by Label
        Sort sequence-specific annotations by label + (and within that, by sequence order). If neither sort order is selected, no sorting is applied, + allowing you to make a manual ordering of the annotations.
      • +
      • Autocalculated Annotation
        Settings + for the display of autocalculated annotation. +
          +
        • Show first
          + Show autocalculated annotations above sequence-specific annotations. + Note this also applies to other annotations for the alignment, for example secondary + structure prediction from alignment.
        • +
        • Show last
          + Show autocalculated / alignment annotations below sequence-specific annotations.
        • +
        • Apply to all groups
          When + ticked, any modification to the current settings will be applied + to all autocalculated annotation.
        • +
        • Show Consensus Histogram
          + Enable or disable the display of the histogram above the + consensus sequence.
        • +
        • Show Consensus Logo
          Enable + or disable the display of the Consensus Logo above the consensus + sequence.
        • +
        • Normalise Consensus Logo
          +
          When enabled, scales all logo stacks to the same height, + making it easier to compare symbol diversity in highly variable + regions.
        • +
        • Group Conservation
          When + ticked, display a conservation row for all groups (only available + for protein alignments).
        • +
        • Group Consensus
          When + ticked, display a consensus row for all groups.
        • +
        +
      • +
      +

       

      + + diff --git a/help/html/menus/alwannotations.html b/help/html/menus/alwannotationpanel.html similarity index 100% rename from help/html/menus/alwannotations.html rename to help/html/menus/alwannotationpanel.html diff --git a/help/html/menus/alwview.html b/help/html/menus/alwview.html index cb38708..e8fce84 100755 --- a/help/html/menus/alwview.html +++ b/help/html/menus/alwview.html @@ -38,43 +38,6 @@ All hidden Columns / Sequences / Sequences and Columns will be revealed.
    • Hide→(all Columns / Sequences / Selected Region / All but Selected Region)
      Hides the currently selected Columns / Sequences / Region or everything but the selected Region.
    • -
    • Show Annotations
      -
      If this is selected the "Annotation Panel" will be - displayed below the alignment. The default setting is to display the conservation - calculation, quality calculation and consensus values as bar charts.
    • -
    • Show All Annotations
      - Show all available annotations on the alignment. You can selectively hide these from the Popup -  or Annotation menus. (Since Jalview 2.8.2)
    • -
    • Hide All Annotations
      - Hide all annotations on the alignment. (Since Jalview 2.8.2)
    • -
    • Autocalculated Annotation
      Settings for the display of autocalculated annotation. -
      • - Apply to all groups
        - When ticked, any modification to the current settings will be applied to all autocalculated annotation. -
      • -
      • - Show Consensus Histogram
        - Enable or disable the display of the histogram above the consensus sequence. -
      • -
      • - Show Consensus Logo
        - Enable or disable the display of the sequence logo above the consensus sequence. -
      • -
      • Normalise Consensus Logo
        -
        When enabled, scales all logo stacks to the same height, - making it easier to compare symbol diversity in highly variable - regions.
      • - -
      • - Group Conservation
        - When ticked, display a conservation row for all groups (only available for protein alignments). -
      • -
      • - Apply to all groups
        - When ticked, display a consensus row for all groups. -
      • -
      -
    • Automatic Scrolling
      When selected, the view will automatically scroll to display the highlighted sequence position corresponding to the position under the mouse diff --git a/help/html/menus/index.html b/help/html/menus/index.html index 2b51b18..7e1ed70 100755 --- a/help/html/menus/index.html +++ b/help/html/menus/index.html @@ -35,7 +35,7 @@ accessible once an alignment has been opened.

      The Popup Menus are opened by clicking with the right mouse button in the alignment display area or on a sequence label in the alignment window.

      -

      The Annotations Menu is opened +

      The Annotations Menu is opened by right-clicking on an annotation row label or in an annotation row.

      diff --git a/resources/lang/Messages.properties b/resources/lang/Messages.properties index fe04105..93977b4 100644 --- a/resources/lang/Messages.properties +++ b/resources/lang/Messages.properties @@ -480,10 +480,11 @@ label.edit_sequences = Edit Sequences label.sequence_details = Sequence Details label.jmol_help = Jmol Help label.all = All -label.sort_by = Sort by +label.sort_by = Sort alignment by label.sort_by_score = Sort by Score label.sort_by_density = Sort by Density label.sequence_sort_by_density = Sequence sort by Density +label.sort_ann_by = Sort annotations by label.sort_annotations_by_sequence = Sort by sequence label.sort_annotations_by_label = Sort by label label.reveal = Reveal diff --git a/src/jalview/analysis/AnnotationSorter.java b/src/jalview/analysis/AnnotationSorter.java index b9e9ed5..28fa1f8 100644 --- a/src/jalview/analysis/AnnotationSorter.java +++ b/src/jalview/analysis/AnnotationSorter.java @@ -17,9 +17,43 @@ import java.util.Comparator; public class AnnotationSorter { + /** + * enum for annotation sort options. The text description is used in the + * Preferences drop-down options. The enum name is saved in the preferences + * file. + * + * @author gmcarstairs + * + */ public enum SequenceAnnotationOrder { - SEQUENCE_AND_LABEL, LABEL_AND_SEQUENCE, NONE + // Text descriptions surface in the Preferences Sort by... options + SEQUENCE_AND_LABEL("Sequence"), LABEL_AND_SEQUENCE("Label"), NONE( + "No sort"); + + private String description; + + private SequenceAnnotationOrder(String s) + { + description = s; + } + + @Override + public String toString() + { + return description; + } + + public static SequenceAnnotationOrder forDescription(String d) { + for (SequenceAnnotationOrder order : values()) + { + if (order.toString().equals(d)) + { + return order; + } + } + return null; + } } private final AlignmentI alignment; diff --git a/src/jalview/bin/Cache.java b/src/jalview/bin/Cache.java index 2a9f53d..21a030b 100755 --- a/src/jalview/bin/Cache.java +++ b/src/jalview/bin/Cache.java @@ -32,8 +32,11 @@ import java.io.InputStream; import java.io.InputStreamReader; import java.text.DateFormat; import java.text.SimpleDateFormat; +import java.util.Collections; import java.util.Date; +import java.util.Enumeration; import java.util.Properties; +import java.util.TreeSet; import org.apache.log4j.ConsoleAppender; import org.apache.log4j.Level; @@ -204,13 +207,26 @@ 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 */ public static Logger log; /** Jalview Properties */ - public static Properties applicationProperties = new Properties(); + public static Properties applicationProperties = new Properties() { + // override results in properties output in alphabetical order + @Override + public synchronized Enumeration keys() { + return Collections.enumeration(new TreeSet(super.keySet())); + } + }; /** Default file is ~/.jalview_properties */ static String propertiesFile; diff --git a/src/jalview/gui/AlignFrame.java b/src/jalview/gui/AlignFrame.java index e6d86e9..00b204e 100644 --- a/src/jalview/gui/AlignFrame.java +++ b/src/jalview/gui/AlignFrame.java @@ -5805,7 +5805,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, this.alignPanel.av.setSortAnnotationsBy(getAnnotationSortOrder()); this.alignPanel.av .setShowAutocalculatedAbove(isShowAutoCalculatedAbove()); - alignPanel.updateAnnotation(applyAutoAnnotationSettings.getState()); + alignPanel.paintAlignment(true); } } diff --git a/src/jalview/gui/AlignViewport.java b/src/jalview/gui/AlignViewport.java index d331e82..a738991 100644 --- a/src/jalview/gui/AlignViewport.java +++ b/src/jalview/gui/AlignViewport.java @@ -366,9 +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( - "SORT_ANNOTATIONS", SequenceAnnotationOrder.NONE.name())); + Cache.SORT_ANNOTATIONS, SequenceAnnotationOrder.NONE.name())); showAutocalculatedAbove = Cache - .getDefault("SHOW_AUTOCALC_ABOVE", false); +.getDefault(Cache.SHOW_AUTOCALC_ABOVE, + false); } /** diff --git a/src/jalview/gui/Preferences.java b/src/jalview/gui/Preferences.java index e44915d..dfb89b2 100755 --- a/src/jalview/gui/Preferences.java +++ b/src/jalview/gui/Preferences.java @@ -20,19 +20,30 @@ */ package jalview.gui; -import java.util.*; - -import java.awt.*; -import java.awt.event.*; - -import javax.swing.*; - -import jalview.bin.*; -import jalview.io.*; -import jalview.jbgui.*; -import jalview.schemes.*; +import jalview.analysis.AnnotationSorter.SequenceAnnotationOrder; +import jalview.bin.Cache; +import jalview.io.JalviewFileChooser; +import jalview.io.JalviewFileView; +import jalview.jbgui.GPreferences; +import jalview.jbgui.GSequenceLink; +import jalview.schemes.ColourSchemeProperty; import jalview.util.MessageManager; +import java.awt.BorderLayout; +import java.awt.Color; +import java.awt.Dimension; +import java.awt.Font; +import java.awt.event.ActionEvent; +import java.awt.event.MouseEvent; +import java.util.Collection; +import java.util.StringTokenizer; +import java.util.Vector; + +import javax.swing.JColorChooser; +import javax.swing.JFileChooser; +import javax.swing.JInternalFrame; +import javax.swing.JOptionPane; + /** * DOCUMENT ME! * @@ -213,6 +224,24 @@ public class Preferences extends GPreferences sortby.addItem("Pairwise Identity"); sortby.setSelectedItem(Cache.getDefault("SORT_ALIGNMENT", "No sort")); + sortAnnBy.addItem(SequenceAnnotationOrder.NONE.toString()); + sortAnnBy + .addItem(SequenceAnnotationOrder.SEQUENCE_AND_LABEL.toString()); + sortAnnBy + .addItem(SequenceAnnotationOrder.LABEL_AND_SEQUENCE.toString()); + SequenceAnnotationOrder savedSort = SequenceAnnotationOrder + .valueOf(Cache.getDefault(Cache.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, + true); + sortAutocalc.setSelectedItem(showAbove ? sortAutocalc.getItemAt(0) + : sortAutocalc.getItemAt(1)); + epsRendering.addItem(MessageManager.getString("label.prompt_each_time")); epsRendering.addItem(MessageManager.getString("label.lineart")); epsRendering.addItem(MessageManager.getString("action.text")); @@ -355,6 +384,19 @@ public class Preferences extends GPreferences Cache.applicationProperties.setProperty("SORT_ALIGNMENT", sortby .getSelectedItem().toString()); + // convert description of sort order to enum name for save + SequenceAnnotationOrder annSortOrder = SequenceAnnotationOrder + .forDescription(sortAnnBy.getSelectedItem().toString()); + if (annSortOrder != null) + { + Cache.applicationProperties.setProperty(Cache.SORT_ANNOTATIONS, + annSortOrder.name()); + } + + final boolean showAutocalcFirst = sortAutocalc.getSelectedIndex() == 0; + Cache.applicationProperties.setProperty(Cache.SHOW_AUTOCALC_ABOVE, + Boolean.valueOf(showAutocalcFirst).toString()); + Cache.setColourProperty("ANNOTATIONCOLOUR_MIN", minColour.getBackground()); Cache.setColourProperty("ANNOTATIONCOLOUR_MAX", diff --git a/src/jalview/jbgui/GAlignFrame.java b/src/jalview/jbgui/GAlignFrame.java index dba77dd..a7852b4 100755 --- a/src/jalview/jbgui/GAlignFrame.java +++ b/src/jalview/jbgui/GAlignFrame.java @@ -1139,15 +1139,20 @@ public class GAlignFrame extends JInternalFrame hideAllAnnotations_actionPerformed(true, false); } }); + SequenceAnnotationOrder sortAnnotationsBy = SequenceAnnotationOrder + .valueOf(Cache.getDefault(Cache.SORT_ANNOTATIONS, + SequenceAnnotationOrder.NONE.name())); sortAnnBySequence.setText(MessageManager .getString("label.sort_annotations_by_sequence")); + sortAnnBySequence + .setSelected(sortAnnotationsBy == SequenceAnnotationOrder.SEQUENCE_AND_LABEL); sortAnnBySequence.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { boolean newState = sortAnnBySequence.getState(); - sortAnnByLabel.setState(false); + sortAnnByLabel.setSelected(false); setAnnotationSortOrder(newState ? SequenceAnnotationOrder.SEQUENCE_AND_LABEL : SequenceAnnotationOrder.NONE); sortAnnotations_actionPerformed(); @@ -1155,13 +1160,15 @@ public class GAlignFrame extends JInternalFrame }); sortAnnByLabel.setText(MessageManager .getString("label.sort_annotations_by_label")); + sortAnnByLabel + .setSelected(sortAnnotationsBy == SequenceAnnotationOrder.LABEL_AND_SEQUENCE); sortAnnByLabel.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { boolean newState = sortAnnByLabel.getState(); - sortAnnBySequence.setState(false); + sortAnnBySequence.setSelected(false); setAnnotationSortOrder(newState ? SequenceAnnotationOrder.LABEL_AND_SEQUENCE : SequenceAnnotationOrder.NONE); sortAnnotations_actionPerformed(); @@ -1415,7 +1422,8 @@ public class GAlignFrame extends JInternalFrame }); showAutoFirst.setText(MessageManager.getString("label.show_first")); - showAutoFirst.setState(Cache.getDefault("SHOW_AUTOCALC_ABOVE", false)); + showAutoFirst.setState(Cache.getDefault(Cache.SHOW_AUTOCALC_ABOVE, + false)); showAutoFirst.addActionListener(new ActionListener() { @Override diff --git a/src/jalview/jbgui/GPreferences.java b/src/jalview/jbgui/GPreferences.java index bf01a01..2223c1f 100755 --- a/src/jalview/jbgui/GPreferences.java +++ b/src/jalview/jbgui/GPreferences.java @@ -23,13 +23,40 @@ package jalview.jbgui; import jalview.gui.JvSwingUtils; import jalview.util.MessageManager; -import java.awt.*; -import java.awt.event.*; - -import javax.swing.*; -import javax.swing.border.*; -import javax.swing.event.*; +import java.awt.BorderLayout; +import java.awt.Color; +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.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.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.ListSelectionEvent; +import javax.swing.event.ListSelectionListener; /** * DOCUMENT ME! @@ -73,19 +100,19 @@ public class GPreferences extends JPanel JLabel gapLabel = new JLabel(); - protected JComboBox colour = new JComboBox(); + protected JComboBox colour = new JComboBox(); JLabel colourLabel = new JLabel(); JLabel fontLabel = new JLabel(); - protected JComboBox fontSizeCB = new JComboBox(); + protected JComboBox fontSizeCB = new JComboBox(); - protected JComboBox fontStyleCB = new JComboBox(); + protected JComboBox fontStyleCB = new JComboBox(); - protected JComboBox fontNameCB = new JComboBox(); + protected JComboBox fontNameCB = new JComboBox(); - protected JComboBox gapSymbolCB = new JComboBox(); + protected JComboBox gapSymbolCB = new JComboBox(); protected JCheckBox startupCheckbox = new JCheckBox(); @@ -145,10 +172,16 @@ public class GPreferences extends JPanel GridBagLayout gridBagLayout3 = new GridBagLayout(); - protected JComboBox sortby = new JComboBox(); + protected JComboBox sortby = new JComboBox(); JLabel sortLabel = new JLabel(); + protected JComboBox sortAnnBy = new JComboBox(); + + protected JComboBox sortAutocalc = new JComboBox(); + + JLabel sortAnnLabel = new JLabel(); + JPanel jPanel2 = new JPanel(); JPanel visual2panel = new JPanel(); @@ -169,7 +202,7 @@ public class GPreferences extends JPanel JLabel epsLabel = new JLabel(); - protected JComboBox epsRendering = new JComboBox(); + protected JComboBox epsRendering = new JComboBox(); protected JLabel userIdWidthlabel = new JLabel(); @@ -450,7 +483,7 @@ public class GPreferences extends JPanel fontNameCB.setFont(verdana11); fontNameCB.setBounds(new Rectangle(172, 104, 147, 23)); gapSymbolCB.setFont(verdana11); - gapSymbolCB.setBounds(new Rectangle(172, 204, 69, 23)); + gapSymbolCB.setBounds(new Rectangle(172, 196, 69, 23)); mincolourLabel.setFont(verdana11); mincolourLabel.setHorizontalAlignment(SwingConstants.RIGHT); mincolourLabel.setText(MessageManager.getString("label.min_colour")); @@ -484,7 +517,7 @@ public class GPreferences extends JPanel startupCheckbox.setHorizontalTextPosition(SwingConstants.LEFT); startupCheckbox.setSelected(true); startupFileTextfield.setFont(verdana11); - startupFileTextfield.setBounds(new Rectangle(172, 273, 270, 20)); + startupFileTextfield.setBounds(new Rectangle(172, 287, 270, 20)); startupFileTextfield.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent e) @@ -605,13 +638,20 @@ public class GPreferences extends JPanel jPanel1.setBorder(titledBorder1); jPanel1.setLayout(gridBagLayout1); sortby.setFont(verdana11); - sortby.setBounds(new Rectangle(172, 249, 155, 21)); + sortby.setBounds(new Rectangle(172, 240, 155, 21)); sortLabel.setFont(verdana11); sortLabel.setHorizontalAlignment(SwingConstants.RIGHT); sortLabel.setText(MessageManager.getString("label.sort_by")); - jPanel2.setBounds(new Rectangle(7, 17, 158, 278)); + 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(12); + gridLayout2.setRows(13); exportTab.setLayout(null); epsLabel.setFont(verdana11); epsLabel.setHorizontalAlignment(SwingConstants.RIGHT); @@ -746,10 +786,13 @@ public class GPreferences extends JPanel jPanel2.add(gapLabel); jPanel2.add(wrap); jPanel2.add(sortLabel); + jPanel2.add(sortAnnLabel); jPanel2.add(startupCheckbox); visualTab.add(annotations); visualTab.add(startupFileTextfield); visualTab.add(sortby); + visualTab.add(sortAnnBy); + visualTab.add(sortAutocalc); visualTab.add(gapSymbolCB); visualTab.add(fontNameCB); visualTab.add(fontSizeCB);