Samples‎ > ‎Basics‎ > ‎

Allow\disallow click\r-click on cell and workbook close, save actions.

/*
 * Copyright (c) 2000-2012 TeamDev Ltd. All rights reserved.
 * Use is subject to license terms.
 */

import com.jniwrapper.win32.jexcel.*;

import java.io.IOException;
import java.util.List;

/**
 * This sample demonstrates how to use workbook and worksheet event handlers. The sample shows how to
 * allow\disallow certain actions with help of the event handlers.
 *
 * The sample works with MS Excel in non-embedded mode.
 */
public class EventHandlersSample
{
public static void main(String[] args) throws ExcelException, IOException
{
//Start MS Excel application. Application starts invisible and without any workbooks
Application application = new Application();
GenericWorkbook workbook = application.createWorkbook(null);

setupEventHandlers(workbook);

//Open MS Excel application window
application.setVisible(true);

System.out.println("Press <Enter> to close application...");

System.in.read();

//Perform cleanup after yourself and close the MS Excel application forcing it to quit
application.close(true);
}

/**
     * Set event handlers to workbook and then iterate over its worksheets and set handlers to
     * each of them.
     * @param workbook - workbook to apply handlers to.
     */
private static void setupEventHandlers(GenericWorkbook workbook)
{
WorkbookEventHandler workbookEventHandler = new WorkbookHandler();
WorksheetEventHandler worksheetEventHandler = new WorksheetHandler();

workbook.setEventHandler(workbookEventHandler);

List worksheets = workbook.getWorksheets();
for (int i = 0; i < worksheets.size(); i++)
{
Worksheet worksheet = (Worksheet) worksheets.get(i);
worksheet.setEventHandler(worksheetEventHandler);
}
}

public static class WorkbookHandler implements WorkbookEventHandler
{
public boolean beforeClose(WorkbookEventObject source)
{
//Allow closing any workbooks
return true;
}

public boolean beforeSave(WorkbookEventObject source)
{
//Forbid saving any workbooks
return false;
}
}

public static class WorksheetHandler implements WorksheetEventHandler
{
public boolean beforeDoubleClick(WorksheetEventObject eventObject)
{
//Forbid double-clicking on "A1" cell
return !eventObject.getCell().equals(eventObject.getWorksheet().getCell("A1"));
}

public boolean beforeRightClick(WorksheetEventObject eventObject)
{
//Allow right-clicking only on "A1" cell
return eventObject.getRange().equals(eventObject.getWorksheet().getRange("A1"));
}
}
}