JAL-1645 source formatting and organise imports
[jalview.git] / src / jalview / jbgui / PDBDocFieldPreferences.java
index 2021d0b..4b400a3 100644 (file)
@@ -4,7 +4,7 @@ import jalview.ws.dbsources.PDBRestClient.PDBDocField;
 
 import java.util.Collection;
 import java.util.HashMap;
-import java.util.HashSet;
+import java.util.LinkedHashSet;
 
 import javax.swing.JScrollPane;
 import javax.swing.JTable;
@@ -20,9 +20,9 @@ public class PDBDocFieldPreferences extends JScrollPane
 
   private HashMap<String, PDBDocField> map = new HashMap<String, PDBDocField>();
 
-  private static Collection<PDBDocField> searchSummaryFields = new HashSet<PDBDocField>();
+  private static Collection<PDBDocField> searchSummaryFields = new LinkedHashSet<PDBDocField>();
 
-  private static Collection<PDBDocField> structureSummaryFields = new HashSet<PDBDocField>();
+  private static Collection<PDBDocField> structureSummaryFields = new LinkedHashSet<PDBDocField>();
 
   public enum PreferenceSource
   {
@@ -50,16 +50,14 @@ public class PDBDocFieldPreferences extends JScrollPane
     switch (source)
     {
     case SEARCH_SUMMARY:
-      columnNames = new String[]
-      { "PDB Feild", "Show in search summary" };
+      columnNames = new String[] { "PDB Field", "Show in search summary" };
       break;
     case STRUCTURE_CHOOSER:
-      columnNames = new String[]
-      { "PDB Feild", "Show in structure summary" };
+      columnNames = new String[] { "PDB Field", "Show in structure summary" };
       break;
     case PREFERENCES:
-      columnNames = new String[]
-      { "PDB Feild", "Show in search summary", "Show in structure summary" };
+      columnNames = new String[] { "PDB Field", "Show in search summary",
+          "Show in structure summary" };
       break;
     default:
       break;
@@ -77,16 +75,16 @@ public class PDBDocFieldPreferences extends JScrollPane
       switch (source)
       {
       case SEARCH_SUMMARY:
-        data[x++] = new Object[]
-        { field.getName(), searchSummaryFields.contains(field) };
+        data[x++] = new Object[] { field.getName(),
+            searchSummaryFields.contains(field) };
         break;
       case STRUCTURE_CHOOSER:
-        data[x++] = new Object[]
-        { field.getName(), structureSummaryFields.contains(field) };
+        data[x++] = new Object[] { field.getName(),
+            structureSummaryFields.contains(field) };
         break;
       case PREFERENCES:
-        data[x++] = new Object[]
-        { field.getName(), searchSummaryFields.contains(field),
+        data[x++] = new Object[] { field.getName(),
+            searchSummaryFields.contains(field),
             structureSummaryFields.contains(field) };
         break;
       default:
@@ -171,8 +169,30 @@ public class PDBDocFieldPreferences extends JScrollPane
     {
       // Note that the data/cell address is constant,
       // no matter where the cell appears onscreen.
-      return col == 1 || col == 2;
+      // !isPDBID(row, col) ensures the PDB_Id cell is never editable as it
+      // serves as a unique id for each row.
+      return (col == 1 || col == 2) && !isPDBID(row, col);
+
+    }
+
+    /**
+     * Determines whether the data in a given cell is a PDB ID.
+     * 
+     * @param row
+     * @param col
+     * @return
+     */
 
+    public boolean isPDBID(int row, int col)
+    {
+      boolean matched = false;
+      String name = getValueAt(row, 0).toString();
+      PDBDocField pdbField = map.get(name);
+      if (pdbField == PDBDocField.PDB_ID)
+      {
+        matched = true;
+      }
+      return matched;
     }
 
     /*
@@ -210,8 +230,7 @@ public class PDBDocFieldPreferences extends JScrollPane
     }
 
     private void updatePrefs(Collection<PDBDocField> prefConfig,
-            PDBDocField pdbField,
-            boolean selected)
+            PDBDocField pdbField, boolean selected)
     {
       if (prefConfig.contains(pdbField) && !selected)
       {