JAL-2808 pass FeatureSettings to controller as array of data bean
[jalview.git] / src / jalview / appletgui / FeatureSettings.java
index 39a2747..7db1fbe 100755 (executable)
  */
 package jalview.appletgui;
 
-import static jalview.viewmodel.seqfeatures.FeatureRendererModel.COLOUR_COLUMN;
-import static jalview.viewmodel.seqfeatures.FeatureRendererModel.SHOW_COLUMN;
-import static jalview.viewmodel.seqfeatures.FeatureRendererModel.TYPE_COLUMN;
-
 import jalview.api.FeatureColourI;
 import jalview.api.FeatureSettingsControllerI;
 import jalview.datamodel.AlignmentI;
 import jalview.datamodel.SequenceI;
 import jalview.util.MessageManager;
+import jalview.viewmodel.seqfeatures.FeatureRendererModel.FeatureSettingsBean;
 
 import java.awt.BorderLayout;
 import java.awt.Button;
@@ -71,6 +68,12 @@ public class FeatureSettings extends Panel
         implements ItemListener, MouseListener, MouseMotionListener,
         ActionListener, AdjustmentListener, FeatureSettingsControllerI
 {
+  private static final int TYPE_COLUMN = 0;
+
+  private static final int COLOUR_COLUMN = 1;
+
+  private static final int SHOW_COLUMN = 2;
+
   FeatureRenderer fr;
 
   AlignmentPanel ap;
@@ -607,11 +610,27 @@ public class FeatureSettings extends Panel
     Object[][] data = new Object[tmpSize][columnCount];
     System.arraycopy(tmp, 0, data, 0, tmpSize);
 
-    fr.setFeaturePriority(data);
+    fr.setFeaturePriority(getTableAsBeans(data));
 
     ap.paintAlignment(updateOverview, updateOverview);
   }
 
+  /**
+   * 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];
+      Boolean isShown = (Boolean) data[i][SHOW_COLUMN];
+      // feature filter set to null as not (yet) offered in applet
+      rowData[i] = new FeatureSettingsBean(type, colour, null, isShown);
+    }
+    return rowData;
+  }
   MyCheckbox selectedCheck;
 
   boolean dragging = false;