import com.jniwrapper.win32.jexcel.ExcelException;
import com.jniwrapper.win32.jexcel.GenericWorkbook;
import com.jniwrapper.win32.jexcel.ui.JWorkbook;
import com.jniwrapper.win32.jexcel.ui.JWorkbookEventAdapter;
import com.jniwrapper.win32.jexcel.ui.JWorkbookEventObject;
import com.jniwrapper.win32.jexcel.ui.JWorkbookInterruptException;
import com.jniwrapper.win32.ui.MessageBox;
import com.jniwrapper.win32.ui.Wnd;
import com.jniwrapper.win32.ui.dialogs.OpenSaveFileDialog;
import javax.swing.*;
import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.File;
import java.io.IOException;
/**
* This sample demonstrates how to create simple window with integrated Excel workbook.
*/
public class SimpleJWorkbookWindow extends JFrame
{
private JWorkbook uiWorkbook;
public SimpleJWorkbookWindow()
{
super("Simple JWorkbook Window");
//Create JWorkbook
uiWorkbook = null;
try
{
uiWorkbook = new JWorkbook();
}
catch (ExcelException e)
{
throw new RuntimeException("Unable to create JWorkbook", e);
}
uiWorkbook.addJWorkbookEventListener(new JWorkbookEventAdapter()
{
public void beforeWorkbookClose(JWorkbookEventObject eventObject) throws JWorkbookInterruptException
{
GenericWorkbook workbook = eventObject.getWorkbook();
if (!workbook.isSaved())
{
int msgBoxresult = MessageBox.show(new Wnd(SimpleJWorkbookWindow.this),
"Excel confirmation",
"Do you want to save changes you made to '" + workbook.getWorkbookName() + "'",
MessageBox.YESNO);
if (msgBoxresult == MessageBox.IDYES)
{
Window parent = SwingUtilities.getWindowAncestor(SimpleJWorkbookWindow.this);
OpenSaveFileDialog saveDialog = new OpenSaveFileDialog(parent);
String FILTER = "Excel Workbooks (*.xls) | *.xls";
saveDialog.setFilter(FILTER);
boolean result = saveDialog.getSaveFileName();
if (result)
{
String newFileName = saveDialog.getFileName();
File newFile = new File(newFileName);
try
{
workbook.saveCopyAs(newFile);
}
catch (IOException e)
{
throw new JWorkbookInterruptException("Input/Output error", e);
}
}
}
}
}
});
//Insert the JWorkbook into JFrame
Container contentPane = getContentPane();
contentPane.setLayout(new BorderLayout());
contentPane.add(uiWorkbook, BorderLayout.CENTER);
//Add window state listener to clean up after yourself
addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
uiWorkbook.close();
}
});
}
public static void main(String[] args)
{
SimpleJWorkbookWindow sampleWindow = new SimpleJWorkbookWindow();
sampleWindow.setSize(800, 600);
sampleWindow.setLocationRelativeTo(null);
sampleWindow.setDefaultCloseOperation(EXIT_ON_CLOSE);
sampleWindow.setVisible(true);
}
}
|
|