亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? sizegrip.java

?? Eclipse編程技術與實例一書配套的光盤代碼全部內容
?? JAVA
字號:
package org.test.custom.form;

import java.util.Timer;
import java.util.TimerTask;

import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.*;
import org.eclipse.swt.widgets.*;

/**
 * 這是非本地的尺寸控制器,它就像本地Win32的尺寸控制器。 SHADOW_IN樣式會在窗口的右下角畫幾道斜線。
 * 該控件是否可見由窗口是否最大化決定。如果窗口是最大的,不論是否使用了setVisible(true)方法,它都將被隱。
 *  
 */

public final class SizeGrip extends Canvas {
	private static final int WIDTH = 13;

	private static final int HEIGHT = 13;

	private static final long UPDATE_DELAY = 25;

	private int mouseDownOffsetX, mouseDownOffsetY, snapBackX, snapBackY;

	private boolean cancelled;

	private Cursor sizeCursor;

	private Point minSize;

	private boolean userVisible = true;

	private volatile long lastUpdate;

	private Timer timer = new Timer(true);

	private TimerTask timerTask;

	private Composite resizableParent;

	public SizeGrip(Composite parent, int style) {
		this(parent, parent.getShell(), style);
	}

	public SizeGrip(Composite parent, final Composite resizableParent, int style) {
		super(parent, style = checkStyle(style));
		this.resizableParent = resizableParent;
		setSize(WIDTH, HEIGHT);

		sizeCursor = new Cursor(getDisplay(), SWT.CURSOR_SIZENWSE);
		setCursor(sizeCursor);

		// 為控件注冊各種事件偵聽器
		addListener(SWT.Dispose, new Listener() {
			public void handleEvent(Event e) {
				if (sizeCursor != null) {
					sizeCursor.dispose();
					sizeCursor = null;
				}
			}
		});

		addListener(SWT.Paint, new Listener() {
			public void handleEvent(Event event) {
				Rectangle r = getClientArea();
				if (r.width == 0 || r.height == 0)
					return;

				Display disp = getDisplay();
				Color shadow = disp
						.getSystemColor(SWT.COLOR_WIDGET_NORMAL_SHADOW);
				Color highlight = disp
						.getSystemColor(SWT.COLOR_WIDGET_HIGHLIGHT_SHADOW);

				event.gc.setLineWidth(1);

				// 根據控件創建時的樣式畫出不同的圖形
				if ((getStyle() & SWT.FLAT) != 0) {
					event.gc.setBackground(highlight);
					event.gc.fillRectangle(r.width - 3, r.height - 3, 2, 2);
					event.gc.fillRectangle(r.width - 7, r.height - 3, 2, 2);
					event.gc.fillRectangle(r.width - 11, r.height - 3, 2, 2);
					event.gc.fillRectangle(r.width - 3, r.height - 7, 2, 2);
					event.gc.fillRectangle(r.width - 7, r.height - 7, 2, 2);
					event.gc.fillRectangle(r.width - 3, r.height - 11, 2, 2);
					event.gc.setBackground(shadow);
					event.gc.fillRectangle(r.width - 4, r.height - 4, 2, 2);
					event.gc.fillRectangle(r.width - 8, r.height - 4, 2, 2);
					event.gc.fillRectangle(r.width - 12, r.height - 4, 2, 2);
					event.gc.fillRectangle(r.width - 4, r.height - 8, 2, 2);
					event.gc.fillRectangle(r.width - 8, r.height - 8, 2, 2);
					event.gc.fillRectangle(r.width - 4, r.height - 12, 2, 2);
					event.gc.setForeground(highlight);
				} else {
					event.gc.setForeground(shadow);
					event.gc.drawLine(r.width - 3, r.height - 2, r.width - 2,
							r.height - 3);
					event.gc.drawLine(r.width - 4, r.height - 2, r.width - 2,
							r.height - 4);
					event.gc.drawLine(r.width - 7, r.height - 2, r.width - 2,
							r.height - 7);
					event.gc.drawLine(r.width - 8, r.height - 2, r.width - 2,
							r.height - 8);
					event.gc.drawLine(r.width - 11, r.height - 2, r.width - 2,
							r.height - 11);
					event.gc.drawLine(r.width - 12, r.height - 2, r.width - 2,
							r.height - 12);

					event.gc.setForeground(highlight);
					event.gc.drawLine(r.width - 5, r.height - 2, r.width - 2,
							r.height - 5);
					event.gc.drawLine(r.width - 9, r.height - 2, r.width - 2,
							r.height - 9);
					event.gc.drawLine(r.width - 13, r.height - 2, r.width - 2,
							r.height - 13);
				}

				if ((getStyle() & SWT.SHADOW_IN) != 0) {
					if (event.width > WIDTH)
						event.gc.drawLine(0, r.height - 1, r.width - 14,
								r.height - 1);
					if (event.height > HEIGHT)
						event.gc.drawLine(r.width - 1, 0, r.width - 1,
								r.height - 14);
				}
			}
		});

		addListener(SWT.MouseDown, new Listener() {
			public void handleEvent(Event event) {
				if (event.button == 1) {
					mouseDownOffsetX = event.x;
					mouseDownOffsetY = event.y;
					Point p = resizableParent.getSize();
					snapBackX = p.x;
					snapBackY = p.y;
					cancelled = false;
					//System.out.println("x="+mouseDownOffsetX+",
					// y="+mouseDownOffsetY);
				} else if (event.button == 3
						&& (event.stateMask & SWT.BUTTON1) != 0) // chord click
				{
					if (snapBackX > 0 && snapBackY > 0) {
						resizableParent.setSize(snapBackX, snapBackY);
						snapBackX = 0;
						snapBackY = 0;
						cancelled = true;
					}
				}
			}
		});

		addListener(SWT.MouseMove, new Listener() {
			public void handleEvent(final Event event) {
				if (!cancelled && (event.stateMask & SWT.BUTTON1) != 0) {
					if (timerTask != null) {
						timerTask.cancel();
						timerTask = null;
					}
					long now = System.currentTimeMillis();
					if (lastUpdate + UPDATE_DELAY < now) {
						performResize(event);
						lastUpdate = now;
					} else {
						timerTask = new TimerTask() {
							public void run() {
								final TimerTask executingTask = this;
								event.display.asyncExec(new Runnable() {
									public void run() {
										if (executingTask != timerTask)
											return;
										performResize(event);
									}
								});
							}
						};
						timer.schedule(timerTask, UPDATE_DELAY);
					}
				}
			}
		});

		addListener(SWT.MouseUp, new Listener() {
			public void handleEvent(Event event) {
				if (timerTask != null) {
					timerTask.cancel();
					timerTask = null;
				}
				if (!cancelled && (event.stateMask & SWT.BUTTON1) != 0) {
					performResize(event);
				}
			}
		});

		// 注冊改變窗口大小的事件偵聽器
		final Listener resizeListener = (resizableParent instanceof Shell) ? new Listener() {
			public void handleEvent(Event event) {
				updateVisibility();
			}
		}
				: null;

		if (resizeListener != null)
			resizableParent.addListener(SWT.Resize, resizeListener);

		addListener(SWT.Dispose, new Listener() {
			public void handleEvent(Event event) {
				timer.cancel();
				if (resizeListener != null)
					resizableParent.removeListener(SWT.Resize, resizeListener);
			}
		});

		updateVisibility();
	}

	private void performResize(Event event) {
		// 首先確定是否處在窗口內
		Rectangle ca;
		if (resizableParent instanceof Shell)
			ca = getDisplay().getClientArea();
		else
			ca = getDisplay().map(resizableParent.getParent(), null,
					resizableParent.getParent().getClientArea());
		Point limit = toControl(ca.x + ca.width - 1, ca.y + ca.height - 1);
		event.x = Math.min(event.x, limit.x);
		event.y = Math.min(event.y, limit.y);

		Point p = resizableParent.getSize();
		int newX = p.x + event.x - mouseDownOffsetX;
		int newY = p.y + event.y - mouseDownOffsetY;
		if (minSize != null) {
			newX = Math.max(minSize.x, newX);
			newY = Math.max(minSize.y, newY);
		}
		if (newX != p.x || newY != p.y)
			resizableParent.setSize(newX, newY);
	}

	// 根據窗口是否最大化,設置控件的可見性
	private void updateVisibility() {
		if (resizableParent instanceof Shell) {
			boolean vis = super.getVisible();
			boolean max = ((Shell) resizableParent).getMaximized();
			boolean newVis = userVisible && !max;
			if (vis != newVis)
				super.setVisible(newVis);
		} else if (userVisible != super.getVisible())
			super.setVisible(userVisible);
	}

	public Point computeSize(int wHint, int hHint, boolean changed) {
		checkWidget();
		if (wHint == SWT.DEFAULT)
			wHint = WIDTH;
		if (hHint == SWT.DEFAULT)
			hHint = HEIGHT;
		return new Point(wHint, hHint);
	}

	private static int checkStyle(int style) {
		int mask = SWT.SHADOW_IN | SWT.FLAT;
		style &= mask;
		return style;
	}

	public boolean setFocus() {
		checkWidget();
		return false;
	}

	public boolean isReparentable() {
		checkWidget();
		return false;
	}

	// 設置窗口最小允許的尺寸
	public void setMinimumShellSize(Point p) {
		checkWidget();
		this.minSize = p;
	}

	public void setMinimumShellSize(int width, int height) {
		checkWidget();
		this.minSize = new Point(width, height);
	}

	public boolean getVisible() {
		checkWidget();
		return userVisible;
	}

	public void setVisible(boolean visible) {
		checkWidget();
		userVisible = visible;
		updateVisibility();
	}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩在线一二三区| 欧美妇女性影城| 欧美性感一类影片在线播放| 欧美成人女星排行榜| 一区二区成人在线| 成人禁用看黄a在线| 日韩美女一区二区三区四区| 亚洲美女电影在线| 国产91精品一区二区麻豆亚洲| 色偷偷88欧美精品久久久| 久久综合九色欧美综合狠狠| 亚洲午夜精品17c| av动漫一区二区| 国产日韩欧美精品电影三级在线| 琪琪一区二区三区| 欧美色窝79yyyycom| 亚洲手机成人高清视频| 成人a免费在线看| 久久精品视频在线免费观看| 欧美aaa在线| 亚洲视频精选在线| 成人黄色免费短视频| 久久久久国产一区二区三区四区| 午夜精品久久久久久久蜜桃app| 91小视频在线免费看| 国产欧美一区二区精品性色| 精品亚洲国内自在自线福利| 日韩一区二区三区四区五区六区| 午夜精品久久久久久久久久| 欧美猛男男办公室激情| 亚洲另类春色国产| 91老师片黄在线观看| 亚洲日本护士毛茸茸| 99re6这里只有精品视频在线观看 99re8在线精品视频免费播放 | 国产成人啪午夜精品网站男同| 欧美在线观看视频在线| 一区二区三区精品视频| 日韩激情一区二区| 精品久久人人做人人爰| 日韩国产精品久久久| 3d成人动漫网站| 日本伊人午夜精品| 欧美一区二区三区四区五区| 婷婷国产v国产偷v亚洲高清| 色94色欧美sute亚洲线路一久 | 国产成人啪免费观看软件| 久久久精品2019中文字幕之3| 久久精品av麻豆的观看方式| 欧美mv日韩mv国产网站app| 国产麻豆成人传媒免费观看| 国产精品美女久久久久av爽李琼| 99久久免费国产| 亚洲国产精品人人做人人爽| 欧美精品在欧美一区二区少妇| 日韩国产成人精品| 久久综合视频网| 不卡的电影网站| 亚洲v精品v日韩v欧美v专区| 欧美精品一区二| 91在线观看视频| 天堂久久一区二区三区| 欧美一区二区三区播放老司机| 国产一本一道久久香蕉| 亚洲欧美色图小说| 日韩欧美国产综合一区| 播五月开心婷婷综合| 日韩不卡一区二区| 亚洲国产成人午夜在线一区| 欧美日韩免费在线视频| 国产精品2024| 视频一区国产视频| 亚洲国产精品99久久久久久久久| 在线一区二区视频| 国产麻豆精品theporn| 亚洲夂夂婷婷色拍ww47| 国产亚洲va综合人人澡精品| 欧美无砖砖区免费| 国产91丝袜在线播放九色| 五月综合激情日本mⅴ| 国产精品灌醉下药二区| 日韩精品一区国产麻豆| 色婷婷亚洲精品| 国产福利一区在线观看| 日韩成人一级大片| 亚洲精品国产视频| 久久精品视频网| 欧美一区二区三区系列电影| 91农村精品一区二区在线| 国产一区二区三区在线观看免费| 亚洲国产一区二区在线播放| 国产精品日韩精品欧美在线 | 日本电影亚洲天堂一区| 国产精品1024久久| 久久国产精品色婷婷| 婷婷中文字幕一区三区| 亚洲欧美日韩久久| 国产精品网曝门| 国产欧美日韩亚州综合| 精品入口麻豆88视频| 欧美日韩国产一级二级| 97se亚洲国产综合自在线不卡| 国产乱码精品一区二区三区av| 免费成人在线观看| 日本不卡视频在线| 日韩激情一二三区| 午夜精品成人在线视频| 亚洲国产成人高清精品| 午夜久久电影网| 一区二区三区四区不卡在线| 日韩理论片中文av| 亚洲少妇中出一区| 亚洲人成在线观看一区二区| 1024亚洲合集| 中文字幕综合网| 亚洲色图清纯唯美| 亚洲制服丝袜一区| 午夜激情一区二区| 天堂久久久久va久久久久| 日本亚洲三级在线| 激情欧美日韩一区二区| 国产不卡视频一区| 99热精品国产| 欧美中文字幕一区| 制服.丝袜.亚洲.另类.中文| 欧美一级日韩一级| 精品久久久影院| 欧美激情自拍偷拍| 最新日韩在线视频| 亚洲二区在线视频| 看国产成人h片视频| 国产成人亚洲精品青草天美| 盗摄精品av一区二区三区| 91在线国内视频| 欧美三级中文字幕| 欧美成人性福生活免费看| 亚洲大型综合色站| 久草在线在线精品观看| 成人av动漫网站| 欧美色综合网站| 久久欧美一区二区| 一区二区三区中文免费| 美日韩一区二区| 国产成人av电影在线| 欧美性生活影院| 久久久久久久久伊人| 一区二区三区久久久| 久久精品99久久久| 91蜜桃免费观看视频| 日韩精品一区国产麻豆| 自拍偷拍亚洲综合| 日本色综合中文字幕| 不卡av电影在线播放| 日韩一级二级三级精品视频| 国产免费成人在线视频| 天堂一区二区在线| 97久久人人超碰| 精品国产制服丝袜高跟| 亚洲精品视频免费观看| 另类的小说在线视频另类成人小视频在线 | 亚洲综合色自拍一区| 国产一区二区三区香蕉 | 午夜久久久久久久久| 国产成人精品三级麻豆| 国产精品视频看| 秋霞av亚洲一区二区三| 色哟哟一区二区三区| 久久久精品免费免费| 日韩电影在线观看电影| 91黄视频在线| 国产无人区一区二区三区| 三级精品在线观看| 97久久人人超碰| 中文字幕二三区不卡| 国产在线国偷精品产拍免费yy| 欧美日韩的一区二区| 亚洲精品国产无天堂网2021 | 欧美日韩国产电影| 中文字幕日韩一区| 国产一区二区女| 欧美一区二区黄色| 亚洲精品中文字幕乱码三区| 懂色av一区二区三区免费看| 日韩美女在线视频| 日韩不卡一区二区| 欧美日本不卡视频| 亚洲午夜一区二区| 色婷婷综合久久久中文字幕| 国产精品三级视频| 成人在线视频首页| 久久九九久久九九| 国产精品亚洲视频| 久久精品亚洲精品国产欧美| 狠狠色丁香久久婷婷综合_中| 日韩欧美在线网站| 视频在线在亚洲| 日韩欧美亚洲国产精品字幕久久久| 午夜精品免费在线| 欧美精品乱码久久久久久| 五月婷婷另类国产| 91精品国产丝袜白色高跟鞋|