1*cf2d78d1SDamjan Jovanovic /************************************************************** 2*cf2d78d1SDamjan Jovanovic * 3*cf2d78d1SDamjan Jovanovic * Licensed to the Apache Software Foundation (ASF) under one 4*cf2d78d1SDamjan Jovanovic * or more contributor license agreements. See the NOTICE file 5*cf2d78d1SDamjan Jovanovic * distributed with this work for additional information 6*cf2d78d1SDamjan Jovanovic * regarding copyright ownership. The ASF licenses this file 7*cf2d78d1SDamjan Jovanovic * to you under the Apache License, Version 2.0 (the 8*cf2d78d1SDamjan Jovanovic * "License"); you may not use this file except in compliance 9*cf2d78d1SDamjan Jovanovic * with the License. You may obtain a copy of the License at 10*cf2d78d1SDamjan Jovanovic * 11*cf2d78d1SDamjan Jovanovic * http://www.apache.org/licenses/LICENSE-2.0 12*cf2d78d1SDamjan Jovanovic * 13*cf2d78d1SDamjan Jovanovic * Unless required by applicable law or agreed to in writing, 14*cf2d78d1SDamjan Jovanovic * software distributed under the License is distributed on an 15*cf2d78d1SDamjan Jovanovic * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*cf2d78d1SDamjan Jovanovic * KIND, either express or implied. See the License for the 17*cf2d78d1SDamjan Jovanovic * specific language governing permissions and limitations 18*cf2d78d1SDamjan Jovanovic * under the License. 19*cf2d78d1SDamjan Jovanovic * 20*cf2d78d1SDamjan Jovanovic *************************************************************/ 21*cf2d78d1SDamjan Jovanovic 22*cf2d78d1SDamjan Jovanovic /* 23*cf2d78d1SDamjan Jovanovic * To change this template, choose Tools | Templates 24*cf2d78d1SDamjan Jovanovic * and open the template in the editor. 25*cf2d78d1SDamjan Jovanovic */ 26*cf2d78d1SDamjan Jovanovic 27*cf2d78d1SDamjan Jovanovic package integration.xforms; 28*cf2d78d1SDamjan Jovanovic 29*cf2d78d1SDamjan Jovanovic import com.sun.star.beans.PropertyVetoException; 30*cf2d78d1SDamjan Jovanovic import com.sun.star.beans.UnknownPropertyException; 31*cf2d78d1SDamjan Jovanovic import com.sun.star.beans.XPropertySet; 32*cf2d78d1SDamjan Jovanovic import com.sun.star.lang.IllegalArgumentException; 33*cf2d78d1SDamjan Jovanovic import com.sun.star.lang.WrappedTargetException; 34*cf2d78d1SDamjan Jovanovic import com.sun.star.uno.UnoRuntime; 35*cf2d78d1SDamjan Jovanovic import com.sun.star.xforms.XFormsUIHelper1; 36*cf2d78d1SDamjan Jovanovic import com.sun.star.xforms.XModel; 37*cf2d78d1SDamjan Jovanovic import com.sun.star.xml.dom.XNode; 38*cf2d78d1SDamjan Jovanovic 39*cf2d78d1SDamjan Jovanovic /** encapsulates an XForms model 40*cf2d78d1SDamjan Jovanovic * 41*cf2d78d1SDamjan Jovanovic * @author fs93730 42*cf2d78d1SDamjan Jovanovic */ 43*cf2d78d1SDamjan Jovanovic public class Model 44*cf2d78d1SDamjan Jovanovic { 45*cf2d78d1SDamjan Jovanovic private XModel m_model; 46*cf2d78d1SDamjan Jovanovic private XPropertySet m_modelProps; 47*cf2d78d1SDamjan Jovanovic private XFormsUIHelper1 m_helper; 48*cf2d78d1SDamjan Jovanovic Model( Object _model )49*cf2d78d1SDamjan Jovanovic protected Model( Object _model ) 50*cf2d78d1SDamjan Jovanovic { 51*cf2d78d1SDamjan Jovanovic m_model = (XModel)UnoRuntime.queryInterface( XModel.class, _model ); 52*cf2d78d1SDamjan Jovanovic m_modelProps = (XPropertySet)UnoRuntime.queryInterface( XPropertySet.class, _model ); 53*cf2d78d1SDamjan Jovanovic m_helper = (XFormsUIHelper1)UnoRuntime.queryInterface( XFormsUIHelper1.class, 54*cf2d78d1SDamjan Jovanovic m_model ); 55*cf2d78d1SDamjan Jovanovic } 56*cf2d78d1SDamjan Jovanovic getXModel()57*cf2d78d1SDamjan Jovanovic protected XModel getXModel() 58*cf2d78d1SDamjan Jovanovic { 59*cf2d78d1SDamjan Jovanovic return m_model; 60*cf2d78d1SDamjan Jovanovic } 61*cf2d78d1SDamjan Jovanovic getUIHelper()62*cf2d78d1SDamjan Jovanovic protected XFormsUIHelper1 getUIHelper() 63*cf2d78d1SDamjan Jovanovic { 64*cf2d78d1SDamjan Jovanovic return m_helper; 65*cf2d78d1SDamjan Jovanovic } 66*cf2d78d1SDamjan Jovanovic getDefaultInstance()67*cf2d78d1SDamjan Jovanovic public Instance getDefaultInstance() 68*cf2d78d1SDamjan Jovanovic { 69*cf2d78d1SDamjan Jovanovic return new Instance( this, m_model.getDefaultInstance() ); 70*cf2d78d1SDamjan Jovanovic } 71*cf2d78d1SDamjan Jovanovic 72*cf2d78d1SDamjan Jovanovic /** creates a binding for the given DOM node 73*cf2d78d1SDamjan Jovanovic * 74*cf2d78d1SDamjan Jovanovic * @param _node 75*cf2d78d1SDamjan Jovanovic * the DOM node to create a binding for 76*cf2d78d1SDamjan Jovanovic * @param _dataType 77*cf2d78d1SDamjan Jovanovic * the data type to be used for the binding 78*cf2d78d1SDamjan Jovanovic * @return 79*cf2d78d1SDamjan Jovanovic */ createBindingForNode( XNode _node, short _dataTypeClass )80*cf2d78d1SDamjan Jovanovic public XPropertySet createBindingForNode( XNode _node, short _dataTypeClass ) 81*cf2d78d1SDamjan Jovanovic { 82*cf2d78d1SDamjan Jovanovic XPropertySet binding = m_helper.getBindingForNode(_node, true); 83*cf2d78d1SDamjan Jovanovic try 84*cf2d78d1SDamjan Jovanovic { 85*cf2d78d1SDamjan Jovanovic String basicTypeName = (String)m_model.getDataTypeRepository().getBasicDataType( _dataTypeClass ). 86*cf2d78d1SDamjan Jovanovic getPropertyValue( "Name" ); 87*cf2d78d1SDamjan Jovanovic binding.setPropertyValue( "Type", basicTypeName ); 88*cf2d78d1SDamjan Jovanovic } 89*cf2d78d1SDamjan Jovanovic catch (Exception ex) 90*cf2d78d1SDamjan Jovanovic { 91*cf2d78d1SDamjan Jovanovic ex.printStackTrace(); 92*cf2d78d1SDamjan Jovanovic } 93*cf2d78d1SDamjan Jovanovic return binding; 94*cf2d78d1SDamjan Jovanovic } 95*cf2d78d1SDamjan Jovanovic setIsDocumentInternalData( boolean _internalData )96*cf2d78d1SDamjan Jovanovic public void setIsDocumentInternalData( boolean _internalData ) 97*cf2d78d1SDamjan Jovanovic { 98*cf2d78d1SDamjan Jovanovic try 99*cf2d78d1SDamjan Jovanovic { 100*cf2d78d1SDamjan Jovanovic m_modelProps.setPropertyValue("ExternalData", new Boolean(!_internalData)); 101*cf2d78d1SDamjan Jovanovic } 102*cf2d78d1SDamjan Jovanovic catch (Exception ex) 103*cf2d78d1SDamjan Jovanovic { 104*cf2d78d1SDamjan Jovanovic ex.printStackTrace(); 105*cf2d78d1SDamjan Jovanovic } 106*cf2d78d1SDamjan Jovanovic } 107*cf2d78d1SDamjan Jovanovic getIsDocumentInternalData()108*cf2d78d1SDamjan Jovanovic public boolean getIsDocumentInternalData() 109*cf2d78d1SDamjan Jovanovic { 110*cf2d78d1SDamjan Jovanovic boolean isInternalData = false; 111*cf2d78d1SDamjan Jovanovic try 112*cf2d78d1SDamjan Jovanovic { 113*cf2d78d1SDamjan Jovanovic isInternalData = !((Boolean)m_modelProps.getPropertyValue( "ExternalData" )).booleanValue(); 114*cf2d78d1SDamjan Jovanovic } 115*cf2d78d1SDamjan Jovanovic catch (Exception ex) 116*cf2d78d1SDamjan Jovanovic { 117*cf2d78d1SDamjan Jovanovic ex.printStackTrace(); 118*cf2d78d1SDamjan Jovanovic } 119*cf2d78d1SDamjan Jovanovic return isInternalData; 120*cf2d78d1SDamjan Jovanovic } 121*cf2d78d1SDamjan Jovanovic } 122