X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FLineartOptions.java;fp=src%2Fjalview%2Fgui%2FLineartOptions.java;h=d55733c359f3443a5d7d01951ae76d6c99d697fa;hb=65740880573a48adc758bec3939ece9d9ae104dd;hp=0000000000000000000000000000000000000000;hpb=71aa78b8a7d54e5aeb6b278310dfd735efb77477;p=jalview.git
diff --git a/src/jalview/gui/LineartOptions.java b/src/jalview/gui/LineartOptions.java
new file mode 100644
index 0000000..d55733c
--- /dev/null
+++ b/src/jalview/gui/LineartOptions.java
@@ -0,0 +1,205 @@
+/*
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
+ *
+ * This file is part of Jalview.
+ *
+ * Jalview is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation, either version 3
+ * of the License, or (at your option) any later version.
+ *
+ * Jalview is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ * PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Jalview. If not, see setResponseAction
.
+ *
+ * If the user chooses an option and also "Don't ask me again", the chosen + * option is saved as a property with key type_RENDERING i.e. "EPS_RENDERING", + * "SVG_RENDERING" or "HTML_RENDERING". + * + * @param formatType + * image type e.g. EPS, SVG + * @param textOption + * true to select Text, false for Lineart + */ + public LineartOptions(String formatType, AtomicBoolean textOption) + { + this.asText = textOption; + dialogTitle = MessageManager.formatMessage( + "label.select_character_style_title", formatType); + String preferencesKey = formatType + "_RENDERING"; + try + { + jbInit(preferencesKey, formatType); + } catch (Exception ex) + { + ex.printStackTrace(); + } + + dialog = JvOptionPane.newOptionDialog(Desktop.desktop); + } + + /** + * Registers a Runnable action to be performed for a particular user response + * in the dialog + * + * @param action + */ + public void setResponseAction(Object response, Runnable action) + { + dialog.setResponseHandler(response, action); + } + + /** + * Shows the dialog, and performs any registered actions depending on the user + * choices + */ + public void showDialog() + { + Object[] options = new Object[] { MessageManager.getString("action.ok"), + MessageManager.getString("action.cancel") }; + dialog.showInternalDialog(this, dialogTitle, + JvOptionPane.OK_CANCEL_OPTION, JvOptionPane.PLAIN_MESSAGE, null, + options, MessageManager.getString("action.ok")); + } + + /** + * Initialises the panel layout + * + * @param preferencesKey + * @param formatType + * @throws Exception + */ + private void jbInit(String preferencesKey, String formatType) + throws Exception + { + /* + * radio buttons for Text or Lineart - selection updates the value + * of field 'asText' so it is correct when used in the confirm action + */ + lineartRB = new JRadioButton(MessageManager.getString("label.lineart")); + lineartRB.setFont(JvSwingUtils.getLabelFont()); + lineartRB.setSelected(!asText.get()); + lineartRB.addActionListener(new ActionListener() + { + @Override + public void actionPerformed(ActionEvent e) + { + asText.set(!lineartRB.isSelected()); + } + }); + + JRadioButton textRB = new JRadioButton( + MessageManager.getString("action.text")); + textRB.setFont(JvSwingUtils.getLabelFont()); + textRB.setSelected(asText.get()); + textRB.addActionListener(new ActionListener() + { + @Override + public void actionPerformed(ActionEvent e) + { + asText.set(textRB.isSelected()); + } + }); + + ButtonGroup bg = new ButtonGroup(); + bg.add(lineartRB); + bg.add(textRB); + + askAgainCB.setFont(JvSwingUtils.getLabelFont()); + askAgainCB.setText(MessageManager.getString("label.dont_ask_me_again")); + + JLabel prompt = new JLabel(MessageManager.formatMessage( + "label.select_character_rendering_style", formatType)); + prompt.setFont(JvSwingUtils.getLabelFont()); + + this.setLayout(new FlowLayout(FlowLayout.LEFT)); + setBorder(BorderFactory.createEtchedBorder()); + add(prompt); + add(textRB); + add(lineartRB); + add(askAgainCB); + } + + /** + * If "Don't ask me again" is selected, saves the selected option as the user + * preference, otherwise removes the existing user preference (if any) is + * removed + * + * @param preferencesKey + */ + protected void updatePreference(String preferencesKey) + { + value = lineartRB.isSelected() ? "Lineart" : "Text"; + + if (askAgainCB.isSelected()) + { + Cache.setProperty(preferencesKey, value); + } + else + { + Cache.applicationProperties.remove(preferencesKey); + } + } + + /** + * Answers "Lineart" or "Text" as selected by the user. + * + * @return + */ + public String getValue() + { + // todo remove + return value; + } +}