001    package org.ujmp.gui.panels;
002    
003    import java.awt.BorderLayout;
004    import java.awt.event.ComponentEvent;
005    import java.awt.event.ComponentListener;
006    import java.lang.reflect.Constructor;
007    
008    import javax.swing.JPanel;
009    
010    import org.ujmp.core.Matrix;
011    
012    public class GraphPanel extends JPanel implements ComponentListener {
013            private static final long serialVersionUID = -8790011459377639922L;
014    
015            private JPanel graphPanel = null;
016    
017            private Matrix matrix = null;
018    
019            public GraphPanel(Matrix matrix) {
020                    this.matrix = matrix;
021                    this.addComponentListener(this);
022            }
023    
024            
025            public void componentHidden(ComponentEvent e) {
026            }
027    
028            
029            public void componentMoved(ComponentEvent e) {
030            }
031    
032            
033            public void componentResized(ComponentEvent e) {
034            }
035    
036            
037            public void componentShown(ComponentEvent e) {
038                    if (graphPanel == null) {
039                            try {
040                                    Class<?> c = Class.forName("org.ujmp.jung.MatrixGraphPanel");
041                                    Constructor<?> con = c.getConstructor(Matrix.class);
042                                    graphPanel = (JPanel) con.newInstance(matrix);
043                                    setLayout(new BorderLayout());
044                                    add(graphPanel, BorderLayout.CENTER);
045                                    repaint(1000);
046                            } catch (Exception ex) {
047                                    ex.printStackTrace();
048                            }
049                    }
050            }
051    }