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

📄 colorcombostrategy.java

📁 利用它可以做出非常漂亮的swt界面,包含的组件有PShelf Plist
💻 JAVA
📖 第 1 页 / 共 2 页
字号:

			tb = new ToolBar(swtComposite,SWT.FLAT | SWT.RIGHT);
			tb.setBackground(display.getSystemColor(SWT.COLOR_LIST_BACKGROUND));
			
			if (showDefault){
				ToolItem ti = new ToolItem(tb,SWT.PUSH);
				ti.setText("Default");
				ti.setToolTipText("Default");
				if (defaultRGB != null)
					ti.setImage(createBigColorImage(defaultRGB));
				ti.addSelectionListener(listener);
				ti.setData("rgb",defaultRGB);
				default2 = ti;
			}
			
			ToolItem ti = new ToolItem(tb,SWT.PUSH);
			ti.setText("More Colors...");
			ti.addSelectionListener(new SelectionListener(){
				public void widgetSelected(SelectionEvent e) {
					ColorDialog cd = new ColorDialog(display.getActiveShell());
					RGB rgb = cd.open();
					if (rgb != null)
						selectItem(rgb,"Custom");
				}
				public void widgetDefaultSelected(SelectionEvent e) {
				}}
			);
		}
		
		//setDefaultRGB(new RGB(0,0,0));
		
		return composite;
	}

	/* (non-Javadoc)
	 * @see com.swtplus.widgets.combo.IComboStrategy#keyUp(com.swtplus.widgets.combo.IComboUpdater)
	 */
	public void keyUp(IComboUpdater updater) {
		//do nothing, what else could we do?
	}

	/* (non-Javadoc)
	 * @see com.swtplus.widgets.combo.IComboStrategy#keyDown(com.swtplus.widgets.combo.IComboUpdater)
	 */
	public void keyDown(IComboUpdater updater) {
		//do nothing, what else could we do?
	}

	/* (non-Javadoc)
	 * @see com.swtplus.widgets.combo.IComboStrategy#selectValue(java.lang.Object)
	 */
	public void selectValue(Object newValue) {
		//do nothing, what else could we do?
	}

	/* (non-Javadoc)
	 * @see com.swtplus.widgets.combo.IComboStrategy#canReturnFocusOnMouseDown()
	 */
	public boolean canReturnFocusOnMouseDown() {
		return true;
	}

	/* (non-Javadoc)
	 * @see com.swtplus.widgets.combo.IComboStrategy#mouseWheel(int)
	 */
	public void mouseWheel(int linesToScroll) {
		//do nothing, what else could we do?
	}
	

	private Image createColorImage(RGB rgb){
		PaletteData paletteData = new PaletteData(new RGB[] {new RGB(153,153,153), rgb});
	    ImageData imageData = new ImageData(12,12,1,paletteData);
		for(int x=1;x<11;x++){
	        for(int y=1;y<11;y++){
	            imageData.setPixel(x,y,1);
	        }
	    }
	    Image image = new Image(display,imageData);
	    
	    toolImages.add(image);
	    
	    return image;
	}
	
	private Image createBigColorImage(RGB rgb){
		PaletteData paletteData = new PaletteData(new RGB[] {new RGB(1,1,1),new RGB(153,153,153), rgb});
	    ImageData imageData = new ImageData(16,16,2,paletteData);
	    imageData.transparentPixel = 0;
		for(int x=2;x<14;x++){
	        for(int y=2;y<14;y++){
	            imageData.setPixel(x,y,1);
	        }
	    }
		for(int x=3;x<13;x++){
	        for(int y=3;y<13;y++){
	            imageData.setPixel(x,y,2);
	        }
	    }
	    Image image = new Image(display,imageData);
	    
	    toolImages.add(image);
	    
	    return image;
	}
	
	private void selectItem(RGB color,String name){	    
	    updater.update(new NamedRGB(name,color),true);
	}
	
	private void selectItem(ToolItem ti){
//		RGB[] colors = ti.getImage().getImageData().palette.getRGBs();
//		System.out.println(colors);
//		RGB color = null;
//		if (colors.length == 2){
//			color = colors[1];
//		} else {
//			color = colors[2];
//		}
		RGB color = (RGB) ti.getData("rgb");
		selectItem(color,ti.getToolTipText());
	}

	/* (non-Javadoc)
	 * @see com.swtplus.widgets.combo.IComboStrategy#dispose()
	 */
	public void dispose() {
		
		for (Iterator iter = toolImages.iterator(); iter.hasNext();) {
			Image element = (Image) iter.next();
			element.dispose();			
		}
		for (Iterator iter = valueImages.values().iterator(); iter.hasNext();) {
			Image element = (Image) iter.next();
			element.dispose();			
		}		
	}

	/* (non-Javadoc)
	 * @see com.swtplus.widgets.combo.IComboStrategy#createLabelProvider()
	 */
	public IComboLabelProvider createLabelProvider(){
		IComboLabelProvider labelProvider = new IComboLabelProvider(){
			public String getText(Object element) {
				if (element == null)
					return "";
				if (element instanceof String)
					return (String) element;
				NamedRGB rgb = (NamedRGB) element;
				return rgb.getName();
			}
			public Image getImage(Object element) {
				if (element == null)
					return null;
				
				if (element instanceof String)
					return null;
				
				NamedRGB rgb = (NamedRGB) element;
				if (valueImages.get(rgb.getRGB().toString()) != null)
					return (Image) valueImages.get(rgb.getRGB().toString());
				
				Image i = createValueImage(rgb.getRGB());
				valueImages.put(rgb.getRGB().toString(),i);
				
				return i;
			}
			public String getToolTip(Object element) {
				if (element == null)
					return "";
				if (element instanceof String)
					return (String) element;
				
				NamedRGB rgb = (NamedRGB) element;
				return rgb.toString();
			}
			public void dispose() {
			}
		};
		
		return labelProvider;
	}
	
	protected Image createValueImage(RGB rgb) {
		PaletteData paletteData = new PaletteData(new RGB[] {new RGB(153,153,153), rgb});
	    ImageData imageData = new ImageData(27,13,1,paletteData);
		for(int x=1;x<26;x++){
	        for(int y=1;y<12;y++){
	            imageData.setPixel(x,y,1);
	        }
	    }
		
		return new Image(display,imageData);
	}

	/* (non-Javadoc)
	 * @see com.swtplus.widgets.combo.IComboStrategy#jumpTo(java.lang.String)
	 */
	public void jumpTo(String beginning) {
	}

	/* (non-Javadoc)
	 * @see com.swtplus.widgets.combo.IComboStrategy#initializeEditor(org.eclipse.swt.widgets.Text)
	 */
	public void initializeEditor(Text editor) {
	}

	/* (non-Javadoc)
	 * @see com.swtplus.widgets.combo.IComboStrategy#initialize(com.swtplus.widgets.combo.PCombo)
	 */
	public void initialize(PCombo pCombo) {
	}

	/**
	 * Returns the default RGB value.
	 * 
	 * @return the default value
	 */
	public RGB getDefaultRGB() {
		return defaultRGB;
	}

	/**
	 * Sets the default value to be shown with the SHOW_DEFAULT style.
	 * 
	 * @param defaultRGB default value
	 */
	public void setDefaultRGB(RGB defaultRGB) {
		this.defaultRGB = defaultRGB;
		if (default1 != null){
			default1.setImage(createBigColorImage(defaultRGB));
			default1.setData("rgb",defaultRGB);
		}
		if (default2 != null){
			default2.setImage(createBigColorImage(defaultRGB));
			default2.setData("rgb",defaultRGB);
		}
	}

	/* (non-Javadoc)
	 * @see com.swtplus.widgets.combo.IComboStrategy#checkValue(java.lang.Object)
	 */
	public void checkValue(Object newValue) {
		Assert.isTrue(newValue instanceof String || newValue instanceof NamedRGB,"Value must be instance of String or NamedRGB");
	}

	/* (non-Javadoc)
	 * @see com.swtplus.widgets.combo.IComboStrategy#isLazyCreation()
	 */
	public boolean isLazyCreation() {
		return true;
	}

}

⌨️ 快捷键说明

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