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 }