JAL-437 remove code duplicated by merge
[jalview.git] / src / jalview / gui / FeatureSettings.java
index 6182885..6957ea4 100644 (file)
@@ -107,6 +107,9 @@ import javax.swing.table.TableColumn;
 public class FeatureSettings extends JPanel
         implements FeatureSettingsControllerI
 {
+  private static final String SEQUENCE_FEATURE_COLOURS = MessageManager
+          .getString("label.sequence_feature_colours");
+
   /*
    * column indices of fields in Feature Settings table
    */
@@ -859,7 +862,7 @@ public class FeatureSettings extends JPanel
   void load()
   {
     JalviewFileChooser chooser = new JalviewFileChooser("fc",
-            "Sequence Feature Colours");
+            SEQUENCE_FEATURE_COLOURS);
     chooser.setFileView(new JalviewFileView());
     chooser.setDialogTitle(
             MessageManager.getString("label.load_feature_colours"));
@@ -870,58 +873,67 @@ public class FeatureSettings extends JPanel
     if (value == JalviewFileChooser.APPROVE_OPTION)
     {
       File file = chooser.getSelectedFile();
+      load(file);
+    }
+  }
 
-      try
-      {
-        InputStreamReader in = new InputStreamReader(
-                new FileInputStream(file), "UTF-8");
+  /**
+   * Loads feature colours and filters from XML stored in the given file
+   * 
+   * @param file
+   */
+  void load(File file)
+  {
+    try
+    {
+      InputStreamReader in = new InputStreamReader(
+              new FileInputStream(file), "UTF-8");
 
-        JalviewUserColours jucs = JalviewUserColours.unmarshal(in);
+      JalviewUserColours jucs = JalviewUserColours.unmarshal(in);
 
-        /*
-         * load feature colours
-         */
-        for (int i = jucs.getColourCount() - 1; i >= 0; i--)
-        {
-          jalview.schemabinding.version2.Colour newcol = jucs.getColour(i);
-          FeatureColourI colour = Jalview2XML.unmarshalColour(newcol);
-          fr.setColour(newcol.getName(), colour);
-          fr.setOrder(newcol.getName(), i / (float) jucs.getColourCount());
-        }
+      /*
+       * load feature colours
+       */
+      for (int i = jucs.getColourCount() - 1; i >= 0; i--)
+      {
+        jalview.schemabinding.version2.Colour newcol = jucs.getColour(i);
+        FeatureColourI colour = Jalview2XML.unmarshalColour(newcol);
+        fr.setColour(newcol.getName(), colour);
+        fr.setOrder(newcol.getName(), i / (float) jucs.getColourCount());
+      }
 
-        /*
-         * load feature filters; loaded filters will replace any that are
-         * currently defined, other defined filters are left unchanged 
-         */
-        for (int i = 0; i < jucs.getFilterCount(); i++)
+      /*
+       * load feature filters; loaded filters will replace any that are
+       * currently defined, other defined filters are left unchanged 
+       */
+      for (int i = 0; i < jucs.getFilterCount(); i++)
+      {
+        jalview.schemabinding.version2.Filter filterModel = jucs
+                .getFilter(i);
+        String featureType = filterModel.getFeatureType();
+        FeatureMatcherSetI filter = Jalview2XML.unmarshalFilter(featureType,
+                filterModel.getMatcherSet());
+        if (!filter.isEmpty())
         {
-          jalview.schemabinding.version2.Filter filterModel = jucs
-                  .getFilter(i);
-          String featureType = filterModel.getFeatureType();
-          FeatureMatcherSetI filter = Jalview2XML.unmarshalFilter(featureType,
-                  filterModel.getMatcherSet());
-          if (!filter.isEmpty())
-          {
-            fr.setFeatureFilter(featureType, filter);
-          }
+          fr.setFeatureFilter(featureType, filter);
         }
+      }
 
-        /*
-         * update feature settings table
-         */
-        if (table != null)
-        {
-          resetTable(null);
-          Object[][] data = ((FeatureTableModel) table.getModel())
-                  .getData();
-          ensureOrder(data);
-          updateFeatureRenderer(data, false);
-          table.repaint();
-        }
-      } catch (Exception ex)
+      /*
+       * update feature settings table
+       */
+      if (table != null)
       {
-        System.out.println("Error loading User Colour File\n" + ex);
+        resetTable(null);
+        Object[][] data = ((FeatureTableModel) table.getModel())
+                .getData();
+        ensureOrder(data);
+        updateFeatureRenderer(data, false);
+        table.repaint();
       }
+    } catch (Exception ex)
+    {
+      System.out.println("Error loading User Colour File\n" + ex);
     }
   }
 
@@ -932,7 +944,7 @@ public class FeatureSettings extends JPanel
   void save()
   {
     JalviewFileChooser chooser = new JalviewFileChooser("fc",
-            "Sequence Feature Colours");
+            SEQUENCE_FEATURE_COLOURS);
     chooser.setFileView(new JalviewFileView());
     chooser.setDialogTitle(
             MessageManager.getString("label.save_feature_colours"));
@@ -942,77 +954,87 @@ public class FeatureSettings extends JPanel
 
     if (value == JalviewFileChooser.APPROVE_OPTION)
     {
-      String choice = chooser.getSelectedFile().getPath();
-      JalviewUserColours ucs = new JalviewUserColours();
-      ucs.setSchemeName("Sequence Features");
-      try
-      {
-        PrintWriter out = new PrintWriter(new OutputStreamWriter(
-                new FileOutputStream(choice), "UTF-8"));
+      save(chooser.getSelectedFile());
+    }
+  }
 
-        /*
-         * sort feature types by colour order, from 0 (highest)
-         * to 1 (lowest)
-         */
-        Set<String> fr_colours = fr.getAllFeatureColours();
-        String[] sortedTypes = fr_colours
-                .toArray(new String[fr_colours.size()]);
-        Arrays.sort(sortedTypes, new Comparator<String>()
-        {
-          @Override
-          public int compare(String type1, String type2)
-          {
-            return Float.compare(fr.getOrder(type1), fr.getOrder(type2));
-          }
-        });
+  /**
+   * Saves feature colours and filters to the given file
+   * 
+   * @param file
+   */
+  void save(File file)
+  {
+    JalviewUserColours ucs = new JalviewUserColours();
+    ucs.setSchemeName("Sequence Features");
+    try
+    {
+      PrintWriter out = new PrintWriter(new OutputStreamWriter(
+              new FileOutputStream(file), "UTF-8"));
 
-        /*
-         * save feature colours
-         */
-        for (String featureType : sortedTypes)
+      /*
+       * sort feature types by colour order, from 0 (highest)
+       * to 1 (lowest)
+       */
+      Set<String> fr_colours = fr.getAllFeatureColours();
+      String[] sortedTypes = fr_colours
+              .toArray(new String[fr_colours.size()]);
+      Arrays.sort(sortedTypes, new Comparator<String>()
+      {
+        @Override
+        public int compare(String type1, String type2)
         {
-          FeatureColourI fcol = fr.getFeatureStyle(featureType);
-          jalview.schemabinding.version2.Colour col = Jalview2XML.marshalColour(
-                  featureType, fcol);
-          ucs.addColour(col);
+          return Float.compare(fr.getOrder(type1), fr.getOrder(type2));
         }
+      });
 
-        /*
-         * save any feature filters
-         */
-        for (String featureType : sortedTypes)
-        {
-          FeatureMatcherSetI filter = fr.getFeatureFilter(featureType);
-          if (filter != null && !filter.isEmpty())
-          {
-            Iterator<FeatureMatcherI> iterator = filter.getMatchers().iterator();
-            FeatureMatcherI firstMatcher = iterator.next();
-            MatcherSet ms = Jalview2XML.marshalFilter(firstMatcher, iterator,
-                    filter.isAnded());
-            Filter filterModel = new Filter();
-            filterModel.setFeatureType(featureType);
-            filterModel.setMatcherSet(ms);
-            ucs.addFilter(filterModel);
-          }
-        }
+      /*
+       * save feature colours
+       */
+      for (String featureType : sortedTypes)
+      {
+        FeatureColourI fcol = fr.getFeatureStyle(featureType);
+        jalview.schemabinding.version2.Colour col = Jalview2XML.marshalColour(
+                featureType, fcol);
+        ucs.addColour(col);
+      }
 
-        ucs.marshal(out);
-        out.close();
-      } catch (Exception ex)
+      /*
+       * save any feature filters
+       */
+      for (String featureType : sortedTypes)
       {
-        ex.printStackTrace();
+        FeatureMatcherSetI filter = fr.getFeatureFilter(featureType);
+        if (filter != null && !filter.isEmpty())
+        {
+          Iterator<FeatureMatcherI> iterator = filter.getMatchers().iterator();
+          FeatureMatcherI firstMatcher = iterator.next();
+          MatcherSet ms = Jalview2XML.marshalFilter(firstMatcher, iterator,
+                  filter.isAnded());
+          Filter filterModel = new Filter();
+          filterModel.setFeatureType(featureType);
+          filterModel.setMatcherSet(ms);
+          ucs.addFilter(filterModel);
+        }
       }
+
+      ucs.marshal(out);
+      out.close();
+    } catch (Exception ex)
+    {
+      ex.printStackTrace();
     }
   }
 
   public void invertSelection()
   {
-    for (int i = 0; i < table.getRowCount(); i++)
+    Object[][] data = ((FeatureTableModel) table.getModel()).getData();
+    for (int i = 0; i < data.length; i++)
     {
-      Boolean value = (Boolean) table.getValueAt(i, SHOW_COLUMN);
-
-      table.setValueAt(new Boolean(!value.booleanValue()), i, SHOW_COLUMN);
+      data[i][SHOW_COLUMN] = !(Boolean) data[i][SHOW_COLUMN];
     }
+    updateFeatureRenderer(data, true);
+    table.repaint();
   }
 
   public void orderByAvWidth()
@@ -1207,22 +1229,6 @@ public class FeatureSettings extends JPanel
         }
       }
     });
-    help.setFont(JvSwingUtils.getLabelFont());
-    help.setText(MessageManager.getString("action.help"));
-    help.addActionListener(new ActionListener()
-    {
-      @Override
-      public void actionPerformed(ActionEvent e)
-      {
-        try
-        {
-          Help.showHelpWindow(HelpId.SequenceFeatureSettings);
-        } catch (HelpSetException e1)
-        {
-          e1.printStackTrace();
-        }
-      }
-    });
 
     JButton cancel = new JButton(MessageManager.getString("action.cancel"));
     cancel.setFont(JvSwingUtils.getLabelFont());
@@ -1252,6 +1258,8 @@ public class FeatureSettings extends JPanel
     JButton loadColours = new JButton(
             MessageManager.getString("label.load_colours"));
     loadColours.setFont(JvSwingUtils.getLabelFont());
+    loadColours.setToolTipText(
+            MessageManager.getString("label.load_colours_tooltip"));
     loadColours.addActionListener(new ActionListener()
     {
       @Override
@@ -1264,6 +1272,8 @@ public class FeatureSettings extends JPanel
     JButton saveColours = new JButton(
             MessageManager.getString("label.save_colours"));
     saveColours.setFont(JvSwingUtils.getLabelFont());
+    saveColours.setToolTipText(
+            MessageManager.getString("label.save_colours_tooltip"));
     saveColours.addActionListener(new ActionListener()
     {
       @Override