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

DependencyValueViewer.java

00001 package edu.ksu.cis.bandera.pdgslicer.dependency;
00002 
00003 import javax.swing.*;
00004 import javax.swing.tree.*;
00005 import edu.ksu.cis.bandera.annotation.*;
00006 import edu.ksu.cis.bandera.jjjc.CompilationManager;
00007 import ca.mcgill.sable.soot.*;
00008 import edu.ksu.cis.bandera.util.Preferences;
00009 import edu.ksu.cis.bandera.pdgslicer.SliceTraceNode;
00010 /**
00011  * Insert the type's description here.
00012  * Creation date: (00-10-27 18:52:54)
00013  * @author: 
00014  */
00015 public class DependencyValueViewer extends JFrame implements java.awt.event.MouseListener, java.awt.event.WindowListener, javax.swing.event.TreeSelectionListener {
00016     private boolean isSetSelectedByProgram = false;
00017     DefaultMutableTreeNode currentValueTreeRoot = null;
00018     DefaultMutableTreeNode currentDependTreeRoot = null;
00019     private Dependencies dependFrame;
00020     private final int EMPTY = 0;
00021     private final int DEPEND = 1;
00022     private final int VALUE = 2;
00023     private final int DEPENDVALUE = 3;
00024     private final int VALUEDEPEND = 4;
00025     private boolean doDepend = false;
00026     private boolean doValue = false;
00027     private boolean doDependValue = false;
00028     private boolean doValueDepend = false;
00029     private JPanel ivjJFrameContentPane = null;
00030     private JPanel ivjDependencyPanel = null;
00031     private JSplitPane ivjDependValueSplitPane = null;
00032     private JPanel ivjValuesPanel = null;
00033     private JLabel ivjDependencyLabel = null;
00034     private JTree ivjDependencyTree = null;
00035     private JScrollPane ivjDependScrollPane = null;
00036     private JLabel ivjValueLabel = null;
00037     private JScrollPane ivjValueScrollPane = null;
00038     private JTree ivjValueTree = null;
00039 
00040 class IvjEventHandler implements java.awt.event.MouseListener, java.awt.event.WindowListener, javax.swing.event.TreeSelectionListener {
00041         public void mouseClicked(java.awt.event.MouseEvent e) {
00042             if (e.getSource() == DependencyValueViewer.this.getDependencyTree()) 
00043                 connEtoC2(e);
00044             if (e.getSource() == DependencyValueViewer.this.getValueTree()) 
00045                 connEtoC3(e);
00046         };
00047         public void mouseEntered(java.awt.event.MouseEvent e) {};
00048         public void mouseExited(java.awt.event.MouseEvent e) {};
00049         public void mousePressed(java.awt.event.MouseEvent e) {};
00050         public void mouseReleased(java.awt.event.MouseEvent e) {};
00051         public void valueChanged(javax.swing.event.TreeSelectionEvent e) {
00052             if (e.getSource() == DependencyValueViewer.this.getDependencyTree()) 
00053                 connEtoC1();
00054             if (e.getSource() == DependencyValueViewer.this.getValueTree()) 
00055                 connEtoC4();
00056         };
00057         public void windowActivated(java.awt.event.WindowEvent e) {};
00058         public void windowClosed(java.awt.event.WindowEvent e) {
00059             if (e.getSource() == DependencyValueViewer.this) 
00060                 connEtoM1(e);
00061         };
00062         public void windowClosing(java.awt.event.WindowEvent e) {};
00063         public void windowDeactivated(java.awt.event.WindowEvent e) {};
00064         public void windowDeiconified(java.awt.event.WindowEvent e) {};
00065         public void windowIconified(java.awt.event.WindowEvent e) {};
00066         public void windowOpened(java.awt.event.WindowEvent e) {};
00067     };
00068     IvjEventHandler ivjEventHandler = new IvjEventHandler();
00069 /**
00070  * DependencyValueViewer constructor comment.
00071  */
00072 public DependencyValueViewer() {
00073     super();
00074     initialize();
00075 }
00076 /**
00077  * DependencyValueViewer constructor comment.
00078  * @param title java.lang.String
00079  */
00080 public DependencyValueViewer(String title) {
00081     super(title);
00082 }
00083 /**
00084  * Insert the method's description here.
00085  * Creation date: (00-11-5 15:35:22)
00086  */
00087 private void changeStateFromDepend() {
00088     if (!dependFrame.doDepends() && !dependFrame.doValues())
00089         this.setToEmptyState();
00090     if (dependFrame.doDepends() && dependFrame.doValues()) {
00091         //change state to depend/value
00092         doDependValue = true;
00093         doDepend = true;
00094         doValue = true;
00095         doValueDepend = false;
00096         //change viewer
00097         resizeViewer(true);
00098         getJFrameContentPane().removeAll();
00099         getDependValueSplitPane().add(getDependencyPanel(), "top");
00100         getDependValueSplitPane().add(getValuesPanel(), "bottom");
00101         getJFrameContentPane().add(getDependValueSplitPane(), "Center");
00102         validate();
00103         repaint();
00104         getDependValueSplitPane().setDividerLocation((double) 0.5);
00105     }
00106     else if (dependFrame.doDepends() && !dependFrame.doValues()){
00107         //keep depend state
00108     }
00109 }
00110 /**
00111  * Insert the method's description here.
00112  * Creation date: (00-11-5 15:35:22)
00113  */
00114 private void changeStateFromDependValue() {
00115     if (dependFrame.doDepends() && dependFrame.doValues()) {
00116         //keep depend/value state
00117     } else
00118         if (dependFrame.doDepends() && !dependFrame.doValues()) {
00119             //change to state Depend
00120             doDepend = true;
00121             doValue = false;
00122             doDependValue = false;
00123             doValueDepend = false;
00124             // change viewer
00125             int componentCount = getJFrameContentPane().getComponentCount();
00126             if (componentCount == 1) {
00127                 java.awt.Component component = getJFrameContentPane().getComponent(0);
00128                 if (component.getName().equals("DependValueSplitPane"))
00129                     resizeViewer(false);
00130             }
00131             getJFrameContentPane().removeAll();
00132             getJFrameContentPane().add(getDependencyPanel(), "Center");
00133         } else
00134             if (!dependFrame.doDepends() && dependFrame.doValues()) {
00135                 //change to state Value
00136                 doValue = true;
00137                 doDepend = false;
00138                 doDependValue = false;
00139                 doValueDepend = false;
00140                 int componentCount = getJFrameContentPane().getComponentCount();
00141                 if (componentCount == 1) {
00142                     java.awt.Component component = getJFrameContentPane().getComponent(0);
00143                     if (component.getName().equals("DependValueSplitPane"))
00144                         resizeViewer(false);
00145                 }
00146                 getJFrameContentPane().removeAll();
00147                 getJFrameContentPane().add(getValuesPanel(), "Center");
00148             }
00149 }
00150 /**
00151  * Insert the method's description here.
00152  * Creation date: (00-11-5 15:35:22)
00153  */
00154 private void changeStateFromEmpty() {
00155     getJFrameContentPane().removeAll();
00156     if (dependFrame.doDepends()) {
00157         //change state from Empty to Depend
00158         doDepend = true;
00159         doValue = false;
00160         doDependValue = false;
00161         doValueDepend = false;
00162         //change the viewer
00163 
00164         getJFrameContentPane().add(getDependencyPanel(), "Center");
00165     } else
00166         if (dependFrame.doValues()) {
00167             //change state from Empty to Value
00168             doValue = true;
00169             doDepend = false;
00170             doDependValue = false;
00171             doValueDepend = false;
00172             //change the viewer
00173 
00174             getJFrameContentPane().add(getValuesPanel(), "Center");
00175         }
00176         else {
00177             // !doValues() && !doDepends()
00178             // do nothing --- keep empty state
00179         }
00180 }
00181 /**
00182  * Insert the method's description here.
00183  * Creation date: (00-11-5 15:35:22)
00184  */
00185 void changeStateFromEmptyTo(int newState) {
00186     int currentState = getViewersCurrentState();
00187     setToEmptyState();
00188     getJFrameContentPane().removeAll();
00189     switch (newState) {
00190         case EMPTY :
00191             //do nothing
00192             break;
00193         case DEPEND :
00194             doDepend = true;
00195             doValue = false;
00196             doDependValue = false;
00197             doValueDepend = false;
00198             //change the viewer
00199             switch (currentState) {
00200                 case EMPTY :
00201                 case DEPEND :
00202                 case VALUE :
00203                     break;
00204                 case DEPENDVALUE :
00205                 case VALUEDEPEND :
00206                     resizeViewer(false);
00207                     break;
00208             }
00209             getJFrameContentPane().add(getDependencyPanel(), "Center");
00210             break;
00211         case VALUE :
00212             //change state from Empty to Value
00213             doValue = true;
00214             doDepend = false;
00215             doDependValue = false;
00216             doValueDepend = false;
00217             //change the viewer
00218             switch (currentState) {
00219                 case EMPTY :
00220                 case DEPEND :
00221                 case VALUE :
00222                     break;
00223                 case DEPENDVALUE :
00224                 case VALUEDEPEND :
00225                     resizeViewer(false);
00226                     break;
00227             }
00228             getJFrameContentPane().add(getValuesPanel(), "Center");
00229             break;
00230         case DEPENDVALUE :
00231             {
00232                 //change state to depend/value
00233                 doDependValue = true;
00234                 doDepend = true;
00235                 doValue = true;
00236                 doValueDepend = false;
00237                 //change viewer
00238                 switch (currentState) {
00239                     case EMPTY :
00240                     case DEPEND :
00241                     case VALUE :
00242                         resizeViewer(true);
00243                         break;
00244                     case DEPENDVALUE :
00245                     case VALUEDEPEND :
00246                         break;
00247                 }
00248                 getDependValueSplitPane().add(getDependencyPanel(), "top");
00249                 getDependValueSplitPane().add(getValuesPanel(), "bottom");
00250                 getJFrameContentPane().add(getDependValueSplitPane(), "Center");
00251                 validate();
00252                 repaint();
00253                 getDependValueSplitPane().setDividerLocation((double) 0.5);
00254             }
00255             break;
00256         case VALUEDEPEND :
00257             //change state to value/depend
00258             doDependValue = false;
00259             doDepend = true;
00260             doValue = true;
00261             doValueDepend = true;
00262             //change viewer
00263             switch (currentState) {
00264                 case EMPTY :
00265                 case DEPEND :
00266                 case VALUE :
00267                     resizeViewer(true);
00268                     break;
00269                 case DEPENDVALUE :
00270                 case VALUEDEPEND :
00271                     break;
00272             }
00273             getDependValueSplitPane().add(getValuesPanel(), "top");
00274             getDependValueSplitPane().add(getDependencyPanel(), "bottom");
00275             getJFrameContentPane().add(getDependValueSplitPane(), "Center");
00276             validate();
00277             repaint();
00278             getDependValueSplitPane().setDividerLocation((double) 0.5);
00279             break;
00280     }
00281     currentState = getViewersCurrentState();
00282     if (currentState != EMPTY) {
00283         this.validate();
00284         this.repaint();
00285         if (!this.isVisible())
00286             this.setVisible(true);
00287     }
00288 }
00289 /**
00290  * Insert the method's description here.
00291  * Creation date: (00-11-5 15:35:22)
00292  */
00293 private void changeStateFromValue() {
00294     if (!dependFrame.doDepends() && !dependFrame.doValues())
00295         this.setToEmptyState();
00296     if (dependFrame.doDepends() && dependFrame.doValues()) {
00297         //change state to value/depend
00298         doDependValue = false;
00299         doDepend = true;
00300         doValue = true;
00301         doValueDepend = true;
00302         //change viewer
00303 
00304         resizeViewer(true);
00305         getJFrameContentPane().removeAll();
00306         getDependValueSplitPane().add(getValuesPanel(), "top");
00307         getDependValueSplitPane().add(getDependencyPanel(), "bottom");
00308         getJFrameContentPane().add(getDependValueSplitPane(), "Center");
00309         validate();
00310         repaint();
00311         getDependValueSplitPane().setDividerLocation((double) 0.5);
00312     } else
00313         if (dependFrame.doValues() && !dependFrame.doDepends()) {
00314             //keep value state
00315         }
00316 }
00317 /**
00318  * Insert the method's description here.
00319  * Creation date: (00-11-5 15:35:22)
00320  */
00321 private void changeStateFromValueDepend() {
00322     changeStateFromDependValue();
00323 }
00324 /**
00325  * Insert the method's description here.
00326  * Creation date: (00-11-5 15:30:19)
00327  */
00328 void changeViewerState() {
00329     int currentState = getViewersCurrentState();
00330     switch (currentState) {
00331         case EMPTY :
00332             changeStateFromEmpty();
00333             break;
00334         case DEPEND :
00335             changeStateFromDepend();
00336             break;
00337         case VALUE :
00338             changeStateFromValue();
00339             break;
00340         case DEPENDVALUE :
00341             changeStateFromDependValue();
00342             break;
00343         case VALUEDEPEND :
00344             changeStateFromValueDepend();
00345             break;
00346     }
00347     currentState = getViewersCurrentState();
00348     if (currentState != EMPTY) {
00349         this.validate();
00350         this.repaint();
00351         if (!this.isVisible())
00352             this.setVisible(true);
00353     }
00354 }
00355 /**
00356  * connEtoC1:  (DependencyTree.treeSelection. --> DependencyValueViewer.dependencyTree_TreeSelectionEvents()V)
00357  */
00358 /* WARNING: THIS METHOD WILL BE REGENERATED. */
00359 private void connEtoC1() {
00360     try {
00361         // user code begin {1}
00362         if (!isSetSelectedByProgram)
00363         // user code end
00364         this.dependencyTree_TreeSelectionEvents();
00365         // user code begin {2}
00366         // user code end
00367     } catch (java.lang.Throwable ivjExc) {
00368         // user code begin {3}
00369         // user code end
00370         handleException(ivjExc);
00371     }
00372 }
00373 /**
00374  * connEtoC2:  (DependencyTree.mouse.mouseClicked(java.awt.event.MouseEvent) --> DependencyValueViewer.dependencyTree_MouseClicked(Ljava.awt.event.MouseEvent;)V)
00375  * @param arg1 java.awt.event.MouseEvent
00376  */
00377 /* WARNING: THIS METHOD WILL BE REGENERATED. */
00378 private void connEtoC2(java.awt.event.MouseEvent arg1) {
00379     try {
00380         // user code begin {1}
00381         // user code end
00382         this.dependencyTree_MouseClicked(arg1);
00383         // user code begin {2}
00384         // user code end
00385     } catch (java.lang.Throwable ivjExc) {
00386         // user code begin {3}
00387         // user code end
00388         handleException(ivjExc);
00389     }
00390 }
00391 /**
00392  * connEtoC3:  (ValueTree.mouse.mouseClicked(java.awt.event.MouseEvent) --> DependencyValueViewer.valueTree_MouseClicked(Ljava.awt.event.MouseEvent;)V)
00393  * @param arg1 java.awt.event.MouseEvent
00394  */
00395 /* WARNING: THIS METHOD WILL BE REGENERATED. */
00396 private void connEtoC3(java.awt.event.MouseEvent arg1) {
00397     try {
00398         // user code begin {1}
00399         // user code end
00400         this.valueTree_MouseClicked(arg1);
00401         // user code begin {2}
00402         // user code end
00403     } catch (java.lang.Throwable ivjExc) {
00404         // user code begin {3}
00405         // user code end
00406         handleException(ivjExc);
00407     }
00408 }
00409 /**
00410  * connEtoC4:  (ValueTree.treeSelection. --> DependencyValueViewer.valueTree_TreeSelectionEvents()V)
00411  */
00412 /* WARNING: THIS METHOD WILL BE REGENERATED. */
00413 private void connEtoC4() {
00414     try {
00415         // user code begin {1}
00416         // user code end
00417         this.valueTree_TreeSelectionEvents();
00418         // user code begin {2}
00419         // user code end
00420     } catch (java.lang.Throwable ivjExc) {
00421         // user code begin {3}
00422         // user code end
00423         handleException(ivjExc);
00424     }
00425 }
00426 /**
00427  * connEtoM1:  (DependencyValueViewer.window.windowClosed(java.awt.event.WindowEvent) --> DependencyValueViewer.setVisible(Z)V)
00428  * @param arg1 java.awt.event.WindowEvent
00429  */
00430 /* WARNING: THIS METHOD WILL BE REGENERATED. */
00431 private void connEtoM1(java.awt.event.WindowEvent arg1) {
00432     try {
00433         // user code begin {1}
00434         // user code end
00435         this.setVisible(false);
00436         // user code begin {2}
00437         // user code end
00438     } catch (java.lang.Throwable ivjExc) {
00439         // user code begin {3}
00440         // user code end
00441         handleException(ivjExc);
00442     }
00443 }
00444 /**
00445  * Comment
00446  */
00447 public boolean connEtoM1_ABoolean() {
00448     return false;
00449 }
00450 /**
00451  * Comment
00452  */
00453 public void dependencyTree_MouseClicked(java.awt.event.MouseEvent mouseEvent) {
00454     int selRow = getDependencyTree().getRowForLocation(mouseEvent.getX(), mouseEvent.getY());
00455     //TreePath selPath = getDependencyTree().getPathForLocation(mouseEvent.getX(), mouseEvent.getY());
00456     if (selRow != -1) {
00457         if (mouseEvent.getClickCount() == 1) {
00458             //mySingleClick(selRow, selPath);
00459             //System.out.println("Do nothing --- My sigle click on the tree");
00460         } else
00461             if (mouseEvent.getClickCount() == 2) {
00462                 //myDoubleClick(selRow, selPath);
00463                 //System.out.println("My DOUBLE click on the tree");
00464                 DefaultMutableTreeNode dependTreeSelected = (DefaultMutableTreeNode) getDependencyTree().getLastSelectedPathComponent();
00465                 if (dependTreeSelected == null)
00466                     return;
00467                 Object userObject = dependTreeSelected.getUserObject();
00468                 if (userObject instanceof MethodDeclarationAnnotation)
00469                     return;
00470                 StmtTreeNode selectedNode = getSelectedStmtTreeNode(userObject);
00471                 dependFrame.addSelectedNodeToDependFrame(selectedNode);
00472                 //System.out.println("End adding by double clicking");
00473             }
00474     }
00475     return;
00476 }
00477 /**
00478  * Comment
00479  */
00480 public void dependencyTree_TreeSelectionEvents() {
00481     DefaultMutableTreeNode lastSelectedNode = (DefaultMutableTreeNode) getDependencyTree().getLastSelectedPathComponent();
00482     if (lastSelectedNode == null)
00483         return;
00484     if (lastSelectedNode.isRoot()) {
00485         dependFrame.getCodeBrowserPane().setCurrentNodeSelected(dependFrame.currentNode);
00486         return;
00487     }
00488     Object userObject = lastSelectedNode.getUserObject();
00489     if (userObject.equals(dependFrame.currentNode) || (userObject instanceof String))
00490         return;
00491     StmtTreeNode selectedNode = getSelectedStmtTreeNode(userObject);
00492     dependFrame.getCodeBrowserPane().setCurrentNodeSelected(selectedNode);
00493     return;
00494 }
00495 /**
00496  * Insert the method's description here.
00497  * Creation date: (00-5-28 20:09:47)
00498  * @param node javax.swing.tree.DefaultMutableTreeNode
00499  */
00500 void expandAndCollapseFrom(DefaultMutableTreeNode rootNode, boolean isDependency) {
00501     isSetSelectedByProgram = true;
00502     int rootRow = -1;
00503     //Object object = rootNode.getUserObject();
00504     if (isDependency) {
00505         for (int i = 0; i < getDependencyTree().getRowCount(); i++) {
00506             getDependencyTree().setSelectionRow(i);
00507             DefaultMutableTreeNode node = (DefaultMutableTreeNode) getDependencyTree().getLastSelectedPathComponent();
00508             //Object o = node.getUserObject();
00509             //if (o.equals(object)) {
00510             if (node.equals(rootNode)) {
00511                 getDependencyTree().expandRow(i);
00512                 rootRow = i;
00513                 break;
00514             }
00515         }
00516         getDependencyTree().setSelectionRow(0);
00517         isSetSelectedByProgram = false;
00518         if (rootRow >= 0) {
00519             for (int i = 1; i <= rootNode.getChildCount(); i++)
00520                 getDependencyTree().collapseRow(rootRow + i);
00521         }
00522     } else {
00523         for (int i = 0; i < getValueTree().getRowCount(); i++) {
00524             getValueTree().setSelectionRow(i);
00525             DefaultMutableTreeNode node = (DefaultMutableTreeNode) getValueTree().getLastSelectedPathComponent();
00526             //Object o = node.getUserObject();
00527             //if (o.equals(object)) {
00528             //if (node.equals(rootNode)) 
00529             {
00530                 getValueTree().expandRow(i);
00531                 //rootRow = i;
00532                 //break;
00533             }
00534         }
00535         getValueTree().setSelectionRow(0);
00536         isSetSelectedByProgram = false;
00537         /*
00538         if (rootRow >= 0) {
00539             for (int i = 1; i <= rootNode.getChildCount(); i++)
00540                 getValueTree().collapseRow(rootRow + i);
00541         }
00542         */
00543     }
00544 }
00545 void expandDependTreeToOneLevel(boolean isDependency) {
00546     if (isDependency) {
00547         for (int i = 0; i < currentDependTreeRoot.getChildCount(); i++) {
00548             DefaultMutableTreeNode child = (DefaultMutableTreeNode) currentDependTreeRoot.getChildAt(i);
00549             expandAndCollapseFrom(child, isDependency);
00550             for (int j = 0; j < child.getChildCount(); j++) {
00551                 DefaultMutableTreeNode dependChild = (DefaultMutableTreeNode) child.getChildAt(j);
00552                 expandAndCollapseFrom(dependChild, isDependency);
00553             }
00554         }
00555     } else {
00556         for (int i = 0; i < currentValueTreeRoot.getChildCount(); i++) {
00557             DefaultMutableTreeNode child = (DefaultMutableTreeNode) currentValueTreeRoot.getChildAt(i);
00558             expandAndCollapseFrom(child, isDependency);
00559             for (int j = 0; j < child.getChildCount(); j++) {
00560                 DefaultMutableTreeNode valueChild = (DefaultMutableTreeNode) child.getChildAt(j);
00561                 expandAndCollapseFrom(valueChild, isDependency);
00562             }
00563         }
00564     }
00565 }
00566 /**
00567  * 
00568  */
00569 /* WARNING: THIS METHOD WILL BE REGENERATED. */
00570 private static void getBuilderData() {
00571 /*V1.1
00572 **start of data**
00573     D0CB838494G88G88GE9EF53AAGGGGGGGGGGGG8CGGGE2F5E9ECE4E5F2A0E4E1F4E13DBC8DD8D45715A1C2EB2D595814ECEDEB3AB4EBDB7DCA931B5AAEEDCDEBB7E6EB3A34357D6C56CDED6366B32DDFE33AF6E37A19547DF2079F95A5080A8A71EF84C6C0E078B708000C83B86070D319981A580601F94068B0B319F96800A45DF36FFD674E1B474CA0B62E5FF7F86F1EF36EBD671EFB6E3D671E7BC612F3A2A1DD1712C308AE1DA87F5E5091B250CB4831CB01DFA0AE174468086A5FC900FD
00574     643E33E970AC86DAC2CF0CAE1B6CED5E8565C6A86F3A9423BB8C6F87C8CE734ACEF809A0E7A1509ADD9D8FC41773C1814A59494A3FB811894FAC009640B9G1691AA7F4593398AFEAE143314F78A3A94C23CBA4A735D2EDC95FE2B42578A34FE001C944A1325BF2A5013GC7F95640F3230E73EE07E786536E3D1EFA05EF452EA54461F3453DC6E5295AC7381A426B5E23BCC9CBCE9CB5C4AAA1652D54E63D57C71AA54738713AFF5CB864749B876DEE0764339B3D0E913F4BB9A4790C8E49AB814EBDB4515050AA
00575     5E2F58DD63529527F4D372EDE13ABF57350B37CB1220BC15CAF1FF6926762A05F7AB00A395757FDDD723225F408BDFA77A63B7A26A3FB2156B3DB1B528BFD932B5A5BE0D367F06BED329D788652BGDC173F69D117F5E928CBE2B9654DCE0F5195833424A35E5CC1717DD076824CCDC79D1FBD0FBA3AC63FC9B6FAA66376C650B1A11D6B36BABD28637C0A4369F94CE72E996838276DG39G0DG83G77GA4G9CE13EEAA8BC8DCF5320EC760C0DF95CA62F77024B616B72B8A4973CB7B4GC541DD1606BCBE87
00576     A15C9FFF5BD596C69F04249D213EC801776DAD027E33B0659192F8B70E790436EF2DDFFCBBAED9E9E3430EE05F74BB295DFE42461640BB2D378700631FE1F8078A4F47EA0861E9B996E81BF6221D630BD1174C879613C5DF1262F6065125F7673DF156DDDC87472E20AE5C462DC554468BG1F88308AE0BD40F6002399E8E3CFE14DCCB66EF04B124FEDF7750D8FFA6DBE7942385385F3C131F513BE1A2D43812FF7E9567538DD16542847E85BAB4E30F671EE9F0F2B4F6076684D885A054B0E0DA85B1BB15DB732
00577     44986A0DF42CE2B37898E688FCB943A72870FCEC9FE3F30B16D7GCD3F9B00717F8B1BDB313B35BE72A443AF5E2D75110E8E7411D5C0AB5E932363637BECB1DD9767C3F98940CA00F5G5BGF2B201AF934778DB059537B90FFAD5634B6B7A8D0760A985E41F3D436D176D6EA1690A5D67348F3AA4BFD1F8268C542E03A175E2587C9E829997A5B72C1C32536306566DE392B8131F734CB36C23BCBE09D1ED4EB189840CF989367B0061GBCDDF63F7C2657E11725A08727FF46C0EDFB43FE85DA048660BD10C96D
00578     256B266B1C855E9D19E82B3D27A9EE8514578A3B9CBC359F1E174039A597AC624EA12A065DB701BE7A73EE58A049A6609FFD8DEC8B90480276770A753A9FFDF15BF30F1055FF988E6B0B94643D5C2F666F557A62F3CC46F2402F85588A10139D232B4D463D55595D9F41D733153628EEEABC55D14BCB7B006F6BD47CDC463D91E56CD11E69E1662216B7D5753ED3754E6D7FFEA975E19B744B8B30A09B472077141E7B66853BDFC2EF6C7101A3C90E6008F05E2EA23A57C8B7A4370CBB2E6CD7FC41D614917453E1
00579     0F702137991E2EDBE6F0A43F408F946D63F8E8C36D75C89FE5F43BAC7B1C03633254A7493253BD922C6FE53A78C316C43F52573F15513EAE01BE2E84D8A37A7AF25181153FD9BD1E6B63DE9B1DC90A5FFE166D4F9B01FF3B987FD346EC3ABE6C0B513582B8G2676A12D0651A86FC2402DG58A0E8C9651146143691E90D1D0AC253AB34D6A163A791E56C0C000F64BBDA9FCA973E79F8871D9FBA0506788CC17FF7C6CF5B9F23AB833081CC81AC5E0FBA76F474C728BF1B3DA77ADEB64AE4E85B5F73A149603E33
00580     39B8326F3FD89C5E77DFAE8E6F7B2F96C7776D1DA561FC1B5332CAE89FBDB75D2A39F220042E23C39E37DBE293D6D4A1BC267E1D0D764369F64AEFB99DA3125C671C14A0565FCFFDBE172D5549703EE1BF2E2BB78BF0DDF5DCD9CAAA9F3F92B68EDB70273F45559F60BEE9BD90DCD739CEB927699C14DC5298984A6C99F74B9C7FBA5B87943CBF15611A5F26FD5197078D634BEEBA5D8E4FCDA3FF18DD9E3F64A83EE63FE1B75AEF4AC6B6A04637982D0D3E17684B4B1B7561DB72CB7295275F89933E786D12ABA5
00581     155CE78E106F7A6C9A79B61FA4154970278FB4E5B6B5C6E95791D26FDD1B3A9ED34ADF8C622A884A2BEF0A8FA7EF4CB36E170C6C2F994EB8572777330B52E66C26C61DAEF5035608AD1E83952B39FE1F4C1A4774E30DFE282A5D4096E723D58D5AED2C6AAD0DDE37BDC4C14191C627D659BBF84C6882FF3E87E061815CBB7E71B425635E21EC10E60FCBE988E8DB8E5079E46849D14D11E58778F9BCCB507F94C22F4F6174D8F8F27ACF4352978A7AC2CFB8FA222067F94351D766E0BF661452BD4BAF3DB78EA612
00582     6866F7C91A40F830F43F0646CCA8624C87CA691A6AD26D1B9C9FD796FE2EFF3C0C66A92E0B766FAF5BC1E83C485B64EB53B2BBED536BF30EC118C18381A5AF7118DE1D17D88B7A539C46B6F8E69E0C51713A7B5EBC884F3083AE665A8A1AE4D1F8983D4F6BF2C2446116B8FD72F5AA1F7713E2DDCA3D054E3DA1EDF39A57ED4228562D70A0574D8A4F81G4EF335C04D93D0F89641F3196079F1A09C4FEAF82E87F09C22BC2493F3AFDB8F7238A4739067339C62FED5FF1872BDA1781681FEB540A605AF6D301A6F
00583     03CB4897FB1873ADBA4C79560570192C48274F0D5155837467F23E78DCB5DFDA97722DD578B6ABFC3B72B8DFED9E652B68465CC7054035B35CFF43067D65B4BCDFF6E52BF3C8D7775D883B77B0FBA96D4F4F531E3BFFE3246DA682FEC59E7AFDC639BA76B3797D1EA1A7BB76A8BE1CD42E5E17B86E71725D709CF67A7CF086F7C8811C87CF14D3DD6939C8C1AB3E5CFBB15CD93E4D6114BDBE8C2D4DFC1BB20B4D1A7A2B52774FD42B73CFD30B7A6376C4687B9A254FDBD4FD5F7C792DA9DC0FAF17B65D2E9EB60F
00584     990E089618529A0D20ED16331A5B0363D679BA6631B2FA91B7AAF0BF76A0AEC160FA3DA25F75BA4E5917DF27BE4F72FBF4518F987D30310FB4B4F4365333A92FF774A42DC763386CA3188F7BC881DDE3ACD09EG889C4176BEEBBC9A3EBDB14FF91BDFE5BEC16D3CC03439B41F36399A4A9BG3609B6DFAC0920A3DB84F8FB71853B14F14FBEAA720A27180ED09EG889CC5BB6C1CC05E8502F74DADA69B4A9BG368170DCC3C9E7A636FB8C66B8GDF0F96F452F9B34BD8C8714BBD4CE7C2239F1CEF4F9EEAD1FC
00585     AA31F599D973523DE1730959476F0D3B67987735A54702BE377149BF26EC83603AEF963AEF811E626338A7BD5D2C5E1386G9F8B3064B8762D6F9245076E65B8273E58EE0067EDC5D8847BC4FA55FD6A3FF6BDEC1F1217BA62D69CD7723847D5736811C3296451C3293CCFDF3A04FD2ABC91239BBD01BAE7D94B61B92B38C82C93BF301C1D5E275B8F088866252ED9D1378450EB5D89347752EE2D3D3375B13ADABD6A7E133FC3F7F92416A8FB78AC5566BA17F7214E9650679E21D3FCD7E49F7865E5FD084C7043
00586     2F64102BC3760F2678087BC7121E0FF932DE3BFF9C292273F59360376BF17FE8B652B39B6E9F17C1365DBD829110B89F9AE9BFA056D14ADB0C6928B3419CCCFFB59D176C13F0D686E885388AB0F592E55C2C18B1975C9608128B3E2FE7B6B95DC5A7710C1E55BB1BFA4BC43D351E5954DBA56A3D691DCD3DF5225E4913345E661361F3A4A4BF941F130F795ED7585ED11C4F733AF41CB8BE2D10626BD5F86E237399BFADDB0016180F723FE12472338B264BAF84DC3D86EFADC07947D8FB8385DC0ECE48BF4570AE
00587     951E4BFFB49F6F0F82C0DBDF0072BFDD2035DBCBE1D0262DF03ADE4A1D885B17C68B391CF401DF4F70D3AA3CF2A7F28A67688220EDADC4791993DA797D0620CC17A1127C56A95A5EBD862D7C9E060FB7E8657F47AD143F84E81927D0FEC527D63E77D4284C791A32F2C7B22D1ED16B531AFAFC3EBED2C3E30B55C05B88309DA037A8C65788508FB0D5047376490AF3E426F94B03AD93DB324C5ACC0D22677F5CE17F4825197A3728A8341EF2763251BB69B0F18EDDE015334E471B54E71465C5BC4739811EDB0BB0
00588     3E59F79E631B4CE24C779B6A286DDA21BCG90G0887C882D88B302D98EDF728B2DC2C9A4EF6538355E04E185B61AB536CF0FB767B7634FA47B5655C12F0753C56BB13774134FADAF9159AF9FCAC5E6C520E854DB9DB0077EA890E4506EE9C8B39C46429275D475E1E1E26E97534FE15D892EE5EC8E7288E2B003636844759DFC96F52F17F6C75B85DB2413DD3DFC573829E1FF34469C61C016106BCBE1668D46E8C2AA367E0C72A4367E0472A4367E07D55516F9FEED5C74A51723B02456CDC34917AC7CE03FFB3
00589     1C2197F1B982773C87F145826772A22ED1606A591927974A32405D4FF0F3211CA0F0D96C5C318A4A6BCE637812C21AE759A84A3BD9B92D944B8F94C43AA7C020F52351238117716599E5245EE17BD94266BFE4E738E268D7EBA95AA33702627A216C953847CF205DE2856ED76CEEE78914D78A3B94949021FF196A7D6B79B375656F81AE63C7F7D5866F73B266ABEB213F1B049DCE9B50B619E5E8071F1F2238CAA8DB846ED906F314713303F297FA8AF5263CDA1916B038595B65DEA1A31C3FE86FC16F4CAE8593
00590     E81758B2344BC313E817A542861DD36CEE844A1B846ECD06CBAB67E7D80EDBFFEB36E339E986DBA52B68DC46CB3316B1132D5476BD464ACF9D226B2B9716C9494FB65DD63BECD7E83F11E92EF55A9DD337FDCCA218EB9D6E4CD0F85AE4CF973D6FD0F2EBB511576D6F5604DF371F2C217B055FB36E9B1234EBF3F2CD2E208523018ED99A236AF01E1F317A325DB7A2CDDB5B57337A1C96297EF3B51156FF5E5712CB2A3E1A2B8846D4A3ED54DE6172D1C3BE0F4BC5B3C884F3EBCFB4E1FE2C309C73C206E69A7BDE
00591     05328CB03F9CFD6C5079C8E726454013D4BE5D1FF8BFAA6AA25B7ECCDDF85BB756C5363D39EEE65BDB6BA25B3E2FEEE65BDF2D0BEE7B0DA1362F9678AFD955789AE1677B44B70049424EDBD99EA24D9823BB8AD0EBC4BBBF579D494ED66099B0CE37B317FD2DCBAD3BD674775A99F60E93E5B7ABCF88FF11CCD9429EEDEE079298717C7837D90CD18E1B7963BA444530F862EB0023E78E0ECBE17144D32008BD95F1F3982E8678FE1C02BA761C24F358A18D5B47DDB24B9E76F815CF03G1FE8E4B92513A2FEB4E2
00592     BE742BB7E99EFA58E79F03E16873CAC3A4360272FE71A44623DB00B78DF005G2DG0E8A4C6B988AD8DBCE1965CA12AB68772C8F51B43722531EFEBA56BC7B8B7EA033F00C4D919E731EAB545E1150BB106CCA10D509B2B69A290FBB1CB71C60E9D64F906F916F4F7F3218013657A878ABAAE8DEFF50BEF4FD446799F7BB306F97D9ACE1853EFEG5E4735629B5AD840AD84C882D88730CD3477121E5A8762D7D0DEAD5B1FCF5B23631DDB053CCBCF533856E51F700C43B8A7D5D13E7F94F7C5D6A8BBG6683A4D4
00593     71781E6BE1B2A08F2906789220964086A0D7E35B7FDAC27B456E322C76C14905B67E581BFB912FDA05F82EB027C81DAB0C2F66B2136049F533CE205C64EA2E5BC6F8EE2B6667C02E5B72C964492E01F181E885F0G445620EEDB2BC36F5338021C76573CECC18BAA48757B6814D6BFAAF7F18D4E5755CDD13FB52D09141378B4DBE713EB34B921FFE67875B55A1CD0E9B36604B6832D37966306727398FFAE9738EC8B46922BEBC58C9E751B584D3511749C655F3356E97574B1FCF61DD64FD73AD0CFBD50E26BD0
00594     276D5D2867A601DBF899755CDE07639443F2EC2A2DCB39D00039C93FBE147D46560E3E5E1E3E36F7FB3A5FB5DB610567DD7F0B28732EE47B7C08F9D77D9965DED0F9EE7B5A43F378BA1DFC92670B8BE80B4FD0DCFF3EFA7C290E4E94FE8E6574F9A1F43A16FC142869ABC268D45702D4B57DF7A1F42A739C25BE6FD769BBF8A7E7BB73ADD27C44E044EF42B7AB7D49FE03BF97BF72701C321F9ECA656DD4542B6D337CAFFF0E53C5E8472254373D914CCBF37B788BF1ED1E7B866EE3AF333B7715D0DE8730658D9C
00595     471C0A946AB6153866E61FA784570347CE1C0027DB3A299779FA3347657195D7D75616A9D0226C1D2F1C40B159D50FE3D22C570E496FC3EC7E36DEBBA63F51296973755AB1B105503F23570EC9FABA27F37D67659BB4BE9A3C6DB3DEE93BEC6BB01B2C6F7675DABBECE2DE688AB1275A827D8854635E76EBA35D17C53CC60D5150F041C33F6F3072C51A5B2123906D302C9EEDFF133539894A64EC0CAE77ACFEBFB5190ABE333D649B44557EC1D81FB97AC7D7DC65D9E52C4F8647BA2162F0BA17B9E2C0198B4E22
00596     6D9FB4C4377D778DDA5B1704787B4B066836AFBD25357D0BE91C2E5C0D8EC7389BE58BBA577BD2915E352EBE0B771A72845A1FB444686A9BB0DF35E2827B68EDC03B7E1671AE0172CA00F5027769C9645D52007658F5AB3ABD9AEEE96D7169903A6BD6F4FBFC6E16569E3FD76C41F57A4E947635789C2E2B4FB4613ABAF08E577FFFEA26B91979223C14156977973CDC55FCB77281D49EFDAA67593BA2834F11BC6639427643A5A0F779B90C8F0AAC989FECG5CD6001CC608DFGEC0DE83325DDE8B33991ED626E
00597     26B6CA9065GAB53EFCC143C1778EE1A72FC587D62B2723A2365A37EDE60B6B330B8BF897A302A91ED7668E591DB83AE2D8962AA00D6GC7936658F73650FA31D0CEE842BC6B330D250446FA5726FF758148DE1F87A2FEF902E3D9C4287433A27F4EFE8F325306EBDD7C23DFA07D09FF0E784D4A4AA665B7BB4A33B26161B974497B721E0976B73BB9C6D786508BB08AB085905F0CFDABE1319E3D91G75CD32EC9F9AE5DF6B60C5817DF0A5082687955EF67C852A2972FB1BA6C3A47BC08B1D3024758CDE03C329
00598     4DBEA2FCA0D028354D1266203F2DE80E943B0D31EF8957B4EB6F7DEEB07C7AE66D3D5F2BE538C6EE821A75BC7A792BA76E6CB7BEBB2769FDFB758E5EE13D6ED9576376F81E6D234B4EEB6D341561D71C575A69FD31172F86DAD98B4E0765E676FBABA8A7822C82D88F309DA05704BE745679CAB243FD134D6335CAB7A4176ADA00774FE538B33B7496296B1519383F34A8CF9BBCC7CD616EDFA6275D375E1E3C39F7D86FFB332E4747692F136C9E59249D3F91061FEB520E5F96918B4483ED1B897D7C1949BB537B
00599     09A9F53D2B9738AD3D4AB3961E8BAF045AF765852A479F1A74D15ACED46A701853F2113E07FE310D31F5E19B91FC69165B0F2D3BACA236B6E3BCF34B220DE7BEC1547148D7AC5AF8C697C2FF46220DE79E8A216F6B5046B3D81F5BE4E5576D5B64AFA65A3E789A1B20BD0E35876DF15F655B37474FAE23BDDA04BDD27B225B232EAF3ABD2E87225B6321C0A4FB7075A2330562C5AE12EF19783B0B96DA177E2E42E9F7B9A7D96A278F985DA3FCBDFA211D52835017F800A400E4008DE6DC0BBE5512CF58DA94E6AF
00600     EBF30CC8F866C6F9132648395C98534C3F931CE7E2F9AF0FACFB46E87B08DFE02273C876F89912639EE4E36BF30E0C4A1CD541FF56C44748A58DB334F2CFD90877A95B4D984FFD3F8C63B9FDAB4EEFBF7D6CCC1933D32A7774083FE37AB0004BB87E7FA063770541BE3D22FA1FD3F877E5AF3A2BB2146F214D117DEF15B97CDD428F4C616F5F5718237F86EA1DB972EF201EB12BFF83457DED041DB9DB4157EC2D68037F56C7F12334ACF025B6F1B7ACF08E06DB86655542D79D1341719BD33D7FE1626E0F655E49
00601     3BFFB77C74945AEB3D30433CC634579601FB3ED16488856EC4935A2B388D73CD3F6C22F9ED33C4FF2B0EE783E3G4F861BAFA61264357362F0FD566A5458267C1636AD1887895A6332654E620227AF4F369E772F175AA37B797676195759740B6C4E8156C75B04D739535AFD11FD63B2BC6C1744FA3E77E23640F578FBBDFEA75DC1F85EFD65E9BC7FADEA63F9776570DC8DC03F6B5850463EE9A84B0D5297BEAE9F9451B3733047AD7333E6BC1BA7456DF07EEE97E357C7F9E468945F3F6F3750A1607140851BBE
00602     0A0C51F6F5BCF04B46FEAF6171C92177AA1FE473EB8AF86782F0DC6A7BACCFG6565GDC6EC8C7D0EECA54588C657236ACCD587E26F6BC8BD8BBE97DDD97615C8CE08198G10816683A4GA4DD44FD7873970BC964B3B3CF86323D58E7F73AE59E43FE2E94E3583550CE2685F3D43FAE4598265502792C9CF62E1B02F2BCC022857304BFBA231E9F5467A36516D7D9F8FFB7D9C26787371B251708B178E69F6DCBC83C558E03DF1C6F009845B3E2743A208F79E57A4AB2FDD5F5892F732E0D2E275D9E1FBCAA5AB4
00603     7DA9586639AE9A470446EF46C117FD68BA673D37AF487BFE636C653F579429FD654C5699F9BE7E35F36679B85299BE6E996B1C9E7778BA4347BD01CEF55C43F16FAB6D7A4407904AEF6CBA69B872BB3EAE3B5BBE227AC6F1F1691D2DE50F5DE13D67E7DD0F1F5D66B21FAD6E501E69BE4170359D5AB35D6BA2F7518234459DB88FAB72689A352B9366A10085E0GC086185F0973AF77D2CD1479F75963E119FDFABB8C3E231E0ACA9F7F01F6D1F97F146ADDDFF677776A33F7D58637CFFDDEE47FBF1FB7337FDB72
00604     427BFFF75EF47F6F4B8B6F7FFF4ED37BBF7F3F2C5E3BBC8FB60E4497C83ACC72455158A97975F637C3FF45BE6E12746DAE4FCDBD7FCD265FC732C2A7396E8B0767E45FDFB31EC2F634139D43F617F7545EC152592FA62CA4E548AF13A36CB7A595D025E208D629E0957B3C76A1695CBBA4E358B7B24858E51272CE7BBB5088AB3DC7BEA029D632DB9E659F9584E4199C8E3654CB1DC7A11C8B507F70043C1A1C1C6C05FFFEDAD5979DA3139D7C8723B249D4F79BBA78DA482A7764676BFE1D7C2BAB7ED432230364
00605     51CD38CF7231332264205FD6A97FF1CABB4970526FBE686F72BBC81A1FBD527D72048B2C10B3FC197EA057AFCB8E93C64BA078A06F4D386CF4D5D86C7ED1190E78B9ABC9F3537F62056C67E4175DBDD2410F243C1FBAD38B6D89E1174A206F8126AFED45A8DAB9706D3D06131D9B13D2C9CABB596D72589D6D76A118109DA4C39E75C97ED10F4B91701E678D6D3AC97D0266FCD32139A3227B3433C69B58D7A8FDBD70507C57B63D561E82A1280FD4B0CEBAGC64161B00F5AFDA0CA72F548743B940F2FD050E20E
00606     4B27FEF87170559422D3BAC907A5B3G0311813E6F76C358B1869A68B59AA0C9B4E47C64D3158FAEFD65ED56D0302ACCCE847DE3C4720CD5180607E135918D007D2079E322F94AE354706C8FFC62E0674FDE9D0471EEA529E315156CEF957BDBCD7FD6B1CC9543D4D503913710287F3474GF346EC19BB8968331769C3075988B34DAEBF7D42D38F7F22F14BE668DD3BB211405859C12E6E7131C149771144870F6D095F70F1BA96DE6A9258AECC42B127EB82DEDA59FE9D20F8FDC0B587G442C58BD4D23A8B6EB
00607     3AEBD074FEC64CE1FF8F4F3A6334D69E2BFB048A24AF47C335AC8A6039E3C51B7A2E7D28EDAC6237889BFB14EF90FA343F810BED204A57764668FAFBF11FDAFB16A6ADA25D9D740D59DDAE596E3AEEF2BB68BD420589D98A1EE7BF56C05B77A30FC2D472AF8DD46FEB2ABA7F87D0CB8788BF7DAEA4539AGG08D0GGD0CB818294G94G88G88GE9EF53AABF7DAEA4539AGG08D0GG8CGGGGGGGGGGGGGGGGGE2F5E9ECE4E5F2A0E4E1F4E1D0CB8586GGGG81G81GBAGGG8D
00608     9BGGGG
00609 **end of data**/
00610 }
00611 /**
00612  * Return the DependencyLabel property value.
00613  * @return javax.swing.JLabel
00614  */
00615 /* WARNING: THIS METHOD WILL BE REGENERATED. */
00616 private javax.swing.JLabel getDependencyLabel() {
00617     if (ivjDependencyLabel == null) {
00618         try {
00619             ivjDependencyLabel = new javax.swing.JLabel();
00620             ivjDependencyLabel.setName("DependencyLabel");
00621             ivjDependencyLabel.setFont(new java.awt.Font("dialog.plain", 0, 12));
00622             ivjDependencyLabel.setText("Dependencies");
00623             ivjDependencyLabel.setForeground(java.awt.Color.black);
00624             // user code begin {1}
00625             // user code end
00626         } catch (java.lang.Throwable ivjExc) {
00627             // user code begin {2}
00628             // user code end
00629             handleException(ivjExc);
00630         }
00631     }
00632     return ivjDependencyLabel;
00633 }
00634 /**
00635  * Return the DependencyPanel property value.
00636  * @return javax.swing.JPanel
00637  */
00638 /* WARNING: THIS METHOD WILL BE REGENERATED. */
00639 public javax.swing.JPanel getDependencyPanel() {
00640     if (ivjDependencyPanel == null) {
00641         try {
00642             ivjDependencyPanel = new javax.swing.JPanel();
00643             ivjDependencyPanel.setName("DependencyPanel");
00644             ivjDependencyPanel.setLayout(new java.awt.BorderLayout());
00645             ivjDependencyPanel.setBounds(632, 76, 160, 120);
00646             getDependencyPanel().add(getDependencyLabel(), "North");
00647             getDependencyPanel().add(getDependScrollPane(), "Center");
00648             // user code begin {1}
00649             // user code end
00650         } catch (java.lang.Throwable ivjExc) {
00651             // user code begin {2}
00652             // user code end
00653             handleException(ivjExc);
00654         }
00655     }
00656     return ivjDependencyPanel;
00657 }
00658 /**
00659  * Return the DependencyTree property value.
00660  * @return javax.swing.JTree
00661  */
00662 /* WARNING: THIS METHOD WILL BE REGENERATED. */
00663 public javax.swing.JTree getDependencyTree() {
00664     if (ivjDependencyTree == null) {
00665         try {
00666             ivjDependencyTree = new javax.swing.JTree();
00667             ivjDependencyTree.setName("DependencyTree");
00668             ivjDependencyTree.setBackground(new java.awt.Color(204,204,204));
00669             ivjDependencyTree.setBounds(0, 0, 78, 72);
00670             // user code begin {1}
00671             getDependencyTree().setModel(new DefaultTreeModel(new DefaultMutableTreeNode("")));
00672             getDependScrollPane().validate();
00673             getDependScrollPane().repaint();
00674             ivjDependencyTree.setUI(new javax.swing.plaf.metal.MetalTreeUI() {
00675                 public javax.swing.plaf.metal.MetalTreeUI setAngledColor() {
00676                     setHashColor(java.awt.Color.black);
00677                     return this;
00678                 }
00679             }
00680             .setAngledColor());
00681             ivjDependencyTree.getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION);
00682             ivjDependencyTree.setCellRenderer(new DefaultTreeCellRenderer() {
00683                 public java.awt.Component getTreeCellRendererComponent(JTree tree, Object value, boolean sel, boolean expanded, boolean leaf, int row, boolean hasFocus) {
00684                     super.getTreeCellRendererComponent(tree, value, sel, expanded, leaf, row, hasFocus);
00685                     Object o = ((DefaultMutableTreeNode) value).getUserObject();
00686                     setForeground(java.awt.Color.black);
00687                     setIcon(null);
00688                     return this;
00689                 }
00690             });
00691             ((DefaultTreeCellRenderer) ivjDependencyTree.getCellRenderer()).setBackgroundNonSelectionColor(new java.awt.Color(204, 204, 204));
00692             ivjDependencyTree.putClientProperty("JTree.lineStyle", "Angled");
00693 
00694             // user code end
00695         } catch (java.lang.Throwable ivjExc) {
00696             // user code begin {2}
00697             // user code end
00698             handleException(ivjExc);
00699         }
00700     }
00701     return ivjDependencyTree;
00702 }
00703 /**
00704  * Return the DependScrollPane property value.
00705  * @return javax.swing.JScrollPane
00706  */
00707 /* WARNING: THIS METHOD WILL BE REGENERATED. */
00708 public javax.swing.JScrollPane getDependScrollPane() {
00709     if (ivjDependScrollPane == null) {
00710         try {
00711             ivjDependScrollPane = new javax.swing.JScrollPane();
00712             ivjDependScrollPane.setName("DependScrollPane");
00713             getDependScrollPane().setViewportView(getDependencyTree());
00714             // user code begin {1}
00715             // user code end
00716         } catch (java.lang.Throwable ivjExc) {
00717             // user code begin {2}
00718             // user code end
00719             handleException(ivjExc);
00720         }
00721     }
00722     return ivjDependScrollPane;
00723 }
00724 /**
00725  * Return the DependValueSplitPane property value.
00726  * @return javax.swing.JSplitPane
00727  */
00728 /* WARNING: THIS METHOD WILL BE REGENERATED. */
00729 public javax.swing.JSplitPane getDependValueSplitPane() {
00730     if (ivjDependValueSplitPane == null) {
00731         try {
00732             ivjDependValueSplitPane = new javax.swing.JSplitPane(javax.swing.JSplitPane.VERTICAL_SPLIT);
00733             ivjDependValueSplitPane.setName("DependValueSplitPane");
00734             ivjDependValueSplitPane.setDividerLocation(50);
00735             ivjDependValueSplitPane.setBackground(new java.awt.Color(204,204,204));
00736             ivjDependValueSplitPane.setBounds(642, 243, 160, 120);
00737             // user code begin {1}
00738             // user code end
00739         } catch (java.lang.Throwable ivjExc) {
00740             // user code begin {2}
00741             // user code end
00742             handleException(ivjExc);
00743         }
00744     }
00745     return ivjDependValueSplitPane;
00746 }
00747 /**
00748  * Insert the method's description here.
00749  * Creation date: (00-11-10 10:59:03)
00750  * @return int
00751  * @param dependKind java.lang.String
00752  */
00753 int getInsertIndexOf(String dependValueKind, boolean isDependency) {
00754     if (isDependency) {
00755         int kind = dependFrame.dependencyKindsList.indexOf(dependValueKind);
00756         for (int i = 0; i < currentDependTreeRoot.getChildCount(); i++) {
00757             DefaultMutableTreeNode oneChild = (DefaultMutableTreeNode) currentDependTreeRoot.getChildAt(i);
00758             int childIndex = dependFrame.dependencyKindsList.indexOf(oneChild.toString());
00759             if (kind < childIndex)
00760                 return i;
00761         }
00762         return currentDependTreeRoot.getChildCount();
00763     } else {
00764         int kind = dependFrame.valueKindsList.indexOf(dependValueKind);
00765         for (int i = 0; i < currentValueTreeRoot.getChildCount(); i++) {
00766             DefaultMutableTreeNode oneChild = (DefaultMutableTreeNode) currentValueTreeRoot.getChildAt(i);
00767             int childIndex = dependFrame.valueKindsList.indexOf(oneChild.toString());
00768             if (kind < childIndex)
00769                 return i;
00770         }
00771         return currentValueTreeRoot.getChildCount();
00772     }
00773 }
00774 /**
00775  * Return the JFrameContentPane property value.
00776  * @return javax.swing.JPanel
00777  */
00778 /* WARNING: THIS METHOD WILL BE REGENERATED. */
00779 public javax.swing.JPanel getJFrameContentPane() {
00780     if (ivjJFrameContentPane == null) {
00781         try {
00782             ivjJFrameContentPane = new javax.swing.JPanel();
00783             ivjJFrameContentPane.setName("JFrameContentPane");
00784             ivjJFrameContentPane.setLayout(new java.awt.BorderLayout());
00785             // user code begin {1}
00786 
00787             // user code end
00788         } catch (java.lang.Throwable ivjExc) {
00789             // user code begin {2}
00790             // user code end
00791             handleException(ivjExc);
00792         }
00793     }
00794     return ivjJFrameContentPane;
00795 }
00796 /**
00797  * Insert the method's description here.
00798  * Creation date: (00-11-15 11:03:32)
00799  * @return edu.ksu.cis.bandera.pdgslicer.dependency.StmtTreeNode
00800  * @param userObject java.lang.Object
00801  */
00802  StmtTreeNode getSelectedStmtTreeNode(Object userObject) {
00803     StmtTreeNode selectedNode = null;
00804     if (userObject instanceof StmtTreeNode) {
00805         selectedNode = (StmtTreeNode) userObject;
00806     } else
00807         if (userObject instanceof ParameterNode) {
00808             ParameterNode pn = (ParameterNode) userObject;
00809             selectedNode = new StmtTreeNode(pn.sootClass, pn.mda, pn.mda);
00810         } else
00811             if (userObject instanceof Annotation) {
00812                 Annotation ma = null;
00813                 if ((userObject instanceof MethodDeclarationAnnotation) || (userObject instanceof ConstructorDeclarationAnnotation))
00814                     ma = (Annotation) userObject;
00815                 else
00816                     ma = CompilationManager.getAnnotationManager().getMethodAnnotationContainingAnnotation((Annotation) userObject);
00817                 if (ma instanceof MethodDeclarationAnnotation) {
00818                     SootClass sc = ((MethodDeclarationAnnotation) ma).getSootMethod().getDeclaringClass();
00819                     selectedNode = new StmtTreeNode(sc, ma, (Annotation) userObject);
00820                 } else
00821                     if (ma instanceof ConstructorDeclarationAnnotation) {
00822                         SootClass sc = ((ConstructorDeclarationAnnotation) ma).getSootMethod().getDeclaringClass();
00823                         selectedNode = new StmtTreeNode(sc, ma, (Annotation) userObject);
00824                     } else
00825                         throw new edu.ksu.cis.bandera.pdgslicer.exceptions.SlicerException("Annotation containing userObject should be method declaration or constructor declaration.");
00826             } else
00827                 if (userObject instanceof SliceTraceNode) {
00828                     SliceTraceNode stn = (SliceTraceNode) userObject;
00829                     Annotation mdAnnotation = edu.ksu.cis.bandera.jjjc.CompilationManager.getAnnotationManager().getAnnotation(stn.methodInfo.sootClass, stn.methodInfo.sootMethod);
00830                     selectedNode = new StmtTreeNode(stn.methodInfo.sootClass, mdAnnotation, stn.stmtAnnotation);
00831                 } else
00832                     throw new edu.ksu.cis.bandera.pdgslicer.exceptions.SlicerException("The object of nodes in dependency tree should be StmtTreeNode, ParameterNode or Annotation.");
00833     return selectedNode;
00834 }
00835 /**
00836  * Return the ValueLabel property value.
00837  * @return javax.swing.JLabel
00838  */
00839 /* WARNING: THIS METHOD WILL BE REGENERATED. */
00840 private javax.swing.JLabel getValueLabel() {
00841     if (ivjValueLabel == null) {
00842         try {
00843             ivjValueLabel = new javax.swing.JLabel();
00844             ivjValueLabel.setName("ValueLabel");
00845             ivjValueLabel.setFont(new java.awt.Font("dialog.plain", 0, 12));
00846             ivjValueLabel.setText("Values");
00847             ivjValueLabel.setForeground(java.awt.Color.black);
00848             // user code begin {1}
00849             // user code end
00850         } catch (java.lang.Throwable ivjExc) {
00851             // user code begin {2}
00852             // user code end
00853             handleException(ivjExc);
00854         }
00855     }
00856     return ivjValueLabel;
00857 }
00858 /**
00859  * Return the ValueScrollPane property value.
00860  * @return javax.swing.JScrollPane
00861  */
00862 /* WARNING: THIS METHOD WILL BE REGENERATED. */
00863 private javax.swing.JScrollPane getValueScrollPane() {
00864     if (ivjValueScrollPane == null) {
00865         try {
00866             ivjValueScrollPane = new javax.swing.JScrollPane();
00867             ivjValueScrollPane.setName("ValueScrollPane");
00868             getValueScrollPane().setViewportView(getValueTree());
00869             // user code begin {1}
00870             // user code end
00871         } catch (java.lang.Throwable ivjExc) {
00872             // user code begin {2}
00873             // user code end
00874             handleException(ivjExc);
00875         }
00876     }
00877     return ivjValueScrollPane;
00878 }
00879 /**
00880  * Return the ValuesPanel property value.
00881  * @return javax.swing.JPanel
00882  */
00883 /* WARNING: THIS METHOD WILL BE REGENERATED. */
00884 public javax.swing.JPanel getValuesPanel() {
00885     if (ivjValuesPanel == null) {
00886         try {
00887             ivjValuesPanel = new javax.swing.JPanel();
00888             ivjValuesPanel.setName("ValuesPanel");
00889             ivjValuesPanel.setLayout(new java.awt.BorderLayout());
00890             ivjValuesPanel.setBounds(633, 404, 160, 120);
00891             getValuesPanel().add(getValueLabel(), "North");
00892             getValuesPanel().add(getValueScrollPane(), "Center");
00893             // user code begin {1}
00894             // user code end
00895         } catch (java.lang.Throwable ivjExc) {
00896             // user code begin {2}
00897             // user code end
00898             handleException(ivjExc);
00899         }
00900     }
00901     return ivjValuesPanel;
00902 }
00903 /**
00904  * Return the ValueTree property value.
00905  * @return javax.swing.JTree
00906  */
00907 /* WARNING: THIS METHOD WILL BE REGENERATED. */
00908 public javax.swing.JTree getValueTree() {
00909     if (ivjValueTree == null) {
00910         try {
00911             ivjValueTree = new javax.swing.JTree();
00912             ivjValueTree.setName("ValueTree");
00913             ivjValueTree.setBackground(new java.awt.Color(204,204,204));
00914             ivjValueTree.setBounds(0, 0, 78, 72);
00915             // user code begin {1}
00916             getValueTree().setModel(new DefaultTreeModel(new DefaultMutableTreeNode("")));
00917             getValueScrollPane().validate();
00918             getValueScrollPane().repaint();
00919             ivjValueTree.setUI(new javax.swing.plaf.metal.MetalTreeUI() {
00920                 public javax.swing.plaf.metal.MetalTreeUI setAngledColor() {
00921                     setHashColor(java.awt.Color.black);
00922                     return this;
00923                 }
00924             }
00925             .setAngledColor());
00926             ivjValueTree.getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION);
00927             ivjValueTree.setCellRenderer(new DefaultTreeCellRenderer() {
00928                 public java.awt.Component getTreeCellRendererComponent(JTree tree, Object value, boolean sel, boolean expanded, boolean leaf, int row, boolean hasFocus) {
00929                     super.getTreeCellRendererComponent(tree, value, sel, expanded, leaf, row, hasFocus);
00930                     Object o = ((DefaultMutableTreeNode) value).getUserObject();
00931                     setForeground(java.awt.Color.black);
00932                     setIcon(null);
00933                     return this;
00934                 }
00935             });
00936             ((DefaultTreeCellRenderer) ivjValueTree.getCellRenderer()).setBackgroundNonSelectionColor(new java.awt.Color(204, 204, 204));
00937             ivjValueTree.putClientProperty("JTree.lineStyle", "Angled");
00938 
00939             // user code end
00940         } catch (java.lang.Throwable ivjExc) {
00941             // user code begin {2}
00942             // user code end
00943             handleException(ivjExc);
00944         }
00945     }
00946     return ivjValueTree;
00947 }
00948 /**
00949  * Insert the method's description here.
00950  * Creation date: (00-11-5 14:40:25)
00951  * @return int
00952  */
00953  int getViewersCurrentState() {
00954     if (!doDepend && !doValue)
00955         return EMPTY;
00956     if (doDepend && !(doValue || doDependValue || doValueDepend))
00957         return DEPEND;
00958     if (doValue && !(doDepend || doDependValue || doValueDepend))
00959         return VALUE;
00960     if (doDependValue && doDepend && doValue && !doValueDepend)
00961         return DEPENDVALUE;
00962     if (doValueDepend && doDepend && doValue && !doDependValue)
00963         return VALUEDEPEND;
00964     else
00965         throw new edu.ksu.cis.bandera.pdgslicer.exceptions.SlicerException("The dependency/value viewer should be one of the following states: empty, depend, value, dependvalue and valuedepend");
00966 }
00967 /**
00968  * Called whenever the part throws an exception.
00969  * @param exception java.lang.Throwable
00970  */
00971 private void handleException(java.lang.Throwable exception) {
00972 
00973     /* Uncomment the following lines to print uncaught exceptions to stdout */
00974     // System.out.println("--------- UNCAUGHT EXCEPTION ---------");
00975     // exception.printStackTrace(System.out);
00976 }
00977 /**
00978  * Initializes connections
00979  * @exception java.lang.Exception The exception description.
00980  */
00981 /* WARNING: THIS METHOD WILL BE REGENERATED. */
00982 private void initConnections() throws java.lang.Exception {
00983     // user code begin {1}
00984     // user code end
00985     this.addWindowListener(ivjEventHandler);
00986     getDependencyTree().addTreeSelectionListener(ivjEventHandler);
00987     getDependencyTree().addMouseListener(ivjEventHandler);
00988     getValueTree().addMouseListener(ivjEventHandler);
00989     getValueTree().addTreeSelectionListener(ivjEventHandler);
00990 }
00991 /**
00992  * Initialize the class.
00993  */
00994 /* WARNING: THIS METHOD WILL BE REGENERATED. */
00995 private void initialize() {
00996     try {
00997         // user code begin {1}
00998         // user code end
00999         setName("DependencyValueViewer");
01000         setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
01001         setSize(401, 308);
01002         setTitle("Dependencies and Vaule Flow Viewer");
01003         setContentPane(getJFrameContentPane());
01004         initConnections();
01005     } catch (java.lang.Throwable ivjExc) {
01006         handleException(ivjExc);
01007     }
01008     // user code begin {2}
01009     // user code end
01010 }
01011 /**
01012  * main entrypoint - starts the part when it is run as an application
01013  * @param args java.lang.String[]
01014  */
01015 public static void main(java.lang.String[] args) {
01016     try {
01017         DependencyValueViewer aDependencyValueViewer;
01018         aDependencyValueViewer = new DependencyValueViewer();
01019         aDependencyValueViewer.addWindowListener(new java.awt.event.WindowAdapter() {
01020             public void windowClosing(java.awt.event.WindowEvent e) {
01021                 System.exit(0);
01022             };
01023         });
01024         aDependencyValueViewer.setVisible(true);
01025     } catch (Throwable exception) {
01026         System.err.println("Exception occurred in main() of javax.swing.JFrame");
01027         exception.printStackTrace(System.out);
01028     }
01029 }
01030 /**
01031  * Method to handle events for the MouseListener interface.
01032  * @param e java.awt.event.MouseEvent
01033  */
01034 /* WARNING: THIS METHOD WILL BE REGENERATED. */
01035 public void mouseClicked(java.awt.event.MouseEvent e) {
01036     // user code begin {1}
01037     // user code end
01038     if (e.getSource() == getDependencyTree()) 
01039         connEtoC2(e);
01040     // user code begin {2}
01041     // user code end
01042 }
01043 /**
01044  * Method to handle events for the MouseListener interface.
01045  * @param e java.awt.event.MouseEvent
01046  */
01047 /* WARNING: THIS METHOD WILL BE REGENERATED. */
01048 public void mouseEntered(java.awt.event.MouseEvent e) {
01049     // user code begin {1}
01050     // user code end
01051     // user code begin {2}
01052     // user code end
01053 }
01054 /**
01055  * Method to handle events for the MouseListener interface.
01056  * @param e java.awt.event.MouseEvent
01057  */
01058 /* WARNING: THIS METHOD WILL BE REGENERATED. */
01059 public void mouseExited(java.awt.event.MouseEvent e) {
01060     // user code begin {1}
01061     // user code end
01062     // user code begin {2}
01063     // user code end
01064 }
01065 /**
01066  * Method to handle events for the MouseListener interface.
01067  * @param e java.awt.event.MouseEvent
01068  */
01069 /* WARNING: THIS METHOD WILL BE REGENERATED. */
01070 public void mousePressed(java.awt.event.MouseEvent e) {
01071     // user code begin {1}
01072     // user code end
01073     // user code begin {2}
01074     // user code end
01075 }
01076 /**
01077  * Method to handle events for the MouseListener interface.
01078  * @param e java.awt.event.MouseEvent
01079  */
01080 /* WARNING: THIS METHOD WILL BE REGENERATED. */
01081 public void mouseReleased(java.awt.event.MouseEvent e) {
01082     // user code begin {1}
01083     // user code end
01084     // user code begin {2}
01085     // user code end
01086 }
01087 /**
01088  * Insert the method's description here.
01089  * Creation date: (00-11-10 14:17:13)
01090  * @param enlarge boolean
01091  */
01092 private void resizeViewer(boolean enlarge) {
01093     if (enlarge) {
01094         java.awt.Dimension contentPaneSize = getJFrameContentPane().getSize();
01095         int newWidth = (int) contentPaneSize.getWidth() + 5;
01096         double oldHeight = contentPaneSize.getHeight();
01097         int newHeight = (int) oldHeight * 2 + 30;
01098         contentPaneSize = new java.awt.Dimension(newWidth, newHeight);
01099         setSize(contentPaneSize);
01100     } else {
01101         java.awt.Dimension contentPaneSize = getJFrameContentPane().getSize();
01102         int newWidth = (int) contentPaneSize.getWidth() + 10;
01103         double oldHeight = contentPaneSize.getHeight();
01104         int newHeight = (int) oldHeight / 2 + 40;
01105         contentPaneSize = new java.awt.Dimension(newWidth, newHeight);
01106         this.setSize(contentPaneSize);
01107     }
01108 }
01109 /**
01110  * Insert the method's description here.
01111  * Creation date: (00-11-7 13:51:33)
01112  * @param dpnd edu.ksu.cis.bandera.pdgslicer.dependency.Dependencies
01113  */
01114 void setDependFrame(Dependencies dpnd) {
01115     dependFrame = dpnd;
01116 }
01117 /**
01118  * Insert the method's description here.
01119  * Creation date: (00-11-5 15:04:23)
01120  */
01121 void setToEmptyState() {
01122     doDepend = false;
01123     doValue = false;
01124     doDependValue = false;
01125     doValueDepend = false;
01126     this.setVisible(false);
01127     //this.setVisible(true);
01128 }
01129 /**
01130  * Method to handle events for the TreeSelectionListener interface.
01131  * @param e javax.swing.event.TreeSelectionEvent
01132  */
01133 /* WARNING: THIS METHOD WILL BE REGENERATED. */
01134 public void valueChanged(javax.swing.event.TreeSelectionEvent e) {
01135     // user code begin {1}
01136     // user code end
01137     if (e.getSource() == getDependencyTree()) 
01138         connEtoC1();
01139     // user code begin {2}
01140     // user code end
01141 }
01142 /**
01143  * Comment
01144  */
01145 public void valueTree_MouseClicked(java.awt.event.MouseEvent mouseEvent) {
01146         int selRow = getValueTree().getRowForLocation(mouseEvent.getX(), mouseEvent.getY());
01147     //TreePath selPath = getDependencyTree().getPathForLocation(mouseEvent.getX(), mouseEvent.getY());
01148     if (selRow != -1) {
01149         if (mouseEvent.getClickCount() == 1) {
01150             //mySingleClick(selRow, selPath);
01151             //System.out.println("Do nothing --- My sigle click on the tree");
01152         } else
01153             if (mouseEvent.getClickCount() == 2) {
01154                 //myDoubleClick(selRow, selPath);
01155                 //System.out.println("My DOUBLE click on the tree");
01156                 DefaultMutableTreeNode  valueTreeSelected = (DefaultMutableTreeNode) getValueTree().getLastSelectedPathComponent();
01157                 if (valueTreeSelected == null)
01158                     return;
01159                 Object userObject = valueTreeSelected.getUserObject();
01160                 if (userObject instanceof MethodDeclarationAnnotation)
01161                     return;
01162                 StmtTreeNode selectedNode = getSelectedStmtTreeNode(userObject);
01163                 dependFrame.addSelectedNodeToDependFrame(selectedNode);
01164                 //System.out.println("End adding by double clicking");
01165             }
01166     }
01167 
01168     return;
01169 }
01170 /**
01171  * Comment
01172  */
01173 public void valueTree_TreeSelectionEvents() {
01174         DefaultMutableTreeNode lastSelectedNode = (DefaultMutableTreeNode) getValueTree().getLastSelectedPathComponent();
01175     if (lastSelectedNode == null)
01176         return;
01177     if (lastSelectedNode.isRoot()) {
01178         dependFrame.getCodeBrowserPane().setCurrentNodeSelected(dependFrame.currentNode);
01179         return;
01180     }
01181     Object userObject = lastSelectedNode.getUserObject();
01182     if (userObject.equals(dependFrame.currentNode) || (userObject instanceof String))
01183         return;
01184     StmtTreeNode selectedNode = getSelectedStmtTreeNode(userObject);
01185     dependFrame.getCodeBrowserPane().setCurrentNodeSelected(selectedNode);
01186     return;
01187 }
01188 /**
01189  * Method to handle events for the WindowListener interface.
01190  * @param e java.awt.event.WindowEvent
01191  */
01192 /* WARNING: THIS METHOD WILL BE REGENERATED. */
01193 public void windowActivated(java.awt.event.WindowEvent e) {
01194     // user code begin {1}
01195     // user code end
01196     // user code begin {2}
01197     // user code end
01198 }
01199 /**
01200  * Method to handle events for the WindowListener interface.
01201  * @param e java.awt.event.WindowEvent
01202  */
01203 /* WARNING: THIS METHOD WILL BE REGENERATED. */
01204 public void windowClosed(java.awt.event.WindowEvent e) {
01205     // user code begin {1}
01206     // user code end
01207     if (e.getSource() == this) 
01208         connEtoM1(e);
01209     // user code begin {2}
01210     // user code end
01211 }
01212 /**
01213  * Method to handle events for the WindowListener interface.
01214  * @param e java.awt.event.WindowEvent
01215  */
01216 /* WARNING: THIS METHOD WILL BE REGENERATED. */
01217 public void windowClosing(java.awt.event.WindowEvent e) {
01218     // user code begin {1}
01219     // user code end
01220     // user code begin {2}
01221     // user code end
01222 }
01223 /**
01224  * Method to handle events for the WindowListener interface.
01225  * @param e java.awt.event.WindowEvent
01226  */
01227 /* WARNING: THIS METHOD WILL BE REGENERATED. */
01228 public void windowDeactivated(java.awt.event.WindowEvent e) {
01229     // user code begin {1}
01230     // user code end
01231     // user code begin {2}
01232     // user code end
01233 }
01234 /**
01235  * Method to handle events for the WindowListener interface.
01236  * @param e java.awt.event.WindowEvent
01237  */
01238 /* WARNING: THIS METHOD WILL BE REGENERATED. */
01239 public void windowDeiconified(java.awt.event.WindowEvent e) {
01240     // user code begin {1}
01241     // user code end
01242     // user code begin {2}
01243     // user code end
01244 }
01245 /**
01246  * Method to handle events for the WindowListener interface.
01247  * @param e java.awt.event.WindowEvent
01248  */
01249 /* WARNING: THIS METHOD WILL BE REGENERATED. */
01250 public void windowIconified(java.awt.event.WindowEvent e) {
01251     // user code begin {1}
01252     // user code end
01253     // user code begin {2}
01254     // user code end
01255 }
01256 /**
01257  * Method to handle events for the WindowListener interface.
01258  * @param e java.awt.event.WindowEvent
01259  */
01260 /* WARNING: THIS METHOD WILL BE REGENERATED. */
01261 public void windowOpened(java.awt.event.WindowEvent e) {
01262     // user code begin {1}
01263     // user code end
01264     // user code begin {2}
01265     // user code end
01266 }
01267 }

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