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

CallGraphDialog.java

00001 package edu.ksu.cis.bandera.pdgslicer.dependency;
00002 
00003 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
00004  * Bandera, a Java(TM) analysis and transformation toolkit           *
00005  * Copyright (C) 1998, 1999   Hongjun Zheng (zheng@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 javax.swing.*;
00036 import javax.swing.tree.*;
00037 import java.util.*;
00038 import java.awt.*;
00039 import ca.mcgill.sable.util.Map;
00040 import ca.mcgill.sable.util.Iterator;
00041 import ca.mcgill.sable.util.List;
00042 import ca.mcgill.sable.util.ArrayList;
00043 import ca.mcgill.sable.soot.*;
00044 import edu.ksu.cis.bandera.pdgslicer.*;
00045 import edu.ksu.cis.bandera.jjjc.CompilationManager;
00046 
00047 /**
00048  * Insert the type's description here.
00049  * Creation date: (00-6-12 21:44:47)
00050  * @author: 
00051  */
00052 public class CallGraphDialog extends JDialog {
00053     private SootClassManager scm = CompilationManager.getSootClassManager();
00054     private Hashtable newOldSmTable = new Hashtable();
00055     private Map sootMethodInfoMap = Slicer.sootMethodInfoMap;
00056     private DefaultMutableTreeNode callGraphTreeRoot = null;
00057     private DefaultMutableTreeNode succCallGraphTreeRoot = null;
00058     private DefaultMutableTreeNode predCallGraphTreeRoot = null;
00059     private boolean succCallGraph = true;
00060     private boolean predCallGraph = false;
00061     private JPanel ivjCallGraphDialogContentPane = null;
00062     private JToolBar ivjCallGraphToolBar = null;
00063     private JTree ivjCallGraphTree = null;
00064     private JScrollPane ivjCallGraphTreeScrollPane = null;
00065     private JButton ivjOkButton = null;
00066     private JButton ivjPredToolBarButton = null;
00067     private JButton ivjSuccToolBarButton = null;
00068     IvjEventHandler ivjEventHandler = new IvjEventHandler();
00069     class IvjEventHandler implements java.awt.event.ActionListener {
00070         public void actionPerformed(java.awt.event.ActionEvent e) {
00071             if (e.getSource() == CallGraphDialog.this.getSuccToolBarButton())
00072                 connEtoC1();
00073             if (e.getSource() == CallGraphDialog.this.getPredToolBarButton())
00074                 connEtoC2();
00075             if (e.getSource() == CallGraphDialog.this.getOkButton())
00076                 connEtoM1(e);
00077         };
00078     };
00079 /**
00080  * CallGraphDialog constructor comment.
00081  */
00082 public CallGraphDialog() {
00083     super();
00084     initialize();
00085 }
00086 /**
00087  * CallGraphDialog constructor comment.
00088  * @param owner java.awt.Dialog
00089  */
00090 public CallGraphDialog(java.awt.Dialog owner) {
00091     super(owner);
00092 }
00093 /**
00094  * CallGraphDialog constructor comment.
00095  * @param owner java.awt.Dialog
00096  * @param title java.lang.String
00097  */
00098 public CallGraphDialog(java.awt.Dialog owner, String title) {
00099     super(owner, title);
00100 }
00101 /**
00102  * CallGraphDialog constructor comment.
00103  * @param owner java.awt.Dialog
00104  * @param title java.lang.String
00105  * @param modal boolean
00106  */
00107 public CallGraphDialog(java.awt.Dialog owner, String title, boolean modal) {
00108     super(owner, title, modal);
00109 }
00110 /**
00111  * CallGraphDialog constructor comment.
00112  * @param owner java.awt.Dialog
00113  * @param modal boolean
00114  */
00115 public CallGraphDialog(java.awt.Dialog owner, boolean modal) {
00116     super(owner, modal);
00117 }
00118 /**
00119  * CallGraphDialog constructor comment.
00120  * @param owner java.awt.Frame
00121  */
00122 public CallGraphDialog(java.awt.Frame owner) {
00123     super(owner);
00124 }
00125 /**
00126  * CallGraphDialog constructor comment.
00127  * @param owner java.awt.Frame
00128  * @param title java.lang.String
00129  */
00130 public CallGraphDialog(java.awt.Frame owner, String title) {
00131     super(owner, title);
00132 }
00133 /**
00134  * CallGraphDialog constructor comment.
00135  * @param owner java.awt.Frame
00136  * @param title java.lang.String
00137  * @param modal boolean
00138  */
00139 public CallGraphDialog(java.awt.Frame owner, String title, boolean modal) {
00140     super(owner, title, modal);
00141 }
00142 /**
00143  * CallGraphDialog constructor comment.
00144  * @param owner java.awt.Frame
00145  * @param modal boolean
00146  */
00147 public CallGraphDialog(java.awt.Frame owner, boolean modal) {
00148     super(owner, modal);
00149 }
00150 /**
00151  * Insert the method's description here.
00152  * Creation date: (00-6-12 22:14:27)
00153  */
00154 public void buildCallGraphTree() {
00155     if (succCallGraph) {
00156         buildSuccCallGraphTree();
00157     } else
00158         if (predCallGraph)
00159             buildPredCallGraphTree();
00160     getCallGraphTree().setModel(new DefaultTreeModel(callGraphTreeRoot));
00161     getCallGraphTreeScrollPane().validate();
00162     getCallGraphTreeScrollPane().repaint();
00163 }
00164 private void buildPredCallGraphTree() {
00165     if (predCallGraphTreeRoot != null) {
00166         callGraphTreeRoot = predCallGraphTreeRoot;
00167         return;
00168     }
00169     predCallGraphTreeRoot = new DefaultMutableTreeNode("Pred Call Graph");
00170     callGraphTreeRoot = predCallGraphTreeRoot;
00171     Hashtable callersForCurrentLevel = new Hashtable();
00172     Hashtable callersForNextLevel;
00173     /*
00174     Hashtable compiledClasses = CompilationManager.getCompiledClasses();
00175     List compiledMethods = new ArrayList();
00176     for (Enumeration e = compiledClasses.elements(); e.hasMoreElements();) {
00177     SootClass sc = (SootClass) e.nextElement();
00178     compiledMethods.addAll(sc.getMethods());
00179     }
00180     */
00181     //collect all method without call site
00182     Set currentCallers = new HashSet();
00183     for (Iterator mdIt = sootMethodInfoMap.keySet().iterator(); mdIt.hasNext();) {
00184         //for (Iterator mdIt = compiledMethods.iterator(); mdIt.hasNext();) {
00185         SootMethod sm = (SootMethod) mdIt.next();
00186         MethodInfo mdInfo = (MethodInfo) sootMethodInfoMap.get(sm);
00187         Map callSiteMap = mdInfo.indexMaps.getCallSiteMap();
00188         if (callSiteMap == null || callSiteMap.isEmpty()) {
00189             SootMethod newSm = getNewSootMethod(mdInfo.sootClass, sm);
00190             currentCallers.add(newSm);
00191             newOldSmTable.put(newSm, sm);
00192         }
00193     }
00194     callersForCurrentLevel.put(callGraphTreeRoot, currentCallers);
00195     do {
00196         callersForNextLevel = new Hashtable();
00197         for (java.util.Iterator calleeIt = callersForCurrentLevel.keySet().iterator(); calleeIt.hasNext();) {
00198             DefaultMutableTreeNode currentCallee = (DefaultMutableTreeNode) calleeIt.next();
00199             currentCallers = (HashSet) callersForCurrentLevel.get(currentCallee);
00200             for (java.util.Iterator callerIt = currentCallers.iterator(); callerIt.hasNext();) {
00201                 SootMethod sm = (SootMethod) callerIt.next();
00202                 DefaultMutableTreeNode smTreeNode = new DefaultMutableTreeNode(sm);
00203                 currentCallee.add(smTreeNode);
00204                 Set callersForSm = getCallersFor(sm);
00205                 if (!callersForSm.isEmpty())
00206                     callersForNextLevel.put(smTreeNode, callersForSm);
00207             }
00208         }
00209         callersForCurrentLevel = callersForNextLevel;
00210     } while (!callersForNextLevel.isEmpty());
00211 }
00212 private void buildSuccCallGraphTree() {
00213     if (succCallGraphTreeRoot != null) {
00214         callGraphTreeRoot = succCallGraphTreeRoot;
00215         return;
00216     }
00217     succCallGraphTreeRoot = new DefaultMutableTreeNode("Succ Call Graph");
00218     callGraphTreeRoot = succCallGraphTreeRoot;
00219     Hashtable callSitesForCurrentLevel = new Hashtable();
00220     Hashtable callSitesForNextLevel;
00221     /*
00222     Hashtable compiledClasses = CompilationManager.getCompiledClasses();
00223     List compiledMethods = new ArrayList();
00224     for (Enumeration e = compiledClasses.elements(); e.hasMoreElements();) {
00225     SootClass sc = (SootClass) e.nextElement();
00226     compiledMethods.addAll(sc.getMethods());
00227     }
00228     */
00229     
00230     //collect all method without who call me
00231     Set currentCallSites = new HashSet();
00232     for (Iterator mdIt = sootMethodInfoMap.keySet().iterator(); mdIt.hasNext();) {
00233         //for (Iterator mdIt = compiledMethods.iterator(); mdIt.hasNext();) {
00234         SootMethod sm = (SootMethod) mdIt.next();
00235         MethodInfo mdInfo = (MethodInfo) sootMethodInfoMap.get(sm);
00236         if (mdInfo.whoCallMe == null || mdInfo.whoCallMe.isEmpty()) {
00237             SootMethod newSm = getNewSootMethod(mdInfo.sootClass, sm);
00238             currentCallSites.add(newSm);
00239             newOldSmTable.put(newSm, sm);
00240         }
00241     }
00242     callSitesForCurrentLevel.put(callGraphTreeRoot, currentCallSites);
00243     do {
00244         callSitesForNextLevel = new Hashtable();
00245         for (java.util.Iterator callerIt = callSitesForCurrentLevel.keySet().iterator(); callerIt.hasNext();) {
00246             DefaultMutableTreeNode currentCaller = (DefaultMutableTreeNode) callerIt.next();
00247             currentCallSites = (HashSet) callSitesForCurrentLevel.get(currentCaller);
00248             for (java.util.Iterator siteIt = currentCallSites.iterator(); siteIt.hasNext();) {
00249                 SootMethod sm = (SootMethod) siteIt.next();
00250                 //if (compiledMethods.contains(sm)) {
00251                 DefaultMutableTreeNode smTreeNode = new DefaultMutableTreeNode(sm);
00252                 currentCaller.add(smTreeNode);
00253                 Set callSitesForSm = getCallSitesFor(sm);
00254                 if (!callSitesForSm.isEmpty())
00255                     callSitesForNextLevel.put(smTreeNode, callSitesForSm);
00256                 //}
00257             }
00258         }
00259         callSitesForCurrentLevel = callSitesForNextLevel;
00260     } while (!callSitesForNextLevel.isEmpty());
00261 }
00262 /**
00263  * connEtoC1:  (SuccToolBarButton.action. --> CallGraphDialog.succToolBarButton_ActionEvents()V)
00264  */
00265 /* WARNING: THIS METHOD WILL BE REGENERATED. */
00266 private void connEtoC1() {
00267     try {
00268         // user code begin {1}
00269         // user code end
00270         this.succToolBarButton_ActionEvents();
00271         // user code begin {2}
00272         // user code end
00273     } catch (java.lang.Throwable ivjExc) {
00274         // user code begin {3}
00275         // user code end
00276         handleException(ivjExc);
00277     }
00278 }
00279 /**
00280  * connEtoC2:  (PredToolBarButton.action. --> CallGraphDialog.predToolBarButton_ActionEvents()V)
00281  */
00282 /* WARNING: THIS METHOD WILL BE REGENERATED. */
00283 private void connEtoC2() {
00284     try {
00285         // user code begin {1}
00286         // user code end
00287         this.predToolBarButton_ActionEvents();
00288         // user code begin {2}
00289         // user code end
00290     } catch (java.lang.Throwable ivjExc) {
00291         // user code begin {3}
00292         // user code end
00293         handleException(ivjExc);
00294     }
00295 }
00296 /**
00297  * connEtoM1:  (OkButton.action.actionPerformed(java.awt.event.ActionEvent) --> CallGraphDialog.dispose()V)
00298  * @param arg1 java.awt.event.ActionEvent
00299  */
00300 /* WARNING: THIS METHOD WILL BE REGENERATED. */
00301 private void connEtoM1(java.awt.event.ActionEvent arg1) {
00302     try {
00303         // user code begin {1}
00304         // user code end
00305         this.dispose();
00306         // user code begin {2}
00307         // user code end
00308     } catch (java.lang.Throwable ivjExc) {
00309         // user code begin {3}
00310         // user code end
00311         handleException(ivjExc);
00312     }
00313 }
00314 /**
00315  * 
00316  */
00317 /* WARNING: THIS METHOD WILL BE REGENERATED. */
00318 private static void getBuilderData() {
00319 /*V1.1
00320 **start of data**
00321     D0CB838494G88G88GA23B4CA8GGGGGGGGGGGG8CGGGE2F5E9ECE4E5F2A0E4E1F4E145BB8DD414571536C2EB4FFA92133567F8D2B7A7BDB13B3465B4744434A64BF65D5436E6F5D35B320DA7CB3BA6F5D33BA50D5D58DD37354D9BFE9491F1948494D0C0A220B80320027C7FAAA888AB2312044479187900510F19F1669B8163463D773D6FFD5F474CB700A66DFA4E751BF75FFB775DF76FFD773DFB5F03E49DFEA2451418C508A905A87FEACC048CF692F2356CCBDF6338DCE2B7915D3FA200
00322     3D64FBA71361DB86F5CBBA6CA6B3A93E108A6586A84B4DF6D38E7C4EA44B8AAA1A61C718F112216EE7C7BF7A764C63BC16414759C14BFB64F478E6G34G4E8990C3F07CD2B9D741AF00F206729B4114C808E442B6AFB4646A70DB14F6ADD0E7437AC4EC53A667AB754B8107ED5642F70309355D8A5F1D143BDBFD35CA3B5854A8627C6CF864EE9CCBC71F43E0A26BFBD779127E7D11A808A4326AD4934A2C7F66E813688CD8EE7A8396074BEF99965CCE51A7D83C4ED13F64F208BE0BD3740A00F3BB266A6A5A85
00323     C9BA6F933CE39DAEC1720C9212C0795E5410CAE9825FD01ECCC21C3D91E5D5893F3BG6CC91C77DF77B6A83C595FF81694DAA642729E1B44F85E102471FECAF8B4F1D1B2523FC9F5017D8A21BC8840F8F9C6663C44A5F3DE761E453669A9F6D389C0C38A472F27F89B14A50008944E63EB4D1CC7E96CB932715EC711FB427038B4057136AAC563F1D53CAD6DG351723E654B9598E638254828C815C85D88A10C76D74550CE370ED9D165BBD63639EF72B575BA6B9FD3D9E27A8416F3ABA28D1F017C5074767A404
00324     59629B8D95867CF0D83EFD3A9DA23039DDA35CF616A4FE1DCCFABEC76DA1F8EE9D5FFCBFF235C2A3FE3BB6372C9DA837B82A5BED0047FE488F43EF2078419D9A1E69EA0462316C053A389DDC4E0B4BB8AF690FAEA3CB3FB592394300177E1C791135290C077ED40D97A6E3328FE5FC9770CBGE2GD683EC82C85D49E5FCFCCF75ECB26EF64B224FADC88301E12F60135B82AE895601A26BDB72CC32B682566F5EFD77E3F2092A566BE8EB5ACDC339F853A7A2CBF6B2F9B46C54644246DE91F66C211D213611216A
00325     B0122E896FCE2643A4957FB0454F536119EEF3A81E1621EE8BGEB5FD3C7EDA1AD58C686A95E1B96ECA3BFBB4BEDE48154A5GB07DBE1E09BE31FF972CD100880025G31G6B8192F6F19D5F5EE31D63BA6A57691775351A3361ABCE4ABE215B6D178537C33CAA78DC4230A47A095226560C3C8DCF6B57C857378346B8AF3A41EB4AAE0F9B288B63A298131F35B9E75E0BEDFCA22D353946C598E05CCBB85DCB66CC78CA02DF3E62F58A322835E075D74DE89337052BC09188202E53D1DE490D68675261F7D9BA17
00326     551AAC444D037212F4AE179F1A774177A29837A85555F5389C4806601B62B67A8ADD1B5150BEFDB748F8376A2787398DEE7D372F13555B478CED90E17DEEE6CF1BF7875B606B14F6EE8678BE00418C3E0FCA0D0386F452F79B5B259EA403B648FB685A0BB49CA3E58EEBF00781AEA9284C64FDB69B67B78973DA8C30BC034BBCFDEFA13345B641AFF26B6B73016108CECD832C6D4EFD38370837C5375C216C3432DF513DF95FCE4DAEC7BC2A4DE4D3BC7A29F6B09C3F0A4F5F37176101065E4AF9FD892D97E45967
00327     9A8E486200A84BAE7728563F0272621F66827D4ADC6BF3F02EEBE10E9B813628F3FDF6DF264E3EFABC1E1B812F8DD70EE227BF207BF16A9E3B29F08F577FDF1C45F3D507DA7EA2ADEB7585E70DF4B7D7C03A337B66B31FE80CE0FBB09E63F29DBF23A4A93647709FD23C9D78DCG90234EFBA365C95F7EC1798B4F539F6898FAFEBE4DB118CDC4E506376927B30DED7A59CCE31B7E5B4C19ED76BB19C6B64B6A7EB193676819F06B56408FB2519FBABCEE37C897225A0530F3712FEDB88F175BA5DFF3B9C7C5F940
00328     F5C7840499EDB90F7A5C75202F04BD5CCFCE9C61FE52F975AB24721F2E991E27968973A2BB4C4CAE874D1A1FE4BC2D4BC2FB90A5F19C84556E8938E5067F8975678A5E1FC4F1CFDD9C00EFE159C0406130F9BCD21B60EB8B483247DDA15079D88ACF1CE8AA8CBA28D77803DBDFEF252DBBD1C77E32722B651504510F3D456877032F1ABBFDEFF06B907AA7957A3B4FFFC869775D1CCE16FD7AC55F0847B7AEBA4BEE8837850BB0A1DB2899D9F4644A8DB9F03A7CDE0FDF44212A38FFF667D27F8C72DE88304C4CFD
00329     56657DD84FFD1662185BBD1244CC826A7277223E8FB4E569F498EBE6B1DFAA54317A478C6B1DEAFDDE333EFEF2AF2B5756C9F33699EDD73C950070CAC427F9D11C6267066CFDC1F5D785A9201DC7AEE56F022F2473378C5F1AE3ECCB67F350475ED469DF4C59CE70DC41E8B25B0F91102657679A076D89B790A5F6FDDD56472EABE09E9867EE006F96G56B7229857E1F00038E09F76FF240E473569D0AE81685847E88C6EE372E06DAE5473F6F1D0CE5035CB4FE46D56E6E23BBF2A6D9A20EC8310B3D93B65CA3B
00330     5CACECD75548E3C12B0A6B2638B7C1983B1378F93B572C0F27070AA68C57B042D096236F4D8A0EC31EBC00F497817E09ACEEE75F4D516F0D2DFE3F47612247C0C5D7F22EFEFDB35CD4EE9AFCC7DCBEBF44A4CEF1126B7BDEAE720A67C4852D686CEB479BC9683937536912BDBEFE74E81F208B4766E90723EA9718CC3B6A7E2E3A44894263787EA6B50E4F627E6D31AAFD3CFEB77A5D48DDE1E4132048A4FD3FA69B72D3DB9A237DC315F64FFEEEB37D670D62B2C35E03B8E67DAF5FC259539C863A0BC90BFF8276
00331     063A3A8BBCBD4167954031F12F0B584FE37F67A7F01D44C2B98EA0810045A14F533D9969A7E75BCD8D59FCADC75E512FE5997051G6BG18DFAB2AC77A0AB3D3787BFCB66611E6753D045BA169EFD168C7F7441041BB12E15EE16DF3E26446ECC556B91A2C17EC3325C58330F9786B79BC86214D229CBE8FF72F51BCD667F01DAC4DAF22BEE096FFCEF85CD65A40633FF82011154B477977FA7DB8BD0017811664F2F9BD54D025496BBE1CBF377B3F4E41F522F9FDAE43573275B2DC1792E1A8C333E5FEE4F4AE13
00332     DDDC2EA6435C634B92ABG14DCC955B43F507B4530FEA17FG23D1F9A058AF3C1C07365783F87B816E97FE173BD76797AE03DD8B6ED1890F994A7969G4A88FC35D20EBE0063D2DFCD78B96ECA537D64966483BCC64CAAC03DAC0072B200D800B800ADAAEF5587E74D15F4CE4E10AB7949FD7115F5101FFD2F8430DF59C16333FBC3903E7FA04FB3D8A6517E1C870373953594AF9F8C4ED72C1C60769A81F51B5471D75685735D13B7FD4C31BC23B8732510FE1620724220FE4CFE93F24B09623B9C1EF10BEBF85C
00333     9238BDEE91064168418102931B367E884FA3471974FB7132BC362E5642F7C39E4F01465EC9253CC16C1E4775FE63906E19C379607FG9681C4832C83C8GB097F07DFF762051FEB2DD7F61B693AD5EE432192AFFB019FEBE24DF30CCAB8B2677E373FE2A174F3B2B006B75440CF95270BC544F5AAF3A40C82FFB86426CC9C1FA74CC6A75388AE8E17C3B893E5B8A389E0B9A783E15F5086B71554328479EA80F814C83D88A3092A09E009C66FA7C71417AB96A11F957D0AD32710A0A1007C220DB29523666E14E1E
00334     7B2FFE0F4BAD936E3B627370DC697139C6DDEE0EFB15629C9E9F8D44D8DEC02267019620B924524DAF889FB79EA9B00E9B4B8B0C63C6EB414C39101A02F0F1A5636F8D15BFAF0042B3BDC7C4C0B9CA45FD0762E2219C27625AA69037954A69055C8ECFCD6279BBD7ADB751B22EDDD67E5E440364A3105EDC5A31B17E75014618AD5741210036FDB1FB8F153B5FAF7A2901F5883220547DC25ECF8CE26FCB4238280C13C97E2BEE275226D376341FD457157D5EC163F52538C96E835293D315BEAD057C2C7747BE9A
00335     87C2F991C0142A03FF38E3A40F15D09F27136BA66577B6781A0BA0FEA98A15F9AD60FA02704A997FD0F81B7E681031CDFF66902EAF3FA760F30841F63B60D02EDA272D59EED99CC7B132B60F507E32609B95C36CFE896D4F6A42757F7221F0EB0369A826DE2F23AA553E3E5AEBA4CFBB48C55649E60172FBA9FCE38CE4C97DA1605783A4686A59584E865D583D1AFD3CD51EEBEC9F7D82F8A9E69BFFB349ED0394F35B48B321ED54C2399FE02C185B46D1C37FBF8F6A9783C49507724DE4772B4361757D9F070D75
00336     3D75F0F8FD3FFDF8F6FD27960657771E4259751DDBB8F30E6DE8911E21A65572B1DA1ED2E5AF36E628E3F43A1D4A0640626D79540F0ACADB06CBEEC6DCCEA25B2B19DE678750B7B84591A1A001AB07C3FD1FD739D2817C16E26C77F8006BAF361847AB5F1840F8F444A70C834B83DE51C1569E41362F84787EDA8B659EG89E0A1C074919E033CBB01B4E417CC4F5ED9A5788620231428BCFDA189FDCED0CE8304A853BD45ADF23B5F1B986E2CB088B42512D0DBE1E7D4DFBF3DD3ABE1E75494957F3F943FD807E7
00337     E75764FE9E53C5C1DD7ABBFC3F79B9BD6FF921BCCF45F5FD043805D0DE266206287D2F00F23C0A7B8645ED063279A84725CCA12E844A27D45C23A5086B0272100A0B27B8AF14A3D45C51CE1A8701F2140AFB391773972B62EAAFF17ED62B38B56D217CEDE98F652F200373972F62BEF3017332D9453537723DF91B0AF334F27E8ACB79DA0F1E8C565F29D2CDE7DD25617477B0759DC32541F71CDF22F839B4780E3348446FB897C25D66D24ED3E383170F2D0C639EEF6072312B38794DFCBEF2993761E7E95C24F3
00338     F916EBAE3753B381E60AB719325F5251BD505FB750F93D6F5275769E7841E25BD709BE36A5698F050DEDD71531792FD73EDB2B63A218BFA537D315BE66F23B292B9CF18BEF6B63FE6471D6A2BB3F337AEFCF2B47750F3ECB2B5FBC2D9EF97DD6123E3EF8C2DF0FBCDFD17A33F99DFF1F672BECE71EA7E5BFF604FDDF32281C4DE73972DDE6090BF8626E93CA6CEF2D554BE77978FB1126B0F492147EDB4B35581F692BAC116B30629857617ECA2E4316E35C7EA67B29CDC2B9C6454D273892A58F4AF0E97D8FFAE7
00339     0534796F18E346FBAE9B6348830F21BFA7063B3BE2B67B3BBB746C8B9BA17339EF1691352EB99173BA43026366284F93F0BB396F3FC57D59BA60BD7E9837FD7FA45E5B0FC130F1871C32A05900E23F476FE21B866B7750A4375154633C5F6AC934215B22CFF6B92677E2FDDE1B64F1D72D5AA7FF8AF9F6B9F81BAA6AA34720DED65BFC057AC33F087788221335DBD94247A7953C5DDBA5988F0D43FE09B19213C15EB1CD860D1DAC8FAF42A15A598DC3AAF339C2FDEB9650A984E07D48F16C476A856AD317C1DD8C
00340     G431D233EB29E4A1B54BE6BE99F6984563F572A0FC3030151D8C8FD66F2E83F72049A77D09975D840BFD9B86E17045BF604C53D5B25BEAF8A4A2BGB62978AFD3BC669E37D9D88E1F61CBCD4176077D6E478E238C5AEFD2F0EC0C1610B16E772E55A8A662F729CC46B1951ADE3ECFFDF921957CG40C2AB3DBBEA6ED05A8FDAC379657BFE12829234C1582F6067D9595E024062748FCE6098F1005FEC65717497CAD151D7059B2119F5C0767BBCF042122798165EAEA972F15CFE30F7CBBBEC5C77AEFE7AA9B298
00341     7BDE583B82F32512AF655F4238088CF5AEBF3220CD5A216EAE4093GABG5682EC2C64F3DBD70ABCE2968358EF15E541B1C6EFD1F8F2832F89B4B49E8C996D5F62D590FFC7D176CEB879G058B3027768D5F0035EC93C6D5DDDE23BEFDAB7011FC126B3222126B32722431AEF98E92216364F4DD8E1E54F449567F75BE5C97C3EEF8557AE5B5D89FF2C32B5A5E539896A9EDA3EC07616B96A78A5524FA3BC772784A2AAACFD5D0B8FD3ADCE97B54A4667E75E709817CDFBBCA34F7DE32F5DED6E97F77EC6D5B7AEC
00342     363EDE152F55559ADF1E12F9BA3EF87F6EF1E1D4C40FD706618AA6F44A4AAD70733248A22032E22B688CD8EF7A83D6074BEFD5DE2BDA55572AD66D352A5505347CD63CFE39AE78FC1E096BAE176B3A62D5AD232E116272F2464B4BA5280791C172EBF1C067990D577A5E497F8FDE959E99BFCDB59ABFAB5B6722D356EF24D66BE73F70E71A87DE9F054C0379085F7B746733EDDB7E5270FCE63BBD9069D4565202135A392A23F7E99A1B575BE735F975357C19ECE97A3C8CED69279F635EAE89D31EG4440E5D5B4
00343     0679186F3131B017B800EDG66AA65AE1936A1261976E1C6FB4DB1FCAF2046234A62E7F54F6465CC2B73096200436711A49A2832B652FE74DD7C65854BC3C734CC3B5B2FE277899B613B350A1F97126BB5D9CFB64F4576D8FC302619476B66EA3B69B06DCF6899017FE37463A9FDE69F79FEEE9F8967230973446D48A386760150D54D643724DA330FCA308F665B07CFA0CE4DE9306DCD717B2E93F87E43B7BE90513B6E50A443GB4F40F32BD622D862CDF87F493G4C276C2692005AD3FC6F59FA2218503D47E0
00344     5F69F40E0A5C8172717E4592BEA7741AE57637273F3250B3318734B60E74B97EB7965C2FE50F17A2996EBFADA8C71FEBF4CCE6CD957CB68B4ADD92C7A81A49FD28C953EBDA655C757AC1A5572B6D1411DEB7B7B37A2770AFB014BDBD035A59C2E89F853096E0A340D6G73E9AE572F56E2A0906E3C52C35794152DCFF039E596D37F689EFFE3D782F406CE733C50C9BB5E132879C01CD0DD5DF91F4B59A60CB2CAECAE8789BF1FAFBE4DF302DD043EF50472C600ED2779DB08BBC95CB63715FF13C8D76F997A2E7C
00345     DD6E482CB34CA6EB4FE8369993EFCBE3F4DEBA2337F12C8B97234ACA7FA5BABA7C3C1AC4C6BB8B08E14ED33772F9DEBC36053F3FD8FF064F7317E7F01E669A3B298C2025061F4157B56B4FFF030017EAE6BE03B39D6FE843F350BCE83B94E0A540FA00840064DA3BA99720822085E090408B90813084A09AA096E09D4046DAEE8FC58D65B3580322CC4DA0D4DB7FFDC378751658B87BFA5BC55F880930CEECD3DEA5C7EAEE2477DAA3A3FED1DD577B9B4DAA2E5B4FE3C8A64361CA3D8C37421C524F4EACC3C6B327
00346     A5BC6F07DAE6673D344558D71CE8897595D5AD463E2236C56FAB58FC565FFB303F01F87D817B9DA6775B0F655EE2695AADBC2B1D29997E3B94DF2143B37FF109F07FD18BF5CB4F72FB56A75B695F6E5459CD79G27GFAGA40085F55CBE5734D412D96ED8ED9EEF8FA8D352DDC1B27AFF68C07ACB01568A00F800ADG2975F6D3E1BD273F3F35FA867B3F6C7150ACB4A624417CC51FEEA5A877DBADB34970D4FD383C6687B5A8132E7A60B7952394BFD89F7C26624DB37CCD4598542D2D677900DF507D3F320135
00347     E738840A6BD2F0EC1EF9ED61ED3E38EDF61BBF5EE6EC73A75BC2ED7ECC1B314DB73469EDDEF9CB5906FEF6947C4C205A6E1C0AFBD745DD24B491F74D651447D47C7FD03E905FA562009CFF0D72B5C1F1038AEEC807FBD74189ED68F3E04AE39E9F6FBB5206F9289117A431728D5A46658697244A43C3F9F4F9859D5F320AFBD75545D4E528FEBE2E546B0759518B3892145FEBF43FED64133C211F1B9F987F130E213C2FEA8FEFFF4F349B5F59BD57EE7C6E606F5BE73ECB7BFEFB78776AAF35073ED75F5E991E37
00348     5D1D332F0D6CCE6335115F993AB60ABA0D57C6E927FEEDB0BBD95F42F3FD4E86FEEEF05420EDAED74B63343CCEAD7F768C57A536795358CBC68D9FE32E6F966E875839CBB80A7ECE099F6812E7787C495D9A1EAFF942F2C4EF36709C51E603396B73C388490DF0DEEAE4B9A2ACD7B4866708BABE44312645FB043FDBFF3CC6FFC7D25B48F22CC30D7CDDD1E1ABBF3FFB9B0D4F6F614F740B4E91D58EB1B60CB90D5EE4A0B7EC2CFF2E61674E28C6EE876F346A77258D005F52B8173F59F925E6267DAC35A9148633
00349     550656D0BF575A2A77F38C771B9AEE5379C00B5DA3275672783885F0B6G99E0B14072A6AECFCBAD0FA1621A78BD58D0ED70BD58A3C4FF0FE52B8F3E87B3CD2B7FDCFD70BD58DFCD2BDFD19FFC8F467BB3D9D5575E6F79097D5DFC33B58708C53FC1D2E4120666D5C86DCBA649181C727B489EB5BE6C261B4E065B55F5C9BFFFB2A911A4F7136D4C51F413E474965DA405BA13EE12840EE652CB027E81D14C2878EF110FC9E2E8E5E25FC598AFE3FABCEAFAAAE73E79616AC0A259FE0EEC9F91A46F18G63504731
00350     BDA4516117C9DE8FF631C2972B833BD8E947812F60906B5FA7BBC7FC234334B90C707E39770188ADA193BBFBC81ABCC6CFD460D5E51223D16A47F315D2D14F2672765A35EFFB619FB0F944688D2785DFD8B855B454FB5F312F98FBF1FFF1A2C969A63BC6DC22649C2009289EE226258E516F70393C98C348E49F9BDA925C23D6161B286FA1FBE9BB1E40C27248756E9E1229A3F74EA509EE2DAAC3D7F565F20FCCB298E537A8DB214C66E21249950BE5280D654006C4E7E06826BFB064F07907143C58101A979B52
00351     72E2C3ACAFB694BE47AA130B1FE2469627E476D2FBC9E7DC77FEEADCB3EE5BBF051CAD321749385CB14DCEBEA53EC3332B8F42F7A895E4AFE79A171F44A64267CA9F44A642D3C3F68F0613B6FA15E4BD5CD73B902C12230C6D543F8D48F73A433E1D086FD07EB63AA3786F827E2E8A770C0ACE58AFBAF93C373B6A8489FF9FB5B08E5ED896241B2DEEA75ECD35CD4922F62EFC218A697BF99B2512553DD805FC5F507579BFD0CB8788DB3120D16B97GG00C5GGD0CB818294G94G88G88GA23B4CA8DB3120
00352     D16B97GG00C5GG8CGGGGGGGGGGGGGGGGGE2F5E9ECE4E5F2A0E4E1F4E1D0CB8586GGGG81G81GBAGGGA598GGGG
00353 **end of data**/
00354 }
00355 private Set getCallersFor(SootMethod newSm) {
00356     SootMethod sm = (SootMethod) newOldSmTable.get(newSm);
00357     Set callers = new HashSet();
00358     MethodInfo methodInfo = (MethodInfo) sootMethodInfoMap.get(sm);
00359     ca.mcgill.sable.util.Set whoCallme = methodInfo.whoCallMe;
00360     if (whoCallme == null)
00361         return callers;
00362     for (Iterator callerIt = whoCallme.iterator(); callerIt.hasNext();) {
00363         CallSite callSite = (CallSite) callerIt.next();
00364         SootMethod callSm = callSite.callerSootMethod;
00365         MethodInfo callSmInfo = (MethodInfo) sootMethodInfoMap.get(callSm);
00366         SootMethod newCallSm = getNewSootMethod(callSmInfo.sootClass, callSm);
00367         callers.add(newCallSm);
00368         newOldSmTable.put(newCallSm, callSm);
00369     }
00370     return callers;
00371 }
00372 /**
00373  * Return the CallGraphDialogContentPane property value.
00374  * @return javax.swing.JPanel
00375  */
00376 /* WARNING: THIS METHOD WILL BE REGENERATED. */
00377 private javax.swing.JPanel getCallGraphDialogContentPane() {
00378     if (ivjCallGraphDialogContentPane == null) {
00379         try {
00380             ivjCallGraphDialogContentPane = new javax.swing.JPanel();
00381             ivjCallGraphDialogContentPane.setName("CallGraphDialogContentPane");
00382             ivjCallGraphDialogContentPane.setLayout(new java.awt.GridBagLayout());
00383 
00384             java.awt.GridBagConstraints constraintsCallGraphToolBar = new java.awt.GridBagConstraints();
00385             constraintsCallGraphToolBar.gridx = 0; constraintsCallGraphToolBar.gridy = 0;
00386             constraintsCallGraphToolBar.fill = java.awt.GridBagConstraints.HORIZONTAL;
00387             constraintsCallGraphToolBar.weightx = 1.0;
00388             constraintsCallGraphToolBar.insets = new java.awt.Insets(4, 4, 4, 4);
00389             getCallGraphDialogContentPane().add(getCallGraphToolBar(), constraintsCallGraphToolBar);
00390 
00391             java.awt.GridBagConstraints constraintsCallGraphTreeScrollPane = new java.awt.GridBagConstraints();
00392             constraintsCallGraphTreeScrollPane.gridx = 0; constraintsCallGraphTreeScrollPane.gridy = 1;
00393             constraintsCallGraphTreeScrollPane.fill = java.awt.GridBagConstraints.BOTH;
00394             constraintsCallGraphTreeScrollPane.weightx = 1.0;
00395             constraintsCallGraphTreeScrollPane.weighty = 1.0;
00396             constraintsCallGraphTreeScrollPane.insets = new java.awt.Insets(4, 4, 4, 4);
00397             getCallGraphDialogContentPane().add(getCallGraphTreeScrollPane(), constraintsCallGraphTreeScrollPane);
00398 
00399             java.awt.GridBagConstraints constraintsOkButton = new java.awt.GridBagConstraints();
00400             constraintsOkButton.gridx = 0; constraintsOkButton.gridy = 2;
00401             constraintsOkButton.fill = java.awt.GridBagConstraints.HORIZONTAL;
00402             constraintsOkButton.insets = new java.awt.Insets(4, 4, 4, 4);
00403             getCallGraphDialogContentPane().add(getOkButton(), constraintsOkButton);
00404             // user code begin {1}
00405             // user code end
00406         } catch (java.lang.Throwable ivjExc) {
00407             // user code begin {2}
00408             // user code end
00409             handleException(ivjExc);
00410         }
00411     }
00412     return ivjCallGraphDialogContentPane;
00413 }
00414 /**
00415  * Return the CallGraphToolBar property value.
00416  * @return javax.swing.JToolBar
00417  */
00418 /* WARNING: THIS METHOD WILL BE REGENERATED. */
00419 private javax.swing.JToolBar getCallGraphToolBar() {
00420     if (ivjCallGraphToolBar == null) {
00421         try {
00422             ivjCallGraphToolBar = new javax.swing.JToolBar();
00423             ivjCallGraphToolBar.setName("CallGraphToolBar");
00424             ivjCallGraphToolBar.setBackground(new java.awt.Color(204,204,255));
00425             ivjCallGraphToolBar.add(getSuccToolBarButton());
00426             getCallGraphToolBar().add(getPredToolBarButton(), getPredToolBarButton().getName());
00427             // user code begin {1}
00428             // user code end
00429         } catch (java.lang.Throwable ivjExc) {
00430             // user code begin {2}
00431             // user code end
00432             handleException(ivjExc);
00433         }
00434     }
00435     return ivjCallGraphToolBar;
00436 }
00437 /**
00438  * Return the CallGraphTree property value.
00439  * @return javax.swing.JTree
00440  */
00441 /* WARNING: THIS METHOD WILL BE REGENERATED. */
00442 private javax.swing.JTree getCallGraphTree() {
00443     if (ivjCallGraphTree == null) {
00444         try {
00445             ivjCallGraphTree = new javax.swing.JTree();
00446             ivjCallGraphTree.setName("CallGraphTree");
00447             ivjCallGraphTree.setBounds(0, 0, 78, 72);
00448             // user code begin {1}
00449             getCallGraphTree().setModel(new DefaultTreeModel(new DefaultMutableTreeNode("")));
00450             getCallGraphTreeScrollPane().validate();
00451             getCallGraphTreeScrollPane().repaint();
00452             ivjCallGraphTree.setUI(new javax.swing.plaf.metal.MetalTreeUI() {
00453                 public javax.swing.plaf.metal.MetalTreeUI setAngledColor() {
00454                     setHashColor(Color.black);
00455                     return this;
00456                 }
00457             }
00458             .setAngledColor());
00459             ivjCallGraphTree.getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION);
00460             ivjCallGraphTree.setCellRenderer(new DefaultTreeCellRenderer() {
00461                 public Component getTreeCellRendererComponent(JTree tree, Object value, boolean sel, boolean expanded, boolean leaf, int row, boolean hasFocus) {
00462                     super.getTreeCellRendererComponent(tree, value, sel, expanded, leaf, row, hasFocus);
00463                     Object o = ((DefaultMutableTreeNode) value).getUserObject();
00464                     setForeground(Color.black);
00465                     setIcon(null);
00466                     return this;
00467                 }
00468             });
00469             //((DefaultTreeCellRenderer) ivjCallGraphTree.getCellRenderer()).setBackgroundNonSelectionColor(new Color(204, 204, 204));
00470             ivjCallGraphTree.putClientProperty("JTree.lineStyle", "Angled");
00471 
00472             // user code end
00473         } catch (java.lang.Throwable ivjExc) {
00474             // user code begin {2}
00475             // user code end
00476             handleException(ivjExc);
00477         }
00478     }
00479     return ivjCallGraphTree;
00480 }
00481 /**
00482  * Return the CallGraphTreeScrollPane property value.
00483  * @return javax.swing.JScrollPane
00484  */
00485 /* WARNING: THIS METHOD WILL BE REGENERATED. */
00486 private javax.swing.JScrollPane getCallGraphTreeScrollPane() {
00487     if (ivjCallGraphTreeScrollPane == null) {
00488         try {
00489             ivjCallGraphTreeScrollPane = new javax.swing.JScrollPane();
00490             ivjCallGraphTreeScrollPane.setName("CallGraphTreeScrollPane");
00491             getCallGraphTreeScrollPane().setViewportView(getCallGraphTree());
00492             // user code begin {1}
00493             // user code end
00494         } catch (java.lang.Throwable ivjExc) {
00495             // user code begin {2}
00496             // user code end
00497             handleException(ivjExc);
00498         }
00499     }
00500     return ivjCallGraphTreeScrollPane;
00501 }
00502 private Set getCallSitesFor(SootMethod newSm) {
00503     SootMethod sm = (SootMethod) newOldSmTable.get(newSm);
00504     Set callSites = new HashSet();
00505     MethodInfo mdInfo = (MethodInfo) sootMethodInfoMap.get(sm);
00506     Map callSiteMap = mdInfo.indexMaps.getCallSiteMap();
00507     if (callSiteMap.isEmpty())
00508         return callSites;
00509     for (Iterator siteIt = callSiteMap.keySet().iterator(); siteIt.hasNext();) {
00510         CallSite callSite = (CallSite) siteIt.next();
00511         SootMethod sootMethod = (SootMethod) callSiteMap.get(callSite);
00512         MethodInfo smdInfo = (MethodInfo) sootMethodInfoMap.get(sootMethod);
00513         SootMethod newSootMethod = getNewSootMethod(smdInfo.sootClass, sootMethod);
00514         newOldSmTable.put(newSootMethod, sootMethod);
00515         callSites.add(newSootMethod);
00516     }
00517     return callSites;
00518 }
00519 /**
00520  * Insert the method's description here.
00521  * Creation date: (00-7-4 15:02:17)
00522  * @return ca.mcgill.sable.soot.SootMethod
00523  * @param sc ca.mcgill.sable.soot.SootClass
00524  * @param sm ca.mcgill.sable.soot.SootMethod
00525  */
00526 private SootMethod getNewSootMethod(SootClass sc, SootMethod sm) {
00527     SootClass newSc = scm.getClass(sc.getName());
00528     SootMethod newSm = newSc.getMethod(sm.getName());
00529     return newSm;
00530 }
00531 /**
00532  * Return the OkButton property value.
00533  * @return javax.swing.JButton
00534  */
00535 /* WARNING: THIS METHOD WILL BE REGENERATED. */
00536 private javax.swing.JButton getOkButton() {
00537     if (ivjOkButton == null) {
00538         try {
00539             ivjOkButton = new javax.swing.JButton();
00540             ivjOkButton.setName("OkButton");
00541             ivjOkButton.setText("OK");
00542             ivjOkButton.setBackground(new java.awt.Color(204,204,255));
00543             // user code begin {1}
00544             // user code end
00545         } catch (java.lang.Throwable ivjExc) {
00546             // user code begin {2}
00547             // user code end
00548             handleException(ivjExc);
00549         }
00550     }
00551     return ivjOkButton;
00552 }
00553 /**
00554  * Return the PredToolBarButton property value.
00555  * @return javax.swing.JButton
00556  */
00557 /* WARNING: THIS METHOD WILL BE REGENERATED. */
00558 private javax.swing.JButton getPredToolBarButton() {
00559     if (ivjPredToolBarButton == null) {
00560         try {
00561             ivjPredToolBarButton = new javax.swing.JButton();
00562             ivjPredToolBarButton.setName("PredToolBarButton");
00563             ivjPredToolBarButton.setText("pred");
00564             ivjPredToolBarButton.setBackground(new java.awt.Color(204,204,255));
00565             ivjPredToolBarButton.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
00566             ivjPredToolBarButton.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
00567             ivjPredToolBarButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/edu/ksu/cis/bandera/pdgslicer/dependency/images/pred_arrow_iii.gif")));
00568             ivjPredToolBarButton.setMargin(new java.awt.Insets(0, 0, 0, 0));
00569             ivjPredToolBarButton.setPressedIcon(new javax.swing.ImageIcon(getClass().getResource("/edu/ksu/cis/bandera/pdgslicer/dependency/images/pred_arrow_iii_pressed.gif")));
00570             // user code begin {1}
00571             // user code end
00572         } catch (java.lang.Throwable ivjExc) {
00573             // user code begin {2}
00574             // user code end
00575             handleException(ivjExc);
00576         }
00577     }
00578     return ivjPredToolBarButton;
00579 }
00580 /**
00581  * Return the SuccToolBarButton property value.
00582  * @return javax.swing.JButton
00583  */
00584 /* WARNING: THIS METHOD WILL BE REGENERATED. */
00585 private javax.swing.JButton getSuccToolBarButton() {
00586     if (ivjSuccToolBarButton == null) {
00587         try {
00588             ivjSuccToolBarButton = new javax.swing.JButton();
00589             ivjSuccToolBarButton.setName("SuccToolBarButton");
00590             ivjSuccToolBarButton.setText("succ");
00591             ivjSuccToolBarButton.setBackground(new java.awt.Color(204,204,255));
00592             ivjSuccToolBarButton.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
00593             ivjSuccToolBarButton.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
00594             ivjSuccToolBarButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/edu/ksu/cis/bandera/pdgslicer/dependency/images/succ_arrow_iii_pressed.gif")));
00595             ivjSuccToolBarButton.setSelected(false);
00596             ivjSuccToolBarButton.setMargin(new java.awt.Insets(0, 0, 0, 0));
00597             ivjSuccToolBarButton.setPressedIcon(new javax.swing.ImageIcon(getClass().getResource("/edu/ksu/cis/bandera/pdgslicer/dependency/images/succ_arrow_iii.gif")));
00598             // user code begin {1}
00599             // user code end
00600         } catch (java.lang.Throwable ivjExc) {
00601             // user code begin {2}
00602             // user code end
00603             handleException(ivjExc);
00604         }
00605     }
00606     return ivjSuccToolBarButton;
00607 }
00608 /**
00609  * Called whenever the part throws an exception.
00610  * @param exception java.lang.Throwable
00611  */
00612 private void handleException(java.lang.Throwable exception) {
00613 
00614     /* Uncomment the following lines to print uncaught exceptions to stdout */
00615     // System.out.println("--------- UNCAUGHT EXCEPTION ---------");
00616     // exception.printStackTrace(System.out);
00617 }
00618 /**
00619  * Initializes connections
00620  * @exception java.lang.Exception The exception description.
00621  */
00622 /* WARNING: THIS METHOD WILL BE REGENERATED. */
00623 private void initConnections() throws java.lang.Exception {
00624     // user code begin {1}
00625     // user code end
00626     getSuccToolBarButton().addActionListener(ivjEventHandler);
00627     getPredToolBarButton().addActionListener(ivjEventHandler);
00628     getOkButton().addActionListener(ivjEventHandler);
00629 }
00630 /**
00631  * Initialize the class.
00632  */
00633 /* WARNING: THIS METHOD WILL BE REGENERATED. */
00634 private void initialize() {
00635     try {
00636         // user code begin {1}
00637         // user code end
00638         setName("CallGraphDialog");
00639         setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
00640         setSize(475, 312);
00641         setTitle("Call Graph");
00642         setContentPane(getCallGraphDialogContentPane());
00643         initConnections();
00644     } catch (java.lang.Throwable ivjExc) {
00645         handleException(ivjExc);
00646     }
00647     // user code begin {2}
00648     // user code end
00649 }
00650 /**
00651  * main entrypoint - starts the part when it is run as an application
00652  * @param args java.lang.String[]
00653  */
00654 public static void main(java.lang.String[] args) {
00655     try {
00656         CallGraphDialog aCallGraphDialog;
00657         aCallGraphDialog = new CallGraphDialog();
00658         aCallGraphDialog.setModal(true);
00659         aCallGraphDialog.addWindowListener(new java.awt.event.WindowAdapter() {
00660             public void windowClosing(java.awt.event.WindowEvent e) {
00661                 System.exit(0);
00662             };
00663         });
00664         aCallGraphDialog.setVisible(true);
00665     } catch (Throwable exception) {
00666         System.err.println("Exception occurred in main() of javax.swing.JDialog");
00667         exception.printStackTrace(System.out);
00668     }
00669 }
00670 /**
00671  * Comment
00672  */
00673 public void predToolBarButton_ActionEvents() {
00674             Icon temp = getPredToolBarButton().getPressedIcon();
00675     getPredToolBarButton().setPressedIcon(getPredToolBarButton().getIcon());
00676     getPredToolBarButton().setIcon(temp);
00677     predCallGraph = !predCallGraph;
00678     if (predCallGraph) {
00679         //set successor up
00680         if (succCallGraph)
00681             succToolBarButton_ActionEvents();
00682         buildCallGraphTree();
00683     } else
00684         
00685         //set successor down
00686         if (!succCallGraph)
00687             succToolBarButton_ActionEvents();
00688     return;
00689 }
00690 /**
00691  * Comment
00692  */
00693 public void succToolBarButton_ActionEvents() {
00694         Icon temp = getSuccToolBarButton().getPressedIcon();
00695     getSuccToolBarButton().setPressedIcon(getSuccToolBarButton().getIcon());
00696     getSuccToolBarButton().setIcon(temp);
00697     succCallGraph = !succCallGraph;
00698     if (succCallGraph) {
00699         //set successor up
00700         if (predCallGraph)
00701             predToolBarButton_ActionEvents();
00702         buildCallGraphTree();
00703     } else
00704         
00705         //set successor down
00706         if (!predCallGraph)
00707             predToolBarButton_ActionEvents();
00708     return;
00709 }
00710 }

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