插件开发工具库,推荐依赖该工具库。
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

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;
}
}