X-Git-Url: http://source.jalview.org/gitweb/?p=jalview.git;a=blobdiff_plain;f=src%2Fjalview%2Ffts%2Fcore%2FGFTSPanel.java;h=62262d5e4e58b9f665d9006bb257eb1b3dc5a03e;hp=0d0cce6c1aa2a541e42b639d7eed34e538a7bc3a;hb=4a3def9f59cefe629c9a33d87483283aee085928;hpb=914a9aaf5a2eeb3cdedf136c2e6b4b6e4b5d6174 diff --git a/src/jalview/fts/core/GFTSPanel.java b/src/jalview/fts/core/GFTSPanel.java index 0d0cce6..62262d5 100644 --- a/src/jalview/fts/core/GFTSPanel.java +++ b/src/jalview/fts/core/GFTSPanel.java @@ -21,6 +21,7 @@ package jalview.fts.core; +import jalview.bin.Cache; import jalview.fts.api.FTSDataColumnI; import jalview.fts.api.GFTSPanelI; import jalview.fts.core.FTSDataColumnPreferences.PreferenceSource; @@ -30,10 +31,12 @@ 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.Font; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.FocusAdapter; @@ -73,7 +76,6 @@ import javax.swing.event.DocumentListener; import javax.swing.event.InternalFrameEvent; import javax.swing.table.DefaultTableModel; import javax.swing.table.TableColumn; -import javax.swing.text.JTextComponent; /** * This class provides the swing GUI layout for FTS Panel and implements most of @@ -86,10 +88,13 @@ import javax.swing.text.JTextComponent; @SuppressWarnings("serial") public abstract class GFTSPanel extends JPanel implements GFTSPanelI { + private static final Font VERDANA_12 = new Font("Verdana", 0, 12); + protected JInternalFrame mainFrame = new JInternalFrame( getFTSFrameTitle()); protected JTabbedPane tabs = new JTabbedPane(); + protected IProgressIndicator progressIndicator; protected JComboBox cmb_searchTarget = new JComboBox<>(); @@ -131,7 +136,7 @@ public abstract class GFTSPanel extends JPanel implements GFTSPanelI protected JLabel lbl_blank = new JLabel(balnkPlaceholderImage); - private JTabbedPane tabbedPane = new JTabbedPane(); + JTabbedPane tabbedPane = new JTabbedPane(); private JPanel pnl_actions = new JPanel(); @@ -259,8 +264,7 @@ public abstract class GFTSPanel extends JPanel implements GFTSPanelI { tabs.addTab(MessageManager.getString("label.retrieve_ids"), fetcher); - fetcher.setDatabaseChooserVisible(false); - fetcher.embedWithFTSPanel(this); + fetcher.embedIn(this); } mainFrame.setMinimumSize(new Dimension(MIN_WIDTH, MIN_HEIGHT)); final JPanel ftsPanel = this; @@ -270,10 +274,9 @@ public abstract class GFTSPanel extends JPanel implements GFTSPanelI public void focusGained(FocusEvent e) { // TODO: make selected tab gain focus in correct widget - if (tabs != null - && tabs.getSelectedComponent() == ftsPanel) + if (tabs != null && tabs.getSelectedComponent() == ftsPanel) { - txt_search.requestFocusInWindow(); + txt_search.getComponent().requestFocusInWindow(); } } }); @@ -293,18 +296,18 @@ public abstract class GFTSPanel extends JPanel implements GFTSPanelI private void jbInit() throws Exception { - txt_search = new JvCacheableInputBox<>(getCacheKey()); + txt_search = new JvCacheableInputBox<>(getCacheKey(), 45); 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_warning.setFont(VERDANA_12); lbl_loading.setVisible(false); - lbl_loading.setFont(new java.awt.Font("Verdana", 0, 12)); + lbl_loading.setFont(VERDANA_12); lbl_blank.setVisible(true); - lbl_blank.setFont(new java.awt.Font("Verdana", 0, 12)); + lbl_blank.setFont(VERDANA_12); tbl_summary.setAutoCreateRowSorter(true); tbl_summary.getTableHeader().setReorderingAllowed(false); @@ -357,21 +360,35 @@ public abstract class GFTSPanel extends JPanel implements GFTSPanelI } }); + JButton txt_help = new JButton("?"); + txt_help.setFont(VERDANA_12); + txt_help.setPreferredSize(new Dimension(15, 15)); + txt_help.setToolTipText(MessageManager.getString("action.help")); + txt_help.addActionListener(new ActionListener() + { + @Override + public void actionPerformed(ActionEvent e) + { + showHelp(); + } + }); + btn_autosearch.setText(MessageManager.getString("option.autosearch")); btn_autosearch.setToolTipText( MessageManager.getString("option.enable_disable_autosearch")); - btn_autosearch.setSelected( - jalview.bin.Cache.getDefault(getAutosearchPreference(), true)); + // disable autosearch by default + btn_autosearch.setSelected(!Platform.isJS() + && Cache.getDefault(getAutosearchPreference(), false)); btn_autosearch.addActionListener(new java.awt.event.ActionListener() { @Override public void actionPerformed(ActionEvent e) { - jalview.bin.Cache.setProperty(getAutosearchPreference(), + Cache.setProperty(getAutosearchPreference(), Boolean.toString(btn_autosearch.isSelected())); } }); - btn_back.setFont(new java.awt.Font("Verdana", 0, 12)); + btn_back.setFont(VERDANA_12); btn_back.setText(MessageManager.getString("action.back")); btn_back.addActionListener(new java.awt.event.ActionListener() { @@ -394,7 +411,7 @@ public abstract class GFTSPanel extends JPanel implements GFTSPanelI }); btn_ok.setEnabled(false); - btn_ok.setFont(new java.awt.Font("Verdana", 0, 12)); + btn_ok.setFont(VERDANA_12); btn_ok.setText(MessageManager.getString("action.ok")); btn_ok.addActionListener(new java.awt.event.ActionListener() { @@ -418,7 +435,7 @@ public abstract class GFTSPanel extends JPanel implements GFTSPanelI 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.setFont(VERDANA_12); btn_next_page.setText(MessageManager.getString("action.next_page")); btn_next_page.addActionListener(new java.awt.event.ActionListener() { @@ -443,7 +460,7 @@ public abstract class GFTSPanel extends JPanel implements GFTSPanelI 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.setFont(VERDANA_12); btn_prev_page.setText(MessageManager.getString("action.prev_page")); btn_prev_page.addActionListener(new java.awt.event.ActionListener() { @@ -476,7 +493,7 @@ public abstract class GFTSPanel extends JPanel implements GFTSPanelI btn_next_page.setVisible(false); } - btn_cancel.setFont(new java.awt.Font("Verdana", 0, 12)); + btn_cancel.setFont(VERDANA_12); btn_cancel.setText(MessageManager.getString("action.cancel")); btn_cancel.addActionListener(new java.awt.event.ActionListener() { @@ -499,7 +516,7 @@ public abstract class GFTSPanel extends JPanel implements GFTSPanelI }); scrl_searchResult.setPreferredSize(new Dimension(width, height)); - cmb_searchTarget.setFont(new java.awt.Font("Verdana", 0, 12)); + cmb_searchTarget.setFont(VERDANA_12); cmb_searchTarget.addItemListener(new ItemListener() { @Override @@ -525,43 +542,42 @@ public abstract class GFTSPanel extends JPanel implements GFTSPanelI "label.separate_multiple_query_values", new Object[] { getCmbSearchTarget().getSelectedItem().toString() }); } - txt_search.setToolTipText( + txt_search.getComponent().setToolTipText( JvSwingUtils.wrapTooltip(true, tooltipText)); searchAction(true); } } }); - txt_search.setFont(new java.awt.Font("Verdana", 0, 12)); + txt_search.getComponent().setFont(VERDANA_12); - txt_search.getEditor().getEditorComponent() - .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(); - } - } - } - }); + 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() { @@ -575,8 +591,7 @@ public abstract class GFTSPanel extends JPanel implements GFTSPanelI } } }, false); - ((JTextComponent) txt_search.getEditor().getEditorComponent()) - .getDocument().addDocumentListener(listener); + txt_search.addDocumentListener(listener); txt_search.addFocusListener(new FocusListener() { @@ -595,7 +610,6 @@ public abstract class GFTSPanel extends JPanel implements GFTSPanelI txt_search.addActionListener(new ActionListener() { - @Override public void actionPerformed(ActionEvent e) { @@ -628,7 +642,7 @@ public abstract class GFTSPanel extends JPanel implements GFTSPanelI btn_ok.setEnabled(false); btn_next_page.setEnabled(false); btn_prev_page.setEnabled(false); - txt_search.setEnabled(false); + txt_search.getComponent().setEnabled(false); cmb_searchTarget.setEnabled(false); previousWantedFields = getFTSRestClient() .getAllDefaultDisplayedFTSDataColumns() @@ -639,7 +653,7 @@ public abstract class GFTSPanel extends JPanel implements GFTSPanelI btn_back.setEnabled(true); btn_cancel.setEnabled(true); refreshPaginatorState(); - txt_search.setEnabled(true); + txt_search.getComponent().setEnabled(true); cmb_searchTarget.setEnabled(true); if (wantedFieldsUpdated()) { @@ -665,7 +679,8 @@ public abstract class GFTSPanel extends JPanel implements GFTSPanelI pnl_results.add(tabbedPane); pnl_inputs.add(cmb_searchTarget); - pnl_inputs.add(txt_search); + pnl_inputs.add(txt_search.getComponent()); + pnl_inputs.add(txt_help); pnl_inputs.add(btn_autosearch); pnl_inputs.add(lbl_loading); pnl_inputs.add(lbl_warning); @@ -710,6 +725,8 @@ public abstract class GFTSPanel extends JPanel implements GFTSPanelI Desktop.addInternalFrame(mainFrame, getFTSFrameTitle(), width, height); } + abstract protected void showHelp(); + protected void closeAction() { getTempUserPrefs().put("FTSPanel.width", this.getWidth()); @@ -804,11 +821,6 @@ public abstract class GFTSPanel extends JPanel implements GFTSPanelI return cmb_searchTarget; } - public JComboBox getTxtSearch() - { - return txt_search; - } - public JInternalFrame getMainFrame() { return mainFrame; @@ -849,6 +861,10 @@ public abstract class GFTSPanel extends JPanel implements GFTSPanelI } } + /** + * Action on Back button is to close this panel and open a new Sequence + * Fetcher panel + */ public void btn_back_ActionPerformed() { closeAction(); @@ -900,7 +916,7 @@ public abstract class GFTSPanel extends JPanel implements GFTSPanelI public void transferToSequenceFetcher(String ids) { - seqFetcher.getTextArea().setText(ids); + seqFetcher.setQuery(ids); Thread worker = new Thread(seqFetcher, "GFTSSeqFetcher"); worker.start(); } @@ -925,7 +941,7 @@ public abstract class GFTSPanel extends JPanel implements GFTSPanelI lbl_blank.setVisible(true); btn_ok.setEnabled(false); mainFrame.setTitle(getFTSFrameTitle()); - referesh(); + refresh(); tbl_summary.setModel(new DefaultTableModel()); tbl_summary.setVisible(false); } @@ -1062,9 +1078,11 @@ public abstract class GFTSPanel extends JPanel implements GFTSPanelI } } - public void referesh() + public void refresh() { mainFrame.setTitle(getFTSFrameTitle()); } + @Override + public abstract void okAction(); }