📄 point2dpropertyeditor.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: Point2DPropertyEditor.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.Point2D;
import javax.swing.JComponent;
import javax.swing.JLabel;
import javax.swing.JTextField;
public final class Point2DPropertyEditor
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 posX;
private final JTextField posY;
private final JComponent editor;
public Point2DPropertyEditor ()
{
posX = new JTextField();
posY = new JTextField();
posX.addActionListener(new TextChangeHandler());
posY.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(posX, 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(posY, 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 Point2D point = (Point2D) value;
if (point == null)
{
super.setValue(null);
posY.setText(String.valueOf(0f));
posX.setText(String.valueOf(0f));
}
else
{
super.setValue(point.clone());
posY.setText(String.valueOf((float) point.getY()));
posX.setText(String.valueOf((float) point.getX()));
}
}
/**
* 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 ()
{
Point2D dim = (Point2D) super.getValue();
if (dim == null)
{
dim = new Point2D.Float();
}
else
{
dim = (Point2D) dim.clone();
}
try
{
dim.setLocation(Double.parseDouble(posX.getText()),
Double.parseDouble(posY.getText()));
}
catch (Exception e)
{
return null;
}
return dim;
}
/**
* 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 + -