JAL-3048 DialogRunnerI reduced to minimal implementation
[jalview.git] / utils / test / JalviewJSTest.java
1 package test;
2 import java.awt.BorderLayout;
3 import java.awt.ComponentOrientation;
4 import java.awt.Container;
5 import java.awt.Dimension;
6 import java.awt.Font;
7 import java.awt.GridLayout;
8 import java.awt.MediaTracker;
9 import java.io.File;
10 import java.text.DecimalFormat;
11 import java.util.HashMap;
12 import java.util.Locale;
13 import java.util.Map;
14
15 import javax.swing.ImageIcon;
16 import javax.swing.JButton;
17 import javax.swing.JCheckBox;
18 import javax.swing.JCheckBoxMenuItem;
19 import javax.swing.JFrame;
20 import javax.swing.JLabel;
21 import javax.swing.JMenu;
22 import javax.swing.JMenuBar;
23 import javax.swing.JPanel;
24 import javax.swing.JRadioButton;
25 import javax.swing.JRadioButtonMenuItem;
26 import javax.swing.SwingConstants;
27 import javax.swing.WindowConstants;
28 import javax.swing.border.TitledBorder;
29
30 /**
31  * A class with a main method entry point for ad hoc tests of JalviewJS
32  * behaviour. The J2S transpiler should generate an html entry point for this
33  * class, allowing comparison between Java and Javascript execution.
34  */
35 public class JalviewJSTest extends JPanel
36 {
37   public static void main(String[] args)
38   {
39     new JalviewJSTest().doTest3();
40   }
41
42   void doTest3() 
43   {
44             System.out.println("Mungo".toLowerCase(Locale.getDefault()));
45             System.out.println("Mungo".toLowerCase(Locale.ENGLISH));
46     System.out.println("Mungo".toLowerCase(Locale.ROOT));
47   }
48   
49   void doTest2() {
50           Map<File, String> map = new HashMap<>();
51           File f1 = new File("/var/folders/y/xyz");
52           File f2 = new File("/var/folders/y/xyz");
53           map.put(f1,  "hello world");
54           System.out.println("f1.equals(f2) = " + f1.equals(f2));
55           System.out.println("f1 hashCode = " + f1.hashCode());
56           System.out.println("f2 hashCode = " + f2.hashCode());
57           System.out.println(map.get(f2));
58   }
59   /**
60    * Put some content in a JFrame and show it
61    */
62   void doTest()
63   {
64           System.out.println("ab;c;".split(";"));
65     new DecimalFormat("###,###").format((Integer) 1);
66     JFrame main = new JFrame();
67     main.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
68     JMenu menu = new JMenu("testing");
69     menu.setHorizontalAlignment(SwingConstants.RIGHT);
70     main.setContentPane(getVisualPaneContent(menu));
71     main.setJMenuBar(new JMenuBar());
72     main.getJMenuBar().add(menu);
73     main.pack();
74     main.setVisible(true);
75   }
76
77   /**
78    * Builds a cut-down 'Preferences Visual tab' for a minimal test of layout
79    * problems
80  * @param menu 
81    */
82   Container getVisualPaneContent(JMenu menu)
83   {
84     JPanel panel = new JPanel();
85     panel.setPreferredSize(new Dimension(400, 500));
86     panel.setOpaque(true);
87     panel.setLayout(new BorderLayout());
88
89     JPanel firstColumn = new JPanel();
90     firstColumn.setLayout(new GridLayout(10, 1));
91     firstColumn.setBorder(new TitledBorder("column 1"));
92
93     /*
94      * bug 21/08/18:
95      * - checkbox label and text extend outside the enclosing panel in JS
96      */
97     Font font = new Font("Verdana", Font.PLAIN, 11);
98
99     JLabel l1 = new JLabel(getImage("test2.png"));
100     l1.setText("trailing right");
101     l1.setHorizontalTextPosition(SwingConstants.TRAILING);
102     l1.setComponentOrientation(ComponentOrientation.LEFT_TO_RIGHT);
103     l1.setHorizontalAlignment(SwingConstants.RIGHT);
104
105     JLabel l2 = new JLabel(getImage("test2.png"));
106     l2.setText("leading left");
107     l2.setFont(font);
108     l2.setHorizontalTextPosition(SwingConstants.LEADING);
109     l2.setHorizontalAlignment(SwingConstants.LEFT);
110
111     JButton b1 = new JButton("right left");
112     b1.setIcon(getImage("test2.png"));
113     b1.setFont(font);
114     b1.setHorizontalTextPosition(SwingConstants.RIGHT);
115     b1.setHorizontalAlignment(SwingConstants.LEFT);
116
117     firstColumn.add(l1);
118     firstColumn.add(l2);
119     firstColumn.add(b1);
120
121     
122     JCheckBox cb3 = new JCheckBox("leading,left-to-right,rt");
123     cb3.setFont(font);
124     cb3.setComponentOrientation(ComponentOrientation.LEFT_TO_RIGHT);
125     cb3.setHorizontalTextPosition(SwingConstants.LEADING);
126     cb3.setHorizontalAlignment(SwingConstants.TRAILING);
127
128     JCheckBox cb4 = new JCheckBox("leading,right-to-left");
129     cb4.setFont(font);
130     cb4.setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT);
131     cb4.setHorizontalTextPosition(SwingConstants.LEADING);
132
133     JCheckBox cb5 = new JCheckBox("trailing,left-to-right");
134     cb5.setFont(font);
135     cb5.setComponentOrientation(ComponentOrientation.LEFT_TO_RIGHT);
136     cb5.setHorizontalTextPosition(SwingConstants.TRAILING);
137
138     JRadioButton rb1 = new JRadioButton("trailing,right-to-left");
139     rb1.setFont(font);
140     rb1.setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT);
141     rb1.setHorizontalTextPosition(SwingConstants.TRAILING);
142
143     JRadioButton rb2 = new JRadioButton("right,left-to-right");
144     rb2.setFont(font);
145     rb2.setComponentOrientation(ComponentOrientation.LEFT_TO_RIGHT);
146     rb2.setHorizontalTextPosition(SwingConstants.RIGHT);
147
148     JRadioButton rb3 = new JRadioButton("right,right-to-left");
149     rb3.setFont(font);
150     rb3.setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT);
151     rb3.setHorizontalTextPosition(SwingConstants.RIGHT);
152
153
154     
155     firstColumn.add(cb3);
156     firstColumn.add(cb4);
157     firstColumn.add(cb5);
158     firstColumn.add(rb1);
159     firstColumn.add(rb2);
160     firstColumn.add(rb3);
161     firstColumn.setBounds(200, 20, 200, 500);
162
163     JCheckBoxMenuItem cb3m = new JCheckBoxMenuItem("leading,left-to-right");
164     cb3m.setFont(font);
165     cb3m.setComponentOrientation(ComponentOrientation.LEFT_TO_RIGHT);
166     cb3m.setHorizontalTextPosition(SwingConstants.LEADING);
167
168     JCheckBoxMenuItem cb4m = new JCheckBoxMenuItem("leading,right-to-left");
169     cb4m.setFont(font);
170     cb4m.setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT);
171     cb4m.setHorizontalTextPosition(SwingConstants.LEADING);
172
173     JCheckBoxMenuItem cb5m = new JCheckBoxMenuItem("trailing,left-to-right");
174     cb5m.setFont(font);
175     cb5m.setComponentOrientation(ComponentOrientation.LEFT_TO_RIGHT);
176     cb5m.setHorizontalTextPosition(SwingConstants.TRAILING);
177
178     JCheckBoxMenuItem cb6m = new JCheckBoxMenuItem("trailing,right-to-left");
179     cb6m.setFont(font);
180     cb6m.setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT);
181     cb6m.setHorizontalTextPosition(SwingConstants.TRAILING);
182
183     JRadioButtonMenuItem rb1m = new JRadioButtonMenuItem("trailing,right-to-left");
184     rb1m.setFont(font);
185     rb1m.setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT);
186     rb1m.setHorizontalTextPosition(SwingConstants.TRAILING);
187
188     JRadioButtonMenuItem rb2m = new JRadioButtonMenuItem("right,left-to-right");
189     rb2m.setFont(font);
190     rb2m.setComponentOrientation(ComponentOrientation.LEFT_TO_RIGHT);
191     rb2m.setHorizontalTextPosition(SwingConstants.RIGHT);
192
193     JRadioButtonMenuItem rb3m = new JRadioButtonMenuItem("right,right-to-left");
194     rb3m.setFont(font);
195     rb3m.setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT);
196     rb3m.setHorizontalTextPosition(SwingConstants.RIGHT);
197
198     JMenu m1 = new JMenu("left");
199     JMenu m2 = new JMenu("right");
200     menu.add(m1);
201     menu.add(m2);
202     m1.add(cb3m);
203     m2.add(cb4m);
204     m1.add(cb5m);
205     m2.add(cb6m);
206     m2.add(rb1m);
207     m1.add(rb2m);
208     m2.add(rb3m);
209     
210     JPanel theTab = new JPanel();
211     
212     theTab.setLayout(null);
213     theTab.add(firstColumn);
214     panel.add(theTab);
215
216     return panel;
217   }
218
219 private ImageIcon getImage(String name) {
220     ImageIcon icon = new ImageIcon(getClass().getResource(name));
221
222     while(icon.getImageLoadStatus() == MediaTracker.LOADING)
223                 try {
224                         Thread.sleep(10);
225                 } catch (InterruptedException e) {
226                 }
227     return icon;
228 }
229 }