xref: /AOO41X/main/forms/qa/org/openoffice/xforms/Model.java (revision cdf0e10c4e3984b49a9502b011690b615761d4a3)
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