Skip to main content

This CGIT instance is deprecated, and repositories have been moved to Gitlab or Github. See the repository descriptions for specific locations.

summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/ui/internal/adt/actions/CaptureScreenAction.java')
-rw-r--r--bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/ui/internal/adt/actions/CaptureScreenAction.java263
1 files changed, 0 insertions, 263 deletions
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/ui/internal/adt/actions/CaptureScreenAction.java b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/ui/internal/adt/actions/CaptureScreenAction.java
deleted file mode 100644
index c0d0430814..0000000000
--- a/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/ui/internal/adt/actions/CaptureScreenAction.java
+++ /dev/null
@@ -1,263 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007, 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.wst.xsd.ui.internal.adt.actions;
-
-import java.io.File;
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.draw2d.Graphics;
-import org.eclipse.draw2d.IFigure;
-import org.eclipse.draw2d.LayoutManager;
-import org.eclipse.draw2d.SWTGraphics;
-import org.eclipse.draw2d.geometry.Point;
-import org.eclipse.draw2d.geometry.Rectangle;
-import org.eclipse.gef.GraphicalViewer;
-import org.eclipse.gef.LayerConstants;
-import org.eclipse.gef.editparts.AbstractGraphicalEditPart;
-import org.eclipse.gef.editparts.LayerManager;
-import org.eclipse.gef.editparts.ScalableRootEditPart;
-import org.eclipse.jface.action.Action;
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.graphics.GC;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.graphics.ImageData;
-import org.eclipse.swt.graphics.ImageLoader;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.FileDialog;
-import org.eclipse.ui.IEditorPart;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.wst.xsd.ui.internal.adt.editor.Messages;
-import org.eclipse.wst.xsd.ui.internal.design.layouts.FillLayout;
-import org.eclipse.wst.xsd.ui.internal.editor.XSDEditorPlugin;
-
-public class CaptureScreenAction extends Action
-{
-
- private static String LAST_SCREEN_CAPTURE_PATH = System.getProperty("user.home"); //$NON-NLS-1$
- private static String LAST_SCREEN_CAPTURE_FILE_NAME = Messages._UI_ACTION_CAPTURE_SCREEN_DEFAULT_FILE_NAME;
- private static String LAST_SCREEN_CAPTURE_FILE_EXTENSION = ".jpg"; //$NON-NLS-1$
-
- public CaptureScreenAction()
- {
- setText(Messages._UI_CAPTURE_SCREEN_ACTION_TEXT);
- setToolTipText(Messages._UI_CAPTURE_SCREEN_ACTION_TOOLTIPTEXT);
- setImageDescriptor(XSDEditorPlugin.getImageDescriptor("icons/etool16/capturescreen.gif")); //$NON-NLS-1$
- setDisabledImageDescriptor(XSDEditorPlugin.getImageDescriptor("icons/dtool16/capturescreen.gif")); //$NON-NLS-1$
- setAccelerator(SWT.CTRL | SWT.SHIFT | 'X'); //$NON-NLS-1$
- }
-
- public void run()
- {
- ImageExporter imageExporter = new ImageExporter();
- imageExporter.save(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor(), (GraphicalViewer) PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor().getAdapter(GraphicalViewer.class));
- }
-
- public class ImageExporter
- {
- private static final String FILE_FORMATS = "*.jpeg;*.jfif;*.jpg;*.jpe;*.png;*.bmp;*.ico"; //$NON-NLS-1$
- private static final String FILE_SEPARATOR = "file.separator"; //$NON-NLS-1$
-
- public boolean save(IEditorPart editorPart, GraphicalViewer viewer, String saveFilePath, int format)
- {
- Assert.isNotNull(editorPart, "null editorPart passed to ImageExporter.save"); //$NON-NLS-1$
- Assert.isNotNull(viewer, "null viewer passed to ImageExporter.save"); //$NON-NLS-1$
- Assert.isNotNull(saveFilePath, "null saveFilePath passed to ImageExporter.save"); //$NON-NLS-1$
-
- if (format != SWT.IMAGE_BMP && format != SWT.IMAGE_JPEG && format != SWT.IMAGE_ICO && format != SWT.IMAGE_PNG)
- throw new IllegalArgumentException(Messages._UI_ACTION_CAPTURE_SCREEN_FORMAT_NOT_SUPPORTED);
-
- try
- {
- saveEditorContentsAsImage(editorPart, viewer, saveFilePath, format);
- }
- catch (Exception ex)
- {
- MessageDialog.openError(editorPart.getEditorSite().getShell(), Messages._UI_ACTION_CAPTURE_SCREEN_ERROR_TITLE, Messages._UI_ACTION_CAPTURE_SCREEN_ERROR_DESCRIPTION);
- return false;
- }
-
- return true;
- }
-
- public boolean save(IEditorPart editorPart, GraphicalViewer viewer)
- {
- Assert.isNotNull(editorPart, "null editorPart passed to ImageExporter.save"); //$NON-NLS-1$
- Assert.isNotNull(viewer, "null viewer passed to ImageExporter.save"); //$NON-NLS-1$
-
- String saveFilePath = getSaveFilePath(editorPart, viewer);
- if (saveFilePath == null)
- return false;
-
- File file = new File(saveFilePath);
- if (file.exists() && file.isFile())
- {
- if (!MessageDialog.openQuestion(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(), Messages._UI_ACTION_CAPTURE_SCREEN_OVERWRITE_CONFIRMATION_QUESTION, Messages._UI_ACTION_CAPTURE_SCREEN_OVERWRITE_CONFIRMATION.replace("{0}", saveFilePath))) //$NON-NLS-1$
- {
- return false;
- }
- }
-
- int format = -1;
- String saveFilePathLowerCase = saveFilePath.toLowerCase();
- if (saveFilePathLowerCase.endsWith(".jpeg") || saveFilePathLowerCase.endsWith(".jpg") || saveFilePathLowerCase.endsWith(".jpe") || saveFilePathLowerCase.endsWith(".jfif")) //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
- format = SWT.IMAGE_JPEG;
- else if (saveFilePathLowerCase.endsWith(".bmp")) //$NON-NLS-1$
- format = SWT.IMAGE_BMP;
- else if (saveFilePathLowerCase.endsWith(".ico")) //$NON-NLS-1$
- format = SWT.IMAGE_ICO;
- else if (saveFilePathLowerCase.endsWith(".png")) //$NON-NLS-1$
- format = SWT.IMAGE_PNG;
- else if (saveFilePathLowerCase.endsWith(".gif")) //$NON-NLS-1$
- format = SWT.IMAGE_GIF;
-
- if(format != -1) {
- return save(editorPart, viewer, saveFilePath, format);
- } else {
- return false;
- }
-
- }
-
- private String getSaveFilePath(IEditorPart editorPart, GraphicalViewer viewer)
- {
- String filePath;
-
- FileDialog fileDialog = new FileDialog(editorPart.getEditorSite().getShell(), SWT.SAVE);
-
- String[] filterExtensions = new String[] {FILE_FORMATS}; //$NON-NLS-1$
-
- fileDialog.setFileName(obtainNextFileName());
- fileDialog.setFilterExtensions(filterExtensions);
- fileDialog.setFilterNames(new String[] {FILE_FORMATS});
- fileDialog.setText(Messages._UI_ACTION_CAPTURE_SCREEN_FILE_SAVE_DIALOG_TITLE);
-
- filePath = fileDialog.open();
-
- if (filePath != null)
- {
- LAST_SCREEN_CAPTURE_PATH = fileDialog.getFilterPath();
- String fileName = fileDialog.getFileName();
- if (fileName.indexOf('.') > 0) {
- LAST_SCREEN_CAPTURE_FILE_NAME = fileName.substring(0, fileName.indexOf('.'));
- LAST_SCREEN_CAPTURE_FILE_EXTENSION = fileName.substring(fileName.indexOf('.'));
- }
- else
- {
- LAST_SCREEN_CAPTURE_FILE_NAME = fileName;
- LAST_SCREEN_CAPTURE_FILE_EXTENSION = ""; //$NON-NLS-1$
- }
- }
- return filePath;
- }
-
- private void saveEditorContentsAsImage(IEditorPart editorPart, GraphicalViewer viewer, String saveFilePath, int format)
- {
- /*
- * 1. First get the figure whose visuals we want to save as image. So we
- * would like to save the rooteditpart which actually hosts all the
- * printable layers.
- *
- * NOTE: ScalableRootEditPart manages layers and is registered
- * graphicalviewer's editpartregistry with the key LayerManager.ID ...
- * well that is because ScalableRootEditPart manages all layers that are
- * hosted on a FigureCanvas. Many layers exist for doing different things
- */
- ScalableRootEditPart rootEditPart = (ScalableRootEditPart) viewer.getEditPartRegistry().get(LayerManager.ID);
- IFigure rootFigure = ((LayerManager) rootEditPart).getLayer(LayerConstants.PRINTABLE_LAYERS);// rootEditPart.getFigure();
-
- Rectangle rootFigureBounds = new Rectangle(new Point(0,0),rootFigure.getPreferredSize());
- List rootEditPartChildren = rootEditPart.getChildren();
- Iterator rootEditPartChildrenIterator = rootEditPartChildren.iterator();
- while(rootEditPartChildrenIterator.hasNext()) {
- Object object = rootEditPartChildrenIterator.next();
- if(object instanceof AbstractGraphicalEditPart) {
- AbstractGraphicalEditPart childAbstractGraphicalEditPart = (AbstractGraphicalEditPart)object;
- List grandChildren = childAbstractGraphicalEditPart.getChildren();
- Iterator grandChildrenIterator = grandChildren.iterator();
- while(grandChildrenIterator.hasNext()) {
- AbstractGraphicalEditPart grandChildAbstractGraphicalEditPart = (AbstractGraphicalEditPart)grandChildrenIterator.next();
- IFigure figure = grandChildAbstractGraphicalEditPart.getFigure();
- LayoutManager layoutManager = figure.getLayoutManager();
- if(layoutManager instanceof FillLayout) {
- rootFigureBounds = rootFigure.getBounds();
- }
- }
- }
- }
-
- /*
- * 2. Now we want to get the GC associated with the control on which all
- * figures are painted by SWTGraphics. For that first get the SWT Control
- * associated with the viewer on which the rooteditpart is set as contents
- */
- Control figureCanvas = viewer.getControl();
- GC figureCanvasGC = new GC(figureCanvas);
-
- /*
- * 3. Create a new Graphics for an Image onto which we want to paint
- * rootFigure
- */
- Image img = new Image(null, rootFigureBounds.width, rootFigureBounds.height);
- GC imageGC = new GC(img);
- imageGC.setBackground(figureCanvasGC.getBackground());
- imageGC.setForeground(figureCanvasGC.getForeground());
- imageGC.setFont(figureCanvasGC.getFont());
- imageGC.setLineStyle(figureCanvasGC.getLineStyle());
- imageGC.setLineWidth(figureCanvasGC.getLineWidth());
- imageGC.setXORMode(figureCanvasGC.getXORMode());
- Graphics imgGraphics = new SWTGraphics(imageGC);
-
- /* 4. Draw rootFigure onto image. After that image will be ready for save */
- rootFigure.paint(imgGraphics);
-
- /* 5. Save image */
- ImageData[] imgData = new ImageData[1];
- imgData[0] = img.getImageData();
-
- ImageLoader imgLoader = new ImageLoader();
- imgLoader.data = imgData;
- imgLoader.save(saveFilePath, format);
-
- /* release OS resources */
- figureCanvasGC.dispose();
- imageGC.dispose();
- img.dispose();
-
- }
-
- String obtainNextFileName()
- {
-
- int aux = LAST_SCREEN_CAPTURE_FILE_NAME.length() - 1;
- while (Character.isDigit(LAST_SCREEN_CAPTURE_FILE_NAME.charAt(aux)))
- {
- aux--;
- }
-
- String nonNumeratedfileName = LAST_SCREEN_CAPTURE_FILE_NAME.substring(0, aux + 1);
- String filePath = LAST_SCREEN_CAPTURE_PATH + System.getProperty(FILE_SEPARATOR) + nonNumeratedfileName + LAST_SCREEN_CAPTURE_FILE_EXTENSION; //$NON-NLS-1$
-
- int counter = 1;
- File file = new File(filePath);
- while (file.exists())
- {
- filePath = LAST_SCREEN_CAPTURE_PATH + System.getProperty(FILE_SEPARATOR) + nonNumeratedfileName + counter++ + LAST_SCREEN_CAPTURE_FILE_EXTENSION; //$NON-NLS-1$
- file = new File(filePath);
- }
-
- return filePath;
- }
-
- }
-}

Back to the top