package org.phpsrc.eclipse.pti.tools.phpdepend.ui.views.metricrunner;
import java.io.File;
import java.net.MalformedURLException;
import org.eclipse.gmf.runtime.draw2d.ui.render.RenderedImage;
import org.eclipse.gmf.runtime.draw2d.ui.render.factory.RenderedImageFactory;
import org.eclipse.jface.layout.GridDataFactory;
import org.eclipse.jface.layout.GridLayoutFactory;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.TabFolder;
import org.eclipse.swt.widgets.TabItem;
import org.eclipse.ui.part.ViewPart;
import org.phpsrc.eclipse.pti.tools.phpdepend.core.model.MetricRunSession;
import org.phpsrc.eclipse.pti.ui.Logger;
import org.phpsrc.eclipse.pti.ui.widgets.ImageCanvas;
import org.phpsrc.eclipse.pti.ui.widgets.ImageCanvasViewer;
public class MetricRunnerChartsViewPart extends ViewPart {
public static final String NAME = "org.phpsrc.eclipse.pti.tools.phpdepend.ui.views.metricrunnercharts"; //$NON-NLS-1$
private TabFolder fImageFolder;
private ImageCanvasViewer fSummaryPyramid;
private ImageCanvasViewer fJDependChart;
public void createPartControl(Composite parent) {
Composite comp = new Composite(parent, SWT.NONE);
GridLayoutFactory.fillDefaults().applyTo(comp);
fImageFolder = new TabFolder(comp, SWT.NONE);
GridDataFactory.fillDefaults().grab(true, true).applyTo(fImageFolder);
fJDependChart = new ImageCanvasViewer(fImageFolder, SWT.NONE);
createTabItem(fImageFolder, "JDepend Chart", fJDependChart);
fSummaryPyramid = new ImageCanvasViewer(fImageFolder, SWT.NONE);
createTabItem(fImageFolder, "Summary Pyramid", fSummaryPyramid);
}
private void createTabItem(TabFolder folder, String title, Control image) {
TabItem item = new TabItem(folder, SWT.NONE);
item.setText(title);
item.setControl(image);
image.setBackground(new Color(folder.getDisplay(), 255, 255, 255));
}
public void setFocus() {
fSummaryPyramid.setFocus();
}
public void setActiveMetricRunSession(MetricRunSession metricRunSession) {
if (metricRunSession != null) {
showImage(metricRunSession.getJDependChartFile(), fJDependChart.getImageCanvas());
showImage(metricRunSession.getSummaryPyramidFile(), fSummaryPyramid.getImageCanvas());
}
}
private boolean showImage(File file, ImageCanvas imageCanvas) {
if (file != null && file.exists()) {
try {
RenderedImage image = RenderedImageFactory.getInstance(file.toURI().toURL());
Image swtImage = image.getSWTImage();
if (swtImage != null) {
imageCanvas.setImageData(swtImage.getImageData());
return true;
}
} catch (MalformedURLException e) {
Logger.logException(e);
}
}
return false;
}
}