]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.utils.ui/src/org/simantics/utils/ui/color/ColorGradientCanvas.java
Sync git svn branch with SVN repository r33269.
[simantics/platform.git] / bundles / org.simantics.utils.ui / src / org / simantics / utils / ui / color / ColorGradientCanvas.java
index 356de7ad0358d401f92cbd3240c74f454a081ad1..27daeeb717dd647d018e1f9b07feeeec4c270c4a 100644 (file)
@@ -33,29 +33,35 @@ public class ColorGradientCanvas extends Canvas{
        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