core/com.nokia.carbide.discovery.ui/src/com/nokia/carbide/internal/discovery/ui/editor/SharedBackgroundComposite.java
author dadubrow
Tue, 13 Jul 2010 15:27:30 -0500
changeset 1609 085da1889c59
child 1618 712d047abd8b
permissions -rw-r--r--
Portal initial commit
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1609
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
     1
/*
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
     2
* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
     3
* All rights reserved.
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
     4
* This component and the accompanying materials are made available
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
     5
* under the terms of the License "Eclipse Public License v1.0"
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
     6
* which accompanies this distribution, and is available
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
     8
*
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
     9
* Initial Contributors:
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    11
*
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    12
* Contributors:
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    13
*
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    14
* Description: 
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    15
*
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    16
*/
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    17
package com.nokia.carbide.internal.discovery.ui.editor;
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    18
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    19
import org.eclipse.swt.SWT;
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    20
import org.eclipse.swt.events.PaintEvent;
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    21
import org.eclipse.swt.events.PaintListener;
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    22
import org.eclipse.swt.graphics.GC;
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    23
import org.eclipse.swt.graphics.Image;
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    24
import org.eclipse.swt.graphics.Rectangle;
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    25
import org.eclipse.swt.widgets.Canvas;
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    26
import org.eclipse.swt.widgets.Composite;
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    27
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    28
class SharedBackgroundComposite extends Canvas {
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    29
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    30
	private final Composite backgroundParent;
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    31
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    32
	public SharedBackgroundComposite(Composite parent, Composite backgroundParent) {
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    33
		super(parent, SWT.NO_BACKGROUND);
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    34
		this.backgroundParent = backgroundParent;
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    35
		addPaintListener(new PaintListener() {
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    36
			@Override
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    37
			public void paintControl(PaintEvent e) {
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    38
				Rectangle b = getBounds();
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    39
				drawBackground(e.gc, b.x, b.y, b.width, b.height);
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    40
			}
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    41
		});
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    42
	}
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    43
	
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    44
	@Override
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    45
	public void drawBackground(GC gc, int x, int y, int width, int height) {
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    46
		Composite relParent = getParent();
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    47
		while (relParent != backgroundParent) {
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    48
			Rectangle relB = relParent.getBounds();
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    49
			x += relB.x;
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    50
			y += relB.y;
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    51
			relParent = relParent.getParent();
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    52
		}
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    53
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    54
		Image image = backgroundParent.getBackgroundImage();
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    55
		Rectangle imageBounds = image.getBounds();
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    56
		width = Math.min(width, imageBounds.width - x);
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    57
		height = Math.min(height, imageBounds.height - y);
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    58
		if (width > 0 && height > 0)
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    59
			gc.drawImage(image, x, y, width, height, 0, 0, width, height);
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    60
//		gc.setForeground(gc.getDevice().getSystemColor(SWT.COLOR_WHITE));
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    61
//		gc.drawRectangle(1, 1, width - 2, height - 2);
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    62
	}
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    63
085da1889c59 Portal initial commit
dadubrow
parents:
diff changeset
    64
}