int style;\r
\r
public ColorGradientCanvas(Composite parent, int style) {\r
- // FIXME : use xor operation to get SWT.HORIZONTAL and SWT.VERTICAL\r
- // out of style when it's passed to parent\r
- super(parent,SWT.BORDER);\r
+ super(parent,(style|SWT.BORDER)&(~(SWT.VERTICAL|SWT.HORIZONTAL)));\r
this.style = style & (SWT.VERTICAL | SWT.HORIZONTAL) ;\r
- addPaintListener(new PaintListener() {\r
+ addPaintListener(createPaintListener());\r
+ }\r
+ \r
+ public void setGradient(ColorGradient gradient) {\r
+ this.gradient = gradient;\r
+ this.redraw();\r
+ } \r
+ \r
+ protected PaintListener createPaintListener() {\r
+ return new PaintListener() {\r
public void paintControl(PaintEvent e) {\r
GC gc = e.gc;\r
Rectangle clip = gc.getClipping();\r
- if (gradient != null) {\r
- Image image = gradient.getGradientImage(clip.width,clip.height,ColorGradientCanvas.this.style);\r
- gc.drawImage(image, 0, 0);\r
- image.dispose(); \r
- } else {\r
- gc.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_WHITE));\r
- gc.fillRectangle(clip);\r
- }\r
+ paintGradient(gc, clip);\r
}\r
- });\r
+ };\r
}\r
\r
- public void setGradient(ColorGradient gradient) {\r
- this.gradient = gradient;\r
- this.redraw();\r
- } \r
+ protected void paintGradient(GC gc, Rectangle clip) {\r
+ if (gradient != null) {\r
+ Image image = gradient.getGradientImage(clip.width,clip.height,ColorGradientCanvas.this.style);\r
+ gc.drawImage(image, 0, 0);\r
+ image.dispose(); \r
+ } else {\r
+ gc.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_WHITE));\r
+ gc.fillRectangle(clip);\r
+ }\r
+ }\r
\r
}\r