|
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.
*/
/*
* StringInplaceEditor.java
*
* Created on January 4, 2003, 4:28 PM
*/
package org.openide.explorer.propertysheet;
import java.awt.Color;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.FontMetrics;
import java.awt.Graphics;
import java.awt.Insets;
import java.awt.Rectangle;
import java.awt.Toolkit;
import java.awt.event.*;
import java.beans.*;
import java.util.*;
import javax.swing.event.*;
import javax.swing.*;
import org.openide.explorer.propertysheet.*;
import org.openide.nodes.Node.*;
/** A JTextField implementation of the InplaceEditor interface.
* @author Tim Boudreau
*/
class StringInplaceEditor extends JTextField implements InplaceEditor {
protected PropertyEditor editor = null;
protected PropertyEnv env=null;
public void removeNotify() {
super.removeNotify();
}
public void clear() {
editor = null;
setEditable (true);
setEnabled (true);
setText ("");
pm=null;
env = null;
}
public void connect(PropertyEditor p, PropertyEnv env) {
setActionCommand(COMMAND_SUCCESS);
this.env = env;
if (editor == p) return;
editor = p;
boolean editable = PropUtils.checkEnabled(this, p, env);
setEnabled(editable);
//Undocumented, but in NB 3.5 and earlier, getAsText() returning null for
//paintable editors was yet another way to disable a property editor
if (p.getTags() == null && p.getAsText() == null && p.isPaintable()) {
editable = false;
}
setEditable(editable);
reset();
added = false;
}
private boolean added=false;
public void addNotify() {
super.addNotify();
added = true;
}
public JComponent getComponent() {
return this;
}
public Object getValue() {
return getText();
}
public void reset() {
String txt;
txt = editor.getAsText();
//don't want an editor with the text "different values" in it //NOI18N
if (editor instanceof PropUtils.DifferentValuesEditor) {
txt = ""; //NOI18N
}
//issue 26367, form editor needs ability to set a custom value
//when editing is initiated (event handler combos, part of them
//cleaning up their EnhancedPropertyEditors).
if (getClass() == StringInplaceEditor.class && env != null &&
env.getFeatureDescriptor() != null) {
String initialEditValue = (String) env.getFeatureDescriptor().
getValue("initialEditValue"); //NOI18N
if (initialEditValue != null) {
txt = initialEditValue;
}
}
if (txt == null) txt = "";
setText(txt);
setSelectionStart (0);
setSelectionEnd(txt.length());
}
KeyStroke[] strokes = new KeyStroke [] {
KeyStroke.getKeyStroke(KeyEvent.VK_HOME, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask() |
KeyEvent.SHIFT_DOWN_MASK),
KeyStroke.getKeyStroke(KeyEvent.VK_END, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask() |
KeyEvent.SHIFT_DOWN_MASK),
KeyStroke.getKeyStroke(KeyEvent.VK_UP, 0, false),
KeyStroke.getKeyStroke(KeyEvent.VK_DOWN, 0, false)
};
public KeyStroke[] getKeyStrokes() {
return strokes;
}
public PropertyEditor getPropertyEditor() {
return editor;
}
private void handleInitialInputEvent(InputEvent e) {
//issue 35296, select all the text
String txt = getText();
if (txt.length() > 0) {
setSelectionStart(0);
setSelectionEnd(getText().length());
}
}
public void setValue(Object o) {
setText (o != null? o.toString() : ""); //NOI18N
}
public boolean supportsTextEntry() {
return true;
}
private PropertyModel pm = null;
public PropertyModel getPropertyModel() {
return pm;
}
public void setPropertyModel(PropertyModel pm) {
this.pm = pm;
}
public boolean isKnownComponent(Component c) {
return false;
}
public Dimension getPreferredSize() {
Graphics g = PropUtils.getScratchGraphics(this);
String s = getText();
if (s.length() > 1000) {
//IZ 44152, debugger can return 512K+ long strings
return new Dimension (4196, g.getFontMetrics(getFont()).getHeight());
}
FontMetrics fm = g.getFontMetrics(getFont());
Dimension result = new Dimension(fm.stringWidth(s), fm.getHeight());
result.width = Math.max (result.width, PropUtils.getMinimumPropPanelWidth());
result.height = Math.max (result.height, PropUtils.getMinimumPropPanelHeight());
if (getBorder() != null) {
Insets i = getBorder().getBorderInsets(this);
result.width += i.right+i.left;
result.height += i.top+i.bottom;
}
return result;
}
public void processMouseEvent(MouseEvent me) {
super.processMouseEvent(me);
if (added) {
handleInitialInputEvent(me);
}
added=false;
}
protected void processFocusEvent(FocusEvent fe) {
super.processFocusEvent(fe);
repaint();
}
public void paintComponent (Graphics g) {
//For property panel usage, allow the editor to paint
if (editor != null && !hasFocus() && editor.isPaintable()) {
Insets ins = getInsets();
Color c = g.getColor();
try {
g.setColor(getBackground());
g.fillRect(0,0,getWidth(),getHeight());
} finally {
g.setColor(c);
}
ins.left += PropUtils.getTextMargin();
editor.paintValue(g, new Rectangle(ins.left, ins.top, getWidth() -
(ins.right + ins.left), getHeight() - (ins.top + ins.bottom)));
} else {
super.paintComponent(g);
}
}
}
|
| ... 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.