1*b1cdbd2cSJim Jagielski /************************************************************** 2*b1cdbd2cSJim Jagielski * 3*b1cdbd2cSJim Jagielski * Licensed to the Apache Software Foundation (ASF) under one 4*b1cdbd2cSJim Jagielski * or more contributor license agreements. See the NOTICE file 5*b1cdbd2cSJim Jagielski * distributed with this work for additional information 6*b1cdbd2cSJim Jagielski * regarding copyright ownership. The ASF licenses this file 7*b1cdbd2cSJim Jagielski * to you under the Apache License, Version 2.0 (the 8*b1cdbd2cSJim Jagielski * "License"); you may not use this file except in compliance 9*b1cdbd2cSJim Jagielski * with the License. You may obtain a copy of the License at 10*b1cdbd2cSJim Jagielski * 11*b1cdbd2cSJim Jagielski * http://www.apache.org/licenses/LICENSE-2.0 12*b1cdbd2cSJim Jagielski * 13*b1cdbd2cSJim Jagielski * Unless required by applicable law or agreed to in writing, 14*b1cdbd2cSJim Jagielski * software distributed under the License is distributed on an 15*b1cdbd2cSJim Jagielski * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*b1cdbd2cSJim Jagielski * KIND, either express or implied. See the License for the 17*b1cdbd2cSJim Jagielski * specific language governing permissions and limitations 18*b1cdbd2cSJim Jagielski * under the License. 19*b1cdbd2cSJim Jagielski * 20*b1cdbd2cSJim Jagielski *************************************************************/ 21*b1cdbd2cSJim Jagielski 22*b1cdbd2cSJim Jagielski 23*b1cdbd2cSJim Jagielski 24*b1cdbd2cSJim Jagielski import com.sun.star.uno.UnoRuntime; 25*b1cdbd2cSJim Jagielski 26*b1cdbd2cSJim Jagielski import com.sun.star.lang.XMultiServiceFactory; 27*b1cdbd2cSJim Jagielski import com.sun.star.beans.XPropertySet; 28*b1cdbd2cSJim Jagielski import com.sun.star.table.XCellRange; 29*b1cdbd2cSJim Jagielski import com.sun.star.table.XCell; 30*b1cdbd2cSJim Jagielski import com.sun.star.text.XTextDocument; 31*b1cdbd2cSJim Jagielski import com.sun.star.text.XText; 32*b1cdbd2cSJim Jagielski import com.sun.star.text.XTextTable; 33*b1cdbd2cSJim Jagielski import com.sun.star.text.XTextCursor; 34*b1cdbd2cSJim Jagielski import com.sun.star.text.XTextRange; 35*b1cdbd2cSJim Jagielski import com.sun.star.form.binding.XValueBinding; 36*b1cdbd2cSJim Jagielski import com.sun.star.form.binding.XBindableValue; 37*b1cdbd2cSJim Jagielski import com.sun.star.form.binding.XListEntrySource; 38*b1cdbd2cSJim Jagielski import com.sun.star.form.binding.XListEntrySink; 39*b1cdbd2cSJim Jagielski 40*b1cdbd2cSJim Jagielski public class SpreadsheetValueBinding extends DocumentBasedExample 41*b1cdbd2cSJim Jagielski { 42*b1cdbd2cSJim Jagielski /** Creates a new instance of SpreadsheetValueBinding */ SpreadsheetValueBinding()43*b1cdbd2cSJim Jagielski public SpreadsheetValueBinding() 44*b1cdbd2cSJim Jagielski { 45*b1cdbd2cSJim Jagielski super( DocumentType.CALC ); 46*b1cdbd2cSJim Jagielski } 47*b1cdbd2cSJim Jagielski 48*b1cdbd2cSJim Jagielski /* ------------------------------------------------------------------ */ prepareDocument()49*b1cdbd2cSJim Jagielski protected void prepareDocument() throws com.sun.star.uno.Exception, java.lang.Exception 50*b1cdbd2cSJim Jagielski { 51*b1cdbd2cSJim Jagielski super.prepareDocument(); 52*b1cdbd2cSJim Jagielski 53*b1cdbd2cSJim Jagielski SpreadsheetDocument document = (SpreadsheetDocument)m_document; 54*b1cdbd2cSJim Jagielski 55*b1cdbd2cSJim Jagielski final short sheet = (short)0; 56*b1cdbd2cSJim Jagielski final short exchangeColumn = (short)1; // B 57*b1cdbd2cSJim Jagielski final short exchangeRow = (short)1; // 2 58*b1cdbd2cSJim Jagielski final Integer backColor = new Integer( 0x00E0E0E0 ); 59*b1cdbd2cSJim Jagielski 60*b1cdbd2cSJim Jagielski // ---------------------------------------------------------------------- 61*b1cdbd2cSJim Jagielski // a numeric control 62*b1cdbd2cSJim Jagielski XPropertySet numericControl = m_formLayer.insertControlLine( "NumericField", 63*b1cdbd2cSJim Jagielski "enter a value", "", 30 ); 64*b1cdbd2cSJim Jagielski numericControl.setPropertyValue( "ValueMin", new Short( (short)1 ) ); 65*b1cdbd2cSJim Jagielski numericControl.setPropertyValue( "ValueMax", new Short( (short)5 ) ); 66*b1cdbd2cSJim Jagielski numericControl.setPropertyValue( "Value", new Short( (short)1 ) ); 67*b1cdbd2cSJim Jagielski numericControl.setPropertyValue( "DecimalAccuracy", new Short( (short)0 ) ); 68*b1cdbd2cSJim Jagielski numericControl.setPropertyValue( "Spin", new Boolean( true ) ); 69*b1cdbd2cSJim Jagielski 70*b1cdbd2cSJim Jagielski // bind the control model to cell B2 71*b1cdbd2cSJim Jagielski implBind( numericControl, document.createCellBinding( sheet, exchangeColumn, exchangeRow ) ); 72*b1cdbd2cSJim Jagielski 73*b1cdbd2cSJim Jagielski // ---------------------------------------------------------------------- 74*b1cdbd2cSJim Jagielski // insert a list box 75*b1cdbd2cSJim Jagielski XPropertySet listBox = m_formLayer.insertControlLine( "ListBox", 76*b1cdbd2cSJim Jagielski "select an entry", "", 2, 40, 20 ); 77*b1cdbd2cSJim Jagielski listBox.setPropertyValue( "Dropdown", new Boolean( false ) ); 78*b1cdbd2cSJim Jagielski 79*b1cdbd2cSJim Jagielski // a list binding for cell range C1-C5 80*b1cdbd2cSJim Jagielski final short listSourceSheet = (short)1; 81*b1cdbd2cSJim Jagielski final short column = (short)0; 82*b1cdbd2cSJim Jagielski final short topRow = (short)0; 83*b1cdbd2cSJim Jagielski final short bottomRow = (short)4; 84*b1cdbd2cSJim Jagielski XListEntrySource entrySource = document.createListEntrySource( 85*b1cdbd2cSJim Jagielski listSourceSheet, column, topRow, bottomRow ); 86*b1cdbd2cSJim Jagielski 87*b1cdbd2cSJim Jagielski // bind it to the list box 88*b1cdbd2cSJim Jagielski XListEntrySink consumer = (XListEntrySink)UnoRuntime.queryInterface( 89*b1cdbd2cSJim Jagielski XListEntrySink.class, listBox ); 90*b1cdbd2cSJim Jagielski consumer.setListEntrySource( entrySource ); 91*b1cdbd2cSJim Jagielski 92*b1cdbd2cSJim Jagielski // and also put the list selection index into cell B2 93*b1cdbd2cSJim Jagielski implBind( listBox, document.createListIndexBinding( sheet, exchangeColumn, exchangeRow ) ); 94*b1cdbd2cSJim Jagielski 95*b1cdbd2cSJim Jagielski // ---------------------------------------------------------------------- 96*b1cdbd2cSJim Jagielski // fill the cells which we just bound the listbox to 97*b1cdbd2cSJim Jagielski XCellRange exchangeSheet = document.getSheet( listSourceSheet ); 98*b1cdbd2cSJim Jagielski String[] listContent = new String[] { "first", "second", "third", "forth", "fivth" }; 99*b1cdbd2cSJim Jagielski for ( short row = topRow; row <= bottomRow; ++row ) 100*b1cdbd2cSJim Jagielski { 101*b1cdbd2cSJim Jagielski XTextRange cellText = (XTextRange)UnoRuntime.queryInterface( 102*b1cdbd2cSJim Jagielski XTextRange.class, exchangeSheet.getCellByPosition( column, row ) ); 103*b1cdbd2cSJim Jagielski cellText.setString( listContent[row] ); 104*b1cdbd2cSJim Jagielski } 105*b1cdbd2cSJim Jagielski 106*b1cdbd2cSJim Jagielski // some coloring 107*b1cdbd2cSJim Jagielski XPropertySet exchangeCell = UNO.queryPropertySet( 108*b1cdbd2cSJim Jagielski document.getSheet( sheet ).getCellByPosition( exchangeColumn, exchangeRow ) 109*b1cdbd2cSJim Jagielski ); 110*b1cdbd2cSJim Jagielski exchangeCell.setPropertyValue( "CellBackColor", backColor ); 111*b1cdbd2cSJim Jagielski numericControl.setPropertyValue( "BackgroundColor", backColor ); 112*b1cdbd2cSJim Jagielski listBox.setPropertyValue( "BackgroundColor", backColor ); 113*b1cdbd2cSJim Jagielski } 114*b1cdbd2cSJim Jagielski 115*b1cdbd2cSJim Jagielski /* ------------------------------------------------------------------ */ implBind( XPropertySet controlModel, XValueBinding binding )116*b1cdbd2cSJim Jagielski private void implBind( XPropertySet controlModel, XValueBinding binding ) throws com.sun.star.form.binding.IncompatibleTypesException 117*b1cdbd2cSJim Jagielski { 118*b1cdbd2cSJim Jagielski XBindableValue bindable = (XBindableValue)UnoRuntime.queryInterface( 119*b1cdbd2cSJim Jagielski XBindableValue.class, controlModel 120*b1cdbd2cSJim Jagielski ); 121*b1cdbd2cSJim Jagielski bindable.setValueBinding( binding ); 122*b1cdbd2cSJim Jagielski } 123*b1cdbd2cSJim Jagielski 124*b1cdbd2cSJim Jagielski /* ------------------------------------------------------------------ */ 125*b1cdbd2cSJim Jagielski /** class entry point 126*b1cdbd2cSJim Jagielski */ main(String argv[])127*b1cdbd2cSJim Jagielski public static void main(String argv[]) throws java.lang.Exception 128*b1cdbd2cSJim Jagielski { 129*b1cdbd2cSJim Jagielski SpreadsheetValueBinding aSample = new SpreadsheetValueBinding(); 130*b1cdbd2cSJim Jagielski aSample.run( argv ); 131*b1cdbd2cSJim Jagielski } 132*b1cdbd2cSJim Jagielski } 133