All Downloads are FREE. Search and download functionalities are using the official Maven repository.

simkit.animate.Inspector Maven / Gradle / Ivy

package simkit.animate;

import java.awt.Component;
import java.awt.event.MouseListener;
import java.beans.BeanInfo;
import java.beans.IntrospectionException;
import java.beans.Introspector;
import java.beans.PropertyDescriptor;
import java.lang.reflect.Method;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextArea;
import simkit.smd.Mover;

/**
 *
 * @author  ahbuss
 * @version $Id: Inspector.java 81 2009-11-16 22:28:39Z ahbuss $
 */
public class Inspector implements MouseListener {
    
    private JTable table;
    private JTextArea text;
    private JScrollPane scrollPane;
    
    /** Creates new Inspector */
    public Inspector() {
        table = new JTable();
        text = new JTextArea();
        scrollPane = new JScrollPane(text);
    }
    
    public String introspect(Object obj) {
        StringBuffer buf = new StringBuffer();
//        buf.append(obj);
//        buf.append('\n');
        BeanInfo bi = null;
        try {
            bi= Introspector.getBeanInfo(obj.getClass());
        } catch (IntrospectionException e) { System.err.println(e); }
        PropertyDescriptor[] pd = bi.getPropertyDescriptors();
        for (int i = 0; i < pd.length; i++) {
            String name = pd[i].getName();
            Method getter = pd[i].getReadMethod();
            Object value = null;
            try {
                value = getter.invoke(obj, (Object[]) null);
            }
            catch (Throwable t) {System.err.println(t);}
            buf.append(name);
            buf.append('\t');
            buf.append(value);
            if (i < pd.length - 1) { buf.append('\n'); }
        }
        return buf.toString();
    }
    
    public void mouseExited(java.awt.event.MouseEvent mouseEvent) {
    }
    
    public void mouseReleased(java.awt.event.MouseEvent mouseEvent) {
    }
    
    public void mousePressed(java.awt.event.MouseEvent mouseEvent) {
    }
    
    public void mouseClicked(java.awt.event.MouseEvent mouseEvent) {
        if (mouseEvent.getClickCount() >= 1) {
            Object source = mouseEvent.getSource();
            if (source instanceof SensorIcon) {
                source = ((SensorIcon) source).getSensor();
            } else if (source instanceof MoverIcon) {
                source = ((MoverIcon) source).getMover();
            }
            text.setText(introspect(source));
            text.setEditable(false);
            
            JOptionPane.showMessageDialog((Component) mouseEvent.getSource(),
                    scrollPane, mouseEvent.getSource().toString(),
                    JOptionPane.INFORMATION_MESSAGE
                    );
        }
    }
    
    public Mover getMoverFromObject(Object obj) {
        BeanInfo bi = null;
        try {
            bi= Introspector.getBeanInfo(obj.getClass());
            PropertyDescriptor[] pd = bi.getPropertyDescriptors();
            for (int i = 0; i < pd.length; i++) {
                Method getter = pd[i].getReadMethod();
                if (getter.getReturnType().isAssignableFrom(simkit.smd.Mover.class)) {
                    return (Mover) getter.invoke(obj, (Object[]) null);
                }
            }
        } catch (Throwable e) { e.printStackTrace(System.err); }
        return null;
    }
    
    public void mouseEntered(java.awt.event.MouseEvent mouseEvent) {
    }
    
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy