import jalview.gui.IProgressIndicator;
import jalview.gui.JvSwingUtils;
import jalview.gui.SequenceFetcher;
-import jalview.io.cache.AppCache;
-import jalview.io.cache.CacheBoxI;
-import jalview.io.cache.Cacheable;
+import jalview.io.cache.JvCacheableInputBox;
import jalview.util.MessageManager;
import java.awt.BorderLayout;
import javax.swing.ImageIcon;
import javax.swing.JButton;
+import javax.swing.JCheckBox;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JInternalFrame;
*/
@SuppressWarnings("serial")
-public abstract class GFTSPanel extends JPanel implements GFTSPanelI, Cacheable
+public abstract class GFTSPanel extends JPanel implements GFTSPanelI
{
protected JInternalFrame mainFrame = new JInternalFrame(
getFTSFrameTitle());
+ protected JTabbedPane tabs = new JTabbedPane();
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 JComboBox<String> txt_search;
+ protected JCheckBox btn_autosearch = new JCheckBox();
+
+ protected JvCacheableInputBox<String> txt_search;
protected SequenceFetcher seqFetcher;
protected StringBuilder errorWarning = new StringBuilder();
- protected ImageIcon warningImage = new ImageIcon(getClass().getResource(
- "/images/warning.gif"));
+ protected ImageIcon warningImage = new ImageIcon(
+ getClass().getResource("/images/warning.gif"));
- protected ImageIcon loadingImage = new ImageIcon(getClass().getResource(
- "/images/loading.gif"));
+ protected ImageIcon loadingImage = new ImageIcon(
+ getClass().getResource("/images/loading.gif"));
- protected ImageIcon balnkPlaceholderImage = new ImageIcon(getClass()
- .getResource("/images/blank_16x16_placeholder.png"));
+ protected ImageIcon balnkPlaceholderImage = new ImageIcon(
+ getClass().getResource("/images/blank_16x16_placeholder.png"));
protected JLabel lbl_warning = new JLabel(warningImage);
protected int pageLimit;
- protected HashSet<String> paginatorCart = new HashSet<String>();
+ 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(
"###,###");
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;
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.setDatabaseChooserVisible(false);
+ fetcher.embedWithFTSPanel(this);
+ }
+ mainFrame.setMinimumSize(new Dimension(MIN_WIDTH, MIN_HEIGHT));
+ final JPanel ftsPanel = this;
mainFrame.addFocusListener(new FocusAdapter()
{
@Override
public void focusGained(FocusEvent e)
{
- txt_search.requestFocusInWindow();
+ // TODO: make selected tab gain focus in correct widget
+ if (tabs != null
+ && tabs.getSelectedComponent() == ftsPanel)
+ {
+ txt_search.requestFocusInWindow();
+ }
}
});
mainFrame.invalidate();
private void jbInit() throws Exception
{
- txt_search = new JComboBox<String>();
- txt_search.setEditable(true);
- txt_search
- .setPrototypeDisplayValue("XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX");
+ txt_search = new JvCacheableInputBox<>(getCacheKey());
populateCmbSearchTargetOptions();
Integer width = getTempUserPrefs().get("FTSPanel.width") == null ? 800
: getTempUserPrefs().get("FTSPanel.width");
}
});
+ 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));
+ 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_next_page.setEnabled(false);
- btn_next_page.setToolTipText(MessageManager
- .getString("label.next_page_tooltip"));
+ 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()
});
btn_prev_page.setEnabled(false);
- btn_prev_page.setToolTipText(MessageManager
- .getString("label.prev_page_tooltip"));
+ 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()
if (e.getStateChange() == ItemEvent.SELECTED)
{
String tooltipText;
- if ("all".equalsIgnoreCase(getCmbSearchTarget().getSelectedItem()
- .toString()))
+ if ("all".equalsIgnoreCase(
+ getCmbSearchTarget().getSelectedItem().toString()))
{
tooltipText = MessageManager.getString("label.search_all");
}
- else if ("pdb id".equalsIgnoreCase(getCmbSearchTarget()
- .getSelectedItem().toString()))
+ else if ("pdb id".equalsIgnoreCase(
+ getCmbSearchTarget().getSelectedItem().toString()))
{
tooltipText = MessageManager
.getString("label.separate_multiple_accession_ids");
else
{
tooltipText = MessageManager.formatMessage(
- "label.separate_multiple_query_values",
- new Object[] { getCmbSearchTarget().getSelectedItem()
- .toString() });
+ "label.separate_multiple_query_values", new Object[]
+ { getCmbSearchTarget().getSelectedItem().toString() });
}
- txt_search.setToolTipText(JvSwingUtils.wrapTooltip(true,
- tooltipText));
+ txt_search.setToolTipText(
+ JvSwingUtils.wrapTooltip(true, tooltipText));
searchAction(true);
}
}
});
-
txt_search.setFont(new java.awt.Font("Verdana", 0, 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()))
- {
- transferToSequenceFetcher(getTypedText());
- }
- }
- }
- });
-
+ {
+ @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)
{
- String typed = getTypedText();
- if (!typed.equalsIgnoreCase(lastSearchTerm))
+ if (btn_autosearch.isSelected()
+ || txt_search.wasEnterPressed())
{
- searchAction(true);
- paginatorCart.clear();
- lastSearchTerm = typed;
+ performSearchAction();
}
}
}, false);
}
});
+ txt_search.addActionListener(new ActionListener()
+ {
+
+ @Override
+ public void actionPerformed(ActionEvent e)
+ {
+ performSearchAction();
+ }
+ });
final String searchTabTitle = MessageManager
.getString("label.search_result");
final String configureCols = MessageManager
txt_search.setEnabled(false);
cmb_searchTarget.setEnabled(false);
previousWantedFields = getFTSRestClient()
- .getAllDefaultDisplayedFTSDataColumns().toArray(
- new Object[0]);
+ .getAllDefaultDisplayedFTSDataColumns()
+ .toArray(new Object[0]);
}
if (sourceTabbedPane.getTitleAt(index).equals(searchTabTitle))
{
pnl_results.add(tabbedPane);
pnl_inputs.add(cmb_searchTarget);
pnl_inputs.add(txt_search);
+ pnl_inputs.add(btn_autosearch);
pnl_inputs.add(lbl_loading);
pnl_inputs.add(lbl_warning);
pnl_inputs.add(lbl_blank);
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()
+ 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");
getTempUserPrefs().put("FTSPanel.x", mainFrame.getX());
getTempUserPrefs().put("FTSPanel.y", mainFrame.getY());
mainFrame.dispose();
- AppCache.getInstance().persistCache(this);
+ txt_search.persistCache();
}
public class DeferredTextInputListener implements DocumentListener
}
+ 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)
{
lbl_loading.setVisible(false);
lbl_blank.setVisible(false);
- lbl_warning.setToolTipText(JvSwingUtils.wrapTooltip(true,
- errorWarning.toString()));
+ lbl_warning.setToolTipText(
+ JvSwingUtils.wrapTooltip(true, errorWarning.toString()));
lbl_warning.setVisible(true);
}
}
- protected void btn_back_ActionPerformed()
+ public void btn_back_ActionPerformed()
{
closeAction();
new SequenceFetcher(progressIndicator);
btn_cancel.setEnabled(false);
}
- protected void btn_cancel_ActionPerformed()
+ public void btn_cancel_ActionPerformed()
{
closeAction();
}
*/
public void populateCmbSearchTargetOptions()
{
- List<FTSDataColumnI> searchableTargets = new ArrayList<FTSDataColumnI>();
+ List<FTSDataColumnI> searchableTargets = new ArrayList<>();
try
{
Collection<FTSDataColumnI> foundFTSTargets = getFTSRestClient()
@Override
public String getTypedText()
{
- String typed = txt_search.getEditor().getItem() == null ? ""
- : txt_search
- .getEditor().getItem().toString().trim();
- System.out.println("Typed : " + typed);
- return typed;
+ return txt_search.getUserInput();
}
@Override
int totalRows = resultTable.getRowCount();
try
{
- primaryKeyColIndex = getFTSRestClient().getPrimaryKeyColumIndex(
- wantedFields, false);
+ primaryKeyColIndex = getFTSRestClient()
+ .getPrimaryKeyColumIndex(wantedFields, false);
} catch (Exception e)
{
e.printStackTrace();
int primaryKeyColIndex = 0;
try
{
- primaryKeyColIndex = getFTSRestClient().getPrimaryKeyColumIndex(
- wantedFields, false);
+ primaryKeyColIndex = getFTSRestClient()
+ .getPrimaryKeyColumIndex(wantedFields, false);
} catch (Exception e)
{
e.printStackTrace();
mainFrame.setTitle(getFTSFrameTitle());
}
- @Override
- public void initCache()
- {
- AppCache.getInstance().initCache(this);
- }
-
- @Override
- public void updateCache()
- {
- AppCache.getInstance().updateCache(this);
- }
-
-
-
- @Override
- public String getCacheKey()
- {
- return getCacheKey();
- }
-
- @Override
- public CacheBoxI<String> getCacheComboBox()
- {
- return new CacheBoxI<String>()
- {
-
- @Override
- public void setSelectedItem(Object anObject)
- {
- txt_search.setSelectedItem(anObject);
- }
-
- @Override
- public void requestFocus()
- {
- txt_search.requestFocusInWindow();
- }
-
- @Override
- public void looseFocus()
- {
- mainFrame.requestFocusInWindow();
- }
-
- @Override
- public void addItem(String item)
- {
- txt_search.addItem(item);
- }
-
- @Override
- public void removeAllItems()
- {
- txt_search.removeAllItems();
- }
-
- @Override
- public int getItemCount()
- {
- return txt_search.getItemCount();
- }
-
- @Override
- public String getUserInput()
- {
- return txt_search.getEditor().getItem() == null ? "" : txt_search
- .getEditor().getItem().toString().trim();
- }
- };
- }
-
-
-
}