2 import jalview.gui.JvOptionPane;
3 import jalview.util.JSONUtils;
5 import java.awt.BorderLayout;
6 import java.awt.ComponentOrientation;
7 import java.awt.Container;
8 import java.awt.Dimension;
10 import java.awt.GridLayout;
11 import java.awt.MediaTracker;
13 import java.text.DecimalFormat;
14 import java.util.HashMap;
15 import java.util.Locale;
18 import javax.swing.ImageIcon;
19 import javax.swing.JButton;
20 import javax.swing.JCheckBox;
21 import javax.swing.JCheckBoxMenuItem;
22 import javax.swing.JFrame;
23 import javax.swing.JLabel;
24 import javax.swing.JMenu;
25 import javax.swing.JMenuBar;
26 import javax.swing.JPanel;
27 import javax.swing.JRadioButton;
28 import javax.swing.JRadioButtonMenuItem;
29 import javax.swing.SwingConstants;
30 import javax.swing.WindowConstants;
31 import javax.swing.border.TitledBorder;
33 import org.json.simple.parser.ParseException;
36 * A class with a main method entry point for ad hoc tests of JalviewJS
37 * behaviour. The J2S transpiler should generate an html entry point for this
38 * class, allowing comparison between Java and Javascript execution.
40 public class JalviewJSTest extends JPanel
42 public static void main(String[] args)
44 new JalviewJSTest().doTest6();
50 * check for transpiler fix associated with JSONParser yylex.java use of charAt()
51 * instead of codePointAt(); moved here from PDBFTSRestClient
61 String result = s + x + y + z;
62 System.out.println("Expected " + "e103982102, found " + result);
65 Map<String, Object> jsonObj = (Map<String, Object>) JSONUtils
67 System.out.println(jsonObj);
68 } catch (ParseException e)
75 * Dialog message truncation
79 JFrame main = new JFrame();
80 main.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
81 main.setContentPane(new JPanel());
82 main.setMinimumSize(new Dimension(100, 100));
84 main.setVisible(true);
87 * like AlignFrame.delete_actionPerformed()
88 * except here it works fine, also in JS
90 JvOptionPane dialog = JvOptionPane.newOptionDialog(null);
91 Object[] options = new Object[] { "OK", "Cancel" };
92 String msg = "<html>Deleting all sequences will close the alignment window.<br>Confirm deletion or Cancel.";
93 dialog.showDialog(msg, "", JvOptionPane.DEFAULT_OPTION, JvOptionPane.PLAIN_MESSAGE, null, options, options[0]);
99 Float fl = new Float(0f);
100 System.out.println(fl.isInfinite());
101 System.out.println(fl.isNaN());
103 System.out.println(Float.isInfinite(0f));
104 System.out.println(Float.isFinite(0f));
105 System.out.println(Float.isNaN(0f));
110 System.out.println("Mungo".toLowerCase(Locale.getDefault()));
111 System.out.println("Mungo".toLowerCase(Locale.ENGLISH));
112 System.out.println("Mungo".toLowerCase(Locale.ROOT));
116 Map<File, String> map = new HashMap<>();
117 File f1 = new File("/var/folders/y/xyz");
118 File f2 = new File("/var/folders/y/xyz");
119 map.put(f1, "hello world");
120 System.out.println("f1.equals(f2) = " + f1.equals(f2));
121 System.out.println("f1 hashCode = " + f1.hashCode());
122 System.out.println("f2 hashCode = " + f2.hashCode());
123 System.out.println(map.get(f2));
127 * Put some content in a JFrame and show it
131 System.out.println("ab;c;".split(";"));
132 new DecimalFormat("###,###").format((Integer) 1);
133 JFrame main = new JFrame();
134 main.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
135 JMenu menu = new JMenu("testing");
136 menu.setHorizontalAlignment(SwingConstants.RIGHT);
137 main.setContentPane(getVisualPaneContent(menu));
138 main.setJMenuBar(new JMenuBar());
139 main.getJMenuBar().add(menu);
141 main.setVisible(true);
145 * Builds a cut-down 'Preferences Visual tab' for a minimal test of layout
149 Container getVisualPaneContent(JMenu menu)
151 JPanel panel = new JPanel();
152 panel.setPreferredSize(new Dimension(400, 500));
153 panel.setOpaque(true);
154 panel.setLayout(new BorderLayout());
156 JPanel firstColumn = new JPanel();
157 firstColumn.setLayout(new GridLayout(10, 1));
158 firstColumn.setBorder(new TitledBorder("column 1"));
162 * - checkbox label and text extend outside the enclosing panel in JS
164 Font font = new Font("Verdana", Font.PLAIN, 11);
166 JLabel l1 = new JLabel(getImage("test2.png"));
167 l1.setText("trailing right");
168 l1.setHorizontalTextPosition(SwingConstants.TRAILING);
169 l1.setComponentOrientation(ComponentOrientation.LEFT_TO_RIGHT);
170 l1.setHorizontalAlignment(SwingConstants.RIGHT);
172 JLabel l2 = new JLabel(getImage("test2.png"));
173 l2.setText("leading left");
175 l2.setHorizontalTextPosition(SwingConstants.LEADING);
176 l2.setHorizontalAlignment(SwingConstants.LEFT);
178 JButton b1 = new JButton("right left");
179 b1.setIcon(getImage("test2.png"));
181 b1.setHorizontalTextPosition(SwingConstants.RIGHT);
182 b1.setHorizontalAlignment(SwingConstants.LEFT);
189 JCheckBox cb3 = new JCheckBox("leading,left-to-right,rt");
191 cb3.setComponentOrientation(ComponentOrientation.LEFT_TO_RIGHT);
192 cb3.setHorizontalTextPosition(SwingConstants.LEADING);
193 cb3.setHorizontalAlignment(SwingConstants.TRAILING);
195 JCheckBox cb4 = new JCheckBox("leading,right-to-left");
197 cb4.setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT);
198 cb4.setHorizontalTextPosition(SwingConstants.LEADING);
200 JCheckBox cb5 = new JCheckBox("trailing,left-to-right");
202 cb5.setComponentOrientation(ComponentOrientation.LEFT_TO_RIGHT);
203 cb5.setHorizontalTextPosition(SwingConstants.TRAILING);
205 JRadioButton rb1 = new JRadioButton("trailing,right-to-left");
207 rb1.setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT);
208 rb1.setHorizontalTextPosition(SwingConstants.TRAILING);
210 JRadioButton rb2 = new JRadioButton("right,left-to-right");
212 rb2.setComponentOrientation(ComponentOrientation.LEFT_TO_RIGHT);
213 rb2.setHorizontalTextPosition(SwingConstants.RIGHT);
215 JRadioButton rb3 = new JRadioButton("right,right-to-left");
217 rb3.setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT);
218 rb3.setHorizontalTextPosition(SwingConstants.RIGHT);
222 firstColumn.add(cb3);
223 firstColumn.add(cb4);
224 firstColumn.add(cb5);
225 firstColumn.add(rb1);
226 firstColumn.add(rb2);
227 firstColumn.add(rb3);
228 firstColumn.setBounds(200, 20, 200, 500);
230 JCheckBoxMenuItem cb3m = new JCheckBoxMenuItem("leading,left-to-right");
232 cb3m.setComponentOrientation(ComponentOrientation.LEFT_TO_RIGHT);
233 cb3m.setHorizontalTextPosition(SwingConstants.LEADING);
235 JCheckBoxMenuItem cb4m = new JCheckBoxMenuItem("leading,right-to-left");
237 cb4m.setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT);
238 cb4m.setHorizontalTextPosition(SwingConstants.LEADING);
240 JCheckBoxMenuItem cb5m = new JCheckBoxMenuItem("trailing,left-to-right");
242 cb5m.setComponentOrientation(ComponentOrientation.LEFT_TO_RIGHT);
243 cb5m.setHorizontalTextPosition(SwingConstants.TRAILING);
245 JCheckBoxMenuItem cb6m = new JCheckBoxMenuItem("trailing,right-to-left");
247 cb6m.setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT);
248 cb6m.setHorizontalTextPosition(SwingConstants.TRAILING);
250 JRadioButtonMenuItem rb1m = new JRadioButtonMenuItem("trailing,right-to-left");
252 rb1m.setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT);
253 rb1m.setHorizontalTextPosition(SwingConstants.TRAILING);
255 JRadioButtonMenuItem rb2m = new JRadioButtonMenuItem("right,left-to-right");
257 rb2m.setComponentOrientation(ComponentOrientation.LEFT_TO_RIGHT);
258 rb2m.setHorizontalTextPosition(SwingConstants.RIGHT);
260 JRadioButtonMenuItem rb3m = new JRadioButtonMenuItem("right,right-to-left");
262 rb3m.setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT);
263 rb3m.setHorizontalTextPosition(SwingConstants.RIGHT);
265 JMenu m1 = new JMenu("left");
266 JMenu m2 = new JMenu("right");
277 JPanel theTab = new JPanel();
279 theTab.setLayout(null);
280 theTab.add(firstColumn);
286 private ImageIcon getImage(String name) {
287 ImageIcon icon = new ImageIcon(getClass().getResource(name));
289 while(icon.getImageLoadStatus() == MediaTracker.LOADING)
293 } catch (InterruptedException e) {