Merge branch 'merge/JAL-3609_and_JAL-3608' into releases/Release_2_11_1_Branch
[jalview.git] / src / jalview / gui / SVGOptions.java
1 /*
2  * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
3  * Copyright (C) $$Year-Rel$$ The Jalview Authors
4  * 
5  * This file is part of Jalview.
6  * 
7  * Jalview is free software: you can redistribute it and/or
8  * modify it under the terms of the GNU General Public License 
9  * as published by the Free Software Foundation, either version 3
10  * of the License, or (at your option) any later version.
11  *  
12  * Jalview is distributed in the hope that it will be useful, but 
13  * WITHOUT ANY WARRANTY; without even the implied warranty 
14  * of MERCHANTABILITY or FITNESS FOR A PARTICULAR 
15  * PURPOSE.  See the GNU General Public License for more details.
16  * 
17  * You should have received a copy of the GNU General Public License
18  * along with Jalview.  If not, see <http://www.gnu.org/licenses/>.
19  * The Jalview Authors are detailed in the 'AUTHORS' file.
20  */
21 package jalview.gui;
22
23 import jalview.util.MessageManager;
24
25 import java.awt.BorderLayout;
26 import java.awt.event.ActionEvent;
27 import java.awt.event.ActionListener;
28
29 import javax.swing.BorderFactory;
30 import javax.swing.ButtonGroup;
31 import javax.swing.JButton;
32 import javax.swing.JCheckBox;
33 import javax.swing.JDialog;
34 import javax.swing.JLabel;
35 import javax.swing.JOptionPane;
36 import javax.swing.JPanel;
37 import javax.swing.JRadioButton;
38
39 public class SVGOptions extends JPanel
40 {
41   JDialog dialog;
42
43   public boolean cancelled = false;
44
45   String value;
46
47   public SVGOptions()
48   {
49     try
50     {
51       jbInit();
52     } catch (Exception ex)
53     {
54       ex.printStackTrace();
55     }
56
57     ButtonGroup bg = new ButtonGroup();
58     bg.add(lineart);
59     bg.add(text);
60
61     JOptionPane pane = new JOptionPane(null, JvOptionPane.DEFAULT_OPTION,
62             JvOptionPane.DEFAULT_OPTION, null, new Object[]
63             { this });
64
65     dialog = pane.createDialog(Desktop.desktop, "SVG Rendering options");
66     dialog.setVisible(true);
67
68   }
69
70   private void jbInit() throws Exception
71   {
72     lineart.setFont(JvSwingUtils.getLabelFont());
73     lineart.setText(MessageManager.getString("label.lineart"));
74     text.setFont(JvSwingUtils.getLabelFont());
75     text.setText(MessageManager.getString("action.text"));
76     text.setSelected(true);
77     askAgain.setFont(JvSwingUtils.getLabelFont());
78     askAgain.setText(MessageManager.getString("label.dont_ask_me_again"));
79     ok.setText(MessageManager.getString("action.ok"));
80     ok.addActionListener(new ActionListener()
81     {
82       @Override
83       public void actionPerformed(ActionEvent e)
84       {
85         ok_actionPerformed(e);
86       }
87     });
88     cancel.setText(MessageManager.getString("action.cancel"));
89     cancel.addActionListener(new ActionListener()
90     {
91       @Override
92       public void actionPerformed(ActionEvent e)
93       {
94         cancel_actionPerformed(e);
95       }
96     });
97     jLabel1.setFont(JvSwingUtils.getLabelFont());
98     jLabel1.setText("Select SVG character rendering style");
99     this.setLayout(borderLayout1);
100     jPanel3.setBorder(BorderFactory.createEtchedBorder());
101     jPanel2.add(text);
102     jPanel2.add(lineart);
103     jPanel2.add(askAgain);
104     jPanel1.add(ok);
105     jPanel1.add(cancel);
106     jPanel3.add(jLabel1);
107     jPanel3.add(jPanel2);
108     this.add(jPanel3, java.awt.BorderLayout.CENTER);
109     this.add(jPanel1, java.awt.BorderLayout.SOUTH);
110   }
111
112   JRadioButton lineart = new JRadioButton();
113
114   JRadioButton text = new JRadioButton();
115
116   JCheckBox askAgain = new JCheckBox();
117
118   JButton ok = new JButton();
119
120   JButton cancel = new JButton();
121
122   JPanel jPanel1 = new JPanel();
123
124   JLabel jLabel1 = new JLabel();
125
126   JPanel jPanel2 = new JPanel();
127
128   JPanel jPanel3 = new JPanel();
129
130   BorderLayout borderLayout1 = new BorderLayout();
131
132   public void ok_actionPerformed(ActionEvent e)
133   {
134     if (lineart.isSelected())
135     {
136       value = "Lineart";
137     }
138     else
139     {
140       value = "Text";
141     }
142
143     if (!askAgain.isSelected())
144     {
145       jalview.bin.Cache.applicationProperties.remove("SVG_RENDERING");
146     }
147     else
148     {
149       jalview.bin.Cache.setProperty("SVG_RENDERING", value);
150     }
151
152     dialog.setVisible(false);
153   }
154
155   public void cancel_actionPerformed(ActionEvent e)
156   {
157     cancelled = true;
158     dialog.setVisible(false);
159   }
160
161   public String getValue()
162   {
163     return value;
164   }
165 }