// The MIT License (MIT)
//
// Copyright (c) 2015, 2019 Arian Fornaris
//
// Permission is hereby granted, free of charge, to any person obtaining a
// copy of this software and associated documentation files (the
// "Software"), to deal in the Software without restriction, including
// without limitation the rights to use, copy, modify, merge, publish,
// distribute, sublicense, and/or sell copies of the Software, and to permit
// persons to whom the Software is furnished to do so, subject to the
// following conditions: The above copyright notice and this permission
// notice shall be included in all copies or substantial portions of the
// Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
// USE OR OTHER DEALINGS IN THE SOFTWARE.
package phasereditor.ui;

import org.eclipse.core.resources.IFile;
import org.eclipse.swt.graphics.GC;
import org.eclipse.swt.graphics.Rectangle;

import phasereditor.ui.TreeCanvas.TreeCanvasItem;

/**
 * @author arian
 *
 */
public class ImageFileTreeCanvasItemRenderer extends BaseImageTreeCanvasItemRenderer {

	public ImageFileTreeCanvasItemRenderer(TreeCanvasItem item) {
		super(item);
	}

	@Override
	protected void paintScaledInArea(GC gc, Rectangle area) {
		var proxy = getImage();
		if (proxy != null) {
			proxy.paintScaledInArea(gc, area);
		}
	}

	private ImageProxy getImage() {
		var file = getImageFileFromData(_item.getData());
		var proxy = ImageProxy.get(file, null);
		return proxy;
	}

	@SuppressWarnings("static-method")
	protected IFile getImageFileFromData(Object data) {
		return (IFile) data;
	}

	@Override
	public ImageProxy get_DND_Image() {
		return getImage();
	}

}
