forked from fanruan/finekit
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
146 lines
3.6 KiB
146 lines
3.6 KiB
6 years ago
|
package com.fanruan.api.design.ui.editor;
|
||
|
|
||
|
import com.fanruan.api.design.DesignKit;
|
||
|
import com.fanruan.api.design.ui.component.UITextField;
|
||
|
import com.fanruan.api.util.StringKit;
|
||
|
|
||
|
import java.awt.*;
|
||
|
import java.awt.event.KeyAdapter;
|
||
|
import java.awt.event.KeyEvent;
|
||
|
import java.awt.event.KeyListener;
|
||
|
|
||
|
/**
|
||
|
* @author richie
|
||
|
* @version 10.0
|
||
|
* Created by richie on 2019-08-27
|
||
|
* 用于编辑和展示文本的编辑器
|
||
|
* com.fr.design.editor.editor.Editor是一个可靠的API类
|
||
|
*/
|
||
|
public class TypeTextEditor extends BaseEditor<String> {
|
||
|
|
||
|
private UITextField textField;
|
||
|
|
||
|
private String oldValue = StringKit.EMPTY;
|
||
|
|
||
|
/**
|
||
|
* 创建一个带空值的文本编辑器
|
||
|
*/
|
||
|
public TypeTextEditor() {
|
||
|
this(null);
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* 创建一个带指定文本值的编辑器
|
||
|
*
|
||
|
* @param value 值
|
||
|
*/
|
||
|
public TypeTextEditor(String value) {
|
||
|
this.setLayout(new BorderLayout());
|
||
|
textField = new UITextField();
|
||
|
textField.setBorder(null);
|
||
|
this.add(textField, BorderLayout.CENTER);
|
||
|
KeyListener textKeyListener = new KeyAdapter() {
|
||
|
|
||
|
@Override
|
||
|
public void keyReleased(KeyEvent evt) {
|
||
|
int code = evt.getKeyCode();
|
||
|
if (code == KeyEvent.VK_ESCAPE) {
|
||
|
textField.setText(oldValue);
|
||
|
}
|
||
|
if (code == KeyEvent.VK_ENTER) {
|
||
|
fireEditingStopped();
|
||
|
} else {
|
||
|
fireStateChanged();
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
this.textField.addKeyListener(textKeyListener);
|
||
|
|
||
|
this.setValue(value);
|
||
|
this.setName(DesignKit.i18nText("Fine-Design_Basic_Parameter_String"));
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* 获取用于编辑和展示文本的源控件,是一个swing控件
|
||
|
*
|
||
|
* @return swing控件
|
||
|
*/
|
||
|
public final UITextField getSwingComponent() {
|
||
|
return this.textField;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* 判断编辑器是否接受指定类型的值
|
||
|
*
|
||
|
* @param object 待接收的值
|
||
|
* @return 文本编辑器只接收文本类型的值,如果该值为文本类型,则返回true,否则返回false
|
||
|
*/
|
||
|
@Override
|
||
|
public boolean accept(Object object) {
|
||
|
return object instanceof String;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* 获取编辑器中的文本内容
|
||
|
*
|
||
|
* @return 编辑器的值
|
||
|
*/
|
||
|
@Override
|
||
|
public final String getValue() {
|
||
|
return this.textField.getText();
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* 设置编辑器的文本内容
|
||
|
*
|
||
|
* @param value 待设置的文本内容
|
||
|
*/
|
||
|
@Override
|
||
|
public final void setValue(String value) {
|
||
|
if (value == null) {
|
||
|
value = StringKit.EMPTY;
|
||
|
}
|
||
|
|
||
|
oldValue = value;
|
||
|
this.textField.setText(oldValue);
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* 设置编辑器的可用性
|
||
|
*
|
||
|
* @param enabled true表示可以使用,false表示被禁用(无法输入)
|
||
|
*/
|
||
|
@Override
|
||
|
public final void setEnabled(boolean enabled) {
|
||
|
super.setEnabled(enabled);
|
||
|
this.textField.setEnabled(enabled);
|
||
|
}
|
||
|
|
||
|
@Override
|
||
|
public final void requestFocus() {
|
||
|
this.textField.requestFocus();
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* 被选中时文本输入框请求焦点
|
||
|
*/
|
||
|
@Override
|
||
|
public void selected() {
|
||
|
this.textField.requestFocus();
|
||
|
}
|
||
|
|
||
|
@Override
|
||
|
public String getIconName() {
|
||
|
return "type_string";
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* 清楚编辑器中的所有值
|
||
|
*/
|
||
|
@Override
|
||
|
public void clearData() {
|
||
|
super.clearData();
|
||
|
this.textField.setText(StringKit.EMPTY);
|
||
|
this.oldValue = StringKit.EMPTY;
|
||
|
}
|
||
|
}
|