Bug 271799 Replace IBackgroundRunner/IRunnableWithProgress with equinox.concurrent APIs
These basic abstractions of "something I want to run", and "someone who can run things" tend to get reinvented in various components. We should consolidate on the simple low level Equinox APIs for consistency.
examples/org.eclipse.e4.demo.e4photo/src/org/eclipse/e4/demo/e4photo/Thumbnails.java
double bestRatio = widthRatio > heightRatio ? widthRatio : heightRatio;
		int newWidth = (int) ((double) originalX / bestRatio);
		int newHeight = (int) ((double) originalY / bestRatio);
		return new Point(newWidth, newHeight);
	}
	@In
	public void setInput(IResource selection) {
		if (selection == null)
			return;
		IContainer newInput;
		if (selection instanceof IContainer)
			newInput = (IContainer)selection;
		else
			newInput = selection.getParent();
		
		
		if (newInput != this.input) {
			this.input = newInput;
			this.runnable = null;
			try {
				IContainer container = (IContainer) input;
				IResource[] members;
				members = container.members();
				gallery.removeAll();
				group = new GalleryItem(gallery, SWT.NONE);
				group.setExpanded(true);
				final List images = new ArrayList();
				for (int i = 0; i < members.length; i++) {
					IResource resource = members[i];
					if (resource.getType() == IResource.FILE) {