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.
150 lines
3.9 KiB
150 lines
3.9 KiB
6 years ago
|
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();
|
||
|
}
|
||
|
|
||
|
}
|