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

📄 colormenu.java

📁 SUN公司eclipse3.2.2经典例子
💻 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.swt.examples.graphics;import java.util.*;import org.eclipse.swt.*;import org.eclipse.swt.graphics.*;import org.eclipse.swt.widgets.*;/** * This class utilizes the factory design pattern to create menus that may * contain color items, pattern items and gradient items. To create a menu: * first set the menu items that you wish to have appear in the menu by calling * the setters (setColorItems(), setPatternItems(), setGradientItems()), and * then call createMenu() to get an instance of a menu. By default, the menu * will contain color items. */public class ColorMenu {	boolean enableColorItems, enablePatternItems, enableGradientItems;		public ColorMenu() {		enableColorItems = true;	}		/**	 * Method used to specify whether or not the color menu items will appear in	 * the menu.	 * 	 * @param enable	 *            A boolean flag - true to make the color menu items visible in	 *            the menu; false otherwise.	 */	public void setColorItems(boolean enable) {		enableColorItems = enable;	}		/**	 * @return true if color menu items are contained in the menu; false otherwise.	 * */	public boolean getColorItems() {		return enableColorItems;	}		/**	 * Method used to specify whether or not the pattern menu items will appear	 * in the menu.	 * 	 * @param enable	 *            A boolean flag - true to make the pattern menu items visible	 *            in the menu; false otherwise.	 */	public void setPatternItems(boolean enable) {		enablePatternItems = enable;	}		/**	 * @return true if pattern menu items are contained in the menu; false otherwise.	 * */	public boolean getPatternItems() {		return enablePatternItems;	}		/**	 * Method used to specify whether or not the gradient menu items will appear	 * in the menu.	 * 	 * @param enable	 *            A boolean flag - true to make the gradient menu items visible	 *            in the menu; false otherwise.	 */	public void setGradientItems(boolean enable) {		enableGradientItems = enable;	}		/**	 * @return true if gradient menu items are contained in the menu; false otherwise.	 */	public boolean getGradientItems() {		return enableGradientItems;	}		/**	 * Creates and returns the menu based on the settings provided via	 * setColorItems(), setPatternItems() and setGradientItems()	 * 	 * @return A menu based on the settings	 */	public Menu createMenu(Control parent, ColorListener cl) {		Menu menu = new Menu(parent);			MenuItemListener menuItemListener = createMenuItemListener(parent);		menu.addListener(SWT.Selection, menuItemListener);		menu.addListener(SWT.Dispose, menuItemListener);		menuItemListener.setColorListener(cl);		if (enableColorItems) {			addColorItems(menu, menuItemListener, menuItemListener.getMenuResources());		}		if (enablePatternItems) {			addPatternItems(menu, menuItemListener, menuItemListener.getMenuResources());		}		if (enableGradientItems) {			addGradientItems(menu, menuItemListener);		}		return menu;	}		/** Adds the colors items to the menu. */	private void addColorItems(Menu menu, MenuItemListener menuListener,			ArrayList menuResources) {		Display display = menu.getDisplay();				if (menu.getItemCount() != 0) {			new MenuItem(menu, SWT.SEPARATOR);		}				// color names		String[] names = new String[]{			GraphicsExample.getResourceString("White"), //$NON-NLS-1$			GraphicsExample.getResourceString("Black"), //$NON-NLS-1$			GraphicsExample.getResourceString("Red"), //$NON-NLS-1$			GraphicsExample.getResourceString("Green"), //$NON-NLS-1$			GraphicsExample.getResourceString("Blue"), //$NON-NLS-1$			GraphicsExample.getResourceString("Yellow"), //$NON-NLS-1$			GraphicsExample.getResourceString("Cyan"), //$NON-NLS-1$		};				// colors needed for the background menu		Color[] colors = new Color[]{			display.getSystemColor(SWT.COLOR_WHITE),			display.getSystemColor(SWT.COLOR_BLACK),			display.getSystemColor(SWT.COLOR_RED),			display.getSystemColor(SWT.COLOR_GREEN),			display.getSystemColor(SWT.COLOR_BLUE),			display.getSystemColor(SWT.COLOR_YELLOW),			display.getSystemColor(SWT.COLOR_CYAN),		};			// add standard color items to menu		for (int i = 0; i < names.length; i++) {			MenuItem item = new MenuItem(menu, SWT.NONE);			item.setText(names[i]);			item.addListener(SWT.Selection, menuListener);			Color color = colors[i];			GraphicsBackground gb = new GraphicsBackground();			Image image = GraphicsExample.createImage(display, color);			gb.setBgColor1(color);			gb.setBgImage(image);			gb.setThumbNail(image);			menuResources.add(image);			item.setImage(image);			item.setData(gb);		}				// add custom color item to menu		menuListener.customColorMI = new MenuItem(menu, SWT.NONE);		menuListener.customColorMI.setText(GraphicsExample.getResourceString("CustomColor")); //$NON-NLS-1$		menuListener.customColorMI.addListener(SWT.Selection, menuListener);		GraphicsBackground gb = new GraphicsBackground();		menuListener.customColorMI.setData(gb);			}		/** Adds the pattern items to the menu. */	private void addPatternItems(Menu menu, MenuItemListener menuListener,			ArrayList menuResources) {		Display display = menu.getDisplay();				if (menu.getItemCount() != 0) {			new MenuItem(menu, SWT.SEPARATOR);		}				// pattern names		String[] names = new String[]{			GraphicsExample.getResourceString("Pattern1"), //$NON-NLS-1$			GraphicsExample.getResourceString("Pattern2"), //$NON-NLS-1$			GraphicsExample.getResourceString("Pattern3"), //$NON-NLS-1$		};				// pattern images		Image[] images = new Image[]{			loadImage(display, "pattern1.jpg", menuResources),				loadImage(display, "pattern2.jpg", menuResources),			loadImage(display, "pattern3.jpg", menuResources),		};				// add the pre-defined patterns to the menu		for (int i = 0; i < names.length; i++) {			MenuItem item = new MenuItem(menu, SWT.NONE);			item.setText(names[i]);			item.addListener(SWT.Selection, menuListener);			Image image = images[i];			GraphicsBackground gb = new GraphicsBackground();						gb.setBgImage(image);			gb.setThumbNail(image);			item.setImage(image);			item.setData(gb);		}				// add the custom pattern item			menuListener.customPatternMI = new MenuItem(menu, SWT.NONE);		menuListener.customPatternMI.setText(GraphicsExample.getResourceString("CustomPattern")); //$NON-NLS-1$		menuListener.customPatternMI.addListener(SWT.Selection, menuListener);		GraphicsBackground gb = new GraphicsBackground();		menuListener.customPatternMI.setData(gb);				}		/** Adds the gradient menu item. */	private void addGradientItems(Menu menu, MenuItemListener menuListener) {		if (menu.getItemCount() != 0) {			new MenuItem(menu, SWT.SEPARATOR);		}		menuListener.customGradientMI = new MenuItem(menu, SWT.NONE);		menuListener.customGradientMI.setText(GraphicsExample.getResourceString("Gradient")); //$NON-NLS-1$		menuListener.customGradientMI.addListener(SWT.Selection, menuListener);		GraphicsBackground gb = new GraphicsBackground();		menuListener.customGradientMI.setData(gb);	}		/** Creates and returns the listener for menu items. */	private MenuItemListener createMenuItemListener(final Control parent) {		return new MenuItemListener(parent);	}		/**	 * Creates and returns an instance of Image using on the path of an image.	 * 	 * @param display	 *            A Display	 * @param name	 *            The path of the image file	 * @param resources	 *            The list of resources of the menu	 */	private Image loadImage(Display display, String name, ArrayList resources) {		Image image = GraphicsExample.loadImage(display, GraphicsExample.class, name);		if (image != null) resources.add(image);		return image;	}	/**	 * An inner class used as a listener for MenuItems added to the menu.	 */	static class MenuItemListener implements Listener {		MenuItem customColorMI, customPatternMI, customGradientMI;	// custom menu items		Control parent;		Image customImage, customImageThumb;		Color customColor;		GraphicsBackground background;	// used to store information about the background		ColorListener colorListener;		ArrayList resources;				public MenuItemListener(Control parent){			this.parent = parent; 			resources = new ArrayList();		}		/**		 * Method used to set the ColorListener		 * 		 * @param cl		 *            A ColorListener		 * @see org.eclipse.swt.examples.graphics.ColorListener.java		 */		public void setColorListener(ColorListener cl) {			this.colorListener = cl;		}				public ArrayList getMenuResources() {			return resources;		}		public void handleEvent(Event event) {			switch (event.type) {			case SWT.Dispose:				for (int i = 0; i < resources.size(); i++) {					((Resource) resources.get(i)).dispose();				}				resources = new ArrayList();				break;			case SWT.Selection:				Display display = event.display;				MenuItem item = (MenuItem) event.widget;				if (customColorMI == item) {					ColorDialog dialog = new ColorDialog(parent.getShell());					if (customColor != null && !customColor.isDisposed()) {						dialog.setRGB(customColor.getRGB());					}					RGB rgb = dialog.open();					if (rgb == null) return;					if (customColor != null) customColor.dispose();					customColor = new Color(display, rgb);					if (customPatternMI != null) customPatternMI.setImage(null);					if (customGradientMI != null) customGradientMI.setImage(null);					if (customImage != null) customImage.dispose();					customImage = GraphicsExample.createImage(display, customColor);					GraphicsBackground gb = new GraphicsBackground();					gb.setBgImage(customImage);					gb.setThumbNail(customImage);					gb.setBgColor1(customColor);					item.setData(gb);					item.setImage(customImage);					resources.add(customColor);					resources.add(customImage);				} else if (customPatternMI == item) {					FileDialog dialog = new FileDialog(parent.getShell());					dialog.setFilterExtensions(new String[] { "*.jpg", "*.gif",	"*.*" });					String name = dialog.open();					if (name == null) return;					if (customColorMI != null) customColorMI.setImage(null);					if (customGradientMI != null) customGradientMI.setImage(null);					if (customColor != null) customColor.dispose();					if (customImage != null) customImage.dispose();					if (customImageThumb != null) customImageThumb.dispose();					customImage = new Image(display, name);					customImageThumb = GraphicsExample.createThumbnail(display, name);					GraphicsBackground gb = new GraphicsBackground();					gb.setBgImage(customImage);					gb.setThumbNail(customImageThumb);					item.setData(gb);					item.setImage(customImageThumb);					resources.add(customImageThumb);				} else if (customGradientMI == item) {					GradientDialog dialog = new GradientDialog(parent.getShell());					if (background != null) {						if (background.getBgColor1() != null)							dialog.setFirstRGB(background.getBgColor1().getRGB());						if (background.getBgColor2() != null)							dialog.setSecondRGB(background.getBgColor2().getRGB());											}										if (dialog.open() != SWT.OK) return;					Color colorA = new Color(display, dialog.getFirstRGB());					Color colorB = new Color(display, dialog.getSecondRGB());					if (colorA == null || colorB == null) return;					if (customColorMI != null) customColorMI.setImage(null);					if (customPatternMI != null) customPatternMI.setImage(null);					if (customColor != null) customColor.dispose();					if (customImage != null) customImage.dispose();					customImage = GraphicsExample.createImage(display, colorA, 							colorB, 16, 16);					GraphicsBackground gb = new GraphicsBackground();					gb.setBgImage(customImage);					gb.setThumbNail(customImage);					gb.setBgColor1(colorA);					gb.setBgColor2(colorB);					item.setData(gb);					item.setImage(customImage);					resources.add(colorA);					resources.add(colorB);					resources.add(customImage);				} else {					if (customColorMI != null) customColorMI.setImage(null);					if (customPatternMI != null) customPatternMI.setImage(null);					if (customGradientMI != null) customGradientMI.setImage(null);				}				background = (GraphicsBackground) item.getData();				colorListener.setColor(background);				break;			}		}	}}

⌨️ 快捷键说明

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