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.e4.ui.model.application.ui.basic.MWindow;
 import  org.eclipse.e4.ui.services.IStylingEngine;
 import  org.eclipse.swt.SWT;
 import  org.eclipse.swt.graphics.Rectangle;
 import  org.eclipse.swt.graphics.Region;
 import  org.eclipse.swt.widgets.Display;
 import  org.eclipse.swt.widgets.Shell;
 
 public class SplitFeedbackOverlay {
 	final Display display = Display.getCurrent();
 
 	private Shell feedbackShell;
 	private int curSide = 0;
 	private float ratio;
 
 	private List<Rectangle> rects = new ArrayList<Rectangle>();
 	private Rectangle outerRect;
 
 	Boolean isModified = null;
 	private IStylingEngine stylingEngine;
 
 	public SplitFeedbackOverlay(Shell dragShell, Rectangle rectint sidefloat pct,
 			boolean enclosedboolean modified) {
 		 = rect;
 		 = side;
 		 = pct;
 
 		 = new Shell(dragShell, SWT.NO_TRIM);
 		.setBounds(dragShell.getBounds());
 
 		MWindow winModel = (MWindow) dragShell.getData(.);
 		 = winModel.getContext().get(IStylingEngine.class);
 
 		// Show the appropriate feedback rectangles
 		setFeedback(enclosedmodified);
 
 	}
 
 	public void dispose() {
 		if ( != null && !.isDisposed()) {
 			Region region = .getRegion();
 			if (region != null && !region.isDisposed())
 				region.dispose();
 			.dispose();
 		}
 		 = null;
 	}
 
 	private void showRects(boolean enclosed) {
 		if ( == 0)
 			return;
 
 		Rectangle ca = new Rectangle(....);
 		.clear();
 
 		if (enclosed) {
 			addRect(ca);
 			ca.x += 4;
 			ca.y += 4;
 			ca.width -= 8;
 			ca.height -= 8;
 		}
 
 		int pctWidth = (int) (ca.width * );
 		int pctHeight = (int) (ca.height * );
 
 		Rectangle r1 = nullr2 = null;
 		if ( == SWT.LEFT) {
 			r1 = new Rectangle(ca.x, ca.y, pctWidthca.height);
 			r2 = new Rectangle(ca.x + r1.width + 2, ca.y, ca.width - (pctWidth + 2), ca.height);
 		} else if ( == SWT.RIGHT) {
 			r1 = new Rectangle(ca.x, ca.y, ca.width - pctWidthca.height);
 			r2 = new Rectangle(ca.x + r1.width + 2, ca.y, pctWidth - 2, ca.height);
 		} else if ( == SWT.TOP) {
 			r1 = new Rectangle(ca.x, ca.y, ca.width, pctHeight);
 			r2 = new Rectangle(ca.x, ca.y + pctHeight + 2, ca.width, ca.height - (pctHeight + 2));
 		} else if ( == SWT.BOTTOM) {
 			r1 = new Rectangle(ca.x, ca.y, ca.width, ca.height - pctHeight);
 			r2 = new Rectangle(ca.x, ca.y + r1.height + 2, ca.width, pctHeight - 2);
 		}
 
 		addRect(r1);
 		addRect(r2);
	}
	private void defineRegion() {
		Region rgn = new Region();
		for (Rectangle r : ) {
			rgn.add(r);
			rgn.subtract(r.x + 2, r.y + 2, r.width - 4, r.height - 4);
		}
		if (.getRegion() != null && !.getRegion().isDisposed())
			.getRegion().dispose();
		.setRegion(rgn);
		.redraw();
		.update();
	}
	private void addRect(Rectangle rect) {
		// Map the rect to the feedback shell
		rect = .map(nullrect);
		.add(rect);
	}
	public void setFeedback(boolean enclosedboolean modified) {
		if ( == null)
			 = !modified;
		// Update the feedback color if the drag is 'modified'
		if (modified != ) {
			if (!modified) {
				.setClassname("DragFeedback");
else {
				.setClassname("ModifiedDragFeedback");
			}
			 = modified;
		}
		showRects(enclosed);
		.update();
	}

Control this instance's visibility.

Parameters:
visible make visible if true or invisible if false
Since:
0.11
	public void setVisible(boolean visible) {
		if ( != null) {
			.setVisible(visible);
		}
	}
New to GrepCode? Check out our FAQ X