From: hansonr Date: Wed, 27 Mar 2019 09:39:05 +0000 (-0400) Subject: clean-up of isJS business for (temporarily) noneditable JS JComboBox X-Git-Tag: Develop-2_11_2_0-d20201215~24^2~68^2~209 X-Git-Url: http://source.jalview.org/gitweb/?p=jalview.git;a=commitdiff_plain;h=d27da609341db336cdda77a6cc880a6059d8a2d9 clean-up of isJS business for (temporarily) noneditable JS JComboBox --- diff --git a/src/jalview/io/cache/JvCacheableInputBox.java b/src/jalview/io/cache/JvCacheableInputBox.java index 38079d6..9ec3a9f 100644 --- a/src/jalview/io/cache/JvCacheableInputBox.java +++ b/src/jalview/io/cache/JvCacheableInputBox.java @@ -24,7 +24,6 @@ import jalview.bin.Cache; import jalview.util.MessageManager; import jalview.util.Platform; -import java.awt.Dimension; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.FocusListener; @@ -61,15 +60,15 @@ import javax.swing.text.JTextComponent; */ public class JvCacheableInputBox { - private JComboBox comboBox; // used for Jalview + protected JComboBox comboBox; // used for Jalview - private JTextField textField; // used for JalviewJS + protected JTextField textField; // used for JalviewJS - private static final long serialVersionUID = 5774610435079326695L; + protected JTextComponent textComponent; // used for both - private String cacheKey; + protected String cacheKey; - private AppCache appCache; + protected AppCache appCache; private JPopupMenu popup = new JPopupMenu(); @@ -77,9 +76,7 @@ public class JvCacheableInputBox volatile boolean enterWasPressed = false; -private String prototypeDisplayValue; - -private boolean isJS; + private String prototypeDisplayValue; /** * @return flag indicating if the most recent keypress was enter @@ -96,53 +93,65 @@ private boolean isJS; */ public JvCacheableInputBox(String newCacheKey) { - super(); - isJS = Platform.isJS(); - this.prototypeDisplayValue = - "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"; - if (isJS) + // super(); + cacheKey = newCacheKey; + prototypeDisplayValue = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"; + boolean useTextField = Platform.isJS(); + // BH 2019.03 only switch for JavaScript here + // SwingJS TODO implement editable combo box + if (useTextField) { - textField = new JTextField() { - public Dimension getPreferredSize() { - return super.getPreferredSize(); -// FontMetrics fm = getFontMetrics(getFont()); -// return new Dimension(fm.stringWidth(prototypeDisplayValue), fm.getHeight()); - } - }; - return; + appCache = null; + textComponent = textField = new JTextField(); + // { + // @Override + // public Dimension getPreferredSize() { + // return super.getPreferredSize(); + //// FontMetrics fm = getFontMetrics(getFont()); + //// return new Dimension(fm.stringWidth(prototypeDisplayValue), + // fm.getHeight()); + // } + // }; } - - this.cacheKey = newCacheKey; - comboBox = new JComboBox(); - comboBox.setEditable(true); - comboBox.addKeyListener(new KeyAdapter() + else { - @Override - public void keyTyped(KeyEvent e) + appCache = AppCache.getInstance(); + comboBox = new JComboBox<>(); + textComponent = (JTextComponent) comboBox.getEditor() + .getEditorComponent(); + comboBox.setEditable(true); + comboBox.addKeyListener(new KeyAdapter() { - enterWasPressed = false; - if (e.getKeyCode() == KeyEvent.VK_ENTER) + @Override + public void keyTyped(KeyEvent e) { - enterWasPressed = true; + enterWasPressed = false; + if (e.getKeyCode() == KeyEvent.VK_ENTER) + { + enterWasPressed = true; + } + // let event bubble up } - // let event bubble up - } - }); - comboBox.setPrototypeDisplayValue(prototypeDisplayValue); - appCache = AppCache.getInstance(); + }); + comboBox.setPrototypeDisplayValue(prototypeDisplayValue); + } initCachePopupMenu(); initCache(newCacheKey); updateCache(); } /** - * Method for initialising cache items for a given cache key and populating the - * in-memory cache with persisted cache items + * Method for initialising cache items for a given cache key and populating + * the in-memory cache with persisted cache items * * @param cacheKey */ private void initCache(String cacheKey) { + if (appCache == null) + { + return; + } // obtain persisted cache items from properties file as a delimited string String delimitedCacheStr = Cache.getProperty(cacheKey); if (delimitedCacheStr == null || delimitedCacheStr.isEmpty()) @@ -172,6 +181,10 @@ private boolean isJS; */ private void initCachePopupMenu() { + if (appCache == null) + { + return; + } menuItemClearCache.setFont(new java.awt.Font("Verdana", 0, 12)); menuItemClearCache .setText(MessageManager.getString("action.clear_cached_items")); @@ -215,7 +228,7 @@ private boolean isJS; */ public void updateCache() { - if (isJS) + if (appCache == null) { return; } @@ -291,10 +304,11 @@ private boolean isJS; */ public void persistCache() { - if (!isJS) + if (appCache == null) { - appCache.persistCache(cacheKey); + return; } + appCache.persistCache(cacheKey); } /** @@ -304,7 +318,7 @@ private boolean isJS; */ public String getUserInput() { - if (isJS) + if (comboBox == null) { return textField.getText().trim(); } @@ -314,12 +328,12 @@ private boolean isJS; public JComponent getComponent() { - return isJS ? textField : comboBox; + return (comboBox == null ? textField : comboBox); } public void addActionListener(ActionListener actionListener) { - if (isJS) + if (comboBox == null) { textField.addActionListener(actionListener); } @@ -331,36 +345,27 @@ private boolean isJS; public void addDocumentListener(DocumentListener listener) { - if (!isJS) - { - ((JTextComponent) comboBox.getEditor().getEditorComponent()) - .getDocument().addDocumentListener(listener); - } + textComponent.getDocument().addDocumentListener(listener); } public void addFocusListener(FocusListener focusListener) { - if (isJS) - { - textField.addFocusListener(focusListener); - } - else - { - comboBox.addFocusListener(focusListener); - } + textComponent.addFocusListener(focusListener); } public void addKeyListener(KeyListener kl) { - if (!isJS) - { - comboBox.getEditor().getEditorComponent().addKeyListener(kl); - } + textComponent.addKeyListener(kl); + } + + public void addCaretListener(CaretListener caretListener) + { + textComponent.addCaretListener(caretListener); } public void setEditable(boolean b) { - if (!isJS) + if (comboBox != null) { comboBox.setEditable(b); } @@ -368,16 +373,16 @@ private boolean isJS; public void setPrototypeDisplayValue(String string) { - this.prototypeDisplayValue = string; - if (!isJS) + prototypeDisplayValue = string; + if (comboBox != null) { comboBox.setPrototypeDisplayValue(string); - } + } } public void setSelectedItem(String userInput) { - if (!isJS) + if (comboBox != null) { comboBox.setSelectedItem(userInput); } @@ -385,25 +390,12 @@ private boolean isJS; public boolean isPopupVisible() { - if (!isJS) - { - return comboBox.isPopupVisible(); - } - return false; - } - - public void addCaretListener(CaretListener caretListener) - { - if (!isJS) - { - ((JTextComponent) comboBox.getEditor().getEditorComponent()) - .addCaretListener(caretListener); - } + return (comboBox != null && comboBox.isPopupVisible()); } public void addItem(String item) { - if (!isJS) + if (comboBox != null) { comboBox.addItem(item); }