Visual Color Imbalance Detector: Reconstructed project directories and files
[VistaCID.git] / org / tjworld / vista / CID / CID.java
1 /*\r
2         * CID.java\r
3  **\r
4         * Copyright 2001 TJ, All rights reserved\r
5         *\r
6         * This software is protected by Copyright, Patent and Trademark rights.\r
7         * Use & disclosure is subject to licence terms.\r
8         *\r
9         * *** IN CONFIDENCE ***\r
10         * \r
11         * Created on 08 October 2001, 19:08\r
12         * $Header: /VisTA/CID/CID.java 11    12/11/01 3:07 Tj $\r
13         * \r
14         * $History: CID.java $\r
15  * \r
16  * *****************  Version 11  *****************\r
17  * User: Tj           Date: 12/11/01   Time: 3:07\r
18  * Updated in $/VisTA/CID\r
19  * Made setLookAndFeel() and it's ItemStateListener part of CID, not an\r
20  * inner class. Added new Help window options and supporting logic\r
21  * \r
22  * *****************  Version 10  *****************\r
23  * User: Tj           Date: 11/11/01   Time: 4:09\r
24  * Updated in $/VisTA/CID\r
25  * Testing HTML Help service\r
26  * \r
27  * *****************  Version 9  *****************\r
28  * User: Tj           Date: 11/11/01   Time: 0:08\r
29  * Updated in $/VisTA/CID\r
30  * Merged Constructors\r
31  * \r
32  * *****************  Version 8  *****************\r
33  * User: Tj           Date: 10/11/01   Time: 17:04\r
34  * Updated in $/VisTA/CID\r
35  * Added Java version checking to Constructor\r
36  * \r
37  * *****************  Version 7  *****************\r
38  * User: Tj           Date: 10/11/01   Time: 2:21\r
39  * Updated in $/VisTA/CID\r
40  * Adjustments to Slider widths - more to come; requires dynamic slider\r
41  * resizing\r
42  * \r
43  * *****************  Version 6  *****************\r
44  * User: Tj           Date: 9/11/01    Time: 19:21\r
45  * Updated in $/VisTA/CID\r
46  * Added Help window logic\r
47  * \r
48  * *****************  Version 5  *****************\r
49  * User: Tj           Date: 8/11/01    Time: 19:55\r
50  * Updated in $/VisTA/CID\r
51  * Tested, OK\r
52  * \r
53  * *****************  Version 4  *****************\r
54  * User: Tj           Date: 7/11/01    Time: 22:36\r
55  * Updated in $/VisTA/CID\r
56  * Added final(ish) layout, filter and template visual controls and icons\r
57  * \r
58  * *****************  Version 3  *****************\r
59  * User: Tj           Date: 31/10/01   Time: 5:12\r
60  * Updated in $/VisTA/CID\r
61  * Added VSS header\r
62  */\r
63 package org.tjworld.vista.cid;\r
64 \r
65 import java.awt.Color;\r
66 import java.awt.Component;\r
67 import java.awt.Container;\r
68 import java.awt.Cursor;\r
69 import java.awt.Dimension;\r
70 import java.awt.Frame;\r
71 import java.awt.Graphics;\r
72 import java.awt.Graphics2D;\r
73 import java.awt.Insets;\r
74 import java.awt.Point;\r
75 import java.awt.Toolkit;\r
76 \r
77 import java.awt.event.ActionEvent;\r
78 import java.awt.event.ItemListener;\r
79 import java.awt.event.KeyEvent;\r
80 \r
81 import java.awt.geom.AffineTransform;\r
82 \r
83 import java.awt.image.AffineTransformOp;\r
84 import java.awt.image.BufferedImage;\r
85 \r
86 import java.awt.print.PageFormat;\r
87 import java.awt.print.Printable;\r
88 import java.awt.print.PrinterException;\r
89 import java.awt.print.PrinterJob;\r
90 \r
91 import java.io.IOException;\r
92 import java.net.URL;\r
93 import java.net.MalformedURLException;\r
94 import java.text.MessageFormat;\r
95 import java.util.Locale;\r
96 \r
97 import javax.swing.AbstractButton;\r
98 import javax.swing.Action;\r
99 import javax.swing.ButtonGroup;\r
100 import javax.swing.ImageIcon;\r
101 import javax.swing.JComponent;\r
102 import javax.swing.JLabel;\r
103 import javax.swing.JMenu;\r
104 import javax.swing.JOptionPane;\r
105 import javax.swing.JRadioButtonMenuItem;\r
106 import javax.swing.KeyStroke;\r
107 import javax.swing.SwingUtilities;\r
108 import javax.swing.UIManager;\r
109 import javax.swing.UnsupportedLookAndFeelException;\r
110 \r
111 import javax.swing.event.ChangeEvent;\r
112 import javax.swing.event.ChangeListener;\r
113 \r
114 import javax.swing.tree.DefaultMutableTreeNode;\r
115 import javax.swing.tree.DefaultTreeModel;\r
116 \r
117 import org.tjworld.vista.cid.*;\r
118 import org.tjworld.components.*;\r
119 \r
120 /** CID - Colour Imbalance Discovery<br/>\r
121  *\r
122         * CID automates and aids the process of discovering the best combination of colour and\r
123         * tint in order to reduce or eliminate the symptoms of what is known as \r
124         * Meares-Irlen Syndrome, Irlen Syndrome or Scotopic Sensitivity Syndrome.\r
125         *\r
126         * This syndrome causes visual perception distortions that in sufferers causes text and certain\r
127         * patterns to appear to be moving, shimmering, fading or flickering.\r
128         *\r
129         * It has been found that as well as improving the reading experience and speed, especially in\r
130         * children with learning difficulties, filters will also reduce various types of reported\r
131         * eye stress and headaches.\r
132         *\r
133         * The headaches appear to be linked to photo-sensitive epilepsy and certain close-packed patterns\r
134         * cause the same reaction as text in some people.\r
135         * \r
136         * @author  TJ\r
137         * @version 1.1 21 Oct 2001 Filter (Template & Window), Look & Feel, Toolbar popup menu\r
138         * version 1.0 10 Oct 2001 Primary Design\r
139  */\r
140 public class CID extends javax.swing.JFrame implements Printable, ItemListener {\r
141         /** Controls developers extended reporting to the console\r
142                 * true = additional reporting to the console\r
143                 * false = no reporting to the console (use this state for Release Versions of CID)\r
144                 */\r
145         private boolean debugging = true;\r
146         \r
147         /** When non-null usually indicates an Applet, that provides load & save services.\r
148                 * When null, CID uses own (application) services for loading & saving\r
149                 */\r
150         private java.applet.Applet parent;\r
151         \r
152         /** Locale requested by the user */\r
153         private java.util.Locale currentLocale;\r
154         \r
155         /** Locale-specific data container */\r
156         private java.util.ResourceBundle cIDresources;\r
157         \r
158         // menu bar radio-button groups for mutually exclusive mode selections\r
159         private ButtonGroup mbgModelAlgorithm;\r
160         private ButtonGroup mbgModelEyes;\r
161         private ButtonGroup mbgTemplate;\r
162         private ButtonGroup mbgColourModel;\r
163         private ButtonGroup mbgColourView;\r
164         private ButtonGroup mbgDirection;\r
165         private ButtonGroup mbgLanguage;\r
166         private ButtonGroup mbgConnection;\r
167         private ButtonGroup mbgPlayback;\r
168         private ButtonGroup mbgFilter;\r
169         private ButtonGroup mbgLandF;\r
170 \r
171         // tool bar toggle-button groups for mutually exclusive mode selections\r
172         private ButtonGroup tbgModelAlgorithm;\r
173         private ButtonGroup tbgModelEyes;\r
174         private ButtonGroup tbgTemplate;\r
175         private ButtonGroup tbgColourModel;\r
176         private ButtonGroup tbgColourView;\r
177         private ButtonGroup tbgDirection;\r
178  private ButtonGroup tbgLanguage;\r
179         private ButtonGroup tbgConnection;\r
180         private ButtonGroup tbgPlayback;\r
181         \r
182         /** frame's small icon */\r
183         private javax.swing.ImageIcon icVista;\r
184         \r
185         /** collection of icon-pairs for active & dimmed icons */\r
186         private java.util.Vector vToolIcons;\r
187         \r
188         /** default glass pane before being replaced by VisTA filter */\r
189         private Component defaultGlassPane;\r
190         \r
191         /** printjob */\r
192         PrinterJob printJob = null;;\r
193         \r
194         /** printjob page format */\r
195         PageFormat pageFormat = null;;\r
196         \r
197         // actions shared by menu items & tool bar buttons\r
198         private Action aNew;\r
199         private Action aOpen;\r
200         private Action aSave;\r
201         private Action aSaveAs;\r
202         private Action aDelete;\r
203         private Action aSendToVistaDB;\r
204         private Action aToCookie;\r
205         private Action aFromCookie;\r
206         private Action aCreateFilter;\r
207         private Action aToVistaPage;\r
208         private Action aPageSetup;\r
209         private Action aPrint;\r
210         private Action aProperties;\r
211         private Action a1_Up;\r
212         private Action a2_Up;\r
213         private Action aAlternate;\r
214         private Action aBothEyes;\r
215         private Action aSeparateEyes;\r
216         private Action aReading;\r
217         private Action aPatterns;\r
218         private Action aImages;\r
219         private Action aRGB;\r
220         private Action aHSB;\r
221         private Action aCYMK;\r
222         private Action aWheel;\r
223         private Action aTriangle;\r
224         private Action aQube;\r
225         private Action aColorChooser;\r
226         private Action aSwatches;\r
227         private Action aManual;\r
228         private Action aAuto;\r
229         private Action aDirected;\r
230         private Action aScript;\r
231         private Action aConnect;\r
232         private Action aDisconnect;\r
233         private Action aPlay;\r
234  private Action aRecord;\r
235         private Action aPause;\r
236         private Action aStop;\r
237         private Action aFilterTemplate;\r
238         private Action aFilterWindow;\r
239         private Action aFilterScreen;\r
240         private Action aDynamicVista;\r
241         private Action aLanguageDefault;\r
242         private Action aLanguageBritish;\r
243         private Action aLanguageFrench;\r
244         private Action aLanguageSpanish;\r
245         private Action aLanguageGerman;\r
246         private Action aLanguageArabicEgypt;\r
247         private Action aLanguageFarsiIran;\r
248         private Action aLanguageHindiIndia;\r
249         private Action aLanguageIndonesian;\r
250         private Action aLanguageJapanese;\r
251         private Action aLanguageDutch;\r
252         private Action aLanguagePashto;\r
253         private Action aLanguagePortuguese;\r
254         private Action aLanguageRussian;\r
255         private Action aLanguageSwedish;\r
256         private Action aLanguageUrdu;\r
257         private Action aLanguageChinese;\r
258         private Action aHelpContents;\r
259         private Action aHelpSearch;\r
260         private Action aHelpWeb;\r
261         \r
262  // icon index constants\r
263         static final int IC_NEW = 0; // Profile menu\r
264         static final int IC_OPEN_FILE = 1;\r
265         static final int IC_SAVE = 2;\r
266         static final int IC_SAVE_AS = 3;\r
267         static final int IC_SEND_TO_VISTA_DB = 4;\r
268         static final int IC_TO_COOKIE = 5;\r
269         static final int IC_FROM_COOKIE = 6;\r
270         static final int IC_CREATE_FILTER = 7;\r
271         static final int IC_TO_VISTA_PAGE = 8;\r
272         static final int IC_PAGE_SETUP = 9;\r
273         static final int IC_PRINT = 10;\r
274         static final int IC_PROPERTIES = 11;\r
275 \r
276         static final int IC_1UP = 12; // Model menu\r
277         static final int IC_2UP = 13;\r
278         static final int IC_ALTERNATE = 14;\r
279         static final int IC_BOTH_EYES = 15;\r
280         static final int IC_SEPARATE_EYES = 16;\r
281 \r
282         static final int IC_READING = 17; // Template menu\r
283         static final int IC_PATTERNS = 18;\r
284  static final int IC_IMAGES = 81; //    recent addition\r
285 \r
286         static final int IC_RGB = 19; // Colour menu\r
287         static final int IC_HSB = 20;\r
288         static final int IC_CYMK = 21;\r
289         static final int IC_WHEEL = 22;\r
290         static final int IC_TRIANGLE = 23;\r
291         static final int IC_QUBE = 24;\r
292         static final int IC_COLOR_CHOOSER = 25;\r
293         \r
294         static final int IC_MANUAL = 26; // Director menu\r
295         static final int IC_AUTO = 27;\r
296         static final int IC_DIRECTED = 28;\r
297         static final int IC_SCRIPT = 29;\r
298 \r
299         static final int IC_OPTION_CONFIG_READING = 30; // Options menu\r
300         static final int IC_OPTION_CONFIG_PATTERNS = 31;\r
301         static final int IC_OPTION_CONFIG_DIRECTED = 32;\r
302         static final int IC_OPTION_CONFIG_SCRIPT = 33;\r
303         static final int IC_OPTION_CONFIG_VISTA_DB = 34;\r
304         static final int IC_OPTION_CHOOSE = 35;\r
305         static final int IC_OPTION_CUSTOMIZE = 36;\r
306         static final int IC_OPTION_PREFERENCES = 37;\r
307         \r
308         static final int IC_CONNECT = 38;\r
309         static final int IC_PAUSE = 39;\r
310         static final int IC_DISCONNECT = 40;\r
311         \r
312         static final int IC_OPTION_DYNAMIC_VISTA = 41;\r
313 \r
314         static final int IC_HELP_CONTENTS = 42; // Help menu\r
315         static final int IC_HELP_INDEX = 43;\r
316         static final int IC_HELP_SEARCH = 44;\r
317         static final int IC_HELP_EXPLAIN = 45;\r
318         static final int IC_HELP_ABOUT = 46;\r
319         static final int IC_HELP_WEB = 47;\r
320 \r
321         static final int IC_PROFILE = 48; // Menu titles\r
322         static final int IC_MODEL = 49;\r
323         static final int IC_TEMPLATE = 50;\r
324         static final int IC_COLOUR = 51;\r
325         static final int IC_OPTIONS = 52;\r
326         static final int IC_HELP = 53;\r
327 \r
328         static final int IC_PLAY = 54;\r
329         static final int IC_STOP = 55;\r
330 \r
331         static final int IC_LANGUAGE = 56;\r
332         static final int IC_LANG_DEFAULT = 57;\r
333         static final int IC_LANG_BRITISH = 58;\r
334         static final int IC_LANG_FRENCH = 59;\r
335         static final int IC_LANG_SPANISH = 60;\r
336         static final int IC_LANG_GERMAN = 61;\r
337         \r
338         static final int IC_SWATCHES = 62;              // late addition\r
339         static final int IC_FILTER_TEMPLATE = 63;\r
340         static final int IC_FILTER_WINDOW = 64;\r
341         static final int IC_FILTER_SCREEN = 65;\r
342         static final int IC_PROFILE_DELETE = 66;\r
343         static final int IC_RECORD = 67;\r
344         static final int IC_OPTION_CONFIG_SWATCHES = 68;\r
345         \r
346         static final int IC_LANG_AR_EG = 69; // more languages\r
347         static final int IC_LANG_FA_IR = 70;\r
348         static final int IC_LANG_HI_IN = 71;\r
349         static final int IC_LANG_IN = 72;\r
350         static final int IC_LANG_JA = 73;\r
351         static final int IC_LANG_NL = 74;\r
352         static final int IC_LANG_PS = 75;\r
353         static final int IC_LANG_PT = 76;\r
354         static final int IC_LANG_RU = 77;\r
355         static final int IC_LANG_SV = 78;\r
356         static final int IC_LANG_UR = 79;\r
357         static final int IC_LANG_ZH = 80;\r
358 \r
359         // always make this the next (and highest) value, to indicate the icon-store Vector size\r
360         static final int IC_MAX = 82;\r
361 \r
362  // VisTA Filter choices\r
363  static final int FILTER_TEMPLATE = 1;\r
364  static final int FILTER_WINDOW = 2;\r
365  static final int FILTER_SCREEN = 3;\r
366 \r
367  /** tracks previous VisTA filter to ensure clean switching from one to another */      \r
368  private int activeFilter;\r
369 \r
370  // dimension used by all tool bar buttons\r
371         static final java.awt.Dimension toolButtonSize = new java.awt.Dimension(22,22);\r
372         \r
373  // dimension used by all status icons\r
374         static final java.awt.Dimension statusIconButtonSize = new java.awt.Dimension(16, 16);\r
375 \r
376  static org.tjworld.vista.cid.CID frameCID;\r
377 \r
378  /** Popup menu for tool bar button group selection, shared with the JMenu of the frame */\r
379  private javax.swing.JPopupMenu toolBarPopup;\r
380 \r
381  /** Popup called directly from tool bar? */\r
382  private boolean showToolbarPopup = false;\r
383 \r
384         /** about-dialog form */\r
385  private CIDAbout aboutDialog = null;\r
386         \r
387         /** help window */\r
388         private xhtmlHelp helpWindow = null;\r
389 \r
390         /** help window location */\r
391         private Point helpLocation = null;\r
392         \r
393         /** system file chooser form */\r
394         private CIDFileChooser cidFileChooserDialog = null;\r
395                 \r
396         /** root of the Help Contents tree */\r
397         private DefaultMutableTreeNode helpContentsRootNode = null;\r
398         \r
399         /** root of the Help Index tree */\r
400         private DefaultMutableTreeNode helpIndexRootNode = null;\r
401 \r
402         /** VisTA colourized transparent filter pane */\r
403         private VistaFilter vfFilter;\r
404                         \r
405         /** Printing thread */\r
406         // Thread prt;\r
407         \r
408         /** Creates new form CID with a parent<br/>\r
409                 * This constructor receives a reference to a parent container applet, such that when \r
410                 * launched from an applet it is able to use applet methods to enquire about it's environment\r
411                 * and adopt suitable security and access control behaviour for opening, saving, and accessing\r
412                 * VisTA.Web profiles and other resources.\r
413                 *\r
414                 * @param parent Component that owns this CID. Usually an <code>Applet</code> descendent.\r
415                 * @see #CID()\r
416                 */\r
417         public CID(java.applet.Applet parent) {\r
418                 this.parent = parent;\r
419 \r
420                 // get the best set of resources for the system locale\r
421                 currentLocale = java.util.Locale.getDefault();\r
422                 /*** At a later stage, need to override this from a user's preferences */\r
423                                                                 \r
424                 /* get the locale-specific set of resources before creating any\r
425                 * User Interface components that require locale-specifc text labels\r
426                 * or messages */\r
427                 loadLocale(currentLocale);\r
428 \r
429                 // make sure this is Java 1.4 or later\r
430                 String version = System.getProperty("java.version");\r
431                 float majorVersion = 0;\r
432                 float minorVersion = 0;\r
433                 try {\r
434                  majorVersion = Float.parseFloat(version.substring(0, 3));\r
435                         minorVersion = Float.parseFloat(version.substring(4, 5));\r
436                 } catch(NumberFormatException e) {\r
437                  System.err.println("Unable to understand java.version (" + version + ")");\r
438                 }\r
439                 if(majorVersion < 1.4f) { // report version requirement to the user\r
440                         System.err.println("java.version=" + version + "\nmajorVersion=" + majorVersion + "\nminorVersion=" + minorVersion);\r
441 \r
442                         // now build a locale-sensitive resource-bundle compound message\r
443                         MessageFormat mf = new MessageFormat(cIDresources.getString("tVerDlgMsg"), currentLocale);\r
444                         String message = mf.format(new Object[] { version } );\r
445 \r
446                         // display a modal error dialog\r
447                         JOptionPane.showMessageDialog(null,     message, cIDresources.getString("tVerDlgTitle"), JOptionPane.ERROR_MESSAGE);\r
448                         \r
449                         System.exit(1); // stop now\r
450                 }\r
451                 /* don't use the Host window decoration if at all possible\r
452                         * Must do this before the frame becomes Displayable\r
453                         * (by a call to pack() or show() )\r
454                         */\r
455                 if(UIManager.getLookAndFeel().getSupportsWindowDecorations()) {\r
456                 setUndecorated(true); // first Java 1.4 specific action\r
457    getRootPane().setWindowDecorationStyle(javax.swing.JRootPane.FRAME);\r
458          }\r
459                 \r
460                 // init() can throw MalformedURLExceptions when looking for it's Icons and such\r
461                 try {init(); } catch(Exception e) {e.printStackTrace(); }\r
462         }\r
463         \r
464 \r
465         /** Creates new CID form without parent<br/>\r
466                 * The default constructor creates the VisTA.CID user interface. Sets <code>parent</code> to <code>null</code>,\r
467                 * indicating that it owns itself - in other words, it's an application and must rely on it's own\r
468                 * services for loading and saving files.\r
469                 */\r
470  public CID() {\r
471                 this(null);\r
472         }\r
473 \r
474         /** Load a new locale-specific resource bundle\r
475                 *\r
476                 * @param loc The Locale whose resource bundle is required\r
477                 */\r
478  void loadLocale(Locale loc) {\r
479                 cIDresources = java.util.ResourceBundle.getBundle("org.tjworld.vista.cid.CIDresources", loc);\r
480         }\r
481 \r
482         /** Dynamically change the current locale for all the locale-sensitive objects in the frame\r
483                 *\r
484                 * @param loc The new Locale\r
485                 */\r
486         void changeLocale(Locale loc) {\r
487                 if(currentLocale != loc) { // don't update unless a real change is required (not default to British when 'en' is already selected, for example )\r
488                         loadLocale(loc); // alternate resource bundle if possible\r
489 \r
490                         setComponentLocale((Component)this, loc);\r
491                 \r
492                         //*** needs writing:- setActionLocales();\r
493                         pack(); // re-layout to use optimum space - changes in text sizes might cause resizing of many components\r
494                         \r
495                         currentLocale = loc; // keep track of which locale is active\r
496                         \r
497                         if(helpWindow != null) // ensure the Help Pages also switch to the new locale\r
498                                 helpWindow.setPageLocale(currentLocale);\r
499                 }\r
500         }\r
501         \r
502         /** Recursive method that updates Locale and Locale-sensitive text\r
503                 * of all child components & containers.\r
504                 *\r
505                 * Algorithm is flexible:-\r
506                 *\r
507                 * Component.name = ResourceBundle.BaseKeyNameFragment\r
508                 * BaseKeyNameFragment + "Name" gives ke namevalue for setText()\r
509                 * BaseKeyNameFragment + "Tip" gives value for setToolTipText()\r
510                 * BaseKeyNameFragment + "Title" gives value for setTitle()\r
511                 *\r
512                 * Every Component.locale is updated\r
513                 * If Component.name == null no update to the values is attempted\r
514                 * If a text, toolTipText, or title value == null, no update is attempted\r
515                 *\r
516                 * If Component is also a Container, every child is also passed into recursive calls\r
517                 * to this method.\r
518                 * \r
519                 * @param c The Component to update\r
520                 * @param loc The new Locale\r
521                 */\r
522         void setComponentLocale(Component c, Locale loc) {\r
523                 if(c != null && loc != null && (c instanceof Component)) { // okay so far\r
524                         c.setLocale(loc); // change the locale\r
525    if(debugging) System.out.println("Locale update for " + c.getClass().getName());\r
526                         \r
527                         if(c.getName() != null) { // I store the resource bundle Key in the component's name attribute\r
528                                 if(c instanceof java.awt.Frame) { // window frame, no Text but a Title\r
529                                         if(((Frame)c).getTitle() != null) // don't set title unless it already has one\r
530                                         ((Frame)c).setTitle(cIDresources.getString(c.getName() + "Title")); // set the title\r
531                                 }\r
532                                 \r
533                                 if(c instanceof javax.swing.AbstractButton) { // able to set Text\r
534                                         if(((AbstractButton)c).getText() != null) // don't set text for components without any already\r
535                                         ((AbstractButton)c).setText(cIDresources.getString(c.getName() + "Name")); // set the text\r
536 \r
537                                 /* Update the component's PowerAction locale, if it has an associated PowerAction instead\r
538                                         * of a regular Action.\r
539                                         *\r
540                                         * The AbstractButton (JMenuItem or JToggleButton/JButton will have registered itself as a \r
541                                                 * PropertyChangeListener on the PowerAction when JComponent.add(Action) was called,\r
542                                         * so when PowerAction alters any of it's key/value pairs, the underlying Action.putValue()\r
543                                         * will fire a property change event to the JComponent(s) using the Action, \r
544                                  * which should cause them to update their Locale-sensitive values\r
545                                         */\r
546                                 Action a = null;\r
547                                         PowerAction pa;\r
548                                 if((a = ((AbstractButton)c).getAction()) != null) { // has an action attached...\r
549                                                 if(a instanceof PowerAction) { // ... might be locale-sensitive\r
550                                                         pa = (PowerAction)a; // easier to handle\r
551                                                         \r
552                                                         /* must turn off the PowerAction's change notifications while it updates itself,\r
553                                                                 * else any tool bar button will have it's Text and Mnemonic properties set\r
554                                                                 * when we want them keeping clear.\r
555                                                                 * They were specifically cleared in CID.init()\r
556                                                                 */\r
557                                                         long mask = PowerAction.MASK_ALL;\r
558                                                         pa.setPropertyChangeMask(mask); \r
559                                                 pa.setLocale(loc, cIDresources); // change it's Locale\r
560                                                         pa.setPropertyChangeMask(PowerAction.MASK_ALL);\r
561                                                 }\r
562                                 }               \r
563                                 }\r
564 \r
565                                 if(c instanceof javax.swing.JComponent) { // might have a tool tip too\r
566                                         if(((JComponent)c).getToolTipText() != null) //don't set a tip for components without it already\r
567                                          ((JComponent)c).setToolTipText(cIDresources.getString(c.getName() + "Tip")); // set the tip\r
568 \r
569                                         JComponent cb = (JComponent) c; // cast to make for less typing!\r
570                                 if(cb.getBorder() != null) { // has a border, which might have a title attached...\r
571                                         if(cb.getBorder() instanceof javax.swing.border.TitledBorder) { // it does, so maybe there's something to change\r
572                                                 if(((javax.swing.border.TitledBorder)cb.getBorder()).getTitle() != null) // better change it\r
573                                                         ((javax.swing.border.TitledBorder)cb.getBorder()).setTitle(cIDresources.getString(c.getName() + "Title"));\r
574                                         }\r
575                                  }\r
576 \r
577                                  if(c instanceof javax.swing.JLabel) { // instructive text?\r
578                                          if(((JLabel)c).getText() != null) // switch the text\r
579                                                  ((JLabel)c).setText(cIDresources.getString(c.getName()));\r
580                                         }\r
581                                 }\r
582                         }\r
583 \r
584                         // now deal with Containers that might have children\r
585                         if(c instanceof Container) { // might have child components that need updating\r
586                                 Component child[];\r
587                                 if(c instanceof javax.swing.JMenu)  // have to use a different method() for JMenus...\r
588                                         child = ((JMenu)c).getMenuComponents();\r
589                                 else\r
590                                  child = ((Container)c).getComponents(); // an array of all children\r
591                                 \r
592                                 for(int i = 0; i < child.length; i++) // do all the children too\r
593                                         setComponentLocale(child[i], loc); // recursively call this method to update children\r
594                         }\r
595                 }\r
596         }\r
597         \r
598  /** Initialize the application */\r
599         private void init() throws MalformedURLException {\r
600   // set the static member so Cursors can be exchanged when L&F is being changed\r
601   frameCID = this;\r
602 \r
603                 // let the user know CID is loading\r
604                 splash splash = new splash(this, cIDresources);\r
605                 splash.setVisible(true);\r
606                                                                 \r
607                 /* set the file name fragments for loading the Icons & build the URL.\r
608                 * Need to cope with two kinds of URL:- http: and file: - because CID\r
609                 * can be run as an application from the file system, or launched as\r
610                 * a frame from within an applet from a URL.\r
611                 */                                                              \r
612                 String sUrl = "";\r
613                 if(parent != null) // must be an applet, so use it's codebase\r
614                  sUrl = parent.getCodeBase().toString();\r
615                 else // it's an application so use the current working directory (where CID.class is executing from)\r
616                         sUrl = "file://" + System.getProperty("user.dir") + "/";\r
617                 sUrl = sUrl + "org/tjworld/vista/cid/";  // base URL\r
618                 String ext = ".gif"; // standard file extension\r
619                 String dimmed = "dim"; // name-prefix for dimmed versions of icons\r
620                 String n;\r
621                 URL baseURL = new URL(sUrl); // the base URL\r
622                 URL u = new URL(sUrl + "media/"); // the media URL\r
623                 vToolIcons = new java.util.Vector(); // the icon-pairs container\r
624                 vToolIcons.setSize(IC_MAX);\r
625 \r
626                 // these statements ***MUST*** be in ascending order (of index number) else initComponents() will throw NullPointerExceptions!!!\r
627                 vToolIcons.add(IC_NEW, new ToolIconPair(new ImageIcon(new URL(u, (n = "new") + ext)), new ImageIcon(new URL(u, dimmed + n + ext))));\r
628                 vToolIcons.add(IC_OPEN_FILE, new ToolIconPair(new ImageIcon(new URL(u, (n = "openFile") + ext)), new ImageIcon(new URL(u, dimmed + n + ext))));\r
629                 vToolIcons.add(IC_SAVE, new ToolIconPair(new ImageIcon(new URL(u, (n = "save") + ext)), new ImageIcon(new URL(u, dimmed + n + ext))));\r
630                 vToolIcons.add(IC_SAVE_AS, new ToolIconPair(new ImageIcon(new URL(u, (n = "saveAs") + ext)), new ImageIcon(new URL(u, dimmed + n + ext))));\r
631                 vToolIcons.add(IC_SEND_TO_VISTA_DB, new ToolIconPair(new ImageIcon(new URL(u, (n = "vistaOnline") + ext)), new ImageIcon(new URL(u, dimmed + n + ext))));\r
632                 vToolIcons.add(IC_TO_COOKIE, new ToolIconPair(new ImageIcon(new URL(u, (n = "toCookie") + ext)), new ImageIcon(new URL(u, dimmed + n + ext))));\r
633                 vToolIcons.add(IC_FROM_COOKIE, new ToolIconPair(new ImageIcon(new URL(u, (n = "fromCookie") + ext)), new ImageIcon(new URL(u, dimmed + n + ext))));\r
634                 vToolIcons.add(IC_CREATE_FILTER, new ToolIconPair(new ImageIcon(new URL(u, (n = "createFilter") + ext)), new ImageIcon(new URL(u, dimmed + n + ext))));\r
635                 vToolIcons.add(IC_TO_VISTA_PAGE, new ToolIconPair(new ImageIcon(new URL(u, (n = "vistaWebPage") + ext)), new ImageIcon(new URL(u, dimmed + n + ext))));\r
636                 vToolIcons.add(IC_PAGE_SETUP, new ToolIconPair(new ImageIcon(new URL(u, (n = "pageSetup") + ext)), new ImageIcon(new URL(u, dimmed + n + ext))));\r
637                 vToolIcons.add(IC_PRINT, new ToolIconPair(new ImageIcon(new URL(u, (n = "print") + ext)), new ImageIcon(new URL(u, dimmed + n + ext))));\r
638                 vToolIcons.add(IC_PROPERTIES, new ToolIconPair(new ImageIcon(new URL(u, (n = "properties") + ext)), new ImageIcon(new URL(u, dimmed + n + ext))));\r
639 \r
640                 vToolIcons.add(IC_1UP, new ToolIconPair(new ImageIcon(new URL(u, (n = "1up") + ext)), new ImageIcon(new URL(u, dimmed + n + ext))));\r
641                 vToolIcons.add(IC_2UP, new ToolIconPair(new ImageIcon(new URL(u, (n = "2up") + ext)), new ImageIcon(new URL(u, dimmed + n + ext))));\r
642                 vToolIcons.add(IC_ALTERNATE, new ToolIconPair(new ImageIcon(new URL(u, (n = "alternate") + ext)), new ImageIcon(new URL(u, dimmed + n + ext))));\r
643                 vToolIcons.add(IC_BOTH_EYES, new ToolIconPair(new ImageIcon(new URL(u, (n = "eyes2") + ext)), new ImageIcon(new URL(u, dimmed + n + ext))));\r
644                 vToolIcons.add(IC_SEPARATE_EYES, new ToolIconPair(new ImageIcon(new URL(u, (n = "eyes1") + ext)), new ImageIcon(new URL(u, dimmed + n + ext))));\r
645 \r
646                 vToolIcons.add(IC_READING, new ToolIconPair(new ImageIcon(new URL(u, (n = "reading") + ext)), new ImageIcon(new URL(u, dimmed + n + ext))));\r
647                 vToolIcons.add(IC_PATTERNS, new ToolIconPair(new ImageIcon(new URL(u, (n = "patterns") + ext)), new ImageIcon(new URL(u, dimmed + n + ext))));\r
648 \r
649                 vToolIcons.add(IC_RGB, new ToolIconPair(new ImageIcon(new URL(u, (n = "rgb") + ext)), new ImageIcon(new URL(u, dimmed + n + ext))));\r
650                 vToolIcons.add(IC_HSB, new ToolIconPair(new ImageIcon(new URL(u, (n = "hsb") + ext)), new ImageIcon(new URL(u, dimmed + n + ext))));\r
651                 vToolIcons.add(IC_CYMK, new ToolIconPair(new ImageIcon(new URL(u, (n = "cymk") + ext)), new ImageIcon(new URL(u, dimmed + n + ext))));\r
652                 vToolIcons.add(IC_WHEEL, new ToolIconPair(new ImageIcon(new URL(u, (n = "wheel") + ext)), new ImageIcon(new URL(u, dimmed + n + ext))));\r
653                 vToolIcons.add(IC_TRIANGLE, new ToolIconPair(new ImageIcon(new URL(u, (n = "triangle") + ext)), new ImageIcon(new URL(u, dimmed + n + ext))));\r
654                 vToolIcons.add(IC_QUBE, new ToolIconPair(new ImageIcon(new URL(u, (n = "qube") + ext)), new ImageIcon(new URL(u, dimmed + n + ext))));\r
655                 vToolIcons.add(IC_COLOR_CHOOSER, new ToolIconPair(new ImageIcon(new URL(u, (n = "sysColour") + ext)), new ImageIcon(new URL(u, dimmed + n + ext))));\r
656 \r
657                 vToolIcons.add(IC_MANUAL, new ToolIconPair(new ImageIcon(new URL(u, (n = "manual") + ext)), new ImageIcon(new URL(u, dimmed + n + ext))));\r
658                 vToolIcons.add(IC_AUTO, new ToolIconPair(new ImageIcon(new URL(u, (n = "auto") + ext)), new ImageIcon(new URL(u, dimmed + n + ext))));\r
659                 vToolIcons.add(IC_DIRECTED, new ToolIconPair(new ImageIcon(new URL(u, (n = "directed") + ext)), new ImageIcon(new URL(u, dimmed + n + ext))));\r
660                 vToolIcons.add(IC_SCRIPT, new ToolIconPair(new ImageIcon(new URL(u, (n = "script") + ext)), new ImageIcon(new URL(u, dimmed + n + ext))));\r
661 \r
662                 vToolIcons.add(IC_OPTION_CONFIG_READING, new ToolIconPair(new ImageIcon(new URL(u, (n = "reading") + ext)), new ImageIcon(new URL(u, dimmed + n + ext))));\r
663                 vToolIcons.add(IC_OPTION_CONFIG_PATTERNS, new ToolIconPair(new ImageIcon(new URL(u, (n = "patterns") + ext)), new ImageIcon(new URL(u, dimmed + n + ext))));\r
664                 vToolIcons.add(IC_OPTION_CONFIG_DIRECTED, new ToolIconPair(new ImageIcon(new URL(u, (n = "directed") + ext)), new ImageIcon(new URL(u, dimmed + n + ext))));\r
665                 vToolIcons.add(IC_OPTION_CONFIG_SCRIPT, new ToolIconPair(new ImageIcon(new URL(u, (n = "script") + ext)), new ImageIcon(new URL(u, dimmed + n + ext))));\r
666                 vToolIcons.add(IC_OPTION_CONFIG_VISTA_DB, new ToolIconPair(new ImageIcon(new URL(u, (n = "vistaOnline") + ext)), new ImageIcon(new URL(u, dimmed + n + ext))));\r
667 \r
668                 vToolIcons.add(IC_OPTION_CHOOSE, new ToolIconPair(new ImageIcon(new URL(u, (n = "openFile") + ext)), new ImageIcon(new URL(u, dimmed + n + ext))));\r
669                 vToolIcons.add(IC_OPTION_CUSTOMIZE, new ToolIconPair(new ImageIcon(new URL(u, (n = "customize") + ext)), new ImageIcon(new URL(u, dimmed + n + ext))));\r
670                 vToolIcons.add(IC_OPTION_PREFERENCES, new ToolIconPair(new ImageIcon(new URL(u, (n = "preferences") + ext)), new ImageIcon(new URL(u, dimmed + n + ext))));\r
671 \r
672                 vToolIcons.add(IC_CONNECT, new ToolIconPair(new ImageIcon(new URL(u, (n = "connect") + ext)), new ImageIcon(new URL(u, dimmed + n + ext))));\r
673                 vToolIcons.add(IC_PAUSE, new ToolIconPair(new ImageIcon(new URL(u, (n = "pause") + ext)), new ImageIcon(new URL(u, dimmed + n + ext))));\r
674                 vToolIcons.add(IC_DISCONNECT, new ToolIconPair(new ImageIcon(new URL(u, (n = "disconnect") + ext)), new ImageIcon(new URL(u, dimmed + n + ext))));\r
675 \r
676                 vToolIcons.add(IC_OPTION_DYNAMIC_VISTA, new ToolIconPair(new ImageIcon(new URL(u, (n = "vistaWebPage") + ext)), new ImageIcon(new URL(u, dimmed + n + ext))));\r
677 \r
678                 vToolIcons.add(IC_HELP_CONTENTS, new ToolIconPair(new ImageIcon(new URL(u, (n = "help") + ext)), new ImageIcon(new URL(u, dimmed + n + ext))));\r
679                 vToolIcons.add(IC_HELP_INDEX, new ToolIconPair(new ImageIcon(new URL(u, (n = "index") + ext)), new ImageIcon(new URL(u, dimmed + n + ext))));\r
680                 vToolIcons.add(IC_HELP_SEARCH, new ToolIconPair(new ImageIcon(new URL(u, (n = "helpsearch") + ext)), new ImageIcon(new URL(u, dimmed + n + ext))));\r
681                 vToolIcons.add(IC_HELP_EXPLAIN, new ToolIconPair(new ImageIcon(new URL(u, (n = "explain") + ext)), new ImageIcon(new URL(u, dimmed + n + ext))));\r
682                 vToolIcons.add(IC_HELP_ABOUT, new ToolIconPair(new ImageIcon(new URL(u, (n = "about") + ext)), new ImageIcon(new URL(u, dimmed + n + ext))));\r
683                 vToolIcons.add(IC_HELP_WEB, new ToolIconPair(new ImageIcon(new URL(u, (n = "webHelpLink") + ext)), new ImageIcon(new URL(u, dimmed + n + ext))));\r
684                 vToolIcons.add(IC_HELP, new ToolIconPair(new ImageIcon(new URL(u, (n = "help") + ext)), new ImageIcon(new URL(u, dimmed + n + ext))));\r
685 \r
686                 vToolIcons.add(IC_PLAY, new ToolIconPair(new ImageIcon(new URL(u, (n = "play") + ext)), new ImageIcon(new URL(u, dimmed + n + ext))));\r
687                 vToolIcons.add(IC_STOP, new ToolIconPair(new ImageIcon(new URL(u, (n = "stop") + ext)), new ImageIcon(new URL(u, dimmed + n + ext))));\r
688 \r
689                 vToolIcons.add(IC_LANGUAGE, new ToolIconPair(new ImageIcon(new URL(u, (n = "language") + ext)), new ImageIcon(new URL(u, dimmed + n + ext))));\r
690                 vToolIcons.add(IC_LANG_DEFAULT, new ToolIconPair(new ImageIcon(new URL(u, (n = "language") + ext)), new ImageIcon(new URL(u, dimmed + n + ext))));\r
691                 vToolIcons.add(IC_LANG_BRITISH, new ToolIconPair(new ImageIcon(new URL(u, (n = "british") + ext)), new ImageIcon(new URL(u, dimmed + n + ext))));\r
692                 vToolIcons.add(IC_LANG_FRENCH, new ToolIconPair(new ImageIcon(new URL(u, (n = "french") + ext)), new ImageIcon(new URL(u, dimmed + n + ext))));\r
693                 vToolIcons.add(IC_LANG_SPANISH, new ToolIconPair(new ImageIcon(new URL(u, (n = "spanish") + ext)), new ImageIcon(new URL(u, dimmed + n + ext))));\r
694                 vToolIcons.add(IC_LANG_GERMAN, new ToolIconPair(new ImageIcon(new URL(u, (n = "german") + ext)), new ImageIcon(new URL(u, dimmed + n + ext))));\r
695 \r
696                 vToolIcons.add(IC_SWATCHES, new ToolIconPair(new ImageIcon(new URL(u, (n = "swatches") + ext)), new ImageIcon(new URL(u, dimmed + n + ext))));\r
697                 vToolIcons.add(IC_FILTER_TEMPLATE, new ToolIconPair(new ImageIcon(new URL(u, (n = "fltTmpl") + ext)), new ImageIcon(new URL(u, dimmed + n + ext))));\r
698                 vToolIcons.add(IC_FILTER_WINDOW, new ToolIconPair(new ImageIcon(new URL(u, (n = "fltWin") + ext)), new ImageIcon(new URL(u, dimmed + n + ext))));\r
699                 vToolIcons.add(IC_FILTER_SCREEN, new ToolIconPair(new ImageIcon(new URL(u, (n = "fltScr") + ext)), new ImageIcon(new URL(u, dimmed + n + ext))));\r
700                 vToolIcons.add(IC_PROFILE_DELETE, new ToolIconPair(new ImageIcon(new URL(u, (n = "delete") + ext)), new ImageIcon(new URL(u, dimmed + n + ext))));\r
701                 vToolIcons.add(IC_RECORD, new ToolIconPair(new ImageIcon(new URL(u, (n = "record") + ext)), new ImageIcon(new URL(u, dimmed + n + ext))));\r
702                 vToolIcons.add(IC_OPTION_CONFIG_SWATCHES, new ToolIconPair(new ImageIcon(new URL(u, (n = "swatches") + ext)), new ImageIcon(new URL(u, dimmed + n + ext))));\r
703 \r
704                 vToolIcons.add(IC_LANG_AR_EG, new ToolIconPair(new ImageIcon(new URL(u, (n = "egypt") + ext)), new ImageIcon(new URL(u, dimmed + n + ext))));\r
705                 vToolIcons.add(IC_LANG_FA_IR, new ToolIconPair(new ImageIcon(new URL(u, (n = "iran") + ext)), new ImageIcon(new URL(u, dimmed + n + ext))));\r
706                 vToolIcons.add(IC_LANG_HI_IN, new ToolIconPair(new ImageIcon(new URL(u, (n = "india") + ext)), new ImageIcon(new URL(u, dimmed + n + ext))));\r
707                 vToolIcons.add(IC_LANG_IN, new ToolIconPair(new ImageIcon(new URL(u, (n = "indonesia") + ext)), new ImageIcon(new URL(u, dimmed + n + ext))));\r
708                 vToolIcons.add(IC_LANG_JA, new ToolIconPair(new ImageIcon(new URL(u, (n = "japan") + ext)), new ImageIcon(new URL(u, dimmed + n + ext))));\r
709                 vToolIcons.add(IC_LANG_NL, new ToolIconPair(new ImageIcon(new URL(u, (n = "netherlands") + ext)), new ImageIcon(new URL(u, dimmed + n + ext))));\r
710                 vToolIcons.add(IC_LANG_PS, new ToolIconPair(new ImageIcon(new URL(u, (n = "afghanistan") + ext)), new ImageIcon(new URL(u, dimmed + n + ext))));\r
711                 vToolIcons.add(IC_LANG_PT, new ToolIconPair(new ImageIcon(new URL(u, (n = "portugal") + ext)), new ImageIcon(new URL(u, dimmed + n + ext))));\r
712                 vToolIcons.add(IC_LANG_RU, new ToolIconPair(new ImageIcon(new URL(u, (n = "russia") + ext)), new ImageIcon(new URL(u, dimmed + n + ext))));\r
713                 vToolIcons.add(IC_LANG_SV, new ToolIconPair(new ImageIcon(new URL(u, (n = "sweden") + ext)), new ImageIcon(new URL(u, dimmed + n + ext))));\r
714                 vToolIcons.add(IC_LANG_UR, new ToolIconPair(new ImageIcon(new URL(u, (n = "pakistan") + ext)), new ImageIcon(new URL(u, dimmed + n + ext))));\r
715                 vToolIcons.add(IC_LANG_ZH, new ToolIconPair(new ImageIcon(new URL(u, (n = "china") + ext)), new ImageIcon(new URL(u, dimmed + n + ext))));\r
716 \r
717                 vToolIcons.add(IC_IMAGES, new ToolIconPair(new ImageIcon(new URL(u, (n = "images") + ext)), new ImageIcon(new URL(u, dimmed + n + ext))));\r
718 \r
719                 icVista = new ImageIcon(new URL(u, "vistaIcon" + ext)); // the application icon\r
720 \r
721                 /* must create the filter component before initComponents[] calls pack()\r
722                  else sliderTintStateChanged() will cause a null pointer exception\r
723                  referencing vfFilter\r
724                         */\r
725                 vfFilter = new VistaFilter();\r
726 \r
727                 // create the button groups that manage the menu and tool bar mode selectors\r
728                 mbgModelAlgorithm = new ButtonGroup();\r
729                 mbgModelEyes = new ButtonGroup();\r
730                 mbgColourModel = new ButtonGroup();\r
731                 mbgTemplate = new ButtonGroup();\r
732                 mbgColourView = new ButtonGroup();\r
733                 mbgDirection = new ButtonGroup();\r
734                 mbgLanguage = new ButtonGroup();\r
735                 mbgConnection = new ButtonGroup();\r
736                 mbgPlayback = new ButtonGroup();\r
737                 mbgFilter = new ButtonGroup();\r
738   mbgLandF = new ButtonGroup();\r
739                                                                 \r
740                 tbgModelAlgorithm = new ButtonGroup();\r
741                 tbgModelEyes = new ButtonGroup();\r
742                 tbgColourModel = new ButtonGroup();\r
743                 tbgTemplate = new ButtonGroup();\r
744                 tbgColourView = new ButtonGroup();\r
745                 tbgDirection = new ButtonGroup();\r
746                 tbgLanguage = new ButtonGroup();\r
747                 tbgConnection = new ButtonGroup();\r
748                 tbgPlayback = new ButtonGroup();\r
749                 \r
750                 initActions(); // actions shared by menus and tool bar buttons\r
751                 initComponents(); // create & initialize the components\r
752                                                         \r
753   // get the PopupMenu used to choose the tool bar buttons\r
754   toolBarPopup = mOptionsToolbar.getPopupMenu();\r
755 \r
756                 /* All tool bar buttons require common operations performing\r
757                  * Much more efficient to do it in an iteration than\r
758                  * using the IDE's initComponents() method with much-repeated source code.\r
759                  * \r
760                  * Clear Mnemonics from all tool bar buttons to prevent\r
761                  * incorrect Mnemomic/Accelerator key advertising.\r
762                  * Needed because all Actions have mnemonics assigned for use in menus.\r
763                  *  \r
764                  * Reset borderPainted to allow a seamless look\r
765                  * Reset contentAreaFilled to prevent Selected buttons having their backgrounds painted\r
766                  * Reset focusPainted to prevent a dotted rectangle highlighting the button under the cursor\r
767                  * Standardize each button's size\r
768                  * Clear the button label text\r
769                  */\r
770                 AbstractButton ab;\r
771   Component allButtons[];\r
772   Component allPanels[] = toolBar.getComponents(); // get all the tool bar panels\r
773                 for(int p = 0; p < allPanels.length; p++) {\r
774    allButtons = ((Container)allPanels[p]).getComponents();       // get all the buttons on this panel                                                           \r
775    for(int i = 0; i < allButtons.length; i++ ) {\r
776                          if(allButtons[i] instanceof AbstractButton) { // make sure this IS a button\r
777                                  ab = (AbstractButton)allButtons[i];\r
778      ab.setMnemonic(0);\r
779                                         ab.setBorderPainted(false);\r
780                                         ab.setContentAreaFilled(false);\r
781                                         ab.setFocusPainted(false);\r
782                                         ab.setMinimumSize(toolButtonSize);\r
783                                         ab.setPreferredSize(toolButtonSize);\r
784                                         ab.setMaximumSize(toolButtonSize);\r
785                                         ab.setText(null);\r
786                                 }\r
787                         }\r
788   }\r
789                                                                 \r
790                 // do the same for the status icon panel\r
791                 allButtons = statusIconPanel.getComponents(); // get all the buttons\r
792                 for(int i = 0; i < allButtons.length; i++) {\r
793                         if(allButtons[i] instanceof AbstractButton) { // make sure this IS a button\r
794                                 ab = (AbstractButton)allButtons[i];\r
795                                 ab.setBorderPainted(false);\r
796                                 ab.setMargin(new java.awt.Insets(0, 0, 0, 0));\r
797                                 ab.setMaximumSize(statusIconButtonSize);\r
798                                 ab.setMinimumSize(statusIconButtonSize);\r
799                                 ab.setPreferredSize(statusIconButtonSize);\r
800                                 ab.setEnabled(false);\r
801                         }\r
802                 }\r
803                                                                                                                                 \r
804                 pack(); // optimize size of frame - prevents toolbar panels forcing window to be ultra-wide\r
805                 setLocation(getCentralScreenLocation(this)); // center on screen\r
806                                                                 \r
807                 // configure the VisTA filter\r
808                 vfFilter.setAlpha( ((float) sliderTint.getValue())/100 ); // transparency is a decimal between 0.0 and 1.0\r
809                 vfFilter.setBackground(Color.blue);  //*** might want to have this set from saved Personal Preferences later\r
810 \r
811   // attach the VisTA filter to the deepest (closest) pane\r
812                 filterLayerPane.add(vfFilter, javax.swing.JLayeredPane.DRAG_LAYER);\r
813 \r
814                 // prepare for taking over the Frame's glass pane too\r
815                 defaultGlassPane = getGlassPane(); // keep track so it can be swapped in and out\r
816                 vfFilter.setVisible(true);\r
817                 activeFilter = FILTER_TEMPLATE; // any changes will make this the 'previous' filter\r
818 \r
819                 // equal initial left/right pane widths\r
820                 spTemplate.setDividerLocation(spTemplate.getWidth() - spColour.getDividerLocation()); \r
821                                                                 \r
822                 sysColorChooser.getSelectionModel().addChangeListener(\r
823                         new ChangeListener() {\r
824                                 public void stateChanged(ChangeEvent e) {\r
825                                         sysColorChooserStateChanged(e);\r
826                                 }\r
827                         }    \r
828                 );\r
829                 sysColorChooser.setColor(vfFilter.getBackground());  // ensure the chooser colour matches the initial VisTA filter colour\r
830 \r
831   // dynamically configure the Look-and-Feel menu\r
832   //UIChangeListener l = new UIChangeListener();\r
833   JRadioButtonMenuItem miLF;\r
834   UIManager.LookAndFeelInfo[] uiInstalled = UIManager.getInstalledLookAndFeels();\r
835   for(int i = 0; i < uiInstalled.length; i++) {\r
836    miLF = new JRadioButtonMenuItem(); // add a new radio button for each L&F\r
837    miLF.setText(uiInstalled[i].getName()); // the friendly name\r
838    miLF.setToolTipText(uiInstalled[i].getClassName()); // the full name\r
839    miLF.setSelected(UIManager.getLookAndFeel().getName() == miLF.getText()); // select the current L&F\r
840                         miLF.addItemListener(this); // no Adapter, so make sure the listener method identifies the component first!\r
841                         miLF.putClientProperty("ButtonGroup", "LandF"); // only way for itemStateChanged() to identify L&F events\r
842    mbgLandF.add(miLF); // add to button group\r
843    mOptionsLandF.add(miLF); // add to menu\r
844   }\r
845                 // might want to offer Auxillary L&F's too?\r
846                                                 \r
847   //** At this point, need to load and act on User configuration\r
848                 \r
849   initHelp(baseURL); // prepare the Help service                \r
850                 \r
851                 // dispose of the splash window\r
852                 splash.dispose();\r
853                 splash = null;\r
854  }\r
855 \r
856         private void initHelp(URL baseURL) throws MalformedURLException {\r
857                 // create the tree roots for the help system so they can be used in JTree constructors - can add further nodes later\r
858                 helpContentsRootNode = new DefaultMutableTreeNode("VisTA.CID");\r
859                 helpIndexRootNode = new DefaultMutableTreeNode("Index");\r
860 \r
861   HelpIconTitledURLItem item = null;\r
862                 DefaultMutableTreeNode helpCategoryNode = null;\r
863                 DefaultMutableTreeNode helpPageNode = null;\r
864                 \r
865                 helpCategoryNode = new DefaultMutableTreeNode("Getting Started");\r
866                 helpContentsRootNode.add(helpCategoryNode);\r
867                 item = new HelpIconTitledURLItem("Welcome to VisTA.CID", new URL(baseURL, "default.html"), true);\r
868                 helpPageNode = new DefaultMutableTreeNode(item);\r
869                 helpCategoryNode.add(helpPageNode);\r
870                 \r
871                 helpCategoryNode = new DefaultMutableTreeNode("Using VisTA.CID");\r
872                 helpContentsRootNode.add(helpCategoryNode);\r
873   helpPageNode = new DefaultMutableTreeNode("Menus");\r
874                 helpCategoryNode.add(helpPageNode);\r
875   helpPageNode = new DefaultMutableTreeNode("Tool bar");\r
876                 helpCategoryNode.add(helpPageNode);\r
877   helpPageNode = new DefaultMutableTreeNode("Colour controls");\r
878                 helpCategoryNode.add(helpPageNode);\r
879   helpPageNode = new DefaultMutableTreeNode("Templates");\r
880                 helpCategoryNode.add(helpPageNode);\r
881   helpPageNode = new DefaultMutableTreeNode("Template controls");\r
882                 helpCategoryNode.add(helpPageNode);\r
883                 \r
884                 \r
885                 // load the help window, but keep it hidden\r
886                 helpWindow = new xhtmlHelp(new URL(baseURL, "help/"), currentLocale, "default.html");\r
887                 helpWindow.setNavigationContentsTreeRoot(new DefaultTreeModel(helpContentsRootNode));\r
888                 helpWindow.setNavigationIndexTreeRoot(new DefaultTreeModel(helpIndexRootNode));\r
889 \r
890                 helpWindow.setDocking(mHelpDock.isSelected()); // set the Help docking policy\r
891 \r
892                 if(mHelpExplain.isSelected()) {\r
893                         helpWindow.setPage("helpExplain.html");\r
894                  showHelp(0, true, true, true);\r
895                 }\r
896         }\r
897         \r
898  /** Creates all the common actions from the resource bundle and icon pairs\r
899                 * \r
900                 * Note: The Mnemonic key assignments currently have no way of easily being stored\r
901                 * in the resource bundles. A new class, PowerKeyEvent, will provide a public static\r
902                 * method that takes a String key of the form "VK_N" and returns the int value associated\r
903                 * with it by ActionEvent.\r
904                 * Each assignment creates an action that is used in menu items and tool bar button initialization\r
905                 * PowerAction is an extension of AbstractAction that contains ALL the Action Keys that JButton and\r
906                 * JMenuItem look for when their addAction() method's are called.\r
907                 */\r
908         private void initActions() {\r
909                 aNew = new org.tjworld.components.PowerAction(\r
910                         cIDresources.getString("ActNewName"),\r
911                         ((ToolIconPair)vToolIcons.get(IC_NEW)).active,\r
912                         cIDresources.getString("ActNewTip"),\r
913                         null, null, KeyEvent.VK_N,\r
914                         KeyStroke.getKeyStroke(KeyEvent.VK_N, ActionEvent.CTRL_MASK),\r
915                         currentLocale, "ActNewName", "ActNewTip", null, null, null, null)\r
916                         {\r
917                                 public void actionPerformed(ActionEvent e) {\r
918                                         statusMessage.setText((String)aNew.getValue(Action.NAME)); \r
919                                 }\r
920                         };\r
921 \r
922          aOpen = new org.tjworld.components.PowerAction(\r
923                         cIDresources.getString("ActOpenName"),\r
924                         ((ToolIconPair)vToolIcons.get(IC_OPEN_FILE)).active,\r
925                         cIDresources.getString("ActOpenTip"),\r
926                         null, null, KeyEvent.VK_O,\r
927                         KeyStroke.getKeyStroke(KeyEvent.VK_O, ActionEvent.CTRL_MASK),\r
928                         currentLocale, "ActOpenName", "ActOpenTip", null, null, null, null) \r
929                 {\r
930                          public void actionPerformed(ActionEvent e) {\r
931      statusMessage.setText((String)aOpen.getValue(Action.NAME));\r
932                                 }\r
933                 };\r
934 \r
935          aSave = new org.tjworld.components.PowerAction(\r
936                         cIDresources.getString("ActSaveName"),\r
937                         ((ToolIconPair)vToolIcons.get(IC_SAVE)).active,\r
938                         cIDresources.getString("ActSaveTip"),\r
939                         null, null, KeyEvent.VK_S,\r
940                         KeyStroke.getKeyStroke(KeyEvent.VK_S, ActionEvent.CTRL_MASK) ) \r
941                 {\r
942    public void actionPerformed(ActionEvent e) {\r
943                                 statusMessage.setText((String)aSave.getValue(Action.NAME));\r
944                         }\r
945                 };\r
946 \r
947          aSaveAs = new org.tjworld.components.PowerAction(\r
948                         cIDresources.getString("ActSaveAsName"),\r
949                         ((ToolIconPair)vToolIcons.get(IC_SAVE_AS)).active,\r
950                         cIDresources.getString("ActSaveAsTip"),\r
951                         null, null, KeyEvent.VK_A, null ) \r
952                 {\r
953    public void actionPerformed(ActionEvent e) {\r
954                                 statusMessage.setText((String)aSaveAs.getValue(Action.NAME));\r
955                         }\r
956                 };\r
957 \r
958          aDelete = new org.tjworld.components.PowerAction(\r
959                         cIDresources.getString("ActDelName"),\r
960                         ((ToolIconPair)vToolIcons.get(IC_PROFILE_DELETE)).active,\r
961                         cIDresources.getString("ActDelTip"),\r
962                         null, null, KeyEvent.VK_D, null ) \r
963                 {\r
964                          public void actionPerformed(ActionEvent e) {\r
965      statusMessage.setText((String)aOpen.getValue(Action.NAME));\r
966                                 }\r
967                 };\r
968 \r
969          aSendToVistaDB = new org.tjworld.components.PowerAction(\r
970                         cIDresources.getString("ActSendToVistaName"),\r
971                         ((ToolIconPair)vToolIcons.get(IC_SEND_TO_VISTA_DB)).active,\r
972                         cIDresources.getString("ActSendToVistaTip"),\r
973                         null, null, KeyEvent.VK_V,\r
974                         KeyStroke.getKeyStroke(KeyEvent.VK_RIGHT, ActionEvent.CTRL_MASK)) \r
975                 {\r
976    public void actionPerformed(ActionEvent e) {\r
977                                 statusMessage.setText((String)aSendToVistaDB.getValue(Action.NAME));\r
978                         }\r
979                 };\r
980 \r
981          aToCookie = new org.tjworld.components.PowerAction(\r
982                         cIDresources.getString("ActToCookName"),\r
983                         ((ToolIconPair)vToolIcons.get(IC_TO_COOKIE)).active,\r
984                         cIDresources.getString("ActToCookTip"),\r
985                         null, null, KeyEvent.VK_T, \r
986                         KeyStroke.getKeyStroke(KeyEvent.VK_UP, ActionEvent.CTRL_MASK)) \r
987                 {\r
988    public void actionPerformed(ActionEvent e) {\r
989                                 statusMessage.setText((String)aToCookie.getValue(Action.NAME));\r
990                         }\r
991                 };\r
992 \r
993          aFromCookie = new org.tjworld.components.PowerAction(\r
994                         cIDresources.getString("ActFrCookName"),\r
995                         ((ToolIconPair)vToolIcons.get(IC_FROM_COOKIE)).active,\r
996                         cIDresources.getString("ActFrCookTip"),\r
997                         null, null, KeyEvent.VK_C,\r
998                         KeyStroke.getKeyStroke(KeyEvent.VK_DOWN, ActionEvent.CTRL_MASK)) \r
999                 {\r
1000    public void actionPerformed(ActionEvent e) {\r
1001                                 statusMessage.setText((String)aFromCookie.getValue(Action.NAME));\r
1002                         }\r
1003                 };\r
1004 \r
1005          aCreateFilter = new org.tjworld.components.PowerAction(\r
1006                         cIDresources.getString("ActCreFltName"),\r
1007                         ((ToolIconPair)vToolIcons.get(IC_CREATE_FILTER)).active,\r
1008                         cIDresources.getString("ActCreFltTip"),\r
1009                         null, null, KeyEvent.VK_F, null ) \r
1010                 {\r
1011    public void actionPerformed(ActionEvent e) {\r
1012                                 statusMessage.setText((String)aCreateFilter.getValue(Action.NAME));\r
1013                         }\r
1014                 };\r
1015 \r
1016          aToVistaPage = new org.tjworld.components.PowerAction(\r
1017                         cIDresources.getString("ActToVistaPageName"),\r
1018                         ((ToolIconPair)vToolIcons.get(IC_TO_VISTA_PAGE)).active,\r
1019                         cIDresources.getString("ActToVistaPageTip"),\r
1020                         null, null, KeyEvent.VK_W, \r
1021                         KeyStroke.getKeyStroke(KeyEvent.VK_LEFT, ActionEvent.CTRL_MASK)) \r
1022                 {\r
1023    public void actionPerformed(ActionEvent e) {\r
1024                                 statusMessage.setText((String)aToVistaPage.getValue(Action.NAME));\r
1025                         }\r
1026                 };\r
1027 \r
1028          aPageSetup = new org.tjworld.components.PowerAction(\r
1029                         cIDresources.getString("ActPageSetName"),\r
1030                         ((ToolIconPair)vToolIcons.get(IC_PAGE_SETUP)).active,\r
1031                         cIDresources.getString("ActPageSetTip"),\r
1032                         null, null, KeyEvent.VK_G, null ) \r
1033                 {\r
1034    public void actionPerformed(ActionEvent e) {\r
1035                                 statusMessage.setText((String)aPageSetup.getValue(Action.NAME));\r
1036                                 if(printJob == null) // first time, so get a new job\r
1037                                          printJob = PrinterJob.getPrinterJob();\r
1038     if(pageFormat == null) // call the Page Format dialog\r
1039                                         pageFormat = printJob.defaultPage();\r
1040                                 pageFormat = printJob.pageDialog(pageFormat); // remember the choosen format\r
1041                         }\r
1042                 };\r
1043 \r
1044          aPrint = new org.tjworld.components.PowerAction(\r
1045                         cIDresources.getString("ActPrintName"),\r
1046                         ((ToolIconPair)vToolIcons.get(IC_PRINT)).active,\r
1047                         cIDresources.getString("ActPrintTip"),\r
1048                         null, null, KeyEvent.VK_P, \r
1049                         KeyStroke.getKeyStroke(KeyEvent.VK_P, ActionEvent.CTRL_MASK) ) \r
1050                 {\r
1051    public void actionPerformed(ActionEvent e) {\r
1052                                 statusMessage.setText((String)aPrint.getValue(Action.NAME));\r
1053                                 if(printJob == null) // if first time, get a new job\r
1054                                         printJob = PrinterJob.getPrinterJob();\r
1055                                 if(pageFormat != null) // use a previously chosen page format\r
1056                                         printJob.setPrintable(frameCID, frameCID.pageFormat); // print the entire window\r
1057                                 else // use the default page format\r
1058                                         printJob.setPrintable(frameCID); // print the entire window\r
1059                                 \r
1060                                 if(printJob.printDialog()) { // only go ahead and print if the user clicks OK in the Print Setup dialog\r
1061                                         Thread prt = new Thread() { // create a new thread for printing, so the program doesn't appear to freeze\r
1062                                                 public void run() { // called when the thread is started\r
1063                                                         try {\r
1064                                                                 printJob.setJobName("VisTA.CID"); // set a friendly printer job name for the queue\r
1065                                                          frameCID.printJob.print(); // do the printing\r
1066                                                         } catch(Exception ex) {\r
1067                                                                 ex.printStackTrace();\r
1068                                                         }\r
1069                                                 }\r
1070                                         };\r
1071                                         prt.start(); // do the printing\r
1072                                 }\r
1073                         }\r
1074                 };\r
1075 \r
1076          aProperties = new org.tjworld.components.PowerAction(\r
1077                         cIDresources.getString("ActPropsName"),\r
1078                         ((ToolIconPair)vToolIcons.get(IC_PROPERTIES)).active,\r
1079                         cIDresources.getString("ActPropsTip"),\r
1080                         null, null, KeyEvent.VK_R, \r
1081                         KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, ActionEvent.ALT_MASK) ) \r
1082                 {\r
1083    public void actionPerformed(ActionEvent e) {\r
1084                                 statusMessage.setText((String)aProperties.getValue(Action.NAME));\r
1085                         }\r
1086                 };\r
1087 \r
1088          a1_Up = new org.tjworld.components.PowerAction(\r
1089                         cIDresources.getString("Act1UpName"),\r
1090                         ((ToolIconPair)vToolIcons.get(IC_1UP)).active,\r
1091                         cIDresources.getString("Act1UpTip"),\r
1092                         null, null, KeyEvent.VK_1, \r
1093                         KeyStroke.getKeyStroke(KeyEvent.VK_1, ActionEvent.ALT_MASK) ) \r
1094                 {\r
1095    public void actionPerformed(ActionEvent e) {\r
1096                                 modelChange(e);\r
1097                         }\r
1098                 };\r
1099 \r
1100          a2_Up = new org.tjworld.components.PowerAction(\r
1101                         cIDresources.getString("Act2UpName"),\r
1102                         ((ToolIconPair)vToolIcons.get(IC_2UP)).active,\r
1103                         cIDresources.getString("Act2UpTip"),\r
1104                         null, null, KeyEvent.VK_2, \r
1105                         KeyStroke.getKeyStroke(KeyEvent.VK_2, ActionEvent.ALT_MASK) ) \r
1106                 {\r
1107    public void actionPerformed(ActionEvent e) {\r
1108                                 modelChange(e);\r
1109                         }\r
1110                 };\r
1111 \r
1112          aAlternate = new org.tjworld.components.PowerAction(\r
1113                         cIDresources.getString("ActAltName"),\r
1114                         ((ToolIconPair)vToolIcons.get(IC_ALTERNATE)).active,\r
1115                         cIDresources.getString("ActAltTip"),\r
1116                         null, null, KeyEvent.VK_A, \r
1117                         KeyStroke.getKeyStroke(KeyEvent.VK_A, ActionEvent.ALT_MASK) ) \r
1118                 {\r
1119    public void actionPerformed(ActionEvent e) {\r
1120                                 modelChange(e);\r
1121                         }\r
1122                 };\r
1123 \r
1124          aBothEyes = new org.tjworld.components.PowerAction(\r
1125                         cIDresources.getString("ActBothEyesName"),\r
1126                         ((ToolIconPair)vToolIcons.get(IC_BOTH_EYES)).active,\r
1127                         cIDresources.getString("ActBothEyesTip"),\r
1128                         null, null, KeyEvent.VK_B, null ) \r
1129                 {\r
1130    public void actionPerformed(ActionEvent e) {\r
1131                                 eyesChange(e);\r
1132                         }\r
1133                 };\r
1134 \r
1135          aSeparateEyes = new org.tjworld.components.PowerAction(\r
1136                         cIDresources.getString("ActSepEyesName"),\r
1137                         ((ToolIconPair)vToolIcons.get(IC_SEPARATE_EYES)).active,\r
1138                         cIDresources.getString("ActSepEyesTip"),\r
1139                         null, null, KeyEvent.VK_S, null ) \r
1140                 {\r
1141    public void actionPerformed(ActionEvent e) {\r
1142                                 eyesChange(e);\r
1143                         }\r
1144                 };\r
1145 \r
1146          aReading = new org.tjworld.components.PowerAction(\r
1147                         cIDresources.getString("ActReadName"),\r
1148                         ((ToolIconPair)vToolIcons.get(IC_READING)).active,\r
1149                         cIDresources.getString("ActReadTip"),\r
1150                         null, null, KeyEvent.VK_R, \r
1151                         KeyStroke.getKeyStroke(KeyEvent.VK_R, ActionEvent.CTRL_MASK & ActionEvent.ALT_MASK)) \r
1152                 {\r
1153    public void actionPerformed(ActionEvent e) {\r
1154                                 templateChange(e);\r
1155                         }\r
1156                 };\r
1157 \r
1158          aPatterns = new org.tjworld.components.PowerAction(\r
1159                         cIDresources.getString("ActPatName"),\r
1160                         ((ToolIconPair)vToolIcons.get(IC_PATTERNS)).active,\r
1161                         cIDresources.getString("ActPatTip"),\r
1162                         null, null, KeyEvent.VK_P, \r
1163                         KeyStroke.getKeyStroke(KeyEvent.VK_P, ActionEvent.CTRL_MASK & ActionEvent.ALT_MASK) ) \r
1164                 {\r
1165    public void actionPerformed(ActionEvent e) {\r
1166                                 templateChange(e);\r
1167                         }\r
1168                 };\r
1169 \r
1170          aImages = new org.tjworld.components.PowerAction(\r
1171                         cIDresources.getString("ActImgName"),\r
1172                         ((ToolIconPair)vToolIcons.get(IC_IMAGES)).active,\r
1173                         cIDresources.getString("ActImgTip"),\r
1174                         null, null, KeyEvent.VK_I, \r
1175                         KeyStroke.getKeyStroke(KeyEvent.VK_I, ActionEvent.CTRL_MASK & ActionEvent.ALT_MASK) ) \r
1176                 {\r
1177    public void actionPerformed(ActionEvent e) {\r
1178                                 templateChange(e);\r
1179                         }\r
1180                 };\r
1181 \r
1182          aRGB = new org.tjworld.components.PowerAction(\r
1183                         cIDresources.getString("ActRGBName"),\r
1184                         ((ToolIconPair)vToolIcons.get(IC_RGB)).active,\r
1185                         cIDresources.getString("ActRGBTip"),\r
1186                         null, null, KeyEvent.VK_R, \r
1187                         KeyStroke.getKeyStroke(KeyEvent.VK_F1, ActionEvent.CTRL_MASK)) \r
1188                 {\r
1189    public void actionPerformed(ActionEvent e) {\r
1190                                 colourModelChange(e);\r
1191                         }\r
1192                 };\r
1193 \r
1194          aHSB = new org.tjworld.components.PowerAction(\r
1195                         cIDresources.getString("ActHSBName"),\r
1196                         ((ToolIconPair)vToolIcons.get(IC_HSB)).active,\r
1197                         cIDresources.getString("ActHSBTip"),\r
1198                         null, null, KeyEvent.VK_H, \r
1199                         KeyStroke.getKeyStroke(KeyEvent.VK_F2, ActionEvent.CTRL_MASK)) \r
1200                 {\r
1201    public void actionPerformed(ActionEvent e) {\r
1202                                 colourModelChange(e);\r
1203                         }\r
1204                 };\r
1205 \r
1206          aCYMK = new org.tjworld.components.PowerAction(\r
1207                         cIDresources.getString("ActCYMKName"),\r
1208                         ((ToolIconPair)vToolIcons.get(IC_CYMK)).active,\r
1209                         cIDresources.getString("ActCYMKTip"),\r
1210                         null, null, KeyEvent.VK_C, \r
1211                         KeyStroke.getKeyStroke(KeyEvent.VK_F3, ActionEvent.CTRL_MASK)) \r
1212                 {\r
1213    public void actionPerformed(ActionEvent e) {\r
1214                                 colourModelChange(e);\r
1215                         }\r
1216                 };\r
1217 \r
1218          aWheel = new org.tjworld.components.PowerAction(\r
1219                         cIDresources.getString("ActWheelName"),\r
1220                         ((ToolIconPair)vToolIcons.get(IC_WHEEL)).active,\r
1221                         cIDresources.getString("ActWheelTip"),\r
1222                         null, null, KeyEvent.VK_W, \r
1223                         KeyStroke.getKeyStroke(KeyEvent.VK_F4, ActionEvent.CTRL_MASK)) \r
1224                 {\r
1225    public void actionPerformed(ActionEvent e) {\r
1226                                 colourViewChange(e);\r
1227                         }\r
1228                 };\r
1229 \r
1230          aTriangle = new org.tjworld.components.PowerAction(\r
1231                         cIDresources.getString("ActTriName"),\r
1232                         ((ToolIconPair)vToolIcons.get(IC_TRIANGLE)).active,\r
1233                         cIDresources.getString("ActTriTip"),\r
1234                         null, null, KeyEvent.VK_T, \r
1235                         KeyStroke.getKeyStroke(KeyEvent.VK_F5, ActionEvent.CTRL_MASK) ) \r
1236                 {\r
1237    public void actionPerformed(ActionEvent e) {\r
1238                                 colourViewChange(e);\r
1239                         }\r
1240                 };\r
1241 \r
1242          aQube = new org.tjworld.components.PowerAction(\r
1243                         cIDresources.getString("ActQubeName"),\r
1244                         ((ToolIconPair)vToolIcons.get(IC_QUBE)).active,\r
1245                         cIDresources.getString("ActQubeTip"),\r
1246                         null, null, KeyEvent.VK_Q, \r
1247                         KeyStroke.getKeyStroke(KeyEvent.VK_F6, ActionEvent.CTRL_MASK)) \r
1248                 {\r
1249    public void actionPerformed(ActionEvent e) {\r
1250                                 colourViewChange(e);\r
1251                         }\r
1252                 };\r
1253 \r
1254          aColorChooser = new org.tjworld.components.PowerAction(\r
1255                         cIDresources.getString("ActSysColName"),\r
1256                         ((ToolIconPair)vToolIcons.get(IC_COLOR_CHOOSER)).active,\r
1257                         cIDresources.getString("ActSysColTip"),\r
1258                         null, null, KeyEvent.VK_S, \r
1259                         KeyStroke.getKeyStroke(KeyEvent.VK_F7, ActionEvent.CTRL_MASK)) \r
1260                 {\r
1261    public void actionPerformed(ActionEvent e) {\r
1262                                 colourViewChange(e);\r
1263                         }\r
1264                 };\r
1265                 \r
1266                 aSwatches = new org.tjworld.components.PowerAction(\r
1267                  cIDresources.getString("ActSwatchName"),\r
1268                         ((ToolIconPair)vToolIcons.get(IC_SWATCHES)).active,\r
1269                         cIDresources.getString("ActSwatchTip"),\r
1270                         null, null, KeyEvent.VK_W, \r
1271                         KeyStroke.getKeyStroke(KeyEvent.VK_F8, ActionEvent.CTRL_MASK))\r
1272                 {\r
1273                         public void actionPerformed(ActionEvent e) {\r
1274                                 colourViewChange(e);\r
1275                         }\r
1276                 };\r
1277 \r
1278          aManual = new org.tjworld.components.PowerAction(\r
1279                         cIDresources.getString("ActManualName"),\r
1280                         ((ToolIconPair)vToolIcons.get(IC_MANUAL)).active,\r
1281                         cIDresources.getString("ActManualTip"),\r
1282                         null, null, KeyEvent.VK_M, \r
1283                         KeyStroke.getKeyStroke(KeyEvent.VK_F9, ActionEvent.CTRL_MASK)) \r
1284                 {\r
1285    public void actionPerformed(ActionEvent e) {\r
1286                                 directorChange(e);\r
1287                         }\r
1288                 };\r
1289 \r
1290          aAuto = new org.tjworld.components.PowerAction(\r
1291                         cIDresources.getString("ActAutoName"),\r
1292                         ((ToolIconPair)vToolIcons.get(IC_AUTO)).active,\r
1293                         cIDresources.getString("ActAutoTip"),\r
1294                         null, null, KeyEvent.VK_A, \r
1295                         KeyStroke.getKeyStroke(KeyEvent.VK_F10, ActionEvent.CTRL_MASK)) \r
1296                 {\r
1297    public void actionPerformed(ActionEvent e) {\r
1298                                 directorChange(e);\r
1299                         }\r
1300                 };\r
1301 \r
1302          aDirected = new org.tjworld.components.PowerAction(\r
1303                         cIDresources.getString("ActDirectName"),\r
1304                         ((ToolIconPair)vToolIcons.get(IC_DIRECTED)).active,\r
1305                         cIDresources.getString("ActDirectTip"),\r
1306                         null, null, KeyEvent.VK_D, \r
1307                         KeyStroke.getKeyStroke(KeyEvent.VK_F11, ActionEvent.CTRL_MASK)) \r
1308                 {\r
1309    public void actionPerformed(ActionEvent e) {\r
1310                                 directorChange(e);\r
1311                         }\r
1312                 };\r
1313 \r
1314          aScript = new org.tjworld.components.PowerAction(\r
1315                         cIDresources.getString("ActScriptName"),\r
1316                         ((ToolIconPair)vToolIcons.get(IC_SCRIPT)).active,\r
1317                         cIDresources.getString("ActScriptTip"),\r
1318                         null, null, KeyEvent.VK_C, \r
1319                         KeyStroke.getKeyStroke(KeyEvent.VK_F12, ActionEvent.CTRL_MASK))\r
1320                         {\r
1321                                 public void actionPerformed(ActionEvent e) {\r
1322                                         directorChange(e);\r
1323                                 }\r
1324                         };\r
1325 \r
1326          aConnect = new org.tjworld.components.PowerAction(\r
1327                         cIDresources.getString("ActConnectName"),\r
1328                         ((ToolIconPair)vToolIcons.get(IC_CONNECT)).active,\r
1329                         cIDresources.getString("ActConnectTip"),\r
1330                         null, null, KeyEvent.VK_C, null ) \r
1331                 {\r
1332    public void actionPerformed(ActionEvent e) {\r
1333                                 statusMessage.setText((String)aConnect.getValue(Action.NAME));\r
1334                         }\r
1335                 };\r
1336 \r
1337          aPause = new org.tjworld.components.PowerAction(\r
1338                         cIDresources.getString("ActPauseName"),\r
1339                         ((ToolIconPair)vToolIcons.get(IC_PAUSE)).active,\r
1340                         cIDresources.getString("ActPauseTip"),\r
1341                         null, null, KeyEvent.VK_P, null ) \r
1342                 {\r
1343    public void actionPerformed(ActionEvent e) {\r
1344                                 statusMessage.setText((String)aPause.getValue(Action.NAME));\r
1345                         }\r
1346                 };\r
1347 \r
1348          aDisconnect = new org.tjworld.components.PowerAction(\r
1349                         cIDresources.getString("ActDiscName"),\r
1350                         ((ToolIconPair)vToolIcons.get(IC_DISCONNECT)).active,\r
1351                         cIDresources.getString("ActDiscTip"),\r
1352                         null, null, KeyEvent.VK_D, null ) \r
1353                 {\r
1354    public void actionPerformed(ActionEvent e) {\r
1355                                 statusMessage.setText((String)aDisconnect.getValue(Action.NAME));\r
1356                         }\r
1357                 };\r
1358 \r
1359   aPlay = new org.tjworld.components.PowerAction(\r
1360                         cIDresources.getString("ActPlayName"),\r
1361                         ((ToolIconPair)vToolIcons.get(IC_PLAY)).active,\r
1362                         cIDresources.getString("ActPlayTip"),\r
1363                         null, null, KeyEvent.VK_P, null ) \r
1364                 {\r
1365    public void actionPerformed(ActionEvent e) {\r
1366                                 statusMessage.setText((String)aPlay.getValue(Action.NAME));\r
1367                         }\r
1368                 };\r
1369 \r
1370   aRecord = new org.tjworld.components.PowerAction(\r
1371                         cIDresources.getString("ActRecName"),\r
1372                         ((ToolIconPair)vToolIcons.get(IC_RECORD)).active,\r
1373                         cIDresources.getString("ActRecTip"),\r
1374                         null, null, KeyEvent.VK_R, null ) \r
1375                 {\r
1376    public void actionPerformed(ActionEvent e) {\r
1377                                 statusMessage.setText((String)aRecord.getValue(Action.NAME));\r
1378                         }\r
1379                 };\r
1380 \r
1381                 aStop = new org.tjworld.components.PowerAction(\r
1382                         cIDresources.getString("ActStopName"),\r
1383                         ((ToolIconPair)vToolIcons.get(IC_STOP)).active,\r
1384                         cIDresources.getString("ActStopTip"),\r
1385                         null, null, KeyEvent.VK_S, null ) \r
1386                 {\r
1387    public void actionPerformed(ActionEvent e) {\r
1388                                 statusMessage.setText((String)aStop.getValue(Action.NAME));\r
1389                         }\r
1390                 };\r
1391 \r
1392                 aDynamicVista = new org.tjworld.components.PowerAction(\r
1393                         cIDresources.getString("ActDynVistaName"),\r
1394                         ((ToolIconPair)vToolIcons.get(IC_OPTION_DYNAMIC_VISTA)).active,\r
1395                         cIDresources.getString("ActDynVistaTip"),\r
1396                         null, null, KeyEvent.VK_V, null ) \r
1397                 {\r
1398    public void actionPerformed(ActionEvent e) {\r
1399                                 statusMessage.setText((String)aDynamicVista.getValue(Action.NAME));\r
1400                         }\r
1401                 };\r
1402 \r
1403                 aLanguageDefault = new org.tjworld.components.PowerAction(\r
1404                         cIDresources.getString("ActLangDefName"),\r
1405                         ((ToolIconPair)vToolIcons.get(IC_LANG_DEFAULT)).active,\r
1406                         cIDresources.getString("ActLangDefTip"),\r
1407                         null, null, KeyEvent.VK_D, null ) \r
1408                 {\r
1409    public void actionPerformed(ActionEvent e) {\r
1410                                 frameCID.setLocale(Locale.getDefault());\r
1411                                 languageChange(e); // update application state\r
1412                         }\r
1413                 };\r
1414 \r
1415                 aLanguageBritish = new org.tjworld.components.PowerAction(\r
1416                         cIDresources.getString("ActLangBritName"),\r
1417                         ((ToolIconPair)vToolIcons.get(IC_LANG_BRITISH)).active,\r
1418                         cIDresources.getString("ActLangBritTip"),\r
1419                         null, null, KeyEvent.VK_B, null ) \r
1420                 {\r
1421    public void actionPerformed(ActionEvent e) {\r
1422                                 frameCID.setLocale(Locale.UK);\r
1423                                 languageChange(e); // update application state\r
1424                         }\r
1425                 };\r
1426 \r
1427                 aLanguageFrench = new org.tjworld.components.PowerAction(\r
1428                         cIDresources.getString("ActLangFrName"),\r
1429                         ((ToolIconPair)vToolIcons.get(IC_LANG_FRENCH)).active,\r
1430                         cIDresources.getString("ActLangFrTip"),\r
1431                         null, null, KeyEvent.VK_F, null ) \r
1432                 {\r
1433    public void actionPerformed(ActionEvent e) {\r
1434                                 frameCID.setLocale(Locale.FRANCE);\r
1435                                 languageChange(e); // update application state\r
1436                         }\r
1437                 };\r
1438 \r
1439                 aLanguageSpanish = new org.tjworld.components.PowerAction(\r
1440                         cIDresources.getString("ActLangSpanName"),\r
1441                         ((ToolIconPair)vToolIcons.get(IC_LANG_SPANISH)).active,\r
1442                         cIDresources.getString("ActLangSpanTip"),\r
1443                         null, null, KeyEvent.VK_S, null ) \r
1444                 {\r
1445    public void actionPerformed(ActionEvent e) {\r
1446                                 frameCID.setLocale(new Locale("es","ES"));\r
1447                                 languageChange(e); // update application state\r
1448                         }\r
1449                 };\r
1450 \r
1451                 aLanguageGerman = new org.tjworld.components.PowerAction(\r
1452                         cIDresources.getString("ActLangGerName"),\r
1453                         ((ToolIconPair)vToolIcons.get(IC_LANG_GERMAN)).active,\r
1454                         cIDresources.getString("ActLangGerTip"),\r
1455                         null, null, KeyEvent.VK_G, null ) \r
1456                 {\r
1457    public void actionPerformed(ActionEvent e) {\r
1458                                 frameCID.setLocale(new Locale("de","DE"));\r
1459                                 languageChange(e); // update application state\r
1460                         }\r
1461                 };\r
1462 \r
1463                 aLanguageArabicEgypt = new org.tjworld.components.PowerAction(\r
1464                         cIDresources.getString("ActLangArEGName"),\r
1465                         ((ToolIconPair)vToolIcons.get(IC_LANG_AR_EG)).active,\r
1466                         cIDresources.getString("ActLangArEGTip"),\r
1467                         null, null, KeyEvent.VK_A, null ) \r
1468                 {\r
1469    public void actionPerformed(ActionEvent e) {\r
1470                                 frameCID.setLocale(new Locale("ar","EG"));\r
1471                                 languageChange(e); // update application state\r
1472                         }\r
1473                 };\r
1474 \r
1475                 aLanguageFarsiIran = new org.tjworld.components.PowerAction(\r
1476                         cIDresources.getString("ActLangFaIRName"),\r
1477                         ((ToolIconPair)vToolIcons.get(IC_LANG_FA_IR)).active,\r
1478                         cIDresources.getString("ActLangFaIRTip"),\r
1479                         null, null, 0, null ) // no keyboard mnemonic\r
1480                 {\r
1481    public void actionPerformed(ActionEvent e) {\r
1482                                 frameCID.setLocale(new Locale("fa","IR"));\r
1483                                 languageChange(e); // update application state\r
1484                         }\r
1485                 };\r
1486 \r
1487                 aLanguageHindiIndia = new org.tjworld.components.PowerAction(\r
1488                         cIDresources.getString("ActLangHiINName"),\r
1489                         ((ToolIconPair)vToolIcons.get(IC_LANG_FA_IR)).active,\r
1490                         cIDresources.getString("ActLangHiINTip"),\r
1491                         null, null, KeyEvent.VK_H, null )\r
1492                 {\r
1493    public void actionPerformed(ActionEvent e) {\r
1494                                 frameCID.setLocale(new Locale("hi","IN"));\r
1495                                 languageChange(e); // update application state\r
1496                         }\r
1497                 };\r
1498                 \r
1499                 aLanguageIndonesian = new org.tjworld.components.PowerAction(\r
1500                         cIDresources.getString("ActLangIndonesianName"),\r
1501                         ((ToolIconPair)vToolIcons.get(IC_LANG_IN)).active,\r
1502                         cIDresources.getString("ActLangIndonesianTip"),\r
1503                         null, null, 0, null )\r
1504                 {\r
1505    public void actionPerformed(ActionEvent e) {\r
1506                                 frameCID.setLocale(new Locale("in"));\r
1507                                 languageChange(e); // update application state\r
1508                         }\r
1509                 };\r
1510                 \r
1511                 aLanguageJapanese = new org.tjworld.components.PowerAction(\r
1512                         cIDresources.getString("ActLangJapaneseName"),\r
1513                         ((ToolIconPair)vToolIcons.get(IC_LANG_IN)).active,\r
1514                         cIDresources.getString("ActLangJapaneseTip"),\r
1515                         null, null, 0, null )\r
1516                 {\r
1517    public void actionPerformed(ActionEvent e) {\r
1518                                 frameCID.setLocale(new Locale("ja"));\r
1519                                 languageChange(e); // update application state\r
1520                         }\r
1521                 };\r
1522                 \r
1523   aLanguageDutch = new org.tjworld.components.PowerAction(\r
1524                         cIDresources.getString("ActLangDutchName"),\r
1525                         ((ToolIconPair)vToolIcons.get(IC_LANG_IN)).active,\r
1526                         cIDresources.getString("ActLangDutchTip"),\r
1527                         null, null, 0, null )\r
1528                 {\r
1529    public void actionPerformed(ActionEvent e) {\r
1530                                 frameCID.setLocale(new Locale("nl"));\r
1531                                 languageChange(e); // update application state\r
1532                         }\r
1533                 };\r
1534                 \r
1535                 aLanguagePashto = new org.tjworld.components.PowerAction(\r
1536                         cIDresources.getString("ActLangPashtoName"),\r
1537                         ((ToolIconPair)vToolIcons.get(IC_LANG_IN)).active,\r
1538                         cIDresources.getString("ActLangPashtoTip"),\r
1539                         null, null, 0, null )\r
1540                 {\r
1541    public void actionPerformed(ActionEvent e) {\r
1542                                 frameCID.setLocale(new Locale("ps"));\r
1543                                 languageChange(e); // update application state\r
1544                         }\r
1545                 };\r
1546                 \r
1547                 aLanguagePortuguese = new org.tjworld.components.PowerAction(\r
1548                         cIDresources.getString("ActLangPortugueseName"),\r
1549                         ((ToolIconPair)vToolIcons.get(IC_LANG_IN)).active,\r
1550                         cIDresources.getString("ActLangPortugueseTip"),\r
1551                         null, null, 0, null )\r
1552                 {\r
1553    public void actionPerformed(ActionEvent e) {\r
1554                                 frameCID.setLocale(new Locale("pt"));\r
1555                                 languageChange(e); // update application state\r
1556                         }\r
1557                 };\r
1558         \r
1559                 aLanguageRussian = new org.tjworld.components.PowerAction(\r
1560                         cIDresources.getString("ActLangRussianName"),\r
1561                         ((ToolIconPair)vToolIcons.get(IC_LANG_IN)).active,\r
1562                         cIDresources.getString("ActLangRussianTip"),\r
1563                         null, null, 0, null )\r
1564                 {\r
1565    public void actionPerformed(ActionEvent e) {\r
1566                                 frameCID.setLocale(new Locale("ru"));\r
1567                                 languageChange(e); // update application state\r
1568                         }\r
1569                 };\r
1570                 \r
1571                 aLanguageSwedish = new org.tjworld.components.PowerAction(\r
1572                         cIDresources.getString("ActLangSwedishName"),\r
1573                         ((ToolIconPair)vToolIcons.get(IC_LANG_IN)).active,\r
1574                         cIDresources.getString("ActLangSwedishTip"),\r
1575                         null, null, 0, null )\r
1576                 {\r
1577    public void actionPerformed(ActionEvent e) {\r
1578                                 frameCID.setLocale(new Locale("sv"));\r
1579                                 languageChange(e); // update application state\r
1580                         }\r
1581                 };\r
1582                 \r
1583                 aLanguageUrdu = new org.tjworld.components.PowerAction(\r
1584                         cIDresources.getString("ActLangUrduName"),\r
1585                         ((ToolIconPair)vToolIcons.get(IC_LANG_IN)).active,\r
1586                         cIDresources.getString("ActLangUrduTip"),\r
1587                         null, null, 0, null )\r
1588                 {\r
1589    public void actionPerformed(ActionEvent e) {\r
1590                                 frameCID.setLocale(new Locale("ur"));\r
1591                                 languageChange(e); // update application state\r
1592                         }\r
1593                 };\r
1594                 \r
1595                 aLanguageChinese = new org.tjworld.components.PowerAction(\r
1596                         cIDresources.getString("ActLangChineseName"),\r
1597                         ((ToolIconPair)vToolIcons.get(IC_LANG_IN)).active,\r
1598                         cIDresources.getString("ActLangChineseTip"),\r
1599                         null, null, 0, null )\r
1600                 {\r
1601    public void actionPerformed(ActionEvent e) {\r
1602                                 frameCID.setLocale(new Locale("zh"));\r
1603                                 languageChange(e); // update application state\r
1604                         }\r
1605                 };\r
1606                 \r
1607                 aHelpContents = new org.tjworld.components.PowerAction(\r
1608                         cIDresources.getString("ActHelpConName"),\r
1609                         ((ToolIconPair)vToolIcons.get(IC_HELP_CONTENTS)).active,\r
1610                         cIDresources.getString("ActHelpConTip"),\r
1611                         null, null, KeyEvent.VK_C, \r
1612                         KeyStroke.getKeyStroke(KeyEvent.VK_F1, ActionEvent.CTRL_MASK)) \r
1613                 {\r
1614    public void actionPerformed(ActionEvent e) {\r
1615                                 statusMessage.setText((String)aHelpContents.getValue(Action.NAME));\r
1616                                 showHelp(xhtmlHelp.TAB_CONTENTS, false, true, true);\r
1617                         }\r
1618                 };\r
1619 \r
1620          aHelpSearch = new org.tjworld.components.PowerAction(\r
1621                         cIDresources.getString("ActHelpSrcName"),\r
1622                         ((ToolIconPair)vToolIcons.get(IC_HELP_SEARCH)).active,\r
1623                         cIDresources.getString("ActHelpSrcTip"),\r
1624                         null, null, KeyEvent.VK_S, null ) \r
1625                 {\r
1626    public void actionPerformed(ActionEvent e) {\r
1627                                 statusMessage.setText((String)aHelpSearch.getValue(Action.NAME));\r
1628                                 showHelp(xhtmlHelp.TAB_SEARCH, false, true, true);\r
1629                         }\r
1630                 };\r
1631 \r
1632          aHelpWeb = new org.tjworld.components.PowerAction(\r
1633                         cIDresources.getString("ActHelpWebName"),\r
1634                         ((ToolIconPair)vToolIcons.get(IC_HELP_WEB)).active,\r
1635                         cIDresources.getString("ActHelpWebTip"),\r
1636                         null, null, KeyEvent.VK_W, null ) \r
1637                 {\r
1638    public void actionPerformed(ActionEvent e) {\r
1639                                 statusMessage.setText((String)aHelpWeb.getValue(Action.NAME));\r
1640                         }\r
1641                 };\r
1642          aFilterTemplate = new org.tjworld.components.PowerAction(\r
1643                         cIDresources.getString("ActFltTmplName"),\r
1644                         ((ToolIconPair)vToolIcons.get(IC_FILTER_TEMPLATE)).active,\r
1645                         cIDresources.getString("ActFltTmplTip"),\r
1646                         null, null, KeyEvent.VK_T,\r
1647                         KeyStroke.getKeyStroke(KeyEvent.VK_T, ActionEvent.CTRL_MASK)) \r
1648                 {\r
1649    public void actionPerformed(ActionEvent e) {\r
1650                                 filterChange(e, FILTER_TEMPLATE);\r
1651                         }\r
1652                 };\r
1653 \r
1654          aFilterWindow = new org.tjworld.components.PowerAction(\r
1655                         cIDresources.getString("ActFltWinName"),\r
1656                         ((ToolIconPair)vToolIcons.get(IC_FILTER_WINDOW)).active,\r
1657                         cIDresources.getString("ActFltWinTip"),\r
1658                         null, null, KeyEvent.VK_W,\r
1659                         KeyStroke.getKeyStroke(KeyEvent.VK_W, ActionEvent.CTRL_MASK)) \r
1660                 {\r
1661    public void actionPerformed(ActionEvent e) {\r
1662                                 filterChange(e, FILTER_WINDOW);\r
1663                         }\r
1664                 };\r
1665 \r
1666          aFilterScreen = new org.tjworld.components.PowerAction(\r
1667                         cIDresources.getString("ActFltScrName"),\r
1668                         ((ToolIconPair)vToolIcons.get(IC_FILTER_SCREEN)).active,\r
1669                         cIDresources.getString("ActFltScrTip"),\r
1670                         null, null, KeyEvent.VK_S, null ) \r
1671                 {\r
1672    public void actionPerformed(ActionEvent e) {\r
1673                                 filterChange(e, FILTER_SCREEN);\r
1674                         }\r
1675                 };\r
1676  }\r
1677         \r
1678         /** Display the HTML help window\r
1679                 * @param tabSelected The Navigation tab to give focus to\r
1680                 */      \r
1681         public void showHelp(int tabSelected, boolean position, boolean show, boolean changeShow) {\r
1682                 if(helpWindow != null) {\r
1683                 if(helpLocation == null || position == true) { // not displayed before, so position nicely\r
1684                         helpLocation = new Point(getX(), getY() + getHeight());\r
1685                         helpWindow.setLocation(helpLocation, (Component)this);\r
1686         Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();\r
1687                         Dimension d = getSize();\r
1688           d.height = screenSize.height - (getY() + d.height);\r
1689                         helpWindow.setSize(d, (Component)this);\r
1690          }\r
1691 \r
1692                 if(changeShow) helpWindow.setVisible(show);\r
1693                 if(tabSelected != 0) helpWindow.setNavigationTab(tabSelected);\r
1694                 }\r
1695         }\r
1696         \r
1697         /** Switch the positioning of the VisTA filter\r
1698                 *\r
1699                 * By default the filter covers only the Template, but can be set to cover the\r
1700                 * entire Window, and in supported environments, the entire screen.\r
1701                 *\r
1702                 * Filtering the entire screen may require either the Java Full-Screen API so\r
1703                 * the application takes over the display, or else the use of Java Native Interface\r
1704                 * to communicate with the host Operating System.\r
1705                 */\r
1706         private void filterChange(ActionEvent e, int newFilter) {\r
1707                 AbstractButton pa = (AbstractButton)e.getSource(); // identify the component that fired this event\r
1708                 statusIconFilter.setDisabledIcon(pa.getIcon()); // update the status icon       \r
1709                 statusMessage.setText((String)pa.getAction().getValue(Action.NAME));\r
1710 \r
1711   switch(activeFilter) { // deactivate the current filter\r
1712    case FILTER_SCREEN: // remove attachment to screen\r
1713     break;\r
1714    case FILTER_WINDOW: // remove attachment to window\r
1715                         setGlassPane(defaultGlassPane);\r
1716     defaultGlassPane.setVisible(false);\r
1717     break;\r
1718    case FILTER_TEMPLATE:  // remove attachment to template\r
1719                         filterLayerPane.remove(vfFilter);\r
1720     break;\r
1721   }\r
1722     \r
1723   switch(newFilter) { // activate the requested filter\r
1724    case FILTER_SCREEN: // attach to screen\r
1725     break;\r
1726    case FILTER_WINDOW: // attach to window\r
1727                         // defaultGlassPane = getGlassPane(); // store the current glass pane\r
1728                         setGlassPane(vfFilter); // replace it with the filter\r
1729                         vfFilter.setVisible(true); // make it visible\r
1730     break;\r
1731    case FILTER_TEMPLATE: // attach to template\r
1732                                 vfFilter.setLocation(0,0); // might have been forced to relocate by Frame L&F decorations\r
1733                         filterLayerPane.add(vfFilter, javax.swing.JLayeredPane.DRAG_LAYER);\r
1734     break;\r
1735   }\r
1736   activeFilter = newFilter;\r
1737         }\r
1738         \r
1739         /** Update state of application after a Language change\r
1740                 *\r
1741                 * Reflects the change in the status bar icons, and iterates through\r
1742                 * all language-dependent components.\r
1743                 *\r
1744                 * @param e event fired by source component\r
1745                 */\r
1746         private void languageChange(ActionEvent e) {\r
1747                 AbstractButton pa = (AbstractButton)e.getSource(); // identify the component that fired this event\r
1748                 statusIconLanguage.setDisabledIcon(pa.getIcon());       // update the status icon       \r
1749                 statusMessage.setText((String)pa.getAction().getValue(Action.NAME));\r
1750         }\r
1751 \r
1752                 /** Update state of application after a Director change\r
1753                 *\r
1754                 * Reflects the change in the status bar icons, and switches\r
1755                 * director mode.\r
1756                 *\r
1757                 * @param e event fired by source component\r
1758                 */\r
1759         private void directorChange(ActionEvent e) {\r
1760                 AbstractButton pa = (AbstractButton)e.getSource(); // identify the component that fired this event\r
1761                 statusIconDirector.setDisabledIcon(pa.getIcon()); // update the status icon     \r
1762                 statusMessage.setText((String)pa.getAction().getValue(Action.NAME));\r
1763         }\r
1764         \r
1765                 /** Update state of application after a Colour View change\r
1766                 *\r
1767                 * Reflects the change in the status bar icons, and changes \r
1768                 * colour view mode.\r
1769                 *\r
1770                 * @param e event fired by source component\r
1771                 */\r
1772                 private void colourViewChange(ActionEvent e) {\r
1773                 AbstractButton pa = (AbstractButton)e.getSource(); // identify the component that fired this event\r
1774                 statusIconColourView.setDisabledIcon(pa.getIcon()); // update the status icon   \r
1775                 statusMessage.setText((String)pa.getAction().getValue(Action.NAME));\r
1776         }\r
1777         \r
1778         /** Update state of application after a Colour Model change\r
1779                 *\r
1780                 * Reflects the change in the status bar icons, and changes\r
1781                 * the colour model.\r
1782                 *\r
1783                 * @param e event fired by source component\r
1784                 */\r
1785         private void colourModelChange(ActionEvent e) {\r
1786                 AbstractButton pa = (AbstractButton)e.getSource(); // identify the component that fired this event\r
1787                 statusIconColourModel.setDisabledIcon(pa.getIcon());    // update the status icon       \r
1788                 statusMessage.setText((String)pa.getAction().getValue(Action.NAME));\r
1789         }\r
1790         \r
1791         /** Update state of application after a Template change\r
1792                 *\r
1793                 * Reflects the change in the status bar icons, and changes\r
1794                 * the template.\r
1795                 *\r
1796                 * @param e event fired by source component\r
1797                 */\r
1798         private void templateChange(ActionEvent e) {\r
1799                 AbstractButton pa = (AbstractButton)e.getSource(); // identify the component that fired this event\r
1800                 statusIconTemplate.setDisabledIcon(pa.getIcon());       // update the status icon       \r
1801                 statusMessage.setText((String)pa.getAction().getValue(Action.NAME));\r
1802         }\r
1803         \r
1804         /** Update state of application after an Eye Model change\r
1805                 *\r
1806                 * Reflects the change in the status bar icons, and changes\r
1807                 * the eye model.\r
1808                 *\r
1809                 * @param e event fired by source component\r
1810                 */\r
1811         private void eyesChange(ActionEvent e) {\r
1812                 AbstractButton pa = (AbstractButton)e.getSource(); // identify the component that fired this event\r
1813                 statusIconEyes.setDisabledIcon(pa.getIcon());   // update the status icon       \r
1814                 statusMessage.setText((String)pa.getAction().getValue(Action.NAME));\r
1815         }\r
1816         \r
1817         /** Update state of application after a Model change\r
1818                 *\r
1819                 * Reflects the change in the status bar icons, and changes\r
1820                 * the model.\r
1821                 *\r
1822                 * @param e event fired by source component\r
1823                 */\r
1824         private void modelChange(ActionEvent e) {\r
1825                 AbstractButton pa = (AbstractButton)e.getSource(); // identify the component that fired this event\r
1826                 statusIconModel.setDisabledIcon(pa.getIcon());  // update the status icon       \r
1827                 statusMessage.setText((String)pa.getAction().getValue(Action.NAME));\r
1828         }\r
1829         \r
1830         /**\r
1831                 * Prints the application window exactly as it appears on screen\r
1832                 * @param g The context to draw into\r
1833                 * @param pf page format info\r
1834                 * @param pi page index (number) to print\r
1835                 * @return status\r
1836                 * @throws PrinterException Problem\r
1837                 */\r
1838  public int print(Graphics g, PageFormat pf, int pi) throws PrinterException {\r
1839                 if(pi >= 1) // only got one page to print\r
1840                         return Printable.NO_SUCH_PAGE;\r
1841 \r
1842                 if(debugging) {\r
1843                  System.out.println("Page orientation: " + (pf.getOrientation() == PageFormat.LANDSCAPE ? "Landscape" : (pf.getOrientation() == PageFormat.PORTRAIT ? "Portrait" : "Reverse Landscape")));\r
1844                  System.out.println("Page Width=" + pf.getWidth() + ", Height=" + pf.getHeight());\r
1845                  System.out.println("Page ImageableX=" + pf.getImageableX() + ", ImageableY=" + pf.getImageableY());\r
1846                  System.out.println("Page Imageable Ints X=" + (new Double(pf.getImageableX())).intValue() + ", Y=" + (new Double(pf.getImageableY())).intValue());\r
1847                  System.out.println("Page ImageableWidth=" + pf.getImageableWidth() + ", ImageableHeight=" + pf.getImageableHeight());\r
1848                  System.out.println("Frame Width=" + getWidth() + " Height=" + getHeight());\r
1849    System.out.println("Graphics Clip=" + g.getClip().toString());\r
1850                 }\r
1851                 \r
1852                 statusMessage.setText("Please wait, printing may take some time...");\r
1853                 // create a BufferedImage matching or exceeding the CID frame size \r
1854                 java.awt.image.BufferedImage buffer = new java.awt.image.BufferedImage(getWidth(), getHeight(), java.awt.image.BufferedImage.TYPE_INT_RGB);\r
1855                 // get a Graphics2D from the BufferedImage\r
1856                 Graphics2D g2d = buffer.createGraphics();\r
1857                 // pass the Graphics2D to the printAll() method\r
1858                 printAll(g2d);\r
1859                 // cast the printer Graphics object to a Graphics2D object\r
1860                 Graphics2D g2 = (Graphics2D)g;\r
1861   // create a scaling transform to render the image half-size\r
1862                 AffineTransform scale = AffineTransform.getScaleInstance(0.5,0.5);\r
1863                 // apply it to the buffer Graphics2D context\r
1864                 g2.transform(scale);\r
1865                 // get an Affine (rotational) Transform taken from the PageFormat.getMatrix() method\r
1866                 // AffineTransformOp pageOrientation = new AffineTransformOp(new AffineTransform(pf.getMatrix()), AffineTransformOp.TYPE_BILINEAR); // deal with page orientation (landscape/portrait)\r
1867   // translate the origin to ensure the image is not clipped by the page margins\r
1868                 g2.translate((new Double(pf.getImageableX())).intValue(), (new Double(pf.getImageableY())).intValue());\r
1869                 // create an Identity (1:1) Op because we have to give Graphics2D.drawImage() an Op of some kind\r
1870                 java.awt.image.RescaleOp scaleIdentity = new java.awt.image.RescaleOp(1.0f, 0.0f, null);\r
1871                 // use Graphics2D.drawImage(BufferedImage...) to rotate the image into the printer graphics context\r
1872                 g2.drawImage(buffer, scaleIdentity, (new Double(pf.getImageableWidth()/2)).intValue(), (new Double(pf.getImageableHeight()/2)).intValue());\r
1873                 // return the original Graphics object to the print engine      \r
1874                 // return Printable.NO_SUCH_PAGE;\r
1875          return Printable.PAGE_EXISTS;\r
1876         }\r
1877         \r
1878     /** This method is called from within the constructor to\r
1879      * initialize the form.\r
1880      * WARNING: Do NOT modify this code. The content of this method is\r
1881      * always regenerated by the Form Editor.\r
1882      */\r
1883         private void initComponents() {//GEN-BEGIN:initComponents\r
1884                 mbMain = new javax.swing.JMenuBar();\r
1885                 mProfile = new javax.swing.JMenu();\r
1886                 mProfileNew = new javax.swing.JMenuItem();\r
1887                 mProfileOpen = new javax.swing.JMenuItem();\r
1888                 mProfileSave = new javax.swing.JMenuItem();\r
1889                 mProfileSaveAs = new javax.swing.JMenuItem();\r
1890                 mProfileDelete = new javax.swing.JMenuItem();\r
1891                 mProfileSeparator1 = new javax.swing.JSeparator();\r
1892                 mProfileToVista = new javax.swing.JMenuItem();\r
1893                 mProfileSeparator2 = new javax.swing.JSeparator();\r
1894                 mProfileFromCookie = new javax.swing.JMenuItem();\r
1895                 mProfileToCookie = new javax.swing.JMenuItem();\r
1896                 mProfileCreateFilter = new javax.swing.JMenuItem();\r
1897                 mProfileWeb = new javax.swing.JMenuItem();\r
1898                 mProfileSeparator3 = new javax.swing.JSeparator();\r
1899                 mProfilePrint = new javax.swing.JMenuItem();\r
1900                 mProfilePageSetup = new javax.swing.JMenuItem();\r
1901                 mProfileSeparator4 = new javax.swing.JSeparator();\r
1902                 mProfileProperties = new javax.swing.JMenuItem();\r
1903                 mModel = new javax.swing.JMenu();\r
1904                 mModel1 = new javax.swing.JRadioButtonMenuItem();\r
1905                 mModel2 = new javax.swing.JRadioButtonMenuItem();\r
1906                 mModelAlternate = new javax.swing.JRadioButtonMenuItem();\r
1907                 jSeparator9 = new javax.swing.JSeparator();\r
1908                 mModelBothEyes = new javax.swing.JRadioButtonMenuItem();\r
1909                 mModelEyesSeparate = new javax.swing.JRadioButtonMenuItem();\r
1910                 mTemplate = new javax.swing.JMenu();\r
1911                 mTemplateReading = new javax.swing.JRadioButtonMenuItem();\r
1912                 mTemplatePattern = new javax.swing.JRadioButtonMenuItem();\r
1913                 mTemplateImage = new javax.swing.JRadioButtonMenuItem();\r
1914                 mColour = new javax.swing.JMenu();\r
1915                 mColourRGB = new javax.swing.JRadioButtonMenuItem();\r
1916                 mColourHSB = new javax.swing.JRadioButtonMenuItem();\r
1917                 mColourCYMK = new javax.swing.JRadioButtonMenuItem();\r
1918                 jSeparator7 = new javax.swing.JSeparator();\r
1919                 mColourWheel = new javax.swing.JRadioButtonMenuItem();\r
1920                 mColourTriangle = new javax.swing.JRadioButtonMenuItem();\r
1921                 mColourCube = new javax.swing.JRadioButtonMenuItem();\r
1922                 mColourSystemChooser = new javax.swing.JRadioButtonMenuItem();\r
1923                 mColourSwatch = new javax.swing.JRadioButtonMenuItem();\r
1924                 mDirector = new javax.swing.JMenu();\r
1925                 mDirectorManual = new javax.swing.JRadioButtonMenuItem();\r
1926                 mDirectorAuto = new javax.swing.JRadioButtonMenuItem();\r
1927                 mDirectorDirect = new javax.swing.JRadioButtonMenuItem();\r
1928                 mDirectorScript = new javax.swing.JRadioButtonMenuItem();\r
1929                 mOptions = new javax.swing.JMenu();\r
1930                 mOptionsReading = new javax.swing.JMenu();\r
1931                 mReadingChoose = new javax.swing.JMenuItem();\r
1932                 mReadingCustomize = new javax.swing.JMenuItem();\r
1933                 mReadingPreferences = new javax.swing.JMenuItem();\r
1934                 mOptionsPatterns = new javax.swing.JMenu();\r
1935                 mPatternsChoose = new javax.swing.JMenuItem();\r
1936                 mPatternsCustomize = new javax.swing.JMenuItem();\r
1937                 mPatternsPreferences = new javax.swing.JMenuItem();\r
1938                 mOptionsImages = new javax.swing.JMenu();\r
1939                 mImgChoose = new javax.swing.JMenuItem();\r
1940                 mImgCustomize = new javax.swing.JMenuItem();\r
1941                 mImgPreferences = new javax.swing.JMenuItem();\r
1942                 mOptionsSwatches = new javax.swing.JMenu();\r
1943                 mSwatchesChoose = new javax.swing.JMenuItem();\r
1944                 mSwatchesCustomize = new javax.swing.JMenuItem();\r
1945                 mSwatchesPreferences = new javax.swing.JMenuItem();\r
1946                 mOptionsDirected = new javax.swing.JMenu();\r
1947                 mDirectedConnect = new javax.swing.JMenuItem();\r
1948                 mDirectedDisconnect = new javax.swing.JMenuItem();\r
1949                 mDirectedPreferences = new javax.swing.JMenuItem();\r
1950                 mOptionsScripted = new javax.swing.JMenu();\r
1951                 mOptionsScriptedChoose = new javax.swing.JMenuItem();\r
1952                 mOptionsScriptedPlay = new javax.swing.JMenuItem();\r
1953                 mOptionsScriptedRecord = new javax.swing.JMenuItem();\r
1954                 mOptionsScriptedPause = new javax.swing.JMenuItem();\r
1955                 mOptionsScriptedStop = new javax.swing.JMenuItem();\r
1956                 mOptionsScriptedPreferences = new javax.swing.JMenuItem();\r
1957                 mOptionsFilter = new javax.swing.JMenu();\r
1958                 mFilterTemplate = new javax.swing.JRadioButtonMenuItem();\r
1959                 mFilterWindow = new javax.swing.JRadioButtonMenuItem();\r
1960                 mFilterScreen = new javax.swing.JRadioButtonMenuItem();\r
1961                 mOptionsLanguage = new javax.swing.JMenu();\r
1962                 mLanguageDefault = new javax.swing.JRadioButtonMenuItem();\r
1963                 mLanguageBritish = new javax.swing.JRadioButtonMenuItem();\r
1964                 mLanguageFrench = new javax.swing.JRadioButtonMenuItem();\r
1965                 mLanguageSpanish = new javax.swing.JRadioButtonMenuItem();\r
1966                 mLanguageGerman = new javax.swing.JRadioButtonMenuItem();\r
1967                 mLanguageArabicEgypt = new javax.swing.JRadioButtonMenuItem();\r
1968                 mLanguageFarsiIran = new javax.swing.JRadioButtonMenuItem();\r
1969                 mLanguageHindiIndia = new javax.swing.JRadioButtonMenuItem();\r
1970                 mLanguageIndonesian = new javax.swing.JRadioButtonMenuItem();\r
1971                 mLanguageJapanese = new javax.swing.JRadioButtonMenuItem();\r
1972                 mLanguageDutch = new javax.swing.JRadioButtonMenuItem();\r
1973                 mLanguagePashto = new javax.swing.JRadioButtonMenuItem();\r
1974                 mLanguagePortuguese = new javax.swing.JRadioButtonMenuItem();\r
1975                 mLanguageRussian = new javax.swing.JRadioButtonMenuItem();\r
1976                 mLanguageSwedish = new javax.swing.JRadioButtonMenuItem();\r
1977                 mLanguageUrdu = new javax.swing.JRadioButtonMenuItem();\r
1978                 mLanguageChinese = new javax.swing.JRadioButtonMenuItem();\r
1979                 mOptionsToolbar = new javax.swing.JMenu();\r
1980                 mToolbarToolBar = new javax.swing.JCheckBoxMenuItem();\r
1981                 jSeparator1 = new javax.swing.JSeparator();\r
1982                 mToolbarProfile = new javax.swing.JCheckBoxMenuItem();\r
1983                 mToolbarModel = new javax.swing.JCheckBoxMenuItem();\r
1984                 mToolbarEyes = new javax.swing.JCheckBoxMenuItem();\r
1985                 mToolbarTemplate = new javax.swing.JCheckBoxMenuItem();\r
1986                 mToolbarColourModel = new javax.swing.JCheckBoxMenuItem();\r
1987                 mToolbarColourView = new javax.swing.JCheckBoxMenuItem();\r
1988                 mToolbarDirector = new javax.swing.JCheckBoxMenuItem();\r
1989                 mToolbarConnection = new javax.swing.JCheckBoxMenuItem();\r
1990                 mToolbarScript = new javax.swing.JCheckBoxMenuItem();\r
1991                 mOptionsLandF = new javax.swing.JMenu();\r
1992                 mOptionsVistaDB = new javax.swing.JMenuItem();\r
1993                 mOptionsSeparator2 = new javax.swing.JSeparator();\r
1994                 mOptionsVistaWeb = new javax.swing.JCheckBoxMenuItem();\r
1995                 mHelp = new javax.swing.JMenu();\r
1996                 mHelpContents = new javax.swing.JMenuItem();\r
1997                 mHelpIndex = new javax.swing.JMenuItem();\r
1998                 mHelpSearch = new javax.swing.JMenuItem();\r
1999                 mHelpWebLink = new javax.swing.JMenuItem();\r
2000                 mHelpSeparator1 = new javax.swing.JSeparator();\r
2001                 mHelpExplain = new javax.swing.JCheckBoxMenuItem();\r
2002                 mHelpDock = new javax.swing.JCheckBoxMenuItem();\r
2003                 mHelpFilter = new javax.swing.JCheckBoxMenuItem();\r
2004                 mHelpSeparator2 = new javax.swing.JSeparator();\r
2005                 mHelpAbout = new javax.swing.JMenuItem();\r
2006                 btnGroupFilter = new javax.swing.ButtonGroup();\r
2007                 btnGroupTemplate = new javax.swing.ButtonGroup();\r
2008                 toolBar = new javax.swing.JToolBar();\r
2009                 pProfile = new javax.swing.JPanel();\r
2010                 btnNew = new javax.swing.JButton();\r
2011                 btnOpenFile = new javax.swing.JButton();\r
2012                 btnSave = new javax.swing.JButton();\r
2013                 btnSendToVistaDB = new javax.swing.JButton();\r
2014                 pModel = new javax.swing.JPanel();\r
2015                 btn1Up = new javax.swing.JToggleButton();\r
2016                 btn2Up = new javax.swing.JToggleButton();\r
2017                 btnAlternate = new javax.swing.JToggleButton();\r
2018                 pEyes = new javax.swing.JPanel();\r
2019                 btnEyes2 = new javax.swing.JToggleButton();\r
2020                 btnEyes1 = new javax.swing.JToggleButton();\r
2021                 pTemplate = new javax.swing.JPanel();\r
2022                 btnReading = new javax.swing.JToggleButton();\r
2023                 btnPatterns = new javax.swing.JToggleButton();\r
2024                 btnImages = new javax.swing.JToggleButton();\r
2025                 pColourModel = new javax.swing.JPanel();\r
2026                 btnRGB = new javax.swing.JToggleButton();\r
2027                 btnHSB = new javax.swing.JToggleButton();\r
2028                 btnCYMK = new javax.swing.JToggleButton();\r
2029                 pColourView = new javax.swing.JPanel();\r
2030                 btnWheel = new javax.swing.JToggleButton();\r
2031                 btnTriangle = new javax.swing.JToggleButton();\r
2032                 btnQube = new javax.swing.JToggleButton();\r
2033                 btnSystemChooser = new javax.swing.JToggleButton();\r
2034                 btnSwatches = new javax.swing.JToggleButton();\r
2035                 pDirector = new javax.swing.JPanel();\r
2036                 btnManual = new javax.swing.JToggleButton();\r
2037                 btnAuto = new javax.swing.JToggleButton();\r
2038                 btnDirected = new javax.swing.JToggleButton();\r
2039                 btnScript = new javax.swing.JToggleButton();\r
2040                 pConnection = new javax.swing.JPanel();\r
2041                 btnConnect = new javax.swing.JToggleButton();\r
2042                 btnDisconnect = new javax.swing.JToggleButton();\r
2043                 pScript = new javax.swing.JPanel();\r
2044                 btnPlay = new javax.swing.JToggleButton();\r
2045                 btnRecord = new javax.swing.JToggleButton();\r
2046                 btnPause = new javax.swing.JToggleButton();\r
2047                 btnStop = new javax.swing.JToggleButton();\r
2048                 workPanel = new javax.swing.JPanel();\r
2049                 spTemplate = new javax.swing.JSplitPane();\r
2050                 spColour = new javax.swing.JSplitPane();\r
2051                 colourPanel = new javax.swing.JPanel();\r
2052                 colourSelectorPanel = new javax.swing.JPanel();\r
2053                 filterSelector = new javax.swing.JPanel();\r
2054                 jIconRadioButton1 = new org.tjworld.components.JIconRadioButton();\r
2055                 jIconRadioButton2 = new org.tjworld.components.JIconRadioButton();\r
2056                 jIconRadioButton3 = new org.tjworld.components.JIconRadioButton();\r
2057                 jIconRadioButton4 = new org.tjworld.components.JIconRadioButton();\r
2058                 filterHistory = new javax.swing.JComboBox();\r
2059                 sysColorChooser = new javax.swing.JColorChooser();\r
2060                 tintPanel = new javax.swing.JPanel();\r
2061                 sliderTint = new javax.swing.JSlider();\r
2062                 filterLayerPane = new javax.swing.JLayeredPane();\r
2063                 templatePanel = new javax.swing.JPanel();\r
2064                 jTextPane3 = new javax.swing.JTextPane();\r
2065                 templateControlPanel = new javax.swing.JPanel();\r
2066                 templateSelectorPanel = new javax.swing.JPanel();\r
2067                 templateSelector = new javax.swing.JPanel();\r
2068                 jIconRadioButton6 = new org.tjworld.components.JIconRadioButton();\r
2069                 jIconRadioButton7 = new org.tjworld.components.JIconRadioButton();\r
2070                 jIconRadioButton8 = new org.tjworld.components.JIconRadioButton();\r
2071                 jIconRadioButton9 = new org.tjworld.components.JIconRadioButton();\r
2072                 templateHistory = new javax.swing.JComboBox();\r
2073                 ratingPanel = new javax.swing.JPanel();\r
2074                 sliderRating = new javax.swing.JSlider();\r
2075                 statusLine = new javax.swing.JPanel();\r
2076                 statusMessage = new javax.swing.JLabel();\r
2077                 statusRed = new javax.swing.JProgressBar();\r
2078                 statusGreen = new javax.swing.JProgressBar();\r
2079                 statusBlue = new javax.swing.JProgressBar();\r
2080                 statusTint = new javax.swing.JProgressBar();\r
2081                 statusIconPanel = new javax.swing.JPanel();\r
2082                 statusIconModel = new javax.swing.JButton();\r
2083                 statusIconEyes = new javax.swing.JButton();\r
2084                 statusIconTemplate = new javax.swing.JButton();\r
2085                 statusIconColourModel = new javax.swing.JButton();\r
2086                 statusIconColourView = new javax.swing.JButton();\r
2087                 statusIconDirector = new javax.swing.JButton();\r
2088                 statusIconFilter = new javax.swing.JButton();\r
2089                 statusIconLanguage = new javax.swing.JButton();\r
2090                 statusState = new javax.swing.JLabel();\r
2091                 \r
2092                 mbMain.setFocusCycleRoot(true);\r
2093                 mProfile.setMnemonic(java.awt.event.KeyEvent.VK_P);\r
2094                 mProfile.setText(cIDresources.getString("mProName"));\r
2095                 mProfile.setName("mPro");\r
2096                 mProfileNew.setAction(aNew);\r
2097                 mProfileNew.setDisabledIcon(((ToolIconPair)vToolIcons.get(IC_NEW)).dimmed);\r
2098                 mProfileNew.setName("ActNew");\r
2099                 mProfile.add(mProfileNew);\r
2100                 mProfileOpen.setAction(aOpen);\r
2101                 mProfileOpen.setDisabledIcon(((ToolIconPair)vToolIcons.get(IC_OPEN_FILE)).dimmed);\r
2102                 mProfileOpen.setIcon(((ToolIconPair)vToolIcons.get(IC_OPEN_FILE)).active);\r
2103                 mProfileOpen.setName("ActOpen");\r
2104                 mProfile.add(mProfileOpen);\r
2105                 mProfileSave.setAction(aSave);\r
2106                 mProfileSave.setDisabledIcon(((ToolIconPair)vToolIcons.get(IC_SAVE)).dimmed);\r
2107                 mProfileSave.setIcon(((ToolIconPair)vToolIcons.get(IC_SAVE)).active);\r
2108                 mProfileSave.setName("ActSave");\r
2109                 mProfile.add(mProfileSave);\r
2110                 mProfileSaveAs.setAction(aSaveAs);\r
2111                 mProfileSaveAs.setDisabledIcon(((ToolIconPair)vToolIcons.get(IC_SAVE_AS)).dimmed);\r
2112                 mProfileSaveAs.setIcon(((ToolIconPair)vToolIcons.get(IC_SAVE_AS)).active);\r
2113                 mProfileSaveAs.setName("ActSaveAs");\r
2114                 mProfile.add(mProfileSaveAs);\r
2115                 mProfileDelete.setAction(aDelete);\r
2116                 mProfileDelete.setDisabledIcon(((ToolIconPair)vToolIcons.get(IC_PROFILE_DELETE)).dimmed);\r
2117                 mProfileDelete.setName("ActDel");\r
2118                 mProfile.add(mProfileDelete);\r
2119                 mProfile.add(mProfileSeparator1);\r
2120                 mProfileToVista.setAction(aSendToVistaDB);\r
2121                 mProfileToVista.setDisabledIcon(((ToolIconPair)vToolIcons.get(IC_SEND_TO_VISTA_DB)).dimmed);\r
2122                 mProfileToVista.setIcon(((ToolIconPair)vToolIcons.get(IC_SEND_TO_VISTA_DB)).active);\r
2123                 mProfileToVista.setName("ActSendToVista");\r
2124                 mProfile.add(mProfileToVista);\r
2125                 mProfile.add(mProfileSeparator2);\r
2126                 mProfileFromCookie.setAction(aFromCookie);\r
2127                 mProfileFromCookie.setName("ActFrCook");\r
2128                 mProfile.add(mProfileFromCookie);\r
2129                 mProfileToCookie.setAction(aToCookie);\r
2130                 mProfileToCookie.setName("ActToCook");\r
2131                 mProfile.add(mProfileToCookie);\r
2132                 mProfileCreateFilter.setAction(aCreateFilter);\r
2133                 mProfileCreateFilter.setName("ActCreFlt");\r
2134                 mProfile.add(mProfileCreateFilter);\r
2135                 mProfileWeb.setAction(aToVistaPage);\r
2136                 mProfileWeb.setName("ActToVistaPage");\r
2137                 mProfile.add(mProfileWeb);\r
2138                 mProfile.add(mProfileSeparator3);\r
2139                 mProfilePrint.setAction(aPrint);\r
2140                 mProfilePrint.setName("ActPrint");\r
2141                 mProfile.add(mProfilePrint);\r
2142                 mProfilePageSetup.setAction(aPageSetup);\r
2143                 mProfilePageSetup.setName("ActPageSet");\r
2144                 mProfile.add(mProfilePageSetup);\r
2145                 mProfile.add(mProfileSeparator4);\r
2146                 mProfileProperties.setAction(aProperties);\r
2147                 mProfileProperties.setName("ActProProps");\r
2148                 mProfile.add(mProfileProperties);\r
2149                 mbMain.add(mProfile);\r
2150                 mModel.setMnemonic(java.awt.event.KeyEvent.VK_M);\r
2151                 mModel.setText(cIDresources.getString("mModName"));\r
2152                 mModel.setName("mMod");\r
2153                 mModel1.setSelected(true);\r
2154                 mbgModelAlgorithm.add(mModel1);\r
2155                 mModel1.setAction(a1_Up);\r
2156                 mModel1.setDisabledIcon(((ToolIconPair)vToolIcons.get(IC_1UP)).dimmed);\r
2157                 mModel1.setIcon(((ToolIconPair)vToolIcons.get(IC_1UP)).active);\r
2158                 mModel1.setName("Act1Up");\r
2159                 mModel.add(mModel1);\r
2160                 mbgModelAlgorithm.add(mModel2);\r
2161                 mModel2.setAction(a2_Up);\r
2162                 mModel2.setDisabledIcon(((ToolIconPair)vToolIcons.get(IC_2UP)).dimmed);\r
2163                 mModel2.setIcon(((ToolIconPair)vToolIcons.get(IC_2UP)).active);\r
2164                 mModel2.setName("Act2Up");\r
2165                 mModel.add(mModel2);\r
2166                 mbgModelAlgorithm.add(mModelAlternate);\r
2167                 mModelAlternate.setAction(aAlternate);\r
2168                 mModelAlternate.setDisabledIcon(((ToolIconPair)vToolIcons.get(IC_ALTERNATE)).dimmed);\r
2169                 mModelAlternate.setIcon(((ToolIconPair)vToolIcons.get(IC_ALTERNATE)).active);\r
2170                 mModelAlternate.setName("ActAlt");\r
2171                 mModel.add(mModelAlternate);\r
2172                 mModel.add(jSeparator9);\r
2173                 mModelBothEyes.setSelected(true);\r
2174                 mbgModelEyes.add(mModelBothEyes);\r
2175                 mModelBothEyes.setAction(aBothEyes);\r
2176                 mModelBothEyes.setDisabledIcon(((ToolIconPair)vToolIcons.get(IC_BOTH_EYES)).dimmed);\r
2177                 mModelBothEyes.setIcon(((ToolIconPair)vToolIcons.get(IC_BOTH_EYES)).active);\r
2178                 mModelBothEyes.setName("ActBothEyes");\r
2179                 mModel.add(mModelBothEyes);\r
2180                 mbgModelEyes.add(mModelEyesSeparate);\r
2181                 mModelEyesSeparate.setAction(aSeparateEyes);\r
2182                 mModelEyesSeparate.setDisabledIcon(((ToolIconPair)vToolIcons.get(IC_SEPARATE_EYES)).dimmed);\r
2183                 mModelEyesSeparate.setIcon(((ToolIconPair)vToolIcons.get(IC_SEPARATE_EYES)).active);\r
2184                 mModelEyesSeparate.setName("ActSepEyes");\r
2185                 mModel.add(mModelEyesSeparate);\r
2186                 mbMain.add(mModel);\r
2187                 mTemplate.setMnemonic(java.awt.event.KeyEvent.VK_T);\r
2188                 mTemplate.setText(cIDresources.getString("mTemplName"));\r
2189                 mTemplate.setName("mTempl");\r
2190                 mTemplateReading.setSelected(true);\r
2191                 mbgTemplate.add(mTemplateReading);\r
2192                 mTemplateReading.setAction(aReading);\r
2193                 mTemplateReading.setDisabledIcon(((ToolIconPair)vToolIcons.get(IC_READING)).dimmed);\r
2194                 mTemplateReading.setIcon(((ToolIconPair)vToolIcons.get(IC_READING)).active);\r
2195                 mTemplateReading.setName("ActRead");\r
2196                 mTemplate.add(mTemplateReading);\r
2197                 mbgTemplate.add(mTemplatePattern);\r
2198                 mTemplatePattern.setAction(aPatterns);\r
2199                 mTemplatePattern.setDisabledIcon(((ToolIconPair)vToolIcons.get(IC_PATTERNS)).dimmed);\r
2200                 mTemplatePattern.setIcon(((ToolIconPair)vToolIcons.get(IC_PATTERNS)).active);\r
2201                 mTemplatePattern.setName("ActPat");\r
2202                 mTemplate.add(mTemplatePattern);\r
2203                 mbgTemplate.add(mTemplateImage);\r
2204                 mTemplateImage.setAction(aImages);\r
2205                 mTemplateImage.setDisabledIcon(((ToolIconPair)vToolIcons.get(IC_IMAGES)).dimmed);\r
2206                 mTemplateImage.setIcon(((ToolIconPair)vToolIcons.get(IC_IMAGES)).active);\r
2207                 mTemplateImage.setName("ActPat");\r
2208                 mTemplate.add(mTemplateImage);\r
2209                 mbMain.add(mTemplate);\r
2210                 mColour.setMnemonic(java.awt.event.KeyEvent.VK_C);\r
2211                 mColour.setText(cIDresources.getString("mColourName"));\r
2212                 mColour.setName("mColour");\r
2213                 mbgColourModel.add(mColourRGB);\r
2214                 mColourRGB.setAction(aRGB);\r
2215                 mColourRGB.setDisabledIcon(((ToolIconPair)vToolIcons.get(IC_RGB)).dimmed);\r
2216                 mColourRGB.setIcon(((ToolIconPair)vToolIcons.get(IC_RGB)).active);\r
2217                 mColourRGB.setName("ActRGB");\r
2218                 mColour.add(mColourRGB);\r
2219                 mColourHSB.setSelected(true);\r
2220                 mbgColourModel.add(mColourHSB);\r
2221                 mColourHSB.setAction(aHSB);\r
2222                 mColourHSB.setDisabledIcon(((ToolIconPair)vToolIcons.get(IC_HSB)).dimmed);\r
2223                 mColourHSB.setIcon(((ToolIconPair)vToolIcons.get(IC_HSB)).active);\r
2224                 mColourHSB.setName("ActHSB");\r
2225                 mColour.add(mColourHSB);\r
2226                 mbgColourModel.add(mColourCYMK);\r
2227                 mColourCYMK.setAction(aCYMK);\r
2228                 mColourCYMK.setDisabledIcon(((ToolIconPair)vToolIcons.get(IC_CYMK)).dimmed);\r
2229                 mColourCYMK.setIcon(((ToolIconPair)vToolIcons.get(IC_CYMK)).active);\r
2230                 mColourCYMK.setName("ActCYMK");\r
2231                 mColour.add(mColourCYMK);\r
2232                 mColour.add(jSeparator7);\r
2233                 mbgColourView.add(mColourWheel);\r
2234                 mColourWheel.setAction(aWheel);\r
2235                 mColourWheel.setName("ActWheel");\r
2236                 mColour.add(mColourWheel);\r
2237                 mbgColourView.add(mColourTriangle);\r
2238                 mColourTriangle.setAction(aTriangle);\r
2239                 mColourTriangle.setName("ActTri");\r
2240                 mColour.add(mColourTriangle);\r
2241                 mbgColourView.add(mColourCube);\r
2242                 mColourCube.setAction(aQube);\r
2243                 mColourCube.setName("ActQube");\r
2244                 mColour.add(mColourCube);\r
2245                 mColourSystemChooser.setSelected(true);\r
2246                 mbgColourView.add(mColourSystemChooser);\r
2247                 mColourSystemChooser.setAction(aColorChooser);\r
2248                 mColourSystemChooser.setName("ActSysCol");\r
2249                 mColour.add(mColourSystemChooser);\r
2250                 mbgColourView.add(mColourSwatch);\r
2251                 mColourSwatch.setAction(aSwatches);\r
2252                 mColourSwatch.setName("ActSwatch");\r
2253                 mColour.add(mColourSwatch);\r
2254                 mbMain.add(mColour);\r
2255                 mDirector.setMnemonic(java.awt.event.KeyEvent.VK_D);\r
2256                 mDirector.setText(cIDresources.getString("mDirName"));\r
2257                 mDirector.setName("mDir");\r
2258                 mDirectorManual.setSelected(true);\r
2259                 mbgDirection.add(mDirectorManual);\r
2260                 mDirectorManual.setAction(aManual);\r
2261                 mDirectorManual.setName("ActManual");\r
2262                 mDirector.add(mDirectorManual);\r
2263                 mbgDirection.add(mDirectorAuto);\r
2264                 mDirectorAuto.setAction(aAuto);\r
2265                 mDirectorAuto.setName("ActAuto");\r
2266                 mDirector.add(mDirectorAuto);\r
2267                 mbgDirection.add(mDirectorDirect);\r
2268                 mDirectorDirect.setAction(aDirected);\r
2269                 mDirectorDirect.setName("ActDirect");\r
2270                 mDirector.add(mDirectorDirect);\r
2271                 mbgDirection.add(mDirectorScript);\r
2272                 mDirectorScript.setAction(aScript);\r
2273                 mDirectorScript.setName("ActScript");\r
2274                 mDirector.add(mDirectorScript);\r
2275                 mbMain.add(mDirector);\r
2276                 mOptions.setMnemonic(java.awt.event.KeyEvent.VK_O);\r
2277                 mOptions.setText(cIDresources.getString("mOptName"));\r
2278                 mOptions.setName("mOpt");\r
2279                 mOptionsReading.setMnemonic(java.awt.event.KeyEvent.VK_R);\r
2280                 mOptionsReading.setText(cIDresources.getString("mOptReadName"));\r
2281                 mOptionsReading.setToolTipText(cIDresources.getString("mOptReadTip"));\r
2282                 mOptionsReading.setDisabledIcon(((ToolIconPair)vToolIcons.get(IC_OPTION_CONFIG_READING)).dimmed);\r
2283                 mOptionsReading.setIcon(((ToolIconPair)vToolIcons.get(IC_OPTION_CONFIG_READING)).active);\r
2284                 mOptionsReading.setName("mOptRead");\r
2285                 mReadingChoose.setMnemonic(java.awt.event.KeyEvent.VK_O);\r
2286                 mReadingChoose.setText(cIDresources.getString("mOptReadChosName"));\r
2287                 mReadingChoose.setToolTipText(cIDresources.getString("mOptReadChosTip"));\r
2288                 mReadingChoose.setDisabledIcon(((ToolIconPair)vToolIcons.get(IC_OPTION_CHOOSE)).dimmed);\r
2289                 mReadingChoose.setIcon(((ToolIconPair)vToolIcons.get(IC_OPTION_CHOOSE)).active);\r
2290                 mReadingChoose.setName("mOptReadChos");\r
2291                 mOptionsReading.add(mReadingChoose);\r
2292                 mReadingCustomize.setMnemonic(java.awt.event.KeyEvent.VK_C);\r
2293                 mReadingCustomize.setText(cIDresources.getString("mOptTemplCustName"));\r
2294                 mReadingCustomize.setToolTipText(cIDresources.getString("mOptTemplCustTip"));\r
2295                 mReadingCustomize.setDisabledIcon(((ToolIconPair)vToolIcons.get(IC_OPTION_CUSTOMIZE)).dimmed);\r
2296                 mReadingCustomize.setIcon(((ToolIconPair)vToolIcons.get(IC_OPTION_CUSTOMIZE)).active);\r
2297                 mReadingCustomize.setName("mOptTemplCust");\r
2298                 mOptionsReading.add(mReadingCustomize);\r
2299                 mReadingPreferences.setMnemonic(java.awt.event.KeyEvent.VK_R);\r
2300                 mReadingPreferences.setText(cIDresources.getString("mOptReadPrefsName"));\r
2301                 mReadingPreferences.setToolTipText(cIDresources.getString("mOptReadPrefsTip"));\r
2302                 mReadingPreferences.setDisabledIcon(((ToolIconPair)vToolIcons.get(IC_OPTION_PREFERENCES)).dimmed);\r
2303                 mReadingPreferences.setIcon(((ToolIconPair)vToolIcons.get(IC_OPTION_PREFERENCES)).active);\r
2304                 mReadingPreferences.setName("mOptReadPrefs");\r
2305                 mOptionsReading.add(mReadingPreferences);\r
2306                 mOptions.add(mOptionsReading);\r
2307                 mOptionsPatterns.setMnemonic(java.awt.event.KeyEvent.VK_P);\r
2308                 mOptionsPatterns.setText(cIDresources.getString("mOptPatName"));\r
2309                 mOptionsPatterns.setToolTipText(cIDresources.getString("mOptPatTip"));\r
2310                 mOptionsPatterns.setDisabledIcon(((ToolIconPair)vToolIcons.get(IC_OPTION_CONFIG_PATTERNS)).dimmed);\r
2311                 mOptionsPatterns.setIcon(((ToolIconPair)vToolIcons.get(IC_OPTION_CONFIG_PATTERNS)).active);\r
2312                 mOptionsPatterns.setName("mOptPat");\r
2313                 mPatternsChoose.setMnemonic(java.awt.event.KeyEvent.VK_O);\r
2314                 mPatternsChoose.setText(cIDresources.getString("mOptPatChosName"));\r
2315                 mPatternsChoose.setToolTipText(cIDresources.getString("mOptPatChosTip"));\r
2316                 mPatternsChoose.setDisabledIcon(((ToolIconPair)vToolIcons.get(IC_OPTION_CHOOSE)).dimmed);\r
2317                 mPatternsChoose.setIcon(((ToolIconPair)vToolIcons.get(IC_OPTION_CHOOSE)).active);\r
2318                 mPatternsChoose.setName("mOptPatChos");\r
2319                 mOptionsPatterns.add(mPatternsChoose);\r
2320                 mPatternsCustomize.setMnemonic(java.awt.event.KeyEvent.VK_C);\r
2321                 mPatternsCustomize.setText(cIDresources.getString("mOptTemplCustName"));\r
2322                 mPatternsCustomize.setToolTipText(cIDresources.getString("mOptTemplCustTip"));\r
2323                 mPatternsCustomize.setDisabledIcon(((ToolIconPair)vToolIcons.get(IC_OPTION_CUSTOMIZE)).dimmed);\r
2324                 mPatternsCustomize.setIcon(((ToolIconPair)vToolIcons.get(IC_OPTION_CUSTOMIZE)).active);\r
2325                 mPatternsCustomize.setName("mOptTemplCust");\r
2326                 mOptionsPatterns.add(mPatternsCustomize);\r
2327                 mPatternsPreferences.setMnemonic(java.awt.event.KeyEvent.VK_R);\r
2328                 mPatternsPreferences.setText(cIDresources.getString("mOptPatPrefsName"));\r
2329                 mPatternsPreferences.setToolTipText(cIDresources.getString("mOptPatPrefsTip"));\r
2330                 mPatternsPreferences.setDisabledIcon(((ToolIconPair)vToolIcons.get(IC_OPTION_PREFERENCES)).dimmed);\r
2331                 mPatternsPreferences.setIcon(((ToolIconPair)vToolIcons.get(IC_OPTION_PREFERENCES)).active);\r
2332                 mPatternsPreferences.setName("mOptPatPrefs");\r
2333                 mOptionsPatterns.add(mPatternsPreferences);\r
2334                 mOptions.add(mOptionsPatterns);\r
2335                 mOptionsImages.setMnemonic(java.awt.event.KeyEvent.VK_I);\r
2336                 mOptionsImages.setText(cIDresources.getString("mOptImgName"));\r
2337                 mOptionsImages.setToolTipText(cIDresources.getString("mOptImgTip"));\r
2338                 mOptionsImages.setIcon(((ToolIconPair)vToolIcons.get(IC_IMAGES)).active);\r
2339                 mOptionsImages.setName("mOptImg");\r
2340                 mImgChoose.setMnemonic(java.awt.event.KeyEvent.VK_O);\r
2341                 mImgChoose.setText(cIDresources.getString("mOptImgChosName"));\r
2342                 mImgChoose.setToolTipText(cIDresources.getString("mOptImgChosTip"));\r
2343                 mImgChoose.setDisabledIcon(((ToolIconPair)vToolIcons.get(IC_OPTION_CHOOSE)).dimmed);\r
2344                 mImgChoose.setIcon(((ToolIconPair)vToolIcons.get(IC_OPTION_CHOOSE)).active);\r
2345                 mImgChoose.setName("mOptSwatChos");\r
2346                 mOptionsImages.add(mImgChoose);\r
2347                 mImgCustomize.setMnemonic(java.awt.event.KeyEvent.VK_C);\r
2348                 mImgCustomize.setText(cIDresources.getString("mOptTemplCustName"));\r
2349                 mImgCustomize.setToolTipText(cIDresources.getString("mOptTemplCustTip"));\r
2350                 mImgCustomize.setDisabledIcon(((ToolIconPair)vToolIcons.get(IC_OPTION_CUSTOMIZE)).dimmed);\r
2351                 mImgCustomize.setIcon(((ToolIconPair)vToolIcons.get(IC_OPTION_CUSTOMIZE)).active);\r
2352                 mImgCustomize.setName("mOptTemplCust");\r
2353                 mOptionsImages.add(mImgCustomize);\r
2354                 mImgPreferences.setMnemonic(java.awt.event.KeyEvent.VK_R);\r
2355                 mImgPreferences.setText(cIDresources.getString("mOptImgPrefsName"));\r
2356                 mImgPreferences.setToolTipText(cIDresources.getString("mOptImgPrefsTip"));\r
2357                 mImgPreferences.setDisabledIcon(((ToolIconPair)vToolIcons.get(IC_OPTION_PREFERENCES)).dimmed);\r
2358                 mImgPreferences.setIcon(((ToolIconPair)vToolIcons.get(IC_OPTION_PREFERENCES)).active);\r
2359                 mImgPreferences.setName("mOptSwatPrefs");\r
2360                 mOptionsImages.add(mImgPreferences);\r
2361                 mOptions.add(mOptionsImages);\r
2362                 mOptionsSwatches.setMnemonic(java.awt.event.KeyEvent.VK_W);\r
2363                 mOptionsSwatches.setText(cIDresources.getString("mOptSwatName"));\r
2364                 mOptionsSwatches.setToolTipText(cIDresources.getString("mOptSwatTip"));\r
2365                 mOptionsSwatches.setDisabledIcon(((ToolIconPair)vToolIcons.get(IC_OPTION_CONFIG_READING)).dimmed);\r
2366                 mOptionsSwatches.setIcon(((ToolIconPair)vToolIcons.get(IC_OPTION_CONFIG_SWATCHES)).active);\r
2367                 mOptionsSwatches.setName("mOptSwat");\r
2368                 mSwatchesChoose.setMnemonic(java.awt.event.KeyEvent.VK_O);\r
2369                 mSwatchesChoose.setText(cIDresources.getString("mOptSwatChosName"));\r
2370                 mSwatchesChoose.setToolTipText(cIDresources.getString("mOptSwatChosTip"));\r
2371                 mSwatchesChoose.setDisabledIcon(((ToolIconPair)vToolIcons.get(IC_OPTION_CHOOSE)).dimmed);\r
2372                 mSwatchesChoose.setIcon(((ToolIconPair)vToolIcons.get(IC_OPTION_CHOOSE)).active);\r
2373                 mSwatchesChoose.setName("mOptSwatChos");\r
2374                 mOptionsSwatches.add(mSwatchesChoose);\r
2375                 mSwatchesCustomize.setMnemonic(java.awt.event.KeyEvent.VK_C);\r
2376                 mSwatchesCustomize.setText(cIDresources.getString("mOptTemplCustName"));\r
2377                 mSwatchesCustomize.setToolTipText(cIDresources.getString("mOptTemplCustTip"));\r
2378                 mSwatchesCustomize.setDisabledIcon(((ToolIconPair)vToolIcons.get(IC_OPTION_CUSTOMIZE)).dimmed);\r
2379                 mSwatchesCustomize.setIcon(((ToolIconPair)vToolIcons.get(IC_OPTION_CUSTOMIZE)).active);\r
2380                 mSwatchesCustomize.setName("mOptTemplCust");\r
2381                 mOptionsSwatches.add(mSwatchesCustomize);\r
2382                 mSwatchesPreferences.setMnemonic(java.awt.event.KeyEvent.VK_R);\r
2383                 mSwatchesPreferences.setText(cIDresources.getString("mOptSwatPrefsName"));\r
2384                 mSwatchesPreferences.setToolTipText(cIDresources.getString("mOptSwatPrefsTip"));\r
2385                 mSwatchesPreferences.setDisabledIcon(((ToolIconPair)vToolIcons.get(IC_OPTION_PREFERENCES)).dimmed);\r
2386                 mSwatchesPreferences.setIcon(((ToolIconPair)vToolIcons.get(IC_OPTION_PREFERENCES)).active);\r
2387                 mSwatchesPreferences.setName("mOptSwatPrefs");\r
2388                 mOptionsSwatches.add(mSwatchesPreferences);\r
2389                 mOptions.add(mOptionsSwatches);\r
2390                 mOptionsDirected.setMnemonic(java.awt.event.KeyEvent.VK_I);\r
2391                 mOptionsDirected.setText(cIDresources.getString("mOptDirName"));\r
2392                 mOptionsDirected.setToolTipText(cIDresources.getString("mOptDirTip"));\r
2393                 mOptionsDirected.setDisabledIcon(((ToolIconPair)vToolIcons.get(IC_OPTION_CONFIG_DIRECTED)).dimmed);\r
2394                 mOptionsDirected.setIcon(((ToolIconPair)vToolIcons.get(IC_OPTION_CONFIG_DIRECTED)).active);\r
2395                 mOptionsDirected.setName("mOptDir");\r
2396                 mDirectedConnect.setAction(aConnect);\r
2397                 mDirectedConnect.setDisabledIcon(((ToolIconPair)vToolIcons.get(IC_CONNECT)).dimmed);\r
2398                 mDirectedConnect.setIcon(((ToolIconPair)vToolIcons.get(IC_CONNECT)).active);\r
2399                 mDirectedConnect.setName("ActConnect");\r
2400                 mOptionsDirected.add(mDirectedConnect);\r
2401                 mDirectedDisconnect.setAction(aDisconnect);\r
2402                 mDirectedDisconnect.setDisabledIcon(((ToolIconPair)vToolIcons.get(IC_DISCONNECT)).dimmed);\r
2403                 mDirectedDisconnect.setIcon(((ToolIconPair)vToolIcons.get(IC_DISCONNECT)).active);\r
2404                 mDirectedDisconnect.setName("ActDisc");\r
2405                 mOptionsDirected.add(mDirectedDisconnect);\r
2406                 mDirectedPreferences.setMnemonic(java.awt.event.KeyEvent.VK_R);\r
2407                 mDirectedPreferences.setText(cIDresources.getString("mOptDirPrefsName"));\r
2408                 mDirectedPreferences.setToolTipText(cIDresources.getString("mOptDirPrefsTip"));\r
2409                 mDirectedPreferences.setDisabledIcon(((ToolIconPair)vToolIcons.get(IC_OPTION_PREFERENCES)).dimmed);\r
2410                 mDirectedPreferences.setIcon(((ToolIconPair)vToolIcons.get(IC_OPTION_PREFERENCES)).active);\r
2411                 mDirectedPreferences.setName("mOptDirPrefs");\r
2412                 mOptionsDirected.add(mDirectedPreferences);\r
2413                 mOptions.add(mOptionsDirected);\r
2414                 mOptionsScripted.setMnemonic(java.awt.event.KeyEvent.VK_C);\r
2415                 mOptionsScripted.setText(cIDresources.getString("mOptScrName"));\r
2416                 mOptionsScripted.setToolTipText(cIDresources.getString("mOptScrTip"));\r
2417                 mOptionsScripted.setDisabledIcon(((ToolIconPair)vToolIcons.get(IC_OPTION_CONFIG_SCRIPT)).dimmed);\r
2418                 mOptionsScripted.setIcon(((ToolIconPair)vToolIcons.get(IC_OPTION_CONFIG_SCRIPT)).active);\r
2419                 mOptionsScripted.setName("mOptScr");\r
2420                 mOptionsScriptedChoose.setMnemonic(java.awt.event.KeyEvent.VK_O);\r
2421                 mOptionsScriptedChoose.setText(cIDresources.getString("mOptScrChosName"));\r
2422                 mOptionsScriptedChoose.setToolTipText(cIDresources.getString("mOptScrChosTip"));\r
2423                 mOptionsScriptedChoose.setDisabledIcon(((ToolIconPair)vToolIcons.get(IC_OPTION_CHOOSE)).dimmed);\r
2424                 mOptionsScriptedChoose.setIcon(((ToolIconPair)vToolIcons.get(IC_OPTION_CHOOSE)).active);\r
2425                 mOptionsScriptedChoose.setName("mOptScrChos");\r
2426                 mOptionsScripted.add(mOptionsScriptedChoose);\r
2427                 mOptionsScriptedPlay.setMnemonic(java.awt.event.KeyEvent.VK_Y);\r
2428                 mOptionsScriptedPlay.setAction(aPlay);\r
2429                 mOptionsScriptedPlay.setDisabledIcon(((ToolIconPair)vToolIcons.get(IC_PLAY)).dimmed);\r
2430                 mOptionsScriptedPlay.setIcon(((ToolIconPair)vToolIcons.get(IC_PLAY)).active);\r
2431                 mOptionsScriptedPlay.setName("ActPlay");\r
2432                 mOptionsScripted.add(mOptionsScriptedPlay);\r
2433                 mOptionsScriptedRecord.setAction(aRecord);\r
2434                 mOptionsScriptedRecord.setDisabledIcon(((ToolIconPair)vToolIcons.get(IC_RECORD)).dimmed);\r
2435                 mOptionsScriptedRecord.setName("ActRec");\r
2436                 mOptionsScripted.add(mOptionsScriptedRecord);\r
2437                 mOptionsScriptedPause.setAction(aPause);\r
2438                 mOptionsScriptedPause.setDisabledIcon(((ToolIconPair)vToolIcons.get(IC_PAUSE)).dimmed);\r
2439                 mOptionsScriptedPause.setIcon(((ToolIconPair)vToolIcons.get(IC_PAUSE)).active);\r
2440                 mOptionsScriptedPause.setName("ActPause");\r
2441                 mOptionsScripted.add(mOptionsScriptedPause);\r
2442                 mOptionsScriptedStop.setAction(aStop);\r
2443                 mOptionsScriptedStop.setDisabledIcon(((ToolIconPair)vToolIcons.get(IC_STOP)).dimmed);\r
2444                 mOptionsScriptedStop.setIcon(((ToolIconPair)vToolIcons.get(IC_STOP)).active);\r
2445                 mOptionsScriptedStop.setName("ActStop");\r
2446                 mOptionsScripted.add(mOptionsScriptedStop);\r
2447                 mOptionsScriptedPreferences.setText(cIDresources.getString("mOptScrPrefsName"));\r
2448                 mOptionsScriptedPreferences.setToolTipText(cIDresources.getString("mOptScrPrefsTip"));\r
2449                 mOptionsScriptedPreferences.setDisabledIcon(((ToolIconPair)vToolIcons.get(IC_OPTION_PREFERENCES)).dimmed);\r
2450                 mOptionsScriptedPreferences.setIcon(((ToolIconPair)vToolIcons.get(IC_OPTION_PREFERENCES)).active);\r
2451                 mOptionsScriptedPreferences.setName("mOptScrPrefs");\r
2452                 mOptionsScripted.add(mOptionsScriptedPreferences);\r
2453                 mOptions.add(mOptionsScripted);\r
2454                 mOptionsFilter.setMnemonic(java.awt.event.KeyEvent.VK_F);\r
2455                 mOptionsFilter.setText(cIDresources.getString("mOptFltName"));\r
2456                 mOptionsFilter.setToolTipText(cIDresources.getString("mOptFltTip"));\r
2457                 mOptionsFilter.setIcon(((ToolIconPair)vToolIcons.get(IC_FILTER_WINDOW)).active);\r
2458                 mOptionsFilter.setName("mOptFlt");\r
2459                 mFilterTemplate.setSelected(true);\r
2460                 mbgFilter.add(mFilterTemplate);\r
2461                 mFilterTemplate.setAction(aFilterTemplate);\r
2462                 mFilterTemplate.setName("ActFltTmpl");\r
2463                 mOptionsFilter.add(mFilterTemplate);\r
2464                 mbgFilter.add(mFilterWindow);\r
2465                 mFilterWindow.setAction(aFilterWindow);\r
2466                 mFilterWindow.setName("ActFltWin");\r
2467                 mOptionsFilter.add(mFilterWindow);\r
2468                 mbgFilter.add(mFilterScreen);\r
2469                 mFilterScreen.setAction(aFilterScreen);\r
2470                 mFilterScreen.setName("ActFltScr");\r
2471                 mOptionsFilter.add(mFilterScreen);\r
2472                 mOptions.add(mOptionsFilter);\r
2473                 mOptionsLanguage.setMnemonic(java.awt.event.KeyEvent.VK_L);\r
2474                 mOptionsLanguage.setText(cIDresources.getString("mOptLangName"));\r
2475                 mOptionsLanguage.setToolTipText(cIDresources.getString("mOptLangTip"));\r
2476                 mOptionsLanguage.setDisabledIcon(((ToolIconPair)vToolIcons.get(IC_LANGUAGE)).dimmed);\r
2477                 mOptionsLanguage.setIcon(((ToolIconPair)vToolIcons.get(IC_LANGUAGE)).active);\r
2478                 mOptionsLanguage.setName("mOptLang");\r
2479                 mLanguageDefault.setSelected(true);\r
2480                 mbgLanguage.add(mLanguageDefault);\r
2481                 mLanguageDefault.setAction(aLanguageDefault);\r
2482                 mLanguageDefault.setDisabledIcon(((ToolIconPair)vToolIcons.get(IC_LANG_DEFAULT)).dimmed);\r
2483                 mLanguageDefault.setIcon(((ToolIconPair)vToolIcons.get(IC_LANG_DEFAULT)).active);\r
2484                 mLanguageDefault.setName("ActLangDef");\r
2485                 mOptionsLanguage.add(mLanguageDefault);\r
2486                 mbgLanguage.add(mLanguageBritish);\r
2487                 mLanguageBritish.setAction(aLanguageBritish);\r
2488                 mLanguageBritish.setDisabledIcon(((ToolIconPair)vToolIcons.get(IC_LANG_BRITISH)).dimmed);\r
2489                 mLanguageBritish.setIcon(((ToolIconPair)vToolIcons.get(IC_LANG_BRITISH)).active);\r
2490                 mLanguageBritish.setName("ActLangBrit");\r
2491                 mOptionsLanguage.add(mLanguageBritish);\r
2492                 mbgLanguage.add(mLanguageFrench);\r
2493                 mLanguageFrench.setAction(aLanguageFrench);\r
2494                 mLanguageFrench.setDisabledIcon(((ToolIconPair)vToolIcons.get(IC_LANG_FRENCH)).dimmed);\r
2495                 mLanguageFrench.setIcon(((ToolIconPair)vToolIcons.get(IC_LANG_FRENCH)).active);\r
2496                 mLanguageFrench.setName("ActLangFr");\r
2497                 mOptionsLanguage.add(mLanguageFrench);\r
2498                 mbgLanguage.add(mLanguageSpanish);\r
2499                 mLanguageSpanish.setAction(aLanguageSpanish);\r
2500                 mLanguageSpanish.setDisabledIcon(((ToolIconPair)vToolIcons.get(IC_LANG_SPANISH)).dimmed);\r
2501                 mLanguageSpanish.setIcon(((ToolIconPair)vToolIcons.get(IC_LANG_SPANISH)).active);\r
2502                 mLanguageSpanish.setName("ActLangSpan");\r
2503                 mOptionsLanguage.add(mLanguageSpanish);\r
2504                 mbgLanguage.add(mLanguageGerman);\r
2505                 mLanguageGerman.setAction(aLanguageGerman);\r
2506                 mLanguageGerman.setDisabledIcon(((ToolIconPair)vToolIcons.get(IC_LANG_GERMAN)).dimmed);\r
2507                 mLanguageGerman.setIcon(((ToolIconPair)vToolIcons.get(IC_LANG_GERMAN)).active);\r
2508                 mLanguageGerman.setName("ActLangGer");\r
2509                 mOptionsLanguage.add(mLanguageGerman);\r
2510                 mbgLanguage.add(mLanguageArabicEgypt);\r
2511                 mLanguageArabicEgypt.setAction(aLanguageArabicEgypt);\r
2512                 mLanguageArabicEgypt.setDisabledIcon(((ToolIconPair)vToolIcons.get(IC_LANG_AR_EG)).dimmed);\r
2513                 mLanguageArabicEgypt.setIcon(((ToolIconPair)vToolIcons.get(IC_LANG_AR_EG)).active);\r
2514                 mLanguageArabicEgypt.setName("ActLangArEG");\r
2515                 mOptionsLanguage.add(mLanguageArabicEgypt);\r
2516                 mbgLanguage.add(mLanguageFarsiIran);\r
2517                 mLanguageFarsiIran.setAction(aLanguageFarsiIran);\r
2518                 mLanguageFarsiIran.setDisabledIcon(((ToolIconPair)vToolIcons.get(IC_LANG_FA_IR)).dimmed);\r
2519                 mLanguageFarsiIran.setIcon(((ToolIconPair)vToolIcons.get(IC_LANG_FA_IR)).active);\r
2520                 mLanguageFarsiIran.setName("ActLangFaIR");\r
2521                 mOptionsLanguage.add(mLanguageFarsiIran);\r
2522                 mbgLanguage.add(mLanguageHindiIndia);\r
2523                 mLanguageHindiIndia.setAction(aLanguageHindiIndia);\r
2524                 mLanguageHindiIndia.setDisabledIcon(((ToolIconPair)vToolIcons.get(IC_LANG_HI_IN)).dimmed);\r
2525                 mLanguageHindiIndia.setIcon(((ToolIconPair)vToolIcons.get(IC_LANG_HI_IN)).active);\r
2526                 mLanguageHindiIndia.setName("ActLangHiIN");\r
2527                 mOptionsLanguage.add(mLanguageHindiIndia);\r
2528                 mbgLanguage.add(mLanguageIndonesian);\r
2529                 mLanguageIndonesian.setAction(aLanguageIndonesian);\r
2530                 mLanguageIndonesian.setDisabledIcon(((ToolIconPair)vToolIcons.get(IC_LANG_IN)).dimmed);\r
2531                 mLanguageIndonesian.setIcon(((ToolIconPair)vToolIcons.get(IC_LANG_IN)).active);\r
2532                 mLanguageIndonesian.setName("ActLangIndonesian");\r
2533                 mOptionsLanguage.add(mLanguageIndonesian);\r
2534                 mbgLanguage.add(mLanguageJapanese);\r
2535                 mLanguageJapanese.setAction(aLanguageJapanese);\r
2536                 mLanguageJapanese.setDisabledIcon(((ToolIconPair)vToolIcons.get(IC_LANG_JA)).dimmed);\r
2537                 mLanguageJapanese.setIcon(((ToolIconPair)vToolIcons.get(IC_LANG_JA)).active);\r
2538                 mLanguageJapanese.setName("ActLangJapanese");\r
2539                 mOptionsLanguage.add(mLanguageJapanese);\r
2540                 mbgLanguage.add(mLanguageDutch);\r
2541                 mLanguageDutch.setAction(aLanguageDutch);\r
2542                 mLanguageDutch.setDisabledIcon(((ToolIconPair)vToolIcons.get(IC_LANG_NL)).dimmed);\r
2543                 mLanguageDutch.setIcon(((ToolIconPair)vToolIcons.get(IC_LANG_NL)).active);\r
2544                 mLanguageDutch.setName("ActLangDutch");\r
2545                 mOptionsLanguage.add(mLanguageDutch);\r
2546                 mbgLanguage.add(mLanguagePashto);\r
2547                 mLanguagePashto.setAction(aLanguagePashto);\r
2548                 mLanguagePashto.setDisabledIcon(((ToolIconPair)vToolIcons.get(IC_LANG_PS)).dimmed);\r
2549                 mLanguagePashto.setIcon(((ToolIconPair)vToolIcons.get(IC_LANG_PS)).active);\r
2550                 mLanguagePashto.setName("ActLangPashto");\r
2551                 mOptionsLanguage.add(mLanguagePashto);\r
2552                 mbgLanguage.add(mLanguagePortuguese);\r
2553                 mLanguagePortuguese.setAction(aLanguagePortuguese);\r
2554                 mLanguagePortuguese.setDisabledIcon(((ToolIconPair)vToolIcons.get(IC_LANG_PT)).dimmed);\r
2555                 mLanguagePortuguese.setIcon(((ToolIconPair)vToolIcons.get(IC_LANG_PT)).active);\r
2556                 mLanguagePortuguese.setName("ActLangPortuguese");\r
2557                 mOptionsLanguage.add(mLanguagePortuguese);\r
2558                 mbgLanguage.add(mLanguageRussian);\r
2559                 mLanguageRussian.setAction(aLanguageRussian);\r
2560                 mLanguageRussian.setDisabledIcon(((ToolIconPair)vToolIcons.get(IC_LANG_RU)).dimmed);\r
2561                 mLanguageRussian.setIcon(((ToolIconPair)vToolIcons.get(IC_LANG_RU)).active);\r
2562                 mLanguageRussian.setName("ActLangRussian");\r
2563                 mOptionsLanguage.add(mLanguageRussian);\r
2564                 mbgLanguage.add(mLanguageSwedish);\r
2565                 mLanguageSwedish.setAction(aLanguageSwedish);\r
2566                 mLanguageSwedish.setDisabledIcon(((ToolIconPair)vToolIcons.get(IC_LANG_SV)).dimmed);\r
2567                 mLanguageSwedish.setIcon(((ToolIconPair)vToolIcons.get(IC_LANG_SV)).active);\r
2568                 mLanguageSwedish.setName("ActLangSwedish");\r
2569                 mOptionsLanguage.add(mLanguageSwedish);\r
2570                 mbgLanguage.add(mLanguageUrdu);\r
2571                 mLanguageUrdu.setAction(aLanguageUrdu);\r
2572                 mLanguageUrdu.setDisabledIcon(((ToolIconPair)vToolIcons.get(IC_LANG_UR)).dimmed);\r
2573                 mLanguageUrdu.setIcon(((ToolIconPair)vToolIcons.get(IC_LANG_UR)).active);\r
2574                 mLanguageUrdu.setName("ActLangUrdu");\r
2575                 mOptionsLanguage.add(mLanguageUrdu);\r
2576                 mbgLanguage.add(mLanguageChinese);\r
2577                 mLanguageChinese.setAction(aLanguageChinese);\r
2578                 mLanguageChinese.setDisabledIcon(((ToolIconPair)vToolIcons.get(IC_LANG_ZH)).dimmed);\r
2579                 mLanguageChinese.setIcon(((ToolIconPair)vToolIcons.get(IC_LANG_ZH)).active);\r
2580                 mLanguageChinese.setName("ActLangChinese");\r
2581                 mOptionsLanguage.add(mLanguageChinese);\r
2582                 mOptions.add(mOptionsLanguage);\r
2583                 mOptionsToolbar.setMnemonic(java.awt.event.KeyEvent.VK_T);\r
2584                 mOptionsToolbar.setText(cIDresources.getString("mOptTbarName"));\r
2585                 mOptionsToolbar.setToolTipText(cIDresources.getString("mOptTbarTip"));\r
2586                 mOptionsToolbar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/org/tjworld/vista/cid/media/toolbars.gif")));\r
2587                 mOptionsToolbar.setName("mOptTbar");\r
2588                 mToolbarToolBar.setSelected(true);\r
2589                 mToolbarToolBar.setText(cIDresources.getString("mTbarTbarName"));\r
2590                 mToolbarToolBar.setToolTipText(cIDresources.getString("mTbarTbarTip"));\r
2591                 mToolbarToolBar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/org/tjworld/vista/cid/media/toolbars.gif")));\r
2592                 mToolbarToolBar.setName("mTbarTbar");\r
2593                 mToolbarToolBar.addActionListener(new java.awt.event.ActionListener() {\r
2594                         public void actionPerformed(java.awt.event.ActionEvent evt) {\r
2595                                 mToolbarToolBarActionPerformed(evt);\r
2596                         }\r
2597                 });\r
2598                 \r
2599                 mOptionsToolbar.add(mToolbarToolBar);\r
2600                 mOptionsToolbar.add(jSeparator1);\r
2601                 mToolbarProfile.setSelected(true);\r
2602                 mToolbarProfile.setText(cIDresources.getString("ActProName"));\r
2603                 mToolbarProfile.setIcon(((ToolIconPair)vToolIcons.get(IC_NEW)).active);\r
2604                 mToolbarProfile.setName("ActPro");\r
2605                 mToolbarProfile.addActionListener(new java.awt.event.ActionListener() {\r
2606                         public void actionPerformed(java.awt.event.ActionEvent evt) {\r
2607                                 mToolbarProfileActionPerformed(evt);\r
2608                         }\r
2609                 });\r
2610                 \r
2611                 mOptionsToolbar.add(mToolbarProfile);\r
2612                 mToolbarModel.setSelected(true);\r
2613                 mToolbarModel.setText(cIDresources.getString("mModName"));\r
2614                 mToolbarModel.setIcon(((ToolIconPair)vToolIcons.get(IC_1UP)).active);\r
2615                 mToolbarModel.setName("mMod");\r
2616                 mToolbarModel.addActionListener(new java.awt.event.ActionListener() {\r
2617                         public void actionPerformed(java.awt.event.ActionEvent evt) {\r
2618                                 mToolbarModelActionPerformed(evt);\r
2619                         }\r
2620                 });\r
2621                 \r
2622                 mOptionsToolbar.add(mToolbarModel);\r
2623                 mToolbarEyes.setSelected(true);\r
2624                 mToolbarEyes.setText(cIDresources.getString("mEyesName"));\r
2625                 mToolbarEyes.setIcon(((ToolIconPair)vToolIcons.get(IC_BOTH_EYES)).active);\r
2626                 mToolbarEyes.setName("mEyes");\r
2627                 mToolbarEyes.addActionListener(new java.awt.event.ActionListener() {\r
2628                         public void actionPerformed(java.awt.event.ActionEvent evt) {\r
2629                                 mToolbarEyesActionPerformed(evt);\r
2630                         }\r
2631                 });\r
2632                 \r
2633                 mOptionsToolbar.add(mToolbarEyes);\r
2634                 mToolbarTemplate.setSelected(true);\r
2635                 mToolbarTemplate.setText(cIDresources.getString("mTemplName"));\r
2636                 mToolbarTemplate.setIcon(((ToolIconPair)vToolIcons.get(IC_READING)).active);\r
2637                 mToolbarTemplate.setName("mTempl");\r
2638                 mToolbarTemplate.addActionListener(new java.awt.event.ActionListener() {\r
2639                         public void actionPerformed(java.awt.event.ActionEvent evt) {\r
2640                                 mToolbarTemplateActionPerformed(evt);\r
2641                         }\r
2642                 });\r
2643                 \r
2644                 mOptionsToolbar.add(mToolbarTemplate);\r
2645                 mToolbarColourModel.setSelected(true);\r
2646                 mToolbarColourModel.setText(cIDresources.getString("mColourModelName"));\r
2647                 mToolbarColourModel.setIcon(((ToolIconPair)vToolIcons.get(IC_RGB)).active);\r
2648                 mToolbarColourModel.setName("mColourModel");\r
2649                 mToolbarColourModel.addActionListener(new java.awt.event.ActionListener() {\r
2650                         public void actionPerformed(java.awt.event.ActionEvent evt) {\r
2651                                 mToolbarColourModelActionPerformed(evt);\r
2652                         }\r
2653                 });\r
2654                 \r
2655                 mOptionsToolbar.add(mToolbarColourModel);\r
2656                 mToolbarColourView.setSelected(true);\r
2657                 mToolbarColourView.setText(cIDresources.getString("mColourViewName"));\r
2658                 mToolbarColourView.setIcon(((ToolIconPair)vToolIcons.get(IC_WHEEL)).active);\r
2659                 mToolbarColourView.setName("mColourView");\r
2660                 mToolbarColourView.addActionListener(new java.awt.event.ActionListener() {\r
2661                         public void actionPerformed(java.awt.event.ActionEvent evt) {\r
2662                                 mToolbarColourViewActionPerformed(evt);\r
2663                         }\r
2664                 });\r
2665                 \r
2666                 mOptionsToolbar.add(mToolbarColourView);\r
2667                 mToolbarDirector.setSelected(true);\r
2668                 mToolbarDirector.setText(cIDresources.getString("mDirName"));\r
2669                 mToolbarDirector.setIcon(((ToolIconPair)vToolIcons.get(IC_MANUAL)).active);\r
2670                 mToolbarDirector.setName("mDir");\r
2671                 mToolbarDirector.addActionListener(new java.awt.event.ActionListener() {\r
2672                         public void actionPerformed(java.awt.event.ActionEvent evt) {\r
2673                                 mToolbarDirectorActionPerformed(evt);\r
2674                         }\r
2675                 });\r
2676                 \r
2677                 mOptionsToolbar.add(mToolbarDirector);\r
2678                 mToolbarConnection.setSelected(true);\r
2679                 mToolbarConnection.setText(cIDresources.getString("mConnectName"));\r
2680                 mToolbarConnection.setIcon(((ToolIconPair)vToolIcons.get(IC_CONNECT)).active);\r
2681                 mToolbarConnection.setName("mConnect");\r
2682                 mToolbarConnection.addActionListener(new java.awt.event.ActionListener() {\r
2683                         public void actionPerformed(java.awt.event.ActionEvent evt) {\r
2684                                 mToolbarConnectionActionPerformed(evt);\r
2685                         }\r
2686                 });\r
2687                 \r
2688                 mOptionsToolbar.add(mToolbarConnection);\r
2689                 mToolbarScript.setSelected(true);\r
2690                 mToolbarScript.setText(cIDresources.getString("ActScriptName"));\r
2691                 mToolbarScript.setIcon(((ToolIconPair)vToolIcons.get(IC_PLAY)).active);\r
2692                 mToolbarScript.setName("ActScript");\r
2693                 mToolbarScript.addActionListener(new java.awt.event.ActionListener() {\r
2694                         public void actionPerformed(java.awt.event.ActionEvent evt) {\r
2695                                 mToolbarScriptActionPerformed(evt);\r
2696                         }\r
2697                 });\r
2698                 \r
2699                 mOptionsToolbar.add(mToolbarScript);\r
2700                 mOptions.add(mOptionsToolbar);\r
2701                 mOptionsLandF.setMnemonic(java.awt.event.KeyEvent.VK_AMPERSAND);\r
2702                 mOptionsLandF.setText(cIDresources.getString("mOptLFName"));\r
2703                 mOptionsLandF.setToolTipText(cIDresources.getString("mOptLFTip"));\r
2704                 mOptionsLandF.setIcon(new javax.swing.ImageIcon(getClass().getResource("/org/tjworld/vista/cid/media/lookfeel.gif")));\r
2705                 mOptionsLandF.setName("mOptLF");\r
2706                 mOptions.add(mOptionsLandF);\r
2707                 mOptionsVistaDB.setMnemonic(java.awt.event.KeyEvent.VK_V);\r
2708                 mOptionsVistaDB.setText(cIDresources.getString("mOptVistaDBName"));\r
2709                 mOptionsVistaDB.setToolTipText(cIDresources.getString("mOptVistaDBTip"));\r
2710                 mOptionsVistaDB.setDisabledIcon(((ToolIconPair)vToolIcons.get(IC_OPTION_CONFIG_VISTA_DB)).dimmed);\r
2711                 mOptionsVistaDB.setIcon(((ToolIconPair)vToolIcons.get(IC_OPTION_CONFIG_VISTA_DB)).active);\r
2712                 mOptionsVistaDB.setName("mOptVistaDB");\r
2713                 mOptions.add(mOptionsVistaDB);\r
2714                 mOptions.add(mOptionsSeparator2);\r
2715                 mOptionsVistaWeb.setMnemonic(java.awt.event.KeyEvent.VK_W);\r
2716                 mOptionsVistaWeb.setSelected(true);\r
2717                 mOptionsVistaWeb.setText(cIDresources.getString("mOptDynName"));\r
2718                 mOptionsVistaWeb.setToolTipText(cIDresources.getString("mOptDynTip"));\r
2719                 mOptionsVistaWeb.setDisabledIcon(((ToolIconPair)vToolIcons.get(IC_OPTION_DYNAMIC_VISTA)).dimmed);\r
2720                 mOptionsVistaWeb.setIcon(((ToolIconPair)vToolIcons.get(IC_OPTION_DYNAMIC_VISTA)).active);\r
2721                 mOptionsVistaWeb.setName("mOptDyn");\r
2722                 mOptions.add(mOptionsVistaWeb);\r
2723                 mbMain.add(mOptions);\r
2724                 mHelp.setMnemonic(java.awt.event.KeyEvent.VK_H);\r
2725                 mHelp.setText(cIDresources.getString("mHelpName"));\r
2726                 mHelp.setName("mHelp");\r
2727                 mHelpContents.setAction(aHelpContents);\r
2728                 mHelpContents.setDisabledIcon(((ToolIconPair)vToolIcons.get(IC_HELP)).dimmed);\r
2729                 mHelpContents.setName("ActHelpCon");\r
2730                 mHelp.add(mHelpContents);\r
2731                 mHelpIndex.setMnemonic(java.awt.event.KeyEvent.VK_I);\r
2732                 mHelpIndex.setText(cIDresources.getString("mHelpIdxName"));\r
2733                 mHelpIndex.setToolTipText(cIDresources.getString("mHelpIdxTip"));\r
2734                 mHelpIndex.setDisabledIcon(((ToolIconPair)vToolIcons.get(IC_HELP_INDEX)).dimmed);\r
2735                 mHelpIndex.setIcon(((ToolIconPair)vToolIcons.get(IC_HELP_INDEX)).active);\r
2736                 mHelpIndex.setName("ActHelpIdx");\r
2737                 mHelpIndex.addActionListener(new java.awt.event.ActionListener() {\r
2738                         public void actionPerformed(java.awt.event.ActionEvent evt) {\r
2739                                 mHelpIndexActionPerformed(evt);\r
2740                         }\r
2741                 });\r
2742                 \r
2743                 mHelp.add(mHelpIndex);\r
2744                 mHelpSearch.setAction(aHelpSearch);\r
2745                 mHelpSearch.setDisabledIcon(((ToolIconPair)vToolIcons.get(IC_HELP_SEARCH)).dimmed);\r
2746                 mHelpSearch.setName("ActHelpSrc");\r
2747                 mHelp.add(mHelpSearch);\r
2748                 mHelpWebLink.setAction(aHelpWeb);\r
2749                 mHelpWebLink.setDisabledIcon(((ToolIconPair)vToolIcons.get(IC_HELP_WEB)).dimmed);\r
2750                 mHelpWebLink.setIcon(((ToolIconPair)vToolIcons.get(IC_HELP_WEB)).active);\r
2751                 mHelpWebLink.setName("ActHelpWeb");\r
2752                 mHelp.add(mHelpWebLink);\r
2753                 mHelp.add(mHelpSeparator1);\r
2754                 mHelpExplain.setMnemonic(java.awt.event.KeyEvent.VK_X);\r
2755                 mHelpExplain.setSelected(true);\r
2756                 mHelpExplain.setText(cIDresources.getString("mHelpExpName"));\r
2757                 mHelpExplain.setToolTipText(cIDresources.getString("mHelpExpTip"));\r
2758                 mHelpExplain.setDisabledIcon(((ToolIconPair)vToolIcons.get(IC_HELP_EXPLAIN)).dimmed);\r
2759                 mHelpExplain.setIcon(((ToolIconPair)vToolIcons.get(IC_HELP_EXPLAIN)).active);\r
2760                 mHelpExplain.setName("ActHelpExp");\r
2761                 mHelp.add(mHelpExplain);\r
2762                 mHelpDock.setMnemonic(java.awt.event.KeyEvent.VK_D);\r
2763                 mHelpDock.setText(cIDresources.getString("mHelpDockName"));\r
2764                 mHelpDock.setToolTipText(cIDresources.getString("mHelpDockTip"));\r
2765                 mHelpDock.setIcon(new javax.swing.ImageIcon(getClass().getResource("/org/tjworld/vista/cid/media/undocked.gif")));\r
2766                 mHelpDock.setSelectedIcon(new javax.swing.ImageIcon(getClass().getResource("/org/tjworld/vista/cid/media/docked.gif")));\r
2767                 mHelpDock.addActionListener(new java.awt.event.ActionListener() {\r
2768                         public void actionPerformed(java.awt.event.ActionEvent evt) {\r
2769                                 mHelpDockActionPerformed(evt);\r
2770                         }\r
2771                 });\r
2772                 \r
2773                 mHelp.add(mHelpDock);\r
2774                 mHelpFilter.setMnemonic(java.awt.event.KeyEvent.VK_V);\r
2775                 mHelpFilter.setText(cIDresources.getString("mHelpFilterName"));\r
2776                 mHelpFilter.setToolTipText(cIDresources.getString("mHelpFilterTip"));\r
2777                 mHelpFilter.setIcon(new javax.swing.ImageIcon(getClass().getResource("/org/tjworld/vista/cid/media/helpFilter.gif")));\r
2778                 mHelpFilter.addActionListener(new java.awt.event.ActionListener() {\r
2779                         public void actionPerformed(java.awt.event.ActionEvent evt) {\r
2780                                 mHelpFilterActionPerformed(evt);\r
2781                         }\r
2782                 });\r
2783                 \r
2784                 mHelp.add(mHelpFilter);\r
2785                 mHelp.add(mHelpSeparator2);\r
2786                 mHelpAbout.setMnemonic(java.awt.event.KeyEvent.VK_A);\r
2787                 mHelpAbout.setText(cIDresources.getString("mHelpAbtName"));\r
2788                 mHelpAbout.setToolTipText(cIDresources.getString("mHelpAbtTip"));\r
2789                 mHelpAbout.setDisabledIcon(((ToolIconPair)vToolIcons.get(IC_HELP_ABOUT)).dimmed);\r
2790                 mHelpAbout.setIcon(((ToolIconPair)vToolIcons.get(IC_HELP_ABOUT)).active);\r
2791                 mHelpAbout.setName("ActHelpAbt");\r
2792                 mHelpAbout.addActionListener(new java.awt.event.ActionListener() {\r
2793                         public void actionPerformed(java.awt.event.ActionEvent evt) {\r
2794                                 mHelpAboutActionPerformed(evt);\r
2795                         }\r
2796                 });\r
2797                 \r
2798                 mHelp.add(mHelpAbout);\r
2799                 mbMain.add(mHelp);\r
2800                 \r
2801                 setTitle(cIDresources.getString("tVistaAppTitle"));\r
2802                 setFont(new java.awt.Font("Dialog", 0, 12));\r
2803                 setIconImage(icVista.getImage());\r
2804                 setName("tVistaApp");\r
2805                 addComponentListener(new java.awt.event.ComponentAdapter() {\r
2806                         public void componentMoved(java.awt.event.ComponentEvent evt) {\r
2807                                 formComponentMoved(evt);\r
2808                         }\r
2809                 });\r
2810                 \r
2811                 addPropertyChangeListener(new java.beans.PropertyChangeListener() {\r
2812                         public void propertyChange(java.beans.PropertyChangeEvent evt) {\r
2813                                 formPropertyChange(evt);\r
2814                         }\r
2815                 });\r
2816                 \r
2817                 addWindowListener(new java.awt.event.WindowAdapter() {\r
2818                         public void windowClosing(java.awt.event.WindowEvent evt) {\r
2819                                 exitForm(evt);\r
2820                         }\r
2821                 });\r
2822                 \r
2823                 toolBar.setToolTipText(cIDresources.getString("tToolBarTip"));\r
2824                 toolBar.setName("tToolBar");\r
2825                 toolBar.addMouseListener(new java.awt.event.MouseAdapter() {\r
2826                         public void mousePressed(java.awt.event.MouseEvent evt) {\r
2827                                 toolBarMousePressed(evt);\r
2828                         }\r
2829                         public void mouseReleased(java.awt.event.MouseEvent evt) {\r
2830                                 toolBarMouseReleased(evt);\r
2831                         }\r
2832                 });\r
2833                 \r
2834                 pProfile.setLayout(new javax.swing.BoxLayout(pProfile, javax.swing.BoxLayout.X_AXIS));\r
2835                 \r
2836                 btnNew.setToolTipText(cIDresources.getString("ActNewTip"));\r
2837                 btnNew.setAction(aNew);\r
2838                 btnNew.setDisabledIcon(((ToolIconPair)vToolIcons.get(IC_NEW)).dimmed);\r
2839                 btnNew.setName("ActNew");\r
2840                 btnNew.addMouseListener(new java.awt.event.MouseAdapter() {\r
2841                         public void mouseExited(java.awt.event.MouseEvent evt) {\r
2842                                 toolBarBtnMouseExited(evt);\r
2843                         }\r
2844                         public void mouseEntered(java.awt.event.MouseEvent evt) {\r
2845                                 toolBarBtnMouseEntered(evt);\r
2846                         }\r
2847                 });\r
2848                 \r
2849                 pProfile.add(btnNew);\r
2850                 \r
2851                 btnOpenFile.setToolTipText(cIDresources.getString("ActOpenTip"));\r
2852                 btnOpenFile.setAction(aOpen);\r
2853                 btnOpenFile.setDisabledIcon(((ToolIconPair)vToolIcons.get(IC_OPEN_FILE)).dimmed);\r
2854                 btnOpenFile.setName("ActOpen");\r
2855                 btnOpenFile.addMouseListener(new java.awt.event.MouseAdapter() {\r
2856                         public void mouseExited(java.awt.event.MouseEvent evt) {\r
2857                                 toolBarBtnMouseExited(evt);\r
2858                         }\r
2859                         public void mouseEntered(java.awt.event.MouseEvent evt) {\r
2860                                 toolBarBtnMouseEntered(evt);\r
2861                         }\r
2862                 });\r
2863                 \r
2864                 pProfile.add(btnOpenFile);\r
2865                 \r
2866                 btnSave.setToolTipText(cIDresources.getString("ActSaveTip"));\r
2867                 btnSave.setAction(aSave);\r
2868                 btnSave.setDisabledIcon(((ToolIconPair)vToolIcons.get(IC_SAVE)).dimmed);\r
2869                 btnSave.setName("ActSave");\r
2870                 btnSave.addMouseListener(new java.awt.event.MouseAdapter() {\r
2871                         public void mouseExited(java.awt.event.MouseEvent evt) {\r
2872                                 toolBarBtnMouseExited(evt);\r
2873                         }\r
2874                         public void mouseEntered(java.awt.event.MouseEvent evt) {\r
2875                                 toolBarBtnMouseEntered(evt);\r
2876                         }\r
2877                 });\r
2878                 \r
2879                 pProfile.add(btnSave);\r
2880                 \r
2881                 btnSendToVistaDB.setToolTipText(cIDresources.getString("ActSendToVistaTip"));\r
2882                 btnSendToVistaDB.setAction(aSendToVistaDB);\r
2883                 btnSendToVistaDB.setDisabledIcon(((ToolIconPair)vToolIcons.get(IC_SEND_TO_VISTA_DB)).dimmed);\r
2884                 btnSendToVistaDB.setName("ActSendToVista");\r
2885                 btnSendToVistaDB.addMouseListener(new java.awt.event.MouseAdapter() {\r
2886                         public void mouseExited(java.awt.event.MouseEvent evt) {\r
2887                                 toolBarBtnMouseExited(evt);\r
2888                         }\r
2889                         public void mouseEntered(java.awt.event.MouseEvent evt) {\r
2890                                 toolBarBtnMouseEntered(evt);\r
2891                         }\r
2892                 });\r
2893                 \r
2894                 pProfile.add(btnSendToVistaDB);\r
2895                 \r
2896                 toolBar.add(pProfile);\r
2897                 \r
2898                 pModel.setLayout(new javax.swing.BoxLayout(pModel, javax.swing.BoxLayout.X_AXIS));\r
2899                 \r
2900                 toolBar.addSeparator();\r
2901                 btn1Up.setSelected(true);\r
2902                 btn1Up.setToolTipText(cIDresources.getString("Act1UpTip"));\r
2903                 tbgModelAlgorithm.add(btn1Up);\r
2904                 btn1Up.setAction(a1_Up);\r
2905                 btn1Up.setDisabledIcon(((ToolIconPair)vToolIcons.get(IC_1UP)).dimmed);\r
2906                 btn1Up.setName("Act1Up");\r
2907                 btn1Up.setSelectedIcon(new javax.swing.ImageIcon(getClass().getResource("/org/tjworld/vista/cid/media/sel1up.gif")));\r
2908                 btn1Up.addMouseListener(new java.awt.event.MouseAdapter() {\r
2909                         public void mouseExited(java.awt.event.MouseEvent evt) {\r
2910                                 toolBarBtnMouseExited(evt);\r
2911                         }\r
2912                         public void mouseEntered(java.awt.event.MouseEvent evt) {\r
2913                                 toolBarBtnMouseEntered(evt);\r
2914                         }\r
2915                 });\r
2916                 \r
2917                 pModel.add(btn1Up);\r
2918                 \r
2919                 btn2Up.setToolTipText(cIDresources.getString("Act2UpTip"));\r
2920                 tbgModelAlgorithm.add(btn2Up);\r
2921                 btn2Up.setAction(a2_Up);\r
2922                 btn2Up.setDisabledIcon(((ToolIconPair)vToolIcons.get(IC_2UP)).dimmed);\r
2923                 btn2Up.setName("Act2Up");\r
2924                 btn2Up.setSelectedIcon(new javax.swing.ImageIcon(getClass().getResource("/org/tjworld/vista/cid/media/sel2up.gif")));\r
2925                 btn2Up.addMouseListener(new java.awt.event.MouseAdapter() {\r
2926                         public void mouseExited(java.awt.event.MouseEvent evt) {\r
2927                                 toolBarBtnMouseExited(evt);\r
2928                         }\r
2929                         public void mouseEntered(java.awt.event.MouseEvent evt) {\r
2930                                 toolBarBtnMouseEntered(evt);\r
2931                         }\r
2932                 });\r
2933                 \r
2934                 pModel.add(btn2Up);\r
2935                 \r
2936                 btnAlternate.setToolTipText(cIDresources.getString("ActAltTip"));\r
2937                 tbgModelAlgorithm.add(btnAlternate);\r
2938                 btnAlternate.setAction(aAlternate);\r
2939                 btnAlternate.setDisabledIcon(((ToolIconPair)vToolIcons.get(IC_ALTERNATE)).dimmed);\r
2940                 btnAlternate.setName("ActAlt");\r
2941                 btnAlternate.setSelectedIcon(new javax.swing.ImageIcon(getClass().getResource("/org/tjworld/vista/cid/media/selalternate.gif")));\r
2942                 btnAlternate.addMouseListener(new java.awt.event.MouseAdapter() {\r
2943                         public void mouseExited(java.awt.event.MouseEvent evt) {\r
2944                                 toolBarBtnMouseExited(evt);\r
2945                         }\r
2946                         public void mouseEntered(java.awt.event.MouseEvent evt) {\r
2947                                 toolBarBtnMouseEntered(evt);\r
2948                         }\r
2949                 });\r
2950                 \r
2951                 pModel.add(btnAlternate);\r
2952                 \r
2953                 toolBar.add(pModel);\r
2954                 \r
2955                 pEyes.setLayout(new javax.swing.BoxLayout(pEyes, javax.swing.BoxLayout.X_AXIS));\r
2956                 \r
2957                 toolBar.addSeparator();\r
2958                 btnEyes2.setSelected(true);\r
2959                 btnEyes2.setToolTipText(cIDresources.getString("ActBothEyesTip"));\r
2960                 tbgModelEyes.add(btnEyes2);\r
2961                 btnEyes2.setAction(aBothEyes);\r
2962                 btnEyes2.setDisabledIcon(((ToolIconPair)vToolIcons.get(IC_BOTH_EYES)).dimmed);\r
2963                 btnEyes2.setName("ActBothEyes");\r
2964                 btnEyes2.setSelectedIcon(new javax.swing.ImageIcon(getClass().getResource("/org/tjworld/vista/cid/media/seleyes2.gif")));\r
2965                 btnEyes2.addMouseListener(new java.awt.event.MouseAdapter() {\r
2966                         public void mouseExited(java.awt.event.MouseEvent evt) {\r
2967                                 toolBarBtnMouseExited(evt);\r
2968                         }\r
2969                         public void mouseEntered(java.awt.event.MouseEvent evt) {\r
2970                                 toolBarBtnMouseEntered(evt);\r
2971                         }\r
2972                 });\r
2973                 \r
2974                 pEyes.add(btnEyes2);\r
2975                 \r
2976                 btnEyes1.setToolTipText(cIDresources.getString("ActSepEyesTip"));\r
2977                 tbgModelEyes.add(btnEyes1);\r
2978                 btnEyes1.setAction(aSeparateEyes);\r
2979                 btnEyes1.setDisabledIcon(((ToolIconPair)vToolIcons.get(IC_SEPARATE_EYES)).dimmed);\r
2980                 btnEyes1.setName("ActSepEyes");\r
2981                 btnEyes1.setSelectedIcon(new javax.swing.ImageIcon(getClass().getResource("/org/tjworld/vista/cid/media/seleyes1.gif")));\r
2982                 btnEyes1.addMouseListener(new java.awt.event.MouseAdapter() {\r
2983                         public void mouseExited(java.awt.event.MouseEvent evt) {\r
2984                                 toolBarBtnMouseExited(evt);\r
2985                         }\r
2986                         public void mouseEntered(java.awt.event.MouseEvent evt) {\r
2987                                 toolBarBtnMouseEntered(evt);\r
2988                         }\r
2989                 });\r
2990                 \r
2991                 pEyes.add(btnEyes1);\r
2992                 \r
2993                 toolBar.add(pEyes);\r
2994                 \r
2995                 pTemplate.setLayout(new javax.swing.BoxLayout(pTemplate, javax.swing.BoxLayout.X_AXIS));\r
2996                 \r
2997                 toolBar.addSeparator();\r
2998                 btnReading.setSelected(true);\r
2999                 btnReading.setToolTipText(cIDresources.getString("ActReadTip"));\r
3000                 tbgTemplate.add(btnReading);\r
3001                 btnReading.setAction(aReading);\r
3002                 btnReading.setDisabledIcon(((ToolIconPair)vToolIcons.get(IC_READING)).dimmed);\r
3003                 btnReading.setName("ActRead");\r
3004                 btnReading.setSelectedIcon(new javax.swing.ImageIcon(getClass().getResource("/org/tjworld/vista/cid/media/selreading.gif")));\r
3005                 btnReading.addMouseListener(new java.awt.event.MouseAdapter() {\r
3006                         public void mouseExited(java.awt.event.MouseEvent evt) {\r
3007                                 toolBarBtnMouseExited(evt);\r
3008                         }\r
3009                         public void mouseEntered(java.awt.event.MouseEvent evt) {\r
3010                                 toolBarBtnMouseEntered(evt);\r
3011                         }\r
3012                 });\r
3013                 \r
3014                 pTemplate.add(btnReading);\r
3015                 \r
3016                 btnPatterns.setToolTipText(cIDresources.getString("ActPatTip"));\r
3017                 tbgTemplate.add(btnPatterns);\r
3018                 btnPatterns.setAction(aPatterns);\r
3019                 btnPatterns.setDisabledIcon(((ToolIconPair)vToolIcons.get(IC_PATTERNS)).dimmed);\r
3020                 btnPatterns.setName("ActPat");\r
3021                 btnPatterns.setSelectedIcon(new javax.swing.ImageIcon(getClass().getResource("/org/tjworld/vista/cid/media/selpatterns.gif")));\r
3022                 btnPatterns.addMouseListener(new java.awt.event.MouseAdapter() {\r
3023                         public void mouseExited(java.awt.event.MouseEvent evt) {\r
3024                                 toolBarBtnMouseExited(evt);\r
3025                         }\r
3026                         public void mouseEntered(java.awt.event.MouseEvent evt) {\r
3027                                 toolBarBtnMouseEntered(evt);\r
3028                         }\r
3029                 });\r
3030                 \r
3031                 pTemplate.add(btnPatterns);\r
3032                 \r
3033                 tbgTemplate.add(btnImages);\r
3034                 btnImages.setAction(aImages);\r
3035                 btnImages.setDisabledIcon(((ToolIconPair)vToolIcons.get(IC_IMAGES)).dimmed);\r
3036                 btnImages.setName("ActImages");\r
3037                 btnImages.setSelectedIcon(new javax.swing.ImageIcon(getClass().getResource("/org/tjworld/vista/cid/media/selimages.gif")));\r
3038                 btnImages.addMouseListener(new java.awt.event.MouseAdapter() {\r
3039                         public void mouseExited(java.awt.event.MouseEvent evt) {\r
3040                                 toolBarBtnMouseExited(evt);\r
3041                         }\r
3042                         public void mouseEntered(java.awt.event.MouseEvent evt) {\r
3043                                 toolBarBtnMouseEntered(evt);\r
3044                         }\r
3045                 });\r
3046                 \r
3047                 pTemplate.add(btnImages);\r
3048                 \r
3049                 toolBar.add(pTemplate);\r
3050                 \r
3051                 pColourModel.setLayout(new javax.swing.BoxLayout(pColourModel, javax.swing.BoxLayout.X_AXIS));\r
3052                 \r
3053                 toolBar.addSeparator();\r
3054                 btnRGB.setToolTipText(cIDresources.getString("ActRGBTip"));\r
3055                 tbgColourModel.add(btnRGB);\r
3056                 btnRGB.setAction(aRGB);\r
3057                 btnRGB.setDisabledIcon(((ToolIconPair)vToolIcons.get(IC_RGB)).dimmed);\r
3058                 btnRGB.setName("ActRGB");\r
3059                 btnRGB.setSelectedIcon(new javax.swing.ImageIcon(getClass().getResource("/org/tjworld/vista/cid/media/selrgb.gif")));\r
3060                 btnRGB.addMouseListener(new java.awt.event.MouseAdapter() {\r
3061                         public void mouseExited(java.awt.event.MouseEvent evt) {\r
3062                                 toolBarBtnMouseExited(evt);\r
3063                         }\r
3064                         public void mouseEntered(java.awt.event.MouseEvent evt) {\r
3065                                 toolBarBtnMouseEntered(evt);\r
3066                         }\r
3067                 });\r
3068                 \r
3069                 pColourModel.add(btnRGB);\r
3070                 \r
3071                 btnHSB.setSelected(true);\r
3072                 btnHSB.setToolTipText(cIDresources.getString("ActHSBTip"));\r
3073                 tbgColourModel.add(btnHSB);\r
3074                 btnHSB.setAction(aHSB);\r
3075                 btnHSB.setDisabledIcon(((ToolIconPair)vToolIcons.get(IC_HSB)).dimmed);\r
3076                 btnHSB.setName("ActHSB");\r
3077                 btnHSB.setSelectedIcon(new javax.swing.ImageIcon(getClass().getResource("/org/tjworld/vista/cid/media/selhsb.gif")));\r
3078                 btnHSB.addMouseListener(new java.awt.event.MouseAdapter() {\r
3079                         public void mouseExited(java.awt.event.MouseEvent evt) {\r
3080                                 toolBarBtnMouseExited(evt);\r
3081                         }\r
3082                         public void mouseEntered(java.awt.event.MouseEvent evt) {\r
3083                                 toolBarBtnMouseEntered(evt);\r
3084                         }\r
3085                 });\r
3086                 \r
3087                 pColourModel.add(btnHSB);\r
3088                 \r
3089                 btnCYMK.setToolTipText(cIDresources.getString("ActCYMKTip"));\r
3090                 tbgColourModel.add(btnCYMK);\r
3091                 btnCYMK.setAction(aCYMK);\r
3092                 btnCYMK.setDisabledIcon(((ToolIconPair)vToolIcons.get(IC_CYMK)).dimmed);\r
3093                 btnCYMK.setName("ActCYMK");\r
3094                 btnCYMK.setSelectedIcon(new javax.swing.ImageIcon(getClass().getResource("/org/tjworld/vista/cid/media/selcymk.gif")));\r
3095                 btnCYMK.addMouseListener(new java.awt.event.MouseAdapter() {\r
3096                         public void mouseExited(java.awt.event.MouseEvent evt) {\r
3097                                 toolBarBtnMouseExited(evt);\r
3098                         }\r
3099                         public void mouseEntered(java.awt.event.MouseEvent evt) {\r
3100                                 toolBarBtnMouseEntered(evt);\r
3101                         }\r
3102                 });\r
3103                 \r
3104                 pColourModel.add(btnCYMK);\r
3105                 \r
3106                 toolBar.add(pColourModel);\r
3107                 \r
3108                 pColourView.setLayout(new javax.swing.BoxLayout(pColourView, javax.swing.BoxLayout.X_AXIS));\r
3109                 \r
3110                 toolBar.addSeparator();\r
3111                 btnWheel.setToolTipText(cIDresources.getString("ActWheelTip"));\r
3112                 tbgColourView.add(btnWheel);\r
3113                 btnWheel.setAction(aWheel);\r
3114                 btnWheel.setDisabledIcon(((ToolIconPair)vToolIcons.get(IC_WHEEL)).dimmed);\r
3115                 btnWheel.setName("ActWheel");\r
3116                 btnWheel.setSelectedIcon(new javax.swing.ImageIcon(getClass().getResource("/org/tjworld/vista/cid/media/selwheel.gif")));\r
3117                 btnWheel.addMouseListener(new java.awt.event.MouseAdapter() {\r
3118                         public void mouseExited(java.awt.event.MouseEvent evt) {\r
3119                                 toolBarBtnMouseExited(evt);\r
3120                         }\r
3121                         public void mouseEntered(java.awt.event.MouseEvent evt) {\r
3122                                 toolBarBtnMouseEntered(evt);\r
3123                         }\r
3124                 });\r
3125                 \r
3126                 pColourView.add(btnWheel);\r
3127                 \r
3128                 btnTriangle.setToolTipText(cIDresources.getString("ActTriTip"));\r
3129                 tbgColourView.add(btnTriangle);\r
3130                 btnTriangle.setAction(aTriangle);\r
3131                 btnTriangle.setDisabledIcon(((ToolIconPair)vToolIcons.get(IC_TRIANGLE)).dimmed);\r
3132                 btnTriangle.setName("ActTri");\r
3133                 btnTriangle.setSelectedIcon(new javax.swing.ImageIcon(getClass().getResource("/org/tjworld/vista/cid/media/seltriangle.gif")));\r
3134                 btnTriangle.addMouseListener(new java.awt.event.MouseAdapter() {\r
3135                         public void mouseExited(java.awt.event.MouseEvent evt) {\r
3136                                 toolBarBtnMouseExited(evt);\r
3137                         }\r
3138                         public void mouseEntered(java.awt.event.MouseEvent evt) {\r
3139                                 toolBarBtnMouseEntered(evt);\r
3140                         }\r
3141                 });\r
3142                 \r
3143                 pColourView.add(btnTriangle);\r
3144                 \r
3145                 btnQube.setToolTipText(cIDresources.getString("ActQubeTip"));\r
3146                 tbgColourView.add(btnQube);\r
3147                 btnQube.setAction(aQube);\r
3148                 btnQube.setDisabledIcon(((ToolIconPair)vToolIcons.get(IC_QUBE)).dimmed);\r
3149                 btnQube.setName("ActQube");\r
3150                 btnQube.setSelectedIcon(new javax.swing.ImageIcon(getClass().getResource("/org/tjworld/vista/cid/media/selqube.gif")));\r
3151                 btnQube.addMouseListener(new java.awt.event.MouseAdapter() {\r
3152                         public void mouseExited(java.awt.event.MouseEvent evt) {\r
3153                                 toolBarBtnMouseExited(evt);\r
3154                         }\r
3155                         public void mouseEntered(java.awt.event.MouseEvent evt) {\r
3156                                 toolBarBtnMouseEntered(evt);\r
3157                         }\r
3158                 });\r
3159                 \r
3160                 pColourView.add(btnQube);\r
3161                 \r
3162                 btnSystemChooser.setSelected(true);\r
3163                 btnSystemChooser.setToolTipText(cIDresources.getString("ActSysColTip"));\r
3164                 tbgColourView.add(btnSystemChooser);\r
3165                 btnSystemChooser.setAction(aColorChooser);\r
3166                 btnSystemChooser.setDisabledIcon(((ToolIconPair)vToolIcons.get(IC_COLOR_CHOOSER)).dimmed);\r
3167                 btnSystemChooser.setName("ActSysCol");\r
3168                 btnSystemChooser.setSelectedIcon(new javax.swing.ImageIcon(getClass().getResource("/org/tjworld/vista/cid/media/selsysColour.gif")));\r
3169                 btnSystemChooser.addMouseListener(new java.awt.event.MouseAdapter() {\r
3170                         public void mouseExited(java.awt.event.MouseEvent evt) {\r
3171                                 toolBarBtnMouseExited(evt);\r
3172                         }\r
3173                         public void mouseEntered(java.awt.event.MouseEvent evt) {\r
3174                                 toolBarBtnMouseEntered(evt);\r
3175                         }\r
3176                 });\r
3177                 \r
3178                 pColourView.add(btnSystemChooser);\r
3179                 \r
3180                 btnSwatches.setToolTipText(cIDresources.getString("ActSwatchTip"));\r
3181                 tbgColourView.add(btnSwatches);\r
3182                 btnSwatches.setAction(aSwatches);\r
3183                 btnSwatches.setDisabledIcon(((ToolIconPair)vToolIcons.get(IC_SWATCHES)).dimmed);\r
3184                 btnSwatches.setName("ActSwatch");\r
3185                 btnSwatches.setSelectedIcon(new javax.swing.ImageIcon(getClass().getResource("/org/tjworld/vista/cid/media/selswatches.gif")));\r
3186                 btnSwatches.addMouseListener(new java.awt.event.MouseAdapter() {\r
3187                         public void mouseExited(java.awt.event.MouseEvent evt) {\r
3188                                 toolBarBtnMouseExited(evt);\r
3189                         }\r
3190                         public void mouseEntered(java.awt.event.MouseEvent evt) {\r
3191                                 toolBarBtnMouseEntered(evt);\r
3192                         }\r
3193                 });\r
3194                 \r
3195                 pColourView.add(btnSwatches);\r
3196                 \r
3197                 toolBar.add(pColourView);\r
3198                 \r
3199                 pDirector.setLayout(new javax.swing.BoxLayout(pDirector, javax.swing.BoxLayout.X_AXIS));\r
3200                 \r
3201                 toolBar.addSeparator();\r
3202                 btnManual.setSelected(true);\r
3203                 btnManual.setToolTipText(cIDresources.getString("ActManualTip"));\r
3204                 tbgDirection.add(btnManual);\r
3205                 btnManual.setAction(aManual);\r
3206                 btnManual.setDisabledIcon(((ToolIconPair)vToolIcons.get(IC_MANUAL)).dimmed);\r
3207                 btnManual.setName("ActManual");\r
3208                 btnManual.setSelectedIcon(new javax.swing.ImageIcon(getClass().getResource("/org/tjworld/vista/cid/media/selmanual.gif")));\r
3209                 btnManual.addMouseListener(new java.awt.event.MouseAdapter() {\r
3210                         public void mouseExited(java.awt.event.MouseEvent evt) {\r
3211                                 toolBarBtnMouseExited(evt);\r
3212                         }\r
3213                         public void mouseEntered(java.awt.event.MouseEvent evt) {\r
3214                                 toolBarBtnMouseEntered(evt);\r
3215                         }\r
3216                 });\r
3217                 \r
3218                 pDirector.add(btnManual);\r
3219                 \r
3220                 btnAuto.setToolTipText(cIDresources.getString("ActAutoTip"));\r
3221                 tbgDirection.add(btnAuto);\r
3222                 btnAuto.setAction(aAuto);\r
3223                 btnAuto.setDisabledIcon(((ToolIconPair)vToolIcons.get(IC_AUTO)).dimmed);\r
3224                 btnAuto.setName("ActAuto");\r
3225                 btnAuto.setSelectedIcon(new javax.swing.ImageIcon(getClass().getResource("/org/tjworld/vista/cid/media/selauto.gif")));\r
3226                 btnAuto.addMouseListener(new java.awt.event.MouseAdapter() {\r
3227                         public void mouseExited(java.awt.event.MouseEvent evt) {\r
3228                                 toolBarBtnMouseExited(evt);\r
3229                         }\r
3230                         public void mouseEntered(java.awt.event.MouseEvent evt) {\r
3231                                 toolBarBtnMouseEntered(evt);\r
3232                         }\r
3233                 });\r
3234                 \r
3235                 pDirector.add(btnAuto);\r
3236                 \r
3237                 btnDirected.setToolTipText(cIDresources.getString("ActDirectTip"));\r
3238                 tbgDirection.add(btnDirected);\r
3239                 btnDirected.setAction(aDirected);\r
3240                 btnDirected.setDisabledIcon(((ToolIconPair)vToolIcons.get(IC_DIRECTED)).dimmed);\r
3241                 btnDirected.setName("ActDirect");\r
3242                 btnDirected.setSelectedIcon(new javax.swing.ImageIcon(getClass().getResource("/org/tjworld/vista/cid/media/seldirected.gif")));\r
3243                 btnDirected.addMouseListener(new java.awt.event.MouseAdapter() {\r
3244                         public void mouseExited(java.awt.event.MouseEvent evt) {\r
3245                                 toolBarBtnMouseExited(evt);\r
3246                         }\r
3247                         public void mouseEntered(java.awt.event.MouseEvent evt) {\r
3248                                 toolBarBtnMouseEntered(evt);\r
3249                         }\r
3250                 });\r
3251                 \r
3252                 pDirector.add(btnDirected);\r
3253                 \r
3254                 btnScript.setToolTipText(cIDresources.getString("ActScriptTip"));\r
3255                 tbgDirection.add(btnScript);\r
3256                 btnScript.setAction(aScript);\r
3257                 btnScript.setDisabledIcon(((ToolIconPair)vToolIcons.get(IC_SCRIPT)).dimmed);\r
3258                 btnScript.setName("ActScript");\r
3259                 btnScript.setSelectedIcon(new javax.swing.ImageIcon(getClass().getResource("/org/tjworld/vista/cid/media/selscript.gif")));\r
3260                 btnScript.addMouseListener(new java.awt.event.MouseAdapter() {\r
3261                         public void mouseExited(java.awt.event.MouseEvent evt) {\r
3262                                 toolBarBtnMouseExited(evt);\r
3263                         }\r
3264                         public void mouseEntered(java.awt.event.MouseEvent evt) {\r
3265                                 toolBarBtnMouseEntered(evt);\r
3266                         }\r
3267                 });\r
3268                 \r
3269                 pDirector.add(btnScript);\r
3270                 \r
3271                 toolBar.add(pDirector);\r
3272                 \r
3273                 pConnection.setLayout(new javax.swing.BoxLayout(pConnection, javax.swing.BoxLayout.X_AXIS));\r
3274                 \r
3275                 toolBar.addSeparator();\r
3276                 btnConnect.setToolTipText(cIDresources.getString("ActConnectTip"));\r
3277                 tbgConnection.add(btnConnect);\r
3278                 btnConnect.setAction(aConnect);\r
3279                 btnConnect.setDisabledIcon(((ToolIconPair)vToolIcons.get(IC_CONNECT)).dimmed);\r
3280                 btnConnect.setName("ActConnect");\r
3281                 btnConnect.setSelectedIcon(new javax.swing.ImageIcon(getClass().getResource("/org/tjworld/vista/cid/media/selconnect.gif")));\r
3282                 btnConnect.addMouseListener(new java.awt.event.MouseAdapter() {\r
3283                         public void mouseExited(java.awt.event.MouseEvent evt) {\r
3284                                 toolBarBtnMouseExited(evt);\r
3285                         }\r
3286                         public void mouseEntered(java.awt.event.MouseEvent evt) {\r
3287                                 toolBarBtnMouseEntered(evt);\r
3288                         }\r
3289                 });\r
3290                 \r
3291                 pConnection.add(btnConnect);\r
3292                 \r
3293                 btnDisconnect.setSelected(true);\r
3294                 btnDisconnect.setToolTipText(cIDresources.getString("ActDiscTip"));\r
3295                 tbgConnection.add(btnDisconnect);\r
3296                 btnDisconnect.setAction(aDisconnect);\r
3297                 btnDisconnect.setDisabledIcon(((ToolIconPair)vToolIcons.get(IC_DISCONNECT)).dimmed);\r
3298                 btnDisconnect.setName("ActDisc");\r
3299                 btnDisconnect.setSelectedIcon(new javax.swing.ImageIcon(getClass().getResource("/org/tjworld/vista/cid/media/seldisconnect.gif")));\r
3300                 btnDisconnect.addMouseListener(new java.awt.event.MouseAdapter() {\r
3301                         public void mouseExited(java.awt.event.MouseEvent evt) {\r
3302                                 toolBarBtnMouseExited(evt);\r
3303                         }\r
3304                         public void mouseEntered(java.awt.event.MouseEvent evt) {\r
3305                                 toolBarBtnMouseEntered(evt);\r
3306                         }\r
3307                 });\r
3308                 \r
3309                 pConnection.add(btnDisconnect);\r
3310                 \r
3311                 toolBar.add(pConnection);\r
3312                 \r
3313                 pScript.setLayout(new javax.swing.BoxLayout(pScript, javax.swing.BoxLayout.X_AXIS));\r
3314                 \r
3315                 toolBar.addSeparator();\r
3316                 btnPlay.setToolTipText(cIDresources.getString("ActPlayTip"));\r
3317                 tbgPlayback.add(btnPlay);\r
3318                 btnPlay.setAction(aPlay);\r
3319                 btnPlay.setDisabledIcon(((ToolIconPair)vToolIcons.get(IC_PLAY)).dimmed);\r
3320                 btnPlay.setName("ActPlay");\r
3321                 btnPlay.setSelectedIcon(new javax.swing.ImageIcon(getClass().getResource("/org/tjworld/vista/cid/media/selplay.gif")));\r
3322                 btnPlay.addMouseListener(new java.awt.event.MouseAdapter() {\r
3323                         public void mouseExited(java.awt.event.MouseEvent evt) {\r
3324                                 toolBarBtnMouseExited(evt);\r
3325                         }\r
3326                         public void mouseEntered(java.awt.event.MouseEvent evt) {\r
3327                                 toolBarBtnMouseEntered(evt);\r
3328                         }\r
3329                 });\r
3330                 \r
3331                 pScript.add(btnPlay);\r
3332                 \r
3333                 btnRecord.setToolTipText(cIDresources.getString("ActRecTip"));\r
3334                 tbgPlayback.add(btnRecord);\r
3335                 btnRecord.setAction(aRecord);\r
3336                 btnRecord.setDisabledIcon(((ToolIconPair)vToolIcons.get(IC_RECORD)).dimmed);\r
3337                 btnRecord.setName("ActRec");\r
3338                 btnRecord.setSelectedIcon(new javax.swing.ImageIcon(getClass().getResource("/org/tjworld/vista/cid/media/selrecord.gif")));\r
3339                 pScript.add(btnRecord);\r
3340                 \r
3341                 btnPause.setToolTipText(cIDresources.getString("ActPauseTip"));\r
3342                 tbgPlayback.add(btnPause);\r
3343                 btnPause.setAction(aPause);\r
3344                 btnPause.setDisabledIcon(((ToolIconPair)vToolIcons.get(IC_PAUSE)).dimmed);\r
3345                 btnPause.setName("ActPause");\r
3346                 btnPause.setSelectedIcon(new javax.swing.ImageIcon(getClass().getResource("/org/tjworld/vista/cid/media/selpause.gif")));\r
3347                 btnPause.addMouseListener(new java.awt.event.MouseAdapter() {\r
3348                         public void mouseExited(java.awt.event.MouseEvent evt) {\r
3349                                 toolBarBtnMouseExited(evt);\r
3350                         }\r
3351                         public void mouseEntered(java.awt.event.MouseEvent evt) {\r
3352                                 toolBarBtnMouseEntered(evt);\r
3353                         }\r
3354                 });\r
3355                 \r
3356                 pScript.add(btnPause);\r
3357                 \r
3358                 btnStop.setSelected(true);\r
3359                 btnStop.setToolTipText(cIDresources.getString("ActStopTip"));\r
3360                 tbgPlayback.add(btnStop);\r
3361                 btnStop.setAction(aStop);\r
3362                 btnStop.setDisabledIcon(((ToolIconPair)vToolIcons.get(IC_STOP)).dimmed);\r
3363                 btnStop.setName("ActStop");\r
3364                 btnStop.setSelectedIcon(new javax.swing.ImageIcon(getClass().getResource("/org/tjworld/vista/cid/media/selstop.gif")));\r
3365                 btnStop.addMouseListener(new java.awt.event.MouseAdapter() {\r
3366                         public void mouseExited(java.awt.event.MouseEvent evt) {\r
3367                                 toolBarBtnMouseExited(evt);\r
3368                         }\r
3369                         public void mouseEntered(java.awt.event.MouseEvent evt) {\r
3370                                 toolBarBtnMouseEntered(evt);\r
3371                         }\r
3372                 });\r
3373                 \r
3374                 pScript.add(btnStop);\r
3375                 \r
3376                 toolBar.add(pScript);\r
3377                 \r
3378                 getContentPane().add(toolBar, java.awt.BorderLayout.NORTH);\r
3379                 \r
3380                 workPanel.setLayout(new java.awt.GridBagLayout());\r
3381                 java.awt.GridBagConstraints gridBagConstraints1;\r
3382                 \r
3383                 spTemplate.setDividerLocation(450);\r
3384                 spTemplate.setResizeWeight(0.5);\r
3385                 spTemplate.setMinimumSize(new java.awt.Dimension(300, 343));\r
3386                 spTemplate.setOneTouchExpandable(true);\r
3387                 spColour.setDividerLocation(213);\r
3388                 spColour.setLastDividerLocation(208);\r
3389                 spColour.setMinimumSize(new java.awt.Dimension(213, 258));\r
3390                 spColour.setOneTouchExpandable(true);\r
3391                 spColour.setPreferredSize(new java.awt.Dimension(400, 343));\r
3392                 colourPanel.setLayout(new java.awt.BorderLayout());\r
3393                 \r
3394                 colourPanel.setBorder(new javax.swing.border.TitledBorder(new javax.swing.border.EtchedBorder(), cIDresources.getString("tColourCntrlTitle")));\r
3395                 colourPanel.setMinimumSize(new java.awt.Dimension(208, 256));\r
3396                 colourSelectorPanel.setLayout(new java.awt.GridLayout(2, 1));\r
3397                 \r
3398                 filterSelector.setLayout(new javax.swing.BoxLayout(filterSelector, javax.swing.BoxLayout.X_AXIS));\r
3399                 \r
3400                 jIconRadioButton1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/org/tjworld/vista/cid/media/tFilterB21.gif")));\r
3401                 jIconRadioButton1.setText("1");\r
3402                 btnGroupFilter.add(jIconRadioButton1);\r
3403                 filterSelector.add(jIconRadioButton1);\r
3404                 \r
3405                 jIconRadioButton2.setIcon(new javax.swing.ImageIcon(getClass().getResource("/org/tjworld/vista/cid/media/tFilterB22.gif")));\r
3406                 jIconRadioButton2.setText("2");\r
3407                 btnGroupFilter.add(jIconRadioButton2);\r
3408                 filterSelector.add(jIconRadioButton2);\r
3409                 \r
3410                 jIconRadioButton3.setText("3");\r
3411                 btnGroupFilter.add(jIconRadioButton3);\r
3412                 filterSelector.add(jIconRadioButton3);\r
3413                 \r
3414                 jIconRadioButton4.setText("4");\r
3415                 btnGroupFilter.add(jIconRadioButton4);\r
3416                 filterSelector.add(jIconRadioButton4);\r
3417                 \r
3418                 colourSelectorPanel.add(filterSelector);\r
3419                 \r
3420                 colourSelectorPanel.add(filterHistory);\r
3421                 \r
3422                 colourPanel.add(colourSelectorPanel, java.awt.BorderLayout.NORTH);\r
3423                 \r
3424                 sysColorChooser.setMinimumSize(new java.awt.Dimension(128, 192));\r
3425                 colourPanel.add(sysColorChooser, java.awt.BorderLayout.CENTER);\r
3426                 \r
3427                 tintPanel.setBorder(new javax.swing.border.TitledBorder(new javax.swing.border.EtchedBorder(), cIDresources.getString("tTintTitle")));\r
3428                 tintPanel.setName("tTint");\r
3429                 sliderTint.setMajorTickSpacing(10);\r
3430                 sliderTint.setMinorTickSpacing(5);\r
3431                 sliderTint.setPaintTicks(true);\r
3432                 sliderTint.setToolTipText(cIDresources.getString("tTintTip"));\r
3433                 sliderTint.setMinimumSize(new java.awt.Dimension(50, 27));\r
3434                 sliderTint.setName("tTint");\r
3435                 sliderTint.setPreferredSize(new java.awt.Dimension(128, 27));\r
3436                 sliderTint.addChangeListener(new javax.swing.event.ChangeListener() {\r
3437                         public void stateChanged(javax.swing.event.ChangeEvent evt) {\r
3438                                 sliderTintStateChanged(evt);\r
3439                         }\r
3440                 });\r
3441                 \r
3442                 sliderTint.addKeyListener(new java.awt.event.KeyAdapter() {\r
3443                         public void keyPressed(java.awt.event.KeyEvent evt) {\r
3444                                 sliderTintKeyPressed(evt);\r
3445                         }\r
3446                 });\r
3447                 \r
3448                 tintPanel.add(sliderTint);\r
3449                 \r
3450                 colourPanel.add(tintPanel, java.awt.BorderLayout.SOUTH);\r
3451                 \r
3452                 spColour.setLeftComponent(colourPanel);\r
3453                 \r
3454                 filterLayerPane.setMinimumSize(new java.awt.Dimension(48, 48));\r
3455                 filterLayerPane.setPreferredSize(new java.awt.Dimension(256, 343));\r
3456                 // filterLayerPane.setLayout(new GridLayout(0,1));\r
3457                 filterLayerPane.addComponentListener(new java.awt.event.ComponentAdapter() {\r
3458                         public void componentResized(java.awt.event.ComponentEvent evt) {\r
3459                                 filterLayerPaneComponentResized(evt);\r
3460                         }\r
3461                 });\r
3462                 \r
3463                 templatePanel.setLayout(new java.awt.BorderLayout());\r
3464                 \r
3465                 templatePanel.setBorder(new javax.swing.border.TitledBorder(new javax.swing.border.EtchedBorder(), cIDresources.getString("tTemplTitle")));\r
3466                 templatePanel.setName("tTempl");\r
3467                 templatePanel.setPreferredSize(new java.awt.Dimension(343, 343));\r
3468                 templatePanel.addComponentListener(new java.awt.event.ComponentAdapter() {\r
3469                         public void componentResized(java.awt.event.ComponentEvent evt) {\r
3470                                 templatePanelComponentResized(evt);\r
3471                         }\r
3472                 });\r
3473                 \r
3474                 jTextPane3.setBorder(new javax.swing.border.EtchedBorder());\r
3475                 jTextPane3.setEditable(false);\r
3476                 jTextPane3.setText("This is the default Reading template. When fully implemented it will be filled by randomly generated words so the Subject cannot predict, from familiarity or pattern, the sequence of words.\nThe Subject is timed reading the words, and the words-per-minute reading rate is determined. This is done repeatedly for the set of Profiles the Subject finds most comfortable, as well as for the control Profile which is usually simple black text on a white background.\n");\r
3477                 jTextPane3.setMargin(new java.awt.Insets(8, 8, 8, 8));\r
3478                 jTextPane3.setMinimumSize(new java.awt.Dimension(16, 16));\r
3479                 jTextPane3.setPreferredSize(new java.awt.Dimension(256, 256));\r
3480                 jTextPane3.addComponentListener(new java.awt.event.ComponentAdapter() {\r
3481                         public void componentResized(java.awt.event.ComponentEvent evt) {\r
3482                                 jTextPane3ComponentResized(evt);\r
3483                         }\r
3484                 });\r
3485                 \r
3486                 templatePanel.add(jTextPane3, java.awt.BorderLayout.CENTER);\r
3487                 \r
3488                 filterLayerPane.add(templatePanel, javax.swing.JLayeredPane.DEFAULT_LAYER);\r
3489                 templatePanel.setBounds(0, 0, 343, 343);\r
3490                 \r
3491                 spColour.setRightComponent(filterLayerPane);\r
3492                 \r
3493                 spTemplate.setLeftComponent(spColour);\r
3494                 \r
3495                 templateControlPanel.setLayout(new java.awt.BorderLayout());\r
3496                 \r
3497                 templateControlPanel.setBorder(new javax.swing.border.TitledBorder(new javax.swing.border.EtchedBorder(), cIDresources.getString("tTemplCntrlTitle")));\r
3498                 templateControlPanel.setName("tTemplCntrl");\r
3499                 templateSelectorPanel.setLayout(new java.awt.GridLayout(2, 1));\r
3500                 \r
3501                 templateSelector.setLayout(new javax.swing.BoxLayout(templateSelector, javax.swing.BoxLayout.X_AXIS));\r
3502                 \r
3503                 jIconRadioButton6.setIcon(new javax.swing.ImageIcon(getClass().getResource("/org/tjworld/vista/cid/media/tFilterBA1.gif")));\r
3504                 jIconRadioButton6.setText("1");\r
3505                 btnGroupTemplate.add(jIconRadioButton6);\r
3506                 templateSelector.add(jIconRadioButton6);\r
3507                 \r
3508                 jIconRadioButton7.setIcon(new javax.swing.ImageIcon(getClass().getResource("/org/tjworld/vista/cid/media/tFilterBA2.gif")));\r
3509                 jIconRadioButton7.setText("2");\r
3510                 btnGroupTemplate.add(jIconRadioButton7);\r
3511                 templateSelector.add(jIconRadioButton7);\r
3512                 \r
3513                 jIconRadioButton8.setText("3");\r
3514                 btnGroupTemplate.add(jIconRadioButton8);\r
3515                 templateSelector.add(jIconRadioButton8);\r
3516                 \r
3517                 jIconRadioButton9.setText("4");\r
3518                 btnGroupTemplate.add(jIconRadioButton9);\r
3519                 templateSelector.add(jIconRadioButton9);\r
3520                 \r
3521                 templateSelectorPanel.add(templateSelector);\r
3522                 \r
3523                 templateSelectorPanel.add(templateHistory);\r
3524                 \r
3525                 templateControlPanel.add(templateSelectorPanel, java.awt.BorderLayout.NORTH);\r
3526                 \r
3527                 ratingPanel.setBorder(new javax.swing.border.TitledBorder(new javax.swing.border.EtchedBorder(), cIDresources.getString("tRatingTitle")));\r
3528                 sliderRating.setPaintTicks(true);\r
3529                 sliderRating.setPreferredSize(new java.awt.Dimension(100, 27));\r
3530                 ratingPanel.add(sliderRating);\r
3531                 \r
3532                 templateControlPanel.add(ratingPanel, java.awt.BorderLayout.SOUTH);\r
3533                 \r
3534                 spTemplate.setRightComponent(templateControlPanel);\r
3535                 \r
3536                 gridBagConstraints1 = new java.awt.GridBagConstraints();\r
3537                 gridBagConstraints1.gridx = 0;\r
3538                 gridBagConstraints1.gridy = 0;\r
3539                 gridBagConstraints1.fill = java.awt.GridBagConstraints.BOTH;\r
3540                 gridBagConstraints1.anchor = java.awt.GridBagConstraints.NORTH;\r
3541                 gridBagConstraints1.weightx = 0.25;\r
3542                 gridBagConstraints1.weighty = 0.5;\r
3543                 workPanel.add(spTemplate, gridBagConstraints1);\r
3544                 \r
3545                 statusLine.setLayout(new javax.swing.BoxLayout(statusLine, javax.swing.BoxLayout.X_AXIS));\r
3546                 \r
3547                 statusMessage.setText(cIDresources.getString("msgVistaBuild"));\r
3548                 statusMessage.setBorder(new javax.swing.border.BevelBorder(javax.swing.border.BevelBorder.LOWERED));\r
3549                 statusMessage.setMaximumSize(new java.awt.Dimension(256, 21));\r
3550                 statusMessage.setMinimumSize(new java.awt.Dimension(128, 21));\r
3551                 statusMessage.setPreferredSize(new java.awt.Dimension(256, 21));\r
3552                 statusLine.add(statusMessage);\r
3553                 \r
3554                 statusRed.setFont(new java.awt.Font("Dialog", 1, 11));\r
3555                 statusRed.setForeground(java.awt.Color.red);\r
3556                 statusRed.setMaximum(255);\r
3557                 statusRed.setValue(128);\r
3558                 statusRed.setBorder(new javax.swing.border.BevelBorder(javax.swing.border.BevelBorder.LOWERED));\r
3559                 statusRed.setPreferredSize(new java.awt.Dimension(64, 21));\r
3560                 statusRed.setString("128");\r
3561                 statusRed.setStringPainted(true);\r
3562                 statusLine.add(statusRed);\r
3563                 \r
3564                 statusGreen.setFont(new java.awt.Font("Dialog", 1, 11));\r
3565                 statusGreen.setForeground(java.awt.Color.green);\r
3566                 statusGreen.setMaximum(255);\r
3567                 statusGreen.setValue(128);\r
3568                 statusGreen.setBorder(new javax.swing.border.BevelBorder(javax.swing.border.BevelBorder.LOWERED));\r
3569                 statusGreen.setPreferredSize(new java.awt.Dimension(64, 21));\r
3570                 statusGreen.setString("128");\r
3571                 statusGreen.setStringPainted(true);\r
3572                 statusLine.add(statusGreen);\r
3573                 \r
3574                 statusBlue.setFont(new java.awt.Font("Dialog", 1, 11));\r
3575                 statusBlue.setForeground(java.awt.Color.blue);\r
3576                 statusBlue.setMaximum(255);\r
3577                 statusBlue.setValue(128);\r
3578                 statusBlue.setBorder(new javax.swing.border.BevelBorder(javax.swing.border.BevelBorder.LOWERED));\r
3579                 statusBlue.setPreferredSize(new java.awt.Dimension(64, 21));\r
3580                 statusBlue.setString("128");\r
3581                 statusBlue.setStringPainted(true);\r
3582                 statusLine.add(statusBlue);\r
3583                 \r
3584                 statusTint.setFont(new java.awt.Font("Dialog", 1, 11));\r
3585                 statusTint.setValue(50);\r
3586                 statusTint.setBorder(new javax.swing.border.BevelBorder(javax.swing.border.BevelBorder.LOWERED));\r
3587                 statusTint.setStringPainted(true);\r
3588                 statusLine.add(statusTint);\r
3589                 \r
3590                 statusIconPanel.setLayout(new javax.swing.BoxLayout(statusIconPanel, javax.swing.BoxLayout.X_AXIS));\r
3591                 \r
3592                 statusIconPanel.setBorder(new javax.swing.border.BevelBorder(javax.swing.border.BevelBorder.LOWERED));\r
3593                 statusIconModel.setIcon(((ToolIconPair)vToolIcons.get(IC_1UP)).active);\r
3594                 statusIconModel.setToolTipText(cIDresources.getString("tTemplMod"));\r
3595                 statusIconModel.setDisabledIcon(((ToolIconPair)vToolIcons.get(IC_1UP)).active);\r
3596                 statusIconPanel.add(statusIconModel);\r
3597                 \r
3598                 statusIconEyes.setIcon(((ToolIconPair)vToolIcons.get(IC_BOTH_EYES)).active);\r
3599                 statusIconEyes.setToolTipText(cIDresources.getString("tEyeMod"));\r
3600                 statusIconEyes.setDisabledIcon(((ToolIconPair)vToolIcons.get(IC_BOTH_EYES)).active);\r
3601                 statusIconPanel.add(statusIconEyes);\r
3602                 \r
3603                 statusIconTemplate.setIcon(((ToolIconPair)vToolIcons.get(IC_READING)).active);\r
3604                 statusIconTemplate.setToolTipText(cIDresources.getString("tTemplMod"));\r
3605                 statusIconTemplate.setDisabledIcon(((ToolIconPair)vToolIcons.get(IC_READING)).active);\r
3606                 statusIconPanel.add(statusIconTemplate);\r
3607                 \r
3608                 statusIconColourModel.setIcon(((ToolIconPair)vToolIcons.get(IC_HSB)).active);\r
3609                 statusIconColourModel.setToolTipText(cIDresources.getString("tColMod"));\r
3610                 statusIconColourModel.setDisabledIcon(((ToolIconPair)vToolIcons.get(IC_HSB)).active);\r
3611                 statusIconPanel.add(statusIconColourModel);\r
3612                 \r
3613                 statusIconColourView.setIcon(((ToolIconPair)vToolIcons.get(IC_COLOR_CHOOSER)).active);\r
3614                 statusIconColourView.setToolTipText(cIDresources.getString("tColView"));\r
3615                 statusIconColourView.setDisabledIcon(((ToolIconPair)vToolIcons.get(IC_COLOR_CHOOSER)).active);\r
3616                 statusIconPanel.add(statusIconColourView);\r
3617                 \r
3618                 statusIconDirector.setIcon(((ToolIconPair)vToolIcons.get(IC_MANUAL)).active);\r
3619                 statusIconDirector.setToolTipText(cIDresources.getString("tDirector"));\r
3620                 statusIconDirector.setDisabledIcon(((ToolIconPair)vToolIcons.get(IC_MANUAL)).active);\r
3621                 statusIconPanel.add(statusIconDirector);\r
3622                 \r
3623                 statusIconFilter.setIcon(((ToolIconPair)vToolIcons.get(IC_FILTER_TEMPLATE)).active);\r
3624                 statusIconFilter.setToolTipText(cIDresources.getString("mOptFltName"));\r
3625                 statusIconFilter.setDisabledIcon(((ToolIconPair)vToolIcons.get(IC_FILTER_TEMPLATE)).active);\r
3626                 statusIconPanel.add(statusIconFilter);\r
3627                 \r
3628                 statusIconLanguage.setIcon(((ToolIconPair)vToolIcons.get(IC_LANG_BRITISH)).active);\r
3629                 statusIconLanguage.setToolTipText(cIDresources.getString("mOptLangName"));\r
3630                 statusIconLanguage.setDisabledIcon(((ToolIconPair)vToolIcons.get(IC_LANG_BRITISH)).active);\r
3631                 statusIconPanel.add(statusIconLanguage);\r
3632                 \r
3633                 statusLine.add(statusIconPanel);\r
3634                 \r
3635                 statusState.setText(cIDresources.getString("msgStatRdy"));\r
3636                 statusState.setBorder(new javax.swing.border.BevelBorder(javax.swing.border.BevelBorder.LOWERED));\r
3637                 statusState.setMaximumSize(new java.awt.Dimension(39, 21));\r
3638                 statusState.setMinimumSize(new java.awt.Dimension(39, 21));\r
3639                 statusState.setPreferredSize(new java.awt.Dimension(39, 21));\r
3640                 statusLine.add(statusState);\r
3641                 \r
3642                 gridBagConstraints1 = new java.awt.GridBagConstraints();\r
3643                 gridBagConstraints1.gridx = 0;\r
3644                 gridBagConstraints1.gridy = 1;\r
3645                 gridBagConstraints1.fill = java.awt.GridBagConstraints.BOTH;\r
3646                 gridBagConstraints1.anchor = java.awt.GridBagConstraints.NORTH;\r
3647                 gridBagConstraints1.weightx = 0.25;\r
3648                 workPanel.add(statusLine, gridBagConstraints1);\r
3649                 \r
3650                 getContentPane().add(workPanel, java.awt.BorderLayout.CENTER);\r
3651                 \r
3652                 setJMenuBar(mbMain);\r
3653                 pack();\r
3654         }//GEN-END:initComponents\r
3655 \r
3656         private void mHelpFilterActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_mHelpFilterActionPerformed\r
3657   float alpha = vfFilter.getAlpha();\r
3658                 helpWindow.setVistaColour(vfFilter.getBackground(), alpha);\r
3659                 helpWindow.setVista(mHelpFilter.isSelected());\r
3660         }//GEN-LAST:event_mHelpFilterActionPerformed\r
3661 \r
3662         private void mHelpDockActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_mHelpDockActionPerformed\r
3663   if(helpWindow != null) // copy selected state from menu item to Help window\r
3664                         helpWindow.setDocking(mHelpDock.isSelected());\r
3665         }//GEN-LAST:event_mHelpDockActionPerformed\r
3666 \r
3667         private void formComponentMoved(java.awt.event.ComponentEvent evt) {//GEN-FIRST:event_formComponentMoved\r
3668   showHelp(0, true, false, false);\r
3669         }//GEN-LAST:event_formComponentMoved\r
3670 \r
3671         private void mHelpIndexActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_mHelpIndexActionPerformed\r
3672   showHelp(xhtmlHelp.TAB_INDEX, false, true, true);\r
3673         }//GEN-LAST:event_mHelpIndexActionPerformed\r
3674 \r
3675 \r
3676  /** Catches changes to the CID window frame\r
3677                 *\r
3678                 * Intended to allow one Locale-change to the window frame as a result of the\r
3679                 * user changing the Language, to be caught and then propagated to all other\r
3680                 * Locale-sensitive components.\r
3681                 *\r
3682                 * @param evt The ProperyChangeEvent - usually a 'locale' property event\r
3683                 */\r
3684         private void formPropertyChange(java.beans.PropertyChangeEvent evt) {//GEN-FIRST:event_formPropertyChange\r
3685   if(evt.getPropertyName() ==           "locale") { // the application(or applet) Locale has been changed\r
3686                  if(debugging) System.out.println("Locale changed from " + ((java.util.Locale)evt.getOldValue()).getDisplayLanguage() + " to " + ((java.util.Locale)evt.getNewValue()).getDisplayLanguage());\r
3687                         changeLocale((java.util.Locale)evt.getNewValue()); // do a dynamic change to all components now\r
3688                 }\r
3689         }//GEN-LAST:event_formPropertyChange\r
3690 \r
3691         private void mToolbarToolBarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_mToolbarToolBarActionPerformed\r
3692                 toolBar.setVisible(mToolbarToolBar.isSelected()); // show or hide the toolbar\r
3693         }//GEN-LAST:event_mToolbarToolBarActionPerformed\r
3694 \r
3695         /** Catch various keyboard accelerators when the Tint slider has focus\r
3696                 *\r
3697                 * Cursor (arrow) keys on the their own move the slider 1%\r
3698                 * with SHIFT key, moves 2%\r
3699                 * with ALT key, moves 5%\r
3700                 * with CTRL key, moves 10%\r
3701                 *\r
3702                 * NumPad keys + and - control direction\r
3703                 *\r
3704                 * NumPad 5 resets slider to central point\r
3705                 *\r
3706                 * Intended that these keys will be available as Application-wide accelerators\r
3707                 * because when the Slider doesn't have keyboard focus the arrow keys are needed\r
3708                 * for Focus naviagtion and other core activities.\r
3709                 */\r
3710         private void sliderTintKeyPressed(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_sliderTintKeyPressed\r
3711                 boolean abVal = false;\r
3712                 int dir = 0, newVal = 0;\r
3713                 int step = 1; // default stepping is 1\r
3714                 \r
3715                 // adjust the Tint from the keyboard\r
3716                 switch(evt.getModifiers()) { // set the stepping value\r
3717                         case ActionEvent.SHIFT_MASK: // shift key\r
3718                          step = 2;\r
3719                                 break;\r
3720                         case ActionEvent.ALT_MASK: // alt key\r
3721                                 step = 5;\r
3722                                 break;\r
3723                         case ActionEvent.CTRL_MASK: // ctrl key\r
3724                                 step = 10;\r
3725                                 break;\r
3726                 }\r
3727                 \r
3728   switch(evt.getKeyCode()) { // set the direction\r
3729                         case KeyEvent.VK_ADD: // num-pad key +\r
3730                                 dir = 1;\r
3731                                 break;\r
3732                         case KeyEvent.VK_SUBTRACT: // num-pad key -\r
3733                                 dir = -1;\r
3734                                 break;\r
3735                         case KeyEvent.VK_NUMPAD5: // reset slider to central position...\r
3736                         case KeyEvent.VK_CLEAR: // ... allow for NumLock on or off\r
3737                                 newVal = sliderTint.getMinimum() + ((sliderTint.getMaximum() - sliderTint.getMinimum())/2);\r
3738                                 abVal = true; // indicate absolute value is being set\r
3739                                 break;\r
3740                 }\r
3741                 if(dir != 0) { // don't do anything if one of the adjuster keys wasn't pressed\r
3742                         newVal = sliderTint.getValue() + (dir * step); // calculate the new value\r
3743                         if(newVal > sliderTint.getMaximum()) // adjust it if too high\r
3744                                  newVal = sliderTint.getMaximum();\r
3745                         else if(newVal < sliderTint.getMinimum()) // or if too low\r
3746                                  newVal = sliderTint.getMinimum();\r
3747                         sliderTint.setValue(newVal); // change the value\r
3748                 }\r
3749                 else if(abVal) // set an absolute value\r
3750                         sliderTint.setValue(newVal);\r
3751         }//GEN-LAST:event_sliderTintKeyPressed\r
3752 \r
3753         /** show or hide the Script buttons on the tool bar */\r
3754         private void mToolbarScriptActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_mToolbarScriptActionPerformed\r
3755                 pScript.setVisible(mToolbarScript.isSelected());\r
3756         }//GEN-LAST:event_mToolbarScriptActionPerformed\r
3757 \r
3758         /** show or hide the Remote Connection buttons on the tool bar */\r
3759         private void mToolbarConnectionActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_mToolbarConnectionActionPerformed\r
3760                 pConnection.setVisible(mToolbarConnection.isSelected());\r
3761         }//GEN-LAST:event_mToolbarConnectionActionPerformed\r
3762 \r
3763         /** show or hide the Director buttons on the tool bar */\r
3764         private void mToolbarDirectorActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_mToolbarDirectorActionPerformed\r
3765                 pDirector.setVisible(mToolbarDirector.isSelected());\r
3766         }//GEN-LAST:event_mToolbarDirectorActionPerformed\r
3767 \r
3768         private void mToolbarColourViewActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_mToolbarColourViewActionPerformed\r
3769                 pColourView.setVisible(mToolbarColourView.isSelected());\r
3770         }//GEN-LAST:event_mToolbarColourViewActionPerformed\r
3771 \r
3772         /** show or hide the Colour Model buttons on the tool bar */\r
3773         private void mToolbarColourModelActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_mToolbarColourModelActionPerformed\r
3774                 pColourModel.setVisible(mToolbarColourModel.isSelected());\r
3775         }//GEN-LAST:event_mToolbarColourModelActionPerformed\r
3776 \r
3777         /** show or hide the Template buttons on the tool bar */\r
3778         private void mToolbarTemplateActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_mToolbarTemplateActionPerformed\r
3779                 pTemplate.setVisible(mToolbarTemplate.isSelected());\r
3780         }//GEN-LAST:event_mToolbarTemplateActionPerformed\r
3781 \r
3782         /** show or hide the Eye Model buttons on the tool bar */\r
3783         private void mToolbarEyesActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_mToolbarEyesActionPerformed\r
3784                 pEyes.setVisible(mToolbarEyes.isSelected());\r
3785         }//GEN-LAST:event_mToolbarEyesActionPerformed\r
3786 \r
3787         private void mToolbarModelActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_mToolbarModelActionPerformed\r
3788                 pModel.setVisible(mToolbarModel.isSelected());\r
3789         }//GEN-LAST:event_mToolbarModelActionPerformed\r
3790 \r
3791         /** show or hide the Profile buttons on the tool bar */\r
3792         private void mToolbarProfileActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_mToolbarProfileActionPerformed\r
3793                 pProfile.setVisible(mToolbarProfile.isSelected());\r
3794         }//GEN-LAST:event_mToolbarProfileActionPerformed\r
3795 \r
3796         /** Listen for potentional context menu  requests (platform-specific activation sequence) \r
3797                 * @param evt The MouseEvent\r
3798                 * @see MouseEvent#isPoupTrigger()\r
3799                 */\r
3800 private void toolBarMouseReleased(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_toolBarMouseReleased\r
3801   if(evt.isPopupTrigger()) showToolbarPopup(evt); // only show if event conforms to platform context gesture\r
3802 }//GEN-LAST:event_toolBarMouseReleased\r
3803 \r
3804         /** Listen for potentional context menu  requests (platform-specific activation sequence) \r
3805                 * @param evt The MouseEvent\r
3806                 * @see MouseEvent#isPoupTrigger()\r
3807                 */\r
3808 private void toolBarMousePressed(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_toolBarMousePressed\r
3809  if(evt.isPopupTrigger()) showToolbarPopup(evt); // only show if event conforms to platform context gesture\r
3810 }//GEN-LAST:event_toolBarMousePressed\r
3811 \r
3812  /** Show Toolbar customization Popup \r
3813   * Conditional on receiving environment-specific context gesture.\r
3814                 *\r
3815                 * Because the JPopUp belonging to the mOptionsToolbar JMenu is being 'borrowed'\r
3816                 * we must make sure to reset the invoker after we've used it so it's owner\r
3817                 * can use it again.\r
3818                 * \r
3819                 * @param evt The MouseEvent\r
3820   */\r
3821  private void showToolbarPopup(java.awt.event.MouseEvent evt) {\r
3822                 Component c = toolBarPopup.getInvoker(); // remember the original invoker\r
3823   toolBarPopup.show(evt.getComponent(), evt.getX(), evt.getY());\r
3824                 toolBarPopup.setInvoker(c); // restore the invoker\r
3825  }\r
3826 \r
3827         /** Central 'Template' panel isn't managed by a Layout Manager\r
3828                 * When the parent container resizes, <code>templatePanel</code> must ensure it's\r
3829                 * child components are all resized too.\r
3830                 *\r
3831                 * @param evt The ComponentEvent\r
3832                 */\r
3833         private void templatePanelComponentResized(java.awt.event.ComponentEvent evt) {//GEN-FIRST:event_templatePanelComponentResized\r
3834                 Dimension dim = templatePanel.getSize(); // container size\r
3835                 Insets insets = templatePanel.getInsets(); // unavailable margins\r
3836                 dim.width -= insets.left + insets.right; // adjust size to take account of insets\r
3837                 dim.height -= insets.top + insets.bottom;\r
3838          jTextPane3.setSize(dim); // fit the child component exactly into the panel\r
3839         }//GEN-LAST:event_templatePanelComponentResized\r
3840 \r
3841         private void jTextPane3ComponentResized(java.awt.event.ComponentEvent evt) {//GEN-FIRST:event_jTextPane3ComponentResized\r
3842   jTextPane3.revalidate(); // cause the parent container(s) to re-layout child components\r
3843                 jTextPane3.repaint(); // and then make sure the resized pane is shown on screen\r
3844         }//GEN-LAST:event_jTextPane3ComponentResized\r
3845 \r
3846  /** When the mouse leaves a tool bar button, causes the button border to be undrawn\r
3847                 * Single method which is called by all buttons wanting this functionality\r
3848                 * @param evt The MouseEvent\r
3849                 */\r
3850         private void toolBarBtnMouseExited(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_toolBarBtnMouseExited\r
3851                 // whichever tool bar button, remove the border because the mouse has moved away\r
3852                 ((AbstractButton)evt.getSource()).setBorderPainted(false);\r
3853                 \r
3854         }//GEN-LAST:event_toolBarBtnMouseExited\r
3855 \r
3856  /** When the mouse is over a tool bar button, causes the button border to be drawn\r
3857                 * Single method which is called by all buttons wanting this functionality\r
3858                 * @param evt The MouseEvent\r
3859                 */\r
3860         private void toolBarBtnMouseEntered(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_toolBarBtnMouseEntered\r
3861                 // whichever tool bar button, show the mouse is over it\r
3862                 ((javax.swing.AbstractButton)evt.getSource()).setBorderPainted(true);\r
3863         }//GEN-LAST:event_toolBarBtnMouseEntered\r
3864 \r
3865     /** Show the application's Help/About dialog\r
3866                                         * @param evt The ActionEvent\r
3867                                         */\r
3868                                 private void mHelpAboutActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_mHelpAboutActionPerformed\r
3869                                         if(aboutDialog == null)\r
3870                                                 aboutDialog = new CIDAbout(this, true);\r
3871 \r
3872                                         aboutDialog.setLocation(getCentralLocation(aboutDialog, frameCID));\r
3873                                         aboutDialog.setVisible(true); // show the (modal) dialog\r
3874                                 }//GEN-LAST:event_mHelpAboutActionPerformed\r
3875                                 \r
3876                                 /** Responds to changes in the transparency of the VisTA filter\r
3877                                         *\r
3878                                         * Gets the new tint and applies it to the VisTA filter and reflects the value to the\r
3879                                         * status line tint-indicator progress bar.\r
3880                                         *\r
3881                                         * @param evt The ChangeEvent\r
3882                                         */\r
3883                                 private void sliderTintStateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_sliderTintStateChanged\r
3884                                         int value = sliderTint.getValue(); // new tint %\r
3885                                         vfFilter.setAlpha(((float)value)/100); // apply it to the VisTA filter panel\r
3886                                         statusTint.setValue(value); // and reflect the value in the status-line progress bar\r
3887                                 }//GEN-LAST:event_sliderTintStateChanged\r
3888 \r
3889                                 /** <code>filterLayerPane</code> cannot use a regular Layout Manager because it needs\r
3890                                         * to place the VisTA <code>vfFilter</code> transparent 'glass' pane completely over\r
3891                                         * all other components.\r
3892                                         *\r
3893                                         * Therefore, when <code>filterLayerPane</code> is resized, the change has to be\r
3894                                         * propagated manually to the glass pane and the active Template panel, so they\r
3895                                         * fill the <code>filterLayerPane</code> completely.\r
3896                                         */\r
3897                                 private void filterLayerPaneComponentResized(java.awt.event.ComponentEvent evt) {//GEN-FIRST:event_filterLayerPaneComponentResized\r
3898                                         Dimension dim = filterLayerPane.getSize(); // the new size\r
3899                                         if(mFilterTemplate.isSelected()) vfFilter.setSize(dim); // tell the VisTA filter if it's attached to the Template\r
3900                                         templatePanel.setSize(dim); // tell the Template pane\r
3901                                 }//GEN-LAST:event_filterLayerPaneComponentResized\r
3902 \r
3903                                 private void sysColorChooserStateChanged(ChangeEvent e) {\r
3904                                         Color newColor = sysColorChooser.getColor();\r
3905                                         vfFilter.setBackground(newColor);\r
3906                                         statusRed.setValue(newColor.getRed());\r
3907                                         statusRed.setString(Integer.toString(newColor.getRed()));\r
3908                                         statusGreen.setValue(newColor.getGreen());\r
3909                                         statusGreen.setString(Integer.toString(newColor.getGreen()));\r
3910                                         statusBlue.setValue(newColor.getBlue());\r
3911                                         statusBlue.setString(Integer.toString(newColor.getBlue()));\r
3912                                 }\r
3913 \r
3914  /** Calculate the top-left position that will place a component in the center of the screen \r
3915                 * @param child Component that requires positioning\r
3916                 * @return Top-Left co-ordinate\r
3917                 */\r
3918         public Point getCentralScreenLocation(Component child) {\r
3919                 Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();\r
3920                 Dimension childSize = child.getSize();\r
3921                 return new Point(screenSize.width/2 - childSize.width/2, screenSize.height/2 - childSize.height/2);\r
3922         }\r
3923 \r
3924         /** Calculate the top-left position that will place a component in the center of a container\r
3925                 * @param child Component that requires positioning\r
3926                 * @param container Component to position child relative to\r
3927                 * @return Top-Left co-ordinate of child\r
3928                 */\r
3929         public Point getCentralLocation(Component child, Component container) {\r
3930                 Dimension containerSize = container.getSize();\r
3931                 Dimension childSize = child.getSize();\r
3932                 return new Point(container.getX() + (containerSize.width/2 - childSize.width/2), container.getY() + (containerSize.height/2 - childSize.height/2));\r
3933         }\r
3934                                 /** Exit the Application\r
3935                                         * @param evt The WindowEvent\r
3936                                         */\r
3937     private void exitForm(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_exitForm\r
3938         if(parent == null) System.exit(0); // running as an application; safe to close down Java Virtual Machine\r
3939                                                                 else setVisible(false); // running as an applet; just hide\r
3940     }//GEN-LAST:event_exitForm\r
3941 \r
3942                                 // Variables declaration - do not modify//GEN-BEGIN:variables\r
3943                                 private javax.swing.JMenuBar mbMain;\r
3944                                 private javax.swing.JMenu mProfile;\r
3945                                 private javax.swing.JMenuItem mProfileNew;\r
3946                                 private javax.swing.JMenuItem mProfileOpen;\r
3947                                 private javax.swing.JMenuItem mProfileSave;\r
3948                                 private javax.swing.JMenuItem mProfileSaveAs;\r
3949                                 private javax.swing.JMenuItem mProfileDelete;\r
3950                                 private javax.swing.JSeparator mProfileSeparator1;\r
3951                                 private javax.swing.JMenuItem mProfileToVista;\r
3952                                 private javax.swing.JSeparator mProfileSeparator2;\r
3953                                 private javax.swing.JMenuItem mProfileFromCookie;\r
3954                                 private javax.swing.JMenuItem mProfileToCookie;\r
3955                                 private javax.swing.JMenuItem mProfileCreateFilter;\r
3956                                 private javax.swing.JMenuItem mProfileWeb;\r
3957                                 private javax.swing.JSeparator mProfileSeparator3;\r
3958                                 private javax.swing.JMenuItem mProfilePrint;\r
3959                                 private javax.swing.JMenuItem mProfilePageSetup;\r
3960                                 private javax.swing.JSeparator mProfileSeparator4;\r
3961                                 private javax.swing.JMenuItem mProfileProperties;\r
3962                                 private javax.swing.JMenu mModel;\r
3963                                 private javax.swing.JRadioButtonMenuItem mModel1;\r
3964                                 private javax.swing.JRadioButtonMenuItem mModel2;\r
3965                                 private javax.swing.JRadioButtonMenuItem mModelAlternate;\r
3966                                 private javax.swing.JSeparator jSeparator9;\r
3967                                 private javax.swing.JRadioButtonMenuItem mModelBothEyes;\r
3968                                 private javax.swing.JRadioButtonMenuItem mModelEyesSeparate;\r
3969                                 private javax.swing.JMenu mTemplate;\r
3970                                 private javax.swing.JRadioButtonMenuItem mTemplateReading;\r
3971                                 private javax.swing.JRadioButtonMenuItem mTemplatePattern;\r
3972                                 private javax.swing.JRadioButtonMenuItem mTemplateImage;\r
3973                                 private javax.swing.JMenu mColour;\r
3974                                 private javax.swing.JRadioButtonMenuItem mColourRGB;\r
3975                                 private javax.swing.JRadioButtonMenuItem mColourHSB;\r
3976                                 private javax.swing.JRadioButtonMenuItem mColourCYMK;\r
3977                                 private javax.swing.JSeparator jSeparator7;\r
3978                                 private javax.swing.JRadioButtonMenuItem mColourWheel;\r
3979                                 private javax.swing.JRadioButtonMenuItem mColourTriangle;\r
3980                                 private javax.swing.JRadioButtonMenuItem mColourCube;\r
3981                                 private javax.swing.JRadioButtonMenuItem mColourSystemChooser;\r
3982                                 private javax.swing.JRadioButtonMenuItem mColourSwatch;\r
3983                                 private javax.swing.JMenu mDirector;\r
3984                                 private javax.swing.JRadioButtonMenuItem mDirectorManual;\r
3985                                 private javax.swing.JRadioButtonMenuItem mDirectorAuto;\r
3986                                 private javax.swing.JRadioButtonMenuItem mDirectorDirect;\r
3987                                 private javax.swing.JRadioButtonMenuItem mDirectorScript;\r
3988                                 private javax.swing.JMenu mOptions;\r
3989                                 private javax.swing.JMenu mOptionsReading;\r
3990                                 private javax.swing.JMenuItem mReadingChoose;\r
3991                                 private javax.swing.JMenuItem mReadingCustomize;\r
3992                                 private javax.swing.JMenuItem mReadingPreferences;\r
3993                                 private javax.swing.JMenu mOptionsPatterns;\r
3994                                 private javax.swing.JMenuItem mPatternsChoose;\r
3995                                 private javax.swing.JMenuItem mPatternsCustomize;\r
3996                                 private javax.swing.JMenuItem mPatternsPreferences;\r
3997                                 private javax.swing.JMenu mOptionsImages;\r
3998                                 private javax.swing.JMenuItem mImgChoose;\r
3999                                 private javax.swing.JMenuItem mImgCustomize;\r
4000                                 private javax.swing.JMenuItem mImgPreferences;\r
4001                                 private javax.swing.JMenu mOptionsSwatches;\r
4002                                 private javax.swing.JMenuItem mSwatchesChoose;\r
4003                                 private javax.swing.JMenuItem mSwatchesCustomize;\r
4004                                 private javax.swing.JMenuItem mSwatchesPreferences;\r
4005                                 private javax.swing.JMenu mOptionsDirected;\r
4006                                 private javax.swing.JMenuItem mDirectedConnect;\r
4007                                 private javax.swing.JMenuItem mDirectedDisconnect;\r
4008                                 private javax.swing.JMenuItem mDirectedPreferences;\r
4009                                 private javax.swing.JMenu mOptionsScripted;\r
4010                                 private javax.swing.JMenuItem mOptionsScriptedChoose;\r
4011                                 private javax.swing.JMenuItem mOptionsScriptedPlay;\r
4012                                 private javax.swing.JMenuItem mOptionsScriptedRecord;\r
4013                                 private javax.swing.JMenuItem mOptionsScriptedPause;\r
4014                                 private javax.swing.JMenuItem mOptionsScriptedStop;\r
4015                                 private javax.swing.JMenuItem mOptionsScriptedPreferences;\r
4016                                 private javax.swing.JMenu mOptionsFilter;\r
4017                                 private javax.swing.JRadioButtonMenuItem mFilterTemplate;\r
4018                                 private javax.swing.JRadioButtonMenuItem mFilterWindow;\r
4019                                 private javax.swing.JRadioButtonMenuItem mFilterScreen;\r
4020                                 private javax.swing.JMenu mOptionsLanguage;\r
4021                                 private javax.swing.JRadioButtonMenuItem mLanguageDefault;\r
4022                                 private javax.swing.JRadioButtonMenuItem mLanguageBritish;\r
4023                                 private javax.swing.JRadioButtonMenuItem mLanguageFrench;\r
4024                                 private javax.swing.JRadioButtonMenuItem mLanguageSpanish;\r
4025                                 private javax.swing.JRadioButtonMenuItem mLanguageGerman;\r
4026                                 private javax.swing.JRadioButtonMenuItem mLanguageArabicEgypt;\r
4027                                 private javax.swing.JRadioButtonMenuItem mLanguageFarsiIran;\r
4028                                 private javax.swing.JRadioButtonMenuItem mLanguageHindiIndia;\r
4029                                 private javax.swing.JRadioButtonMenuItem mLanguageIndonesian;\r
4030                                 private javax.swing.JRadioButtonMenuItem mLanguageJapanese;\r
4031                                 private javax.swing.JRadioButtonMenuItem mLanguageDutch;\r
4032                                 private javax.swing.JRadioButtonMenuItem mLanguagePashto;\r
4033                                 private javax.swing.JRadioButtonMenuItem mLanguagePortuguese;\r
4034                                 private javax.swing.JRadioButtonMenuItem mLanguageRussian;\r
4035                                 private javax.swing.JRadioButtonMenuItem mLanguageSwedish;\r
4036                                 private javax.swing.JRadioButtonMenuItem mLanguageUrdu;\r
4037                                 private javax.swing.JRadioButtonMenuItem mLanguageChinese;\r
4038                                 private javax.swing.JMenu mOptionsToolbar;\r
4039                                 private javax.swing.JCheckBoxMenuItem mToolbarToolBar;\r
4040                                 private javax.swing.JSeparator jSeparator1;\r
4041                                 private javax.swing.JCheckBoxMenuItem mToolbarProfile;\r
4042                                 private javax.swing.JCheckBoxMenuItem mToolbarModel;\r
4043                                 private javax.swing.JCheckBoxMenuItem mToolbarEyes;\r
4044                                 private javax.swing.JCheckBoxMenuItem mToolbarTemplate;\r
4045                                 private javax.swing.JCheckBoxMenuItem mToolbarColourModel;\r
4046                                 private javax.swing.JCheckBoxMenuItem mToolbarColourView;\r
4047                                 private javax.swing.JCheckBoxMenuItem mToolbarDirector;\r
4048                                 private javax.swing.JCheckBoxMenuItem mToolbarConnection;\r
4049                                 private javax.swing.JCheckBoxMenuItem mToolbarScript;\r
4050                                 private javax.swing.JMenu mOptionsLandF;\r
4051                                 private javax.swing.JMenuItem mOptionsVistaDB;\r
4052                                 private javax.swing.JSeparator mOptionsSeparator2;\r
4053                                 private javax.swing.JCheckBoxMenuItem mOptionsVistaWeb;\r
4054                                 private javax.swing.JMenu mHelp;\r
4055                                 private javax.swing.JMenuItem mHelpContents;\r
4056                                 private javax.swing.JMenuItem mHelpIndex;\r
4057                                 private javax.swing.JMenuItem mHelpSearch;\r
4058                                 private javax.swing.JMenuItem mHelpWebLink;\r
4059                                 private javax.swing.JSeparator mHelpSeparator1;\r
4060                                 private javax.swing.JCheckBoxMenuItem mHelpExplain;\r
4061                                 private javax.swing.JCheckBoxMenuItem mHelpDock;\r
4062                                 private javax.swing.JCheckBoxMenuItem mHelpFilter;\r
4063                                 private javax.swing.JSeparator mHelpSeparator2;\r
4064                                 private javax.swing.JMenuItem mHelpAbout;\r
4065                                 private javax.swing.ButtonGroup btnGroupFilter;\r
4066                                 private javax.swing.ButtonGroup btnGroupTemplate;\r
4067                                 private javax.swing.JToolBar toolBar;\r
4068                                 private javax.swing.JPanel pProfile;\r
4069                                 private javax.swing.JButton btnNew;\r
4070                                 private javax.swing.JButton btnOpenFile;\r
4071                                 private javax.swing.JButton btnSave;\r
4072                                 private javax.swing.JButton btnSendToVistaDB;\r
4073                                 private javax.swing.JPanel pModel;\r
4074                                 private javax.swing.JToggleButton btn1Up;\r
4075                                 private javax.swing.JToggleButton btn2Up;\r
4076                                 private javax.swing.JToggleButton btnAlternate;\r
4077                                 private javax.swing.JPanel pEyes;\r
4078                                 private javax.swing.JToggleButton btnEyes2;\r
4079                                 private javax.swing.JToggleButton btnEyes1;\r
4080                                 private javax.swing.JPanel pTemplate;\r
4081                                 private javax.swing.JToggleButton btnReading;\r
4082                                 private javax.swing.JToggleButton btnPatterns;\r
4083                                 private javax.swing.JToggleButton btnImages;\r
4084                                 private javax.swing.JPanel pColourModel;\r
4085                                 private javax.swing.JToggleButton btnRGB;\r
4086                                 private javax.swing.JToggleButton btnHSB;\r
4087                                 private javax.swing.JToggleButton btnCYMK;\r
4088                                 private javax.swing.JPanel pColourView;\r
4089                                 private javax.swing.JToggleButton btnWheel;\r
4090                                 private javax.swing.JToggleButton btnTriangle;\r
4091                                 private javax.swing.JToggleButton btnQube;\r
4092                                 private javax.swing.JToggleButton btnSystemChooser;\r
4093                                 private javax.swing.JToggleButton btnSwatches;\r
4094                                 private javax.swing.JPanel pDirector;\r
4095                                 private javax.swing.JToggleButton btnManual;\r
4096                                 private javax.swing.JToggleButton btnAuto;\r
4097                                 private javax.swing.JToggleButton btnDirected;\r
4098                                 private javax.swing.JToggleButton btnScript;\r
4099                                 private javax.swing.JPanel pConnection;\r
4100                                 private javax.swing.JToggleButton btnConnect;\r
4101                                 private javax.swing.JToggleButton btnDisconnect;\r
4102                                 private javax.swing.JPanel pScript;\r
4103                                 private javax.swing.JToggleButton btnPlay;\r
4104                                 private javax.swing.JToggleButton btnRecord;\r
4105                                 private javax.swing.JToggleButton btnPause;\r
4106                                 private javax.swing.JToggleButton btnStop;\r
4107                                 private javax.swing.JPanel workPanel;\r
4108                                 private javax.swing.JSplitPane spTemplate;\r
4109                                 private javax.swing.JSplitPane spColour;\r
4110                                 private javax.swing.JPanel colourPanel;\r
4111                                 private javax.swing.JPanel colourSelectorPanel;\r
4112                                 private javax.swing.JPanel filterSelector;\r
4113                                 private org.tjworld.components.JIconRadioButton jIconRadioButton1;\r
4114                                 private org.tjworld.components.JIconRadioButton jIconRadioButton2;\r
4115                                 private org.tjworld.components.JIconRadioButton jIconRadioButton3;\r
4116                                 private org.tjworld.components.JIconRadioButton jIconRadioButton4;\r
4117                                 private javax.swing.JComboBox filterHistory;\r
4118                                 private javax.swing.JColorChooser sysColorChooser;\r
4119                                 private javax.swing.JPanel tintPanel;\r
4120                                 private javax.swing.JSlider sliderTint;\r
4121                                 private javax.swing.JLayeredPane filterLayerPane;\r
4122                                 private javax.swing.JPanel templatePanel;\r
4123                                 private javax.swing.JTextPane jTextPane3;\r
4124                                 private javax.swing.JPanel templateControlPanel;\r
4125                                 private javax.swing.JPanel templateSelectorPanel;\r
4126                                 private javax.swing.JPanel templateSelector;\r
4127                                 private org.tjworld.components.JIconRadioButton jIconRadioButton6;\r
4128                                 private org.tjworld.components.JIconRadioButton jIconRadioButton7;\r
4129                                 private org.tjworld.components.JIconRadioButton jIconRadioButton8;\r
4130                                 private org.tjworld.components.JIconRadioButton jIconRadioButton9;\r
4131                                 private javax.swing.JComboBox templateHistory;\r
4132                                 private javax.swing.JPanel ratingPanel;\r
4133                                 private javax.swing.JSlider sliderRating;\r
4134                                 private javax.swing.JPanel statusLine;\r
4135                                 private javax.swing.JLabel statusMessage;\r
4136                                 private javax.swing.JProgressBar statusRed;\r
4137                                 private javax.swing.JProgressBar statusGreen;\r
4138                                 private javax.swing.JProgressBar statusBlue;\r
4139                                 private javax.swing.JProgressBar statusTint;\r
4140                                 private javax.swing.JPanel statusIconPanel;\r
4141                                 private javax.swing.JButton statusIconModel;\r
4142                                 private javax.swing.JButton statusIconEyes;\r
4143                                 private javax.swing.JButton statusIconTemplate;\r
4144                                 private javax.swing.JButton statusIconColourModel;\r
4145                                 private javax.swing.JButton statusIconColourView;\r
4146                                 private javax.swing.JButton statusIconDirector;\r
4147                                 private javax.swing.JButton statusIconFilter;\r
4148                                 private javax.swing.JButton statusIconLanguage;\r
4149                                 private javax.swing.JLabel statusState;\r
4150                                 // End of variables declaration//GEN-END:variables\r
4151 \r
4152         /** Pairs of active & dimmed icons for common actions */                        \r
4153         class ToolIconPair {\r
4154                 /** Active icon */\r
4155                 public javax.swing.ImageIcon active;\r
4156                 /** Dimmed icon */\r
4157                 public javax.swing.ImageIcon dimmed;\r
4158                                         \r
4159          /** Default empty constructor */\r
4160          public ToolIconPair() {\r
4161                         active = null;\r
4162                         dimmed = null;\r
4163                 }\r
4164                 \r
4165                 /** defines a pair of icons\r
4166                         * @param a The active Icon\r
4167                         * @param d The dimmed Icon\r
4168                         */\r
4169         public ToolIconPair(javax.swing.ImageIcon a, javax.swing.ImageIcon d) {\r
4170                 active = a;\r
4171                         dimmed = d;\r
4172                 }\r
4173         }\r
4174                                 \r
4175  /** Provides common mouseover hilighting services to all tool bar buttons\r
4176                 * Without this container class, each button would have to provide it's own\r
4177                 * instantiation of the <code>MouseAdapter</code> class when it registers\r
4178                 * a mouse listener.\r
4179                 */\r
4180         class ToolBarButtonMouseAdapter extends java.awt.event.MouseAdapter {\r
4181   /** Default empty constructor */\r
4182          public ToolBarButtonMouseAdapter() {}\r
4183                 \r
4184                 /** mouse has left the house! \r
4185                         * @param evt A mouse event\r
4186                         */\r
4187   public void mouseExited(java.awt.event.MouseEvent evt) {\r
4188                         toolBarBtnMouseExited(evt); // indicate mouse gone\r
4189                 }\r
4190                 /** mouse over the button \r
4191                         * @param evt A mouse event\r
4192                         */\r
4193          public void mouseEntered(java.awt.event.MouseEvent evt) {\r
4194                  toolBarBtnMouseEntered(evt); // indicate mouse over\r
4195                 }\r
4196         }\r
4197 \r
4198 \r
4199  /** Receives an event from a selectable descendent of AbstractButton\r
4200   *\r
4201   * A component that fires this event MUST keep the className of the L&F it is requesting\r
4202   * in it's tool tip text\r
4203   *\r
4204   * @param e The event caused by an item state change\r
4205  */\r
4206  public void itemStateChanged(java.awt.event.ItemEvent e) {\r
4207                 // cast to an AbstractButton so menu items and tool bar (toggle) buttons can use this same listener\r
4208   javax.swing.AbstractButton item = (javax.swing.AbstractButton)e.getSource();\r
4209                 if(item.getClientProperty("ButtonGroup") == "LandF" && item.isSelected()) { // only make the call if this component has been selected, NOT deselected\r
4210    setLookAndFeel(item.getToolTipText()); // change to the L&F which cleverly is stored in the menu item tool tip text\r
4211                         if(helpWindow != null) // change the help window too\r
4212                                  helpWindow.setLookAndFeel(item.getToolTipText());\r
4213                 }\r
4214  }\r
4215 \r
4216         /** Choose the Java Look & Feel\r
4217                 * @param lf The L&F name\r
4218                 */              \r
4219  public void setLookAndFeel(String lf) {\r
4220   Cursor curCursor = getCursor(); // save the existing cursor\r
4221   setCursor(new Cursor(Cursor.WAIT_CURSOR)); // let the user know this might take a while\r
4222   \r
4223   try { \r
4224    UIManager.setLookAndFeel(lf);\r
4225                         \r
4226                         // now adjust the frame decoration depending on whether the L&F supports painting it\r
4227                         setVisible(false); // hide the frame while the decoration is changed\r
4228                         dispose(); // detatch all of the native windowing resources\r
4229 \r
4230                         if(UIManager.getLookAndFeel().getSupportsWindowDecorations()) {\r
4231                 setUndecorated(true);  // don't use the Host window decoration\r
4232     getRootPane().setWindowDecorationStyle(javax.swing.JRootPane.FRAME);\r
4233                  } else {\r
4234                          setUndecorated(false); // L&F doesn't support decorating the frame\r
4235     getRootPane().setWindowDecorationStyle(javax.swing.JRootPane.NONE);\r
4236                  }\r
4237   } catch(UnsupportedLookAndFeelException e) { // uh-oh, a problem\r
4238    try {\r
4239     System.err.println("Couldn't switch to " + lf + ", selecting Cross Platform instead");\r
4240     UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName()); // try to recover gracefully\r
4241    } catch(Exception g) { // major problem!\r
4242     System.err.println("Couldn't return to Cross Platform L&F - eeek!");\r
4243                                 g.printStackTrace();\r
4244    } \r
4245   } catch(Exception f) { // oh pooey, what do I do now?\r
4246    System.err.println("Couldn't load " + lf);\r
4247                         f.printStackTrace();\r
4248   } finally { // do this in any case\r
4249    SwingUtilities.updateComponentTreeUI(this); // update the view\r
4250    pack(); // make sure to adjust for potentially altered component sizes\r
4251                         setVisible(true);\r
4252   }\r
4253    \r
4254   setCursor(curCursor);  // restore the cursor\r
4255  }\r
4256 \r
4257         /** Run as an Application\r
4258   * @param args the command line arguments\r
4259   */\r
4260  public static void main(String args[]) {\r
4261                 new CID().show(); // create and show the application - everything happens in the Event Dispatching thread\r
4262  }\r
4263 }