X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Ffts%2Fcore%2FGFTSPanel.java;h=a69d9f8c0494ae2ee620aadaa116d1bd9648f9fe;hb=7c9fbca0e2d9be5fd05e1c89f24f81d558bf6849;hp=bc68667d7feee9eea499e5b1cef9c0f017e8f2ad;hpb=7907818118f4a26f0a3c1c90f6e92778c0441897;p=jalview.git diff --git a/src/jalview/fts/core/GFTSPanel.java b/src/jalview/fts/core/GFTSPanel.java index bc68667..a69d9f8 100644 --- a/src/jalview/fts/core/GFTSPanel.java +++ b/src/jalview/fts/core/GFTSPanel.java @@ -35,17 +35,20 @@ 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.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; @@ -64,6 +67,7 @@ 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; @@ -81,7 +85,7 @@ public abstract class GFTSPanel extends JPanel implements GFTSPanelI protected JInternalFrame mainFrame = new JInternalFrame( getFTSFrameTitle()); - protected IProgressIndicator progressIdicator; + protected IProgressIndicator progressIndicator; protected JComboBox cmb_searchTarget = new JComboBox(); @@ -140,6 +144,11 @@ public abstract class GFTSPanel extends JPanel implements GFTSPanelI protected int pageLimit; + protected HashSet paginatorCart = new HashSet(); + + protected static final DecimalFormat totalNumberformatter = new DecimalFormat( + "###,###"); + private JTable tbl_summary = new JTable() { private boolean inLayout; @@ -183,6 +192,8 @@ public abstract class GFTSPanel extends JPanel implements GFTSPanelI && !inLayout) { resizingColumn.setPreferredWidth(resizingColumn.getWidth()); + String colHeader = resizingColumn.getHeaderValue().toString(); + getTempUserPrefs().put(colHeader, resizingColumn.getWidth()); } resizeAndRepaint(); } @@ -215,6 +226,7 @@ public abstract class GFTSPanel extends JPanel implements GFTSPanelI return toolTipText; } }; + protected JScrollPane scrl_searchResult = new JScrollPane(tbl_summary); public GFTSPanel() @@ -222,6 +234,14 @@ public abstract class GFTSPanel extends JPanel implements GFTSPanelI try { jbInit(); + mainFrame.addFocusListener(new FocusAdapter() + { + @Override + public void focusGained(FocusEvent e) + { + txt_search.requestFocusInWindow(); + } + }); mainFrame.invalidate(); mainFrame.pack(); } catch (Exception e) @@ -237,6 +257,10 @@ public abstract class GFTSPanel extends JPanel implements GFTSPanelI */ 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); @@ -341,7 +365,7 @@ public abstract class GFTSPanel extends JPanel implements GFTSPanelI }); btn_next_page.setEnabled(false); btn_next_page.setToolTipText(MessageManager - .getString("label.next_page_tooltop")); + .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() @@ -366,7 +390,7 @@ public abstract class GFTSPanel extends JPanel implements GFTSPanelI btn_prev_page.setEnabled(false); btn_prev_page.setToolTipText(MessageManager - .getString("label.prev_page_tooltop")); + .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() @@ -421,7 +445,7 @@ public abstract class GFTSPanel extends JPanel implements GFTSPanelI } } }); - 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() @@ -482,8 +506,7 @@ public abstract class GFTSPanel extends JPanel implements GFTSPanelI }); final DeferredTextInputListener listener = new DeferredTextInputListener( - 1500, - new ActionListener() + 1500, new ActionListener() { @Override public void actionPerformed(ActionEvent e) @@ -491,6 +514,7 @@ public abstract class GFTSPanel extends JPanel implements GFTSPanelI if (!getTypedText().equalsIgnoreCase(lastSearchTerm)) { searchAction(true); + paginatorCart.clear(); lastSearchTerm = getTypedText(); } } @@ -507,7 +531,7 @@ public abstract class GFTSPanel extends JPanel implements GFTSPanelI @Override public void focusLost(FocusEvent e) { -// listener.stop(); + // listener.stop(); } }); @@ -540,8 +564,8 @@ public abstract class GFTSPanel extends JPanel implements GFTSPanelI 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)) { @@ -553,6 +577,7 @@ public abstract class GFTSPanel extends JPanel implements GFTSPanelI if (wantedFieldsUpdated()) { searchAction(true); + paginatorCart.clear(); } else { @@ -562,7 +587,7 @@ public abstract class GFTSPanel extends JPanel implements GFTSPanelI } }; 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())); @@ -587,7 +612,39 @@ public abstract class GFTSPanel extends JPanel implements GFTSPanelI 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 @@ -639,15 +696,15 @@ public abstract class GFTSPanel extends JPanel implements GFTSPanelI } 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); } @@ -709,8 +766,8 @@ public abstract class GFTSPanel extends JPanel implements GFTSPanelI protected void btn_back_ActionPerformed() { - mainFrame.dispose(); - new SequenceFetcher(progressIdicator); + closeAction(); + new SequenceFetcher(progressIndicator); } protected void disableActionButtons() @@ -722,7 +779,7 @@ public abstract class GFTSPanel extends JPanel implements GFTSPanelI protected void btn_cancel_ActionPerformed() { - mainFrame.dispose(); + closeAction(); } /** @@ -756,7 +813,6 @@ public abstract class GFTSPanel extends JPanel implements GFTSPanelI } } - public void transferToSequenceFetcher(String ids) { // mainFrame.dispose(); @@ -824,6 +880,7 @@ public abstract class GFTSPanel extends JPanel implements GFTSPanelI @Override public void prevPageAction() { + updatePaginatorCart(); if (offSet >= pageLimit) { offSet = offSet - pageLimit; @@ -838,9 +895,72 @@ public abstract class GFTSPanel extends JPanel implements GFTSPanelI @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() @@ -863,6 +983,7 @@ public abstract class GFTSPanel extends JPanel implements GFTSPanelI setPrevPageButtonEnabled(true); } } + public void referesh() { mainFrame.setTitle(getFTSFrameTitle());