hierarchyviewerlib.actions.SaveHierarchyViewPictureAction.java Source code

Java tutorial

Introduction

Here is the source code for hierarchyviewerlib.actions.SaveHierarchyViewPictureAction.java

Source

/*
 * Copyright (c) Shanghai Zhiping Technology Co.,Limited
 * Author: Binhua Liu
 * Web Site: www.vowei.com
 * License: GPL v3 (http://www.gnu.org/copyleft/gpl.html)
 */

package hierarchyviewerlib.actions;

import org.eclipse.jface.action.Action;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.graphics.ImageData;
import org.eclipse.swt.graphics.ImageLoader;
import org.eclipse.swt.widgets.FileDialog;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.ui.IWorkbenchWindow;

import hierarchyviewerlib.common.CustomString;
import hierarchyviewerlib.common.IConManager;
import hierarchyviewerlib.models.TreeViewModel;
import hierarchyviewerlib.uicomponents.TreeView;
import hierarchyviewerlib.uiutilities.DrawableViewNode;

public class SaveHierarchyViewPictureAction extends Action {
    private final IWorkbenchWindow window;

    public SaveHierarchyViewPictureAction(IWorkbenchWindow window) {
        setText(CustomString.getString("ACTION_SAVE_HIERARCHY"));
        this.window = window;
        setId(ICommandIds.CMD_SAVE_PICTURE);
        // Associate the action with a pre-defined command, to allow key bindings.
        setActionDefinitionId(ICommandIds.CMD_SAVE_PICTURE);
        setImageDescriptor(ImageDescriptor.createFromImage(IConManager.SAVE_HIERARCHY));
    }

    @Override
    public void run() {

        Shell shell = window.getWorkbench().getActiveWorkbenchWindow().getShell();
        FileDialog fileDialog = new FileDialog(shell, SWT.SAVE);
        fileDialog.setText(CustomString.getString("ACTION_PICTURE_SAVE_AS"));
        fileDialog.setFilterExtensions(new String[] { "*.png", "*.bmp", "*.jpg", "*.gif" });
        fileDialog.setFilterNames(new String[] { "PNG(*.png)", "Bitmap(*.bmp)", "JPEG(*.jpg),", "GIF(*.gif)" });
        fileDialog.setFileName("hierarchyview.png");
        String selected = fileDialog.open();
        if (selected == null)
            return;

        save(selected);
    }

    public void save(String path) {
        int dotIndex = path.lastIndexOf('.');
        int imageType = SWT.IMAGE_BMP;
        if (dotIndex < 0) {
            imageType = SWT.IMAGE_BMP;
        } else {
            String extension = path.substring(dotIndex);
            if (extension.equalsIgnoreCase(".png")) {
                imageType = SWT.IMAGE_PNG;
            } else if (extension.equalsIgnoreCase(".bmp")) {
                imageType = SWT.IMAGE_BMP;
            } else if (extension.equalsIgnoreCase(".jpg") || extension.equalsIgnoreCase(".jpeg")
                    || extension.equalsIgnoreCase(".jpe")) {
                imageType = SWT.IMAGE_JPEG;
            } else if (extension.equalsIgnoreCase(".gif")) {
                imageType = SWT.IMAGE_GIF;
            }
        }

        //Shell parent=window.getWorkbench().getActiveWorkbenchWindow().getShell();

        DrawableViewNode viewNode = TreeViewModel.getModel().getTree();
        Image image = TreeView.paintToImage(viewNode);

        ImageLoader imageLoader = new ImageLoader();
        imageLoader.data = new ImageData[] { image.getImageData() };
        imageLoader.save(path, imageType);
    }
}