JAL-4036 Don't autosearch changing index when autosearch is de-selected
[jalview.git] / src / jalview / fts / core / FTSDataColumnPreferences.java
index 1e38260..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,7 +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
 {
@@ -68,36 +75,26 @@ public class FTSDataColumnPreferences extends JScrollPane
           FTSRestClientI ftsRestClient)
   {
     this.ftsRestClient = ftsRestClient;
-    structSummaryColumns = ((PDBFTSRestClient) ftsRestClient)
-            .getAllDefaultDisplayedStructureDataColumns();
+    if (source.equals(PreferenceSource.STRUCTURE_CHOOSER)
+            || source.equals(PreferenceSource.PREFERENCES))
+    {
+      structSummaryColumns = ((StructureFTSRestClientI) ftsRestClient)
+              .getAllDefaultDisplayedStructureDataColumns();
+    }
     allFTSDataColumns.addAll(ftsRestClient.getAllFTSDataColumns());
 
     tbl_FTSDataColumnPrefs.setAutoCreateRowSorter(true);
     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;
@@ -106,19 +103,20 @@ public class FTSDataColumnPreferences extends JScrollPane
       switch (source)
       {
       case SEARCH_SUMMARY:
-        data[x++] = new Object[] {
-            ftsRestClient.getAllDefaultDisplayedFTSDataColumns()
-                    .contains(field),
+        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),
             field.getName(), field.getGroup() };
         break;
       case PREFERENCES:
-        data[x++] = new Object[] { field.getName(),
-            ftsRestClient.getAllDefaultDisplayedFTSDataColumns()
-                    .contains(field),
+        data[x++] = new Object[] {
+            field.getName(), ftsRestClient
+                    .getAllDefaultDisplayedFTSDataColumns().contains(field),
             structSummaryColumns.contains(field) };
         break;
       default:
@@ -127,7 +125,8 @@ public class FTSDataColumnPreferences extends JScrollPane
       map.put(field.getName(), field);
     }
 
-    FTSDataColumnPrefsTableModel model = new FTSDataColumnPrefsTableModel(columnNames, data);
+    FTSDataColumnPrefsTableModel model = new FTSDataColumnPrefsTableModel(
+            columnNames, data);
     tbl_FTSDataColumnPrefs.setModel(model);
 
     switch (source)
@@ -143,8 +142,7 @@ public class FTSDataColumnPreferences extends JScrollPane
       tbl_FTSDataColumnPrefs.getColumnModel().getColumn(1).setMinWidth(150);
       tbl_FTSDataColumnPrefs.getColumnModel().getColumn(2)
               .setPreferredWidth(150);
-      tbl_FTSDataColumnPrefs.getColumnModel().getColumn(2)
-.setMinWidth(150);
+      tbl_FTSDataColumnPrefs.getColumnModel().getColumn(2).setMinWidth(150);
 
       TableRowSorter<TableModel> sorter = new TableRowSorter<>(
               tbl_FTSDataColumnPrefs.getModel());
@@ -153,9 +151,7 @@ public class FTSDataColumnPreferences extends JScrollPane
       int columnIndexToSort = 2;
       sortKeys.add(new RowSorter.SortKey(columnIndexToSort,
               SortOrder.ASCENDING));
-      sorter.setSortKeys(sortKeys);
-      sorter.setComparator(
-              columnIndexToSort,
+      sorter.setComparator(columnIndexToSort,
               new Comparator<FTSDataColumnGroupI>()
               {
                 @Override
@@ -165,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);
@@ -185,7 +182,8 @@ public class FTSDataColumnPreferences extends JScrollPane
   class FTSDataColumnPrefsTableModel extends AbstractTableModel
   {
 
-    public FTSDataColumnPrefsTableModel(String[] columnNames, Object[][] data)
+    public FTSDataColumnPrefsTableModel(String[] columnNames,
+            Object[][] data)
     {
       this.data = data;
       this.columnNames = columnNames;
@@ -297,9 +295,8 @@ public class FTSDataColumnPreferences extends JScrollPane
 
       if (currentSource == PreferenceSource.SEARCH_SUMMARY)
       {
-        updatePrefs(ftsRestClient
-                .getAllDefaultDisplayedFTSDataColumns(), ftsDataColumn,
-                selected);
+        updatePrefs(ftsRestClient.getAllDefaultDisplayedFTSDataColumns(),
+                ftsDataColumn, selected);
       }
       else if (currentSource == PreferenceSource.STRUCTURE_CHOOSER)
       {
@@ -309,9 +306,8 @@ public class FTSDataColumnPreferences extends JScrollPane
       {
         if (col == 1)
         {
-          updatePrefs(ftsRestClient
-                  .getAllDefaultDisplayedFTSDataColumns(), ftsDataColumn,
-                  selected);
+          updatePrefs(ftsRestClient.getAllDefaultDisplayedFTSDataColumns(),
+                  ftsDataColumn, selected);
         }
         else if (col == 2)
         {
@@ -320,8 +316,7 @@ public class FTSDataColumnPreferences extends JScrollPane
       }
     }
 
-    private void updatePrefs(
-            Collection<FTSDataColumnI> prefConfig,
+    private void updatePrefs(Collection<FTSDataColumnI> prefConfig,
             FTSDataColumnI dataColumn, boolean selected)
     {
       if (prefConfig.contains(dataColumn) && !selected)