import jalview.gui.IProgressIndicator;
import jalview.gui.JvSwingUtils;
import jalview.gui.SequenceFetcher;
+import jalview.io.cache.AppCache;
+import jalview.io.cache.Cacheable;
import jalview.util.MessageManager;
import java.awt.BorderLayout;
import java.awt.event.FocusAdapter;
import java.awt.event.FocusEvent;
import java.awt.event.FocusListener;
+import java.awt.event.ItemEvent;
+import java.awt.event.ItemListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.MouseAdapter;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JComboBox;
+import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JInternalFrame;
import javax.swing.JLabel;
import javax.swing.JScrollPane;
import javax.swing.JTabbedPane;
import javax.swing.JTable;
-import javax.swing.JTextField;
import javax.swing.Timer;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import javax.swing.event.InternalFrameEvent;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableColumn;
+import javax.swing.text.JTextComponent;
/**
* This class provides the swing GUI layout for FTS Panel and implements most of
*/
@SuppressWarnings("serial")
-public abstract class GFTSPanel extends JPanel implements GFTSPanelI
+public abstract class GFTSPanel extends JPanel implements GFTSPanelI, Cacheable
{
protected JInternalFrame mainFrame = new JInternalFrame(
getFTSFrameTitle());
protected JButton btn_cancel = new JButton();
- protected JTextField txt_search = new JTextField(30);
+ protected JComboBox<String> txt_search;
protected SequenceFetcher seqFetcher;
protected static final DecimalFormat totalNumberformatter = new DecimalFormat(
"###,###");
+
private JTable tbl_summary = new JTable()
{
private boolean inLayout;
return toolTipText;
}
};
+
protected JScrollPane scrl_searchResult = new JScrollPane(tbl_summary);
public GFTSPanel()
*/
private void jbInit() throws Exception
{
+
+ txt_search = new JComboBox<String>();
+ txt_search.setEditable(true);
+ txt_search
+ .setPrototypeDisplayValue("XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX");
+ populateCmbSearchTargetOptions();
Integer width = getTempUserPrefs().get("FTSPanel.width") == null ? 800
: getTempUserPrefs().get("FTSPanel.width");
Integer height = getTempUserPrefs().get("FTSPanel.height") == null ? 400
scrl_searchResult.setPreferredSize(new Dimension(width, height));
cmb_searchTarget.setFont(new java.awt.Font("Verdana", 0, 12));
- cmb_searchTarget.addActionListener(new ActionListener()
+ cmb_searchTarget.addItemListener(new ItemListener()
{
@Override
- public void actionPerformed(ActionEvent e)
+ public void itemStateChanged(ItemEvent e)
{
- String tooltipText;
- if ("all".equalsIgnoreCase(getCmbSearchTarget().getSelectedItem()
- .toString()))
- {
- tooltipText = MessageManager.getString("label.search_all");
- }
- else if ("pdb id".equalsIgnoreCase(getCmbSearchTarget()
- .getSelectedItem().toString()))
- {
- tooltipText = MessageManager
- .getString("label.separate_multiple_accession_ids");
- }
- else
+ if (e.getStateChange() == ItemEvent.SELECTED)
{
- tooltipText = MessageManager.formatMessage(
- "label.separate_multiple_query_values",
- new Object[] { getCmbSearchTarget().getSelectedItem()
- .toString() });
+ String tooltipText;
+ if ("all".equalsIgnoreCase(getCmbSearchTarget().getSelectedItem()
+ .toString()))
+ {
+ tooltipText = MessageManager.getString("label.search_all");
+ }
+ else if ("pdb id".equalsIgnoreCase(getCmbSearchTarget()
+ .getSelectedItem().toString()))
+ {
+ tooltipText = MessageManager
+ .getString("label.separate_multiple_accession_ids");
+ }
+ else
+ {
+ tooltipText = MessageManager.formatMessage(
+ "label.separate_multiple_query_values",
+ new Object[] { getCmbSearchTarget().getSelectedItem()
+ .toString() });
+ }
+ txt_search.setToolTipText(JvSwingUtils.wrapTooltip(true,
+ tooltipText));
+ searchAction(true);
}
- txt_search.setToolTipText(JvSwingUtils.wrapTooltip(true,
- tooltipText));
- searchAction(true);
}
});
+
- populateCmbSearchTargetOptions();
txt_search.setFont(new java.awt.Font("Verdana", 0, 12));
- txt_search.addKeyListener(new KeyAdapter()
+ txt_search.getEditor().getEditorComponent()
+ .addKeyListener(new KeyAdapter()
{
@Override
public void keyPressed(KeyEvent e)
{
if (e.getKeyCode() == KeyEvent.VK_ENTER)
{
- if (txt_search.getText() == null
- || txt_search.getText().isEmpty())
+ if (getTypedText() == null || getTypedText().isEmpty())
{
return;
}
if (primaryKeyName.equalsIgnoreCase(getCmbSearchTarget()
.getSelectedItem().toString()))
{
- transferToSequenceFetcher(txt_search.getText());
+ transferToSequenceFetcher(getTypedText());
}
}
}
});
final DeferredTextInputListener listener = new DeferredTextInputListener(
- 1500,
- new ActionListener()
+ 1500, new ActionListener()
{
@Override
public void actionPerformed(ActionEvent e)
}
}
}, false);
- txt_search.getDocument().addDocumentListener(listener);
+ ((JTextComponent) txt_search.getEditor().getEditorComponent())
+ .getDocument().addDocumentListener(listener);
+
txt_search.addFocusListener(new FocusListener()
{
@Override
@Override
public void focusLost(FocusEvent e)
{
-// listener.stop();
+ // listener.stop();
}
});
txt_search.setEnabled(false);
cmb_searchTarget.setEnabled(false);
previousWantedFields = getFTSRestClient()
- .getAllDefaultDisplayedFTSDataColumns()
- .toArray(new Object[0]);
+ .getAllDefaultDisplayedFTSDataColumns().toArray(
+ new Object[0]);
}
if (sourceTabbedPane.getTitleAt(index).equals(searchTabTitle))
{
protected void closeAction()
{
- // System.out.println(">>>>>>>>>> closing internal frame!!!");
- // System.out.println("width : " + this.getWidth());
- // System.out.println("heigh : " + this.getHeight());
- // System.out.println("x : " + mainFrame.getX());
- // System.out.println("y : " + mainFrame.getY());
getTempUserPrefs().put("FTSPanel.width", this.getWidth());
getTempUserPrefs().put("FTSPanel.height", pnl_results.getHeight());
getTempUserPrefs().put("FTSPanel.x", mainFrame.getX());
getTempUserPrefs().put("FTSPanel.y", mainFrame.getY());
mainFrame.dispose();
}
+
public class DeferredTextInputListener implements DocumentListener
{
private final Timer swingTimer;
{
if (previousWantedFields == null)
{
- return true;
+ return false;
}
return Arrays.equals(getFTSRestClient()
- .getAllDefaultDisplayedFTSDataColumns()
- .toArray(new Object[0]), previousWantedFields) ? false
- : true;
+ .getAllDefaultDisplayedFTSDataColumns().toArray(new Object[0]),
+ previousWantedFields) ? false : true;
}
return cmb_searchTarget;
}
- public JTextField getTxtSearch()
+ public JComboBox<String> getTxtSearch()
{
return txt_search;
}
}
}
-
public void transferToSequenceFetcher(String ids)
{
- // mainFrame.dispose();
seqFetcher.getTextArea().setText(ids);
Thread worker = new Thread(seqFetcher);
worker.start();
@Override
public String getTypedText()
{
- return txt_search.getText().trim();
+ return txt_search.getEditor().getItem() == null ? "" : txt_search
+ .getEditor().getItem().toString().trim();
}
@Override
int[] selectedRows = resultTable.getSelectedRows();
for (int summaryRow : selectedRows)
{
- String idStr = resultTable.getValueAt(summaryRow,
- primaryKeyColIndex).toString();
+ String idStr = resultTable.getValueAt(summaryRow, primaryKeyColIndex)
+ .toString();
paginatorCart.add(idStr);
}
- // System.out.println("Paginator shopping cart size : "
- // + paginatorCart.size());
}
public void updateSummaryTableSelections()
{
e.printStackTrace();
}
- // System.out.println(">>>>>> got here : 1");
int totalRows = resultTable.getRowCount();
- // resultTable.clearSelection();
for (int row = 0; row < totalRows; row++)
{
String id = (String) resultTable.getValueAt(row, primaryKeyColIndex);
}
validateSelection();
}
+
public void refreshPaginatorState()
{
- // System.out.println("resultSet count : " + resultSetCount);
- // System.out.println("offSet : " + offSet);
- // System.out.println("page limit : " + pageLimit);
setPrevPageButtonEnabled(false);
setNextPageButtonEnabled(false);
if (resultSetCount == 0 && pageLimit == 0)
setPrevPageButtonEnabled(true);
}
}
+
public void referesh()
{
mainFrame.setTitle(getFTSFrameTitle());
}
+
+ protected void fireCache()
+ {
+ AppCache.getInstance().updateCache(this);
+ }
+
+ @Override
+ public void init()
+ {
+ // reset();
+ }
+
+ @Override
+ public JComponent getNextFocusableElement()
+ {
+ return mainFrame;
+ }
+
+ @Override
+ public String getCacheKey()
+ {
+ return getCacheKey();
+ }
+
+ @Override
+ public JComboBox<String> getCacheComboBox()
+ {
+ return txt_search;
+ }
+
+
}