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