|
What this is
Other links
The source code
/*
* Sun Public License Notice
*
* The contents of this file are subject to the Sun Public License
* Version 1.0 (the "License"). You may not use this file except in
* compliance with the License. A copy of the License is available at
* http://www.sun.com/
*
* The Original Code is NetBeans. The Initial Developer of the Original
* Code is Sun Microsystems, Inc. Portions Copyright 1997-2003 Sun
* Microsystems, Inc. All Rights Reserved.
*/
package org.netbeans.modules.form;
import java.awt.*;
import org.openide.nodes.*;
/**
* RADVisualFormContainer represents the top-level container of the form and
* the form itself during design time.
*
* @author Ian Formanek
*/
public class RADVisualFormContainer extends RADVisualContainer implements FormContainer
{
public static final String PROP_FORM_SIZE_POLICY = "formSizePolicy"; // NOI18N
public static final String PROP_FORM_SIZE = "formSize"; // NOI18N
public static final String PROP_FORM_POSITION = "formPosition"; // NOI18N
public static final String PROP_GENERATE_POSITION = "generatePosition"; // NOI18N
public static final String PROP_GENERATE_SIZE = "generateSize"; // NOI18N
public static final String PROP_GENERATE_CENTER = "generateCenter"; // NOI18N
public static final String PROP_GENERATE_MNEMONICS = "generateMnemonicsCode"; // Mnemonics support NOI18N
public static final int GEN_BOUNDS = 0;
public static final int GEN_PACK = 1;
public static final int GEN_NOTHING = 2;
// Synthetic properties of form
private Dimension formSize;// = new Dimension(FormEditor.DEFAULT_FORM_WIDTH, FormEditor.DEFAULT_FORM_HEIGHT);
private Point formPosition;
private boolean generatePosition = true;
private boolean generateSize = true;
private boolean generateCenter = true;
private int formSizePolicy = GEN_NOTHING;
// ------------------------------------------------------------------------------
// Form synthetic properties
/**
* Getter for the Name property of the component - overriden to provide
* non-null value, as the top-level component does not have a variable
* @return current value of the Name property
*/
public String getName() {
return FormUtils.getBundleString("CTL_FormTopContainerName"); // NOI18N
}
/**
* Setter for the Name property of the component - usually maps to
* variable declaration for holding the instance of the component
* @param value new value of the Name property
*/
public void setName(String value) {
// noop in forms
}
public Point getFormPosition() {
if (formPosition == null) {
formPosition = new Point(0,0);//topContainer.getLocation();
}
return formPosition;
}
public void setFormPosition(Point value) {
Object old = formPosition;
formPosition = value;
getFormModel().fireSyntheticPropertyChanged(this, PROP_FORM_POSITION,
old, value);
}
public Dimension getFormSize() {
if (formSize == null) {
formSize = new Dimension(400, 300); //topContainer.getSize();
}
return formSize;
}
public void setFormSize(Dimension value) {
setFormSizeImpl(value);
if (getFormSizePolicy() == GEN_BOUNDS) {
if (getBeanInstance() instanceof Dialog
|| getBeanInstance() instanceof Frame)
{
Dimension diffDim = getWindowContentDimensionDiff();
value = new Dimension(value.width - diffDim.width,
value.height - diffDim.height);
}
setDesignerSizeImpl(value);
}
}
private void setFormSizeImpl(Dimension value) {
Object old = formSize;
formSize = value;
getFormModel().fireSyntheticPropertyChanged(this, PROP_FORM_SIZE, old, value);
if (getNodeReference() != null) // propagate the change to node
getNodeReference().firePropertyChangeHelper(PROP_FORM_SIZE, old, value);
}
public Dimension getDesignerSize() {
Dimension size = (Dimension) getAuxValue(FormDesigner.PROP_DESIGNER_SIZE);
if (size == null)
size = new Dimension(400, 300);
return size;
}
public void setDesignerSize(Dimension value) {
setDesignerSizeImpl(value);
if (getFormSizePolicy() == GEN_BOUNDS) {
if (getBeanInstance() instanceof Dialog
|| getBeanInstance() instanceof Frame)
{
Dimension diffDim = getWindowContentDimensionDiff();
value = new Dimension(value.width + diffDim.width,
value.height + diffDim.height);
}
setFormSizeImpl(value);
}
}
private void setDesignerSizeImpl(Dimension value) {
Object old = getDesignerSize();
setAuxValue(FormDesigner.PROP_DESIGNER_SIZE, value);
getFormModel().fireSyntheticPropertyChanged(
this, FormDesigner.PROP_DESIGNER_SIZE, old, value);
if (getNodeReference() != null) // propagate the change to node
getNodeReference().firePropertyChangeHelper(FormDesigner.PROP_DESIGNER_SIZE, old, value);
}
public boolean getGeneratePosition() {
return generatePosition;
}
public void setGeneratePosition(boolean value) {
boolean old = generatePosition;
generatePosition = value;
getFormModel().fireSyntheticPropertyChanged(this, PROP_GENERATE_POSITION,
old ? Boolean.TRUE : Boolean.FALSE, value ? Boolean.TRUE : Boolean.FALSE);
}
public boolean getGenerateSize() {
return generateSize;
}
public void setGenerateSize(boolean value) {
boolean old = generateSize;
generateSize = value;
getFormModel().fireSyntheticPropertyChanged(this, PROP_GENERATE_SIZE,
old ? Boolean.TRUE : Boolean.FALSE, value ? Boolean.TRUE : Boolean.FALSE);
}
public boolean getGenerateCenter() {
return generateCenter;
}
public void setGenerateCenter(boolean value) {
boolean old = generateCenter;
generateCenter = value;
getFormModel().fireSyntheticPropertyChanged(this, PROP_GENERATE_CENTER,
old ? Boolean.TRUE : Boolean.FALSE, value ? Boolean.TRUE : Boolean.FALSE);
}
public int getFormSizePolicy() {
return java.awt.Window.class.isAssignableFrom(getBeanClass())
|| javax.swing.JInternalFrame.class.isAssignableFrom(getBeanClass())
? formSizePolicy : GEN_NOTHING;
}
public void setFormSizePolicy(int value) {
int old = formSizePolicy;
formSizePolicy = value;
if (value == GEN_BOUNDS && formSize == null)
setFormSize(getDesignerSize());
getFormModel().fireSyntheticPropertyChanged(this, PROP_FORM_SIZE_POLICY,
new Integer(old), new Integer(value));
}
// ------------------------------------------------------------------------------
// End of form synthetic properties
protected Node.Property[] createSyntheticProperties() {
java.util.ResourceBundle bundle = FormUtils.getBundle();
Node.Property policyProperty = new PropertySupport.ReadWrite(
PROP_FORM_SIZE_POLICY,
Integer.TYPE,
bundle.getString("MSG_FormSizePolicy"), // NOI18N
bundle.getString("HINT_FormSizePolicy")) // NOI18N
{
public Object getValue() throws
IllegalAccessException, IllegalArgumentException, java.lang.reflect.InvocationTargetException {
return new Integer(getFormSizePolicy());
}
public void setValue(Object val) throws IllegalAccessException,
IllegalArgumentException, java.lang.reflect.InvocationTargetException {
if (!(val instanceof Integer)) throw new IllegalArgumentException();
setFormSizePolicy(((Integer)val).intValue());
if (getNodeReference() != null)
getNodeReference().fireComponentPropertySetsChange();
}
public boolean canWrite() {
return !isReadOnly();
}
/** Editor for alignment */
public java.beans.PropertyEditor getPropertyEditor() {
return new SizePolicyEditor();
}
};
Node.Property sizeProperty = new PropertySupport.ReadWrite(
PROP_FORM_SIZE,
Dimension.class,
bundle.getString("MSG_FormSize"), // NOI18N
bundle.getString("HINT_FormSize")) // NOI18N
{
public Object getValue() throws
IllegalAccessException, IllegalArgumentException, java.lang.reflect.InvocationTargetException {
return getFormSize();
}
public void setValue(Object val) throws IllegalAccessException,
IllegalArgumentException, java.lang.reflect.InvocationTargetException {
if (!(val instanceof Dimension)) throw new IllegalArgumentException();
setFormSize((Dimension)val);
}
public boolean canWrite() {
return !isReadOnly()
&& getFormSizePolicy() == GEN_BOUNDS
&& getGenerateSize();
}
};
Node.Property positionProperty = new PropertySupport.ReadWrite(
PROP_FORM_POSITION,
Point.class,
bundle.getString("MSG_FormPosition"), // NOI18N
bundle.getString("HINT_FormPosition")) // NOI18N
{
public Object getValue() throws
IllegalAccessException, IllegalArgumentException, java.lang.reflect.InvocationTargetException {
return getFormPosition();
}
public void setValue(Object val) throws IllegalAccessException,
IllegalArgumentException, java.lang.reflect.InvocationTargetException {
if (!(val instanceof Point)) throw new IllegalArgumentException();
setFormPosition((Point)val);
}
public boolean canWrite() {
return !isReadOnly()
&& getFormSizePolicy() == GEN_BOUNDS
&& getGeneratePosition()
&& !getGenerateCenter();
}
};
Node.Property genPositionProperty = new PropertySupport.ReadWrite(
PROP_GENERATE_POSITION,
Boolean.TYPE,
bundle.getString("MSG_GeneratePosition"), // NOI18N
bundle.getString("HINT_GeneratePosition")) // NOI18N
{
public Object getValue() throws
IllegalAccessException, IllegalArgumentException, java.lang.reflect.InvocationTargetException {
return getGeneratePosition() ? Boolean.TRUE : Boolean.FALSE;
}
public void setValue(Object val) throws IllegalAccessException,
IllegalArgumentException, java.lang.reflect.InvocationTargetException {
if (!(val instanceof Boolean)) throw new IllegalArgumentException();
setGeneratePosition(((Boolean)val).booleanValue());
if (getNodeReference() != null)
getNodeReference().fireComponentPropertySetsChange();
}
public boolean canWrite() {
return !isReadOnly()
&& getFormSizePolicy() == GEN_BOUNDS
&& !getGenerateCenter();
}
};
Node.Property genSizeProperty = new PropertySupport.ReadWrite(
PROP_GENERATE_SIZE,
Boolean.TYPE,
bundle.getString("MSG_GenerateSize"), // NOI18N
bundle.getString("HINT_GenerateSize")) // NOI18N
{
public Object getValue() throws
IllegalAccessException, IllegalArgumentException, java.lang.reflect.InvocationTargetException {
return getGenerateSize() ? Boolean.TRUE : Boolean.FALSE;
}
public void setValue(Object val) throws IllegalAccessException,
IllegalArgumentException, java.lang.reflect.InvocationTargetException {
if (!(val instanceof Boolean)) throw new IllegalArgumentException();
setGenerateSize(((Boolean)val).booleanValue());
if (getNodeReference() != null)
getNodeReference().fireComponentPropertySetsChange();
}
public boolean canWrite() {
return !isReadOnly() && getFormSizePolicy() == GEN_BOUNDS;
}
};
Node.Property genCenterProperty = new PropertySupport.ReadWrite(
PROP_GENERATE_CENTER,
Boolean.TYPE,
bundle.getString("MSG_GenerateCenter"), // NOI18N
bundle.getString("HINT_GenerateCenter")) // NOI18N
{
public Object getValue() throws
IllegalAccessException, IllegalArgumentException, java.lang.reflect.InvocationTargetException {
return getGenerateCenter() ? Boolean.TRUE : Boolean.FALSE;
}
public void setValue(Object val) throws IllegalAccessException,
IllegalArgumentException, java.lang.reflect.InvocationTargetException {
if (!(val instanceof Boolean)) throw new IllegalArgumentException();
setGenerateCenter(((Boolean)val).booleanValue());
if (getNodeReference() != null)
getNodeReference().fireComponentPropertySetsChange();
}
public boolean canWrite() {
return !isReadOnly() && getFormSizePolicy() == GEN_BOUNDS;
}
};
Node.Property designerSizeProperty = new PropertySupport.ReadOnly(
FormDesigner.PROP_DESIGNER_SIZE,
Dimension.class,
bundle.getString("MSG_DesignerSize"), // NOI18N
bundle.getString("HINT_DesignerSize")) // NOI18N
{
public Object getValue()
throws IllegalAccessException, IllegalArgumentException,
java.lang.reflect.InvocationTargetException
{
return getDesignerSize();
}
public void setValue(Object val)
throws IllegalAccessException, IllegalArgumentException,
java.lang.reflect.InvocationTargetException
{
if (!(val instanceof Dimension))
throw new IllegalArgumentException();
setDesignerSize((Dimension)val);
}
};
// Mnemonics support - start -
Node.Property mnemonicsProperty = new PropertySupport.ReadWrite(
PROP_GENERATE_MNEMONICS,
Boolean.TYPE,
bundle.getString("PROP_GENERATE_MNEMONICS"), // NOI18N
bundle.getString("HINT_GENERATE_MNEMONICS2")) // NOI18N
{
public void setValue(Object value) {
Object oldValue = getValue();
setAuxValue(PROP_GENERATE_MNEMONICS, value);
getFormModel().fireSyntheticPropertyChanged(
RADVisualFormContainer.this,
PROP_GENERATE_MNEMONICS,
oldValue, value);
if (getNodeReference() != null)
getNodeReference().firePropertyChangeHelper(
PROP_GENERATE_MNEMONICS, null, null);
}
public Object getValue() {
Object value = getAuxValue(PROP_GENERATE_MNEMONICS);
return value != null ? value : Boolean.FALSE;
}
public boolean canWrite() {
return !isReadOnly();
}
public boolean supportsDefaultValue() {
return true;
}
public void restoreDefaultValue() {
setValue(null);
}
};
// avoid saving as synthetic property - will be saved as aux
mnemonicsProperty.setValue("defaultValue", Boolean.TRUE); // NOI18N
// Mnemonics support - end -
java.util.List propList = new java.util.ArrayList();
if (java.awt.Window.class.isAssignableFrom(getBeanClass())
|| javax.swing.JInternalFrame.class.isAssignableFrom(getBeanClass()))
{
propList.add(sizeProperty);
propList.add(positionProperty);
propList.add(policyProperty);
propList.add(genPositionProperty);
propList.add(genSizeProperty);
propList.add(genCenterProperty);
}
propList.add(designerSizeProperty);
if (java.awt.Container.class.isAssignableFrom(getBeanClass()))
propList.add(mnemonicsProperty);
Node.Property[] props = new Node.Property[propList.size()];
propList.toArray(props);
return props;
}
// ---------
// providing the difference of the whole frame/dialog size and the size
// of the content pane
private static Dimension windowContentDimensionDiff;
private static Dimension getWindowContentDimensionDiff() {
if (windowContentDimensionDiff == null) {
javax.swing.JFrame frame = new javax.swing.JFrame();
frame.pack();
Dimension d1 = frame.getSize();
Dimension d2 = frame.getRootPane().getSize();
windowContentDimensionDiff =
new Dimension(d1.width - d2.width, d1.height - d2.height);
}
return windowContentDimensionDiff;
}
// ------------------------------------------------------------------------------------------
// Innerclasses
final public static class SizePolicyEditor extends java.beans.PropertyEditorSupport {
/** Display Names for alignment. */
private static final String[] names = {
FormUtils.getBundleString("VALUE_sizepolicy_full"), // NOI18N
FormUtils.getBundleString("VALUE_sizepolicy_pack"), // NOI18N
FormUtils.getBundleString("VALUE_sizepolicy_none"), // NOI18N
};
/** @return names of the possible directions */
public String[] getTags() {
return names;
}
/** @return text for the current value */
public String getAsText() {
int value =((Integer)getValue()).intValue();
return names[value];
}
/** Setter.
* @param str string equal to one value from directions array
*/
public void setAsText(String str) {
if (names[0].equals(str))
setValue(new Integer(0));
else if (names[1].equals(str))
setValue(new Integer(1));
else if (names[2].equals(str))
setValue(new Integer(2));
}
}
}
|
| ... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2024 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.