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