Main Page   Packages   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members  

CounterExample.java

00001 package edu.ksu.cis.bandera.bui.counterexample;
00002 
00003 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
00004  * Bandera, a Java(TM) analysis and transformation toolkit           *
00005  * Copyright (C) 2000   Robby (robby@cis.ksu.edu)                    *
00006  * All rights reserved.                                              *
00007  *                                                                   *
00008  * This work was done as a project in the SAnToS Laboratory,         *
00009  * Department of Computing and Information Sciences, Kansas State    *
00010  * University, USA (http://www.cis.ksu.edu/santos).                  *
00011  * It is understood that any modification not identified as such is  *
00012  * not covered by the preceding statement.                           *
00013  *                                                                   *
00014  * This work is free software; you can redistribute it and/or        *
00015  * modify it under the terms of the GNU Library General Public       *
00016  * License as published by the Free Software Foundation; either      *
00017  * version 2 of the License, or (at your option) any later version.  *
00018  *                                                                   *
00019  * This work is distributed in the hope that it will be useful,      *
00020  * but WITHOUT ANY WARRANTY; without even the implied warranty of    *
00021  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU *
00022  * Library General Public License for more details.                  *
00023  *                                                                   *
00024  * You should have received a copy of the GNU Library General Public *
00025  * License along with this toolkit; if not, write to the             *
00026  * Free Software Foundation, Inc., 59 Temple Place - Suite 330,      *
00027  * Boston, MA  02111-1307, USA.                                      *
00028  *                                                                   *
00029  * Java is a trademark of Sun Microsystems, Inc.                     *
00030  *                                                                   *
00031  * To submit a bug report, send a comment, or get the latest news on *
00032  * this project and other SAnToS projects, please visit the web-site *
00033  *                http://www.cis.ksu.edu/santos                      *
00034  * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
00035 import gov.nasa.arc.ase.jpf.jvm.examine.*;
00036 import ca.mcgill.sable.soot.*;
00037 import ca.mcgill.sable.soot.jimple.*;
00038 import edu.ksu.cis.bandera.jext.*;
00039 import edu.ksu.cis.bandera.bui.*;
00040 import edu.ksu.cis.bandera.jjjc.*;
00041 import edu.ksu.cis.bandera.util.*;
00042 import edu.ksu.cis.bandera.annotation.*;
00043 import java.awt.*;
00044 import java.awt.event.*;
00045 import java.util.*;
00046 import javax.swing.*;
00047 import javax.swing.tree.*;
00048 public class CounterExample extends JFrame {
00049     private AnnotationManager am = CompilationManager.getAnnotationManager();
00050     TraceManager traceManager;
00051     private Vector threadCounterExamples = new Vector();
00052     private JButton ivjBackButton = null;
00053     private JButton ivjCloseButton = null;
00054     private JPanel ivjCounterExampleDialogContentPane = null;
00055     IvjEventHandler ivjEventHandler = new IvjEventHandler();
00056     private JButton ivjForwardButton = null;
00057     private JButton ivjResetButton = null;
00058     private JPanel ivjButtonPanel = null;
00059     private JSplitPane ivjCounterExampleSplitPane = null;
00060     private JScrollPane ivjValueScrollPane = null;
00061     private JTextArea ivjValueTextArea = null;
00062     private JScrollPane ivjVariableScrollPane = null;
00063     private JTree ivjVariableTree = null;
00064     private JLabel ivjStepLabel = null;
00065     private JPanel ivjStepPanel = null;
00066     private int step = 0;
00067 
00068 class IvjEventHandler implements java.awt.event.ActionListener, javax.swing.event.TreeSelectionListener {
00069         public void actionPerformed(java.awt.event.ActionEvent e) {
00070             if (e.getSource() == CounterExample.this.getResetButton()) 
00071                 connEtoC1();
00072             if (e.getSource() == CounterExample.this.getForwardButton()) 
00073                 connEtoC2();
00074             if (e.getSource() == CounterExample.this.getBackButton()) 
00075                 connEtoC3();
00076             if (e.getSource() == CounterExample.this.getCloseButton()) 
00077                 connEtoC4();
00078         };
00079         public void valueChanged(javax.swing.event.TreeSelectionEvent e) {
00080             if (e.getSource() == CounterExample.this.getVariableTree()) 
00081                 connEtoC5();
00082         };
00083     };
00084     private int stepLength;
00085 /**
00086  * Constructor
00087  */
00088 /* WARNING: THIS METHOD WILL BE REGENERATED. */
00089 public CounterExample() {
00090     super();
00091     initialize();
00092 }
00093 /**
00094  * CounterExample constructor comment.
00095  */
00096 public CounterExample(TraceManager traceManager) {
00097     super();
00098     this.traceManager = traceManager;
00099     try {
00100         stepLength = traceManager.getNumOfSteps();
00101     } catch (Exception e) {
00102     }
00103     initialize();
00104 }
00105 /**
00106  * Comment
00107  */
00108 public void backButton_ActionEvents() {
00109     try {
00110         updateButtons(false);
00111         step--;
00112         traceManager.back();
00113         update();
00114         updateButtons(true);
00115     } catch (Exception e) {
00116         e.printStackTrace();
00117     }
00118 }
00119 /**
00120  * Comment
00121  */
00122 public void closeButton_ActionEvents() {
00123     for (Iterator i = threadCounterExamples.iterator(); i.hasNext();) {
00124         ThreadCounterExample tce = (ThreadCounterExample) i.next();
00125         if (tce != null) {
00126             tce.setVisible(false);
00127             tce.dispose();
00128         }
00129     }
00130     setVisible(false);
00131     dispose();
00132     traceManager.cleanup();
00133 }
00134 /**
00135  * connEtoC1:  (ResetButton.action. --> CounterExample.resetButton_ActionEvents()V)
00136  */
00137 /* WARNING: THIS METHOD WILL BE REGENERATED. */
00138 private void connEtoC1() {
00139     try {
00140         // user code begin {1}
00141         // user code end
00142         this.resetButton_ActionEvents();
00143         // user code begin {2}
00144         // user code end
00145     } catch (java.lang.Throwable ivjExc) {
00146         // user code begin {3}
00147         // user code end
00148         handleException(ivjExc);
00149     }
00150 }
00151 /**
00152  * connEtoC2:  (ForwardButton.action. --> CounterExample.forwardButton_ActionEvents()V)
00153  */
00154 /* WARNING: THIS METHOD WILL BE REGENERATED. */
00155 private void connEtoC2() {
00156     try {
00157         // user code begin {1}
00158         // user code end
00159         this.forwardButton_ActionEvents();
00160         // user code begin {2}
00161         // user code end
00162     } catch (java.lang.Throwable ivjExc) {
00163         // user code begin {3}
00164         // user code end
00165         handleException(ivjExc);
00166     }
00167 }
00168 /**
00169  * connEtoC3:  (BackButton.action. --> CounterExample.backButton_ActionEvents()V)
00170  */
00171 /* WARNING: THIS METHOD WILL BE REGENERATED. */
00172 private void connEtoC3() {
00173     try {
00174         // user code begin {1}
00175         // user code end
00176         this.backButton_ActionEvents();
00177         // user code begin {2}
00178         // user code end
00179     } catch (java.lang.Throwable ivjExc) {
00180         // user code begin {3}
00181         // user code end
00182         handleException(ivjExc);
00183     }
00184 }
00185 /**
00186  * connEtoC4:  (CloseButton.action. --> CounterExample.closeButton_ActionEvents()V)
00187  */
00188 /* WARNING: THIS METHOD WILL BE REGENERATED. */
00189 private void connEtoC4() {
00190     try {
00191         // user code begin {1}
00192         // user code end
00193         this.closeButton_ActionEvents();
00194         // user code begin {2}
00195         // user code end
00196     } catch (java.lang.Throwable ivjExc) {
00197         // user code begin {3}
00198         // user code end
00199         handleException(ivjExc);
00200     }
00201 }
00202 /**
00203  * connEtoC5:  (VariableTree.treeSelection. --> CounterExample.variableTree_TreeSelectionEvents()V)
00204  */
00205 /* WARNING: THIS METHOD WILL BE REGENERATED. */
00206 private void connEtoC5() {
00207     try {
00208         // user code begin {1}
00209         // user code end
00210         this.variableTree_TreeSelectionEvents();
00211         // user code begin {2}
00212         // user code end
00213     } catch (java.lang.Throwable ivjExc) {
00214         // user code begin {3}
00215         // user code end
00216         handleException(ivjExc);
00217     }
00218 }
00219 /**
00220  * Comment
00221  */
00222 public void forwardButton_ActionEvents() {
00223     try {
00224         updateButtons(false);
00225         step++;
00226         traceManager.forward();
00227         update();
00228         updateButtons(true);
00229     } catch (Exception e) {
00230         e.printStackTrace();
00231     }
00232 }
00233 /**
00234  * Return the BackButton property value.
00235  * @return javax.swing.JButton
00236  */
00237 /* WARNING: THIS METHOD WILL BE REGENERATED. */
00238 private javax.swing.JButton getBackButton() {
00239     if (ivjBackButton == null) {
00240         try {
00241             ivjBackButton = new javax.swing.JButton();
00242             ivjBackButton.setName("BackButton");
00243             ivjBackButton.setMnemonic('b');
00244             ivjBackButton.setText("Back");
00245             ivjBackButton.setBackground(new java.awt.Color(204,204,255));
00246             ivjBackButton.setEnabled(false);
00247             // user code begin {1}
00248             // user code end
00249         } catch (java.lang.Throwable ivjExc) {
00250             // user code begin {2}
00251             // user code end
00252             handleException(ivjExc);
00253         }
00254     }
00255     return ivjBackButton;
00256 }
00257 /**
00258  * 
00259  */
00260 /* WARNING: THIS METHOD WILL BE REGENERATED. */
00261 private static void getBuilderData() {
00262 /*V1.1
00263 **start of data**
00264     D0CB838494G88G88GDC3438A8GGGGGGGGGGGG8CGGGE2F5E9ECE4E5F2A0E4E1F4E13DBC8DF8D44535E868A3FEC2C50B9695B5DA2A54461A3428E853163678CADBECE325BEFCAF3634E24596AB6F092FD1791EF773C382C41248DF00G8B04E4834B121F4D8FA1017CECC27E33108871011FEC32B7494AE6F75D3DB189C6FDE7E66E193DFB77EEFE28BE3E6F30BBE7661CB9B3F3661CB3E7E6A3EC5B9F112CCB58A6883AE4C17ED7269304699785A17C152F8FA1AECB0856890AFF87GB2054D
00265     4DC970E9003AA57F9B2D4B902A6AD321DC8965706EE85DCE783ED548AA2C6E06AFA17A49023A5F468D5CB4C1BF3B301F94DA7E7361B4785C82D08DB8BBC014C07AFF73F0160C8F07729679BB81DD02A08C68C81B4DF5D98A7CBA39DDA554D9815292C81B6D3959F2FD9460C81B25709927E3ED574167C6AA5D479D65F23B185485027DE7F3425EA1FDA978A3F4A5B05A9179D318DD99C6A6A2D1B8E3B8C97A37DE69BFA55A07CCD7FCC326DE074F54E3F359C52F4D54B364B0753A07DC126895C7EC039E27D8D1D1
00266     474A752CAC2C26B2975625D2FEA0B31425C4027BCE9D19A7A3FC37GDCCAC4397F5ED6A94BF57915C7843D6B6E10F2AFCAE47246A57A654E3E7D4E0419C9047F295CB419AE9B4ADDGCC16FF49C5D9E213D0160F4BC95B5464E81D9E20BC997165A7885E8A658100E949A8631FCF230C4E014705D5BF39AFACBD040CF31319EC0B137DB2BAC146DDD4D73E391B2C77FA526F06E81D99209BE084E0AE409E2A2367F69D014F1A9E294EBDB868F655F8BC35CE3B374DED971D703D2282EAE45CB931576D358B825343
00267     52BA2306BC88D19B82F510G9B5B858175E6EE42770411079F223A209E1B653F2F8FDBA273D83141BF362C94B2EFFBADE45E6281CF68B6133DC371C7A97ED20A9F4F566AE12A8B24BC86F5ABD3F01E6798D01634DB668B737EB1ABACC5C3966B058743AC29CC06CB29FED9589CFF1CCD66B89C707381E2G16832C8358369167F85E2E6209663809E8354B666C9C6A71583CD26D104389FBC01EEBCB6EF8F32D850C6E5C1469583CACA8D62ED1FC73AD1A7362E93DBB2CE0A31B0F460D7EF9E1FD5F98326F010D41
00268     3A31052F610BF42F0CEDE4EB1848712FD27CCC851E2D6DB0451372BC2893B6C56BD87B225384EF5F245611EA0A1F3EC92DA327CE200E4C073A544D51BA363E697B08BDF4C2B99CA082E091408A00F5G29E93846AF6DBABE49FDE4D52CAF230D583D83BE459149EBEBF279A41B2BD7BCEF73BAECBDCE51A748ED3E331B4CEBCFG5D77687E6E05BE4E08AE301812436D826E36C1911449475ABC36BB1334710A34364BB1A8C287039E81797EE477D6B2BE1BCFFA4FE337C9223F852B7F45EE22931F584E83C7E0G
00269     5F3B5348FC35D11BEB006F16B41C2B4A7D84B78F4A8B793C546EF997BEDBC039C5E7C5054551CB4430F9C7D1C78FD940B18ACB21FD76BBE0978116GE4ED61763A9BF5B17E456F89CB9BEE5254C582E3DB18DE4D59225645C25AC78C6063G5683E427C76BAA535127BED2572D62A549B2E01948276E0F4829ACE73F232D572C0F5F847511A26B9B1693C36CC7E5B9B9441EE2737F201E5ABF985788405CF4DC034F766819EE565AFCA2EAE3079794C9347BD704353D1ACDFC0D78096812AC22C784CF6C12FC32AE
00270     DC173D512F27FDEE2EC3B3A81E582DBAD0A49F474F4A4EE4F8602154FA2C3F15565BA4496B68991244CED1129C2EFEBF7DDDD496DF00C97449E30DBCC0469A85E3DC8A30020FB5F76FD6053E353A5DD706BCDDE4A749FAFB9F754FEB20FDD2862E7F5F4AE90C454B2F53323F7E33F2755AA1901A295857507AF1DB48BE3474625A7AA8BFCD76815A4FE4993F1157B750FA8B0C4989B087A086E0951F874B096E90747F2CFCFE99BF20FD2879EF7E127AE0BA32EBDFE89D576F5356715CFD5ABAEE5CB73E8E1B77E9
00271     69B02BBB390F0C51BD6CD26C096AFD44DE763ADDAE11EECCCEA23018796FDDE49C8E17C33A6030770BD227632AA88866CC225BF6EA1353603BBE936D6770A1341F76735F918A5E79C2B35E1AFD6F83E1A319CC17E7E67A6DA71329E6BF59EB22D39C04092291B8431F2176DE467B92A94EE7EA00CF3D611C6893E13C1264F699EDF4A4A67D31E3277401813C516BEF76E18DEDD6CF1645E748BF1FDF4074E02B70C5F6B3655960768E5B3C76093976A99B8671ADC43E379E32D03E35365EAB93B36D612D02B896B1
00272     FEBF2DE2E32FF33AFD62448CFB7D4D02B896230C351F1F27BCB1A068720A22D1027FBAE15EC3737EC4517C43AEE5F3FF9FE6749BFFBCC856B79256FDB1400ACC3425BF5FCF6A51164A8E234E6D14B9C11D75DD22F7FD543F22AE2D4DE46752CA28E375AFE9564F65758375DA75113C7EE54D7A453C7E23862D7A656F62B8227499E48F0A9F8F0990DA11E9E991C7B1BE523F2B2ABBEFF38E79632E1F68096DF1AA7C8843FF7F00761ED8F400780EAB1CFF4C018D82091F98CF360723EC0427476B988437CB9C23FC
00273     BEFFBCD7F9BEDF8D721333FC5AD6584FG0C56FD0654290E41C264D6C27F69E9BC3B17C3598A60594AF8CC5F4A76B4EBE72E46F671243C4D5F2EE01B325DEA5E6E9260A5C53BB9816D6655E03B9840AFD734DB97504EDA0B6D323743F99420EBBBEB67594E5AC5EC2763606779639CF78B453D8A8E6117C9F8CEE94BD066A0AE596E5634ED84D6497C63372B4FEF7BF3885F2C9D51BA438E541752034A98224667F377BAE878AC2F7D0B8715F60F617EFAF093FC76B93CBEB84B594591541F3587092CA43E165132
00274     8EFC77E81590FCDE2837BBA43797C3343AE13AD93B5CF59062B7028A56F137F05EA18E939D21B9073BACB8DF15BB506E5FD1244CF30C2D199636B9445CC8BB6438F907FFEE623EF9E782633D2F9EF9AF5F01B90EFBB8AEEDA762748D0833F05C3D9CB7369375778DFAE621B91F0FEC1F58C6CC3EE1701795954D8D645C42688E6591BA627B976E44DC492CFC325F56C0B9A98B62F7GF6EE1BCF4FF3043799F04EAC3489FB2FAAED42FC40AF83D88B406C6A66EA42DF364E721AEC2FA7EBB60ECB1275CE30D64BFC
00275     A3ADD1C277935F504C4FACFBE3E6D852AEB62746DD7E391D17F0EF521297B10F74C1B54ABF82ED22F6217CBF5E2FA57F6ADDB80FA9677792FD9B4F5189F8364D2C41BE56833DF9B776F12EC62B8F67EE6C43BA389BBEC37BBD647FA467BF8DE897F17EC7AD1AEB40797BDA48FC0F6386E57E233548BFE98F7815BD48FFD119123F847839GB1FBF00DD756D2FC0033447DD762B8A4903BBC211B443CD5D1002D1995935256446EE1EB3DEA0F5A56A4523307109D2D5B160D36664A21CC052DB9871D5BDC7D44244B
00276     76A3A7070C857C09DCB664A48B32BF91B0E63E4FB215BC0FA19B4F6B55F9E47EAA215C8D60818887D840E5FBB8E7423CD57D48B8F92BC375D311EBE9B61EB366CF09AE0E539DEE188A5DDACEF77F14681276A21DA10F50E56D55BE839AD5786A3D181B529DA17A5C35D71D635ACC71763D6A9C57B772B147A5C15D8A5E7F032755F2D76E8B6C33DBD5E6F40B0268CC2A72180A0E6D1974CE22B79A361B6DDE816F991E49D346B1F30057A200B800357B50B7F4DDA5FB017824547D280F3799C8FCD08D65CBG9240
00277     EC0005G31G6B7623DE7ECF0E166F8C544BD00E531F03E0F351DBFDEDF378F1901DFA8E376983695838DF27E7A6E2D30CFADC471DB557A64361A0BA358CF6CD99EE2841399F63B27C7A9AE5F8EEC29996EA4A50E341F9D846E57822765AE41895C42716A1690016BEC7F56D5456E76289E4DDFE3AC4294B594027914089B06DG6A722BE529B24F3987D0171F4DA738D8A82FBC00FAFB71B039EBC2DBEFF5BBDC1200F6BEB5171C935CDEC73F430538F7A82E576D258982163FFA1C4E5BDA6019F69079B666054E
00278     E7F464E967B35E4B534EE7DC4C9BBFE7571B97AA5F41642B28C77974A09F437D10634C9CD7590038C60E7B9147DD623853B49674C0F98E475DC6F18B203C1863365379DE8565780328CFA9C7E89E6F9016B3E91958A2D63EBDBFD44E0D50CC569F0482564777C37671E5647576D2BE3F5C11CE574C6793FD5470D9EC12CD2EFBC95AAEE864135AA15896B0477027539B65B675123B2E106F0F5772C3446AD69BE8B05B9F35C754361E64CD8BE07EAC07F0FFECB6E0BCFF69904673BD2344274D01F2A440923EC66F
00279     DFD56F65B828DB8B1014837E9340189338B6729D0AA1749EF840203D879EB2107D68F38FF9FBC5351EAFB4E471BA3F77E81244C1B2F52C4D0FA83DE473760BC17BE48925E7F521681FB2045ACBECDD6E28D62ECB915729B7772B67289A66248BE0GE0ACA7D8F7993F769AA53FE24E6F6BC1B6FCB670188F3088E09940CA95CF46AF21D6494F4C79758745236B00BE75B01C5BG8A8E07126F51GFEA5DC8F7B6B77EA6BE1E72F576DF492ED94B07678542C54C74BE196FBB861F35AE154470D255CDE9FC6FDCCAC
00280     A37A98CB5AG8839280F6B4AC24506D95046189BBC9636367F11CFE23891DE7EA3AD0F72B109B5DB38FE543B6C32B3E0390ED8EA637F84F0DDA2624ED29BFAA2C1903E46F13F2338D9D08E6338CEEAC31F81C3778547AD2738F4205D49677AFC9E318BF6314FB66414E8423243A3DFA19239F3693B05BC1C276ADCBC33C58F1338218F8E6B30841D9E31D7306611368F7118AF865A46822CA5BC202EA08F4FE346FC42C3F2C874FCB3B70F3CF7F90324F8E419BCE37B85F5EE4B6230B95D7D3003A46A10DC786663
00281     6A910C9F6272F08DF76711B55CE600F5813098F08DB38C6AB53CE4E06B66014F690660B5E471783354C64DB530F8FCA3473FC0718B95F896278FD0BCA947C21DB99FFD1307463AF3219C49F10FD35CE2A847F2DC7E2784978765F59CF7B68BFDDD6A9144755098329B4ACE0E4B54E39F53B86EBDBD76B107639E55E39F919C3722997BD848F15F2EC1FEC9C79177F28D724B623866DA641743F13FEFC4FE659C372586E58E67384FAD5847BC0E7B19857B086238C37558C78C475DD405FD449EC55D3C53149D42CE
00282     F81C8E2ABCCCF7FEE0463C145E48F527042CDDB714BDG61C6541DAD25CA5D09B0866A4AC2E3A85D992676E429D1FD463B0E62D79855E73C0DE5F846DB8DF52D47F01C1B4BF16CD19C97DE08E3DFF28C77D6B8BD0BAA06ED3A60F0595D4330F3480B8249E732B4F5DABBBA6BBF6CE87F302E953E303C461F84E5DEC3E8FDA4E4DEE375B1B6567572E73C6F2D6B59FCBEC36D8421B11BC0A7CD847721C1191BA1B2BE1E4062F2D6FFF3C0BD71037902327E678175C4560EE4E57D6B8175498AFAB62E2397B17F59D5
00283     7A04E058FAE348F7DE8BCD72BBA379F33E6B2D6B3B7E76DC8263F33CDCB9BF8B9F3AAECC9702CF46F1C61FFDDC7D7E600BA3CA9D32C23DDDEEB3821FB30F0752212FD3FB96F11C69CA8A475FC1710B94F826C3FA0AA765D828B397203E645178EBAE14A3B96E5EFC542BD80E5BB90AFA352AG75BFEE145C1DE494C66B8CG9600CB05D877B22D334AF788121C7BE7F52E51EE19CEBD36CB9A387140A237B7A868D89FB3C6712ED8CDB355BB6994059E8546A4B3281D9EF40903EE17231779453BA96EC5G299077
00284     DF6CD5F23610A048E4FEEDBE8923E59E9DA6F2B7C072287DDEF0EEF6742F67283D1F8EBCE683A495D19F12E5C1FD5318A7543DC499E2214DAA006D326C7105CCA7F43C6F517DE4EC220BE4B96DF23F337763FEED05BE992E027A0527GAE830E0D61E692F24AB4FF24759E289BABC2D9DFEDC6D99794E947F4CAD9E30A82E50DAD724B4A7A788D7591CF923D64B2B80A7DB278282FD983F571DC06B50DA8C3CEF1308C49AA994A0B83E5E8ADD64BD0D603F353DD0CF373G75C93FGF09623DC6DE63FDC2D54BF0D
00285     C1DDF8B14AF5FF954A35D0C32E9415DCCBD5F245A96412F3F66671F2142BB57A10ED8875EB6BE5FE499CFFBB45E7187DF8590614E02EBD876A424DE89B8E5318F98D14059244FDD20A76A223043F15A9A37B201217E750B2396BE3657432EE39FEAA7BF3AA7BB8D3B01405328BDF8630B5B7D33F5C8563388C40E260FB8AB1861E8938880045GAB8104D24C8B3DC5E38FBD14ABCBB1FFF32A60A8FC1E37FD94FC8B88C82B578D1139B44A3074F69A5F60864535938173E9A9DD689B67BC7CED21FB7DF5A16F86AF
00286     1532F59A13BF8BAE3FF5BD79E4E391CB49F8A321EEA9409A0024B2088D818A4AF0ECDFABA0B2120CAC08DFA3C9365E81FAEB0A09DAF21169C7138385639DDEC6A4E5BCFEDDF0B8547CG07E608F9BAFABE0283F6172DDF40BC54ED74FCE081B93A4BF84CEDC4BFB846F165A69E8FF35C6ADC9E8F17215E4E213EF5851457822416A3BE0262493D16311C658699BEB7AFD45EE7BCA0FC71BB69CBD93736CC6D7FCEDFD39FA90A6F6ABD926C7FE20DA48769340D3A0760FC9AD3CE6F718D2867D6A88FG4C8618DF4E
00287     6E77587E78950DAF12CE40F7GAB7994CC237AF1642ABC4146477AFD260D68246295110CBFD5C162380017C01CE6E78971337E57BC08BF15CCF8A9DE654878C72E124FBCEF1EFC969DB9A1F0DE8DD964AC6A920775A426B65906A5D31D5B69769A0A8A4CC68AA5A57972D97476AC1ECF00B16C27743016827EDBFBBA9807675F3E8A721D6D4BEC9F6E4BB5E7A2857B60DDE1640ED2730ED11EABFD05BF560CDF7FDC82137D017DC416BE1B53674F711D5553317661D86FBF699F6BD34D139F2B3E85475ADD21BDD6
00288     467F73CABF7F97EBE85FBD5877F0153F6ED70D136FFBEF9376BDFB5C3EBBCE79793757844F450FADD41EDE14E766E9FF7B69D51317675F2AD01E25634AD3D6C3CA4C367C560C36C5B849EDCB894199215C4AF177D09C394F9E60385C127176BB211D2C8DB0EA3415ED4A38FD04FAFF2C85DA7E174DF1E5A931A9BDEEAFCD18AEBEC973D625A4CE18895F8D15743DC729DE26C92A5408EDAA15364251C9EC3072059C1B7702DA7F3AFED6B8513A9618F1DD1FAC449850D3096759578A5567591B8565F974F0117ABC
00289     2B8B283FD024BE4F5E95D0FFC3117ABC0B744C878AA5844FF345AC8C106BD2CA88ADF9936A30B99DD7E9922F939A3A7A19AF956AC87D82984B920055G6B499CD7210F3E316420C0FD3406FF2E37770B18C3407EDC2521F36DC325937F166173D2FA9EF203A99EA47C91BF3D1468206476D0A4435DD0CA664A6B689F10D8D399FF930DBD1DE29FC533B5FE6808D22F182FDA426FA70CB0DE8B4088404CAA26BF2C4DCBC6ECB39F70B1G2BG622BD86E187933FE9AA7E41C0A56E583B41EA23837835E6BE96B7A73
00290     8662FB185B2157A6B27E7795E4DC1D1268E1D8ECFFF49F49518666C0F97ACA4EF15FEC523ADF1F8DB24DBF056F22C68C787B3498402DBB05B932424B81B9B23291AAAA4EF89D76DADBFFAB7572EC8FACB6609EB01E469C595FA9CFBB1447G661C4637E6D79351EF2D4FFFD4F05EF63FE62EA53B6556304853EC5EE3CF7B7DD6776DF7A6307D7A830BFF3F260DCE468E3336AD23E4EC1DA07B00003E54B42274254BF2FE901629A1930134EAA6CBF935DFA63FBD3CBBCB99E3BB214D346A716DAC5BF3FF29A70319
00291     83ED23G16832C8190EAA0BE86B082D483F481B88126834C850884D88C908B308AA03E867768F7ABC8FEAB5499C1DEC03AD13DB6F62FAC3F91E8D14A1FD69B2D53570EAFBF23BB582424B383CD632468622A14F4170046B3819D0B8D7FE2560F53E6FA2D525E4FC8FFD7705BFB65A5902B2F732653FAB0110ACA36F7FED824F51FBF9778C756E2AE47D1EAA0FB165A1186DBAF4C7328097E02CAECF58F13B75035E07B1C2C5E104F74AD3CD819A7DC755C2CB04CFF284732C49E4B72DAF59E7591FEAF15D407323C
00292     C27DA231F32C1F4F5214FA3D48792D10FADDD947788F54E969752F8A27FAF6145FA95405367D69F5935B7EAC7A0ED7841B5DB56A116FC1775651378FFDFD906CE33B03F5999C5764333AFD8E625518ED3B6FA8664AA3E0ECAB6A5036A56B49B9D11D7FB7B107D0D1D1AF758E405A496EC17675FFBD0AF6AE4302F6AE4BC878B7C279B2400885EDEA7AB1342933813754027D7E4534C78832292C9FE6D2653EAE9C433E04FA6C6BEB14E7B9142DG837518DFBA58A8F0FDFFBEF7B236106947EFCA157AC156BCD45E
00293     FBDA3D1C6F2E8F548FA66BAFCDF8E73F0A4B1AEDA632E6B7C46B4CG2D8D9817FEBE65BC84231BF90DF4CFCE190E653CFA68BBBAFB03BF374670D7A85E23403375DE47FD6898542DEC409C0E350958904B99508F00910059GD1G4B4E203DFE2C2EC018600DDA175B53CA8C0962190D7C5B36E6BDFC2E84DE6B81740D513AF200D6GBB4088406CC66C679F96E22BC279852604FE37404EA00F5073EAE4A39BAF43BDC1F1CBE49C637DE6FD683D2EEB18F82FEFEA500E73B29A02633C6D8D5AF15E1E86E51CA77F
00294     C62B016C3BFE70F95D3C5DE10EFB1F630ED01E84F741E12731814397D039883ED1A49DA23E144AB5CCF15D789BAD856EFD7C0DD68331D7B064813797E96B9B081D6EF3B81D2C5CC45BB8DCE03E78FC34D3999D9E1BC26ECE0EFB1F2FC5E5CB707A5434A8570761CEB48537BB55945C6E352A60F671D54AF64C4EA41690196BC492FA229DF82D88FD524AC63483AF9713FD1155942DABGE8EC42FD710796B287171BD0B77F5CF0F09C5DA4EFB359A98577759381F72D927089EF1ACC2C35210D6C17F950F691C09C
00295     40BA0054E658BBGE60056E614A96F4CF839D69EE9ABA2A9A65B022393591C01E62D37090FCEC837CFD5E6F42FCEC827ED63E6D25FB53DD9ED63EE2578594DEA9B374F08B6EE9E5489ADE853379F3BB65BFC689A69AECD190E0D6B8D6ABF6DAD6A71A61828CDEFD10F77C66E434720EEE58B6A2E2B1D5A74D63069G53816681C481ACEDC55DF1B4960F23BB675CEED49D8994C7E9F671B760262037ED2DCCE75642E7D2DB28BB1C59546FE635295F925CC17106B675DB0203E60C0F4A21EEDE9B2E69GB9C2607B
00296     E54577B78D5712C71E5A7AEE8D798E724BG36BE6FB70576D7171B345FG76B5E93F03F5B60D7F3BDE29A9746FFABFED8A7EDD6FE34D21E57BF173443E74974D5A3E742966E0DF7A3BE6EDDF4A5E79847A5267E53EDE7EA81461DFE8A6F1A34B7B3759DC36FEBA96966F5A685F3E1173CD5435B2FC7648BBFEBC3AD6F97D630B143AAF34876A7A3676D03A7F815371F6356E77D3FCF93BDA77DFADC65DEF043A48F66E0BDA08EF73497E06794027CB51AF9E55A16E59D2740B2F70F94BEC8B3DF6D9ED932F5D01B6
00297     6D354BEB8BDEBBE31B765A9535852FDD99656B957B61E424DC3B2AB62D35E36F0197EFE5EB64F490CBC57FF288DF23DB4892495F6FD4FC4FB1FE7576216A7F210F370F794714EA72FF3F7958D75F7703DFE99FEC5D075BC36B69676D936B690CF6EDBD1D559E2C273734EB6B695CF6251E32BD75A24B1DF6C46BF2BA700E55DEC0F00DD03E4CF1CF97635D085401BE6BB6B309A9A3F8B90216977132417CE54DAB69C3FB6DEA3E34BE346EC45858530B71FD458ABE9F9779FC2C66636D25635FE64572A0AD977072
00298     6B456349CA687EF9DD5EB26EFC7C336FAE58D9E43DA9785EF96BF1FE6FECE5774E8370B9E6E5F76F0C6E53826D37D65F207AB6875AC6D871BEFAF531FE9CB916D915B9477D87B1DF5FEA6B2179FA769B54274D4AFB1B1532ACC9E723F56CDE2B3C182CCF56D93C577272BEDB4F862F4565334ABEFF6AA5361A66B13BE06756F8C59B6F776E00FE25336C1EF05ED94CD51DBC0EF1EE9460D61F45376FE147B18725BF076739E85A369B4A9E0070F31803FA3EC360327CEB7164737149E6928F343B3D744CAD7F1624
00299     AF44EFC968F4B259D2CBB06794F18E57333DF8AA39D846670EE2BC332E60FCFED7CC4ADEB9A6E1B2BD75599EED1978ECB3FE3FB763DB730CCE5CE7B5472F6D1C53F10DF461D326E3F15261821A4B6CD41F0FCC945F5529BE9FBD467566B254AD6163FD27C42BFFC3177CB7A461535A25F57E3D27D8C9E707B6A3DD1339C77877106F5DE682FD8440C200258ADE0C6EA8C93B495F4D0A6FBFBA7E557B78E73F52BE18CF4821FBA48E463D268B7D448DA568A762B96EG75390D6F01FFFD0F3F7DAF46F8F786677743
00300     E2E53C4BF07FE946B7D192273D173F758B6738E574F70F11D0DE4CF1BB683B3865D0DE7D9E6E3D13A501EFE37B493396013D130CA841F7126B5F1B783DEB46F908A14E7B5FC9161FD73FF7AD27EFED7B5C90958758FFAB1D8F8B34371E47BB5D5DF45EBCD09EBB0FEF789615220FD9G389800B80075G5997F0BCAF1431BB8C07C442A7466B4DB2342B153C5D317260373716F27C6D0175825A6427CB50DEDD3EB05977C3783664F48EA9316F65647AC31E879B758F01365A5463843F485AFE106BEFFBDB69645F
00301     C67C417F5B298B78B6E2C7197AED44CB0272EDC3E35978EFA32E16295FC66C55A96BA34BC23D0DE072E716873F7139C87F061B649D92653D99E03FE2C176D597A6E307DE8848C94683CDDA7778F4EC9F3CD2921CF37D2F12605C6C1B7C8C3A171FC15F66E7D0B20F6CEF891FEAB4A5C03BD704E4C9C8171F87686577811210CC9F4AC9C20A7CB0CE921248B3B828202F5EFCDEE1CB60526A3E3DB3AC6326622184E1C3033081264EB3E0EB9212695F15E89592FAFD12302715109C8712633D0464B8A56C7458FA45
00302     1397050DFD5E7E9E5ADC9292AEB6DC84A634743170391052AAEC1286E8A28C763CA46C74F33212F418DCF1F2047C99CA616DE54B5E7640BF90B21D8B59C49367ABBFA92EC8FC61DB0989C2D21330019DCC1A04A4F23AGE129B3EF929261E0C2B9ED12017C5B64A302A48770A718CDDFE13BCDC16D1671F6411493E0E0ADC93029BFD4B1E1BFGC1BCE84F7896A226DEF9B71DBD7F56103F71C93DA87F0665227AEF17A4507B07EE40CB97795F8EEEA6876AD06FF2BB87EDCE27E4F3DE29F159499B5D5AD1C97467
00303     4FD2DA88FF9F3611ABD95D1696A277C78A1A7F83D0CB87881D29BE55E29EGG2CDBGGD0CB818294G94G88G88GDC3438A81D29BE55E29EGG2CDBGG8CGGGGGGGGGGGGGGGGGE2F5E9ECE4E5F2A0E4E1F4E1D0CB8586GGGG81G81GBAGGG1C9EGGGG
00304 **end of data**/
00305 }
00306 /**
00307  * Return the JPanel1 property value.
00308  * @return javax.swing.JPanel
00309  */
00310 /* WARNING: THIS METHOD WILL BE REGENERATED. */
00311 private javax.swing.JPanel getButtonPanel() {
00312     if (ivjButtonPanel == null) {
00313         try {
00314             ivjButtonPanel = new javax.swing.JPanel();
00315             ivjButtonPanel.setName("ButtonPanel");
00316             ivjButtonPanel.setLayout(new java.awt.GridBagLayout());
00317             ivjButtonPanel.setBackground(new java.awt.Color(204,204,255));
00318 
00319             java.awt.GridBagConstraints constraintsResetButton = new java.awt.GridBagConstraints();
00320             constraintsResetButton.gridx = 0; constraintsResetButton.gridy = 0;
00321             constraintsResetButton.fill = java.awt.GridBagConstraints.HORIZONTAL;
00322             constraintsResetButton.weightx = 1.0;
00323             constraintsResetButton.insets = new java.awt.Insets(10, 10, 10, 0);
00324             getButtonPanel().add(getResetButton(), constraintsResetButton);
00325 
00326             java.awt.GridBagConstraints constraintsForwardButton = new java.awt.GridBagConstraints();
00327             constraintsForwardButton.gridx = 1; constraintsForwardButton.gridy = 0;
00328             constraintsForwardButton.fill = java.awt.GridBagConstraints.HORIZONTAL;
00329             constraintsForwardButton.weightx = 1.0;
00330             constraintsForwardButton.insets = new java.awt.Insets(10, 10, 10, 0);
00331             getButtonPanel().add(getForwardButton(), constraintsForwardButton);
00332 
00333             java.awt.GridBagConstraints constraintsBackButton = new java.awt.GridBagConstraints();
00334             constraintsBackButton.gridx = 2; constraintsBackButton.gridy = 0;
00335             constraintsBackButton.fill = java.awt.GridBagConstraints.HORIZONTAL;
00336             constraintsBackButton.weightx = 1.0;
00337             constraintsBackButton.insets = new java.awt.Insets(10, 10, 10, 0);
00338             getButtonPanel().add(getBackButton(), constraintsBackButton);
00339 
00340             java.awt.GridBagConstraints constraintsCloseButton = new java.awt.GridBagConstraints();
00341             constraintsCloseButton.gridx = 3; constraintsCloseButton.gridy = 0;
00342             constraintsCloseButton.fill = java.awt.GridBagConstraints.HORIZONTAL;
00343             constraintsCloseButton.weightx = 1.0;
00344             constraintsCloseButton.insets = new java.awt.Insets(10, 10, 10, 10);
00345             getButtonPanel().add(getCloseButton(), constraintsCloseButton);
00346             // user code begin {1}
00347             // user code end
00348         } catch (java.lang.Throwable ivjExc) {
00349             // user code begin {2}
00350             // user code end
00351             handleException(ivjExc);
00352         }
00353     }
00354     return ivjButtonPanel;
00355 }
00356 /**
00357  * Return the CloseButton property value.
00358  * @return javax.swing.JButton
00359  */
00360 /* WARNING: THIS METHOD WILL BE REGENERATED. */
00361 private javax.swing.JButton getCloseButton() {
00362     if (ivjCloseButton == null) {
00363         try {
00364             ivjCloseButton = new javax.swing.JButton();
00365             ivjCloseButton.setName("CloseButton");
00366             ivjCloseButton.setMnemonic('c');
00367             ivjCloseButton.setText("Close");
00368             ivjCloseButton.setBackground(new java.awt.Color(204,204,255));
00369             // user code begin {1}
00370             // user code end
00371         } catch (java.lang.Throwable ivjExc) {
00372             // user code begin {2}
00373             // user code end
00374             handleException(ivjExc);
00375         }
00376     }
00377     return ivjCloseButton;
00378 }
00379 /**
00380  * Return the CounterExampleDialogContentPane property value.
00381  * @return javax.swing.JPanel
00382  */
00383 /* WARNING: THIS METHOD WILL BE REGENERATED. */
00384 private javax.swing.JPanel getCounterExampleDialogContentPane() {
00385     if (ivjCounterExampleDialogContentPane == null) {
00386         try {
00387             ivjCounterExampleDialogContentPane = new javax.swing.JPanel();
00388             ivjCounterExampleDialogContentPane.setName("CounterExampleDialogContentPane");
00389             ivjCounterExampleDialogContentPane.setBorder(new javax.swing.border.EtchedBorder());
00390             ivjCounterExampleDialogContentPane.setLayout(new java.awt.BorderLayout());
00391             ivjCounterExampleDialogContentPane.setBackground(new java.awt.Color(204,204,255));
00392             getCounterExampleDialogContentPane().add(getButtonPanel(), "South");
00393             getCounterExampleDialogContentPane().add(getStepPanel(), "North");
00394             getCounterExampleDialogContentPane().add(getCounterExampleSplitPane(), "Center");
00395             // user code begin {1}
00396             // user code end
00397         } catch (java.lang.Throwable ivjExc) {
00398             // user code begin {2}
00399             // user code end
00400             handleException(ivjExc);
00401         }
00402     }
00403     return ivjCounterExampleDialogContentPane;
00404 }
00405 /**
00406  * Return the JSplitPane1 property value.
00407  * @return javax.swing.JSplitPane
00408  */
00409 /* WARNING: THIS METHOD WILL BE REGENERATED. */
00410 private javax.swing.JSplitPane getCounterExampleSplitPane() {
00411     if (ivjCounterExampleSplitPane == null) {
00412         try {
00413             ivjCounterExampleSplitPane = new javax.swing.JSplitPane(javax.swing.JSplitPane.HORIZONTAL_SPLIT);
00414             ivjCounterExampleSplitPane.setName("CounterExampleSplitPane");
00415             getCounterExampleSplitPane().add(getVariableScrollPane(), "left");
00416             getCounterExampleSplitPane().add(getValueScrollPane(), "right");
00417             // user code begin {1}
00418             // user code end
00419         } catch (java.lang.Throwable ivjExc) {
00420             // user code begin {2}
00421             // user code end
00422             handleException(ivjExc);
00423         }
00424     }
00425     return ivjCounterExampleSplitPane;
00426 }
00427 /**
00428  * Return the ForwardButton property value.
00429  * @return javax.swing.JButton
00430  */
00431 /* WARNING: THIS METHOD WILL BE REGENERATED. */
00432 private javax.swing.JButton getForwardButton() {
00433     if (ivjForwardButton == null) {
00434         try {
00435             ivjForwardButton = new javax.swing.JButton();
00436             ivjForwardButton.setName("ForwardButton");
00437             ivjForwardButton.setMnemonic('f');
00438             ivjForwardButton.setText("Forward");
00439             ivjForwardButton.setBackground(new java.awt.Color(204,204,255));
00440             // user code begin {1}
00441             // user code end
00442         } catch (java.lang.Throwable ivjExc) {
00443             // user code begin {2}
00444             // user code end
00445             handleException(ivjExc);
00446         }
00447     }
00448     return ivjForwardButton;
00449 }
00450 /**
00451  * Return the ResetButton property value.
00452  * @return javax.swing.JButton
00453  */
00454 /* WARNING: THIS METHOD WILL BE REGENERATED. */
00455 private javax.swing.JButton getResetButton() {
00456     if (ivjResetButton == null) {
00457         try {
00458             ivjResetButton = new javax.swing.JButton();
00459             ivjResetButton.setName("ResetButton");
00460             ivjResetButton.setMnemonic('r');
00461             ivjResetButton.setText("Reset");
00462             ivjResetButton.setBackground(new java.awt.Color(204,204,255));
00463             ivjResetButton.setEnabled(false);
00464             // user code begin {1}
00465             // user code end
00466         } catch (java.lang.Throwable ivjExc) {
00467             // user code begin {2}
00468             // user code end
00469             handleException(ivjExc);
00470         }
00471     }
00472     return ivjResetButton;
00473 }
00474 /**
00475  * Return the StepLabel property value.
00476  * @return javax.swing.JLabel
00477  */
00478 /* WARNING: THIS METHOD WILL BE REGENERATED. */
00479 private javax.swing.JLabel getStepLabel() {
00480     if (ivjStepLabel == null) {
00481         try {
00482             ivjStepLabel = new javax.swing.JLabel();
00483             ivjStepLabel.setName("StepLabel");
00484             ivjStepLabel.setText("Step #:");
00485             ivjStepLabel.setForeground(java.awt.Color.black);
00486             // user code begin {1}
00487             // user code end
00488         } catch (java.lang.Throwable ivjExc) {
00489             // user code begin {2}
00490             // user code end
00491             handleException(ivjExc);
00492         }
00493     }
00494     return ivjStepLabel;
00495 }
00496 /**
00497  * Return the JPanel1 property value.
00498  * @return javax.swing.JPanel
00499  */
00500 /* WARNING: THIS METHOD WILL BE REGENERATED. */
00501 private javax.swing.JPanel getStepPanel() {
00502     if (ivjStepPanel == null) {
00503         try {
00504             ivjStepPanel = new javax.swing.JPanel();
00505             ivjStepPanel.setName("StepPanel");
00506             ivjStepPanel.setLayout(new java.awt.GridBagLayout());
00507             ivjStepPanel.setBackground(new java.awt.Color(204,204,255));
00508 
00509             java.awt.GridBagConstraints constraintsStepLabel = new java.awt.GridBagConstraints();
00510             constraintsStepLabel.gridx = 0; constraintsStepLabel.gridy = 0;
00511             constraintsStepLabel.fill = java.awt.GridBagConstraints.HORIZONTAL;
00512             constraintsStepLabel.weightx = 1.0;
00513             constraintsStepLabel.weighty = 1.0;
00514             constraintsStepLabel.insets = new java.awt.Insets(10, 10, 10, 10);
00515             getStepPanel().add(getStepLabel(), constraintsStepLabel);
00516             // user code begin {1}
00517             // user code end
00518         } catch (java.lang.Throwable ivjExc) {
00519             // user code begin {2}
00520             // user code end
00521             handleException(ivjExc);
00522         }
00523     }
00524     return ivjStepPanel;
00525 }
00526 /**
00527  * Return the JScrollPane2 property value.
00528  * @return javax.swing.JScrollPane
00529  */
00530 /* WARNING: THIS METHOD WILL BE REGENERATED. */
00531 private javax.swing.JScrollPane getValueScrollPane() {
00532     if (ivjValueScrollPane == null) {
00533         try {
00534             ivjValueScrollPane = new javax.swing.JScrollPane();
00535             ivjValueScrollPane.setName("ValueScrollPane");
00536             ivjValueScrollPane.setBorder(BorderFactory.createLoweredBevelBorder());
00537             getValueScrollPane().setViewportView(getValueTextArea());
00538             // user code begin {1}
00539             // user code end
00540         } catch (java.lang.Throwable ivjExc) {
00541             // user code begin {2}
00542             // user code end
00543             handleException(ivjExc);
00544         }
00545     }
00546     return ivjValueScrollPane;
00547 }
00548 /**
00549  * Return the JTextArea1 property value.
00550  * @return javax.swing.JTextArea
00551  */
00552 /* WARNING: THIS METHOD WILL BE REGENERATED. */
00553 private javax.swing.JTextArea getValueTextArea() {
00554     if (ivjValueTextArea == null) {
00555         try {
00556             ivjValueTextArea = new javax.swing.JTextArea();
00557             ivjValueTextArea.setName("ValueTextArea");
00558             ivjValueTextArea.setBackground(new java.awt.Color(204,204,204));
00559             ivjValueTextArea.setBounds(0, 0, 142, 115);
00560             ivjValueTextArea.setEditable(false);
00561             ivjValueTextArea.setEnabled(true);
00562             // user code begin {1}
00563             // user code end
00564         } catch (java.lang.Throwable ivjExc) {
00565             // user code begin {2}
00566             // user code end
00567             handleException(ivjExc);
00568         }
00569     }
00570     return ivjValueTextArea;
00571 }
00572 /**
00573  * Return the JScrollPane1 property value.
00574  * @return javax.swing.JScrollPane
00575  */
00576 /* WARNING: THIS METHOD WILL BE REGENERATED. */
00577 private javax.swing.JScrollPane getVariableScrollPane() {
00578     if (ivjVariableScrollPane == null) {
00579         try {
00580             ivjVariableScrollPane = new javax.swing.JScrollPane();
00581             ivjVariableScrollPane.setName("VariableScrollPane");
00582             ivjVariableScrollPane.setBorder(BorderFactory.createLoweredBevelBorder());
00583             getVariableScrollPane().setViewportView(getVariableTree());
00584             // user code begin {1}
00585             // user code end
00586         } catch (java.lang.Throwable ivjExc) {
00587             // user code begin {2}
00588             // user code end
00589             handleException(ivjExc);
00590         }
00591     }
00592     return ivjVariableScrollPane;
00593 }
00594 /**
00595  * Return the JTree1 property value.
00596  * @return javax.swing.JTree
00597  */
00598 /* WARNING: THIS METHOD WILL BE REGENERATED. */
00599 private javax.swing.JTree getVariableTree() {
00600     if (ivjVariableTree == null) {
00601         try {
00602             ivjVariableTree = new javax.swing.JTree();
00603             ivjVariableTree.setName("VariableTree");
00604             ivjVariableTree.setBackground(new java.awt.Color(204,204,204));
00605             ivjVariableTree.setBounds(0, 0, 78, 72);
00606             // user code begin {1}
00607             ivjVariableTree.setUI(new javax.swing.plaf.metal.MetalTreeUI() {
00608                 public javax.swing.plaf.metal.MetalTreeUI setAngledColor() {
00609                     setHashColor(Color.black);
00610                     return this;
00611                 }
00612             }.setAngledColor());
00613             ivjVariableTree.getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION);
00614             /*
00615             ivjVariableTree.setCellRenderer(new DefaultTreeCellRenderer() {
00616                 public Component getTreeCellRendererComponent(JTree tree, Object value, boolean sel, boolean expanded, boolean leaf, int row, boolean hasFocus) {
00617                     super.getTreeCellRendererComponent(tree, value, sel, expanded, leaf, row, hasFocus);
00618                     setIcon(null);
00619                     
00620                     Object o = ((DefaultMutableTreeNode) value).getUserObject();
00621                     if (o instanceof ValueNode) {
00622                         ValueNode vn = (ValueNode) o;
00623                         o = vn.object;
00624                         if (o instanceof Local) {
00625                             Local lcl = (Local) o;
00626                             if ("JJJCTEMP$0".equals(lcl.getName()))
00627                                 setText("this: " + lcl.getType());
00628                             else
00629                                 setText(lcl.getName() + ": " + lcl.getType());
00630                         } else if (o instanceof SootField) {
00631                             SootField sf = (SootField) o;
00632                             setText(sf.getName() + ": " + sf.getType());
00633                         } else {
00634                             setText("" + vn.i);
00635                         }
00636                     }
00637                     
00638                     return this;
00639                 }
00640             });
00641             */
00642             ((DefaultTreeCellRenderer) ivjVariableTree.getCellRenderer()).setLeafIcon(null);
00643             ((DefaultTreeCellRenderer) ivjVariableTree.getCellRenderer()).setOpenIcon(null);
00644             ((DefaultTreeCellRenderer) ivjVariableTree.getCellRenderer()).setClosedIcon(null);
00645             ((DefaultTreeCellRenderer) ivjVariableTree.getCellRenderer()).setBackgroundNonSelectionColor(new Color(204, 204, 204));
00646             ((DefaultTreeCellRenderer) ivjVariableTree.getCellRenderer()).setBackgroundSelectionColor(Preferences.getHighlightColor());
00647             ivjVariableTree.putClientProperty("JTree.lineStyle", "Angled");
00648             // user code end
00649         } catch (java.lang.Throwable ivjExc) {
00650             // user code begin {2}
00651             // user code end
00652             handleException(ivjExc);
00653         }
00654     }
00655     return ivjVariableTree;
00656 }
00657 /**
00658  * Called whenever the part throws an exception.
00659  * @param exception java.lang.Throwable
00660  */
00661 private void handleException(java.lang.Throwable exception) {
00662 
00663     /* Uncomment the following lines to print uncaught exceptions to stdout */
00664     // System.out.println("--------- UNCAUGHT EXCEPTION ---------");
00665     // exception.printStackTrace(System.out);
00666 }
00667 /**
00668  * Initializes connections
00669  * @exception java.lang.Exception The exception description.
00670  */
00671 /* WARNING: THIS METHOD WILL BE REGENERATED. */
00672 private void initConnections() throws java.lang.Exception {
00673     // user code begin {1}
00674     // user code end
00675     getResetButton().addActionListener(ivjEventHandler);
00676     getForwardButton().addActionListener(ivjEventHandler);
00677     getBackButton().addActionListener(ivjEventHandler);
00678     getCloseButton().addActionListener(ivjEventHandler);
00679     getVariableTree().addTreeSelectionListener(ivjEventHandler);
00680 }
00681 /**
00682  * Initialize the class.
00683  */
00684 /* WARNING: THIS METHOD WILL BE REGENERATED. */
00685 private void initialize() {
00686     try {
00687         // user code begin {1}
00688         // user code end
00689         setName("CounterExample");
00690         setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
00691         setSize(679, 348);
00692         setTitle("Counter Example");
00693         setContentPane(getCounterExampleDialogContentPane());
00694         initConnections();
00695     } catch (java.lang.Throwable ivjExc) {
00696         handleException(ivjExc);
00697     }
00698     // user code begin {2}
00699     try {
00700         update();
00701     } catch (Exception e) {
00702     }
00703     // user code end
00704 }
00705 /**
00706  * main entrypoint - starts the part when it is run as an application
00707  * @param args java.lang.String[]
00708  */
00709 public static void main(java.lang.String[] args) {
00710     try {
00711         CounterExample aCounterExample;
00712         aCounterExample = new CounterExample(null);
00713         aCounterExample.addWindowListener(new java.awt.event.WindowAdapter() {
00714             public void windowClosing(java.awt.event.WindowEvent e) {
00715                 System.exit(0);
00716             };
00717         });
00718         aCounterExample.setVisible(true);
00719     } catch (Throwable exception) {
00720         System.err.println("Exception occurred in main() of javax.swing.JFrame");
00721         exception.printStackTrace(System.out);
00722     }
00723 }
00724 /**
00725  * Comment
00726  */
00727 public void resetButton_ActionEvents() {
00728     try {
00729         updateButtons(false);
00730         step = 0;
00731         traceManager.reset();
00732         update();
00733         updateButtons(true);
00734     } catch (Exception e) {
00735         e.printStackTrace();
00736     }
00737 }
00738 /**
00739  * 
00740  */
00741 private void update() {
00742     JTree tree = getVariableTree();
00743     tree.setModel(traceManager.getVariableTreeModel());
00744     for (int i = 0; i < tree.getRowCount(); i++) {
00745         tree.expandRow(i);
00746     }
00747     getValueTextArea().setText("");
00748     Annotation a = traceManager.getAnnotation();
00749     SootMethod sm = null;
00750     BUI.bui.requestFocus();
00751     if (a != null) {
00752         if ((a instanceof MethodDeclarationAnnotation) || (a instanceof ConstructorDeclarationAnnotation) || (a instanceof FieldDeclarationAnnotation)) {
00753             BUI.sessionPane.select(a, a);
00754         } else
00755             if (a instanceof ClassDeclarationAnnotation) {
00756                 BUI.sessionPane.select(((ClassDeclarationAnnotation) a).getSootClass(), ((ClassDeclarationAnnotation) a).getSootClass());
00757             } else {
00758                 Annotation ta = am.getMethodAnnotationContainingAnnotation(a);
00759                 BUI.sessionPane.select(ta, a);
00760                 if (ta instanceof MethodDeclarationAnnotation) {
00761                     sm = ((MethodDeclarationAnnotation) ta).getSootMethod();
00762                 } else
00763                     if (ta instanceof ConstructorDeclarationAnnotation) {
00764                         sm = ((ConstructorDeclarationAnnotation) ta).getSootMethod();
00765                     }
00766             }
00767     }
00768     Vector threadTreeModels = traceManager.getThreadTreeModels();
00769     if (threadCounterExamples.size() > threadTreeModels.size()) {
00770         for (int i = threadTreeModels.size(); i < threadCounterExamples.size(); i++) {
00771             ThreadCounterExample tce = (ThreadCounterExample) threadCounterExamples.elementAt(i);
00772             if (tce != null) {
00773                 tce.setVisible(false);
00774                 tce.dispose();
00775             }
00776         }
00777     }
00778     threadCounterExamples.setSize(threadTreeModels.size());
00779     for (int i = 0; i < threadCounterExamples.size(); i++) {
00780         ThreadCounterExample tce = (ThreadCounterExample) threadCounterExamples.elementAt(i);
00781         Annotation ann = traceManager.getAnnotation(i);
00782         if (ann == null)
00783             continue;
00784         ann = am.getMethodAnnotationContainingAnnotation(a);
00785         if (ann == null)
00786             ann = traceManager.getAnnotation(i);
00787         sm = null;
00788         if (ann instanceof MethodDeclarationAnnotation) {
00789             sm = ((MethodDeclarationAnnotation) ann).getSootMethod();
00790         } else
00791             if (ann instanceof ConstructorDeclarationAnnotation) {
00792                 sm = ((ConstructorDeclarationAnnotation) ann).getSootMethod();
00793             }
00794         if (traceManager.isAlive(i) && (sm != null)) {
00795             if (tce == null) {
00796                 tce = new ThreadCounterExample(this, "Thread<" + sm.getDeclaringClass() + ">, ID: " + i, i);
00797                 threadCounterExamples.setElementAt(tce, i);
00798             }
00799             tce.setVariableTreeModel((DefaultTreeModel) threadTreeModels.elementAt(i));
00800             tce.update(traceManager.getAnnotation(i));
00801             tce.setVisible(true);
00802         }
00803     }
00804     getStepLabel().setText("Step #: " + step + " of " + stepLength);
00805     getStepLabel().validate();
00806     getStepLabel().repaint();
00807 }
00808 /**
00809  * 
00810  * @param enable boolean
00811  */
00812 private void updateButtons(boolean enable) {
00813     if (enable) {
00814         getResetButton().setEnabled(step != 0);
00815         getForwardButton().setEnabled(step != stepLength);
00816         getBackButton().setEnabled(step != 0);
00817         getCloseButton().setEnabled(true);
00818     } else {
00819         getResetButton().setEnabled(false);
00820         getForwardButton().setEnabled(false);
00821         getBackButton().setEnabled(false);
00822         getCloseButton().setEnabled(false);
00823     }
00824 }
00825 /**
00826  * Comment
00827  */
00828 public void variableTree_TreeSelectionEvents() {
00829     DefaultMutableTreeNode node = (DefaultMutableTreeNode) getVariableTree().getLastSelectedPathComponent();
00830     DefaultTreeModel model = (DefaultTreeModel) getVariableTree().getModel();
00831     
00832     String text = traceManager.getValueText(model, node);
00833     getValueTextArea().setText(text);
00834 }
00835 }

Generated at Thu Feb 7 06:43:10 2002 for Bandera by doxygen1.2.10 written by Dimitri van Heesch, © 1997-2001