import java.awt.Font;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.awt.event.KeyAdapter;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.ListCellRenderer;
+import javax.swing.Timer;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import javax.swing.event.DocumentEvent;
protected JTable tbl_local_pdb = new JTable();
- protected JTabbedPane pnl_filter = jalview.jbgui.GDesktop.createTabbedPane();
+ protected JTabbedPane pnl_filter = new JTabbedPane();
+
+ protected abstract FTSDataColumnPreferences getFTSDocFieldPrefs();
+ protected abstract void setFTSDocFieldPrefs(FTSDataColumnPreferences newPrefs);
- protected FTSDataColumnPreferences pdbDocFieldPrefs = new FTSDataColumnPreferences(
- PreferenceSource.STRUCTURE_CHOOSER,
- PDBFTSRestClient.getInstance());
protected FTSDataColumnI[] previousWantedFields;
public GStructureChooser()
{
+ }
+ protected void initDialog()
+ {
+
try
{
jbInit();
e.printStackTrace();
}
}
-
+
+ // BH SwingJS optimization
+ // (a) 100-ms interruptable timer for text entry -- BH 1/10/2019
+ // (b) two-character minimum, at least for JavaScript.
+
+ private Timer timer;
+
+ protected void txt_search_ActionPerformedDelayed() {
+ if (timer != null) {
+ timer.stop();
+ }
+ timer = new Timer(300, new ActionListener() {
+
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ txt_search_ActionPerformed();
+ }
+ });
+ timer.setRepeats(false);
+ timer.start();
+ }
+ //
+
/**
* Initializes the GUI default properties
*
@Override
public void insertUpdate(DocumentEvent e)
{
- txt_search_ActionPerformed();
+ txt_search_ActionPerformedDelayed();
}
@Override
public void removeUpdate(DocumentEvent e)
{
- txt_search_ActionPerformed();
+ txt_search_ActionPerformedDelayed();
}
@Override
public void changedUpdate(DocumentEvent e)
{
- txt_search_ActionPerformed();
+ txt_search_ActionPerformedDelayed();
}
});
btn_add.setVisible(false);
btn_newView.setEnabled(false);
btn_cancel.setVisible(false);
- previousWantedFields = pdbDocFieldPrefs
+ previousWantedFields = getFTSDocFieldPrefs()
.getStructureSummaryFields()
.toArray(new FTSDataColumnI[0]);
}
pnl_filter.addChangeListener(changeListener);
pnl_filter.setPreferredSize(new Dimension(width, height));
pnl_filter.add(foundStructureSummary, scrl_foundStructures);
- pnl_filter.add(configureCols, pdbDocFieldPrefs);
+ pnl_filter.add(configureCols, getFTSDocFieldPrefs());
JPanel pnl_locPDB = new JPanel(new BorderLayout());
pnl_locPDB.add(scrl_localPDB);
Desktop.addInternalFrame(mainFrame, frameTitle, width, height);
}
- protected void closeAction(int preferredHeight)
+
+protected void closeAction(int preferredHeight)
{
// System.out.println(">>>>>>>>>> closing internal frame!!!");
// System.out.println("width : " + mainFrame.getWidth());
return true;
}
- FTSDataColumnI[] currentWantedFields = pdbDocFieldPrefs
+ FTSDataColumnI[] currentWantedFields = getFTSDocFieldPrefs()
.getStructureSummaryFields().toArray(new FTSDataColumnI[0]);
return Arrays.equals(currentWantedFields, previousWantedFields) ? false
: true;