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.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.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;
protected JInternalFrame mainFrame = new JInternalFrame(
getFTSFrameTitle());
- protected IProgressIndicator progressIdicator;
+ protected IProgressIndicator progressIndicator;
protected JComboBox<FTSDataColumnI> cmb_searchTarget = new JComboBox<FTSDataColumnI>();
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;
&& !inLayout)
{
resizingColumn.setPreferredWidth(resizingColumn.getWidth());
+ String colHeader = resizingColumn.getHeaderValue().toString();
+ getTempUserPrefs().put(colHeader, resizingColumn.getWidth());
}
resizeAndRepaint();
}
}
};
- 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
{
jbInit();
+ mainFrame.addFocusListener(new FocusAdapter()
+ {
+ @Override
+ public void focusGained(FocusEvent e)
+ {
+ txt_search.requestFocusInWindow();
+ }
+ });
mainFrame.invalidate();
mainFrame.pack();
} catch (Exception e)
*/
private void jbInit() throws Exception
{
+ 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.setAutoCreateRowSorter(true);
tbl_summary.getTableHeader().setReorderingAllowed(false);
}
}
});
+ 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)
+ {
+ 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_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)
+ {
+ 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"));
}
}
});
- scrl_searchResult.setPreferredSize(new Dimension(800, 400));
+ scrl_searchResult.setPreferredSize(new Dimension(width, height));
cmb_searchTarget.setFont(new java.awt.Font("Verdana", 0, 12));
cmb_searchTarget.addActionListener(new ActionListener()
}
txt_search.setToolTipText(JvSwingUtils.wrapTooltip(true,
tooltipText));
- searchAction();
+ searchAction(true);
}
});
});
final DeferredTextInputListener listener = new DeferredTextInputListener(
- 500,
- new ActionListener()
+ 1500, new ActionListener()
{
@Override
public void actionPerformed(ActionEvent e)
{
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]);
+ .getAllDefaultDisplayedFTSDataColumns().toArray(
+ new Object[0]);
}
if (sourceTabbedPane.getTitleAt(index).equals(searchTabTitle))
{
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
{
}
};
tabbedPane.addChangeListener(changeListener);
- tabbedPane.setPreferredSize(new Dimension(800, 400));
+ tabbedPane.setPreferredSize(new Dimension(width, height));
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(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);
mainFrame.setVisible(true);
mainFrame.setContentPane(this);
mainFrame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
- Desktop.addInternalFrame(mainFrame, getFTSFrameTitle(), 900, 500);
+ mainFrame
+ .addInternalFrameListener(new javax.swing.event.InternalFrameAdapter()
+ {
+ @Override
+ public void internalFrameClosing(InternalFrameEvent e)
+ {
+ closeAction();
+ }
+ });
+ mainFrame.setVisible(true);
+ mainFrame.setContentPane(this);
+ mainFrame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
+ 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()
+ {
+ // 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
}
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);
}
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);
protected void btn_back_ActionPerformed()
{
- mainFrame.dispose();
- new SequenceFetcher(progressIdicator);
+ closeAction();
+ new SequenceFetcher(progressIndicator);
}
protected void disableActionButtons()
protected void btn_cancel_ActionPerformed()
{
- mainFrame.dispose();
+ closeAction();
}
/**
}
}
-
public void transferToSequenceFetcher(String ids)
{
// mainFrame.dispose();
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());