JAL-2071 architectural improvement for Plugable Free Text Search Services
[jalview.git] / src / jalview / jbgui / PDBDocFieldPreferences.java
diff --git a/src/jalview/jbgui/PDBDocFieldPreferences.java b/src/jalview/jbgui/PDBDocFieldPreferences.java
deleted file mode 100644 (file)
index e33cf01..0000000
+++ /dev/null
@@ -1,355 +0,0 @@
-/*
- * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
- * Copyright (C) $$Year-Rel$$ The Jalview Authors
- * 
- * This file is part of Jalview.
- * 
- * Jalview is free software: you can redistribute it and/or
- * modify it under the terms of the GNU General Public License 
- * as published by the Free Software Foundation, either version 3
- * of the License, or (at your option) any later version.
- *  
- * Jalview is distributed in the hope that it will be useful, but 
- * WITHOUT ANY WARRANTY; without even the implied warranty 
- * of MERCHANTABILITY or FITNESS FOR A PARTICULAR 
- * PURPOSE.  See the GNU General Public License for more details.
- * 
- * You should have received a copy of the GNU General Public License
- * along with Jalview.  If not, see <http://www.gnu.org/licenses/>.
- * The Jalview Authors are detailed in the 'AUTHORS' file.
- */
-package jalview.jbgui;
-
-import jalview.ws.dbsources.PDBRestClient.PDBDocField;
-import jalview.ws.dbsources.PDBRestClient.PDBDocField.Group;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Comparator;
-import java.util.HashMap;
-import java.util.LinkedHashSet;
-import java.util.List;
-
-import javax.swing.JScrollPane;
-import javax.swing.JTable;
-import javax.swing.RowSorter;
-import javax.swing.SortOrder;
-import javax.swing.table.AbstractTableModel;
-import javax.swing.table.TableModel;
-import javax.swing.table.TableRowSorter;
-
-
-@SuppressWarnings("serial")
-public class PDBDocFieldPreferences extends JScrollPane
-{
-  protected JTable tbl_pdbDocFieldConfig = new JTable();
-
-  protected JScrollPane scrl_pdbDocFieldConfig = new JScrollPane(
-          tbl_pdbDocFieldConfig);
-
-  private HashMap<String, PDBDocField> map = new HashMap<String, PDBDocField>();
-
-  private static Collection<PDBDocField> searchSummaryFields = new LinkedHashSet<PDBDocField>();
-
-  private static Collection<PDBDocField> structureSummaryFields = new LinkedHashSet<PDBDocField>();
-
-  public enum PreferenceSource
-  {
-    SEARCH_SUMMARY, STRUCTURE_CHOOSER, PREFERENCES;
-  }
-
-  private PreferenceSource currentSource;
-
-  static
-  {
-    searchSummaryFields.add(PDBDocField.PDB_ID);
-    searchSummaryFields.add(PDBDocField.TITLE);
-    searchSummaryFields.add(PDBDocField.RESOLUTION);
-
-    structureSummaryFields.add(PDBDocField.PDB_ID);
-    structureSummaryFields.add(PDBDocField.TITLE);
-    structureSummaryFields.add(PDBDocField.RESOLUTION);
-  }
-
-  public PDBDocFieldPreferences(PreferenceSource source)
-  {
-    tbl_pdbDocFieldConfig.setAutoCreateRowSorter(true);
-
-
-
-    this.getViewport().add(tbl_pdbDocFieldConfig);
-    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;
-    }
-
-    Object[][] data = new Object[PDBDocField.values().length - 1][3];
-    int x = 0;
-    for (PDBDocField field : PDBDocField.values())
-    {
-      if (field.getName().equalsIgnoreCase("all"))
-      {
-        continue;
-      }
-
-      switch (source)
-      {
-      case SEARCH_SUMMARY:
-        data[x++] = new Object[] { searchSummaryFields.contains(field),
-            field.getName(), field.getGroup() };
-        break;
-      case STRUCTURE_CHOOSER:
-        data[x++] = new Object[] { structureSummaryFields.contains(field),
-            field.getName(), field.getGroup() };
-        break;
-      case PREFERENCES:
-        data[x++] = new Object[] { field.getName(),
-            searchSummaryFields.contains(field),
-            structureSummaryFields.contains(field) };
-        break;
-      default:
-        break;
-      }
-      map.put(field.getName(), field);
-    }
-
-    PDBFieldTableModel model = new PDBFieldTableModel(columnNames, data);
-    tbl_pdbDocFieldConfig.setModel(model);
-
-    switch (source)
-    {
-    case SEARCH_SUMMARY:
-    case STRUCTURE_CHOOSER:
-      tbl_pdbDocFieldConfig.getColumnModel().getColumn(0)
-              .setPreferredWidth(30);
-      tbl_pdbDocFieldConfig.getColumnModel().getColumn(0).setMinWidth(20);
-      tbl_pdbDocFieldConfig.getColumnModel().getColumn(0).setMaxWidth(40);
-      tbl_pdbDocFieldConfig.getColumnModel().getColumn(1)
-              .setPreferredWidth(150);
-      tbl_pdbDocFieldConfig.getColumnModel().getColumn(1).setMinWidth(150);
-      tbl_pdbDocFieldConfig.getColumnModel().getColumn(2)
-              .setPreferredWidth(150);
-      tbl_pdbDocFieldConfig.getColumnModel().getColumn(2)
-.setMinWidth(150);
-
-      TableRowSorter<TableModel> sorter = new TableRowSorter<>(
-              tbl_pdbDocFieldConfig.getModel());
-      tbl_pdbDocFieldConfig.setRowSorter(sorter);
-      List<RowSorter.SortKey> sortKeys = new ArrayList<>();
-      int columnIndexToSort = 2;
-      sortKeys.add(new RowSorter.SortKey(columnIndexToSort,
-              SortOrder.ASCENDING));
-      sorter.setSortKeys(sortKeys);
-      sorter.setComparator(
-              columnIndexToSort,
-              new Comparator<jalview.ws.dbsources.PDBRestClient.PDBDocField.Group>()
-              {
-                @Override
-                public int compare(Group o1, Group o2)
-                {
-                  return o1.getSortOrder() - o2.getSortOrder();
-                }
-              });
-      sorter.sort();
-
-      tbl_pdbDocFieldConfig
-              .setAutoResizeMode(JTable.AUTO_RESIZE_NEXT_COLUMN);
-      break;
-    case PREFERENCES:
-    default:
-      break;
-    }
-
-  }
-
-  public static Collection<PDBDocField> getSearchSummaryFields()
-  {
-    return searchSummaryFields;
-  }
-
-  public static void setSearchSummaryFields(
-          Collection<PDBDocField> searchSummaryFields)
-  {
-    PDBDocFieldPreferences.searchSummaryFields = searchSummaryFields;
-  }
-
-  public static Collection<PDBDocField> getStructureSummaryFields()
-  {
-    return structureSummaryFields;
-  }
-
-  public static void setStructureSummaryFields(
-          Collection<PDBDocField> structureSummaryFields)
-  {
-    PDBDocFieldPreferences.structureSummaryFields = structureSummaryFields;
-  }
-
-  class PDBFieldTableModel extends AbstractTableModel
-  {
-
-    public PDBFieldTableModel(String[] columnNames, Object[][] data)
-    {
-      this.data = data;
-      this.columnNames = columnNames;
-    }
-
-    private Object[][] data;
-
-    private String[] columnNames;
-
-    @Override
-    public int getColumnCount()
-    {
-      return columnNames.length;
-    }
-
-    @Override
-    public int getRowCount()
-    {
-      return data.length;
-    }
-
-    @Override
-    public String getColumnName(int col)
-    {
-      return columnNames[col];
-    }
-
-    @Override
-    public Object getValueAt(int row, int col)
-    {
-      return data[row][col];
-    }
-
-    /*
-     * JTable uses this method to determine the default renderer/ editor for
-     * each cell. If we didn't implement this method, then the last column would
-     * contain text ("true"/"false"), rather than a check box.
-     */
-    @Override
-    public Class getColumnClass(int c)
-    {
-      return getValueAt(0, c).getClass();
-    }
-
-    /*
-     * Don't need to implement this method unless your table's editable.
-     */
-    @Override
-    public boolean isCellEditable(int row, int col)
-    {
-      // Note that the data/cell address is constant,
-      // no matter where the cell appears onscreen.
-      // !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);
-      switch (currentSource)
-      {
-      case SEARCH_SUMMARY:
-      case STRUCTURE_CHOOSER:
-        return (col == 0) && !isPDBID(row, 1);
-      case PREFERENCES:
-        return (col == 1 || col == 2) && !isPDBID(row, 0);
-      default:
-        return false;
-      }
-
-    }
-
-    /**
-     * 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, col).toString();
-      PDBDocField pdbField = map.get(name);
-      if (pdbField == PDBDocField.PDB_ID)
-      {
-        matched = true;
-      }
-      return matched;
-    }
-
-    /*
-     * Don't need to implement this method unless your table's data can change.
-     */
-    @Override
-    public void setValueAt(Object value, int row, int col)
-    {
-      data[row][col] = value;
-      fireTableCellUpdated(row, col);
-
-      String name = null;
-      switch (currentSource)
-      {
-      case SEARCH_SUMMARY:
-      case STRUCTURE_CHOOSER:
-        name = getValueAt(row, 1).toString();
-        break;
-      case PREFERENCES:
-        name = getValueAt(row, 0).toString();
-        break;
-      default:
-        break;
-      }
-      boolean selected = ((Boolean) value).booleanValue();
-
-      PDBDocField pdbField = map.get(name);
-
-      if (currentSource == PreferenceSource.SEARCH_SUMMARY)
-      {
-        updatePrefs(searchSummaryFields, pdbField, selected);
-      }
-      else if (currentSource == PreferenceSource.STRUCTURE_CHOOSER)
-      {
-        updatePrefs(structureSummaryFields, pdbField, selected);
-      }
-      else if (currentSource == PreferenceSource.PREFERENCES)
-      {
-        if (col == 1)
-        {
-          updatePrefs(searchSummaryFields, pdbField, selected);
-        }
-        else if (col == 2)
-        {
-          updatePrefs(structureSummaryFields, pdbField, selected);
-        }
-      }
-    }
-
-    private void updatePrefs(Collection<PDBDocField> prefConfig,
-            PDBDocField pdbField, boolean selected)
-    {
-      if (prefConfig.contains(pdbField) && !selected)
-      {
-        prefConfig.remove(pdbField);
-      }
-
-      if (!prefConfig.contains(pdbField) && selected)
-      {
-        prefConfig.add(pdbField);
-      }
-    }
-
-  }
-}