JAL-2808 update spike to latest (filter range, Present option)
[jalview.git] / src / jalview / gui / FeatureSettings.java
index fedfe3f..2b3688f 100644 (file)
  */
 package jalview.gui;
 
-import static jalview.viewmodel.seqfeatures.FeatureRendererModel.COLOUR_COLUMN;
-import static jalview.viewmodel.seqfeatures.FeatureRendererModel.FILTER_COLUMN;
-import static jalview.viewmodel.seqfeatures.FeatureRendererModel.SHOW_COLUMN;
-import static jalview.viewmodel.seqfeatures.FeatureRendererModel.TYPE_COLUMN;
+import static jalview.gui.FeatureSettings.FeatureTableModel.COLOUR_COLUMN;
+import static jalview.gui.FeatureSettings.FeatureTableModel.FILTER_COLUMN;
+import static jalview.gui.FeatureSettings.FeatureTableModel.SHOW_COLUMN;
+import static jalview.gui.FeatureSettings.FeatureTableModel.TYPE_COLUMN;
 
 import jalview.api.FeatureColourI;
 import jalview.api.FeatureSettingsControllerI;
@@ -42,6 +42,7 @@ import jalview.util.QuickSort;
 import jalview.util.matcher.KeyedMatcherSet;
 import jalview.util.matcher.KeyedMatcherSetI;
 import jalview.viewmodel.AlignmentViewport;
+import jalview.viewmodel.seqfeatures.FeatureRendererModel.FeatureSettingsBean;
 import jalview.ws.DasSequenceFeatureFetcher;
 import jalview.ws.dbsources.das.api.jalviewSourceI;
 
@@ -111,14 +112,10 @@ public class FeatureSettings extends JPanel
 {
   private static final int COLUMN_COUNT = 4;
 
-  private static final String COLON = ":";
-
   private static final int MIN_WIDTH = 400;
 
   private static final int MIN_HEIGHT = 400;
 
-  private static final int MAX_TOOLTIP_LENGTH = 50;
-
   DasSourceBrowser dassourceBrowser;
 
   DasSequenceFeatureFetcher dasFeatureFetcher;
@@ -1105,12 +1102,32 @@ public class FeatureSettings extends JPanel
    */
   private void updateFeatureRenderer(Object[][] data, boolean visibleNew)
   {
-    if (fr.setFeaturePriority(data, visibleNew))
+    FeatureSettingsBean[] rowData = getTableAsBeans(data);
+
+    if (fr.setFeaturePriority(rowData, visibleNew))
     {
       af.alignPanel.paintAlignment(true, true);
     }
   }
 
+  /**
+   * Converts table data into an array of data beans
+   */
+  private FeatureSettingsBean[] getTableAsBeans(Object[][] data)
+  {
+    FeatureSettingsBean[] rowData = new FeatureSettingsBean[data.length];
+    for (int i = 0; i < data.length; i++)
+    {
+      String type = (String) data[i][TYPE_COLUMN];
+      FeatureColourI colour = (FeatureColourI) data[i][COLOUR_COLUMN];
+      KeyedMatcherSetI theFilter = (KeyedMatcherSetI) data[i][FILTER_COLUMN];
+      Boolean isShown = (Boolean) data[i][SHOW_COLUMN];
+      rowData[i] = new FeatureSettingsBean(type, colour, theFilter,
+              isShown);
+    }
+    return rowData;
+  }
+
   private void jbInit() throws Exception
   {
     this.setLayout(new BorderLayout());
@@ -1492,6 +1509,16 @@ public class FeatureSettings extends JPanel
   // ///////////////////////////////////////////////////////////////////////
   class FeatureTableModel extends AbstractTableModel
   {
+    /*
+     * column indices of fields in Feature Settings table
+     */
+    static final int TYPE_COLUMN = 0;
+
+    static final int COLOUR_COLUMN = 1;
+
+    static final int FILTER_COLUMN = 2;
+
+    static final int SHOW_COLUMN = 3;
 
     private String[] columnNames = {
         MessageManager.getString("label.feature_type"),