8.10. Creating Nonrectangular Windows

Problem

You want to wow users with windows of arbitrary shapes, using them to display company logos, game pieces, advertisements, and so on.

Solution

Create a nonrectangular shell using shell regions in Eclipse 3.0. In Eclipse 3.0, SWT shells can now have an irregular shape defined by regions. As an example (NonRectangularApp at this book’s site), we’ll create a blue doughnut-shaped window with an Exit button in it. All you have to do is to create a shell, create a Region object that defines the shape you want to use, and use the shell’s setRegion method to configure the shell.

Discussion

In this example, we’ll use a method named createCircle to create circular regions. The following example shows how to use that method and those regions to create a doughnut-shaped shell that we’ll color blue using the shell’s setBackground method. Note that you can add and cut regions from the final shell using the Region class’s add and subtract methods:

final Display display = new Display( );
final Shell shell = new Shell(display, SWT.NO_TRIM);

Region region = new Region( );
               region.add(createCircle(50, 50, 50));
               region.subtract(createCircle(50, 50, 20));
               shell.setRegion(region);
               shell.setSize(region.getBounds( ).width, region.getBounds( ).height);
               shell.setBackground(display.getSystemColor(SWT.COLOR_BLUE));
.
.
.

To create circles, the createCircle method returns an array of points outlining the circle. Here’s how this method does that:

static int[] createCircle(int ...

Get Eclipse Cookbook now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.