| /************************************************************** |
| * |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The ASF licenses this file |
| * to you under the Apache License, Version 2.0 (the |
| * "License"); you may not use this file except in compliance |
| * with the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, |
| * software distributed under the License is distributed on an |
| * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| * KIND, either express or implied. See the License for the |
| * specific language governing permissions and limitations |
| * under the License. |
| * |
| *************************************************************/ |
| |
| |
| using System; |
| using System.Threading; |
| |
| // __________ implementation ____________________________________ |
| |
| /** Create and modify a spreadsheet view. |
| */ |
| public class ViewSample : SpreadsheetDocHelper |
| { |
| |
| public static void Main( String [] args ) |
| { |
| try |
| { |
| using ( ViewSample aSample = new ViewSample( args ) ) |
| { |
| aSample.doSampleFunction(); |
| } |
| Console.WriteLine( "\nSamples done." ); |
| } |
| catch (Exception ex) |
| { |
| Console.WriteLine( "Sample caught exception! " + ex ); |
| } |
| } |
| |
| // ________________________________________________________________ |
| |
| public ViewSample( String[] args ) |
| : base( args ) |
| { |
| } |
| |
| // ________________________________________________________________ |
| |
| /** This sample function performs all changes on the view. */ |
| public void doSampleFunction() |
| { |
| unoidl.com.sun.star.sheet.XSpreadsheetDocument xDoc = getDocument(); |
| unoidl.com.sun.star.frame.XModel xModel = |
| (unoidl.com.sun.star.frame.XModel) xDoc; |
| unoidl.com.sun.star.frame.XController xController = |
| xModel.getCurrentController(); |
| |
| // --- Spreadsheet view --- |
| // freeze the first column and first two rows |
| unoidl.com.sun.star.sheet.XViewFreezable xFreeze = |
| (unoidl.com.sun.star.sheet.XViewFreezable) xController; |
| if ( null != xFreeze ) |
| Console.WriteLine( "got xFreeze" ); |
| xFreeze.freezeAtPosition( 1, 2 ); |
| |
| // --- View pane --- |
| // get the cell range shown in the second pane and assign |
| // a cell background to them |
| unoidl.com.sun.star.container.XIndexAccess xIndex = |
| (unoidl.com.sun.star.container.XIndexAccess) xController; |
| uno.Any aPane = xIndex.getByIndex(1); |
| unoidl.com.sun.star.sheet.XCellRangeReferrer xRefer = |
| (unoidl.com.sun.star.sheet.XCellRangeReferrer) aPane.Value; |
| unoidl.com.sun.star.table.XCellRange xRange = xRefer.getReferredCells(); |
| unoidl.com.sun.star.beans.XPropertySet xRangeProp = |
| (unoidl.com.sun.star.beans.XPropertySet) xRange; |
| xRangeProp.setPropertyValue( |
| "IsCellBackgroundTransparent", new uno.Any( false ) ); |
| xRangeProp.setPropertyValue( |
| "CellBackColor", new uno.Any( (Int32) 0xFFFFCC ) ); |
| |
| // --- View settings --- |
| // change the view to display green grid lines |
| unoidl.com.sun.star.beans.XPropertySet xProp = |
| (unoidl.com.sun.star.beans.XPropertySet) xController; |
| xProp.setPropertyValue( |
| "ShowGrid", new uno.Any( true ) ); |
| xProp.setPropertyValue( |
| "GridColor", new uno.Any( (Int32) 0x00CC00 ) ); |
| |
| // --- Range selection --- |
| // let the user select a range and use it as the view's selection |
| unoidl.com.sun.star.sheet.XRangeSelection xRngSel = |
| (unoidl.com.sun.star.sheet.XRangeSelection) xController; |
| ExampleRangeListener aListener = new ExampleRangeListener(); |
| xRngSel.addRangeSelectionListener( aListener ); |
| unoidl.com.sun.star.beans.PropertyValue[] aArguments = |
| new unoidl.com.sun.star.beans.PropertyValue[2]; |
| aArguments[0] = new unoidl.com.sun.star.beans.PropertyValue(); |
| aArguments[0].Name = "Title"; |
| aArguments[0].Value = new uno.Any( "Please select a range" ); |
| aArguments[1] = new unoidl.com.sun.star.beans.PropertyValue(); |
| aArguments[1].Name = "CloseOnMouseRelease"; |
| aArguments[1].Value = new uno.Any( true ); |
| xRngSel.startRangeSelection( aArguments ); |
| Monitor.Enter( aListener ); |
| try |
| { |
| Monitor.Wait( aListener ); // wait until the selection is done |
| } |
| finally |
| { |
| Monitor.Exit( aListener ); |
| } |
| xRngSel.removeRangeSelectionListener( aListener ); |
| if ( aListener.aResult != null && aListener.aResult.Length != 0 ) |
| { |
| unoidl.com.sun.star.view.XSelectionSupplier xSel = |
| (unoidl.com.sun.star.view.XSelectionSupplier) xController; |
| unoidl.com.sun.star.sheet.XSpreadsheetView xView = |
| (unoidl.com.sun.star.sheet.XSpreadsheetView) xController; |
| unoidl.com.sun.star.sheet.XSpreadsheet xSheet = |
| xView.getActiveSheet(); |
| unoidl.com.sun.star.table.XCellRange xResultRange = |
| xSheet.getCellRangeByName( aListener.aResult ); |
| xSel.select( |
| new uno.Any( |
| typeof (unoidl.com.sun.star.table.XCellRange), |
| xResultRange ) ); |
| } |
| } |
| |
| // ________________________________________________________________ |
| |
| // listener to react on finished selection |
| |
| private class ExampleRangeListener |
| : unoidl.com.sun.star.sheet.XRangeSelectionListener |
| { |
| public String aResult; |
| |
| public void done( unoidl.com.sun.star.sheet.RangeSelectionEvent aEvent ) |
| { |
| aResult = aEvent.RangeDescriptor; |
| Monitor.Enter( this ); |
| try |
| { |
| Monitor.Pulse( this ); |
| } |
| finally |
| { |
| Monitor.Exit( this ); |
| } |
| } |
| |
| public void aborted( |
| unoidl.com.sun.star.sheet.RangeSelectionEvent aEvent ) |
| { |
| Monitor.Enter( this ); |
| try |
| { |
| Monitor.Pulse( this ); |
| } |
| finally |
| { |
| Monitor.Exit( this ); |
| } |
| } |
| |
| public void disposing( unoidl.com.sun.star.lang.EventObject aObj ) |
| { |
| } |
| } |
| |
| // ________________________________________________________________ |
| |
| } |