Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarkus Tiede2013-11-08 15:51:13 +0000
committerMarkus Tiede2013-11-08 15:51:18 +0000
commitfd896ac6d169e9fd5d4ec3cf2f88c36d9cb721c2 (patch)
tree6288ca19614a6f2ec6c41ddd2ce2f74d873d86f8
parentf69bc751c6fcaf455230fd47b360c575a2539de2 (diff)
downloadorg.eclipse.jubula.core-fd896ac6d169e9fd5d4ec3cf2f88c36d9cb721c2.tar.gz
org.eclipse.jubula.core-fd896ac6d169e9fd5d4ec3cf2f88c36d9cb721c2.tar.xz
org.eclipse.jubula.core-fd896ac6d169e9fd5d4ec3cf2f88c36d9cb721c2.zip
Sprint task - patch for enhancement http://bugs.eclipse.org/418883 reviewed, adjusted and applied.
-rw-r--r--org.eclipse.jubula.client.ui.rcp/plugin.xml27
-rw-r--r--org.eclipse.jubula.client.ui.rcp/src/org/eclipse/jubula/client/ui/rcp/handlers/SaveImageAsHandler.java84
-rw-r--r--org.eclipse.jubula.client.ui.rcp/src/org/eclipse/jubula/client/ui/rcp/propertytester/ImageViewPropertyTester.java53
-rw-r--r--org.eclipse.jubula.client.ui/META-INF/MANIFEST.MF1
-rw-r--r--org.eclipse.jubula.client.ui/plugin.xml8
-rw-r--r--org.eclipse.jubula.client.ui/src/org/eclipse/jubula/client/ui/constants/Constants.java7
-rw-r--r--org.eclipse.jubula.client.ui/src/org/eclipse/jubula/client/ui/views/imageview/ImageProvider.java11
-rw-r--r--org.eclipse.jubula.client.ui/src/org/eclipse/jubula/client/ui/views/imageview/ImageView.java73
-rw-r--r--org.eclipse.jubula.client.ui/src/org/eclipse/jubula/client/ui/views/imageview/ImageViewData.java78
-rw-r--r--org.eclipse.jubula.client.ui/src/org/eclipse/jubula/client/ui/views/imageview/TestResultNodeImageProvider.java43
10 files changed, 228 insertions, 157 deletions
diff --git a/org.eclipse.jubula.client.ui.rcp/plugin.xml b/org.eclipse.jubula.client.ui.rcp/plugin.xml
index 74c373da4..c40a54358 100644
--- a/org.eclipse.jubula.client.ui.rcp/plugin.xml
+++ b/org.eclipse.jubula.client.ui.rcp/plugin.xml
@@ -144,13 +144,6 @@
properties="isPasteAllowed"
type="java.util.Collection">
</propertyTester>
- <propertyTester
- class="org.eclipse.jubula.client.ui.rcp.propertytester.ImageViewPropertyTester"
- id="org.eclipse.jubula.client.ui.rcp.propertytester.ImageViewPropertyTester"
- namespace="org.eclipse.jubula.client.ui.rcp.ImageView"
- properties="hasImage"
- type="org.eclipse.jubula.client.core.model.TestResultNode">
- </propertyTester>
</extension>
<extension
id="jbMarker"
@@ -1979,21 +1972,11 @@
class="org.eclipse.jubula.client.ui.rcp.handlers.SaveImageAsHandler"
commandId="org.eclipse.jubula.client.ui.commands.SaveImageAs">
<enabledWhen>
- <and>
- <count
- value="1">
- </count>
- <iterate
- ifEmpty="false"
- operator="or">
- <and>
- <instanceof
- value="org.eclipse.jubula.client.core.model.TestResultNode">
- </instanceof>
- <test property="org.eclipse.jubula.client.ui.rcp.ImageView.hasImage"/>
- </and>
- </iterate>
- </and>
+ <with variable="activeContexts">
+ <iterate ifEmpty="false" operator="or">
+ <equals value="org.eclipse.jubula.client.ui.contexts.ImageViewDisplaysImage"/>
+ </iterate>
+ </with>
</enabledWhen>
</handler>
<handler
diff --git a/org.eclipse.jubula.client.ui.rcp/src/org/eclipse/jubula/client/ui/rcp/handlers/SaveImageAsHandler.java b/org.eclipse.jubula.client.ui.rcp/src/org/eclipse/jubula/client/ui/rcp/handlers/SaveImageAsHandler.java
index 6f0ca8f64..f910f493d 100644
--- a/org.eclipse.jubula.client.ui.rcp/src/org/eclipse/jubula/client/ui/rcp/handlers/SaveImageAsHandler.java
+++ b/org.eclipse.jubula.client.ui.rcp/src/org/eclipse/jubula/client/ui/rcp/handlers/SaveImageAsHandler.java
@@ -12,23 +12,17 @@ package org.eclipse.jubula.client.ui.rcp.handlers;
import org.apache.commons.lang.StringUtils;
import org.eclipse.core.commands.ExecutionEvent;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jubula.client.core.model.TestResultNode;
+import org.eclipse.jubula.client.ui.constants.Constants;
import org.eclipse.jubula.client.ui.handlers.AbstractSelectionBasedHandler;
-import org.eclipse.jubula.client.ui.utils.ErrorHandlingUtil;
-import org.eclipse.jubula.tools.messagehandling.MessageIDs;
+import org.eclipse.jubula.client.ui.views.imageview.ImageView;
+import org.eclipse.jubula.client.ui.views.imageview.ImageViewData;
import org.eclipse.swt.SWT;
+import org.eclipse.swt.graphics.ImageData;
+import org.eclipse.swt.graphics.ImageLoader;
import org.eclipse.swt.widgets.FileDialog;
+import org.eclipse.ui.IViewPart;
import org.eclipse.ui.handlers.HandlerUtil;
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.OutputStream;
-import java.text.DateFormat;
-import java.text.SimpleDateFormat;
-
/**
* @author BREDEX GmbH
* @created 11.09.2013
@@ -36,62 +30,40 @@ import java.text.SimpleDateFormat;
public class SaveImageAsHandler extends AbstractSelectionBasedHandler {
/**
- * suggest only 255 character long file names
- */
- private static final int MAX_FILE_NAME_LENGTH = 255;
-
- /**
* {@inheritDoc}
*/
protected Object executeImpl(ExecutionEvent event) {
- IStructuredSelection structuredSelection = getSelection();
- Object selectedObject = structuredSelection.getFirstElement();
- if (selectedObject instanceof TestResultNode) {
- TestResultNode result = (TestResultNode) selectedObject;
-
- // necessary to get test suite name
- TestResultNode parent = result;
- while (parent.getParent() != null) {
- parent = parent.getParent();
- }
-
- // get the date of test from time stamp
- DateFormat format = new SimpleDateFormat("yyyy-MM-dd"); //$NON-NLS-1$
- String date = format.format(result.getTimeStamp());
-
- FileDialog saveDialog = new FileDialog(HandlerUtil
- .getActiveWorkbenchWindow(event).getShell(), SWT.SAVE);
- String fileName = "ErrorInTest_" + parent.getName() + "_" //$NON-NLS-1$ //$NON-NLS-2$
- + result.getNode().getName();
- // eliminate whitespaces and characters which are illegal in a file name
- fileName = fileName.replaceAll("[\\s\\?\\\\/:|<>\\*\"]", ""); //$NON-NLS-1$ //$NON-NLS-2$
-
- String fileEnding = "_" + date + ".png"; //$NON-NLS-1$ //$NON-NLS-2$
- fileName = StringUtils.substring(fileName, 0,
- MAX_FILE_NAME_LENGTH
+ IViewPart view = HandlerUtil.getActiveSite(event).
+ getPage().findView(Constants.IMAGEVIEW_ID);
+
+ if (view != null && view instanceof ImageView) {
+ ImageView imageView = (ImageView)view;
+ int maxFileNameLength = 255;
+
+ ImageViewData imageViewData = imageView.getImageViewData();
+ String imageName = imageViewData.getImageName();
+ String imageDate = imageViewData.getImageDate();
+
+ FileDialog saveDialog = new FileDialog(getActiveShell(), SWT.SAVE);
+ String fileEnding = "_" + imageDate + ".png"; //$NON-NLS-1$ //$NON-NLS-2$
+ String fileName = StringUtils.substring(imageName, 0,
+ maxFileNameLength
- fileEnding.length()
- saveDialog.getFilterPath().length());
fileName = fileName + fileEnding;
+
saveDialog.setFileName(fileName);
saveDialog.setFilterExtensions(new String[] { "*.png" }); //$NON-NLS-1$
saveDialog.setOverwrite(true);
String path = saveDialog.open();
+ ImageData imageData = imageViewData.getImage().getImageData();
+
if (path != null) {
- if (result.getScreenshot() != null) {
- try {
- File file = new File(path);
- OutputStream out = new FileOutputStream(file);
- out.write(result.getScreenshot());
- out.flush();
- out.close();
- } catch (FileNotFoundException e) {
- ErrorHandlingUtil.createMessageDialog(MessageIDs.
- E_FILE_NO_PERMISSION);
- } catch (IOException e) {
- ErrorHandlingUtil.createMessageDialog(MessageIDs.
- E_IO_EXCEPTION);
- }
+ if (imageData != null) {
+ ImageLoader loader = new ImageLoader();
+ loader.data = new ImageData[] { imageData };
+ loader.save(path, SWT.IMAGE_PNG);
}
}
}
diff --git a/org.eclipse.jubula.client.ui.rcp/src/org/eclipse/jubula/client/ui/rcp/propertytester/ImageViewPropertyTester.java b/org.eclipse.jubula.client.ui.rcp/src/org/eclipse/jubula/client/ui/rcp/propertytester/ImageViewPropertyTester.java
deleted file mode 100644
index e4d7928b1..000000000
--- a/org.eclipse.jubula.client.ui.rcp/src/org/eclipse/jubula/client/ui/rcp/propertytester/ImageViewPropertyTester.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2013 BREDEX GmbH.
- * 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:
- * BREDEX GmbH - initial API and implementation and/or initial documentation
- *******************************************************************************/
-package org.eclipse.jubula.client.ui.rcp.propertytester;
-
-import org.eclipse.jubula.client.core.model.TestResultNode;
-import org.eclipse.jubula.client.core.propertytester.AbstractBooleanPropertyTester;
-
-/**
- * PropertyTester for TestResultSummary.
- *
- * @author BREDEX GmbH
- * @created Sep 13, 2013
- */
-public class ImageViewPropertyTester
- extends AbstractBooleanPropertyTester {
- /** the id of the "hasMonitoringData" property */
- private static final String HAS_IMAGE = "hasImage"; //$NON-NLS-1$
-
- /**
- * <code>PROPERTIES</code>
- */
- private static final String[] PROPERTIES = new String[] {
- HAS_IMAGE };
-
- /** {@inheritDoc} */
- public boolean testImpl(Object receiver, String property, Object[] args) {
- if (property.equals(HAS_IMAGE)) {
- TestResultNode node = (TestResultNode) receiver;
- if (node.getScreenshot() != null) {
- return true;
- }
- }
- return false;
- }
-
- /** {@inheritDoc} */
- public Class<? extends Object> getType() {
- return TestResultNode.class;
- }
-
- /** {@inheritDoc} */
- public String[] getProperties() {
- return PROPERTIES;
- }
-}
diff --git a/org.eclipse.jubula.client.ui/META-INF/MANIFEST.MF b/org.eclipse.jubula.client.ui/META-INF/MANIFEST.MF
index b0126821b..f78195a27 100644
--- a/org.eclipse.jubula.client.ui/META-INF/MANIFEST.MF
+++ b/org.eclipse.jubula.client.ui/META-INF/MANIFEST.MF
@@ -46,5 +46,6 @@ Export-Package: org.eclipse.jubula.client.ui.adapter,
org.eclipse.jubula.client.ui.utils,
org.eclipse.jubula.client.ui.validator.cell,
org.eclipse.jubula.client.ui.views,
+ org.eclipse.jubula.client.ui.views.imageview,
org.eclipse.jubula.client.ui.widgets
Bundle-Activator: org.eclipse.jubula.client.ui.Plugin
diff --git a/org.eclipse.jubula.client.ui/plugin.xml b/org.eclipse.jubula.client.ui/plugin.xml
index 478e5ce43..d557c7df5 100644
--- a/org.eclipse.jubula.client.ui/plugin.xml
+++ b/org.eclipse.jubula.client.ui/plugin.xml
@@ -351,4 +351,12 @@
<adapter type="org.eclipse.ui.views.properties.IPropertySource" />
</factory>
</extension>
+ <extension
+ point="org.eclipse.ui.contexts">
+ <context
+ id="org.eclipse.jubula.client.ui.contexts.ImageViewDisplaysImage"
+ name="org.eclipse.jubula.client.ui.contexts.ImageViewDisplaysImage"
+ parentId="org.eclipse.ui.contexts.dialogAndWindow">
+ </context>
+ </extension>
</plugin>
diff --git a/org.eclipse.jubula.client.ui/src/org/eclipse/jubula/client/ui/constants/Constants.java b/org.eclipse.jubula.client.ui/src/org/eclipse/jubula/client/ui/constants/Constants.java
index 1ac7556e8..766f2f447 100644
--- a/org.eclipse.jubula.client.ui/src/org/eclipse/jubula/client/ui/constants/Constants.java
+++ b/org.eclipse.jubula.client.ui/src/org/eclipse/jubula/client/ui/constants/Constants.java
@@ -129,6 +129,13 @@ public interface Constants {
"org.eclipse.jubula.client.ui.rcp.views.RunningAuts"; //$NON-NLS-1$
// -------------------------------------------------------------
+ // Keys for Contexts
+ // -------------------------------------------------------------
+ /** if there is an image displayed in the image view */
+ public static final String IMAGEVIEW_DISPLAYS_IMAGE =
+ "org.eclipse.jubula.client.ui.contexts.ImageViewDisplaysImage"; //$NON-NLS-1$
+
+ // -------------------------------------------------------------
// decorator ids
// -------------------------------------------------------------
/** ID of the completeness check decorator */
diff --git a/org.eclipse.jubula.client.ui/src/org/eclipse/jubula/client/ui/views/imageview/ImageProvider.java b/org.eclipse.jubula.client.ui/src/org/eclipse/jubula/client/ui/views/imageview/ImageProvider.java
index e9a0f6c6b..43cb13015 100644
--- a/org.eclipse.jubula.client.ui/src/org/eclipse/jubula/client/ui/views/imageview/ImageProvider.java
+++ b/org.eclipse.jubula.client.ui/src/org/eclipse/jubula/client/ui/views/imageview/ImageProvider.java
@@ -11,7 +11,6 @@
package org.eclipse.jubula.client.ui.views.imageview;
import org.eclipse.swt.graphics.Device;
-import org.eclipse.swt.graphics.Image;
/**
* @author BREDEX GmbH
@@ -19,14 +18,14 @@ import org.eclipse.swt.graphics.Image;
*/
public interface ImageProvider {
/**
- * This method returns an {@link Image}. The implementor must return an
- * image that can be disposed() by the caller. The implementor is not given
- * any notification that the dispose is occurring.
+ * This method returns an {@link ImageViewData}. The implementor must return
+ * an ImageViewData with an image that can be disposed() by the caller. The
+ * implementor is not given any notification that the dispose is occurring.
*
* @param target
* The device the image will be displayed on.
*
- * @return {@link Image}
+ * @return {@link ImageViewData}
*/
- Image getImage(Device target);
+ ImageViewData getImageViewData(Device target);
}
diff --git a/org.eclipse.jubula.client.ui/src/org/eclipse/jubula/client/ui/views/imageview/ImageView.java b/org.eclipse.jubula.client.ui/src/org/eclipse/jubula/client/ui/views/imageview/ImageView.java
index c06b2f62d..8849880f5 100644
--- a/org.eclipse.jubula.client.ui/src/org/eclipse/jubula/client/ui/views/imageview/ImageView.java
+++ b/org.eclipse.jubula.client.ui/src/org/eclipse/jubula/client/ui/views/imageview/ImageView.java
@@ -17,10 +17,12 @@ import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Platform;
import org.eclipse.core.runtime.Status;
import org.eclipse.core.runtime.jobs.Job;
+import org.eclipse.jface.action.MenuManager;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.ISelectionChangedListener;
import org.eclipse.jface.viewers.ISelectionProvider;
import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jubula.client.ui.constants.Constants;
import org.eclipse.jubula.client.ui.i18n.Messages;
import org.eclipse.jubula.client.ui.utils.JobUtils;
import org.eclipse.jubula.client.ui.views.IJBPart;
@@ -34,16 +36,19 @@ import org.eclipse.swt.dnd.DragSourceListener;
import org.eclipse.swt.dnd.ImageTransfer;
import org.eclipse.swt.dnd.Transfer;
import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.graphics.Rectangle;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Menu;
import org.eclipse.ui.ISelectionListener;
import org.eclipse.ui.ISelectionService;
import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.contexts.IContextActivation;
+import org.eclipse.ui.contexts.IContextService;
import org.eclipse.ui.part.ViewPart;
import org.eclipse.ui.views.properties.IPropertySheetPage;
-import org.eclipse.jface.action.MenuManager;
/**
@@ -59,8 +64,8 @@ public class ImageView extends ViewPart implements IJBPart, ISelectionProvider {
/**
* the image
*/
- private Image m_img;
-
+ private ImageViewData m_imgData;
+
/**
* <code>m_oldSelection</code>
*/
@@ -77,6 +82,11 @@ public class ImageView extends ViewPart implements IJBPart, ISelectionProvider {
private Composite m_child;
/**
+ * context activation
+ */
+ private IContextActivation m_contextActivation;
+
+ /**
* The selectionListener listens for changes in the workbench's selection
* service.
*/
@@ -210,22 +220,45 @@ public class ImageView extends ViewPart implements IJBPart, ISelectionProvider {
* @param provider the provider
*/
protected void setImage(final ImageProvider provider) {
- m_scrollComposite.getDisplay().syncExec(new Runnable() {
-
+ final Display display = m_scrollComposite.getDisplay();
+ display.syncExec(new Runnable() {
public void run() {
clearImage();
- m_img = provider.getImage(m_scrollComposite.getDisplay());
- m_imgWidget.setImage(m_img);
- if (m_img != null) {
- m_imgWidget.setSize(
- m_img.getBounds().width,
- m_img.getBounds().height);
+ m_imgData = provider.getImageViewData(display);
+ if (m_imgData != null) {
+ Image img = m_imgData.getImage();
+ m_imgWidget.setImage(img);
+ if (img != null) {
+ Rectangle bounds = img.getBounds();
+ m_imgWidget.setSize(bounds.width, bounds.height);
+ setStatusOfImageContext(true);
+ }
+ m_scrollComposite.setMinSize(m_child.computeSize(
+ SWT.DEFAULT, SWT.DEFAULT));
}
- m_scrollComposite.setMinSize(m_child.computeSize(SWT.DEFAULT,
- SWT.DEFAULT));
}
});
}
+
+ /**
+ * set the status of the image context - does nothing if context service is
+ * not available
+ *
+ * @param active
+ * the status to set
+ */
+ private void setStatusOfImageContext(boolean active) {
+ IContextService cs = (IContextService) getSite().getWorkbenchWindow()
+ .getService(IContextService.class);
+ if (cs != null) {
+ if (active) {
+ m_contextActivation = cs.activateContext(
+ Constants.IMAGEVIEW_DISPLAYS_IMAGE);
+ } else {
+ cs.deactivateContext(m_contextActivation);
+ }
+ }
+ }
/**
* make image invisible and dispose it
@@ -236,6 +269,8 @@ public class ImageView extends ViewPart implements IJBPart, ISelectionProvider {
if (oldImage != null) {
oldImage.dispose();
}
+
+ setStatusOfImageContext(false);
}
/**
@@ -243,8 +278,8 @@ public class ImageView extends ViewPart implements IJBPart, ISelectionProvider {
*/
public void dispose() {
getSelectionService().removeSelectionListener(m_selectionListener);
- if (m_img != null) {
- m_img.dispose();
+ if (m_imgData != null) {
+ m_imgData.dispose();
}
super.dispose();
}
@@ -300,4 +335,12 @@ public class ImageView extends ViewPart implements IJBPart, ISelectionProvider {
}
return super.getAdapter(key);
}
+
+ /**
+ * returns the data of the displayed image
+ * @return the image data
+ */
+ public ImageViewData getImageViewData() {
+ return m_imgData;
+ }
}
diff --git a/org.eclipse.jubula.client.ui/src/org/eclipse/jubula/client/ui/views/imageview/ImageViewData.java b/org.eclipse.jubula.client.ui/src/org/eclipse/jubula/client/ui/views/imageview/ImageViewData.java
new file mode 100644
index 000000000..3e5dcd47f
--- /dev/null
+++ b/org.eclipse.jubula.client.ui/src/org/eclipse/jubula/client/ui/views/imageview/ImageViewData.java
@@ -0,0 +1,78 @@
+/*******************************************************************************
+ * Copyright (c) 2013 BREDEX GmbH.
+ * 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:
+ * BREDEX GmbH - initial API and implementation and/or initial documentation
+ *******************************************************************************/
+package org.eclipse.jubula.client.ui.views.imageview;
+
+import org.eclipse.swt.graphics.Image;
+
+/**
+ * Class representing an image from the image view and its data
+ * @author BREDEX GmbH
+ * @created Nov 08, 2013
+ */
+public class ImageViewData {
+ /**
+ * the image
+ */
+ private Image m_img;
+
+ /**
+ * the name of the image
+ */
+ private String m_imgName;
+
+ /**
+ * the date of the image
+ */
+ private String m_imgDate;
+
+ /**
+ * constructor
+ * @param img the image
+ * @param name the name of the image
+ * @param date the date of the image
+ */
+ public ImageViewData(Image img, String name, String date) {
+ m_img = img;
+ m_imgName = name;
+ m_imgDate = date;
+ }
+
+ /**
+ * returns the image
+ * @return the image
+ */
+ public Image getImage() {
+ return m_img;
+ }
+
+ /**
+ * returns the name of the image
+ * @return the name of the image
+ */
+ public String getImageName() {
+ return m_imgName;
+ }
+
+ /**
+ * returns the date of the image
+ * @return the date of the image
+ */
+ public String getImageDate() {
+ return m_imgDate;
+ }
+
+ /**
+ * Disposes the image.
+ */
+ public void dispose() {
+ m_img.dispose();
+ }
+}
diff --git a/org.eclipse.jubula.client.ui/src/org/eclipse/jubula/client/ui/views/imageview/TestResultNodeImageProvider.java b/org.eclipse.jubula.client.ui/src/org/eclipse/jubula/client/ui/views/imageview/TestResultNodeImageProvider.java
index b5a84ceae..7850af73e 100644
--- a/org.eclipse.jubula.client.ui/src/org/eclipse/jubula/client/ui/views/imageview/TestResultNodeImageProvider.java
+++ b/org.eclipse.jubula.client.ui/src/org/eclipse/jubula/client/ui/views/imageview/TestResultNodeImageProvider.java
@@ -10,6 +10,9 @@
*******************************************************************************/
package org.eclipse.jubula.client.ui.views.imageview;
+import java.text.DateFormat;
+import java.text.SimpleDateFormat;
+
import org.eclipse.jubula.client.core.model.TestResultNode;
import org.eclipse.jubula.client.ui.utils.ImageUtils;
import org.eclipse.swt.graphics.Device;
@@ -33,15 +36,45 @@ public class TestResultNodeImageProvider implements ImageProvider {
public TestResultNodeImageProvider(TestResultNode testresultnode) {
m_testResultNode = testresultnode;
}
-
+
/**
* {@inheritDoc}
*/
- public Image getImage(Device target) {
- if (m_testResultNode.getScreenshot() != null) {
- return new Image(target, ImageUtils.getImageData(m_testResultNode
- .getScreenshot()));
+ public ImageViewData getImageViewData(Device target) {
+ byte[] screenshot = m_testResultNode.getScreenshot();
+ if (screenshot != null) {
+ Image img = new Image(target, ImageUtils.getImageData(screenshot));
+ return new ImageViewData(img, generateImageName(),
+ generateImageDate());
}
return null;
}
+
+ /**
+ * generates the name of the image
+ * @return the name of the image
+ */
+ private String generateImageName() {
+ TestResultNode parent = m_testResultNode;
+ while (parent.getParent() != null) {
+ parent = parent.getParent();
+ }
+
+ String imgName = "ErrorInTest_" + parent.getName() + "_" //$NON-NLS-1$ //$NON-NLS-2$
+ + m_testResultNode.getNode().getName();
+ // eliminate whitespaces and characters which are illegal in a file name
+ imgName = imgName.replaceAll("[\\s\\?\\\\/:|<>\\*\"]", ""); //$NON-NLS-1$ //$NON-NLS-2$
+ return imgName;
+ }
+
+ /**
+ * generates the date of the image
+ * @return the date of the image
+ */
+ private String generateImageDate() {
+ // get the date of test from time stamp
+ DateFormat format = new SimpleDateFormat("yyyy-MM-dd_HH-mm-ss-SSS"); //$NON-NLS-1$
+ String date = format.format(m_testResultNode.getTimeStamp());
+ return date;
+ }
}

Back to the top