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