JAL-4036 Don't autosearch changing index when autosearch is de-selected
[jalview.git] / src / jalview / fts / core / FTSDataColumnPreferences.java
index 1a8f398..0971235 100644 (file)
@@ -23,6 +23,7 @@ package jalview.fts.core;
 import jalview.fts.api.FTSDataColumnI;
 import jalview.fts.api.FTSDataColumnI.FTSDataColumnGroupI;
 import jalview.fts.api.FTSRestClientI;
+import jalview.fts.api.StructureFTSRestClientI;
 import jalview.fts.service.pdb.PDBFTSRestClient;
 
 import java.util.ArrayList;
@@ -40,6 +41,13 @@ import javax.swing.table.AbstractTableModel;
 import javax.swing.table.TableModel;
 import javax.swing.table.TableRowSorter;
 
+/**
+ * Helps render GUI allowing control of which columns to show for entries
+ * returned from an FTS query. TODO: push down FTSClient specific code
+ * 
+ * @author tcofoegbu
+ *
+ */
 @SuppressWarnings("serial")
 public class FTSDataColumnPreferences extends JScrollPane
 {
@@ -70,7 +78,7 @@ public class FTSDataColumnPreferences extends JScrollPane
     if (source.equals(PreferenceSource.STRUCTURE_CHOOSER)
             || source.equals(PreferenceSource.PREFERENCES))
     {
-      structSummaryColumns = ((PDBFTSRestClient) ftsRestClient)
+      structSummaryColumns = ((StructureFTSRestClientI) ftsRestClient)
               .getAllDefaultDisplayedStructureDataColumns();
     }
     allFTSDataColumns.addAll(ftsRestClient.getAllFTSDataColumns());
@@ -79,28 +87,14 @@ public class FTSDataColumnPreferences extends JScrollPane
     this.getViewport().add(tbl_FTSDataColumnPrefs);
     this.currentSource = source;
 
-    String[] columnNames = null;
-    switch (source)
-    {
-    case SEARCH_SUMMARY:
-      columnNames = new String[] { "", "Display", "Group" };
-      break;
-    case STRUCTURE_CHOOSER:
-      columnNames = new String[] { "", "Display", "Group" };
-      break;
-    case PREFERENCES:
-      columnNames = new String[] { "PDB Field", "Show in search summary",
-          "Show in structure summary" };
-      break;
-    default:
-      break;
-    }
+    String[] columnNames = ftsRestClient.getPreferencesColumnsFor(source);
 
-    Object[][] data = new Object[allFTSDataColumns.size() - 1][3];
+    Object[][] data = new Object[allFTSDataColumns.size()][3];
 
     int x = 0;
     for (FTSDataColumnI field : allFTSDataColumns)
     {
+      // System.out.println("allFTSDataColumns==" + allFTSDataColumns);
       if (field.getName().equalsIgnoreCase("all"))
       {
         continue;
@@ -109,9 +103,11 @@ public class FTSDataColumnPreferences extends JScrollPane
       switch (source)
       {
       case SEARCH_SUMMARY:
-        data[x++] = new Object[] {
-            ftsRestClient.getAllDefaultDisplayedFTSDataColumns().contains(
-                    field), field.getName(), field.getGroup() };
+        data[x++] = new Object[] { ftsRestClient
+                .getAllDefaultDisplayedFTSDataColumns().contains(field),
+            field.getName(), field.getGroup() };
+        // System.out.println(" PUIS " + field.getName() + " ET AUSSI " +
+        // field.getGroup() + "X = " + x);
         break;
       case STRUCTURE_CHOOSER:
         data[x++] = new Object[] { structSummaryColumns.contains(field),
@@ -119,9 +115,9 @@ public class FTSDataColumnPreferences extends JScrollPane
         break;
       case PREFERENCES:
         data[x++] = new Object[] {
-            field.getName(),
-            ftsRestClient.getAllDefaultDisplayedFTSDataColumns().contains(
-                    field), structSummaryColumns.contains(field) };
+            field.getName(), ftsRestClient
+                    .getAllDefaultDisplayedFTSDataColumns().contains(field),
+            structSummaryColumns.contains(field) };
         break;
       default:
         break;
@@ -155,7 +151,6 @@ public class FTSDataColumnPreferences extends JScrollPane
       int columnIndexToSort = 2;
       sortKeys.add(new RowSorter.SortKey(columnIndexToSort,
               SortOrder.ASCENDING));
-      sorter.setSortKeys(sortKeys);
       sorter.setComparator(columnIndexToSort,
               new Comparator<FTSDataColumnGroupI>()
               {
@@ -166,7 +161,8 @@ public class FTSDataColumnPreferences extends JScrollPane
                   return o1.getSortOrder() - o2.getSortOrder();
                 }
               });
-      sorter.sort();
+      sorter.setSortKeys(sortKeys);
+      // BH 2018 setSortKeys does a sort sorter.sort();
 
       tbl_FTSDataColumnPrefs
               .setAutoResizeMode(JTable.AUTO_RESIZE_NEXT_COLUMN);