📄 rectangle2dpropertyeditor.java
字号:
/**
* ========================================
* JFreeReport : a free Java report library
* ========================================
*
* Project Info: http://www.jfree.org/jfreereport/index.html
* Project Lead: Thomas Morgner (taquera@sherito.org);
*
* (C) Copyright 2000-2003, by Simba Management Limited and Contributors.
*
* This library is free software; you can redistribute it and/or modify it under the terms
* of the GNU Lesser General Public License as published by the Free Software Foundation;
* either version 2.1 of the License, or (at your option) any later version.
*
* This library 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 Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License along with this
* library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
* Boston, MA 02111-1307, USA.
*
* ------------------------------
* Dimension2DPropertyEditor.java
* ------------------------------
* (C)opyright 2003, by Thomas Morgner and Contributors.
*
* Original Author: Thomas Morgner;
* Contributor(s): David Gilbert (for Simba Management Limited);
*
* $Id: Rectangle2DPropertyEditor.java,v 1.2 2004/04/20 18:54:42 taqua Exp $
*
* Changes
* -------------------------
* 25.10.2003 : Initial version
*
*/
package org.jfree.designer.propertyeditors;
import java.awt.Component;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.geom.Rectangle2D;
import javax.swing.JComponent;
import javax.swing.JLabel;
import javax.swing.JTextField;
public final class Rectangle2DPropertyEditor
extends AbstractPropertyEditor
{
private final class TextChangeHandler
implements ActionListener
{
public TextChangeHandler ()
{
}
/**
* Invoked when an action occurs.
*/
public final void actionPerformed (final ActionEvent e)
{
setValue(getValue());
}
}
private final JTextField x;
private final JTextField y;
private final JTextField width;
private final JTextField height;
private final JComponent editor;
public Rectangle2DPropertyEditor ()
{
width = new JTextField();
height = new JTextField();
y = new JTextField();
x = new JTextField();
width.addActionListener(new TextChangeHandler());
height.addActionListener(new TextChangeHandler());
x.addActionListener(new TextChangeHandler());
y.addActionListener(new TextChangeHandler());
editor = new EnableForwardPanel();
editor.setLayout(new GridBagLayout());
GridBagConstraints gbc = new GridBagConstraints();
gbc.gridx = 0;
gbc.gridy = 0;
editor.add(new JLabel("X:"), gbc);
gbc = new GridBagConstraints();
gbc.gridx = 1;
gbc.gridy = 0;
gbc.fill = GridBagConstraints.HORIZONTAL;
gbc.weightx = 1;
editor.add(x, gbc);
gbc = new GridBagConstraints();
gbc.gridx = 2;
gbc.gridy = 0;
editor.add(new JLabel("Y:"), gbc);
gbc = new GridBagConstraints();
gbc.gridx = 3;
gbc.gridy = 0;
gbc.fill = GridBagConstraints.HORIZONTAL;
gbc.weightx = 1;
editor.add(y, gbc);
gbc = new GridBagConstraints();
gbc.gridx = 0;
gbc.gridy = 1;
editor.add(new JLabel("Width:"), gbc);
gbc = new GridBagConstraints();
gbc.gridx = 1;
gbc.gridy = 1;
gbc.fill = GridBagConstraints.HORIZONTAL;
gbc.weightx = 1;
editor.add(width, gbc);
gbc = new GridBagConstraints();
gbc.gridx = 2;
gbc.gridy = 1;
editor.add(new JLabel("Height:"), gbc);
gbc = new GridBagConstraints();
gbc.gridx = 3;
gbc.gridy = 1;
gbc.fill = GridBagConstraints.HORIZONTAL;
gbc.weightx = 1;
editor.add(height, gbc);
}
/**
* Set (or change) the object that is to be edited. Primitive types such as "int" must
* be wrapped as the corresponding object type such as "java.lang.Integer".
*
* @param value The new target object to be edited. Note that this object should not be
* modified by the PropertyEditor, rather the PropertyEditor should create
* a new object to hold any modified value.
*/
public final void setValue (final Object value)
{
final Rectangle2D rect = (Rectangle2D) value;
if (rect == null)
{
super.setValue(null);
y.setText(String.valueOf(0f));
x.setText(String.valueOf(0f));
height.setText(String.valueOf(0f));
width.setText(String.valueOf(0f));
}
else
{
super.setValue(rect.clone());
x.setText(String.valueOf((float) rect.getX()));
y.setText(String.valueOf((float) rect.getY()));
height.setText(String.valueOf((float) rect.getHeight()));
width.setText(String.valueOf((float) rect.getWidth()));
}
}
/**
* Gets the property value.
*
* @return The value of the property. Primitive types such as "int" will be wrapped as
* the corresponding object type such as "java.lang.Integer".
*/
public final Object getValue ()
{
Rectangle2D rect = (Rectangle2D) super.getValue();
if (rect == null)
{
rect = new Rectangle2D.Float();
}
else
{
rect = (Rectangle2D) rect.clone();
}
try
{
rect.setRect
(Double.parseDouble(x.getText()),
Double.parseDouble(y.getText()),
Double.parseDouble(width.getText()),
Double.parseDouble(height.getText()));
}
catch (Exception e)
{
return null;
}
return rect;
}
/**
* A PropertyEditor may choose to make available a full custom Component that edits its
* property value. It is the responsibility of the PropertyEditor to hook itself up to
* its editor Component itself and to report property value changes by firing a
* PropertyChange event. <P> The higher-level code that calls getCustomEditor may either
* embed the Component in some larger property sheet, or it may put it in its own
* individual dialog, or ...
*
* @return A java.awt.Component that will allow a human to directly edit the current
* property value. May be null if this is not supported.
*/
public final Component getCustomEditor ()
{
return editor;
}
/**
* Set the property value by parsing a given String. May raise
* java.lang.IllegalArgumentException if either the String is badly formatted or if this
* kind of property can't be expressed as text.
*
* @param text The string to be parsed.
*/
public final void setAsText (final String text)
throws IllegalArgumentException
{
throw new IllegalArgumentException("This property cannot be expressed as text.");
}
/**
* Gets the property value as text.
*
* @return The property value as a human editable string. <p> Returns null if the
* value can't be expressed as an editable string. <p> If a non-null value is
* returned, then the PropertyEditor should be prepared to parse that string
* back in setAsText().
*/
public final String getAsText ()
{
return null;
}
/**
* This method is intended for use when generating Java code to set the value of the
* property. It should return a fragment of Java code that can be used to initialize a
* variable with the current property value.
* <p/>
* Example results are "2", "new Color(127,127,34)", "Color.orange", etc.
*
* @return A fragment of Java code representing an initializer for the current value.
*/
public final String getJavaInitializationString ()
{
return null;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -