PNLComponentDetails.java :  » Swing-Library » swingexplorer » org » swingexplorer » Java Open Source

Java Open Source » Swing Library » swingexplorer 
swingexplorer » org » swingexplorer » PNLComponentDetails.java
/*
 * Swing Explorer. Tool for developers exploring Java/Swing-based application internals. 
 * Copyright (C) 2008, Maxim Zakharenkov
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License along
 * with this program; if not, write to the Free Software Foundation, Inc.,
 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
 * 
 * $Header: /cvs/swingexplorer/src/org/swingexplorer/PNLComponentDetails.java,v 1.3 2008/02/13 21:52:11 maxz1 Exp $
 */
package org.swingexplorer;

import java.awt.Component;
import java.awt.Dimension;
import java.awt.Insets;
import java.awt.LayoutManager;
import java.awt.Point;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;

import javax.swing.JComponent;
import javax.swing.SwingUtilities;
import javax.swing.border.Border;


/**
 *
 * @author  Maxim Zakharenkov
 */
public class PNLComponentDetails extends javax.swing.JPanel {
    
    /** Creates new form ComponentDetails */
    public PNLComponentDetails() {
        initComponents();
    }
    
    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        lblLayout = new javax.swing.JLabel();
        txtLayout = new javax.swing.JTextField();
        txtBorder = new javax.swing.JTextField();
        txtSize = new javax.swing.JTextField();
        txtLocation = new javax.swing.JTextField();
        lblLocation = new javax.swing.JLabel();
        lblSize = new javax.swing.JLabel();
        txtBorderInsets = new javax.swing.JTextField();
        lblBorderInsets = new javax.swing.JLabel();
        chbOpaque = new javax.swing.JCheckBox();
        chbVisible = new javax.swing.JCheckBox();
        lblBorder = new javax.swing.JLabel();

        lblLayout.setText("Layout:");

        txtLayout.setEditable(false);

        txtBorder.setEditable(false);

        txtSize.setEditable(false);

        txtLocation.setEditable(false);

        lblLocation.setText("Location:");

        lblSize.setText("Size:");

        txtBorderInsets.setEditable(false);

        lblBorderInsets.setText("Border Insets:");

        chbOpaque.setText("Opaque");
        chbOpaque.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 0, 0, 0));
        chbOpaque.setMargin(new java.awt.Insets(0, 0, 0, 0));

        chbVisible.setText("Visible");
        chbVisible.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 0, 0, 0));
        chbVisible.setMargin(new java.awt.Insets(0, 0, 0, 0));

        lblBorder.setText("Border:");

        org.jdesktop.layout.GroupLayout layout = new org.jdesktop.layout.GroupLayout(this);
        this.setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
            .add(layout.createSequentialGroup()
                .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
                    .add(lblLayout)
                    .add(lblBorder)
                    .add(lblBorderInsets)
                    .add(chbOpaque))
                .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
                .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.TRAILING)
                    .add(layout.createSequentialGroup()
                        .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.TRAILING)
                            .add(org.jdesktop.layout.GroupLayout.LEADING, chbVisible, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 63, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
                            .add(layout.createSequentialGroup()
                                .add(txtBorderInsets, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 137, Short.MAX_VALUE)
                                .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
                                .add(lblSize)
                                .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
                                .add(txtSize, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 61, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
                                .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
                                .add(lblLocation)
                                .add(4, 4, 4)))
                        .add(0, 0, 0)
                        .add(txtLocation, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 71, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
                    .add(txtLayout, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 352, Short.MAX_VALUE)
                    .add(org.jdesktop.layout.GroupLayout.LEADING, txtBorder, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 352, Short.MAX_VALUE)))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
            .add(layout.createSequentialGroup()
                .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
                    .add(lblLayout)
                    .add(txtLayout, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
                .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
                    .add(lblBorder)
                    .add(txtBorder, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
                .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
                    .add(lblBorderInsets)
                    .add(lblLocation)
                    .add(txtBorderInsets, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
                    .add(txtLocation, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
                    .add(txtSize, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
                    .add(lblSize))
                .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
                .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
                    .add(chbVisible, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 15, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
                    .add(chbOpaque)))
        );
    }// </editor-fold>//GEN-END:initComponents
    
    
    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JCheckBox chbOpaque;
    private javax.swing.JCheckBox chbVisible;
    private javax.swing.JLabel lblBorder;
    private javax.swing.JLabel lblBorderInsets;
    private javax.swing.JLabel lblLayout;
    private javax.swing.JLabel lblLocation;
    private javax.swing.JLabel lblSize;
    private javax.swing.JTextField txtBorder;
    private javax.swing.JTextField txtBorderInsets;
    private javax.swing.JTextField txtLayout;
    private javax.swing.JTextField txtLocation;
    private javax.swing.JTextField txtSize;
    // End of variables declaration//GEN-END:variables
    
    MdlSwingExplorer model;
    ModelListener modelListener = new ModelListener();
    
    public void setModel(MdlSwingExplorer model) {

    if (model == this.model) {
      return;
    }

    if (this.model != null) {
      this.model.removePropertyChangeListener(modelListener);
    }
    if (model != null) {
      model.addPropertyChangeListener(modelListener);
    }
    this.model = model;
    repaint();
  }
    
    class ModelListener implements PropertyChangeListener {

    public void propertyChange(PropertyChangeEvent evt) {
      String propName = evt.getPropertyName();
      if (!"selectedComponents".equals(propName)) {
        return;
      }
      
      
      txtSize.setText("N/A");
      txtLocation.setText("N/A");
      txtBorder.setText("N/A");
      txtLayout.setText("N/A");
      txtBorderInsets.setText("N/A");
      chbOpaque.setSelected(false);
      chbVisible.setSelected(false);
      
      Component[] selComps= model.getSelectedComponents();
      if(selComps.length ==0) {
        return;
      }
      
      // show size
       Component curComponent = selComps[0];
       Dimension size = curComponent.getSize();
       txtSize.setText("" + size.width + "," + size.height);
       
       // show location
       Point loc = curComponent.getLocation();
       Component displComp = model.getDisplayedComponent();
       if(displComp != null) {
         SwingUtilities.convertPoint(curComponent, loc, displComp);
         txtLocation.setText("" + loc.x + "," + loc.y);
         
         //is showing
         chbVisible.setSelected(displComp.isShowing());
       }
       
       // converting to JComponent if possible
       JComponent jcomp = null;
       if(curComponent instanceof JComponent) {
         jcomp = (JComponent) curComponent; 
       } else {
         return;
       }
       
       // get border class with insets
       Border brd = jcomp.getBorder();
       if(brd != null) {
         txtBorder.setText(brd.getClass().getName());
         
         Insets ins = brd.getBorderInsets(curComponent);
         if(ins != null) {
          String strInsets = "top="  + ins.top + ",left=" + ins.left + ",bottom=" + ins.bottom + ",right=" + ins.right + "";
           txtBorderInsets.setText(strInsets);
         }
       } else {
         txtBorder.setText("null");
       }
       
       
       
       // get layout class
       LayoutManager layout = jcomp.getLayout();
       if(layout != null) {
         txtLayout.setText(layout.getClass().getName());
       } else {
         txtLayout.setText("null");
       }
       
       // opacity
       chbOpaque.setSelected(jcomp.isOpaque());       
    }
  }
}

/*
 * $Log: PNLComponentDetails.java,v $
 * Revision 1.3  2008/02/13 21:52:11  maxz1
 * Added event filtering functionality
 *
 * Revision 1.2  2008/02/06 08:36:08  maxz1
 * Changed license header
 *
 * Revision 1.1  2007/06/27 19:41:38  maxz1
 * new
 *
 */
java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.