import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;
import javax.swing.table.DefaultTableModel;
+import javax.swing.table.TableColumn;
/**
* This class provides the swing GUI layout for FTS Panel and implements most of
protected JButton btn_cancel = new JButton();
- protected JTextField txt_search = new JTextField(20);
+ protected JTextField txt_search = new JTextField(35);
protected SequenceFetcher seqFetcher;
protected Collection<FTSDataColumnI> wantedFields;
+ private String lastSearchTerm = "";
+
+ protected JButton btn_next_page = new JButton();
+
+ protected JButton btn_prev_page = new JButton();
+
private JTable tbl_summary = new JTable()
{
+ private boolean inLayout;
+
+ @Override
+ public boolean getScrollableTracksViewportWidth()
+ {
+ return hasExcessWidth();
+
+ }
+
+ @Override
+ public void doLayout()
+ {
+ if (hasExcessWidth())
+ {
+ autoResizeMode = AUTO_RESIZE_SUBSEQUENT_COLUMNS;
+ }
+ inLayout = true;
+ super.doLayout();
+ inLayout = false;
+ autoResizeMode = AUTO_RESIZE_OFF;
+ }
+
+ protected boolean hasExcessWidth()
+ {
+ return getPreferredSize().width < getParent().getWidth();
+ }
+
+ @Override
+ public void columnMarginChanged(ChangeEvent e)
+ {
+ if (isEditing())
+ {
+ removeEditor();
+ }
+ TableColumn resizingColumn = getTableHeader().getResizingColumn();
+ // Need to do this here, before the parent's
+ // layout manager calls getPreferredSize().
+ if (resizingColumn != null && autoResizeMode == AUTO_RESIZE_OFF
+ && !inLayout)
+ {
+ resizingColumn.setPreferredWidth(resizingColumn.getWidth());
+ }
+ resizeAndRepaint();
+ }
+
@Override
public String getToolTipText(MouseEvent evt)
{
lbl_loading.setVisible(false);
lbl_loading.setFont(new java.awt.Font("Verdana", 0, 12));
- tbl_summary.setAutoResizeMode(JTable.AUTO_RESIZE_ALL_COLUMNS);
tbl_summary.setAutoCreateRowSorter(true);
tbl_summary.getTableHeader().setReorderingAllowed(false);
tbl_summary.addMouseListener(new MouseAdapter()
}
});
+ btn_next_page.setEnabled(false);
+ btn_next_page.setFont(new java.awt.Font("Verdana", 0, 12));
+ btn_next_page.setText(MessageManager.getString("action.next_page"));
+ btn_next_page.addActionListener(new java.awt.event.ActionListener()
+ {
+ @Override
+ public void actionPerformed(ActionEvent e)
+ {
+ nextPageAction();
+ }
+ });
+ btn_next_page.addKeyListener(new KeyAdapter()
+ {
+ @Override
+ public void keyPressed(KeyEvent evt)
+ {
+ if (evt.getKeyCode() == KeyEvent.VK_ENTER)
+ {
+ nextPageAction();
+ }
+ }
+ });
+
+ btn_prev_page.setEnabled(false);
+ btn_prev_page.setFont(new java.awt.Font("Verdana", 0, 12));
+ btn_prev_page.setText(MessageManager.getString("action.prev_page"));
+ btn_prev_page.addActionListener(new java.awt.event.ActionListener()
+ {
+ @Override
+ public void actionPerformed(ActionEvent e)
+ {
+ prevPageAction();
+ }
+ });
+ btn_prev_page.addKeyListener(new KeyAdapter()
+ {
+ @Override
+ public void keyPressed(KeyEvent evt)
+ {
+ if (evt.getKeyCode() == KeyEvent.VK_ENTER)
+ {
+ prevPageAction();
+ }
+ }
+ });
+
+ if (isPaginationEnabled())
+ {
+ btn_prev_page.setVisible(true);
+ btn_next_page.setVisible(true);
+ }
+ else
+ {
+ btn_prev_page.setVisible(false);
+ btn_next_page.setVisible(false);
+ }
+
btn_cancel.setFont(new java.awt.Font("Verdana", 0, 12));
btn_cancel.setText(MessageManager.getString("action.cancel"));
btn_cancel.addActionListener(new java.awt.event.ActionListener()
}
}
});
-
- scrl_searchResult.setPreferredSize(new Dimension(500, 300));
- scrl_searchResult
- .setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
+ scrl_searchResult.setPreferredSize(new Dimension(800, 400));
cmb_searchTarget.setFont(new java.awt.Font("Verdana", 0, 12));
cmb_searchTarget.addActionListener(new ActionListener()
{
return;
}
- if ("pdb id".equalsIgnoreCase(getCmbSearchTarget()
+ String primaryKeyName = getFTSRestClient().getPrimaryKeyColumn()
+ .getName();
+ if (primaryKeyName.equalsIgnoreCase(getCmbSearchTarget()
.getSelectedItem().toString()))
{
transferToSequenceFetcher(txt_search.getText());
});
final DeferredTextInputListener listener = new DeferredTextInputListener(
- 500,
+ 2500,
new ActionListener()
{
@Override
public void actionPerformed(ActionEvent e)
{
- searchAction();
+ if (!getTypedText().equalsIgnoreCase(lastSearchTerm))
+ {
+ searchAction();
+ lastSearchTerm = getTypedText();
+ }
}
}, false);
txt_search.getDocument().addDocumentListener(listener);
}
};
tabbedPane.addChangeListener(changeListener);
- tabbedPane.setPreferredSize(new Dimension(500, 300));
+ tabbedPane.setPreferredSize(new Dimension(800, 400));
tabbedPane.add(searchTabTitle, scrl_searchResult);
tabbedPane.add(configureCols, new FTSDataColumnPreferences(
PreferenceSource.SEARCH_SUMMARY, getFTSRestClient()));
pnl_inputs.add(txt_search);
pnl_inputs.add(lbl_loading);
pnl_inputs.add(lbl_warning);
+ pnl_inputs.add(btn_prev_page);
+ pnl_inputs.add(btn_next_page);
this.setLayout(mainLayout);
this.add(pnl_inputs, java.awt.BorderLayout.NORTH);
mainFrame.setVisible(true);
mainFrame.setContentPane(this);
mainFrame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
- Desktop.addInternalFrame(mainFrame, getFTSFrameTitle(), 800, 400);
+ Desktop.addInternalFrame(mainFrame, getFTSFrameTitle(), 900, 500);
}
public class DeferredTextInputListener implements DocumentListener