diff options
Diffstat (limited to 'odk/examples/DevelopersGuide/Charts/SelectionChangeListener.java')
-rw-r--r-- | odk/examples/DevelopersGuide/Charts/SelectionChangeListener.java | 219 |
1 files changed, 0 insertions, 219 deletions
diff --git a/odk/examples/DevelopersGuide/Charts/SelectionChangeListener.java b/odk/examples/DevelopersGuide/Charts/SelectionChangeListener.java deleted file mode 100644 index d895be7d..00000000 --- a/odk/examples/DevelopersGuide/Charts/SelectionChangeListener.java +++ /dev/null @@ -1,219 +0,0 @@ -/************************************************************************* - * - * The Contents of this file are made available subject to the terms of - * the BSD license. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of Sun Microsystems, Inc. nor the names of its - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS - * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR - * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE - * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - *************************************************************************/ - -import com.sun.star.awt.XMessageBox; -import com.sun.star.awt.XWindowPeer; -import com.sun.star.frame.XDesktop; -import com.sun.star.uno.UnoRuntime; -import com.sun.star.lang.*; -import com.sun.star.frame.XModel; -import com.sun.star.frame.XController; - -// application specific classes -import com.sun.star.chart.*; -import com.sun.star.uno.XComponentContext; -import com.sun.star.uno.XInterface; - -import com.sun.star.view.XSelectionChangeListener; -import com.sun.star.view.XSelectionSupplier; - -import com.sun.star.table.CellRangeAddress; -import com.sun.star.table.XCellRange; -import com.sun.star.sheet.XCellRangeAddressable; - -import com.sun.star.awt.Point; -import com.sun.star.awt.Rectangle; -import com.sun.star.awt.Size; -import com.sun.star.awt.XMessageBoxFactory; -import com.sun.star.awt.XWindow; - -// __________ Implementation __________ - -/** Create a spreadsheet add some data. - * Create a presentation and add a chart. - * Connect the chart to a calc range via a listener - * - * Note: This example does not work in StarOffice 6.0. It will be available - * in the StarOffice Accessibility release. - * - * @author Björn Milcke - */ -public class SelectionChangeListener implements XSelectionChangeListener { - public static void main( String args[] ) { - SelectionChangeListener aMySelf = new SelectionChangeListener( args ); - - aMySelf.run(); - } - - public SelectionChangeListener( String args[] ) { - Helper aHelper = new Helper( args ); - - maContext = aHelper.getComponentContext(); - - CalcHelper aCalcHelper = new CalcHelper( aHelper.createSpreadsheetDocument() ); - - // insert a cell range with 4 columns and 12 rows filled with random numbers - XCellRange aRange = aCalcHelper.insertRandomRange( 4, 12 ); - CellRangeAddress aRangeAddress = ((XCellRangeAddressable) UnoRuntime.queryInterface( - XCellRangeAddressable.class, aRange)).getRangeAddress(); - - // change view to sheet containing the chart - aCalcHelper.raiseChartSheet(); - - // the unit for measures is 1/100th of a millimeter - // position at (1cm, 1cm) - Point aPos = new Point( 1000, 1000 ); - - // size of the chart is 15cm x 9.271cm - Size aExtent = new Size( 15000, 9271 ); - - // insert a new chart into the "Chart" sheet of the - // spreadsheet document - maChartDocument = aCalcHelper.insertChart( - "SampleChart", - aRangeAddress, - aPos, - aExtent, - "com.sun.star.chart.XYDiagram" ); - } - - // ____________________ - - public void run() { - boolean bTrying = true; - - while( bTrying ) { - // start listening for selection changes - XSelectionSupplier aSelSupp = (XSelectionSupplier) UnoRuntime.queryInterface( - XSelectionSupplier.class, - (((XModel) UnoRuntime.queryInterface( - XModel.class, maChartDocument )).getCurrentController()) ); - if( aSelSupp != null ) { - aSelSupp.addSelectionChangeListener( this ); - System.out.println( "Successfully attached as selection change listener" ); - bTrying = false; - } - - // start listening for death of Controller - XComponent aComp = (XComponent) UnoRuntime.queryInterface( XComponent.class, aSelSupp ); - if( aComp != null ) { - aComp.addEventListener( this ); - System.out.println( "Successfully attached as dispose listener" ); - } - - try { - Thread.currentThread().sleep( 500 ); - } catch( InterruptedException ex ) { - } - } - } - - // ____________________ - - // XEventListener (base of XSelectionChangeListener) - public void disposing( EventObject aSourceObj ) { - System.out.println( "disposing called. detaching as listener" ); - - // stop listening for selection changes - XSelectionSupplier aCtrl = (XSelectionSupplier) UnoRuntime.queryInterface( - XSelectionSupplier.class, aSourceObj ); - if( aCtrl != null ) - aCtrl.removeSelectionChangeListener( this ); - - // remove as dispose listener - XComponent aComp = (XComponent) UnoRuntime.queryInterface( XComponent.class, aSourceObj ); - if( aComp != null ) - aComp.removeEventListener( this ); - - // bail out - System.exit( 0 ); - } - - // ____________________ - - // XSelectionChangeListener - public void selectionChanged( EventObject aEvent ) { - XController aCtrl = (XController) UnoRuntime.queryInterface( XController.class, aEvent.Source ); - if( aCtrl != null ) { - XMultiComponentFactory mMCF = maContext.getServiceManager(); - - MyMessageBox aMsgBox = new MyMessageBox(mMCF); - - aMsgBox.start(); - - System.out.println("Listener finished"); - } - } - - // __________ private __________ - - private class MyMessageBox extends Thread{ - private XMultiComponentFactory mMCF; - - public MyMessageBox(XMultiComponentFactory xMCF){ - mMCF = xMCF; - } - - public void run() { - XDesktop aDesktop = null; - XInterface aToolKit = null; - try { - Thread.sleep(1000); - } catch (InterruptedException ex) { - ex.printStackTrace(); - } - try { - Object oDesktop = mMCF.createInstanceWithContext("com.sun.star.frame.Desktop", maContext); - Object oToolKit = mMCF.createInstanceWithContext("com.sun.star.awt.Toolkit", maContext); - - aDesktop = (XDesktop) UnoRuntime.queryInterface(XDesktop.class, oDesktop); - aToolKit = (XInterface) UnoRuntime.queryInterface(XInterface.class, oToolKit); - } catch (Exception ex) { - ex.printStackTrace(); - } - - XWindow xWin = aDesktop.getCurrentFrame().getContainerWindow(); - XWindowPeer aWinPeer = (XWindowPeer) UnoRuntime.queryInterface(XWindowPeer.class, xWin); - - Rectangle aRect = new Rectangle(); - int button = com.sun.star.awt.MessageBoxButtons.BUTTONS_OK; - XMessageBoxFactory aMBF = (XMessageBoxFactory) UnoRuntime.queryInterface(XMessageBoxFactory.class, aToolKit); - XMessageBox xMB = aMBF.createMessageBox(aWinPeer, aRect, "infobox" , button, "Event-Notify", "Listener was called, selcetion has changed"); - xMB.execute(); - } - } - - private XChartDocument maChartDocument; - private XComponentContext maContext; -} |