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

150 lines
3.9 KiB

package com.fanruan.api.design.ui.editor;
import com.fanruan.api.design.ui.component.UIDatePicker;
import com.fanruan.api.log.LogKit;
import com.fanruan.api.util.GeneralKit;
import java.awt.*;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
/**
* @author richie
* @version 10.0
* Created by richie on 2019/11/1
* 用于编辑和展示日期值的编辑器
* TODO:待补充文档
*/
public class TypeDateEditor extends BaseEditor<Date> {
private UIDatePicker uiDatePicker;
public TypeDateEditor() {
this(null);
}
public TypeDateEditor(boolean es) {
this(null, es);
}
public TypeDateEditor(boolean es, String name) {
this(null, es, name);
}
public TypeDateEditor(Date value) {
this(value, false);
}
public TypeDateEditor(Date value, boolean format) {
this(value, format, "");
}
public TypeDateEditor(Date value, boolean format, String name) {
this.setLayout(new BorderLayout());
uiDatePicker = new UIDatePicker();
if (format) {
int dateStyle = (GeneralKit.getLocale() == Locale.ENGLISH
|| GeneralKit.getLocale() == Locale.US
|| GeneralKit.getLocale() == Locale.UK) ? UIDatePicker.STYLE_EN_DATE : UIDatePicker.STYLE_CN_DATE;
uiDatePicker.setStyle(dateStyle);
uiDatePicker.setEditable(false);
}
uiDatePicker.addItemListener(new ItemListener() {
@Override
public void itemStateChanged(ItemEvent e) {
fireStateChanged();
}
});
this.uiDatePicker.setFocusTraversalKeysEnabled(false);
this.add(uiDatePicker, BorderLayout.CENTER);
this.setValue(value);
this.setName(name);
}
public TypeDateEditor(Date value, boolean format, String name, int dateFormat) {
this.setLayout(new BorderLayout());
uiDatePicker = new UIDatePicker(dateFormat);
if (format) {
uiDatePicker.setEditable(false);
}
uiDatePicker.addItemListener(new ItemListener() {
@Override
public void itemStateChanged(ItemEvent e) {
fireStateChanged();
}
});
this.uiDatePicker.setFocusTraversalKeysEnabled(false);
this.add(uiDatePicker, BorderLayout.CENTER);
this.setValue(value);
this.setName(name);
}
@Override
public UIDatePicker getSwingComponent() {
return uiDatePicker;
}
@Override
public boolean accept(Object object) {
return object instanceof Date;
}
@Override
public Date getValue() {
try {
return this.uiDatePicker.getSelectedDate();
} catch (ParseException parseException) {
LogKit.error(parseException.getMessage(), parseException);
return new Date();
}
}
@Override
public void setValue(Date value) {
if (value == null) {
return;
}
try {
this.uiDatePicker.setSelectedDate(value);
} catch (ParseException parseException) {
LogKit.error(parseException.getMessage(), parseException);
}
}
@Override
public void setEnabled(boolean enabled) {
super.setEnabled(enabled);
this.uiDatePicker.setEnabled(enabled);
}
public void selected() {
this.uiDatePicker.setSelectedItem(new Date());
}
@Override
public void requestFocus() {
this.uiDatePicker.requestFocus();
}
public String getIconName() {
return "type_date";
}
public void setUIDatePickerStyle(int style) {
this.uiDatePicker.setStyle(style);
}
public SimpleDateFormat getUIDatePickerFormat() {
return this.uiDatePicker.getDateFormat();
}
}