Package DisplayProject.swingdisplayer

Source Code of DisplayProject.swingdisplayer.BooleanDisplayer

package DisplayProject.swingdisplayer;

import java.awt.Component;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.beans.PropertyDescriptor;
import java.lang.reflect.Method;
import java.util.EventObject;

import javax.swing.JComboBox;
import javax.swing.JLabel;
import javax.swing.JTable;

@SuppressWarnings("serial")
public class BooleanDisplayer extends PropertyDisplayer {
  private PropertyDescriptor descriptor;
  private Method readMethod;
  private Method writeMethod;
  private Component owningComponent;
  private JComboBox editorComponent;
 
  public void setEditingInformation(Component c, PropertyDescriptor pd) {
    this.owningComponent = c;
    this.descriptor = pd;
    this.writeMethod = descriptor.getWriteMethod();
    this.readMethod = descriptor.getReadMethod();
  }

  public Object getCellEditorValue() {
    if (editorComponent != null) {
      return editorComponent.getSelectedItem();
    }
    return null;
  }

  public boolean isCellEditable() {
    if (descriptor != null && descriptor.getPropertyType().equals(Boolean.TYPE) && writeMethod != null && readMethod != null) {
      return true;
    }
    return false;
  }

  public boolean isCellEditable(EventObject anEvent) {
    return isCellEditable();
  }

  public boolean shouldSelectCell(EventObject anEvent) {
        if (anEvent instanceof MouseEvent) {
            MouseEvent e = (MouseEvent)anEvent;
            return e.getID() != MouseEvent.MOUSE_DRAGGED;
        }
        return true;
  }

  public Component getTableCellEditorComponent(JTable table,
      Object value, boolean is1Selected, int row, int column) {
    if (descriptor != null && descriptor.getWriteMethod() != null) {
      final JComboBox aBox = new JComboBox(new Object[] {"true", "false"});
      aBox.setBorder(null);
     
      aBox.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
          if (descriptor != null) {
            try {
              writeMethod.invoke(owningComponent, Boolean.valueOf(aBox.getSelectedIndex() == 0));
            } catch (Exception e1) {
              e1.printStackTrace();
            }
          }
        }
      });
      aBox.setSelectedIndex(value instanceof Boolean && ((Boolean)value).booleanValue() ? 0 : 1);
      //editorComponent = aBox;
      return aBox;
    }
    return null;
  }

  public Component getTableCellRendererComponent(JTable table,
      Object value, boolean isSelected, boolean hasFocus, boolean isReadOnly, Component component, int row,
      int column) {
   
    JLabel result = new JLabel(String.valueOf(value));
    result.setOpaque(true);
    return result;
  }
}
TOP

Related Classes of DisplayProject.swingdisplayer.BooleanDisplayer

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.