📄 colorcombostrategy.java
字号:
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 + -