alvinalexander.com | career | drupal | java | mac | mysql | perl | scala | uml | unix  

What this is

This file is included in the DevDaily.com "Java Source Code Warehouse" project. The intent of this project is to help you "Learn Java by Example" TM.

Other links

The source code

/*
 * PropertyPanel.java
 *
 * Created on November 18, 2002, 3:51 PM
 */

package org.netbeans.test.editor.app.gui;

import java.awt.BorderLayout;
import java.awt.CardLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import org.netbeans.test.editor.app.Main;
import org.netbeans.test.editor.app.core.properties.BooleanProperty;
import org.netbeans.test.editor.app.core.properties.IntegerProperty;
import org.netbeans.test.editor.app.core.properties.MultiLineStringProperty;
import org.netbeans.test.editor.app.core.properties.Property;
import org.netbeans.test.editor.app.core.properties.StringProperty;

/**
 *
 * @author  eh103527
 */
public class PropertyPanel extends javax.swing.JPanel {
    
    // Variables declaration - do not modify
    protected javax.swing.JButton button;
    // End of variables declaration
    protected javax.swing.JComponent editField;
    protected javax.swing.JPanel editorPanel;
    protected javax.swing.JButton editorButton;
    
    protected String propertyName;
    protected Property property;
    protected boolean buttonState=true;
    protected PropertiesDialog dialog;
    
    protected String oldText;
    protected boolean readOnly=false;
    private boolean change=false;
    
    
    protected PropertyPanel() {
    }
    
    /** Creates new form PropertyPanel */
    public PropertyPanel(Object prop,String name) {
        propertyName=name;
        property=(Property)prop;
        initComponents();
        generateEdit();
        button.setText(property.getProperty());
        oldText=button.getText();
    }
    
    public PropertyPanel(Object prop,String name,boolean read) {
        this(prop,name);
        readOnly=read;
    }
    /** 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.
     */
    protected void initComponents() {
        button = new javax.swing.JButton();
        setLayout(new java.awt.CardLayout());
        button.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                buttonPressed(evt);
            }
        });
        button.setHorizontalAlignment(JButton.LEFT);
        add(button, "button");
    }
    
    protected void buttonPressed(java.awt.event.ActionEvent evt) {
        // Add your handling code here:
        if (!readOnly) {
            buttonState=false;
            oldText=button.getText();
            if (property instanceof StringProperty) {
                ((JTextField)editField).setText(property.getProperty());
            } else if (property instanceof BooleanProperty) {
                ((JComboBox)editField).setSelectedItem(property.getProperty());
            } else if (property instanceof IntegerProperty) {
                ((JTextField)editField).setText(property.getProperty());
            } else if (property instanceof MultiLineStringProperty) {
                ((JTextArea)editField).setText(property.getProperty());
            }
            if (evt != null) {
                //            evt.setSource(this);
                evt=new ActionEvent(this,evt.getID(),evt.getActionCommand(),evt.getModifiers());
                dialog.buttonPressed(evt);
            }
            ((CardLayout)(getLayout())).show(this,"edit");
            change=false;
        }
    }
    
    protected void focusLost(java.awt.event.FocusEvent evt) {
        // Add your handling code here:
        buttonState=true;
        if (property instanceof StringProperty) {
            property.setProperty(((JTextField)editField).getText());
        } else if (property instanceof BooleanProperty) {
            property.setProperty((String)(((JComboBox)editField).getSelectedItem()));
        } else if (property instanceof IntegerProperty) {
            property.setProperty(((JTextField)editField).getText());
        } else if (property instanceof MultiLineStringProperty) {
            property.setProperty(((JTextArea)editField).getText());
        }
        button.setText(property.getProperty());
        ((CardLayout)(getLayout())).show(this,"button");
        if (button.getText().compareTo(oldText) != 0) {
            oldText=button.getText();
            dialog.propertyChanged(propertyName,property);
        }
    }
    
    protected void keyPressed(java.awt.event.KeyEvent evt) {
        // Add your handling code here:
        if (evt.getKeyCode() == KeyEvent.VK_ENTER) {
            focusLost(null);
        }
    }
    
    public void changeState(ActionEvent ev) {
        if (buttonState) {
            buttonPressed(ev);
        } else {
            focusLost(null);
        }
    }
    
    public void setState(boolean state) {
        if (state != buttonState) {
            changeState(null);
        }
    }
    
    protected void generateEdit() {
        editorPanel = new JPanel(new BorderLayout());
        
        if (property instanceof StringProperty) {
            editField=new JTextField(property.getProperty());
        } else if (property instanceof BooleanProperty) {
            editField=new JComboBox(((BooleanProperty)property).getValues());
            ((JComboBox)(editField)).setSelectedItem(((BooleanProperty)property).getProperty());
        } else if (property instanceof IntegerProperty) {
            editField=new JTextField(property.getProperty());
        } else if (property instanceof MultiLineStringProperty) {
            editField=new JTextArea(property.getProperty());
            editorButton = new JButton("...");
            editorButton.addActionListener(new ActionListener() {
                public void actionPerformed(java.awt.event.ActionEvent evt) {
                    propertyEditorInvoked();
                }
            });
            editorPanel.add(editorButton, BorderLayout.EAST);
        }
        editField.addFocusListener(new java.awt.event.FocusAdapter() {
            public void focusLost(java.awt.event.FocusEvent evt) {
                PropertyPanel.this.focusLost(evt);
            }
        });
        editField.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyPressed(java.awt.event.KeyEvent evt) {
                PropertyPanel.this.keyPressed(evt);
            }
        });
        editorPanel.add(editField, BorderLayout.CENTER);
        add(editorPanel, "edit");
    }
    
    private void propertyEditorInvoked() {
        StringPropertyEditor dlg = new StringPropertyEditor(Main.frame, propertyName, ((MultiLineStringProperty)property).getProperty());
        dlg.show();
        if (dlg.getState()) {
            property.setProperty(dlg.getValue());
            ((JTextArea)editField).setText(dlg.getValue());
            button.setText(dlg.getValue());
            if (button.getText().compareTo(oldText) != 0) {
                oldText=button.getText();
                dialog.propertyChanged(propertyName,property);
            }
        }
    }
    
    /** Setter for property dialog.
     * @param dialog New value of property dialog.
     *
     */
    public void setDialog(PropertiesDialog dialog) {
        this.dialog = dialog;
    }
    
    /** Getter for property property.
     * @return Value of property property.
     *
     */
    public java.lang.Object getProperty() {
        return property;
    }
    
    /** Setter for property property.
     * @param property New value of property property.
     *
     */
    public void setProperty(java.lang.Object property) {
        this.property = (Property)property;
        button.setText(this.property.getProperty());
        oldText=button.getText();
        repaint();
    }
    
}
... this post is sponsored by my books ...

#1 New Release!

FP Best Seller

 

new blog posts

 

Copyright 1998-2021 Alvin Alexander, alvinalexander.com
All Rights Reserved.

A percentage of advertising revenue from
pages under the /java/jwarehouse URI on this website is
paid back to open source projects.