⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 imageandmessagearea.java

📁 jfa2ce 源码帮助开发人员更好的理解运用
💻 JAVA
字号:
/******************************************************************************* * Copyright (c) 2006 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: *     IBM Corporation - initial API and implementation ******************************************************************************/package org.eclipse.jface.dialogs;import org.eclipse.jface.fieldassist.DecoratedField;import org.eclipse.jface.fieldassist.FieldDecorationRegistry;import org.eclipse.jface.fieldassist.TextControlCreator;import org.eclipse.jface.resource.JFaceResources;import org.eclipse.swt.SWT;import org.eclipse.swt.events.PaintEvent;import org.eclipse.swt.events.PaintListener;import org.eclipse.swt.graphics.Color;import org.eclipse.swt.graphics.Font;import org.eclipse.swt.graphics.Image;import org.eclipse.swt.graphics.Point;import org.eclipse.swt.graphics.Rectangle;import org.eclipse.swt.layout.GridData;import org.eclipse.swt.layout.GridLayout;import org.eclipse.swt.widgets.Composite;import org.eclipse.swt.widgets.Layout;import org.eclipse.swt.widgets.Text;/** * Instances of this class provide a message area to display * a message and an associated image.  * * @since 3.2 *  * This class is not intended to be extended by clients. *  */public class ImageAndMessageArea extends Composite {		private int BORDER_MARGIN = IDialogConstants.HORIZONTAL_SPACING/2;	private DecoratedField messageField;	private Composite container;		/**	 * Constructs a new ImageAndMessageArea with an empty decorated field.	 * Calls to <code>setText(String text)</code> and <code>setImage(Image image)</code> 	 * are required in order to fill the message area. Also, the instance will be invisible	 * when initially created.	 * <p>	 * The style bit <code>SWT.WRAP</code> should be used if a larger message area is desired.</p>	 * 	 * @param parent the parent composite	 * @param style the SWT style bits. Using SWT.WRAP will create a larger message area.	 */	public ImageAndMessageArea(Composite parent, int style) {		super(parent, style);		container = new Composite(this, style);		GridLayout glayout = new GridLayout();		glayout.numColumns = 2;		glayout.marginWidth = 0;		glayout.marginHeight = 0;		glayout.marginTop = BORDER_MARGIN;		glayout.marginBottom = BORDER_MARGIN;		container.setLayout(glayout);		messageField = new DecoratedField(container,SWT.READ_ONLY | style,new TextControlCreator());    	setFont(JFaceResources.getDialogFont());				GridData gd = new GridData(SWT.FILL,SWT.FILL,true,true);		int lineHeight = ((Text) messageField.getControl()).getLineHeight();		if((style & SWT.WRAP) > 0)			gd.heightHint = 2 * lineHeight;		else			gd.heightHint = lineHeight;				messageField.getLayoutControl().setLayoutData(gd);				addPaintListener(new PaintListener() {			/* (non-Javadoc)			 * @see org.eclipse.swt.events.PaintListener#paintControl(org.eclipse.swt.events.PaintEvent)			 */			public void paintControl(PaintEvent e) {				onPaint(e);			}		});				// sets the layout and size to account for the BORDER_MARGIN between		// the border drawn around the container and the decorated field.		setLayout(new Layout() {			/* (non-Javadoc)			 * @see org.eclipse.swt.widgets.Layout#layout(org.eclipse.swt.widgets.Composite, boolean)			 */			public void layout(Composite parent, boolean changed) {				Rectangle carea = getClientArea();				container.setBounds(carea.x + BORDER_MARGIN, carea.y + BORDER_MARGIN,							carea.width - (2 * BORDER_MARGIN), 							carea.height - (2 * BORDER_MARGIN));			}			/* (non-Javadoc)			 * @see org.eclipse.swt.widgets.Layout#computeSize(org.eclipse.swt.widgets.Composite, int, int, boolean)			 */			public Point computeSize(Composite parent, int wHint,					int hHint, boolean changed) {				Point size;				size = container.computeSize(wHint, hHint,						changed);								// size set to account for the BORDER_MARGIN on 				// all sides of the decorated field				size.x += 4;				size.y += 4;				return size;			}		});		setVisible(false);	}	/* (non-Javadoc)	 * @see org.eclipse.swt.widgets.Control#setBackground(org.eclipse.swt.graphics.Color)	 */	public void setBackground(Color bg) {		super.setBackground(bg);		messageField.getLayoutControl().setBackground(bg);		messageField.getControl().setBackground(bg);		container.setBackground(bg);	}	/**	 * Sets the text in the decorated field which will be displayed	 * in the message area.	 * 	 * @param text the text to be displayed in the message area	 * 	 * @see org.eclipse.swt.widgets.Text#setText(String string)	 */	public void setText(String text) {		((Text) messageField.getControl()).setText(text);	}	/**	 * Adds an image to decorated field to be shown in the message area.	 * 	 * @param image desired image to be shown in the ImageAndMessageArea	 */	public void setImage(Image image) {		FieldDecorationRegistry registry = FieldDecorationRegistry.getDefault();		registry.registerFieldDecoration("messageImage", null, image);  //$NON-NLS-1$		messageField.addFieldDecoration(registry.getFieldDecoration("messageImage"), //$NON-NLS-1$										SWT.LEFT | SWT.TOP, false);	}	/**	 *	Draws the message area composite with rounded corners.	 */	private void onPaint(PaintEvent e) {		Rectangle carea = getClientArea();		e.gc.setForeground(getForeground());				// draws the polyline to be rounded in a 2 pixel squared area		e.gc.drawPolyline(new int[] { carea.x, carea.y + carea.height - 1,				carea.x, carea.y + 2, carea.x + 2, carea.y,				carea.x + carea.width - 3, carea.y,				carea.x + carea.width - 1, carea.y + 2,				carea.x + carea.width - 1, carea.y + carea.height - 1 });	}	/* (non-Javadoc)	 * @see org.eclipse.swt.widgets.Control#setFont(org.eclipse.swt.graphics.Font)	 */	public void setFont(Font font) {		super.setFont(font);		((Text) messageField.getControl()).setFont(font);	}		/* (non-Javadoc)	 * @see org.eclipse.swt.widgets.Control#setToolTipText(java.lang.String)	 */	public void setToolTipText(String text){		super.setToolTipText(text);		((Text) messageField.getControl()).setToolTipText(text);	}}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -