1b9b79128SAndrew Rist /**************************************************************
2b9b79128SAndrew Rist  *
3b9b79128SAndrew Rist  * Licensed to the Apache Software Foundation (ASF) under one
4b9b79128SAndrew Rist  * or more contributor license agreements.  See the NOTICE file
5b9b79128SAndrew Rist  * distributed with this work for additional information
6b9b79128SAndrew Rist  * regarding copyright ownership.  The ASF licenses this file
7b9b79128SAndrew Rist  * to you under the Apache License, Version 2.0 (the
8b9b79128SAndrew Rist  * "License"); you may not use this file except in compliance
9b9b79128SAndrew Rist  * with the License.  You may obtain a copy of the License at
10b9b79128SAndrew Rist  *
11b9b79128SAndrew Rist  *   http://www.apache.org/licenses/LICENSE-2.0
12b9b79128SAndrew Rist  *
13b9b79128SAndrew Rist  * Unless required by applicable law or agreed to in writing,
14b9b79128SAndrew Rist  * software distributed under the License is distributed on an
15b9b79128SAndrew Rist  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16b9b79128SAndrew Rist  * KIND, either express or implied.  See the License for the
17b9b79128SAndrew Rist  * specific language governing permissions and limitations
18b9b79128SAndrew Rist  * under the License.
19b9b79128SAndrew Rist  *
20b9b79128SAndrew Rist  *************************************************************/
21b9b79128SAndrew Rist 
22cdf0e10cSrcweir /*
23cdf0e10cSrcweir  * To change this template, choose Tools | Templates
24cdf0e10cSrcweir  * and open the template in the editor.
25cdf0e10cSrcweir  */
26cdf0e10cSrcweir 
27*cf2d78d1SDamjan Jovanovic package integration.xforms;
28cdf0e10cSrcweir 
29cdf0e10cSrcweir import com.sun.star.container.NoSuchElementException;
30cdf0e10cSrcweir import com.sun.star.container.XNameContainer;
31cdf0e10cSrcweir import com.sun.star.lang.WrappedTargetException;
32cdf0e10cSrcweir import com.sun.star.lang.XComponent;
33cdf0e10cSrcweir import com.sun.star.lang.XMultiServiceFactory;
34cdf0e10cSrcweir import com.sun.star.uno.Exception;
35cdf0e10cSrcweir import com.sun.star.uno.UnoRuntime;
36cdf0e10cSrcweir import com.sun.star.xforms.XFormsSupplier;
37cdf0e10cSrcweir import com.sun.star.xforms.XFormsUIHelper1;
38cdf0e10cSrcweir import com.sun.star.xforms.XModel;
39cdf0e10cSrcweir import integration.forms.DocumentType;
40cdf0e10cSrcweir 
41cdf0e10cSrcweir /**
42cdf0e10cSrcweir  *
43cdf0e10cSrcweir  * @author fs93730
44cdf0e10cSrcweir  */
45cdf0e10cSrcweir public class XMLDocument extends integration.forms.DocumentHelper
46cdf0e10cSrcweir {
47cdf0e10cSrcweir     private XFormsSupplier  m_formsSupplier;
48cdf0e10cSrcweir     private XNameContainer  m_forms;
49cdf0e10cSrcweir 
50cdf0e10cSrcweir     /* ------------------------------------------------------------------ */
XMLDocument( XMultiServiceFactory _orb )51cdf0e10cSrcweir     public XMLDocument( XMultiServiceFactory _orb ) throws Exception
52cdf0e10cSrcweir     {
53cdf0e10cSrcweir         super( _orb, implLoadAsComponent( _orb, getDocumentFactoryURL( DocumentType.XMLFORM ) ) );
54cdf0e10cSrcweir         impl_initialize( getDocument() );
55cdf0e10cSrcweir     }
56cdf0e10cSrcweir 
57cdf0e10cSrcweir     /* ------------------------------------------------------------------ */
XMLDocument( XMultiServiceFactory _orb, XComponent _document )58cdf0e10cSrcweir     public XMLDocument( XMultiServiceFactory _orb, XComponent _document )
59cdf0e10cSrcweir     {
60cdf0e10cSrcweir         super( _orb, _document );
61cdf0e10cSrcweir         impl_initialize( _document );
62cdf0e10cSrcweir     }
63cdf0e10cSrcweir 
64cdf0e10cSrcweir     /* ------------------------------------------------------------------ */
impl_initialize( XComponent _document )65cdf0e10cSrcweir     private void impl_initialize( XComponent _document )
66cdf0e10cSrcweir     {
67cdf0e10cSrcweir         m_formsSupplier = (XFormsSupplier)UnoRuntime.queryInterface( XFormsSupplier.class,
68cdf0e10cSrcweir             _document );
69cdf0e10cSrcweir 
70cdf0e10cSrcweir         if ( m_formsSupplier == null )
71cdf0e10cSrcweir             throw new IllegalArgumentException();
72cdf0e10cSrcweir 
73cdf0e10cSrcweir         m_forms = m_formsSupplier.getXForms();
74cdf0e10cSrcweir     }
75cdf0e10cSrcweir 
76cdf0e10cSrcweir     /* ------------------------------------------------------------------ */
getXFormModelNames()77cdf0e10cSrcweir     public String[] getXFormModelNames()
78cdf0e10cSrcweir     {
79cdf0e10cSrcweir         return m_forms.getElementNames();
80cdf0e10cSrcweir     }
81cdf0e10cSrcweir 
82cdf0e10cSrcweir     /* ------------------------------------------------------------------ */
getXFormModel( String _modelName )83cdf0e10cSrcweir     public Model getXFormModel( String _modelName ) throws NoSuchElementException
84cdf0e10cSrcweir     {
85cdf0e10cSrcweir         try
86cdf0e10cSrcweir         {
87cdf0e10cSrcweir             return new Model(m_forms.getByName(_modelName));
88cdf0e10cSrcweir         }
89cdf0e10cSrcweir         catch (WrappedTargetException ex)
90cdf0e10cSrcweir         {
91cdf0e10cSrcweir             throw new NoSuchElementException();
92cdf0e10cSrcweir         }
93cdf0e10cSrcweir     }
94cdf0e10cSrcweir 
95cdf0e10cSrcweir     /* ------------------------------------------------------------------ */
addXFormModel( String _modelName )96cdf0e10cSrcweir     public Model addXFormModel( String _modelName )
97cdf0e10cSrcweir     {
98cdf0e10cSrcweir         XModel newModel = null;
99cdf0e10cSrcweir         try
100cdf0e10cSrcweir         {
101cdf0e10cSrcweir             newModel = (XModel) UnoRuntime.queryInterface( XModel.class,
102cdf0e10cSrcweir                 getOrb().createInstance( "com.sun.star.xforms.Model" ) );
103cdf0e10cSrcweir             newModel.setID(_modelName);
104cdf0e10cSrcweir             XFormsUIHelper1 modelHelper = (XFormsUIHelper1) UnoRuntime.queryInterface(
105cdf0e10cSrcweir                 XFormsUIHelper1.class, newModel );
106cdf0e10cSrcweir             modelHelper.newInstance( "Instance 1", new String(), true );
107cdf0e10cSrcweir             newModel.initialize();
108cdf0e10cSrcweir 
109cdf0e10cSrcweir             m_forms.insertByName(_modelName, newModel);
110cdf0e10cSrcweir         }
111cdf0e10cSrcweir         catch (Exception ex)
112cdf0e10cSrcweir         {
113cdf0e10cSrcweir             ex.printStackTrace();
114cdf0e10cSrcweir         }
115cdf0e10cSrcweir         return new Model( newModel );
116cdf0e10cSrcweir     }
117cdf0e10cSrcweir }
118