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;
protected JButton btn_cancel = new JButton();
- protected JTextField txt_search = new JTextField(35);
+ protected JTextField txt_search = new JTextField(30);
protected SequenceFetcher seqFetcher;
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);
+
+ 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;
+
+ protected int resultSetCount;
+
+ protected int totalResultSetCount;
+
+ protected int offSet;
+
+ protected int pageLimit;
+
+ protected HashSet<String> paginatorCart = new HashSet<String>();
+
+ protected static final DecimalFormat totalNumberformatter = new DecimalFormat(
+ "###,###");
+
private JTable tbl_summary = new JTable()
{
private boolean inLayout;
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()
{
try
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.setAutoCreateRowSorter(true);
tbl_summary.getTableHeader().setReorderingAllowed(false);
}
}
});
+ btn_next_page.setEnabled(false);
+ btn_next_page.setToolTipText(MessageManager
+ .getString("label.next_page_tooltop"));
+ 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.setToolTipText(MessageManager
+ .getString("label.prev_page_tooltop"));
+ 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"));
}
txt_search.setToolTipText(JvSwingUtils.wrapTooltip(true,
tooltipText));
- searchAction();
+ searchAction(true);
}
});
});
final DeferredTextInputListener listener = new DeferredTextInputListener(
- 500,
+ 1500,
new ActionListener()
{
@Override
{
if (!getTypedText().equalsIgnoreCase(lastSearchTerm))
{
- searchAction();
+ searchAction(true);
+ paginatorCart.clear();
lastSearchTerm = getTypedText();
}
}
@Override
public void focusLost(FocusEvent e)
{
- listener.stop();
+// listener.stop();
}
});
btn_back.setEnabled(false);
btn_cancel.setEnabled(false);
btn_ok.setEnabled(false);
+ btn_next_page.setEnabled(false);
+ btn_prev_page.setEnabled(false);
+ txt_search.setEnabled(false);
+ cmb_searchTarget.setEnabled(false);
previousWantedFields = getFTSRestClient()
.getAllDefaulDisplayedDataColumns()
.toArray(new Object[0]);
{
btn_back.setEnabled(true);
btn_cancel.setEnabled(true);
+ refreshPaginatorState();
+ txt_search.setEnabled(true);
+ cmb_searchTarget.setEnabled(true);
if (wantedFieldsUpdated())
{
- searchAction();
+ searchAction(true);
+ paginatorCart.clear();
}
else
{
pnl_inputs.add(txt_search);
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);
public void validateSelection()
{
- if (tbl_summary.getSelectedRows().length > 0)
+ if (tbl_summary.getSelectedRows().length > 0
+ || !paginatorCart.isEmpty())
{
btn_ok.setEnabled(true);
}
protected void checkForErrors()
{
lbl_warning.setVisible(false);
+ lbl_blank.setVisible(true);
if (errorWarning.length() > 0)
{
lbl_loading.setVisible(false);
+ lbl_blank.setVisible(false);
lbl_warning.setToolTipText(JvSwingUtils.wrapTooltip(true,
errorWarning.toString()));
lbl_warning.setVisible(true);
lbl_loading.setVisible(false);
errorWarning.setLength(0);
lbl_warning.setVisible(false);
+ lbl_blank.setVisible(true);
btn_ok.setEnabled(false);
mainFrame.setTitle(getFTSFrameTitle());
referesh();
}
@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);
}
+
+ @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);
+ }
+ // System.out.println("Paginator shopping cart size : "
+ // + paginatorCart.size());
+ }
+
+ public void updateSummaryTableSelections()
+ {
+ JTable resultTable = getResultTable();
+ if (paginatorCart.isEmpty())
+ {
+ return;
+ }
+ int primaryKeyColIndex = 0;
+ try
+ {
+ primaryKeyColIndex = getFTSRestClient().getPrimaryKeyColumIndex(
+ wantedFields, false);
+ } catch (Exception e)
+ {
+ 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);
+ if (paginatorCart.contains(id))
+ {
+ resultTable.addRowSelectionInterval(row, row);
+ }
+ }
+ 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)
+ {
+ return;
+ }
+ if (resultSetCount >= pageLimit)
+ {
+ setNextPageButtonEnabled(true);
+ }
+ if (offSet >= pageLimit)
+ {
+ setPrevPageButtonEnabled(true);
+ }
+ }
public void referesh()
{
mainFrame.setTitle(getFTSFrameTitle());