package jalview.fts.core;
+import jalview.bin.Cache;
import jalview.fts.api.FTSDataColumnI;
import jalview.fts.api.GFTSPanelI;
import jalview.fts.core.FTSDataColumnPreferences.PreferenceSource;
import jalview.gui.IProgressIndicator;
import jalview.gui.JvSwingUtils;
import jalview.gui.SequenceFetcher;
+import jalview.io.cache.JvCacheableInputBox;
import jalview.util.MessageManager;
+import jalview.util.Platform;
import java.awt.BorderLayout;
import java.awt.CardLayout;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
+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 java.awt.event.MouseEvent;
+import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.Comparator;
+import java.util.HashSet;
import java.util.List;
import javax.swing.ImageIcon;
import javax.swing.JButton;
+import javax.swing.JCheckBox;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JInternalFrame;
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.DocumentEvent;
import javax.swing.event.DocumentListener;
+import javax.swing.event.InternalFrameEvent;
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 JInternalFrame mainFrame = new JInternalFrame(
getFTSFrameTitle());
- protected IProgressIndicator progressIdicator;
+ protected JTabbedPane tabs = jalview.jbgui.GDesktop.createTabbedPane();
+
+ protected IProgressIndicator progressIndicator;
- protected JComboBox<FTSDataColumnI> cmb_searchTarget = new JComboBox<FTSDataColumnI>();
+ protected JComboBox<FTSDataColumnI> cmb_searchTarget = new JComboBox<>();
protected JButton btn_ok = new JButton();
protected JButton btn_cancel = new JButton();
- protected JTextField txt_search = new JTextField(20);
+ protected JCheckBox btn_autosearch = new JCheckBox();
+
+ protected JvCacheableInputBox<String> txt_search;
protected SequenceFetcher seqFetcher;
protected Collection<FTSDataColumnI> wantedFields;
+ private String lastSearchTerm = "";
+
+ protected JButton btn_next_page = new JButton();
+
+ protected JButton btn_prev_page = new JButton();
+
+ protected StringBuilder errorWarning = new StringBuilder();
+
+ protected ImageIcon warningImage = new ImageIcon(
+ getClass().getResource("/images/warning.gif"));
+
+ protected ImageIcon loadingImage = new ImageIcon(
+ getClass().getResource("/images/loading.gif"));
+
+ protected ImageIcon balnkPlaceholderImage = new ImageIcon(
+ getClass().getResource("/images/blank_16x16_placeholder.png"));
+
+ protected JLabel lbl_warning = new JLabel(warningImage);
+
+ protected JLabel lbl_loading = new JLabel(loadingImage);
+
+ protected JLabel lbl_blank = new JLabel(balnkPlaceholderImage);
+
+ JTabbedPane tabbedPane = jalview.jbgui.GDesktop.createTabbedPane();
+
+ private JPanel pnl_actions = new JPanel();
+
+ private JPanel pnl_results = new JPanel(new CardLayout());
+
+ private JPanel pnl_inputs = new JPanel();
+
+ private BorderLayout mainLayout = new BorderLayout();
+
+ protected Object[] previousWantedFields;
+
+ protected int resultSetCount;
+
+ protected int totalResultSetCount;
+
+ protected int offSet;
+
+ protected int pageLimit;
+
+ protected HashSet<String> paginatorCart = new HashSet<>();
+
+ private static final int MIN_WIDTH = 670;
+
+ private static final int MIN_HEIGHT = 300;
+
+ protected static final DecimalFormat totalNumberformatter = new DecimalFormat(
+ "###,###");
+
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());
+ String colHeader = resizingColumn.getHeaderValue().toString();
+ getTempUserPrefs().put(colHeader, resizingColumn.getWidth());
+ }
+ resizeAndRepaint();
+ }
+
@Override
public String getToolTipText(MouseEvent evt)
{
e.printStackTrace();
}
toolTipText = (toolTipText == null ? null
- : (toolTipText.length() > 500 ? JvSwingUtils.wrapTooltip(
- true, toolTipText.subSequence(0, 500) + "...")
+ : (toolTipText.length() > 500
+ ? JvSwingUtils.wrapTooltip(true,
+ toolTipText.subSequence(0, 500) + "...")
: JvSwingUtils.wrapTooltip(true, toolTipText)));
return toolTipText;
}
};
- protected StringBuilder errorWarning = new StringBuilder();
-
protected JScrollPane scrl_searchResult = new JScrollPane(tbl_summary);
- protected ImageIcon warningImage = new ImageIcon(getClass().getResource(
- "/images/warning.gif"));
-
- protected ImageIcon loadingImage = new ImageIcon(getClass().getResource(
- "/images/loading.gif"));
-
- protected JLabel lbl_warning = new JLabel(warningImage);
-
- protected JLabel lbl_loading = new JLabel(loadingImage);
-
- private JTabbedPane tabbedPane = new JTabbedPane();
-
- private JPanel pnl_actions = new JPanel();
-
- private JPanel pnl_results = new JPanel(new CardLayout());
-
- private JPanel pnl_inputs = new JPanel();
-
- private BorderLayout mainLayout = new BorderLayout();
-
- protected Object[] previousWantedFields;
-
public GFTSPanel()
{
+ this(null);
+ }
+
+ public GFTSPanel(SequenceFetcher fetcher)
+ {
try
{
+ if (fetcher == null)
+ {
+ tabs = null;
+ }
jbInit();
+ if (fetcher != null)
+ {
+ tabs.addTab(MessageManager.getString("label.retrieve_ids"),
+ fetcher);
+ fetcher.embedIn(this);
+ }
+ mainFrame.setMinimumSize(new Dimension(MIN_WIDTH, MIN_HEIGHT));
+ final JPanel ftsPanel = this;
+ mainFrame.addFocusListener(new FocusAdapter()
+ {
+ @Override
+ public void focusGained(FocusEvent e)
+ {
+ // TODO: make selected tab gain focus in correct widget
+ if (tabs != null
+ && tabs.getSelectedComponent() == ftsPanel)
+ {
+ txt_search.getComponent().requestFocusInWindow();
+ }
+ }
+ });
mainFrame.invalidate();
mainFrame.pack();
} catch (Exception e)
*/
private void jbInit() throws Exception
{
+
+ txt_search = new JvCacheableInputBox<>(getCacheKey());
+ populateCmbSearchTargetOptions();
+ Integer width = getTempUserPrefs().get("FTSPanel.width") == null ? 800
+ : getTempUserPrefs().get("FTSPanel.width");
+ Integer height = getTempUserPrefs().get("FTSPanel.height") == null ? 400
+ : getTempUserPrefs().get("FTSPanel.height");
lbl_warning.setVisible(false);
lbl_warning.setFont(new java.awt.Font("Verdana", 0, 12));
lbl_loading.setVisible(false);
lbl_loading.setFont(new java.awt.Font("Verdana", 0, 12));
+ lbl_blank.setVisible(true);
+ lbl_blank.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_autosearch.setText(MessageManager.getString("option.autosearch"));
+ btn_autosearch.setToolTipText(
+ MessageManager.getString("option.enable_disable_autosearch"));
+ btn_autosearch.setSelected(Platform.isJS() ? false :
+ Cache.getDefault(getAutosearchPreference(), true));
+ btn_autosearch.addActionListener(new java.awt.event.ActionListener()
+ {
+ @Override
+ public void actionPerformed(ActionEvent e)
+ {
+ jalview.bin.Cache.setProperty(getAutosearchPreference(),
+ Boolean.toString(btn_autosearch.isSelected()));
+ }
+ });
btn_back.setFont(new java.awt.Font("Verdana", 0, 12));
btn_back.setText(MessageManager.getString("action.back"));
btn_back.addActionListener(new java.awt.event.ActionListener()
}
}
});
-
- 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()
+ btn_next_page.setEnabled(false);
+ btn_next_page.setToolTipText(
+ MessageManager.getString("label.next_page_tooltip"));
+ 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)
{
- btn_cancel_ActionPerformed();
+ nextPageAction();
}
});
- btn_cancel.addKeyListener(new KeyAdapter()
+ btn_next_page.addKeyListener(new KeyAdapter()
{
@Override
public void keyPressed(KeyEvent evt)
{
if (evt.getKeyCode() == KeyEvent.VK_ENTER)
{
- btn_cancel_ActionPerformed();
+ nextPageAction();
}
}
});
- scrl_searchResult.setPreferredSize(new Dimension(500, 300));
- scrl_searchResult
- .setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
-
- cmb_searchTarget.setFont(new java.awt.Font("Verdana", 0, 12));
- cmb_searchTarget.addActionListener(new ActionListener()
+ btn_prev_page.setEnabled(false);
+ btn_prev_page.setToolTipText(
+ MessageManager.getString("label.prev_page_tooltip"));
+ 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)
{
- 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
+ prevPageAction();
+ }
+ });
+ btn_prev_page.addKeyListener(new KeyAdapter()
+ {
+ @Override
+ public void keyPressed(KeyEvent evt)
+ {
+ if (evt.getKeyCode() == KeyEvent.VK_ENTER)
{
- tooltipText = MessageManager.formatMessage(
- "label.separate_multiple_query_values",
- new Object[] { getCmbSearchTarget().getSelectedItem()
- .toString() });
+ prevPageAction();
}
- txt_search.setToolTipText(JvSwingUtils.wrapTooltip(true,
- tooltipText));
- searchAction();
}
});
- populateCmbSearchTargetOptions();
+ if (isPaginationEnabled())
+ {
+ btn_prev_page.setVisible(true);
+ btn_next_page.setVisible(true);
+ }
+ else
+ {
+ btn_prev_page.setVisible(false);
+ btn_next_page.setVisible(false);
+ }
- txt_search.setFont(new java.awt.Font("Verdana", 0, 12));
+ 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()
+ {
+ @Override
+ public void actionPerformed(ActionEvent e)
+ {
+ btn_cancel_ActionPerformed();
+ }
+ });
+ btn_cancel.addKeyListener(new KeyAdapter()
+ {
+ @Override
+ public void keyPressed(KeyEvent evt)
+ {
+ if (evt.getKeyCode() == KeyEvent.VK_ENTER)
+ {
+ btn_cancel_ActionPerformed();
+ }
+ }
+ });
+ scrl_searchResult.setPreferredSize(new Dimension(width, height));
- txt_search.addKeyListener(new KeyAdapter()
+ cmb_searchTarget.setFont(new java.awt.Font("Verdana", 0, 12));
+ cmb_searchTarget.addItemListener(new ItemListener()
{
@Override
- public void keyPressed(KeyEvent e)
+ public void itemStateChanged(ItemEvent e)
{
- if (e.getKeyCode() == KeyEvent.VK_ENTER)
+ if (e.getStateChange() == ItemEvent.SELECTED)
{
- if (txt_search.getText() == null
- || txt_search.getText().isEmpty())
+ String tooltipText;
+ if ("all".equalsIgnoreCase(
+ getCmbSearchTarget().getSelectedItem().toString()))
+ {
+ tooltipText = MessageManager.getString("label.search_all");
+ }
+ else if ("pdb id".equalsIgnoreCase(
+ getCmbSearchTarget().getSelectedItem().toString()))
{
- return;
+ tooltipText = MessageManager
+ .getString("label.separate_multiple_accession_ids");
}
- if ("pdb id".equalsIgnoreCase(getCmbSearchTarget()
- .getSelectedItem().toString()))
+ else
{
- transferToSequenceFetcher(txt_search.getText());
+ tooltipText = MessageManager.formatMessage(
+ "label.separate_multiple_query_values", new Object[]
+ { getCmbSearchTarget().getSelectedItem().toString() });
}
+ txt_search.getComponent().setToolTipText(
+ JvSwingUtils.wrapTooltip(true, tooltipText));
+ searchAction(true);
}
}
});
- txt_search.getDocument().addDocumentListener(new DocumentListener()
+ txt_search.getComponent().setFont(new java.awt.Font("Verdana", 0, 12));
+
+ txt_search.addKeyListener(new KeyAdapter()
+ {
+ @Override
+ public void keyPressed(KeyEvent e)
+ {
+ if (e.getKeyCode() == KeyEvent.VK_ENTER)
+ {
+ if (getTypedText() == null || getTypedText().isEmpty())
+ {
+ return;
+ }
+ String primaryKeyName = getFTSRestClient()
+ .getPrimaryKeyColumn().getName();
+ if (primaryKeyName.equalsIgnoreCase(getCmbSearchTarget()
+ .getSelectedItem().toString()))
+ {
+ // TODO: nicer to show the list in the result set before
+ // viewing in Jalview perhaps ?
+ transferToSequenceFetcher(getTypedText());
+ }
+ else
+ {
+ performSearchAction();
+ }
+ }
+ }
+ });
+ final DeferredTextInputListener listener = new DeferredTextInputListener(
+ 1500, new ActionListener()
+ {
+ @Override
+ public void actionPerformed(ActionEvent e)
+ {
+ if (btn_autosearch.isSelected()
+ || txt_search.wasEnterPressed())
+ {
+ performSearchAction();
+ }
+ }
+ }, false);
+ txt_search.addDocumentListener(listener);
+
+ txt_search.addFocusListener(new FocusListener()
{
@Override
- public void insertUpdate(DocumentEvent e)
+ public void focusGained(FocusEvent e)
{
- searchAction();
+ listener.start();
}
@Override
- public void removeUpdate(DocumentEvent e)
+ public void focusLost(FocusEvent e)
{
- searchAction();
+ // listener.stop();
}
+ });
+ txt_search.addActionListener(new ActionListener()
+ {
@Override
- public void changedUpdate(DocumentEvent e)
+ public void actionPerformed(ActionEvent e)
{
- searchAction();
+ performSearchAction();
}
});
-
final String searchTabTitle = MessageManager
.getString("label.search_result");
final String configureCols = MessageManager
btn_back.setEnabled(false);
btn_cancel.setEnabled(false);
btn_ok.setEnabled(false);
+ btn_next_page.setEnabled(false);
+ btn_prev_page.setEnabled(false);
+ txt_search.getComponent().setEnabled(false);
+ cmb_searchTarget.setEnabled(false);
previousWantedFields = getFTSRestClient()
- .getAllDefaulDisplayedDataColumns()
+ .getAllDefaultDisplayedFTSDataColumns()
.toArray(new Object[0]);
}
if (sourceTabbedPane.getTitleAt(index).equals(searchTabTitle))
{
btn_back.setEnabled(true);
btn_cancel.setEnabled(true);
+ refreshPaginatorState();
+ txt_search.getComponent().setEnabled(true);
+ cmb_searchTarget.setEnabled(true);
if (wantedFieldsUpdated())
{
- searchAction();
+ searchAction(true);
+ paginatorCart.clear();
}
else
{
}
};
tabbedPane.addChangeListener(changeListener);
- tabbedPane.setPreferredSize(new Dimension(500, 300));
+ tabbedPane.setPreferredSize(new Dimension(width, height));
tabbedPane.add(searchTabTitle, scrl_searchResult);
tabbedPane.add(configureCols, new FTSDataColumnPreferences(
PreferenceSource.SEARCH_SUMMARY, getFTSRestClient()));
pnl_results.add(tabbedPane);
pnl_inputs.add(cmb_searchTarget);
- pnl_inputs.add(txt_search);
+ pnl_inputs.add(txt_search.getComponent());
+ pnl_inputs.add(btn_autosearch);
pnl_inputs.add(lbl_loading);
pnl_inputs.add(lbl_warning);
+ pnl_inputs.add(lbl_blank);
+ pnl_inputs.add(btn_prev_page);
+ pnl_inputs.add(btn_next_page);
this.setLayout(mainLayout);
this.add(pnl_inputs, java.awt.BorderLayout.NORTH);
this.add(pnl_results, java.awt.BorderLayout.CENTER);
this.add(pnl_actions, java.awt.BorderLayout.SOUTH);
mainFrame.setVisible(true);
- mainFrame.setContentPane(this);
+ if (tabs != null)
+ {
+ tabs.setOpaque(true);
+ tabs.insertTab(MessageManager.getString("label.free_text_search"),
+ null, this, "", 0);
+ mainFrame.setContentPane(tabs);
+ tabs.setVisible(true);
+ }
+ else
+ {
+ mainFrame.setContentPane(this);
+ }
+ mainFrame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
+ mainFrame.addInternalFrameListener(
+ new javax.swing.event.InternalFrameAdapter()
+ {
+ @Override
+ public void internalFrameClosing(InternalFrameEvent e)
+ {
+ closeAction();
+ }
+ });
mainFrame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
- Desktop.addInternalFrame(mainFrame, getFTSFrameTitle(), 800, 400);
+ Integer x = getTempUserPrefs().get("FTSPanel.x");
+ Integer y = getTempUserPrefs().get("FTSPanel.y");
+ if (x != null && y != null)
+ {
+ mainFrame.setLocation(x, y);
+ }
+ Desktop.addInternalFrame(mainFrame, getFTSFrameTitle(), width, height);
+ }
+
+ protected void closeAction()
+ {
+ 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();
+ txt_search.persistCache();
+ }
+
+ public class DeferredTextInputListener implements DocumentListener
+ {
+ private final Timer swingTimer;
+
+ public DeferredTextInputListener(int timeOut, ActionListener listener,
+ boolean repeats)
+ {
+ swingTimer = new Timer(timeOut, listener);
+ swingTimer.setRepeats(repeats);
+ }
+
+ public void start()
+ {
+ swingTimer.start();
+ }
+
+ public void stop()
+ {
+ swingTimer.stop();
+ }
+
+ @Override
+ public void insertUpdate(DocumentEvent e)
+ {
+ swingTimer.restart();
+ }
+
+ @Override
+ public void removeUpdate(DocumentEvent e)
+ {
+ swingTimer.restart();
+ }
+
+ @Override
+ public void changedUpdate(DocumentEvent e)
+ {
+ swingTimer.restart();
+ }
+
+ }
+
+ void performSearchAction()
+ {
+ String typed = getTypedText();
+ if (typed != null && typed.length() > 0
+ && !typed.equalsIgnoreCase(lastSearchTerm))
+ {
+ searchAction(true);
+ paginatorCart.clear();
+ lastSearchTerm = typed;
+ }
}
public boolean wantedFieldsUpdated()
{
if (previousWantedFields == null)
{
- return true;
+ return false;
}
return Arrays.equals(getFTSRestClient()
- .getAllDefaulDisplayedDataColumns()
- .toArray(new Object[0]), previousWantedFields) ? false
- : true;
+ .getAllDefaultDisplayedFTSDataColumns().toArray(new Object[0]),
+ previousWantedFields) ? false : true;
}
public void validateSelection()
{
- if (tbl_summary.getSelectedRows().length > 0)
+ if (tbl_summary.getSelectedRows().length > 0
+ || !paginatorCart.isEmpty())
{
btn_ok.setEnabled(true);
}
return cmb_searchTarget;
}
- public JTextField getTxtSearch()
- {
- return txt_search;
- }
-
public JInternalFrame getMainFrame()
{
return mainFrame;
protected void checkForErrors()
{
lbl_warning.setVisible(false);
+ lbl_blank.setVisible(true);
if (errorWarning.length() > 0)
{
lbl_loading.setVisible(false);
- lbl_warning.setToolTipText(JvSwingUtils.wrapTooltip(true,
- errorWarning.toString()));
+ lbl_blank.setVisible(false);
+ lbl_warning.setToolTipText(
+ JvSwingUtils.wrapTooltip(true, errorWarning.toString()));
lbl_warning.setVisible(true);
}
}
- protected void btn_back_ActionPerformed()
+ /**
+ * Action on Back button is to close this panel and open a new Sequence
+ * Fetcher panel
+ */
+ public void btn_back_ActionPerformed()
{
- mainFrame.dispose();
- new SequenceFetcher(progressIdicator);
+ closeAction();
+ new SequenceFetcher(progressIndicator);
}
protected void disableActionButtons()
btn_cancel.setEnabled(false);
}
- protected void btn_cancel_ActionPerformed()
+ public void btn_cancel_ActionPerformed()
{
- mainFrame.dispose();
+ closeAction();
}
/**
*/
public void populateCmbSearchTargetOptions()
{
- List<FTSDataColumnI> searchableTargets = new ArrayList<FTSDataColumnI>();
+ List<FTSDataColumnI> searchableTargets = new ArrayList<>();
try
{
Collection<FTSDataColumnI> foundFTSTargets = getFTSRestClient()
}
}
-
public void transferToSequenceFetcher(String ids)
{
- // mainFrame.dispose();
- seqFetcher.getTextArea().setText(ids);
+ seqFetcher.setQuery(ids);
Thread worker = new Thread(seqFetcher);
worker.start();
}
@Override
public String getTypedText()
{
- return txt_search.getText().trim();
+ return txt_search.getUserInput();
}
@Override
lbl_loading.setVisible(false);
errorWarning.setLength(0);
lbl_warning.setVisible(false);
+ lbl_blank.setVisible(true);
btn_ok.setEnabled(false);
mainFrame.setTitle(getFTSFrameTitle());
- referesh();
+ refresh();
tbl_summary.setModel(new DefaultTableModel());
tbl_summary.setVisible(false);
}
@Override
+ public void setPrevPageButtonEnabled(boolean isEnabled)
+ {
+ btn_prev_page.setEnabled(isEnabled);
+ }
+
+ @Override
+ public void setNextPageButtonEnabled(boolean isEnabled)
+ {
+ btn_next_page.setEnabled(isEnabled);
+ }
+
+ @Override
public void setErrorMessage(String message)
{
errorWarning.append(message);
@Override
public void setSearchInProgress(Boolean isSearchInProgress)
{
+ lbl_blank.setVisible(!isSearchInProgress);
lbl_loading.setVisible(isSearchInProgress);
+ txt_search.setEditable(!isSearchInProgress);
+ }
+
+ @Override
+ public void prevPageAction()
+ {
+ updatePaginatorCart();
+ if (offSet >= pageLimit)
+ {
+ offSet = offSet - pageLimit;
+ searchAction(false);
+ }
+ else
+ {
+ refreshPaginatorState();
+ }
+ }
+
+ @Override
+ public void nextPageAction()
+ {
+ updatePaginatorCart();
+ offSet = offSet + pageLimit;
+ searchAction(false);
+ }
+
+ public void updatePaginatorCart()
+ {
+ int primaryKeyColIndex = 0;
+ JTable resultTable = getResultTable();
+ int totalRows = resultTable.getRowCount();
+ try
+ {
+ primaryKeyColIndex = getFTSRestClient()
+ .getPrimaryKeyColumIndex(wantedFields, false);
+ } catch (Exception e)
+ {
+ e.printStackTrace();
+ }
+
+ for (int row = 0; row < totalRows; row++)
+ {
+ String id = (String) resultTable.getValueAt(row, primaryKeyColIndex);
+ if (paginatorCart.contains(id))
+ {
+ paginatorCart.remove(id);
+ }
+ }
+ int[] selectedRows = resultTable.getSelectedRows();
+ for (int summaryRow : selectedRows)
+ {
+ String idStr = resultTable.getValueAt(summaryRow, primaryKeyColIndex)
+ .toString();
+ paginatorCart.add(idStr);
+ }
}
- public void referesh()
+
+ public void updateSummaryTableSelections()
+ {
+ JTable resultTable = getResultTable();
+ if (paginatorCart.isEmpty())
+ {
+ return;
+ }
+ int primaryKeyColIndex = 0;
+ try
+ {
+ primaryKeyColIndex = getFTSRestClient()
+ .getPrimaryKeyColumIndex(wantedFields, false);
+ } catch (Exception e)
+ {
+ e.printStackTrace();
+ }
+ int totalRows = resultTable.getRowCount();
+ for (int row = 0; row < totalRows; row++)
+ {
+ String id = (String) resultTable.getValueAt(row, primaryKeyColIndex);
+ if (paginatorCart.contains(id))
+ {
+ resultTable.addRowSelectionInterval(row, row);
+ }
+ }
+ validateSelection();
+ }
+
+ public void refreshPaginatorState()
+ {
+ setPrevPageButtonEnabled(false);
+ setNextPageButtonEnabled(false);
+ if (resultSetCount == 0 && pageLimit == 0)
+ {
+ return;
+ }
+ if (resultSetCount >= pageLimit)
+ {
+ setNextPageButtonEnabled(true);
+ }
+ if (offSet >= pageLimit)
+ {
+ setPrevPageButtonEnabled(true);
+ }
+ }
+
+ public void refresh()
{
mainFrame.setTitle(getFTSFrameTitle());
}
+ @Override
+ public abstract void okAction();
}