/*
* -----------------------------------------------------------------------
* File: $HeadURL$
* Revision $LastChangedRevision$
* Last Modified: $LastChangedDate$
* Last Change by: $LastChangedBy$
* -----------------------------------------------------------------------
* Copyright (C) 2007 Keith Stribley <devel@thanlwinsoft.org>
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
* MA 02110-1301 USA
* -----------------------------------------------------------------------
*/
package org.thanlwinsoft.languagetest.eclipse.chart;
/***********************************************************************
* Copyright (c) 2006 IBM Corporation.
* 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
***********************************************************************/
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import org.eclipse.birt.chart.model.Chart;
import org.eclipse.birt.chart.model.Serializer;
import org.eclipse.birt.chart.model.impl.SerializerImpl;
import org.eclipse.jface.action.Action;
import org.eclipse.jface.action.IAction;
import org.eclipse.jface.resource.JFaceResources;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.graphics.ImageData;
import org.eclipse.swt.program.Program;
import org.eclipse.swt.widgets.FileDialog;
import org.eclipse.swt.widgets.MessageBox;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.ui.IViewActionDelegate;
import org.eclipse.ui.IViewPart;
import org.eclipse.ui.IWorkbenchWindow;
import org.eclipse.ui.IWorkbenchWindowActionDelegate;
import org.thanlwinsoft.languagetest.MessageUtil;
import org.thanlwinsoft.languagetest.eclipse.chart.view.ChartHistoryView;
/**
* Example class that generates a PDF file based on a BIRT Chart Model.
*
*/
public class XMLChartGenerator extends Action implements IWorkbenchWindowActionDelegate, IViewActionDelegate
{
private IWorkbenchWindow window = null;
private IViewPart view = null;
private Shell shell = null;
private ImageData imageData = null;
public XMLChartGenerator()
{
}
/**
* Generates a pdf chart to a file
*/
public void generateChart(Chart cm, String fileName){
try
{
Serializer serializer = null;
File file = new File(fileName);
if ( file.exists( ) )
{
MessageBox box = new MessageBox( shell,
SWT.ICON_WARNING | SWT.YES | SWT.NO );
box.setText( MessageUtil.getString("SaveXMLSource"));
box.setMessage( MessageUtil.getString("FileAlreadyExistsReplace", fileName));
if ( box.open( ) != SWT.YES )
{
return;
}
file.delete();
}
serializer = SerializerImpl.instance( );
try
{
FileOutputStream fos =new FileOutputStream( file );
serializer.write(cm, fos);
fos.close();
}
catch ( IOException ioe )
{
ioe.printStackTrace( );
}
}
catch ( Throwable ce )
{
ce.printStackTrace( );
}
}
/* (non-Javadoc)
* @see org.eclipse.ui.IWorkbenchWindowActionDelegate#dispose()
*/
public void dispose()
{
// TODO Auto-generated method stub
}
/* (non-Javadoc)
* @see org.eclipse.ui.IWorkbenchWindowActionDelegate#init(org.eclipse.ui.IWorkbenchWindow)
*/
public void init(IWorkbenchWindow window)
{
this.window = window;
}
/* (non-Javadoc)
* @see org.eclipse.ui.IActionDelegate#run(org.eclipse.jface.action.IAction)
*/
public void run(IAction action)
{
//org.eclipse.birt.chart.examples.api.pdf.PDFChartGenerator.main();
ChartHistoryView chView = null;
if (window != null)
{
view = window.getActivePage().findView(ChartHistoryView.ID);
}
if (view instanceof ChartHistoryView)
{
chView = (ChartHistoryView)view;
}
if (chView != null)
{
Chart cm = chView.getChart();
//if (cm == null)
// cm = PDFChartGenerator.createHSChart();
if (cm != null)
{
this.shell = chView.getSite().getShell();
FileDialog dialog = new FileDialog(shell, SWT.SAVE);
dialog.setText(MessageUtil.getString("ExportChartToXML"));
dialog.setFileName("TestHistoryChart.chart");
dialog.setFilterExtensions(new String[] { "*.chart", "*.*"});
dialog.setFilterNames(new String[] {
MessageUtil.getString("XML Chart"),
MessageUtil.getString("All")});
String fileName = dialog.open();
if (fileName != null)
{
generateChart(cm, fileName);
// Program p = Program.findProgram("*.svg");
// p.execute(fileName);
}
}
}
}
/* (non-Javadoc)
* @see org.eclipse.ui.IActionDelegate#selectionChanged(org.eclipse.jface.action.IAction, org.eclipse.jface.viewers.ISelection)
*/
public void selectionChanged(IAction action, ISelection selection)
{
}
/* (non-Javadoc)
* @see org.eclipse.ui.IViewActionDelegate#init(org.eclipse.ui.IViewPart)
*/
public void init(IViewPart view)
{
this.view = view;
Program p = Program.findProgram(".xml");
if (p != null)
imageData = p.getImageData();
Image image = new Image(view.getSite().getShell().getDisplay(), imageData);
JFaceResources.getImageRegistry().put("XML", image);
this.setImageDescriptor(JFaceResources.getImageRegistry().getDescriptor("XML"));
}
}