3 import jalview.ws.dbsources.PDBRestClient.PDBDocField;
5 import java.awt.Rectangle;
6 import java.util.Collection;
7 import java.util.HashMap;
8 import java.util.HashSet;
10 import javax.swing.JScrollPane;
11 import javax.swing.JTable;
12 import javax.swing.table.AbstractTableModel;
14 @SuppressWarnings("serial")
15 public class PDBDocFieldPreferences extends JScrollPane
18 protected JTable tbl_pdbDocFieldConfig = new JTable();
20 protected JScrollPane scrl_pdbDocFieldConfig = new JScrollPane(
21 tbl_pdbDocFieldConfig);
23 private HashMap<String, PDBDocField> map = new HashMap<String, PDBDocField>();
25 private static Collection<PDBDocField> searchSummaryFields = new HashSet<PDBDocField>();
27 private static Collection<PDBDocField> structureSummaryFields = new HashSet<PDBDocField>();
31 searchSummaryFields.add(PDBDocField.PDB_ID);
32 searchSummaryFields.add(PDBDocField.TITLE);
33 structureSummaryFields.add(PDBDocField.PDB_ID);
34 structureSummaryFields.add(PDBDocField.TITLE);
37 public PDBDocFieldPreferences(Rectangle position)
39 this.setBounds(position);
40 this.getViewport().add(tbl_pdbDocFieldConfig);
42 Object[][] data = new Object[PDBDocField.values().length - 1][3];
44 for (PDBDocField field : PDBDocField.values())
46 if (field.getName().equalsIgnoreCase("all"))
51 data[x++] = new Object[]
52 { field.getName(), searchSummaryFields.contains(field),
53 structureSummaryFields.contains(field) };
54 map.put(field.getName(), field);
57 PDBFieldTableModel model = new PDBFieldTableModel(data);
58 tbl_pdbDocFieldConfig.setModel(model);
61 public static Collection<PDBDocField> getSearchSummaryFields()
63 return searchSummaryFields;
66 public static void setSearchSummaryFields(
67 Collection<PDBDocField> searchSummaryFields)
69 PDBDocFieldPreferences.searchSummaryFields = searchSummaryFields;
72 public static Collection<PDBDocField> getStructureSummaryFields()
74 return structureSummaryFields;
77 public static void setStructureSummaryFields(
78 Collection<PDBDocField> structureSummaryFields)
80 PDBDocFieldPreferences.structureSummaryFields = structureSummaryFields;
83 class PDBFieldTableModel extends AbstractTableModel
86 public PDBFieldTableModel(Object[][] data)
91 private String[] columnNames = new String[]
92 { "PDB Feild", "Show in search summary",
93 "Show in structure chooser summary" };
95 private Object[][] data;
97 public int getColumnCount()
99 return columnNames.length;
102 public int getRowCount()
107 public String getColumnName(int col)
109 return columnNames[col];
112 public Object getValueAt(int row, int col)
114 return data[row][col];
118 * JTable uses this method to determine the default renderer/ editor for
119 * each cell. If we didn't implement this method, then the last column would
120 * contain text ("true"/"false"), rather than a check box.
122 public Class getColumnClass(int c)
124 return getValueAt(0, c).getClass();
128 * Don't need to implement this method unless your table's editable.
130 public boolean isCellEditable(int row, int col)
132 // Note that the data/cell address is constant,
133 // no matter where the cell appears onscreen.
134 return col == 1 || col == 2;
139 * Don't need to implement this method unless your table's data can change.
141 public void setValueAt(Object value, int row, int col)
143 data[row][col] = value;
144 fireTableCellUpdated(row, col);
146 String name = getValueAt(row, 0).toString();
147 boolean selected = ((Boolean) value).booleanValue();
149 PDBDocField pdbField = map.get(name);
153 if (searchSummaryFields.contains(pdbField) && !selected)
155 searchSummaryFields.remove(pdbField);
158 if (!searchSummaryFields.contains(pdbField) && selected)
160 searchSummaryFields.add(pdbField);
165 if (structureSummaryFields.contains(pdbField) && !selected)
167 structureSummaryFields.remove(pdbField);
170 if (!structureSummaryFields.contains(pdbField) && selected)
172 structureSummaryFields.add(pdbField);