1 /* 2 * To change this template, choose Tools | Templates 3 * and open the template in the editor. 4 */ 5 6 package org.openoffice.xforms; 7 8 import com.sun.star.beans.PropertyVetoException; 9 import com.sun.star.beans.UnknownPropertyException; 10 import com.sun.star.beans.XPropertySet; 11 import com.sun.star.lang.IllegalArgumentException; 12 import com.sun.star.lang.WrappedTargetException; 13 import com.sun.star.uno.UnoRuntime; 14 import com.sun.star.xforms.XFormsUIHelper1; 15 import com.sun.star.xforms.XModel; 16 import com.sun.star.xml.dom.XNode; 17 18 /** encapsulates an XForms model 19 * 20 * @author fs93730 21 */ 22 public class Model 23 { 24 private XModel m_model; 25 private XPropertySet m_modelProps; 26 private XFormsUIHelper1 m_helper; 27 28 protected Model( Object _model ) 29 { 30 m_model = (XModel)UnoRuntime.queryInterface( XModel.class, _model ); 31 m_modelProps = (XPropertySet)UnoRuntime.queryInterface( XPropertySet.class, _model ); 32 m_helper = (XFormsUIHelper1)UnoRuntime.queryInterface( XFormsUIHelper1.class, 33 m_model ); 34 } 35 36 protected XModel getXModel() 37 { 38 return m_model; 39 } 40 41 protected XFormsUIHelper1 getUIHelper() 42 { 43 return m_helper; 44 } 45 46 public Instance getDefaultInstance() 47 { 48 return new Instance( this, m_model.getDefaultInstance() ); 49 } 50 51 /** creates a binding for the given DOM node 52 * 53 * @param _node 54 * the DOM node to create a binding for 55 * @param _dataType 56 * the data type to be used for the binding 57 * @return 58 */ 59 public XPropertySet createBindingForNode( XNode _node, short _dataTypeClass ) 60 { 61 XPropertySet binding = m_helper.getBindingForNode(_node, true); 62 try 63 { 64 String basicTypeName = (String)m_model.getDataTypeRepository().getBasicDataType( _dataTypeClass ). 65 getPropertyValue( "Name" ); 66 binding.setPropertyValue( "Type", basicTypeName ); 67 } 68 catch (Exception ex) 69 { 70 ex.printStackTrace(); 71 } 72 return binding; 73 } 74 75 public void setIsDocumentInternalData( boolean _internalData ) 76 { 77 try 78 { 79 m_modelProps.setPropertyValue("ExternalData", new Boolean(!_internalData)); 80 } 81 catch (Exception ex) 82 { 83 ex.printStackTrace(); 84 } 85 } 86 87 public boolean getIsDocumentInternalData() 88 { 89 boolean isInternalData = false; 90 try 91 { 92 isInternalData = !((Boolean)m_modelProps.getPropertyValue( "ExternalData" )).booleanValue(); 93 } 94 catch (Exception ex) 95 { 96 ex.printStackTrace(); 97 } 98 return isInternalData; 99 } 100 } 101