Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
Copyright (c) 2013 IBM Corporation and others. All rights reserved. This program and the accompanying materials are made available under the terms of the Eclipse Public License v1.0 which accompanies this distribution, and is available at http://www.eclipse.org/legal/epl-v10.html Contributors: IBM Corporation - initial API and implementation /
 
 package org.eclipse.e4.ui.workbench.addons.dndaddon;
 
 import java.util.List;
 import  org.eclipse.swt.SWT;
 import  org.eclipse.swt.events.PaintEvent;
 import  org.eclipse.swt.events.PaintListener;
 import  org.eclipse.swt.graphics.Color;
 import  org.eclipse.swt.graphics.GC;
 import  org.eclipse.swt.graphics.Rectangle;
 import  org.eclipse.swt.graphics.Region;
 import  org.eclipse.swt.widgets.Label;
 import  org.eclipse.swt.widgets.Listener;
 import  org.eclipse.swt.widgets.Shell;
 
 class Overlay {
 	private Shell baseShell;
 	private Shell overlayShell;
 
 	private Color blue;
 	private int offsetX;
 	private int offsetY;
 
 	public abstract class Adornment {
 		public abstract void updateRegion(Region region);
 
 		public abstract void drawAdornment(GC gc);
 	}
 
 	public class OutlineRegion extends Adornment {
 		Rectangle innerRect;
 		Rectangle outerRect;
 		int width;
 
 		public OutlineRegion(Rectangle rectint width) {
 			 = rect;
 			this. = width;
 		}
 
 		public void updateRegion(Region region) {
 			 = new Rectangle(. - . - ,
 							+ (2 * ));
 			region.add();
 			region.subtract();
 		}
 
 		public void drawAdornment(GC gc) {
 			gc.fillRectangle();
 		}
 	}
 
 	public class ActiveRegion extends Adornment {
 		Label label;
 		Listener activeListener;
 
 		public ActiveRegion(Rectangle rect, Listener listener) {
 			 = new Label(, SWT.NONE);
 			.setBounds(rect);
 
 		}
 
 		public void updateRegion(Region region) {
 			region.add(.getBounds());
 		}
 
 		public void drawAdornment(GC gc) {
 		}
 	}
 
 
 	public void addAdornment(Adornment a) {
 		.redraw();
 	}
 
 	public void addOutline(Rectangle rectint width) {
 		rect.x += ;
 		rect.y += ;
 		addAdornment(new OutlineRegion(rectwidth));
 	}
 
 	public void removeAdornment(Adornment a) {
		if (.size() == 0)
			.setVisible(false);
		else
			.redraw();
	}
	public void clear() {
		.setVisible(false);
	}
	public Overlay(Shell shell) {
		 = shell;
		Rectangle cr = .getClientArea();
		Rectangle trim = .computeTrim(cr.x, cr.y, cr.width, cr.height);
		 = -trim.x;
		 = -trim.y;
		 = new Shell(, SWT.NO_TRIM | SWT.ON_TOP);
		.setBounds(.getBounds());
		.setBackground(.getDisplay().getSystemColor(
				SWT.COLOR_DARK_GREEN));
		.setAlpha(128);
		 = new Color(.getDisplay(), 0, 0, 128);
		.addPaintListener(new PaintListener() {
			public void paintControl(PaintEvent e) {
				e.gc.setForeground();
				e.gc.setBackground();
				for (Adornment adornment : ) {
					adornment.drawAdornment(e.gc);
				}
			}
		});
	}
	private void updateRegion() {
		Region region = new Region();
		for (Adornment adornment : ) {
			adornment.updateRegion(region);
		}
		.setRegion(region);
		if (!.getVisible())
			.setVisible(true);
	}
	public void dispose() {
		if (!.isDisposed())
			.dispose();
	}
New to GrepCode? Check out our FAQ X