| /****************************************************************************** |
| * Copyright (c) 2006, 2009 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.gmf.tests.runtime.diagram.ui.render.util; |
| |
| import java.io.File; |
| import java.io.IOException; |
| |
| import junit.framework.Test; |
| import junit.framework.TestSuite; |
| |
| import org.eclipse.core.runtime.CoreException; |
| import org.eclipse.core.runtime.IPath; |
| import org.eclipse.core.runtime.IProgressMonitor; |
| import org.eclipse.core.runtime.NullProgressMonitor; |
| import org.eclipse.core.runtime.Path; |
| import org.eclipse.draw2d.ColorConstants; |
| import org.eclipse.draw2d.geometry.Point; |
| import org.eclipse.gmf.runtime.diagram.core.preferences.PreferencesHint; |
| import org.eclipse.gmf.runtime.diagram.core.util.ViewType; |
| import org.eclipse.gmf.runtime.diagram.ui.OffscreenEditPartFactory; |
| import org.eclipse.gmf.runtime.diagram.ui.editparts.DiagramEditPart; |
| import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart; |
| import org.eclipse.gmf.runtime.diagram.ui.geoshapes.internal.providers.GeoshapeConstants; |
| import org.eclipse.gmf.runtime.diagram.ui.image.ImageFileFormat; |
| import org.eclipse.gmf.runtime.diagram.ui.render.util.CopyToImageUtil; |
| import org.eclipse.gmf.runtime.diagram.ui.requests.ChangePropertyValueRequest; |
| import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewRequest; |
| import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewRequest.ViewDescriptor; |
| import org.eclipse.gmf.runtime.draw2d.ui.figures.FigureUtilities; |
| import org.eclipse.gmf.runtime.draw2d.ui.render.RenderedImage; |
| import org.eclipse.gmf.runtime.draw2d.ui.render.factory.RenderedImageFactory; |
| import org.eclipse.gmf.runtime.emf.core.util.PackageUtil; |
| import org.eclipse.gmf.runtime.notation.Diagram; |
| import org.eclipse.gmf.runtime.notation.Node; |
| import org.eclipse.gmf.runtime.notation.NotationPackage; |
| import org.eclipse.gmf.runtime.notation.datatype.GradientData; |
| import org.eclipse.gmf.tests.runtime.diagram.ui.AbstractTestBase; |
| import org.eclipse.gmf.tests.runtime.diagram.ui.logic.LogicTestFixture; |
| import org.eclipse.swt.widgets.Shell; |
| |
| public class CopyToImageUtilTests |
| extends AbstractTestBase { |
| |
| public CopyToImageUtilTests(String arg0) { |
| super(arg0); |
| } |
| |
| /* |
| * (non-Javadoc) |
| * |
| * @see org.eclipse.gmf.tests.runtime.diagram.ui.AbstractTestBase#setTestFixture() |
| */ |
| protected void setTestFixture() { |
| testFixture = new LogicTestFixture(); |
| } |
| |
| @Override |
| protected void setUp() throws Exception { |
| super.setUp(); |
| |
| DiagramEditPart dgmEP = getDiagramEditPart(); |
| |
| CreateViewRequest shapeRequest = |
| new CreateViewRequest(new ViewDescriptor(null, Node.class, ViewType.NOTE, dgmEP.getDiagramPreferencesHint())); |
| |
| shapeRequest.setLocation(new Point(300, 300)); |
| getCommandStack().execute(getDiagramEditPart().getCommand(shapeRequest)); |
| |
| shapeRequest = |
| new CreateViewRequest(new ViewDescriptor(null, Node.class, GeoshapeConstants.TOOL_CYLINDER, dgmEP.getDiagramPreferencesHint())); |
| |
| shapeRequest.setLocation(new Point(400, 400)); |
| getCommandStack().execute(getDiagramEditPart().getCommand(shapeRequest)); |
| |
| IGraphicalEditPart cylinderEP = getDiagramEditPart().getChildBySemanticHint(GeoshapeConstants.TOOL_CYLINDER); |
| |
| assertNotNull(cylinderEP); |
| |
| String propertyID = PackageUtil.getID(NotationPackage.eINSTANCE.getFillStyle_Gradient()); |
| String propertyName = PackageUtil.getDisplayName(NotationPackage.eINSTANCE.getFillStyle_Gradient()); |
| GradientData gradientData = new GradientData(); |
| gradientData.setGradientColor1(FigureUtilities.colorToInteger(ColorConstants.darkBlue)); |
| gradientData.setGradientColor2(FigureUtilities.colorToInteger(ColorConstants.white)); |
| ChangePropertyValueRequest request = new ChangePropertyValueRequest(propertyName, propertyID, gradientData); |
| getCommandStack().execute(cylinderEP.getCommand(request)); |
| |
| } |
| |
| public static Test suite() { |
| return new TestSuite(CopyToImageUtilTests.class); |
| } |
| |
| public void testCopyToImageUtilTest_BMP() |
| throws Exception { |
| copyToImageTestForFormat(".bmp", ImageFileFormat.BMP);//$NON-NLS-1$ |
| } |
| |
| public void testCopyToImageUtilTest_GIF() |
| throws Exception { |
| copyToImageTestForFormat(".gif", ImageFileFormat.GIF);//$NON-NLS-1$ |
| } |
| |
| public void testCopyToImageUtilTest_JPEG() |
| throws Exception { |
| copyToImageTestForFormat(".jpeg", ImageFileFormat.JPEG);//$NON-NLS-1$ |
| } |
| |
| public void testCopyToImageUtilTest_JPG() |
| throws Exception { |
| copyToImageTestForFormat(".jpg", ImageFileFormat.JPG);//$NON-NLS-1$ |
| } |
| |
| public void testCopyToImageUtilTest_PNG() |
| throws Exception { |
| copyToImageTestForFormat(".png", ImageFileFormat.PNG);//$NON-NLS-1$ |
| } |
| |
| public void testCopyToImageOffscreenUtilTest_BMP() |
| throws Exception { |
| copyToImageOffscreenTestForFormat(".bmp", ImageFileFormat.BMP);//$NON-NLS-1$ |
| } |
| |
| public void testCopyToImageOffscreenUtilTest_GIF() |
| throws Exception { |
| copyToImageOffscreenTestForFormat(".gif", ImageFileFormat.GIF);//$NON-NLS-1$ |
| } |
| |
| public void testCopyToImageOffscreenUtilTest_JPEG() |
| throws Exception { |
| copyToImageOffscreenTestForFormat(".jpeg", ImageFileFormat.JPEG);//$NON-NLS-1$ |
| } |
| |
| public void testCopyToImageOffscreenUtilTest_JPG() |
| throws Exception { |
| copyToImageOffscreenTestForFormat(".jpg", ImageFileFormat.JPG);//$NON-NLS-1$ |
| } |
| |
| public void testCopyToImageOffscreenUtilTest_PNG() |
| throws Exception { |
| copyToImageOffscreenTestForFormat(".png", ImageFileFormat.PNG);//$NON-NLS-1$ |
| } |
| |
| public void testCopyToImageUtilTest_SVG() throws Exception { |
| copyToImageTestForFormat(".svg", ImageFileFormat.SVG);//$NON-NLS-1$ |
| } |
| |
| private void copyToImageTestForFormat(String suffix, ImageFileFormat type) |
| throws IOException, CoreException { |
| IProgressMonitor monitor = new NullProgressMonitor(); |
| File file = File.createTempFile("test", suffix);//$NON-NLS-1$ |
| IPath tmpDest = new Path(file.getPath()); |
| |
| // export to each file type |
| new CopyToImageUtil().copyToImage(getDiagramEditPart(), tmpDest, type, |
| monitor); |
| |
| RenderedImage ri = RenderedImageFactory.getInstance(tmpDest.toString()); |
| file.delete(); |
| assertTrue("RenderedImage is null", ri != null);//$NON-NLS-1$ |
| assertTrue("SWTImage is null", ri.getSWTImage() != null);//$NON-NLS-1$ |
| /* |
| * Entries in the RenederdImageFactory#instanceMap may not get a chance to be garbage collected. |
| * Hence, schedule a garbage collection. |
| */ |
| System.gc(); |
| } |
| |
| private void copyToImageOffscreenTestForFormat(String suffix, |
| ImageFileFormat type) throws IOException, CoreException { |
| IProgressMonitor monitor = new NullProgressMonitor(); |
| File file = File.createTempFile("test", suffix);//$NON-NLS-1$ |
| IPath tmpDest = new Path(file.getPath()); |
| |
| // export to each file type |
| Diagram diagram = getDiagram(); |
| PreferencesHint hint = getDiagramEditPart().getDiagramPreferencesHint(); |
| Shell shell = new Shell(); |
| try { |
| DiagramEditPart diagramEditPart = OffscreenEditPartFactory |
| .getInstance().createDiagramEditPart(diagram, shell, hint); |
| assertNotNull( |
| "Offsreen editpart factory failed to generate diagram editpart. Diagram EditPart is null.", //$NON-NLS-1$ |
| diagramEditPart); |
| new CopyToImageUtil().copyToImage(diagramEditPart, tmpDest, type, |
| monitor); |
| } finally { |
| shell.dispose(); |
| RenderedImage ri = RenderedImageFactory.getInstance(tmpDest |
| .toString()); |
| file.delete(); |
| assertTrue("RenderedImage is null", ri != null);//$NON-NLS-1$ |
| assertTrue("SWTImage is null", ri.getSWTImage() != null);//$NON-NLS-1$ |
| /* |
| * Entries in the RenederdImageFactory#instanceMap may not get a chance to be garbage collected. |
| * Hence, schedule a garbage collection. |
| */ |
| System.gc(); |
| } |
| } |
| |
| } |