package src.swtcalendar;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.*;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.graphics.Font;
import org.eclipse.swt.graphics.GC;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.*;
import java.text.DateFormatSymbols;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;
import java.util.Locale;
public class SWTDayChooser extends Composite
implements MouseListener, FocusListener, TraverseListener, KeyListener {
/**
* Style constant for making Sundays red.
*/
public static final int RED_SUNDAY = 1 << 24; // == SWT.EMBEDDED
/**
* Style constant for making Saturdays red.
*/
public static final int RED_SATURDAY = 1 << 28; // == SWT.VIRTUAL
/**
* Style constant for making weekends red.
*/
public static final int RED_WEEKEND = RED_SATURDAY | RED_SUNDAY;
private Label[] dayTitles;
private DayControl[] days;
private int dayOffset;
private Color activeSelectionBackground;
private Color inactiveSelectionBackground;
private Color activeSelectionForeground;
private Color inactiveSelectionForeground;
private Color otherMonthColor;
private Calendar calendar;
private Calendar today;
private Locale locale;
private List listeners;
private int style;
public SWTDayChooser(Composite parent, int style) {
super(parent, style & ~RED_WEEKEND);
this.style = style;
listeners = new ArrayList(3);
setBackground(getDisplay().getSystemColor(SWT.COLOR_WHITE));
otherMonthColor = new Color(getDisplay(), 128, 128, 128);
activeSelectionBackground = getDisplay().getSystemColor(SWT.COLOR_LIST_SELECTION);
inactiveSelectionBackground = getDisplay().getSystemColor(SWT.COLOR_GRAY);
activeSelectionForeground = getDisplay().getSystemColor(SWT.COLOR_LIST_SELECTION_TEXT);
inactiveSelectionForeground = getForeground();
locale = Locale.getDefault();
GridLayout gridLayout = new GridLayout();
gridLayout.makeColumnsEqualWidth = true;
gridLayout.numColumns = 7;
gridLayout.marginHeight = 0;
gridLayout.marginWidth = 0;
gridLayout.horizontalSpacing = 0;
gridLayout.verticalSpacing = 0;
setLayout(gridLayout);
dayTitles = new Label[7];
for (int i = 0; i < dayTitles.length; i++) {
Label label = new Label(this, SWT.CENTER);
dayTitles[i] = label;
label.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL));
label.addMouseListener(this);
}
{
final Composite spacer = new Composite(this, SWT.NO_FOCUS);
spacer.setBackground(getBackground());
final GridData gridData = new GridData(GridData.FILL_HORIZONTAL);
gridData.heightHint = 2;
gridData.horizontalSpan = 7;
spacer.setLayoutData(gridData);
spacer.setLayout(new GridLayout());
spacer.addMouseListener(this);
}
{
final Label label = new Label(this, SWT.HORIZONTAL | SWT.SEPARATOR);
final GridData gridData = new GridData(GridData.FILL_HORIZONTAL);
gridData.horizontalSpan = 7;
label.setLayoutData(gridData);
}
days = new DayControl[42];
for (int i = 0; i < days.length; i++) {
DayControl day = new DayControl(this);
days[i] = day;
day.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL | GridData.VERTICAL_ALIGN_FILL));
day.addMouseListener(this);
}
setTabList(new Control[0]);
setFont(parent.getFont());
init();
addMouseListener(this);
addFocusListener(this);
addTraverseListener(this);
addKeyListener(this);
addDisposeListener(new DisposeListener() {
public void widgetDisposed(DisposeEvent event) {
otherMonthColor.dispose();
}
});
}
protected void init() {
calendar = Calendar.getInstance(locale);
calendar.setLenient(true);
today = (Calendar) calendar.clone();
int firstDayOfWeek = calendar.getFirstDayOfWeek();
DateFormatSymbols dateFormatSymbols = new DateFormatSymbols(locale);
String[] dayNames = dateFormatSymbols.getShortWeekdays();
int minLength = Integer.MAX_VALUE;
for (int i = 0; i < dayNames.length; i++) {
int len = dayNames[i].length();
if (len > 0 && len < minLength) {
minLength = len;
}
}
if (minLength > 2) {
for (int i = 0; i < dayNames.length; i++) {
if (dayNames[i].length() > 0) {
//as suggested by yunjie liu, Because in Chinese the dayNames display as *** ,but only the third word are the keywords.
if (locale.equals(Locale.CHINA)) {
if (dayNames[i].length() > 2) {
dayNames[i] = dayNames[i].substring(2, 3);
}
}else {
if (dayNames[i].length() > 0) {
dayNames[i] = dayNames[i].substring(0, 1);
}
}
}
}
}
int d = firstDayOfWeek;
for (int i = 0; i < dayTitles.length; i++) {
Label label = dayTitles[i];
label.setText(dayNames[d]);
label.setBackground(getBackground());
if (d == Calendar.SUNDAY && (style & RED_SUNDAY) != 0 ||
d == Calendar.SATURDAY && (style & RED_SATURDAY) != 0) {
label.setForeground(getDisplay().getSystemColor(SWT.COLOR_DARK_RED));
} else {
label.setForeground(getForeground());
}
d++;
if (d > dayTitles.length) {
d -= dayTitles.length;
}
}
drawDays();
}
protected void drawDays() {
calendar.get(Calendar.DAY_OF_YEAR); // Force calendar update
Calendar cal = (Calendar) calendar.clone();
int firstDayOfWeek = cal.getFirstDayOfWeek();
cal.set(Calendar.DAY_OF_MONTH, 1);
dayOffset = firstDayOfWeek - cal.get(Calendar.DAY_OF_WEEK);
if (dayOffset >= 0) {
dayOffset -= 7;
}
cal.add(Calendar.DAY_OF_MONTH, dayOffset);
Color foregroundColor = getForeground();
for (int i = 0; i < days.length; cal.add(Calendar.DAY_OF_MONTH, 1)) {
DayControl dayControl = days[i++];
dayControl.setText(Integer.toString(cal.get(Calendar.DAY_OF_MONTH)));
if (isSameDay(cal, today)) {
dayControl.setBorderColor(getDisplay().getSystemColor(SWT.COLOR_BLACK));
} else {
dayControl.setBorderColor(getBackground());
}
if (isSameMonth(cal, calendar)) {
int d = cal.get(Calendar.DAY_OF_WEEK);
if (d == Calendar.SUNDAY && (style & RED_SUNDAY) != 0 ||
d == Calendar.SATURDAY && (style & RED_SATURDAY) != 0) {
dayControl.setForeground(getDisplay().getSystemColor(SWT.COLOR_DARK_RED));
} else {
dayControl.setForeground(foregroundColor);
}
} else {
dayControl.setForeground(otherMonthColor);
}
if (isSameDay(cal, calendar)) {
dayControl.setBackground(getSelectionBackgroundColor());
dayControl.setForeground(getSelectionForegroundColor());
} else {
dayControl.setBackground(getBackground()
没有合适的资源?快使用搜索试试~ 我知道了~
基于SWT的汽车管理系统
共284个文件
class:208个
java:46个
png:20个
3星 · 超过75%的资源 需积分: 15 54 下载量 45 浏览量
2007-08-04
09:55:21
上传
评论 1
收藏 1.76MB RAR 举报
温馨提示
数据库已附带,关于SWT的配置可以去网上搜,因为是java写的,所以效率上可能有缺陷
资源推荐
资源详情
资源评论
收起资源包目录
基于SWT的汽车管理系统 (284个子文件)
AutoDB 1.9MB
SWTResourceManager.class 13KB
SWTDayChooser.class 11KB
Store_modify.class 10KB
Stock_modify.class 9KB
Store_add.class 9KB
SaleR_modify.class 9KB
SaleR_add.class 9KB
MainWindow.class 9KB
Stock_add.class 8KB
Md5Bean.class 7KB
Bi_2_modify.class 7KB
Bi_4_modify.class 6KB
Bi_4_add.class 6KB
Stock.class 6KB
Bi_2_add.class 6KB
SaleR.class 6KB
Basicinfo_4.class 5KB
Basicinfo_2.class 5KB
Bi_1_modify.class 5KB
Basicinfo_1.class 5KB
Bi_1_add.class 5KB
SaleR_add_sis.class 5KB
SWTCalendar.class 5KB
Basicinfo_5.class 5KB
TableSub.class 5KB
Basicinfo_3.class 5KB
Bi_3_add.class 5KB
Bi_3_modify.class 5KB
Bi_5_modify.class 5KB
Bi_5_add.class 5KB
Store_add_si.class 5KB
Stock_addbcts.class 4KB
Store_in_r.class 4KB
MainWindow$4.class 4KB
Store_add_shi.class 4KB
Store_add_cc.class 4KB
Stock_addbsf.class 4KB
RepeatingButton.class 4KB
Store_modify$6.class 3KB
SaleR_modify$2.class 3KB
SaleR_modify$3.class 3KB
SaleR_add$4.class 3KB
SaleR_add$2.class 3KB
Stock_modify$1.class 3KB
Store_add$5.class 3KB
Stock_add$1.class 3KB
Bi_1_add$1.class 3KB
Bi_1_add$2.class 3KB
Store_out_r.class 3KB
Bi_4_modify$3.class 3KB
ConnectionBean.class 3KB
Bi_2_add$2.class 3KB
Bi_2_modify$2.class 3KB
Bi_4_add$3.class 3KB
Bi_2_modify$1.class 3KB
Bi_2_add$1.class 3KB
SWTCalendarDialog.class 3KB
Bi_3_add$2.class 3KB
Bi_3_add$1.class 3KB
Bi_5_modify$2.class 3KB
SWTDayChooser$DayControl.class 3KB
Bi_1_modify$2.class 3KB
Bi_5_modify$1.class 3KB
Bi_5_add$2.class 3KB
Store_display.class 3KB
LoginWindow.class 3KB
Bi_1_modify$1.class 3KB
Bi_5_add$1.class 3KB
Bi_3_modify$3.class 3KB
SWTMonthChooser.class 3KB
Bi_3_modify$2.class 3KB
LoginWindow$2.class 2KB
LoginWindow$3.class 2KB
Basicinfo_3$3.class 2KB
Basicinfo_4$3.class 2KB
Basicinfo_2$3.class 2KB
Basicinfo_5$3.class 2KB
Basicinfo_1$3.class 2KB
Stock$3.class 2KB
TableSub$3.class 2KB
SaleR$3.class 2KB
Store_modify$5.class 2KB
Store_add$4.class 2KB
Stock_add$5.class 2KB
TableP.class 2KB
Store_add_si$2.class 2KB
Store_add_si$1.class 2KB
SaleR_add_sis$2.class 2KB
SaleR_add_sis$1.class 2KB
Bi_4_modify$2.class 2KB
Bi_4_modify$1.class 2KB
Bi_4_add$2.class 2KB
Bi_4_add$1.class 2KB
Stock_modify$5.class 2KB
Store_add_shi$2.class 2KB
Store_add_shi$1.class 2KB
Stock_addbcts$2.class 2KB
Store_add_cc$2.class 2KB
Stock_addbcts$1.class 2KB
共 284 条
- 1
- 2
- 3
资源评论
- snowway_2012-12-10这个也能叫系统?
坚如磐石2020
- 粉丝: 1
- 资源: 3
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功