📄 datetimeselector.java
字号:
}
private void updateDays() {
Date tt = (Date) shownDate.clone();
tt.setMonth(tt.getMonth() - 1);
Date[][] dates = DateHelper.getCalendarDates(tt);
if(mode == QDateFieldView.MODE_SEARCH && startDate != null && endDate != null) {
if(startDate.getTime() > endDate.getTime()) {
Date tmp = (Date) startDate.clone();
startDate = (Date) endDate.clone();
endDate = (Date) tmp.clone();
}
}
boolean tryToSetunselected;
for(int i=0; i<dates.length; i++) {
for(int j=0; j<dates[0].length; j++) {
tryToSetunselected = true;
DateElement element = new DateElement(dates[i][j].getDate());
element.addStyleName(COMMON_CELL_STYLE);
if(shownDate.getMonth() == dates[i][j].getMonth()) {
element.addStyleName(SELECTABLE_CELL_STYLE);
element.addDataElementLisner(this);
}
if(mode != QDateFieldView.MODE_SEARCH) {
if(isEqual(startDate, dates[i][j])) {
element.addStyleName(SELECTED_CELL_STYLE);
tryToSetunselected = false;
}
} else {
if(startDate != null && endDate != null) {
if(!chooseFirstDate) {
if(isEqual(startDate, dates[i][j])) {
element.addStyleName(SELECTED_CELL_STYLE);
tryToSetunselected = false;
}
} else {
Date tmp = dates[i][j];
int startYear = startDate.getYear();
int endYear = endDate.getYear();
int tmpYear = tmp.getYear();
int startMonth = startDate.getMonth();
int endMonth = endDate.getMonth();
int tmpMonth = tmp.getMonth();
int startdate = startDate.getDate();
int enddate = endDate.getDate();
int tmpdate = tmp.getDate();
if(startYear == tmpYear && endYear == tmpYear) {
if(startMonth == tmpMonth && endMonth == tmpMonth) {
if(startdate <= tmpdate && enddate >= tmpdate) {
element.addStyleName(SELECTED_CELL_STYLE);
tryToSetunselected = false;
}
} else if(startMonth < tmpMonth && endMonth == tmpMonth) {
if(enddate >= tmpdate) {
element.addStyleName(SELECTED_CELL_STYLE);
tryToSetunselected = false;
}
} else if(startMonth < tmpMonth && endMonth > tmpMonth) {
element.addStyleName(SELECTED_CELL_STYLE);
tryToSetunselected = false;
} else if(startMonth == tmpMonth && endMonth > tmpMonth) {
if(startdate <= tmpdate) {
element.addStyleName(SELECTED_CELL_STYLE);
tryToSetunselected = false;
}
}
} else if(startYear < tmpYear && endYear == tmpYear) {
if(endMonth == tmpMonth) {
if(enddate >= tmpdate) {
element.addStyleName(SELECTED_CELL_STYLE);
tryToSetunselected = false;
}
} else if(endMonth > tmpMonth) {
element.addStyleName(SELECTED_CELL_STYLE);
tryToSetunselected = false;
}
} else if(startYear < tmpYear && endYear > tmpYear) {
element.addStyleName(SELECTED_CELL_STYLE);
tryToSetunselected = false;
} else if(startYear == tmpYear && endYear > tmpYear) {
if(startMonth == tmpMonth) {
if(startdate <= tmpdate) {
element.addStyleName(SELECTED_CELL_STYLE);
tryToSetunselected = false;
}
} else if(startMonth < tmpMonth) {
element.addStyleName(SELECTED_CELL_STYLE);
tryToSetunselected = false;
}
}
}
} else {
if(isEqual(startDate, dates[i][j]) || isEqual(endDate, dates[i][j])) {
element.addStyleName(SELECTED_CELL_STYLE);
tryToSetunselected = false;
}
}
}
if(tryToSetunselected && dates[i][j].getMonth() != shownDate.getMonth()) {
element.addStyleName(UNSELECTABLE_CELL_STYLE);
}
daysTableGrid.setWidget(i, j, element);
}
}
}
private boolean isEqual(Date one, Date two) {
if(one != null &&
one.getYear() == two.getYear() &&
one.getMonth() == two.getMonth() &&
one.getDate() == two.getDate()
) {
return true;
} else {
return false;
}
}
private void updateMonth() {
monthComboBox.setSelectedIndex(shownDate.getMonth());
}
private void updateYear() {
yearTextBox.setText(String.valueOf(shownDate.getYear() + BEGIN_YEAR));
}
public void setEnabled(boolean enbled) {
yearTextBox.setEnabled(enbled);
timeTextBox.setEnabled(enbled);
}
public void updateTime() {
if(mode == QDateFieldView.MODE_SEARCH) {
timeTextBox.setText("");
timeTextBox.setEnabled(false);
} else {
if(isReadOnly) {
setEnabled(false);
} else {
boolean isDisabled = (mode == QDateFieldView.MODE_DISABLED);
setEnabled(!isDisabled);
}
if(startDate == null) {
timeTextBox.setText(StringUtil.getValueAsString(shownDate.getHours(), 2) + TIME_SEPARATOR
+ StringUtil.getValueAsString(shownDate.getMinutes(), 2));
} else {
timeTextBox.setText(StringUtil.getValueAsString(startDate.getHours(), 2) + TIME_SEPARATOR
+ StringUtil.getValueAsString(startDate.getMinutes(), 2));
}
}
}
public void setMode(int mode) {
this.mode = mode;
if(mode == QDateFieldView.MODE_SEARCH) {
chooseFirstDate = true;
}
}
public Date getEndDate() {
return endDate;
}
public void setEndDate(Date endDate) {
this.endDate = endDate;
}
private boolean handleClick() {
if(isReadOnly) {
return mode == QDateFieldView.MODE_SEARCH;
}
return true;
}
public void onClick(Widget sender) {
if(handleClick()) {
if(setSelectedDates(sender)) {
updateDays();
}
}
}
private boolean setSelectedDates(Widget sender) {
if(mode == QFormElementView.MODE_DISABLED) {
return false;
}
DateElement el = (DateElement) sender;
if(mode != QDateFieldView.MODE_SEARCH) {
startDate = createDate(shownDate, el.getDate());
if(startDate.equals(previouslySelectedElement)) { //the same element was clicked
fireDateTimeSelectorEvent();
return false;
}
previouslySelectedElement = startDate;
} else {
if(chooseFirstDate) {
chooseFirstDate = false;
startDate = createDate(shownDate, el.getDate());
endDate = (Date) startDate.clone();
previouslySelectedElement = (Date) startDate.clone();
} else {
chooseFirstDate = true;
endDate = createDate(shownDate, el.getDate());
if(endDate.equals(previouslySelectedElement)) { //the same element was clicked
fireDateTimeSelectorEvent();
return false;
}
previouslySelectedElement = endDate;
}
}
return true;
}
private Date createDate(Date d, int date) {
return new Date(d.getYear(), d.getMonth(), date, d.getHours(), d.getMinutes());
}
public void onDoubleClick(Widget sender) {
if(handleClick()) {
if(setSelectedDates(sender)) {
fireDateTimeSelectorEvent();
}
}
}
public void setPreviouslySelectedElement(Date previouslySelectedElement) {
this.previouslySelectedElement = previouslySelectedElement;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -