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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? internalshell.java

?? Eclipse編程技術(shù)與實例一書配套的光盤代碼全部內(nèi)容
?? JAVA
字號:
package org.test.custom.shell;

import org.eclipse.swt.SWT;
import org.eclipse.swt.SWTException;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.graphics.Rectangle;
import org.eclipse.swt.layout.FormAttachment;
import org.eclipse.swt.layout.FormData;
import org.eclipse.swt.layout.FormLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Listener;

import org.test.custom.form.SizeBorder;
import org.test.custom.form.SizeGrip;
import org.test.custom.internal.TitleBar;
import org.test.custom.internal.TitleBarButton;

/**
 * 在DesktopForm中顯示的內(nèi)部窗口。
 * 
 * 它支持MIN、NO_TRIM、BORDER、TITLE風(fēng)格; 允許取消和配置InternalShell;
 * 當(dāng)DesktopForm大小改變時,保持InternalShell可見。
 */

public class InternalShell extends Composite {
	private static final int BORDER_SIZE = 4;

	private Composite contentPane;

	private TitleBar titleBar;

	private SizeGrip sizeGrip;

	private SizeBorder sizeBorder;

	private int minWidth = 112;

	private int minHeight;

	private DesktopForm desktop;

	private boolean maximized;

	private Rectangle pluralizedBounds;

	private final int titleHeight;

	private final int style;

	private TitleBarButton closeButton, maxButton, minButton;

	Control focusControl;

	/**
	 * 初始化InternalShell,在其中添加標(biāo)題欄、按鈕并且設(shè)置布局和樣式。
	 */
	public InternalShell(DesktopForm parent, int style) {
		super(parent, checkStyle(style));
		this.desktop = parent;
		this.style = style;
		setBackground(getDisplay().getSystemColor(SWT.COLOR_WIDGET_BACKGROUND));
		FormLayout layout = new FormLayout();
		setLayout(layout);
		FormData fd;

		// 創(chuàng)建菜單欄
		titleBar = new TitleBar(this, style
				& (SWT.CLOSE | SWT.RESIZE | SWT.MAX | SWT.TOOL | SWT.MIN));
		titleHeight = titleBar.computeSize(SWT.DEFAULT, SWT.DEFAULT, true).y;

		Control leftButton = null;

		// 根據(jù)style創(chuàng)建InternalShell上的菜單項,并為這些菜單項注冊偵聽器;注意,這里沒有為最小化按鈕做任何處理,留給讀者完成。
		if ((style & (SWT.CLOSE | SWT.MAX | SWT.MIN)) != 0) {
			closeButton = new TitleBarButton(this, SWT.CLOSE);
			if ((style & SWT.CLOSE) == 0)
				closeButton.setEnabled(false);
			closeButton.addListener(SWT.Selection, new Listener() {
				public void handleEvent(Event event) {
					close();
				}
			});
			fd = new FormData(titleHeight, titleHeight);
			if (leftButton != null)
				fd.right = new FormAttachment(leftButton);
			else
				fd.right = new FormAttachment(100, -BORDER_SIZE);
			fd.top = new FormAttachment(0, BORDER_SIZE);
			closeButton.setLayoutData(fd);
			leftButton = closeButton;

			if ((style & (SWT.MAX | SWT.MIN)) != 0) {
				maxButton = new TitleBarButton(this, SWT.MAX);
				if ((style & SWT.MAX) == 0)
					maxButton.setEnabled(false);
				maxButton.addListener(SWT.Selection, new Listener() {
					public void handleEvent(Event event) {
						setMaximized(!maximized);
					}
				});
				fd = new FormData(titleHeight, titleHeight);
				if (leftButton != null)
					fd.right = new FormAttachment(leftButton);
				else
					fd.right = new FormAttachment(100, -BORDER_SIZE);
				fd.top = new FormAttachment(0, BORDER_SIZE);
				maxButton.setLayoutData(fd);
				leftButton = maxButton;

				minButton = new TitleBarButton(this, SWT.MIN);
				if ((style & SWT.MIN) == 0)
					minButton.setEnabled(false);
				/*
				 * minButton.addListener(SWT.Selection, new Listener() { public
				 * void handleEvent(Event event) { } });
				 */
				fd = new FormData(titleHeight, titleHeight);
				if (leftButton != null)
					fd.right = new FormAttachment(leftButton);
				else
					fd.right = new FormAttachment(100, -BORDER_SIZE);
				fd.top = new FormAttachment(0, BORDER_SIZE);
				minButton.setLayoutData(fd);
				leftButton = minButton;
			}
		}

		// 對控件的布局進(jìn)行控制
		fd = new FormData();
		fd.left = new FormAttachment(0, BORDER_SIZE);
		if (leftButton != null)
			fd.right = new FormAttachment(leftButton);
		else
			fd.right = new FormAttachment(100, -BORDER_SIZE);
		fd.top = new FormAttachment(0, BORDER_SIZE);
		titleBar.setLayoutData(fd);

		contentPane = new Composite(this, SWT.NONE);
		fd = new FormData();
		fd.left = new FormAttachment(0, BORDER_SIZE);
		fd.right = new FormAttachment(100, -BORDER_SIZE);
		fd.top = new FormAttachment(titleBar, 1);
		fd.bottom = new FormAttachment(100, -BORDER_SIZE);
		contentPane.setLayoutData(fd);

		// 設(shè)置InternalShell邊框的寬度
		sizeBorder = new SizeBorder(this, this, SWT.BORDER);
		sizeBorder.setBorderWidth(BORDER_SIZE);
		fd = new FormData();
		fd.left = new FormAttachment(0);
		fd.right = new FormAttachment(100);
		fd.top = new FormAttachment(0);
		fd.bottom = new FormAttachment(100);
		sizeBorder.setLayoutData(fd);

		minHeight = titleHeight + 2 * BORDER_SIZE;
		sizeBorder.setMinimumShellSize(minWidth, minHeight);
		sizeBorder.setCornerSize(titleHeight + BORDER_SIZE);
		if ((style & SWT.RESIZE) == 0)
			sizeBorder.setEnabled(false);

		setSize(320, 240);
		setVisible(false);

		desktop.manage(this);
	}

	/**
	 * 在原有樣式的基礎(chǔ)加上了NO_RADIO_GROUP樣式; 返回表示樣式的整型。
	 */
	private static int checkStyle(int style) {
		int mask = SWT.NO_RADIO_GROUP;
		style &= mask;
		return style;
	}

	/**
	 * 獲得當(dāng)前窗口的樣式;
	 */
	public int getStyle() {
		return style;
	}

	/**
	 * 返回InternalShell的顯示內(nèi)容的容器;
	 */
	public Composite getContentPane() {
		return contentPane;
	}

	public void setText(String s) {
		titleBar.setText(s);
	}

	public String getText() {
		return titleBar.getText();
	}

	public void setImage(Image image) {
		titleBar.setImage(image);
	}

	public Image getImage() {
		return titleBar.getImage();
	}

	/**
	 * 創(chuàng)建SizeGrip.
	 */
	public void createSizeGrip(int style) {
		checkWidget();
		if (sizeGrip != null)
			throw new SWTException("SizeGrip was already created");
		if ((this.style & SWT.RESIZE) == 0)
			throw new SWTException(
					"Cannot create SizeGrip for InternalShell without style RESIZE");
		sizeGrip = new SizeGrip(this, this, style);
		sizeGrip.setBackground(contentPane.getBackground());
		sizeGrip.moveAbove(contentPane);
		FormData fd = new FormData();
		fd.right = new FormAttachment(100, -BORDER_SIZE);
		fd.bottom = new FormAttachment(100, -BORDER_SIZE);
		sizeGrip.setLayoutData(fd);
		sizeGrip.setMinimumShellSize(minWidth, minHeight);
		if (isVisible())
			layout(true);
	}

	public Point computeSize(int wHint, int hHint, boolean changed) {
		Point p = super.computeSize(wHint, hHint, changed);
		if (p.x < minWidth)
			p.x = minWidth;
		if (p.y < minHeight)
			p.y = minHeight;
		return p;
	}

	public void setSize(int width, int height) {
		if (width < minWidth)
			width = minWidth;
		if (height < minHeight)
			height = minHeight;
		super.setSize(width, height);
	}

	public void setBounds(int x, int y, int width, int height) {
		if (width < minWidth)
			width = minWidth;
		if (height < minHeight)
			height = minHeight;
		super.setBounds(x, y, width, height);
	}

	public void setMinimumSize(int width, int height) {
		checkWidget();
		minWidth = width;
		minHeight = height;
		sizeGrip.setMinimumShellSize(minWidth, minHeight);
		sizeBorder.setMinimumShellSize(minWidth, minHeight);
		Point size = getSize();
		if (size.x < minWidth || size.y < minHeight)
			setSize(Math.max(minWidth, size.x), Math.max(minHeight, size.y));
	}

	public void close() {
		Event event = new Event();
		notifyListeners(SWT.Close, event);
		if (event.doit && !isDisposed())
			dispose();
	}

	public void open() {
		desktop.activate(this);
		setVisible(true);
		setFocus();
	}

	public void setVisible(boolean visible) {
		if (!visible)
			desktop.shellVisibilityChanged(this, false);
		super.setVisible(visible);
		if (visible)
			desktop.shellVisibilityChanged(this, true);
	}

	public void setActive() {
		desktop.activate(this);
	}

	public void setMaximized(boolean maximized) {
		checkWidget();
		if (this.maximized == maximized)
			return;
		setMaximizedWithoutNotification(maximized);
		desktop.shellMaximizedOrRestored(this, maximized);
	}

	void setMaximizedWithoutNotification(boolean maximized) {
		if (this.maximized == maximized)
			return;
		this.maximized = maximized;
		if (maximized) {
			pluralizedBounds = getBounds();
			desktopResized(desktop.getClientArea());
		} else {
			setBounds(pluralizedBounds);
		}
		// Note: This method may be called in a Dispose event for this object
		if (sizeGrip != null && !sizeGrip.isDisposed())
			sizeGrip.setVisible(!maximized);
		if (!sizeBorder.isDisposed())
			sizeBorder.setEnabled(!maximized && (style & SWT.RESIZE) != 0);
		if (maxButton != null && !maxButton.isDisposed())
			maxButton.redraw();
	}

	public boolean getMaximized() {
		checkWidget();
		return maximized;
	}

	void redrawDecorationsAfterActivityChange() {
		// Note: This method may be called in a Dispose event for this object
		if (!titleBar.isDisposed())
			titleBar.redraw();
		if (closeButton != null && !closeButton.isDisposed())
			closeButton.redraw();
		if (maxButton != null && !maxButton.isDisposed())
			maxButton.redraw();
		if (minButton != null && !minButton.isDisposed())
			minButton.redraw();
	}

	void desktopResized(Rectangle ca) {
		if (maximized) {
			int hideTitle = desktop.getShowMaximizedTitle() ? 0
					: (titleHeight + 1);
			setBounds(ca.x - BORDER_SIZE, ca.y - BORDER_SIZE - hideTitle,
					ca.width + 2 * BORDER_SIZE, ca.height + 2 * BORDER_SIZE
							+ hideTitle);
		}
	}

	public boolean setFocus() {
		if (focusControl != null && focusControl != this
				&& !focusControl.isDisposed())
			return focusControl.setFocus();
		return super.setFocus();
	}

	public boolean isActiveShell() {
		return desktop.getActiveShell() == this;
	}
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美videossexotv100| 91小视频在线免费看| 欧美久久久影院| 亚洲一区二区欧美| 欧洲精品一区二区三区在线观看| 中文字幕一区二区三区视频 | 亚洲成人久久影院| 91成人网在线| 丝瓜av网站精品一区二区| 欧美军同video69gay| 日本一不卡视频| 日韩欧美一区中文| 国产原创一区二区| 久久久久9999亚洲精品| 成人精品一区二区三区四区| 亚洲视频小说图片| 欧美精三区欧美精三区| 久久精品国产第一区二区三区| 久久综合九色综合欧美就去吻| 国产成人亚洲综合a∨婷婷| 中文字幕一区二区在线播放| 欧美制服丝袜第一页| 青娱乐精品视频在线| 久久久综合网站| 99久久免费国产| 丝袜亚洲另类丝袜在线| 337p粉嫩大胆色噜噜噜噜亚洲| 成人教育av在线| 亚洲高清免费视频| 日韩免费性生活视频播放| 国产成人av福利| 亚洲电影一级黄| 久久综合九色综合久久久精品综合| 成人免费视频视频在线观看免费| 一区二区三区日韩欧美精品 | 亚洲一区二区3| 欧美大片日本大片免费观看| 不卡一区在线观看| 日本伊人色综合网| 亚洲视频一区二区在线| 欧美一区二区三区影视| 波多野结衣欧美| 美女网站在线免费欧美精品| 国产精品欧美一级免费| 在线电影国产精品| 丁香六月综合激情| 日韩福利视频导航| 成人欧美一区二区三区| 日韩免费在线观看| 精品视频1区2区| 成人久久久精品乱码一区二区三区| 亚洲一二三级电影| 国产精品毛片a∨一区二区三区| 欧美人伦禁忌dvd放荡欲情| 成人理论电影网| 久久国产精品99精品国产| 亚洲一区二区三区美女| 国产精品每日更新在线播放网址| 制服丝袜中文字幕亚洲| 色综合久久六月婷婷中文字幕| 精品亚洲成av人在线观看| 亚洲国产成人va在线观看天堂| 国产精品久久久久久久久搜平片 | 综合中文字幕亚洲| 精品国产一区二区亚洲人成毛片| 在线看国产一区二区| 国产呦精品一区二区三区网站| 日韩主播视频在线| 亚洲最大色网站| 国产精品国产a| 26uuu久久综合| 欧美一区二区三区在线电影| 欧美亚洲国产一区在线观看网站| av激情综合网| 成人av资源下载| 夫妻av一区二区| 国产综合色视频| 韩国v欧美v日本v亚洲v| 激情都市一区二区| 精品一区二区三区欧美| 美女视频一区二区三区| 亚洲福利视频导航| 亚洲高清一区二区三区| 亚洲综合一区在线| 亚洲午夜激情网页| 午夜视频一区在线观看| 亚洲一线二线三线久久久| 亚洲美女屁股眼交3| 亚洲人成亚洲人成在线观看图片| 自拍偷自拍亚洲精品播放| 亚洲欧美综合网| 亚洲人123区| 亚洲第一二三四区| 五月婷婷激情综合| 热久久国产精品| 久久精品久久久精品美女| 九色综合国产一区二区三区| 久久99国产精品久久99| 国产老妇另类xxxxx| 国产精品一区二区91| 高清不卡一区二区在线| 99久久婷婷国产综合精品电影| 91视视频在线直接观看在线看网页在线看| 成人免费高清视频在线观看| eeuss鲁一区二区三区| 日本丰满少妇一区二区三区| 精品视频一区二区不卡| 日韩精品一区二区三区在线| 久久久久9999亚洲精品| 中文字幕一区二区三区不卡在线| 亚洲免费av高清| 日韩av不卡在线观看| 久久97超碰色| 成a人片亚洲日本久久| 欧美视频一二三区| 欧美一激情一区二区三区| 久久综合99re88久久爱| 国产精品嫩草久久久久| 亚洲一二三区在线观看| 久久精品二区亚洲w码| yourporn久久国产精品| 精品1区2区3区| 亚洲精品在线电影| **网站欧美大片在线观看| 亚洲第一成人在线| 国产精品影视网| 欧美色成人综合| 久久综合资源网| 亚洲黄色av一区| 经典一区二区三区| 91久久奴性调教| 91精品国产一区二区三区香蕉| 国产日韩高清在线| 亚洲国产精品人人做人人爽| 国产一区二区福利视频| 在线视频一区二区三区| 日韩一区二区三| 亚洲人成网站影音先锋播放| 久久99精品国产| 欧美午夜一区二区三区| 久久久国产精品麻豆| 视频在线在亚洲| 菠萝蜜视频在线观看一区| 欧美一级精品大片| 一区二区三区**美女毛片| 精东粉嫩av免费一区二区三区| 欧美色精品在线视频| 国产日韩在线不卡| 裸体健美xxxx欧美裸体表演| 91麻豆蜜桃一区二区三区| 精品久久久久久久久久久久包黑料 | 亚洲超丰满肉感bbw| 不卡av免费在线观看| 久久天天做天天爱综合色| 午夜精品爽啪视频| 色综合久久天天| 中文字幕第一区综合| 国产一区二区视频在线| 69久久夜色精品国产69蝌蚪网| 国产精品短视频| 懂色av中文字幕一区二区三区| 欧美一区二区国产| 日日夜夜免费精品| 欧美专区在线观看一区| 中文字幕一区二区三区精华液| 国产成人在线视频免费播放| 日韩欧美在线综合网| 亚洲第一激情av| 欧美日韩综合色| 一区二区在线观看免费 | 精品美女一区二区| 麻豆国产91在线播放| 日韩亚洲欧美一区| 免费人成在线不卡| 欧美一级在线免费| 久久er99热精品一区二区| 91精品国产欧美日韩| 亚洲成国产人片在线观看| 欧美性受xxxx| 亚洲国产精品天堂| 欧美精品v国产精品v日韩精品| 午夜国产精品一区| 欧美一区二区三区免费| 午夜天堂影视香蕉久久| 欧美三级电影在线看| 日韩电影在线看| 日韩视频免费观看高清完整版在线观看 | 欧美色成人综合| 天堂精品中文字幕在线| 欧美精品视频www在线观看 | 日本女优在线视频一区二区 | 欧美videossexotv100| 久久av老司机精品网站导航| 久久伊99综合婷婷久久伊| 国产精品资源在线观看| 中文字幕第一页久久| 色94色欧美sute亚洲线路一ni| 午夜婷婷国产麻豆精品| 欧美mv和日韩mv的网站| 国产福利精品导航|