Branch data Line data Source code
1 : : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 : : /*************************************************************************
3 : : *
4 : : * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
5 : : *
6 : : * Copyright 2000, 2010 Oracle and/or its affiliates.
7 : : *
8 : : * OpenOffice.org - a multi-platform office productivity suite
9 : : *
10 : : * This file is part of OpenOffice.org.
11 : : *
12 : : * OpenOffice.org is free software: you can redistribute it and/or modify
13 : : * it under the terms of the GNU Lesser General Public License version 3
14 : : * only, as published by the Free Software Foundation.
15 : : *
16 : : * OpenOffice.org is distributed in the hope that it will be useful,
17 : : * but WITHOUT ANY WARRANTY; without even the implied warranty of
18 : : * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 : : * GNU Lesser General Public License version 3 for more details
20 : : * (a copy is included in the LICENSE file that accompanied this code).
21 : : *
22 : : * You should have received a copy of the GNU Lesser General Public License
23 : : * version 3 along with OpenOffice.org. If not, see
24 : : * <http://www.openoffice.org/license.html>
25 : : * for a copy of the LGPLv3 License.
26 : : *
27 : : ************************************************************************/
28 : :
29 : :
30 : : #include <sal/macros.h>
31 : : #include "datanavi.hxx"
32 : : #include "fmservs.hxx"
33 : :
34 : : #include "datanavi.hrc"
35 : : #include "svx/fmresids.hrc"
36 : : #include "fmhelp.hrc"
37 : : #include <svx/svxids.hrc>
38 : : #include <tools/rcid.h>
39 : : #include <tools/diagnose_ex.h>
40 : : #include "svx/xmlexchg.hxx"
41 : : #include <svx/dialmgr.hxx>
42 : : #include <svx/fmshell.hxx>
43 : : #include <svtools/miscopt.hxx>
44 : : #include <unotools/pathoptions.hxx>
45 : : #include <unotools/viewoptions.hxx>
46 : : #include <svtools/svtools.hrc>
47 : : #include <sfx2/app.hxx>
48 : : #include <sfx2/filedlghelper.hxx>
49 : : #include <sfx2/objitem.hxx>
50 : : #include <sfx2/viewfrm.hxx>
51 : : #include <sfx2/objsh.hxx>
52 : : #include <sfx2/bindings.hxx>
53 : : #include <sfx2/dispatch.hxx>
54 : : #include <com/sun/star/beans/PropertyAttribute.hpp>
55 : : #include <com/sun/star/container/XSet.hpp>
56 : : #include <com/sun/star/datatransfer/XTransferable.hpp>
57 : : #include <com/sun/star/frame/XController.hpp>
58 : : #include <com/sun/star/frame/XFramesSupplier.hpp>
59 : : #include <com/sun/star/frame/XModel.hpp>
60 : : #include "com/sun/star/ui/dialogs/TemplateDescription.hpp"
61 : : #include <com/sun/star/xforms/XFormsSupplier.hpp>
62 : : #include <com/sun/star/xml/dom/XDocument.hpp>
63 : : #include <com/sun/star/xml/dom/DOMException.hpp>
64 : : #include <com/sun/star/form/binding/XValueBinding.hpp>
65 : : #include <comphelper/processfactory.hxx>
66 : : #include <comphelper/string.hxx>
67 : : #include <rtl/logfile.hxx>
68 : :
69 : : using namespace ::com::sun::star::beans;
70 : : using namespace ::com::sun::star::container;
71 : : using namespace ::com::sun::star::datatransfer;
72 : : using namespace ::com::sun::star::frame;
73 : : using namespace ::com::sun::star::uno;
74 : : using namespace ::com::sun::star::xml::dom::events;
75 : : using namespace ::svx;
76 : :
77 : : namespace css = ::com::sun::star;
78 : :
79 : : #define CFGNAME_DATANAVIGATOR DEFINE_CONST_UNICODE("DataNavigator")
80 : : #define CFGNAME_SHOWDETAILS DEFINE_CONST_UNICODE("ShowDetails")
81 : : #define MSG_VARIABLE DEFINE_CONST_UNICODE("%1")
82 : : #define MODELNAME DEFINE_CONST_UNICODE("$MODELNAME")
83 : : #define INSTANCENAME DEFINE_CONST_UNICODE("$INSTANCENAME")
84 : : #define ELEMENTNAME DEFINE_CONST_UNICODE("$ELEMENTNAME")
85 : : #define ATTRIBUTENAME DEFINE_CONST_UNICODE("$ATTRIBUTENAME")
86 : : #define SUBMISSIONNAME DEFINE_CONST_UNICODE("$SUBMISSIONNAME")
87 : : #define BINDINGNAME DEFINE_CONST_UNICODE("$BINDINGNAME")
88 : :
89 : : //............................................................................
90 : : namespace svxform
91 : : {
92 : : //............................................................................
93 : :
94 : : // properties of instance
95 : : #define PN_INSTANCE_MODEL ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "Instance" ) )
96 : : #define PN_INSTANCE_ID ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "ID" ) )
97 : : #define PN_INSTANCE_URL ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "URL" ) )
98 : :
99 : : // properties of binding
100 : : #define PN_BINDING_ID ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "BindingID" ) )
101 : : #define PN_BINDING_EXPR ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "BindingExpression" ) )
102 : : #define PN_BINDING_MODEL ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "Model" ) )
103 : : #define PN_BINDING_NAMESPACES ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "ModelNamespaces" ) )
104 : : #define PN_READONLY_EXPR ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "ReadonlyExpression" ) )
105 : : #define PN_RELEVANT_EXPR ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "RelevantExpression" ) )
106 : : #define PN_REQUIRED_EXPR ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "RequiredExpression" ) )
107 : : #define PN_CONSTRAINT_EXPR ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "ConstraintExpression" ) )
108 : : #define PN_CALCULATE_EXPR ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "CalculateExpression" ) )
109 : : #define PN_BINDING_TYPE ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "Type" ) )
110 : :
111 : : // properties of submission
112 : : #define PN_SUBMISSION_ID ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "ID" ) )
113 : : #define PN_SUBMISSION_BIND ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "Bind" ) )
114 : : #define PN_SUBMISSION_REF ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "Ref" ) )
115 : : #define PN_SUBMISSION_ACTION ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "Action" ) )
116 : : #define PN_SUBMISSION_METHOD ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "Method" ) )
117 : : #define PN_SUBMISSION_REPLACE ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "Replace" ) )
118 : :
119 : : // other const strings
120 : : #define TRUE_VALUE ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "true()" ) )
121 : : #define NEW_ELEMENT ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "newElement" ) )
122 : : #define NEW_ATTRIBUTE ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "newAttribute" ) )
123 : : #define EVENTTYPE_CHARDATA ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "DOMCharacterDataModified" ) )
124 : : #define EVENTTYPE_ATTR ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "DOMAttrModified" ) )
125 : :
126 : : #define MIN_PAGE_COUNT 3 // at least one instance, one submission and one binding page
127 : :
128 : 0 : struct ItemNode
129 : : {
130 : : Reference< css::xml::dom::XNode > m_xNode;
131 : : Reference< XPropertySet > m_xPropSet;
132 : :
133 : 0 : ItemNode( const Reference< css::xml::dom::XNode >& _rxNode ) :
134 : 0 : m_xNode( _rxNode ) {}
135 : 0 : ItemNode( const Reference< XPropertySet >& _rxSet ) :
136 : 0 : m_xPropSet( _rxSet ) {}
137 : :
138 : : DataGroupType GetDataGroupType() const;
139 : : };
140 : :
141 : : //========================================================================
142 : : // class DataTreeListBox
143 : : //========================================================================
144 : 0 : DataTreeListBox::DataTreeListBox( XFormsPage* pPage, DataGroupType _eGroup, const ResId& rResId ) :
145 : :
146 : : SvTreeListBox( pPage, rResId ),
147 : :
148 : : m_pXFormsPage ( pPage ),
149 : 0 : m_eGroup ( _eGroup )
150 : :
151 : : {
152 [ # # ]: 0 : EnableContextMenuHandling();
153 : :
154 [ # # ]: 0 : if ( DGTInstance == m_eGroup )
155 [ # # ]: 0 : SetDragDropMode( SV_DRAGDROP_CTRL_MOVE |SV_DRAGDROP_CTRL_COPY | SV_DRAGDROP_APP_COPY );
156 : 0 : }
157 : :
158 : 0 : DataTreeListBox::~DataTreeListBox()
159 : : {
160 [ # # ]: 0 : DeleteAndClear();
161 [ # # ]: 0 : }
162 : :
163 : 0 : sal_Int8 DataTreeListBox::AcceptDrop( const AcceptDropEvent& /*rEvt*/ )
164 : : {
165 : 0 : return DND_ACTION_NONE;
166 : : }
167 : 0 : sal_Int8 DataTreeListBox::ExecuteDrop( const ExecuteDropEvent& /*rEvt*/ )
168 : : {
169 : 0 : return DND_ACTION_NONE;
170 : : }
171 : 0 : void DataTreeListBox::StartDrag( sal_Int8 /*_nAction*/, const Point& /*_rPosPixel*/ )
172 : : {
173 [ # # ]: 0 : SvLBoxEntry* pSelected = FirstSelected();
174 [ # # ]: 0 : if ( !pSelected )
175 : : // no drag without an entry
176 : : return;
177 : :
178 [ # # ]: 0 : if ( m_eGroup == DGTBinding )
179 : : // for the moment, bindings cannot be dragged.
180 : : // #i59395# / 2005-12-15 / frank.schoenheit@sun.com
181 : : return;
182 : :
183 : : // GetServiceNameForNode() requires a datatype repository which
184 : : // will be automatically build if requested???
185 [ # # ][ # # ]: 0 : Reference< css::xforms::XModel > xModel( m_pXFormsPage->GetXFormsHelper(), UNO_QUERY );
186 : : Reference< css::xforms::XDataTypeRepository > xDataTypes =
187 [ # # ][ # # ]: 0 : xModel->getDataTypeRepository();
188 [ # # ]: 0 : if(!xDataTypes.is())
189 : : return;
190 : :
191 : : using namespace ::com::sun::star::uno;
192 : :
193 : 0 : ItemNode *pItemNode = static_cast<ItemNode*>(pSelected->GetUserData());
194 : :
195 [ # # ]: 0 : if ( !pItemNode )
196 : : {
197 : : // the only known (and allowed?) case where this happens are sub-entries of a submission
198 : : // entry
199 : : DBG_ASSERT( DGTSubmission == m_eGroup, "DataTreeListBox::StartDrag: how this?" );
200 [ # # ]: 0 : pSelected = GetParent( pSelected );
201 : : DBG_ASSERT( pSelected && !GetParent( pSelected ), "DataTreeListBox::StartDrag: what kind of entry *is* this?" );
202 : : // on the submission page, we have only top-level entries (the submission themself)
203 : : // plus direct children of those (facets of a submission)
204 [ # # ]: 0 : pItemNode = pSelected ? static_cast< ItemNode* >( pSelected->GetUserData() ) : NULL;
205 [ # # ]: 0 : if ( !pItemNode )
206 : : return;
207 : : }
208 : :
209 [ # # ]: 0 : OXFormsDescriptor desc;
210 [ # # ][ # # ]: 0 : desc.szName = GetEntryText(pSelected);
[ # # ]
211 [ # # ]: 0 : if(pItemNode->m_xNode.is()) {
212 : : // a valid node interface tells us that we need to create a control from a binding
213 [ # # ][ # # ]: 0 : desc.szServiceName = m_pXFormsPage->GetServiceNameForNode(pItemNode->m_xNode);
[ # # ]
214 [ # # ][ # # ]: 0 : desc.xPropSet = m_pXFormsPage->GetBindingForNode(pItemNode->m_xNode);
215 : : DBG_ASSERT( desc.xPropSet.is(), "DataTreeListBox::StartDrag(): invalid node binding" );
216 : : }
217 : : else {
218 [ # # ][ # # ]: 0 : desc.szServiceName = FM_COMPONENT_COMMANDBUTTON;
219 [ # # ]: 0 : desc.xPropSet = pItemNode->m_xPropSet;
220 : : }
221 [ # # ]: 0 : OXFormsTransferable *pTransferable = new OXFormsTransferable(desc);
222 [ # # ][ # # ]: 0 : Reference< XTransferable > xEnsureDelete = pTransferable;
223 [ # # ]: 0 : if(pTransferable) {
224 [ # # ]: 0 : EndSelection();
225 [ # # ]: 0 : pTransferable->StartDrag( this, DND_ACTION_COPY );
226 [ # # ][ # # ]: 0 : }
[ # # ]
227 : : }
228 : :
229 : 0 : PopupMenu* DataTreeListBox::CreateContextMenu()
230 : : {
231 [ # # ][ # # ]: 0 : PopupMenu* pMenu = new PopupMenu( SVX_RES( RID_MENU_DATANAVIGATOR ) );
232 [ # # ]: 0 : if ( DGTInstance == m_eGroup )
233 : 0 : pMenu->RemoveItem( pMenu->GetItemPos( TBI_ITEM_ADD ) );
234 : : else
235 : : {
236 : 0 : pMenu->RemoveItem( pMenu->GetItemPos( TBI_ITEM_ADD_ELEMENT ) );
237 : 0 : pMenu->RemoveItem( pMenu->GetItemPos( TBI_ITEM_ADD_ATTRIBUTE ) );
238 : :
239 [ # # ]: 0 : if ( DGTSubmission == m_eGroup )
240 : : {
241 [ # # ][ # # ]: 0 : pMenu->SetItemText( TBI_ITEM_ADD, SVX_RESSTR( RID_STR_DATANAV_ADD_SUBMISSION ) );
[ # # ][ # # ]
242 [ # # ][ # # ]: 0 : pMenu->SetItemText( TBI_ITEM_EDIT, SVX_RESSTR( RID_STR_DATANAV_EDIT_SUBMISSION ) );
[ # # ][ # # ]
243 [ # # ][ # # ]: 0 : pMenu->SetItemText( TBI_ITEM_REMOVE, SVX_RESSTR( RID_STR_DATANAV_REMOVE_SUBMISSION ) );
[ # # ][ # # ]
244 : : }
245 : : else
246 : : {
247 [ # # ][ # # ]: 0 : pMenu->SetItemText( TBI_ITEM_ADD, SVX_RESSTR( RID_STR_DATANAV_ADD_BINDING ) );
[ # # ][ # # ]
248 [ # # ][ # # ]: 0 : pMenu->SetItemText( TBI_ITEM_EDIT, SVX_RESSTR( RID_STR_DATANAV_EDIT_BINDING ) );
[ # # ][ # # ]
249 [ # # ][ # # ]: 0 : pMenu->SetItemText( TBI_ITEM_REMOVE, SVX_RESSTR( RID_STR_DATANAV_REMOVE_BINDING ) );
[ # # ][ # # ]
250 : : }
251 : : }
252 : 0 : m_pXFormsPage->EnableMenuItems( pMenu );
253 : 0 : return pMenu;
254 : : }
255 : :
256 : 0 : void DataTreeListBox::ExcecuteContextMenuAction( sal_uInt16 _nSelectedPopupEntry )
257 : : {
258 : 0 : m_pXFormsPage->DoMenuAction( _nSelectedPopupEntry );
259 : 0 : }
260 : :
261 : 0 : void DataTreeListBox::RemoveEntry( SvLBoxEntry* _pEntry )
262 : : {
263 [ # # ]: 0 : if ( _pEntry )
264 : : {
265 [ # # ]: 0 : delete static_cast< ItemNode* >( _pEntry->GetUserData() );
266 : 0 : SvTreeListBox::GetModel()->Remove( _pEntry );
267 : : }
268 : 0 : }
269 : :
270 : 0 : void DataTreeListBox::DeleteAndClear()
271 : : {
272 : 0 : sal_uIntPtr i, nCount = GetEntryCount();
273 [ # # ]: 0 : for ( i = 0; i < nCount; ++i )
274 : : {
275 : 0 : SvLBoxEntry* pEntry = GetEntry(i);
276 [ # # ]: 0 : if ( pEntry )
277 [ # # ]: 0 : delete static_cast< ItemNode* >( pEntry->GetUserData() );
278 : : }
279 : :
280 : 0 : Clear();
281 : 0 : }
282 : :
283 : : //========================================================================
284 : : // class XFormsPage
285 : : //========================================================================
286 : 0 : XFormsPage::XFormsPage( Window* pParent, DataNavigatorWindow* _pNaviWin, DataGroupType _eGroup ) :
287 : :
288 : 0 : TabPage( pParent, SVX_RES( RID_SVX_XFORMS_TABPAGES ) ),
289 : :
290 [ # # ]: 0 : m_aToolBox ( this, SVX_RES( TB_ITEMS ) ),
291 [ # # ]: 0 : m_aItemList ( this, _eGroup, SVX_RES( LB_ITEMS ) ),
292 : : m_pNaviWin ( _pNaviWin ),
293 : : m_bHasModel ( false ),
294 : : m_eGroup ( _eGroup ),
295 [ # # ]: 0 : m_TbxImageList ( SVX_RES( IL_TBX_BMPS ) ),
296 [ # # ][ # # ]: 0 : m_bLinkOnce ( false )
[ # # ][ # # ]
[ # # ][ # # ]
297 : :
298 : : {
299 [ # # ]: 0 : FreeResource();
300 : :
301 : 0 : const ImageList& rImageList = m_TbxImageList;
302 [ # # ][ # # ]: 0 : m_aToolBox.SetItemImage( TBI_ITEM_ADD, rImageList.GetImage( IID_ITEM_ADD ) );
[ # # ]
303 [ # # ][ # # ]: 0 : m_aToolBox.SetItemImage( TBI_ITEM_ADD_ELEMENT, rImageList.GetImage( IID_ITEM_ADD_ELEMENT ) );
[ # # ]
304 [ # # ][ # # ]: 0 : m_aToolBox.SetItemImage( TBI_ITEM_ADD_ATTRIBUTE, rImageList.GetImage( IID_ITEM_ADD_ATTRIBUTE ) );
[ # # ]
305 [ # # ][ # # ]: 0 : m_aToolBox.SetItemImage( TBI_ITEM_EDIT, rImageList.GetImage( IID_ITEM_EDIT ) );
[ # # ]
306 [ # # ][ # # ]: 0 : m_aToolBox.SetItemImage( TBI_ITEM_REMOVE, rImageList.GetImage( IID_ITEM_REMOVE ) );
[ # # ]
307 : :
308 [ # # ]: 0 : if ( DGTInstance == m_eGroup )
309 [ # # ][ # # ]: 0 : m_aToolBox.RemoveItem( m_aToolBox.GetItemPos( TBI_ITEM_ADD ) );
310 : : else
311 : : {
312 [ # # ][ # # ]: 0 : m_aToolBox.RemoveItem( m_aToolBox.GetItemPos( TBI_ITEM_ADD_ELEMENT ) );
313 [ # # ][ # # ]: 0 : m_aToolBox.RemoveItem( m_aToolBox.GetItemPos( TBI_ITEM_ADD_ATTRIBUTE ) );
314 : :
315 [ # # ]: 0 : if ( DGTSubmission == m_eGroup )
316 : : {
317 [ # # ][ # # ]: 0 : m_aToolBox.SetItemText( TBI_ITEM_ADD, SVX_RESSTR( RID_STR_DATANAV_ADD_SUBMISSION ) );
[ # # ][ # # ]
[ # # ]
318 [ # # ][ # # ]: 0 : m_aToolBox.SetItemText( TBI_ITEM_EDIT, SVX_RESSTR( RID_STR_DATANAV_EDIT_SUBMISSION ) );
[ # # ][ # # ]
[ # # ]
319 [ # # ][ # # ]: 0 : m_aToolBox.SetItemText( TBI_ITEM_REMOVE, SVX_RESSTR( RID_STR_DATANAV_REMOVE_SUBMISSION ) );
[ # # ][ # # ]
[ # # ]
320 : : }
321 : : else
322 : : {
323 [ # # ][ # # ]: 0 : m_aToolBox.SetItemText( TBI_ITEM_ADD, SVX_RESSTR( RID_STR_DATANAV_ADD_BINDING ) );
[ # # ][ # # ]
[ # # ]
324 [ # # ][ # # ]: 0 : m_aToolBox.SetItemText( TBI_ITEM_EDIT, SVX_RESSTR( RID_STR_DATANAV_EDIT_BINDING ) );
[ # # ][ # # ]
[ # # ]
325 [ # # ][ # # ]: 0 : m_aToolBox.SetItemText( TBI_ITEM_REMOVE, SVX_RESSTR( RID_STR_DATANAV_REMOVE_BINDING ) );
[ # # ][ # # ]
[ # # ]
326 : : }
327 : : }
328 : :
329 [ # # ]: 0 : const Size aTbxSz( m_aToolBox.CalcWindowSizePixel() );
330 [ # # ]: 0 : m_aToolBox.SetSizePixel( aTbxSz );
331 [ # # ][ # # ]: 0 : m_aToolBox.SetOutStyle( SvtMiscOptions().GetToolboxStyle() );
[ # # ][ # # ]
332 [ # # ]: 0 : m_aToolBox.SetSelectHdl( LINK( this, XFormsPage, TbxSelectHdl ) );
333 [ # # ]: 0 : Point aPos = m_aItemList.GetPosPixel();
334 : 0 : aPos.Y() = aTbxSz.Height();
335 [ # # ]: 0 : m_aItemList.SetPosPixel( aPos );
336 : :
337 [ # # ]: 0 : m_aItemList.SetSelectHdl( LINK( this, XFormsPage, ItemSelectHdl ) );
338 [ # # ]: 0 : m_aItemList.SetNodeDefaultImages();
339 : 0 : WinBits nBits = WB_BORDER | WB_TABSTOP | WB_HIDESELECTION | WB_NOINITIALSELECTION;
340 [ # # ][ # # ]: 0 : if ( DGTInstance == m_eGroup || DGTSubmission == m_eGroup )
341 : 0 : nBits |= WB_HASBUTTONS | WB_HASLINES | WB_HASLINESATROOT | WB_HASBUTTONSATROOT;
342 [ # # ][ # # ]: 0 : m_aItemList.SetStyle( m_aItemList.GetStyle() | nBits );
343 [ # # ]: 0 : m_aItemList.Show();
344 [ # # ]: 0 : ItemSelectHdl( &m_aItemList );
345 : 0 : }
346 : : //------------------------------------------------------------------------
347 [ # # ][ # # ]: 0 : XFormsPage::~XFormsPage()
[ # # ][ # # ]
[ # # ]
348 : : {
349 [ # # ]: 0 : }
350 : : //------------------------------------------------------------------------
351 : 0 : IMPL_LINK_NOARG(XFormsPage, TbxSelectHdl)
352 : : {
353 : 0 : DoToolBoxAction( m_aToolBox.GetCurItemId() );
354 : 0 : return 0;
355 : : }
356 : : //------------------------------------------------------------------------
357 : 0 : IMPL_LINK_NOARG(XFormsPage, ItemSelectHdl)
358 : : {
359 : 0 : EnableMenuItems( NULL );
360 : 0 : return 0;
361 : : }
362 : : //------------------------------------------------------------------------
363 : 0 : void XFormsPage::AddChildren(
364 : : SvLBoxEntry* _pParent, const ImageList& _rImgLst,
365 : : const Reference< css::xml::dom::XNode >& _xNode )
366 : : {
367 : : DBG_ASSERT( m_xUIHelper.is(), "XFormsPage::AddChildren(): invalid UIHelper" );
368 : :
369 : : try
370 : : {
371 [ # # ][ # # ]: 0 : Reference< css::xml::dom::XNodeList > xNodeList = _xNode->getChildNodes();
372 [ # # ]: 0 : if ( xNodeList.is() )
373 : : {
374 : 0 : bool bShowDetails = m_pNaviWin->IsShowDetails();
375 [ # # ][ # # ]: 0 : sal_Int32 i, nNodeCount = xNodeList->getLength();
376 [ # # ]: 0 : for ( i = 0; i < nNodeCount; ++i )
377 : : {
378 [ # # ][ # # ]: 0 : Reference< css::xml::dom::XNode > xChild = xNodeList->item(i);
379 [ # # ][ # # ]: 0 : css::xml::dom::NodeType eChildType = xChild->getNodeType();
380 [ # # ][ # # ]: 0 : Image aExpImg, aCollImg;
381 [ # # # # ]: 0 : switch ( eChildType )
382 : : {
383 : : case css::xml::dom::NodeType_ATTRIBUTE_NODE:
384 [ # # ][ # # ]: 0 : aExpImg = aCollImg = _rImgLst.GetImage( IID_ATTRIBUTE );
[ # # ][ # # ]
385 : 0 : break;
386 : : case css::xml::dom::NodeType_ELEMENT_NODE:
387 [ # # ][ # # ]: 0 : aExpImg = aCollImg = _rImgLst.GetImage( IID_ELEMENT );
[ # # ][ # # ]
388 : 0 : break;
389 : : case css::xml::dom::NodeType_TEXT_NODE:
390 [ # # ][ # # ]: 0 : aExpImg = aCollImg = _rImgLst.GetImage( IID_TEXT );
[ # # ][ # # ]
391 : 0 : break;
392 : : default:
393 [ # # ][ # # ]: 0 : aExpImg = aCollImg = _rImgLst.GetImage( IID_OTHER );
[ # # ][ # # ]
394 : : }
395 : :
396 [ # # ][ # # ]: 0 : ::rtl::OUString sName = m_xUIHelper->getNodeDisplayName( xChild, bShowDetails );
397 [ # # ]: 0 : if ( !sName.isEmpty() )
398 : : {
399 [ # # ][ # # ]: 0 : ItemNode* pNode = new ItemNode( xChild );
400 : : SvLBoxEntry* pEntry = m_aItemList.InsertEntry(
401 [ # # ][ # # ]: 0 : sName, aExpImg, aCollImg, _pParent, sal_False, LIST_APPEND, pNode );
[ # # ]
402 [ # # ][ # # ]: 0 : if ( xChild->hasAttributes() )
[ # # ]
403 : : {
404 [ # # ][ # # ]: 0 : Reference< css::xml::dom::XNamedNodeMap > xMap = xChild->getAttributes();
405 [ # # ]: 0 : if ( xMap.is() )
406 : : {
407 [ # # ][ # # ]: 0 : aExpImg = aCollImg = _rImgLst.GetImage( IID_ATTRIBUTE );
[ # # ][ # # ]
408 [ # # ][ # # ]: 0 : sal_Int32 j, nMapLen = xMap->getLength();
409 [ # # ]: 0 : for ( j = 0; j < nMapLen; ++j )
410 : : {
411 [ # # ][ # # ]: 0 : Reference< css::xml::dom::XNode > xAttr = xMap->item(j);
412 [ # # ][ # # ]: 0 : pNode = new ItemNode( xAttr );
413 : : ::rtl::OUString sAttrName =
414 [ # # ][ # # ]: 0 : m_xUIHelper->getNodeDisplayName( xAttr, bShowDetails );
415 : : m_aItemList.InsertEntry(
416 : : sAttrName, aExpImg, aCollImg,
417 [ # # ][ # # ]: 0 : pEntry, sal_False, LIST_APPEND, pNode );
[ # # ]
418 : 0 : }
419 : 0 : }
420 : : }
421 [ # # ][ # # ]: 0 : if ( xChild->hasChildNodes() )
[ # # ]
422 [ # # ]: 0 : AddChildren( pEntry, _rImgLst, xChild );
423 : : }
424 [ # # ][ # # ]: 0 : }
425 [ # # ]: 0 : }
426 : : }
427 : 0 : catch( Exception& )
428 : : {
429 : : DBG_UNHANDLED_EXCEPTION();
430 : : }
431 : 0 : }
432 : : //------------------------------------------------------------------------
433 : 0 : bool XFormsPage::DoToolBoxAction( sal_uInt16 _nToolBoxID ) {
434 : :
435 : 0 : bool bHandled = false;
436 : 0 : bool bIsDocModified = false;
437 : 0 : m_pNaviWin->DisableNotify( true );
438 : :
439 [ # # # # : 0 : switch ( _nToolBoxID )
# ]
440 : : {
441 : : case TBI_ITEM_ADD:
442 : : case TBI_ITEM_ADD_ELEMENT:
443 : : case TBI_ITEM_ADD_ATTRIBUTE:
444 : : {
445 : 0 : bHandled = true;
446 [ # # ]: 0 : Reference< css::xforms::XModel > xModel( m_xUIHelper, UNO_QUERY );
447 : : DBG_ASSERT( xModel.is(), "XFormsPage::DoToolBoxAction(): Action without model" );
448 [ # # ]: 0 : if ( DGTSubmission == m_eGroup )
449 : : {
450 [ # # ]: 0 : AddSubmissionDialog aDlg( this, NULL, m_xUIHelper );
451 [ # # ][ # # ]: 0 : if ( aDlg.Execute() == RET_OK && aDlg.GetNewSubmission().is() )
[ # # ][ # # ]
452 : : {
453 : : try
454 : : {
455 : 0 : Reference< css::xforms::XSubmission > xNewSubmission = aDlg.GetNewSubmission();
456 [ # # ][ # # ]: 0 : Reference< XSet > xSubmissions( xModel->getSubmissions(), UNO_QUERY );
[ # # ]
457 [ # # ][ # # ]: 0 : xSubmissions->insert( makeAny( xNewSubmission ) );
[ # # ]
458 [ # # ]: 0 : Reference< XPropertySet > xNewPropSet( xNewSubmission, UNO_QUERY );
459 [ # # ]: 0 : SvLBoxEntry* pEntry = AddEntry( xNewPropSet );
460 [ # # ]: 0 : m_aItemList.Select( pEntry, sal_True );
461 [ # # ]: 0 : bIsDocModified = true;
462 : : }
463 [ # # ]: 0 : catch ( Exception& )
464 : : {
465 : : SAL_WARN( "svx.form", "XFormsPage::DoToolBoxAction(): exception while adding submission" );
466 : : }
467 [ # # ]: 0 : }
468 : : }
469 : : else
470 : : {
471 : 0 : DataItemType eType = DITElement;
472 [ # # ]: 0 : SvLBoxEntry* pEntry = m_aItemList.FirstSelected();
473 : 0 : ItemNode* pNode = NULL;
474 : 0 : Reference< css::xml::dom::XNode > xParentNode;
475 : 0 : Reference< XPropertySet > xNewBinding;
476 : 0 : sal_uInt16 nResId = 0;
477 : 0 : bool bIsElement = true;
478 [ # # ]: 0 : if ( DGTInstance == m_eGroup )
479 : : {
480 [ # # ]: 0 : if ( m_sInstanceURL.Len() > 0 )
481 : : {
482 [ # # ]: 0 : LinkedInstanceWarningBox aMsgBox( this );
483 [ # # ][ # # ]: 0 : if ( aMsgBox.Execute() != RET_OK )
484 [ # # ][ # # ]: 0 : return bHandled;
485 : : }
486 : :
487 : : DBG_ASSERT( pEntry, "XFormsPage::DoToolBoxAction(): no entry" );
488 : 0 : ItemNode* pParentNode = static_cast< ItemNode* >( pEntry->GetUserData() );
489 : : DBG_ASSERT( pParentNode, "XFormsPage::DoToolBoxAction(): no parent node" );
490 [ # # ]: 0 : xParentNode = pParentNode->m_xNode;
491 : 0 : Reference< css::xml::dom::XNode > xNewNode;
492 [ # # ]: 0 : if ( TBI_ITEM_ADD_ELEMENT == _nToolBoxID )
493 : : {
494 : : try
495 : : {
496 : 0 : nResId = RID_STR_DATANAV_ADD_ELEMENT;
497 [ # # ][ # # ]: 0 : xNewNode = m_xUIHelper->createElement( xParentNode, NEW_ELEMENT );
[ # # ][ # # ]
[ # # ]
498 : : }
499 [ # # ]: 0 : catch ( Exception& )
500 : : {
501 : : SAL_WARN( "svx.form", "XFormsPage::DoToolBoxAction(): exception while create element" );
502 : : }
503 : : }
504 : : else
505 : : {
506 : 0 : nResId = RID_STR_DATANAV_ADD_ATTRIBUTE;
507 : 0 : bIsElement = false;
508 : 0 : eType = DITAttribute;
509 : : try
510 : : {
511 [ # # ][ # # ]: 0 : xNewNode = m_xUIHelper->createAttribute( xParentNode, NEW_ATTRIBUTE );
[ # # ][ # # ]
[ # # ]
512 : : }
513 [ # # ]: 0 : catch ( Exception& )
514 : : {
515 : : SAL_WARN( "svx.form", "XFormsPage::DoToolBoxAction(): exception while create attribute" );
516 : : }
517 : : }
518 : :
519 : : try
520 : : {
521 [ # # ][ # # ]: 0 : xNewNode = xParentNode->appendChild( xNewNode );
[ # # ]
[ # # # ]
522 : : }
523 [ # # ]: 0 : catch ( css::xml::dom::DOMException& e )
524 : : {
525 : 0 : if ( e.Code == css::xml::dom::DOMExceptionType_DOMSTRING_SIZE_ERR )
526 : : {
527 : : SAL_WARN( "svx.form", "XFormsPage::DoToolBoxAction(): domexception: size error" );
528 : : }
529 : : SAL_WARN( "svx.form", "XFormsPage::DoToolBoxAction(): domexception while append child" );
530 : : }
531 [ # # ]: 0 : catch ( Exception& )
532 : : {
533 : : SAL_WARN( "svx.form", "XFormsPage::DoToolBoxAction(): exception while append child" );
534 : : }
535 : :
536 : : try
537 : : {
538 : 0 : Reference< css::xml::dom::XNode > xPNode;
539 [ # # ]: 0 : if ( xNewNode.is() )
540 [ # # ][ # # ]: 0 : xPNode = xNewNode->getParentNode();
[ # # ]
541 : : // attributes don't have parents in the DOM model
542 : : DBG_ASSERT( TBI_ITEM_ADD_ATTRIBUTE == _nToolBoxID
543 [ # # ]: 0 : || xPNode.is(), "XFormsPage::DoToolboxAction(): node not added" );
544 : : }
545 [ # # # # ]: 0 : catch ( Exception& )
546 : : {
547 : : SAL_WARN( "svx.form", "XFormsPage::DoToolboxAction(): exception caught" );
548 : : }
549 : :
550 : : try
551 : : {
552 [ # # ][ # # ]: 0 : m_xUIHelper->getBindingForNode( xNewNode, sal_True );
553 : : }
554 [ # # ]: 0 : catch ( Exception& )
555 : : {
556 : : SAL_WARN( "svx.form", "XFormsPage::DoToolBoxAction(): exception while get binding for node" );
557 : : }
558 [ # # ][ # # ]: 0 : pNode = new ItemNode( xNewNode );
559 : : }
560 : : else
561 : : {
562 : : try
563 : : {
564 : 0 : nResId = RID_STR_DATANAV_ADD_BINDING;
565 [ # # ][ # # ]: 0 : xNewBinding = xModel->createBinding();
[ # # ]
566 [ # # ][ # # ]: 0 : Reference< XSet > xBindings( xModel->getBindings(), UNO_QUERY );
[ # # ]
567 [ # # ][ # # ]: 0 : xBindings->insert( makeAny( xNewBinding ) );
[ # # ]
568 [ # # ][ # # ]: 0 : pNode = new ItemNode( xNewBinding );
569 [ # # ]: 0 : eType = DITBinding;
570 : : }
571 [ # # ]: 0 : catch ( Exception& )
572 : : {
573 : : SAL_WARN( "svx.form", "XFormsPage::DoToolBoxAction(): exception while adding binding" );
574 : : }
575 : : }
576 : :
577 [ # # ]: 0 : AddDataItemDialog aDlg( this, pNode, m_xUIHelper );
578 [ # # ][ # # ]: 0 : aDlg.SetText( SVX_RESSTR( nResId ) );
[ # # ][ # # ]
[ # # ]
579 [ # # ]: 0 : aDlg.InitText( eType );
580 [ # # ]: 0 : short nReturn = aDlg.Execute();
581 [ # # ]: 0 : if ( DGTInstance == m_eGroup )
582 : : {
583 [ # # ]: 0 : if ( RET_OK == nReturn )
584 : : {
585 [ # # ]: 0 : SvLBoxEntry* pNewEntry = AddEntry( pNode, bIsElement );
586 [ # # ]: 0 : m_aItemList.MakeVisible( pNewEntry );
587 [ # # ]: 0 : m_aItemList.Select( pNewEntry, sal_True );
588 : 0 : bIsDocModified = true;
589 : : }
590 : : else
591 : : {
592 : : try
593 : : {
594 : 0 : Reference< css::xml::dom::XNode > xPNode;
595 : : Reference< css::xml::dom::XNode > xNode =
596 [ # # ][ # # ]: 0 : xParentNode->removeChild( pNode->m_xNode );
597 [ # # ]: 0 : if ( xNode.is() )
598 [ # # ][ # # ]: 0 : xPNode = xNode->getParentNode();
[ # # ]
599 : : DBG_ASSERT( !xPNode.is(), "XFormsPage::RemoveEntry(): node not removed" );
600 [ # # ][ # # ]: 0 : delete pNode;
[ # # ]
601 : : }
602 [ # # ]: 0 : catch ( Exception& )
603 : : {
604 : : SAL_WARN( "svx.form", "XFormsPage::DoToolboxAction(): exception caught" );
605 : : }
606 : : }
607 : : }
608 : : else
609 : : {
610 [ # # ]: 0 : if ( RET_OK == nReturn )
611 : : {
612 [ # # ]: 0 : SvLBoxEntry* pNewEntry = AddEntry( xNewBinding );
613 [ # # ]: 0 : m_aItemList.Select( pNewEntry, sal_True );
614 : 0 : bIsDocModified = true;
615 : : }
616 : : else
617 : : {
618 : : try
619 : : {
620 [ # # ][ # # ]: 0 : Reference< XSet > xBindings( xModel->getBindings(), UNO_QUERY );
[ # # ]
621 [ # # ][ # # ]: 0 : xBindings->remove( makeAny( xNewBinding ) );
[ # # ][ # # ]
622 : : }
623 [ # # ]: 0 : catch ( Exception& )
624 : : {
625 : : SAL_WARN( "svx.form", "XFormsPage::DoToolboxAction(): exception caught" );
626 : : }
627 : : }
628 [ # # ][ # # ]: 0 : delete pNode;
629 [ # # ][ # # ]: 0 : }
[ # # ]
630 [ # # ]: 0 : }
631 : : }
632 : 0 : break;
633 : :
634 : : case TBI_ITEM_EDIT:
635 : : {
636 : 0 : bHandled = true;
637 : 0 : SvLBoxEntry* pEntry = m_aItemList.FirstSelected();
638 [ # # ]: 0 : if ( pEntry )
639 : : {
640 [ # # ][ # # ]: 0 : if ( DGTSubmission == m_eGroup && m_aItemList.GetParent( pEntry ) )
[ # # ]
641 : 0 : pEntry = m_aItemList.GetParent( pEntry );
642 : 0 : ItemNode* pNode = static_cast< ItemNode* >( pEntry->GetUserData() );
643 [ # # ][ # # ]: 0 : if ( DGTInstance == m_eGroup || DGTBinding == m_eGroup )
644 : : {
645 [ # # ][ # # ]: 0 : if ( DGTInstance == m_eGroup && m_sInstanceURL.Len() > 0 )
[ # # ]
646 : : {
647 [ # # ]: 0 : LinkedInstanceWarningBox aMsgBox( this );
648 [ # # ][ # # ]: 0 : if ( aMsgBox.Execute() != RET_OK )
649 [ # # ][ # # ]: 0 : return bHandled;
[ # # ]
650 : : }
651 : :
652 [ # # ]: 0 : AddDataItemDialog aDlg( this, pNode, m_xUIHelper );
653 : 0 : DataItemType eType = DITElement;
654 : 0 : sal_uInt16 nResId = RID_STR_DATANAV_EDIT_ELEMENT;
655 [ # # ][ # # ]: 0 : if ( pNode && pNode->m_xNode.is() )
[ # # ]
656 : : {
657 : : try
658 : : {
659 [ # # ][ # # ]: 0 : css::xml::dom::NodeType eChildType = pNode->m_xNode->getNodeType();
660 [ # # ]: 0 : if ( eChildType == css::xml::dom::NodeType_ATTRIBUTE_NODE )
661 : : {
662 : 0 : nResId = RID_STR_DATANAV_EDIT_ATTRIBUTE;
663 : 0 : eType = DITAttribute;
664 : : }
665 : : }
666 [ # # ]: 0 : catch ( Exception& )
667 : : {
668 : : SAL_WARN( "svx.form", "XFormsPage::DoToolboxAction(): exception caught" );
669 : : }
670 : : }
671 [ # # ]: 0 : else if ( DGTBinding == m_eGroup )
672 : : {
673 : 0 : nResId = RID_STR_DATANAV_EDIT_BINDING;
674 : 0 : eType = DITBinding;
675 : : }
676 [ # # ][ # # ]: 0 : aDlg.SetText( SVX_RESSTR( nResId ) );
[ # # ][ # # ]
[ # # ]
677 [ # # ]: 0 : aDlg.InitText( eType );
678 [ # # ][ # # ]: 0 : if ( aDlg.Execute() == RET_OK )
679 : : {
680 : : // Set the new name
681 [ # # ]: 0 : String sNewName;
682 [ # # ]: 0 : if ( DGTInstance == m_eGroup )
683 : : {
684 : : try
685 : : {
686 [ # # ]: 0 : sNewName = m_xUIHelper->getNodeDisplayName(
687 [ # # ][ # # ]: 0 : pNode->m_xNode, m_pNaviWin->IsShowDetails() );
[ # # ]
688 : : }
689 [ # # ]: 0 : catch ( Exception& )
690 : : {
691 : : SAL_WARN( "svx.form", "XFormsPage::DoToolboxAction(): exception caught" );
692 : : }
693 : : }
694 : : else
695 : : {
696 : : try
697 : : {
698 [ # # ]: 0 : String sDelim( RTL_CONSTASCII_USTRINGPARAM( ": " ) );
699 : 0 : ::rtl::OUString sTemp;
700 [ # # ][ # # ]: 0 : pNode->m_xPropSet->getPropertyValue( PN_BINDING_ID ) >>= sTemp;
[ # # ]
701 [ # # ][ # # ]: 0 : sNewName += String( sTemp );
[ # # ]
702 [ # # ]: 0 : sNewName += sDelim;
703 [ # # ][ # # ]: 0 : pNode->m_xPropSet->getPropertyValue( PN_BINDING_EXPR ) >>= sTemp;
[ # # ]
704 [ # # ][ # # ]: 0 : sNewName += String( sTemp );
[ # # ][ # # ]
[ # # ]
705 : : }
706 [ # # ]: 0 : catch ( Exception& )
707 : : {
708 : : SAL_WARN( "svx.form", "XFormsPage::DoToolboxAction(): exception caught" );
709 : : }
710 : : }
711 : :
712 [ # # ]: 0 : m_aItemList.SetEntryText( pEntry, sNewName );
713 [ # # ]: 0 : bIsDocModified = true;
714 [ # # ]: 0 : }
715 : : }
716 : : else
717 : : {
718 [ # # ]: 0 : AddSubmissionDialog aDlg( this, pNode, m_xUIHelper );
719 [ # # ][ # # ]: 0 : aDlg.SetText( SVX_RESSTR( RID_STR_DATANAV_EDIT_SUBMISSION ) );
[ # # ][ # # ]
[ # # ]
720 [ # # ][ # # ]: 0 : if ( aDlg.Execute() == RET_OK )
721 : : {
722 [ # # ]: 0 : EditEntry( pNode->m_xPropSet );
723 : 0 : bIsDocModified = true;
724 [ # # ]: 0 : }
725 : : }
726 : : }
727 : : }
728 : 0 : break;
729 : :
730 : : case TBI_ITEM_REMOVE:
731 : : {
732 : 0 : bHandled = true;
733 [ # # ][ # # ]: 0 : if ( DGTInstance == m_eGroup && m_sInstanceURL.Len() > 0 )
[ # # ]
734 : : {
735 [ # # ]: 0 : LinkedInstanceWarningBox aMsgBox( this );
736 [ # # ][ # # ]: 0 : if ( aMsgBox.Execute() != RET_OK )
737 [ # # ][ # # ]: 0 : return bHandled;
738 : : }
739 : 0 : bIsDocModified = RemoveEntry();
740 : : }
741 : 0 : break;
742 : :
743 : : case MID_INSERT_CONTROL:
744 : : {
745 : : OSL_FAIL( "XFormsPage::DoToolboxAction: MID_INSERT_CONTROL not implemented, yet!" );
746 : : }
747 : 0 : break;
748 : :
749 : : default:
750 : : OSL_FAIL( "XFormsPage::DoToolboxAction: unknown ID!" );
751 : 0 : break;
752 : : }
753 : :
754 : 0 : m_pNaviWin->DisableNotify( false );
755 : 0 : EnableMenuItems( NULL );
756 [ # # ]: 0 : if ( bIsDocModified )
757 : 0 : m_pNaviWin->SetDocModified();
758 : 0 : return bHandled;
759 : : }
760 : :
761 : : //------------------------------------------------------------------------
762 : 0 : SvLBoxEntry* XFormsPage::AddEntry( ItemNode* _pNewNode, bool _bIsElement )
763 : : {
764 [ # # ]: 0 : SvLBoxEntry* pParent = m_aItemList.FirstSelected();
765 : 0 : const ImageList& rImageList = m_pNaviWin->GetItemImageList();
766 [ # # ]: 0 : sal_uInt16 nImageID = ( _bIsElement ) ? IID_ELEMENT : IID_ATTRIBUTE;
767 [ # # ]: 0 : Image aImage = rImageList.GetImage( nImageID );
768 : 0 : ::rtl::OUString sName;
769 : : try
770 : : {
771 [ # # ]: 0 : sName = m_xUIHelper->getNodeDisplayName(
772 [ # # ]: 0 : _pNewNode->m_xNode, m_pNaviWin->IsShowDetails() );
773 : : }
774 [ # # ]: 0 : catch ( Exception& )
775 : : {
776 : : DBG_UNHANDLED_EXCEPTION();
777 : : }
778 : : return m_aItemList.InsertEntry(
779 [ # # ][ # # ]: 0 : sName, aImage, aImage, pParent, sal_False, LIST_APPEND, _pNewNode );
[ # # ][ # # ]
[ # # ]
780 : : }
781 : : //------------------------------------------------------------------------
782 : : class lcl_ResourceString
783 : : {
784 : : protected:
785 : 0 : lcl_ResourceString()
786 : 0 : {
787 : 0 : }
788 : :
789 : : lcl_ResourceString( const lcl_ResourceString& );
790 : :
791 : 0 : virtual ~lcl_ResourceString()
792 : 0 : {
793 [ # # ]: 0 : }
794 : :
795 : : // load UI resources from resource file
796 : 0 : void init()
797 : : {
798 : : // create a resource manager, for the svx resource file
799 : : // and the UI locale
800 : : ResMgr* pResMgr = ResMgr::CreateResMgr(
801 [ # # ][ # # ]: 0 : "svx", Application::GetSettings().GetUILocale() );
[ # # ]
802 : :
803 : : // load the resources for the AddSubmission modal dialog.
804 : : // This will create our own resource context.
805 : 0 : ResId aRes( RID_SVXDLG_ADD_SUBMISSION, *pResMgr );
806 : 0 : aRes.SetRT( RSC_MODALDIALOG );
807 [ # # ]: 0 : pResMgr->GetResource( aRes );
808 : :
809 : : // now, we can access the local resources from the dialog's
810 : : // resource context
811 [ # # ]: 0 : _initResources(pResMgr);
812 : :
813 : : // clean up: remove context, and delete the resource manager
814 : : // ( Increment(..) is needed since PopContext() requires that
815 : : // the file pointer is at the end. )
816 [ # # ][ # # ]: 0 : pResMgr->Increment( pResMgr->GetRemainSize() );
817 [ # # ]: 0 : pResMgr->PopContext();
818 [ # # ][ # # ]: 0 : delete pResMgr;
819 : 0 : }
820 : :
821 : : // load resources... to be overloaded in sub-classes
822 : : virtual void _initResources( ResMgr* pMgr ) = 0;
823 : : };
824 : :
825 : : class lcl_ReplaceString : public lcl_ResourceString
826 : : {
827 : : rtl::OUString m_sDoc_UI;
828 : : rtl::OUString m_sInstance_UI;
829 : : rtl::OUString m_sNone_UI;
830 : :
831 : : rtl::OUString m_sDoc_API;
832 : : rtl::OUString m_sInstance_API;
833 : : rtl::OUString m_sNone_API;
834 : :
835 : 0 : lcl_ReplaceString() :
836 : : lcl_ResourceString(),
837 : : m_sDoc_API( RTL_CONSTASCII_USTRINGPARAM("all") ),
838 : : m_sInstance_API( RTL_CONSTASCII_USTRINGPARAM("instance") ),
839 [ # # ][ # # ]: 0 : m_sNone_API( RTL_CONSTASCII_USTRINGPARAM("none") )
[ # # ]
840 : : {
841 [ # # ]: 0 : init();
842 : 0 : }
843 : :
844 : : lcl_ReplaceString( const lcl_ReplaceString& );
845 : :
846 : 0 : virtual ~lcl_ReplaceString()
847 : 0 : {
848 [ # # ]: 0 : }
849 : :
850 : : // load UI resources from resource file
851 : 0 : virtual void _initResources( ResMgr * pMgr )
852 : : {
853 : : // now, we can access the local resources from the dialog's
854 : : // resource context
855 [ # # ][ # # ]: 0 : m_sDoc_UI = String( ResId( STR_REPLACE_DOC, *pMgr ) );
[ # # ]
856 [ # # ][ # # ]: 0 : m_sInstance_UI = String( ResId( STR_REPLACE_INST, *pMgr ) );
[ # # ]
857 [ # # ][ # # ]: 0 : m_sNone_UI = String( ResId( STR_REPLACE_NONE, *pMgr ) );
[ # # ]
858 : 0 : }
859 : :
860 : : public:
861 : :
862 : : /** create and obtain the singleton instance */
863 : 0 : static const lcl_ReplaceString& get()
864 : : {
865 : : // keep the singleton instance here
866 : : static lcl_ReplaceString* m_pInstance = NULL;
867 : :
868 [ # # ]: 0 : if( m_pInstance == NULL )
869 [ # # ]: 0 : m_pInstance = new lcl_ReplaceString();
870 : 0 : return *m_pInstance;
871 : : }
872 : :
873 : : /** convert submission replace string from API value to UI value.
874 : : Use 'none' as default. */
875 : 0 : rtl::OUString toUI( const rtl::OUString& rStr ) const
876 : : {
877 [ # # ]: 0 : if( rStr == m_sDoc_API )
878 : 0 : return m_sDoc_UI;
879 [ # # ]: 0 : else if( rStr == m_sInstance_API )
880 : 0 : return m_sInstance_UI;
881 : : else
882 : 0 : return m_sNone_UI;
883 : : }
884 : :
885 : : /** convert submission replace string from UI to API.
886 : : Use 'none' as default. */
887 : 0 : rtl::OUString toAPI( const rtl::OUString& rStr ) const
888 : : {
889 [ # # ]: 0 : if( rStr == m_sDoc_UI )
890 : 0 : return m_sDoc_API;
891 [ # # ]: 0 : else if( rStr == m_sInstance_UI )
892 : 0 : return m_sInstance_API;
893 : : else
894 : 0 : return m_sNone_API;
895 : : }
896 : : };
897 : :
898 : : class lcl_MethodString : public lcl_ResourceString
899 : : {
900 : : rtl::OUString m_sPost_UI;
901 : : rtl::OUString m_sPut_UI;
902 : : rtl::OUString m_sGet_UI;
903 : :
904 : : rtl::OUString m_sPost_API;
905 : : rtl::OUString m_sPut_API;
906 : : rtl::OUString m_sGet_API;
907 : :
908 : 0 : lcl_MethodString() :
909 : : lcl_ResourceString(),
910 : : m_sPost_API( RTL_CONSTASCII_USTRINGPARAM("post") ),
911 : : m_sPut_API( RTL_CONSTASCII_USTRINGPARAM("put") ),
912 [ # # ][ # # ]: 0 : m_sGet_API( RTL_CONSTASCII_USTRINGPARAM("get") )
[ # # ]
913 : : {
914 [ # # ]: 0 : init();
915 : 0 : }
916 : :
917 : : lcl_MethodString( const lcl_MethodString& );
918 : :
919 : 0 : virtual ~lcl_MethodString()
920 : 0 : {
921 [ # # ]: 0 : }
922 : :
923 : : // load UI resources from resource file
924 : 0 : virtual void _initResources(ResMgr* pMgr)
925 : : {
926 [ # # ][ # # ]: 0 : m_sPost_UI = String( ResId( STR_METHOD_POST, *pMgr ) );
[ # # ]
927 [ # # ][ # # ]: 0 : m_sPut_UI = String( ResId( STR_METHOD_PUT, *pMgr ) );
[ # # ]
928 [ # # ][ # # ]: 0 : m_sGet_UI = String( ResId( STR_METHOD_GET, *pMgr ) );
[ # # ]
929 : 0 : }
930 : :
931 : : public:
932 : :
933 : : /** create and obtain the singleton instance */
934 : 0 : static const lcl_MethodString& get()
935 : : {
936 : : // keep the singleton instance here
937 : : static lcl_MethodString* m_pInstance = NULL;
938 : :
939 [ # # ]: 0 : if( m_pInstance == NULL )
940 [ # # ]: 0 : m_pInstance = new lcl_MethodString();
941 : 0 : return *m_pInstance;
942 : : }
943 : :
944 : : /** convert from API to UI; put is default. */
945 : 0 : rtl::OUString toUI( const rtl::OUString& rStr ) const
946 : : {
947 [ # # ]: 0 : if( rStr == m_sGet_API )
948 : 0 : return m_sGet_UI;
949 [ # # ]: 0 : else if( rStr == m_sPost_API )
950 : 0 : return m_sPost_UI;
951 : : else
952 : 0 : return m_sPut_UI;
953 : : }
954 : :
955 : : /** convert from UI to API; put is default */
956 : 0 : rtl::OUString toAPI( const rtl::OUString& rStr ) const
957 : : {
958 [ # # ]: 0 : if( rStr == m_sGet_UI )
959 : 0 : return m_sGet_API;
960 [ # # ]: 0 : else if( rStr == m_sPost_UI )
961 : 0 : return m_sPost_API;
962 : : else
963 : 0 : return m_sPut_API;
964 : : }
965 : : };
966 : :
967 : : //------------------------------------------------------------------------
968 : 0 : SvLBoxEntry* XFormsPage::AddEntry( const Reference< XPropertySet >& _rEntry )
969 : : {
970 : 0 : SvLBoxEntry* pEntry = NULL;
971 : 0 : const ImageList& rImageList = m_pNaviWin->GetItemImageList();
972 [ # # ]: 0 : Image aImage = rImageList.GetImage( IID_ELEMENT );
973 : :
974 [ # # ][ # # ]: 0 : ItemNode* pNode = new ItemNode( _rEntry );
975 : 0 : rtl::OUString sTemp;
976 : :
977 [ # # ]: 0 : if ( DGTSubmission == m_eGroup )
978 : : {
979 : : try
980 : : {
981 : : // ID
982 [ # # ][ # # ]: 0 : _rEntry->getPropertyValue( PN_SUBMISSION_ID ) >>= sTemp;
[ # # ]
983 [ # # ][ # # ]: 0 : pEntry = m_aItemList.InsertEntry( sTemp, aImage, aImage, NULL, sal_False, LIST_APPEND, pNode );
[ # # ]
984 : : // Action
985 [ # # ][ # # ]: 0 : _rEntry->getPropertyValue( PN_SUBMISSION_ACTION ) >>= sTemp;
[ # # ]
986 [ # # ][ # # ]: 0 : String sEntry = SVX_RESSTR( RID_STR_DATANAV_SUBM_ACTION );
[ # # ]
987 [ # # ][ # # ]: 0 : sEntry += String( sTemp );
[ # # ]
988 [ # # ]: 0 : m_aItemList.InsertEntry( sEntry, aImage, aImage, pEntry );
989 : : // Method
990 [ # # ][ # # ]: 0 : _rEntry->getPropertyValue( PN_SUBMISSION_METHOD ) >>= sTemp;
[ # # ]
991 [ # # ][ # # ]: 0 : sEntry = SVX_RESSTR( RID_STR_DATANAV_SUBM_METHOD );
[ # # ]
992 [ # # ][ # # ]: 0 : sEntry += String( lcl_MethodString::get().toUI( sTemp ) );
[ # # ][ # # ]
993 [ # # ]: 0 : m_aItemList.InsertEntry( sEntry, aImage, aImage, pEntry );
994 : : // Ref
995 [ # # ][ # # ]: 0 : _rEntry->getPropertyValue( PN_SUBMISSION_REF ) >>= sTemp;
[ # # ]
996 [ # # ][ # # ]: 0 : sEntry = SVX_RESSTR( RID_STR_DATANAV_SUBM_REF );
[ # # ]
997 [ # # ][ # # ]: 0 : sEntry += String( sTemp );
[ # # ]
998 [ # # ]: 0 : m_aItemList.InsertEntry( sEntry, aImage, aImage, pEntry );
999 : : // Bind
1000 [ # # ][ # # ]: 0 : _rEntry->getPropertyValue( PN_SUBMISSION_BIND ) >>= sTemp;
[ # # ]
1001 [ # # ][ # # ]: 0 : sEntry = SVX_RESSTR( RID_STR_DATANAV_SUBM_BIND );
[ # # ]
1002 [ # # ][ # # ]: 0 : sEntry += String( sTemp );
[ # # ]
1003 [ # # ]: 0 : m_aItemList.InsertEntry( sEntry, aImage, aImage, pEntry );
1004 : : // Replace
1005 [ # # ][ # # ]: 0 : _rEntry->getPropertyValue( PN_SUBMISSION_REPLACE ) >>= sTemp;
[ # # ]
1006 [ # # ][ # # ]: 0 : sEntry = SVX_RESSTR( RID_STR_DATANAV_SUBM_REPLACE );
[ # # ]
1007 [ # # ][ # # ]: 0 : sEntry += String( lcl_ReplaceString::get().toUI( sTemp ) );
[ # # ][ # # ]
1008 [ # # ][ # # ]: 0 : m_aItemList.InsertEntry( sEntry, aImage, aImage, pEntry );
[ # # ]
1009 : : }
1010 [ # # ]: 0 : catch ( Exception& )
1011 : : {
1012 : : SAL_WARN( "svx.form", "XFormsPage::AddEntry(Ref): exception caught" );
1013 : : }
1014 : : }
1015 : : else // then Binding Page
1016 : : {
1017 : : try
1018 : : {
1019 [ # # ]: 0 : String sDelim( RTL_CONSTASCII_USTRINGPARAM( ": " ) );
1020 : 0 : ::rtl::OUString sName;
1021 [ # # ][ # # ]: 0 : _rEntry->getPropertyValue( PN_BINDING_ID ) >>= sTemp;
[ # # ]
1022 [ # # ][ # # ]: 0 : sName += String( sTemp );
[ # # ]
1023 [ # # ]: 0 : sName += sDelim;
1024 [ # # ][ # # ]: 0 : _rEntry->getPropertyValue( PN_BINDING_EXPR ) >>= sTemp;
[ # # ]
1025 [ # # ][ # # ]: 0 : sName += String( sTemp );
[ # # ]
1026 : : pEntry = m_aItemList.InsertEntry(
1027 [ # # ][ # # ]: 0 : sName, aImage, aImage, NULL, sal_False, LIST_APPEND, pNode );
[ # # ][ # # ]
[ # # ]
1028 : : }
1029 [ # # ]: 0 : catch ( Exception& )
1030 : : {
1031 : : SAL_WARN( "svx.form", "XFormsPage::AddEntry(Ref): exception caught" );
1032 : : }
1033 : : }
1034 : :
1035 [ # # ]: 0 : return pEntry;
1036 : : }
1037 : :
1038 : : //------------------------------------------------------------------------
1039 : 0 : void XFormsPage::EditEntry( const Reference< XPropertySet >& _rEntry )
1040 : : {
1041 : 0 : SvLBoxEntry* pEntry = NULL;
1042 : 0 : rtl::OUString sTemp;
1043 : :
1044 [ # # ]: 0 : if ( DGTSubmission == m_eGroup )
1045 : : {
1046 : : try
1047 : : {
1048 [ # # ]: 0 : pEntry = m_aItemList.FirstSelected();
1049 : :
1050 : : // #i36262# may be called for submission entry *or* for
1051 : : // submission children. If we don't have any children, we
1052 : : // assume the latter case and use the parent
1053 [ # # ][ # # ]: 0 : if( m_aItemList.GetEntry( pEntry, 0 ) == NULL )
1054 : : {
1055 [ # # ]: 0 : pEntry = m_aItemList.GetModel()->GetParent( pEntry );
1056 : : }
1057 : :
1058 [ # # ][ # # ]: 0 : _rEntry->getPropertyValue( PN_SUBMISSION_ID ) >>= sTemp;
[ # # ]
1059 [ # # ][ # # ]: 0 : m_aItemList.SetEntryText( pEntry, sTemp );
[ # # ]
1060 : :
1061 [ # # ][ # # ]: 0 : _rEntry->getPropertyValue( PN_SUBMISSION_BIND ) >>= sTemp;
[ # # ]
1062 [ # # ][ # # ]: 0 : String sEntry = SVX_RESSTR( RID_STR_DATANAV_SUBM_BIND );
[ # # ]
1063 [ # # ][ # # ]: 0 : sEntry += String( sTemp );
[ # # ]
1064 : 0 : sal_uIntPtr nPos = 0;
1065 [ # # ]: 0 : SvLBoxEntry* pChild = m_aItemList.GetEntry( pEntry, nPos++ );
1066 [ # # ]: 0 : m_aItemList.SetEntryText( pChild, sEntry );
1067 [ # # ][ # # ]: 0 : _rEntry->getPropertyValue( PN_SUBMISSION_REF ) >>= sTemp;
[ # # ]
1068 [ # # ][ # # ]: 0 : sEntry = SVX_RESSTR( RID_STR_DATANAV_SUBM_REF );
[ # # ]
1069 [ # # ][ # # ]: 0 : sEntry += String( sTemp );
[ # # ]
1070 [ # # ]: 0 : pChild = m_aItemList.GetEntry( pEntry, nPos++ );
1071 [ # # ]: 0 : m_aItemList.SetEntryText( pChild, sEntry );
1072 [ # # ][ # # ]: 0 : _rEntry->getPropertyValue( PN_SUBMISSION_ACTION ) >>= sTemp;
[ # # ]
1073 [ # # ][ # # ]: 0 : sEntry = SVX_RESSTR( RID_STR_DATANAV_SUBM_ACTION );
[ # # ]
1074 [ # # ][ # # ]: 0 : sEntry += String( sTemp );
[ # # ]
1075 [ # # ]: 0 : pChild = m_aItemList.GetEntry( pEntry, nPos++ );
1076 [ # # ]: 0 : m_aItemList.SetEntryText( pChild, sEntry );
1077 [ # # ][ # # ]: 0 : _rEntry->getPropertyValue( PN_SUBMISSION_METHOD ) >>= sTemp;
[ # # ]
1078 [ # # ][ # # ]: 0 : sEntry = SVX_RESSTR( RID_STR_DATANAV_SUBM_METHOD );
[ # # ]
1079 [ # # ][ # # ]: 0 : sEntry += String( lcl_MethodString::get().toUI( sTemp ) );
[ # # ][ # # ]
1080 [ # # ]: 0 : pChild = m_aItemList.GetEntry( pEntry, nPos++ );
1081 [ # # ]: 0 : m_aItemList.SetEntryText( pChild, sEntry );
1082 [ # # ][ # # ]: 0 : _rEntry->getPropertyValue( PN_SUBMISSION_REPLACE ) >>= sTemp;
[ # # ]
1083 [ # # ][ # # ]: 0 : sEntry = SVX_RESSTR( RID_STR_DATANAV_SUBM_REPLACE );
[ # # ]
1084 [ # # ][ # # ]: 0 : sEntry += String( lcl_ReplaceString::get().toUI( sTemp ) );
[ # # ][ # # ]
1085 [ # # ]: 0 : pChild = m_aItemList.GetEntry( pEntry, nPos++ );
1086 [ # # ][ # # ]: 0 : m_aItemList.SetEntryText( pChild, sEntry );
[ # # ]
1087 : : }
1088 [ # # ]: 0 : catch ( Exception& )
1089 : : {
1090 : : SAL_WARN( "svx.form", "XFormsPage::EditEntry(): exception caught" );
1091 : : }
1092 : 0 : }
1093 : 0 : }
1094 : :
1095 : : //------------------------------------------------------------------------
1096 : 0 : bool XFormsPage::RemoveEntry()
1097 : : {
1098 : 0 : bool bRet = false;
1099 : 0 : SvLBoxEntry* pEntry = m_aItemList.FirstSelected();
1100 [ # # # # ]: 0 : if ( pEntry &&
[ # # ][ # # ]
1101 : 0 : ( DGTInstance != m_eGroup || m_aItemList.GetParent( pEntry ) ) )
1102 : : {
1103 [ # # ]: 0 : Reference< css::xforms::XModel > xModel( m_xUIHelper, UNO_QUERY );
1104 : : DBG_ASSERT( xModel.is(), "XFormsPage::RemoveEntry(): no model" );
1105 : 0 : ItemNode* pNode = static_cast< ItemNode* >( pEntry->GetUserData() );
1106 : : DBG_ASSERT( pNode, "XFormsPage::RemoveEntry(): no node" );
1107 : :
1108 [ # # ]: 0 : if ( DGTInstance == m_eGroup )
1109 : : {
1110 : : try
1111 : : {
1112 : : DBG_ASSERT( pNode->m_xNode.is(), "XFormsPage::RemoveEntry(): no XNode" );
1113 [ # # ][ # # ]: 0 : css::xml::dom::NodeType eChildType = pNode->m_xNode->getNodeType();
1114 : 0 : bool bIsElement = ( eChildType == css::xml::dom::NodeType_ELEMENT_NODE );
1115 [ # # ]: 0 : sal_uInt16 nResId = bIsElement ? RID_QRY_REMOVE_ELEMENT : RID_QRY_REMOVE_ATTRIBUTE;
1116 [ # # ][ # # ]: 0 : String sVar = bIsElement ? ELEMENTNAME : ATTRIBUTENAME;
[ # # ]
1117 [ # # ][ # # ]: 0 : QueryBox aQBox( this, SVX_RES( nResId ) );
1118 [ # # ]: 0 : String sMessText = aQBox.GetMessText();
1119 : : sMessText.SearchAndReplace(
1120 [ # # ][ # # ]: 0 : sVar, m_xUIHelper->getNodeDisplayName( pNode->m_xNode, sal_False ) );
[ # # ][ # # ]
[ # # ]
1121 [ # # ]: 0 : aQBox.SetMessText( sMessText );
1122 [ # # ][ # # ]: 0 : if ( aQBox.Execute() == RET_YES )
1123 : : {
1124 [ # # ]: 0 : SvLBoxEntry* pParent = m_aItemList.GetParent( pEntry );
1125 : : DBG_ASSERT( pParent, "XFormsPage::RemoveEntry(): no parent entry" );
1126 : 0 : ItemNode* pParentNode = static_cast< ItemNode* >( pParent->GetUserData() );
1127 : : DBG_ASSERT( pParentNode && pParentNode->m_xNode.is(), "XFormsPage::RemoveEntry(): no parent XNode" );
1128 : :
1129 : 0 : Reference< css::xml::dom::XNode > xPNode;
1130 : : Reference< css::xml::dom::XNode > xNode =
1131 [ # # ][ # # ]: 0 : pParentNode->m_xNode->removeChild( pNode->m_xNode );
1132 [ # # ]: 0 : if ( xNode.is() )
1133 [ # # ][ # # ]: 0 : xPNode = xNode->getParentNode();
[ # # ]
1134 : : DBG_ASSERT( !xPNode.is(), "XFormsPage::RemoveEntry(): node not removed" );
1135 : 0 : bRet = true;
1136 [ # # ][ # # ]: 0 : }
[ # # ][ # # ]
1137 : : }
1138 [ # # # # ]: 0 : catch ( Exception& )
1139 : : {
1140 : : SAL_WARN( "svx.form", "XFormsPage::RemoveEntry(): exception caught" );
1141 : : }
1142 : : }
1143 : : else
1144 : : {
1145 : : DBG_ASSERT( pNode->m_xPropSet.is(), "XFormsPage::RemoveEntry(): no propset" );
1146 : 0 : bool bSubmission = ( DGTSubmission == m_eGroup );
1147 [ # # ]: 0 : sal_uInt16 nResId = bSubmission ? RID_QRY_REMOVE_SUBMISSION : RID_QRY_REMOVE_BINDING;
1148 [ # # ][ # # ]: 0 : rtl::OUString sProperty = bSubmission ? PN_SUBMISSION_ID : PN_BINDING_ID;
[ # # ]
1149 [ # # ][ # # ]: 0 : String sSearch = bSubmission ? SUBMISSIONNAME : BINDINGNAME;
[ # # ]
1150 : 0 : rtl::OUString sName;
1151 : : try
1152 : : {
1153 [ # # ][ # # ]: 0 : pNode->m_xPropSet->getPropertyValue( sProperty ) >>= sName;
1154 : : }
1155 [ # # ]: 0 : catch ( Exception& )
1156 : : {
1157 : : SAL_WARN( "svx.form", "XFormsPage::RemoveEntry(): exception caught" );
1158 : : }
1159 [ # # ][ # # ]: 0 : QueryBox aQBox( this, SVX_RES( nResId ) );
1160 [ # # ]: 0 : String sMessText = aQBox.GetMessText();
1161 [ # # ][ # # ]: 0 : sMessText.SearchAndReplace( sSearch, String( sName ) );
[ # # ]
1162 [ # # ]: 0 : aQBox.SetMessText( sMessText );
1163 [ # # ][ # # ]: 0 : if ( aQBox.Execute() == RET_YES )
1164 : : {
1165 : : try
1166 : : {
1167 [ # # ]: 0 : if ( bSubmission )
1168 [ # # ][ # # ]: 0 : xModel->getSubmissions()->remove( makeAny( pNode->m_xPropSet ) );
[ # # ][ # # ]
[ # # ]
1169 : : else // then Binding Page
1170 [ # # ][ # # ]: 0 : xModel->getBindings()->remove( makeAny( pNode->m_xPropSet ) );
[ # # ][ # # ]
[ # # ][ # # ]
1171 : 0 : bRet = true;
1172 : : }
1173 [ # # ]: 0 : catch ( Exception& )
1174 : : {
1175 : : SAL_WARN( "svx.form", "XFormsPage::RemoveEntry(): exception caught" );
1176 : : }
1177 [ # # ][ # # ]: 0 : }
[ # # ]
1178 : : }
1179 : :
1180 [ # # ]: 0 : if ( bRet )
1181 [ # # ]: 0 : m_aItemList.RemoveEntry( pEntry );
1182 : : }
1183 : :
1184 : 0 : return bRet;
1185 : : }
1186 : :
1187 : : //------------------------------------------------------------------------
1188 : 0 : long XFormsPage::Notify( NotifyEvent& rNEvt )
1189 : : {
1190 : 0 : long nHandled = 0;
1191 : :
1192 [ # # ]: 0 : if ( rNEvt.GetType() == EVENT_KEYINPUT )
1193 : : {
1194 : 0 : sal_uInt16 nCode = rNEvt.GetKeyEvent()->GetKeyCode().GetCode();
1195 : :
1196 [ # # ]: 0 : switch ( nCode )
1197 : : {
1198 : : case KEY_DELETE:
1199 : 0 : nHandled = DoMenuAction( TBI_ITEM_REMOVE );
1200 : 0 : break;
1201 : : }
1202 : : }
1203 : :
1204 [ # # ]: 0 : return nHandled ? nHandled : Window::Notify( rNEvt );
1205 : : }
1206 : : //------------------------------------------------------------------------
1207 : 0 : void XFormsPage::Resize()
1208 : : {
1209 : 0 : Size aSize = GetOutputSizePixel();
1210 [ # # ]: 0 : Size aTbxSize = m_aToolBox.GetSizePixel();
1211 : 0 : aTbxSize.Width() = aSize.Width();
1212 [ # # ]: 0 : m_aToolBox.SetSizePixel( aTbxSize );
1213 : 0 : aSize.Width() -= 4;
1214 : 0 : aSize.Height() -= ( 4 + aTbxSize.Height() );
1215 [ # # ]: 0 : m_aItemList.SetPosSizePixel( Point( 2, 2 + aTbxSize.Height() ), aSize );
1216 : 0 : }
1217 : : //------------------------------------------------------------------------
1218 : 0 : String XFormsPage::SetModel( const Reference< css::xforms::XModel >& _xModel, sal_uInt16 _nPagePos )
1219 : : {
1220 : : DBG_ASSERT( _xModel.is(), "XFormsPage::SetModel(): invalid model" );
1221 : :
1222 [ # # ]: 0 : m_xUIHelper = Reference< css::xforms::XFormsUIHelper1 >( _xModel, UNO_QUERY );
1223 : 0 : String sRet;
1224 : 0 : m_bHasModel = true;
1225 : 0 : const ImageList& rImageList = m_pNaviWin->GetItemImageList();
1226 : :
1227 [ # # # # ]: 0 : switch ( m_eGroup )
1228 : : {
1229 : : case DGTInstance :
1230 : : {
1231 : : DBG_ASSERT( _nPagePos != TAB_PAGE_NOTFOUND, "XFormsPage::SetModel(): invalid page position" );
1232 : : try
1233 : : {
1234 [ # # ][ # # ]: 0 : Reference< XContainer > xContainer( _xModel->getInstances(), UNO_QUERY );
[ # # ]
1235 [ # # ]: 0 : if ( xContainer.is() )
1236 [ # # ]: 0 : m_pNaviWin->AddContainerBroadcaster( xContainer );
1237 : :
1238 [ # # ][ # # ]: 0 : Reference< XEnumerationAccess > xNumAccess( _xModel->getInstances(), UNO_QUERY );
[ # # ]
1239 [ # # ]: 0 : if ( xNumAccess.is() )
1240 : : {
1241 [ # # ][ # # ]: 0 : Reference < XEnumeration > xNum = xNumAccess->createEnumeration();
1242 [ # # ][ # # ]: 0 : if ( xNum.is() && xNum->hasMoreElements() )
[ # # ][ # # ]
[ # # ]
1243 : : {
1244 : 0 : sal_uInt16 nIter = 0;
1245 [ # # ][ # # ]: 0 : while ( xNum->hasMoreElements() )
[ # # ]
1246 : : {
1247 [ # # ]: 0 : if ( nIter == _nPagePos )
1248 : : {
1249 [ # # ]: 0 : Sequence< PropertyValue > xPropSeq;
1250 [ # # ][ # # ]: 0 : Any aAny = xNum->nextElement();
1251 [ # # ][ # # ]: 0 : if ( aAny >>= xPropSeq )
1252 [ # # ][ # # ]: 0 : sRet = LoadInstance( xPropSeq, rImageList );
[ # # ]
1253 : : else
1254 : : {
1255 : : SAL_WARN( "svx.form", "XFormsPage::SetModel(): invalid instance" );
1256 : : }
1257 [ # # ]: 0 : break;
1258 : : }
1259 : : else
1260 : : {
1261 [ # # ][ # # ]: 0 : xNum->nextElement();
1262 : 0 : nIter++;
1263 : : }
1264 : : }
1265 : 0 : }
1266 [ # # ]: 0 : }
1267 : : }
1268 [ # # ]: 0 : catch( Exception& )
1269 : : {
1270 : : SAL_WARN( "svx.form", "XFormsPage::SetModel(): exception caught" );
1271 : : }
1272 : 0 : break;
1273 : : }
1274 : :
1275 : : case DGTSubmission :
1276 : : {
1277 : : DBG_ASSERT( TAB_PAGE_NOTFOUND == _nPagePos, "XFormsPage::SetModel(): invalid page position" );
1278 : : try
1279 : : {
1280 [ # # ][ # # ]: 0 : Reference< XContainer > xContainer( _xModel->getSubmissions(), UNO_QUERY );
[ # # ]
1281 [ # # ]: 0 : if ( xContainer.is() )
1282 [ # # ]: 0 : m_pNaviWin->AddContainerBroadcaster( xContainer );
1283 : :
1284 [ # # ][ # # ]: 0 : Reference< XEnumerationAccess > xNumAccess( _xModel->getSubmissions(), UNO_QUERY );
[ # # ]
1285 [ # # ]: 0 : if ( xNumAccess.is() )
1286 : : {
1287 [ # # ][ # # ]: 0 : Reference < XEnumeration > xNum = xNumAccess->createEnumeration();
1288 [ # # ][ # # ]: 0 : if ( xNum.is() && xNum->hasMoreElements() )
[ # # ][ # # ]
[ # # ]
1289 : : {
1290 [ # # ][ # # ]: 0 : while ( xNum->hasMoreElements() )
[ # # ]
1291 : : {
1292 : 0 : Reference< XPropertySet > xPropSet;
1293 [ # # ][ # # ]: 0 : Any aAny = xNum->nextElement();
1294 [ # # ][ # # ]: 0 : if ( aAny >>= xPropSet )
1295 [ # # ]: 0 : AddEntry( xPropSet );
1296 : 0 : }
1297 : 0 : }
1298 [ # # ]: 0 : }
1299 : : }
1300 [ # # ]: 0 : catch( Exception& )
1301 : : {
1302 : : SAL_WARN( "svx.form", "XFormsPage::SetModel(): exception caught" );
1303 : : }
1304 : 0 : break;
1305 : : }
1306 : :
1307 : : case DGTBinding :
1308 : : {
1309 : : DBG_ASSERT( TAB_PAGE_NOTFOUND == _nPagePos, "XFormsPage::SetModel(): invalid page position" );
1310 : : try
1311 : : {
1312 [ # # ][ # # ]: 0 : Reference< XContainer > xContainer( _xModel->getBindings(), UNO_QUERY );
[ # # ]
1313 [ # # ]: 0 : if ( xContainer.is() )
1314 [ # # ]: 0 : m_pNaviWin->AddContainerBroadcaster( xContainer );
1315 : :
1316 [ # # ][ # # ]: 0 : Reference< XEnumerationAccess > xNumAccess( _xModel->getBindings(), UNO_QUERY );
[ # # ]
1317 [ # # ]: 0 : if ( xNumAccess.is() )
1318 : : {
1319 [ # # ][ # # ]: 0 : Reference < XEnumeration > xNum = xNumAccess->createEnumeration();
1320 [ # # ][ # # ]: 0 : if ( xNum.is() && xNum->hasMoreElements() )
[ # # ][ # # ]
[ # # ]
1321 : : {
1322 [ # # ]: 0 : Image aImage1 = rImageList.GetImage( IID_ELEMENT );
1323 [ # # ]: 0 : Image aImage2 = rImageList.GetImage( IID_ELEMENT );
1324 [ # # ]: 0 : String sDelim( RTL_CONSTASCII_USTRINGPARAM( ": " ) );
1325 [ # # ][ # # ]: 0 : while ( xNum->hasMoreElements() )
[ # # ]
1326 : : {
1327 : 0 : Reference< XPropertySet > xPropSet;
1328 [ # # ][ # # ]: 0 : Any aAny = xNum->nextElement();
1329 [ # # ][ # # ]: 0 : if ( aAny >>= xPropSet )
1330 : : {
1331 [ # # ]: 0 : String sEntry;
1332 : 0 : rtl::OUString sTemp;
1333 [ # # ][ # # ]: 0 : xPropSet->getPropertyValue( PN_BINDING_ID ) >>= sTemp;
[ # # ]
1334 [ # # ][ # # ]: 0 : sEntry += String( sTemp );
[ # # ]
1335 [ # # ]: 0 : sEntry += sDelim;
1336 [ # # ][ # # ]: 0 : xPropSet->getPropertyValue( PN_BINDING_EXPR ) >>= sTemp;
[ # # ]
1337 [ # # ][ # # ]: 0 : sEntry += String( sTemp );
[ # # ]
1338 : :
1339 [ # # ][ # # ]: 0 : ItemNode* pNode = new ItemNode( xPropSet );
1340 : : m_aItemList.InsertEntry(
1341 [ # # ][ # # ]: 0 : sEntry, aImage1, aImage2, NULL, sal_False, LIST_APPEND, pNode );
1342 : : }
1343 [ # # ][ # # ]: 0 : }
[ # # ]
1344 : 0 : }
1345 [ # # ]: 0 : }
1346 : : }
1347 [ # # ]: 0 : catch( Exception& )
1348 : : {
1349 : : SAL_WARN( "svx.form", "XFormsPage::SetModel(): exception caught" );
1350 : : }
1351 : 0 : break;
1352 : : }
1353 : : default:
1354 : : OSL_FAIL( "XFormsPage::SetModel: unknown group!" );
1355 : 0 : break;
1356 : : }
1357 : :
1358 [ # # ]: 0 : EnableMenuItems( NULL );
1359 : :
1360 : 0 : return sRet;
1361 : : }
1362 : : //------------------------------------------------------------------------
1363 : 0 : void XFormsPage::ClearModel()
1364 : : {
1365 : 0 : m_bHasModel = false;
1366 : 0 : m_aItemList.DeleteAndClear();
1367 : 0 : }
1368 : : //------------------------------------------------------------------------
1369 : 0 : String XFormsPage::LoadInstance(
1370 : : const Sequence< PropertyValue >& _xPropSeq, const ImageList& _rImgLst )
1371 : : {
1372 [ # # ]: 0 : String sRet;
1373 : 0 : rtl::OUString sTemp;
1374 [ # # ]: 0 : rtl::OUString sInstModel = PN_INSTANCE_MODEL;
1375 [ # # ]: 0 : rtl::OUString sInstName = PN_INSTANCE_ID;
1376 [ # # ]: 0 : rtl::OUString sInstURL = PN_INSTANCE_URL;
1377 : 0 : const PropertyValue* pProps = _xPropSeq.getConstArray();
1378 : 0 : const PropertyValue* pPropsEnd = pProps + _xPropSeq.getLength();
1379 [ # # ]: 0 : for ( ; pProps != pPropsEnd; ++pProps )
1380 : : {
1381 [ # # ]: 0 : if ( sInstModel.compareTo( pProps->Name ) == 0 )
1382 : : {
1383 : 0 : Reference< css::xml::dom::XNode > xRoot;
1384 [ # # ][ # # ]: 0 : if ( pProps->Value >>= xRoot )
1385 : : {
1386 : : try
1387 : : {
1388 [ # # ]: 0 : Reference< XEventTarget > xTarget( xRoot, UNO_QUERY );
1389 [ # # ]: 0 : if ( xTarget.is() )
1390 [ # # ]: 0 : m_pNaviWin->AddEventBroadcaster( xTarget );
1391 : :
1392 : : #if OSL_DEBUG_LEVEL > 0
1393 : : css::xml::dom::NodeType eNodeType = xRoot->getNodeType(); (void)eNodeType;
1394 : : #endif
1395 : : ::rtl::OUString sNodeName =
1396 [ # # ][ # # ]: 0 : m_xUIHelper->getNodeDisplayName( xRoot, m_pNaviWin->IsShowDetails() );
1397 [ # # ]: 0 : if ( sNodeName.isEmpty() )
1398 [ # # ][ # # ]: 0 : sNodeName = xRoot->getNodeName();
1399 [ # # ][ # # ]: 0 : if ( xRoot->hasChildNodes() )
[ # # ]
1400 [ # # ][ # # ]: 0 : AddChildren( NULL, _rImgLst, xRoot );
1401 : : }
1402 [ # # ]: 0 : catch ( Exception& )
1403 : : {
1404 : : SAL_WARN( "svx.form", "XFormsPage::LoadInstance(): exception caught" );
1405 : : }
1406 : 0 : }
1407 : : }
1408 [ # # ][ # # ]: 0 : else if ( sInstName.compareTo( pProps->Name ) == 0 && ( pProps->Value >>= sTemp ) )
[ # # ]
1409 [ # # ][ # # ]: 0 : m_sInstanceName = sRet = sTemp;
1410 [ # # ][ # # ]: 0 : else if ( sInstURL.compareTo( pProps->Name ) == 0 && ( pProps->Value >>= sTemp ) )
[ # # ]
1411 [ # # ]: 0 : m_sInstanceURL = sTemp;
1412 : : }
1413 : :
1414 : 0 : return sRet;
1415 : : }
1416 : :
1417 : : //------------------------------------------------------------------------
1418 : 0 : bool XFormsPage::DoMenuAction( sal_uInt16 _nMenuID )
1419 : : {
1420 : 0 : return DoToolBoxAction( _nMenuID );
1421 : : }
1422 : :
1423 : : //------------------------------------------------------------------------
1424 : 0 : void XFormsPage::EnableMenuItems( Menu* _pMenu )
1425 : : {
1426 : 0 : sal_Bool bEnableAdd = sal_False;
1427 : 0 : sal_Bool bEnableEdit = sal_False;
1428 : 0 : sal_Bool bEnableRemove = sal_False;
1429 : :
1430 : 0 : SvLBoxEntry* pEntry = m_aItemList.FirstSelected();
1431 [ # # ]: 0 : if ( pEntry )
1432 : : {
1433 : 0 : bEnableAdd = sal_True;
1434 : 0 : bool bSubmitChild = false;
1435 [ # # ][ # # ]: 0 : if ( DGTSubmission == m_eGroup && m_aItemList.GetParent( pEntry ) )
[ # # ]
1436 : : {
1437 : 0 : pEntry = m_aItemList.GetParent( pEntry );
1438 : 0 : bSubmitChild = true;
1439 : : }
1440 : 0 : ItemNode* pNode = static_cast< ItemNode* >( pEntry->GetUserData() );
1441 [ # # ][ # # ]: 0 : if ( pNode && ( pNode->m_xNode.is() || pNode->m_xPropSet.is() ) )
[ # # ][ # # ]
1442 : : {
1443 : 0 : bEnableEdit = sal_True;
1444 : 0 : bEnableRemove = ( bSubmitChild != true );
1445 [ # # ][ # # ]: 0 : if ( DGTInstance == m_eGroup && !m_aItemList.GetParent( pEntry ) )
[ # # ]
1446 : 0 : bEnableRemove = sal_False;
1447 [ # # ]: 0 : if ( pNode->m_xNode.is() )
1448 : : {
1449 : : try
1450 : : {
1451 [ # # ][ # # ]: 0 : css::xml::dom::NodeType eChildType = pNode->m_xNode->getNodeType();
1452 [ # # ][ # # ]: 0 : if ( eChildType != css::xml::dom::NodeType_ELEMENT_NODE
1453 : : && eChildType != css::xml::dom::NodeType_DOCUMENT_NODE )
1454 : : {
1455 : 0 : bEnableAdd = sal_False;
1456 : : }
1457 : : }
1458 [ # # ]: 0 : catch ( Exception& )
1459 : : {
1460 : : SAL_WARN( "svx.form", "XFormsPage::EnableMenuItems(): exception caught" );
1461 : : }
1462 : : }
1463 : : }
1464 : : }
1465 [ # # ]: 0 : else if ( m_eGroup != DGTInstance )
1466 : 0 : bEnableAdd = sal_True;
1467 : :
1468 : 0 : m_aToolBox.EnableItem( TBI_ITEM_ADD, bEnableAdd );
1469 : 0 : m_aToolBox.EnableItem( TBI_ITEM_ADD_ELEMENT, bEnableAdd );
1470 : 0 : m_aToolBox.EnableItem( TBI_ITEM_ADD_ATTRIBUTE, bEnableAdd );
1471 : 0 : m_aToolBox.EnableItem( TBI_ITEM_EDIT, bEnableEdit );
1472 : 0 : m_aToolBox.EnableItem( TBI_ITEM_REMOVE, bEnableRemove );
1473 : :
1474 [ # # ]: 0 : if ( _pMenu )
1475 : : {
1476 : 0 : _pMenu->EnableItem( TBI_ITEM_ADD, bEnableAdd );
1477 : 0 : _pMenu->EnableItem( TBI_ITEM_ADD_ELEMENT, bEnableAdd );
1478 : 0 : _pMenu->EnableItem( TBI_ITEM_ADD_ATTRIBUTE, bEnableAdd );
1479 : 0 : _pMenu->EnableItem( TBI_ITEM_EDIT, bEnableEdit );
1480 : 0 : _pMenu->EnableItem( TBI_ITEM_REMOVE, bEnableRemove );
1481 : : }
1482 [ # # ]: 0 : if ( DGTInstance == m_eGroup )
1483 : : {
1484 : 0 : sal_uInt16 nResId1 = RID_STR_DATANAV_EDIT_ELEMENT;
1485 : 0 : sal_uInt16 nResId2 = RID_STR_DATANAV_REMOVE_ELEMENT;
1486 [ # # ]: 0 : if ( pEntry )
1487 : : {
1488 : 0 : ItemNode* pNode = static_cast< ItemNode* >( pEntry->GetUserData() );
1489 [ # # ][ # # ]: 0 : if ( pNode && pNode->m_xNode.is() )
[ # # ]
1490 : : {
1491 : : try
1492 : : {
1493 [ # # ][ # # ]: 0 : css::xml::dom::NodeType eChildType = pNode->m_xNode->getNodeType();
1494 [ # # ]: 0 : if ( eChildType == css::xml::dom::NodeType_ATTRIBUTE_NODE )
1495 : : {
1496 : 0 : nResId1 = RID_STR_DATANAV_EDIT_ATTRIBUTE;
1497 : 0 : nResId2 = RID_STR_DATANAV_REMOVE_ATTRIBUTE;
1498 : : }
1499 : : }
1500 : 0 : catch ( Exception& )
1501 : : {
1502 : : SAL_WARN( "svx.form", "XFormsPage::EnableMenuItems(): exception caught" );
1503 : : }
1504 : : }
1505 : : }
1506 [ # # ][ # # ]: 0 : m_aToolBox.SetItemText( TBI_ITEM_EDIT, SVX_RESSTR( nResId1 ) );
[ # # ][ # # ]
1507 [ # # ][ # # ]: 0 : m_aToolBox.SetItemText( TBI_ITEM_REMOVE, SVX_RESSTR( nResId2 ) );
[ # # ][ # # ]
1508 [ # # ]: 0 : if ( _pMenu )
1509 : : {
1510 [ # # ][ # # ]: 0 : _pMenu->SetItemText( TBI_ITEM_EDIT, SVX_RESSTR( nResId1 ) );
[ # # ][ # # ]
1511 [ # # ][ # # ]: 0 : _pMenu->SetItemText( TBI_ITEM_REMOVE, SVX_RESSTR( nResId2 ) );
[ # # ][ # # ]
1512 : : }
1513 : : }
1514 [ # # ]: 0 : }
1515 : :
1516 : :
1517 : : //========================================================================
1518 : : // class DataNavigatorWindow
1519 : : //========================================================================
1520 : 0 : DataNavigatorWindow::DataNavigatorWindow( Window* pParent, SfxBindings* pBindings ) :
1521 : :
1522 : 0 : Window( pParent, SVX_RES( RID_SVXWIN_DATANAVIGATOR ) ),
1523 : :
1524 [ # # ]: 0 : m_aModelsBox ( this, SVX_RES( LB_MODELS ) ),
1525 [ # # ]: 0 : m_aModelBtn ( this, SVX_RES( MB_MODELS ) ),
1526 [ # # ]: 0 : m_aTabCtrl ( this, SVX_RES( TC_ITEMS ) ),
1527 [ # # ]: 0 : m_aInstanceBtn ( this, SVX_RES( MB_INSTANCES ) ),
1528 : :
1529 : : m_pInstPage ( NULL ),
1530 : : m_pSubmissionPage ( NULL ),
1531 : : m_pBindingPage ( NULL ),
1532 : :
1533 : : m_nMinWidth ( 0 ),
1534 : : m_nMinHeight ( 0 ),
1535 : : m_nBorderHeight ( 0 ),
1536 : : m_nLastSelectedPos ( LISTBOX_ENTRY_NOTFOUND ),
1537 : : m_bShowDetails ( false ),
1538 : : m_bIsNotifyDisabled ( false ),
1539 : :
1540 [ # # ]: 0 : m_aItemImageList ( SVX_RES( IL_ITEM_BMPS ) ),
1541 [ # # ][ # # ]: 0 : m_xDataListener ( new DataListener( this ) )
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ]
1542 : :
1543 : : {
1544 [ # # ]: 0 : FreeResource();
1545 : :
1546 : : // init minimal metric
1547 [ # # ][ # # ]: 0 : m_a2Size = LogicToPixel( Size( 2, 2 ), MAP_APPFONT );
[ # # ]
1548 [ # # ][ # # ]: 0 : m_a3Size = LogicToPixel( Size( 3, 3 ), MAP_APPFONT );
[ # # ]
1549 : 0 : Size aOutSz = GetOutputSizePixel();
1550 [ # # ][ # # ]: 0 : Size aLogSize = PixelToLogic( aOutSz, MAP_APPFONT );
[ # # ]
1551 : 0 : m_nMinWidth = aLogSize.Width();
1552 : 0 : m_nMinHeight = aLogSize.Height();
1553 : 0 : m_nBorderHeight = 4*m_a3Size.Height() +
1554 [ # # ][ # # ]: 0 : m_aModelBtn.GetSizePixel().Height() + m_aInstanceBtn.GetSizePixel().Height();
1555 : :
1556 : : // handler
1557 [ # # ]: 0 : m_aModelsBox.SetSelectHdl( LINK( this, DataNavigatorWindow, ModelSelectHdl ) );
1558 [ # # ]: 0 : Link aLink = LINK( this, DataNavigatorWindow, MenuSelectHdl );
1559 : 0 : m_aModelBtn.SetSelectHdl( aLink );
1560 : 0 : m_aInstanceBtn.SetSelectHdl( aLink );
1561 [ # # ]: 0 : aLink = LINK( this, DataNavigatorWindow, MenuActivateHdl );
1562 : 0 : m_aModelBtn.SetActivateHdl( aLink );
1563 : 0 : m_aInstanceBtn.SetActivateHdl( aLink );
1564 [ # # ]: 0 : m_aTabCtrl.SetActivatePageHdl( LINK( this, DataNavigatorWindow, ActivatePageHdl ) );
1565 [ # # ]: 0 : m_aUpdateTimer.SetTimeout( 2000 );
1566 [ # # ]: 0 : m_aUpdateTimer.SetTimeoutHdl( LINK( this, DataNavigatorWindow, UpdateHdl ) );
1567 : :
1568 : : // init tabcontrol
1569 [ # # ]: 0 : m_aTabCtrl.Show();
1570 : 0 : sal_Int32 nPageId = TID_INSTANCE;
1571 [ # # ][ # # ]: 0 : SvtViewOptions aViewOpt( E_TABDIALOG, CFGNAME_DATANAVIGATOR );
[ # # ][ # # ]
1572 [ # # ][ # # ]: 0 : if ( aViewOpt.Exists() )
1573 : : {
1574 [ # # ]: 0 : nPageId = aViewOpt.GetPageID();
1575 [ # # ][ # # ]: 0 : aViewOpt.GetUserItem(CFGNAME_SHOWDETAILS) >>= m_bShowDetails;
[ # # ][ # # ]
1576 : : }
1577 : :
1578 : 0 : Menu* pMenu = m_aInstanceBtn.GetPopupMenu();
1579 [ # # ]: 0 : pMenu->SetItemBits( MID_SHOW_DETAILS, MIB_CHECKABLE );
1580 [ # # ]: 0 : pMenu->CheckItem( MID_SHOW_DETAILS, m_bShowDetails );
1581 : :
1582 [ # # ]: 0 : m_aTabCtrl.SetCurPageId( static_cast< sal_uInt16 >( nPageId ) );
1583 [ # # ]: 0 : ActivatePageHdl( &m_aTabCtrl );
1584 : :
1585 : : // get our frame
1586 : : DBG_ASSERT( pBindings != NULL,
1587 : : "DataNavigatorWindow::LoadModels(): no SfxBindings; can't get frame" );
1588 : : m_xFrame = Reference<XFrame>(
1589 [ # # ][ # # ]: 0 : pBindings->GetDispatcher()->GetFrame()->GetFrame().GetFrameInterface(),
1590 [ # # ][ # # ]: 0 : UNO_QUERY );
[ # # ]
1591 : : DBG_ASSERT( m_xFrame.is(), "DataNavigatorWindow::LoadModels(): no frame" );
1592 : : // add frameaction listener
1593 : : Reference< XFrameActionListener > xListener(
1594 [ # # ][ # # ]: 0 : static_cast< XFrameActionListener* >( m_xDataListener.get() ), UNO_QUERY );
1595 [ # # ][ # # ]: 0 : m_xFrame->addFrameActionListener( xListener );
1596 : :
1597 : : // load xforms models of the current document
1598 [ # # ][ # # ]: 0 : LoadModels();
1599 : 0 : }
1600 : : //------------------------------------------------------------------------
1601 [ # # ][ # # ]: 0 : DataNavigatorWindow::~DataNavigatorWindow()
[ # # ][ # # ]
[ # # ][ # # ]
1602 : : {
1603 [ # # ][ # # ]: 0 : SvtViewOptions aViewOpt( E_TABDIALOG, CFGNAME_DATANAVIGATOR );
[ # # ][ # # ]
1604 [ # # ][ # # ]: 0 : aViewOpt.SetPageID( static_cast< sal_Int32 >( m_aTabCtrl.GetCurPageId() ) );
1605 : 0 : Any aAny;
1606 [ # # ]: 0 : aAny <<= m_bShowDetails;
1607 [ # # ][ # # ]: 0 : aViewOpt.SetUserItem(CFGNAME_SHOWDETAILS,aAny);
[ # # ][ # # ]
1608 : :
1609 [ # # ][ # # ]: 0 : delete m_pInstPage;
1610 [ # # ][ # # ]: 0 : delete m_pSubmissionPage;
1611 [ # # ][ # # ]: 0 : delete m_pBindingPage;
1612 : :
1613 : 0 : sal_Int32 i, nCount = m_aPageList.size();
1614 [ # # ]: 0 : for ( i = 0; i < nCount; ++i )
1615 [ # # ][ # # ]: 0 : delete m_aPageList[i];
1616 : : Reference< XFrameActionListener > xListener(
1617 [ # # ][ # # ]: 0 : static_cast< XFrameActionListener* >( m_xDataListener.get() ), UNO_QUERY );
1618 [ # # ][ # # ]: 0 : m_xFrame->removeFrameActionListener( xListener );
1619 [ # # ]: 0 : RemoveBroadcaster();
1620 [ # # ]: 0 : m_xDataListener.clear();
1621 [ # # ]: 0 : }
1622 : :
1623 : : // -----------------------------------------------------------------------
1624 : 0 : IMPL_LINK( DataNavigatorWindow, ModelSelectHdl, ListBox *, pBox )
1625 : : {
1626 : 0 : sal_uInt16 nPos = m_aModelsBox.GetSelectEntryPos();
1627 : : // pBox == NULL, if you want to force a new fill.
1628 [ # # ][ # # ]: 0 : if ( nPos != m_nLastSelectedPos || !pBox )
1629 : : {
1630 : 0 : m_nLastSelectedPos = nPos;
1631 : 0 : ClearAllPageModels( pBox != NULL );
1632 : 0 : InitPages();
1633 : 0 : SetPageModel();
1634 : : }
1635 : :
1636 : 0 : return 0;
1637 : : }
1638 : : // -----------------------------------------------------------------------
1639 : 0 : IMPL_LINK( DataNavigatorWindow, MenuSelectHdl, MenuButton *, pBtn )
1640 : : {
1641 : 0 : bool bIsDocModified = false;
1642 : 0 : Reference< css::xforms::XFormsUIHelper1 > xUIHelper;
1643 [ # # ]: 0 : sal_uInt16 nSelectedPos = m_aModelsBox.GetSelectEntryPos();
1644 [ # # ][ # # ]: 0 : ::rtl::OUString sSelectedModel( m_aModelsBox.GetEntry( nSelectedPos ) );
[ # # ]
1645 : 0 : Reference< css::xforms::XModel > xModel;
1646 : : try
1647 : : {
1648 [ # # ][ # # ]: 0 : Any aAny = m_xDataContainer->getByName( sSelectedModel );
1649 [ # # ][ # # ]: 0 : if ( aAny >>= xModel )
1650 [ # # ][ # # ]: 0 : xUIHelper = Reference< css::xforms::XFormsUIHelper1 >( xModel, UNO_QUERY );
[ # # ]
1651 : : }
1652 [ # # ]: 0 : catch ( Exception& )
1653 : : {
1654 : : SAL_WARN( "svx.form", "DataNavigatorWindow::MenuSelectHdl(): exception caught" );
1655 : : }
1656 : : DBG_ASSERT( xUIHelper.is(), "DataNavigatorWindow::MenuSelectHdl(): no UIHelper" );
1657 : :
1658 : 0 : m_bIsNotifyDisabled = true;
1659 : :
1660 [ # # ]: 0 : if ( &m_aModelBtn == pBtn )
1661 : : {
1662 [ # # # # ]: 0 : switch ( pBtn->GetCurItemId() )
1663 : : {
1664 : : case MID_MODELS_ADD :
1665 : : {
1666 [ # # ]: 0 : AddModelDialog aDlg( this, false );
1667 : 0 : bool bShowDialog = true;
1668 [ # # ]: 0 : while ( bShowDialog )
1669 : : {
1670 : 0 : bShowDialog = false;
1671 [ # # ][ # # ]: 0 : if ( aDlg.Execute() == RET_OK )
1672 : : {
1673 [ # # ]: 0 : String sNewName = aDlg.GetName();
1674 [ # # ]: 0 : sal_Bool bDocumentData = aDlg.GetModifyDoc();
1675 : :
1676 [ # # ][ # # ]: 0 : if ( m_aModelsBox.GetEntryPos( sNewName ) != LISTBOX_ENTRY_NOTFOUND )
1677 : : {
1678 : : // error: model name already exists
1679 [ # # ][ # # ]: 0 : ErrorBox aErrBox( this, SVX_RES( RID_ERR_DOUBLE_MODELNAME ) );
1680 [ # # ]: 0 : String sMessText = aErrBox.GetMessText();
1681 [ # # ][ # # ]: 0 : sMessText.SearchAndReplace( MSG_VARIABLE, sNewName );
[ # # ]
1682 [ # # ]: 0 : aErrBox.SetMessText( sMessText );
1683 [ # # ]: 0 : aErrBox.Execute();
1684 [ # # ][ # # ]: 0 : bShowDialog = true;
1685 : : }
1686 : : else
1687 : : {
1688 : : try
1689 : : {
1690 : : // add new model to frame model
1691 : : Reference< css::xforms::XModel > xNewModel(
1692 [ # # ][ # # ]: 0 : xUIHelper->newModel( m_xFrameModel, sNewName ), UNO_SET_THROW );
[ # # ][ # # ]
1693 : :
1694 [ # # ]: 0 : Reference< XPropertySet > xModelProps( xNewModel, UNO_QUERY_THROW );
1695 [ # # ]: 0 : xModelProps->setPropertyValue(
1696 : : ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "ExternalData" ) ),
1697 [ # # ][ # # ]: 0 : makeAny( sal_Bool( !bDocumentData ) ) );
[ # # ]
1698 : :
1699 [ # # ]: 0 : sal_uInt16 nNewPos = m_aModelsBox.InsertEntry( sNewName );
1700 [ # # ]: 0 : m_aModelsBox.SelectEntryPos( nNewPos );
1701 [ # # ]: 0 : ModelSelectHdl( &m_aModelsBox );
1702 [ # # ]: 0 : bIsDocModified = true;
1703 : : }
1704 [ # # ]: 0 : catch ( Exception& )
1705 : : {
1706 : : SAL_WARN( "svx.form", "DataNavigatorWindow::MenuSelectHdl(): exception caught" );
1707 : : }
1708 [ # # ]: 0 : }
1709 : : }
1710 : : }
1711 [ # # ]: 0 : break;
1712 : : }
1713 : : case MID_MODELS_EDIT :
1714 : : {
1715 [ # # ]: 0 : AddModelDialog aDlg( this, true );
1716 [ # # ][ # # ]: 0 : aDlg.SetName( sSelectedModel );
[ # # ]
1717 : :
1718 : 0 : bool bDocumentData( false );
1719 : : try
1720 : : {
1721 [ # # ]: 0 : Reference< css::xforms::XFormsSupplier > xFormsSupp( m_xFrameModel, UNO_QUERY_THROW );
1722 [ # # ][ # # ]: 0 : Reference< XNameContainer > xXForms( xFormsSupp->getXForms(), UNO_SET_THROW );
[ # # ]
1723 [ # # ][ # # ]: 0 : Reference< XPropertySet > xModelProps( xXForms->getByName( sSelectedModel ), UNO_QUERY_THROW );
[ # # ]
1724 : 0 : sal_Bool bExternalData = sal_False;
1725 [ # # ][ # # ]: 0 : OSL_VERIFY( xModelProps->getPropertyValue(
[ # # ]
1726 : : ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "ExternalData" ) ) ) >>= bExternalData );
1727 [ # # ]: 0 : bDocumentData = ( bExternalData == sal_False );
1728 : : }
1729 [ # # ]: 0 : catch( const Exception& )
1730 : : {
1731 : : DBG_UNHANDLED_EXCEPTION();
1732 : : }
1733 [ # # ]: 0 : aDlg.SetModifyDoc( bDocumentData );
1734 : :
1735 [ # # ][ # # ]: 0 : if ( aDlg.Execute() == RET_OK )
1736 : : {
1737 [ # # ][ # # ]: 0 : if ( aDlg.GetModifyDoc() != bool( bDocumentData ) )
1738 : : {
1739 [ # # ]: 0 : bDocumentData = aDlg.GetModifyDoc();
1740 : : try
1741 : : {
1742 [ # # ]: 0 : Reference< css::xforms::XFormsSupplier > xFormsSupp( m_xFrameModel, UNO_QUERY_THROW );
1743 [ # # ][ # # ]: 0 : Reference< XNameContainer > xXForms( xFormsSupp->getXForms(), UNO_SET_THROW );
[ # # ]
1744 [ # # ][ # # ]: 0 : Reference< XPropertySet > xModelProps( xXForms->getByName( sSelectedModel ), UNO_QUERY_THROW );
[ # # ]
1745 [ # # ]: 0 : xModelProps->setPropertyValue(
1746 : : ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "ExternalData" ) ),
1747 [ # # ][ # # ]: 0 : makeAny( sal_Bool( !bDocumentData ) ) );
[ # # ]
1748 [ # # ]: 0 : bIsDocModified = true;
1749 : : }
1750 [ # # ]: 0 : catch( const Exception& )
1751 : : {
1752 : : DBG_UNHANDLED_EXCEPTION();
1753 : : }
1754 : : }
1755 : :
1756 [ # # ]: 0 : String sNewName = aDlg.GetName();
1757 [ # # ][ # # ]: 0 : if ( sNewName.Len() > 0 && ( sNewName != String( sSelectedModel ) ) )
[ # # ][ # # ]
[ # # ][ # # ]
[ # # # # ]
1758 : : {
1759 : : try
1760 : : {
1761 [ # # ][ # # ]: 0 : xUIHelper->renameModel( m_xFrameModel, sSelectedModel, sNewName );
[ # # ][ # # ]
1762 : :
1763 [ # # ]: 0 : m_aModelsBox.RemoveEntry( nSelectedPos );
1764 [ # # ]: 0 : nSelectedPos = m_aModelsBox.InsertEntry( sNewName );
1765 [ # # ]: 0 : m_aModelsBox.SelectEntryPos( nSelectedPos );
1766 : 0 : bIsDocModified = true;
1767 : : }
1768 [ # # ]: 0 : catch ( Exception& )
1769 : : {
1770 : : SAL_WARN( "svx.form", "DataNavigatorWindow::MenuSelectHdl(): exception caught" );
1771 : : }
1772 [ # # ]: 0 : }
1773 : : }
1774 [ # # ]: 0 : break;
1775 : : }
1776 : : case MID_MODELS_REMOVE :
1777 : : {
1778 [ # # ][ # # ]: 0 : QueryBox aQBox( this, SVX_RES( RID_QRY_REMOVE_MODEL ) );
1779 [ # # ]: 0 : String sText = aQBox.GetMessText();
1780 [ # # ][ # # ]: 0 : sText.SearchAndReplace( MODELNAME, sSelectedModel );
[ # # ][ # # ]
[ # # # # ]
1781 [ # # ]: 0 : aQBox.SetMessText( sText );
1782 [ # # ][ # # ]: 0 : if ( aQBox.Execute() == RET_YES )
1783 : : {
1784 : : try
1785 : : {
1786 [ # # ][ # # ]: 0 : xUIHelper->removeModel( m_xFrameModel, sSelectedModel );
1787 : : }
1788 [ # # ]: 0 : catch ( Exception& )
1789 : : {
1790 : : SAL_WARN( "svx.form", "DataNavigatorWindow::MenuSelectHdl(): exception caught" );
1791 : : }
1792 [ # # ]: 0 : m_aModelsBox.RemoveEntry( nSelectedPos );
1793 [ # # ][ # # ]: 0 : if ( m_aModelsBox.GetEntryCount() <= nSelectedPos )
1794 [ # # ]: 0 : nSelectedPos = m_aModelsBox.GetEntryCount() - 1;
1795 [ # # ]: 0 : m_aModelsBox.SelectEntryPos( nSelectedPos );
1796 [ # # ]: 0 : ModelSelectHdl( &m_aModelsBox );
1797 : 0 : bIsDocModified = true;
1798 : : }
1799 [ # # ][ # # ]: 0 : break;
1800 : : }
1801 : : default:
1802 : : {
1803 : : SAL_WARN( "svx.form", "DataNavigatorWindow::MenuSelectHdl(): wrong menu item" );
1804 : : }
1805 : : }
1806 : : }
1807 [ # # ]: 0 : else if ( &m_aInstanceBtn == pBtn )
1808 : : {
1809 [ # # # # : 0 : switch ( pBtn->GetCurItemId() )
# ]
1810 : : {
1811 : : case MID_INSTANCES_ADD :
1812 : : {
1813 [ # # ]: 0 : AddInstanceDialog aDlg( this, false );
1814 [ # # ][ # # ]: 0 : if ( aDlg.Execute() == RET_OK )
1815 : : {
1816 [ # # ]: 0 : sal_uInt16 nInst = GetNewPageId();
1817 [ # # ][ # # ]: 0 : ::rtl::OUString sName = aDlg.GetName();
[ # # ]
1818 [ # # ][ # # ]: 0 : ::rtl::OUString sURL = aDlg.GetURL();
[ # # # # ]
1819 [ # # ]: 0 : bool bLinkOnce = aDlg.IsLinkInstance();
1820 : : try
1821 : : {
1822 : : Reference< css::xml::dom::XDocument > xNewInst =
1823 [ # # ][ # # ]: 0 : xUIHelper->newInstance( sName, sURL, !bLinkOnce );
1824 : : }
1825 [ # # ]: 0 : catch ( Exception& )
1826 : : {
1827 : : SAL_WARN( "svx.form", "DataNavigatorWindow::MenuSelectHdl(): exception caught" );
1828 : : }
1829 [ # # ]: 0 : ModelSelectHdl( NULL );
1830 [ # # ]: 0 : m_aTabCtrl.SetCurPageId( nInst );
1831 [ # # ]: 0 : XFormsPage* pPage = GetCurrentPage( nInst );
1832 [ # # ][ # # ]: 0 : pPage->SetInstanceName(sName);
[ # # ]
1833 [ # # ][ # # ]: 0 : pPage->SetInstanceURL(sURL);
[ # # ]
1834 : 0 : pPage->SetLinkOnce(bLinkOnce);
1835 [ # # ]: 0 : ActivatePageHdl( &m_aTabCtrl );
1836 : 0 : bIsDocModified = true;
1837 : : }
1838 [ # # ]: 0 : break;
1839 : : }
1840 : : case MID_INSTANCES_EDIT :
1841 : : {
1842 : 0 : sal_uInt16 nId = 0;
1843 [ # # ]: 0 : XFormsPage* pPage = GetCurrentPage( nId );
1844 [ # # ]: 0 : if ( pPage )
1845 : : {
1846 [ # # ]: 0 : AddInstanceDialog aDlg( this, true );
1847 [ # # ]: 0 : aDlg.SetName( pPage->GetInstanceName() );
1848 [ # # ]: 0 : aDlg.SetURL( pPage->GetInstanceURL() );
1849 [ # # ]: 0 : aDlg.SetLinkInstance( pPage->GetLinkOnce() );
1850 [ # # ]: 0 : String sOldName = aDlg.GetName();
1851 [ # # ][ # # ]: 0 : if ( aDlg.Execute() == RET_OK )
1852 : : {
1853 [ # # ]: 0 : String sNewName = aDlg.GetName();
1854 [ # # ][ # # ]: 0 : ::rtl::OUString sURL = aDlg.GetURL();
[ # # ]
1855 [ # # ]: 0 : bool bLinkOnce = aDlg.IsLinkInstance();
1856 : : try
1857 : : {
1858 [ # # ]: 0 : xUIHelper->renameInstance( sOldName,
1859 : : sNewName,
1860 : : sURL,
1861 [ # # ][ # # ]: 0 : !bLinkOnce );
[ # # ][ # # ]
1862 : : }
1863 [ # # ]: 0 : catch ( Exception& )
1864 : : {
1865 : : SAL_WARN( "svx.form", "DataNavigatorWindow::MenuSelectHdl(): exception caught" );
1866 : : }
1867 [ # # ]: 0 : pPage->SetInstanceName(sNewName);
1868 [ # # ][ # # ]: 0 : pPage->SetInstanceURL(sURL);
[ # # ]
1869 : 0 : pPage->SetLinkOnce(bLinkOnce);
1870 [ # # ]: 0 : m_aTabCtrl.SetPageText( nId, sNewName );
1871 [ # # ]: 0 : bIsDocModified = true;
1872 [ # # ][ # # ]: 0 : }
1873 : : }
1874 : : break;
1875 : : }
1876 : : case MID_INSTANCES_REMOVE :
1877 : : {
1878 : 0 : sal_uInt16 nId = 0;
1879 [ # # ]: 0 : XFormsPage* pPage = GetCurrentPage( nId );
1880 [ # # ]: 0 : if ( pPage )
1881 : : {
1882 [ # # ]: 0 : String sInstName = pPage->GetInstanceName();
1883 [ # # ][ # # ]: 0 : QueryBox aQBox( this, SVX_RES( RID_QRY_REMOVE_INSTANCE ) );
1884 [ # # ]: 0 : String sMessText = aQBox.GetMessText();
1885 [ # # ][ # # ]: 0 : sMessText.SearchAndReplace( INSTANCENAME, sInstName );
[ # # ]
1886 [ # # ]: 0 : aQBox.SetMessText( sMessText );
1887 [ # # ][ # # ]: 0 : if ( aQBox.Execute() == RET_YES )
1888 : : {
1889 : 0 : bool bDoRemove = false;
1890 [ # # ]: 0 : if ( nId > TID_INSTANCE )
1891 : : {
1892 : 0 : PageList::iterator aPageListEnd = m_aPageList.end();
1893 : : PageList::iterator aFoundPage =
1894 [ # # ]: 0 : std::find( m_aPageList.begin(), aPageListEnd, pPage );
1895 [ # # ][ # # ]: 0 : if ( aFoundPage != aPageListEnd )
1896 : : {
1897 [ # # ]: 0 : m_aPageList.erase( aFoundPage );
1898 [ # # ][ # # ]: 0 : delete pPage;
1899 : 0 : bDoRemove = true;
1900 : : }
1901 : : }
1902 : : else
1903 : : {
1904 [ # # ][ # # ]: 0 : DELETEZ( m_pInstPage );
1905 : 0 : bDoRemove = true;
1906 : : }
1907 : :
1908 [ # # ]: 0 : if ( bDoRemove )
1909 : : {
1910 : : try
1911 : : {
1912 [ # # ][ # # ]: 0 : xUIHelper->removeInstance( sInstName );
[ # # ][ # # ]
1913 : : }
1914 [ # # ]: 0 : catch ( Exception& )
1915 : : {
1916 : : SAL_WARN( "svx.form", "DataNavigatorWindow::MenuSelectHdl(): exception caught" );
1917 : : }
1918 [ # # ]: 0 : m_aTabCtrl.RemovePage( nId );
1919 [ # # ]: 0 : m_aTabCtrl.SetCurPageId( TID_INSTANCE );
1920 [ # # ]: 0 : ModelSelectHdl( NULL );
1921 : 0 : bIsDocModified = true;
1922 : : }
1923 [ # # ][ # # ]: 0 : }
[ # # ]
1924 : : }
1925 : : break;
1926 : : }
1927 : : case MID_SHOW_DETAILS :
1928 : : {
1929 : 0 : m_bShowDetails = !m_bShowDetails;
1930 [ # # ]: 0 : m_aInstanceBtn.GetPopupMenu()->CheckItem( MID_SHOW_DETAILS, m_bShowDetails );
1931 [ # # ]: 0 : ModelSelectHdl( &m_aModelsBox );
1932 : 0 : break;
1933 : : }
1934 : : default:
1935 : : {
1936 : : SAL_WARN( "svx.form", "DataNavigatorWindow::MenuSelectHdl(): wrong menu item" );
1937 : : }
1938 : : }
1939 : : }
1940 : : else
1941 : : {
1942 : : SAL_WARN( "svx.form", "DataNavigatorWindow::MenuSelectHdl(): wrong button" );
1943 : : }
1944 : :
1945 : 0 : m_bIsNotifyDisabled = false;
1946 : :
1947 [ # # ]: 0 : if ( bIsDocModified )
1948 [ # # ]: 0 : SetDocModified();
1949 : 0 : return 0;
1950 : : }
1951 : : // -----------------------------------------------------------------------
1952 : 0 : IMPL_LINK( DataNavigatorWindow, MenuActivateHdl, MenuButton *, pBtn )
1953 : : {
1954 : 0 : Menu* pMenu = pBtn->GetPopupMenu();
1955 : :
1956 [ # # ]: 0 : if ( &m_aInstanceBtn == pBtn )
1957 : : {
1958 : 0 : bool bIsInstPage = ( m_aTabCtrl.GetCurPageId() >= TID_INSTANCE );
1959 : 0 : pMenu->EnableItem( MID_INSTANCES_EDIT, bIsInstPage );
1960 : : pMenu->EnableItem( MID_INSTANCES_REMOVE,
1961 [ # # ][ # # ]: 0 : bIsInstPage && m_aTabCtrl.GetPageCount() > MIN_PAGE_COUNT );
1962 : 0 : pMenu->EnableItem( MID_SHOW_DETAILS, bIsInstPage );
1963 : : }
1964 [ # # ]: 0 : else if ( &m_aModelBtn == pBtn )
1965 : : {
1966 : : // we need at least one model!
1967 : 0 : pMenu->EnableItem( MID_MODELS_REMOVE, m_aModelsBox.GetEntryCount() > 1 );
1968 : : }
1969 : : else
1970 : : {
1971 : : SAL_WARN( "svx.form", "DataNavigatorWindow::MenuActivateHdl(): wrong button" );
1972 : : }
1973 : 0 : return 0;
1974 : : }
1975 : : // -----------------------------------------------------------------------
1976 : 0 : IMPL_LINK_NOARG(DataNavigatorWindow, ActivatePageHdl)
1977 : : {
1978 : 0 : sal_uInt16 nId = 0;
1979 [ # # ]: 0 : XFormsPage* pPage = GetCurrentPage( nId );
1980 [ # # ]: 0 : if ( pPage )
1981 : : {
1982 [ # # ]: 0 : m_aTabCtrl.SetTabPage( nId, pPage );
1983 [ # # ][ # # ]: 0 : if ( m_xDataContainer.is() && !pPage->HasModel() )
[ # # ]
1984 [ # # ]: 0 : SetPageModel();
1985 : : }
1986 : :
1987 : 0 : return 0;
1988 : : }
1989 : : // -----------------------------------------------------------------------
1990 : 0 : IMPL_LINK_NOARG(DataNavigatorWindow, UpdateHdl)
1991 : : {
1992 : 0 : ModelSelectHdl( NULL );
1993 : 0 : return 0;
1994 : : }
1995 : : // -----------------------------------------------------------------------
1996 : 0 : XFormsPage* DataNavigatorWindow::GetCurrentPage( sal_uInt16& rCurId )
1997 : : {
1998 [ # # ]: 0 : rCurId = m_aTabCtrl.GetCurPageId();
1999 : 0 : XFormsPage* pPage = NULL;
2000 [ # # # # ]: 0 : switch ( rCurId )
2001 : : {
2002 : : case TID_SUBMISSION:
2003 : : {
2004 [ # # ]: 0 : if ( !m_pSubmissionPage )
2005 [ # # ][ # # ]: 0 : m_pSubmissionPage = new XFormsPage( &m_aTabCtrl, this, DGTSubmission );
2006 : 0 : pPage = m_pSubmissionPage;
2007 : 0 : break;
2008 : : }
2009 : :
2010 : : case TID_BINDINGS:
2011 : : {
2012 [ # # ]: 0 : if ( !m_pBindingPage )
2013 [ # # ][ # # ]: 0 : m_pBindingPage = new XFormsPage( &m_aTabCtrl, this, DGTBinding );
2014 : 0 : pPage = m_pBindingPage;
2015 : 0 : break;
2016 : : }
2017 : :
2018 : : case TID_INSTANCE:
2019 : : {
2020 [ # # ]: 0 : if ( !m_pInstPage )
2021 [ # # ][ # # ]: 0 : m_pInstPage = new XFormsPage( &m_aTabCtrl, this, DGTInstance );
2022 : 0 : pPage = m_pInstPage;
2023 : 0 : break;
2024 : : }
2025 : : }
2026 : :
2027 [ # # ]: 0 : if ( rCurId > TID_INSTANCE )
2028 : : {
2029 [ # # ]: 0 : sal_uInt16 nPos = m_aTabCtrl.GetPagePos( rCurId );
2030 [ # # ][ # # ]: 0 : if ( HasFirstInstancePage() && nPos > 0 )
[ # # ][ # # ]
2031 : 0 : nPos--;
2032 [ # # ]: 0 : if ( m_aPageList.size() > nPos )
2033 : 0 : pPage = m_aPageList[nPos];
2034 : : else
2035 : : {
2036 [ # # ][ # # ]: 0 : pPage = new XFormsPage( &m_aTabCtrl, this, DGTInstance );
2037 [ # # ]: 0 : m_aPageList.push_back( pPage );
2038 : : }
2039 : : }
2040 : :
2041 : 0 : return pPage;
2042 : : }
2043 : : // -----------------------------------------------------------------------
2044 : 0 : void DataNavigatorWindow::LoadModels()
2045 : : {
2046 [ # # ]: 0 : if ( !m_xFrameModel.is() )
2047 : : {
2048 : : // get model of active frame
2049 [ # # ][ # # ]: 0 : Reference< XController > xCtrl = m_xFrame->getController();
2050 [ # # ]: 0 : if ( xCtrl.is() )
2051 : : {
2052 : : try
2053 : : {
2054 [ # # ][ # # ]: 0 : m_xFrameModel = xCtrl->getModel();
[ # # ][ # # ]
2055 : : }
2056 [ # # ]: 0 : catch ( Exception& )
2057 : : {
2058 : : SAL_WARN( "svx.form", "DataNavigatorWindow::LoadModels(): exception caught" );
2059 : : }
2060 : 0 : }
2061 : : }
2062 : :
2063 [ # # ]: 0 : if ( m_xFrameModel.is() )
2064 : : {
2065 : : try
2066 : : {
2067 [ # # ][ # # ]: 0 : ::rtl::OUString sURL = m_xFrameModel->getURL();
2068 [ # # ]: 0 : Reference< css::xforms::XFormsSupplier > xFormsSupp( m_xFrameModel, UNO_QUERY );
2069 [ # # ]: 0 : if ( xFormsSupp.is() )
2070 : : {
2071 [ # # ][ # # ]: 0 : Reference< XNameContainer > xContainer = xFormsSupp->getXForms();
2072 [ # # ]: 0 : if ( xContainer.is() )
2073 : : {
2074 [ # # ]: 0 : m_xDataContainer = xContainer;
2075 [ # # ][ # # ]: 0 : Sequence< ::rtl::OUString > aNameList = m_xDataContainer->getElementNames();
2076 : 0 : sal_Int32 i, nCount = aNameList.getLength();
2077 [ # # ]: 0 : ::rtl::OUString* pNames = aNameList.getArray();
2078 [ # # ]: 0 : for ( i = 0; i < nCount; ++i )
2079 : : {
2080 [ # # ][ # # ]: 0 : Any aAny = m_xDataContainer->getByName( pNames[i] );
2081 : 0 : Reference< css::xforms::XModel > xFormsModel;
2082 [ # # ][ # # ]: 0 : if ( aAny >>= xFormsModel )
2083 [ # # ][ # # ]: 0 : m_aModelsBox.InsertEntry( xFormsModel->getID() );
[ # # ][ # # ]
[ # # ]
2084 [ # # ]: 0 : }
2085 : 0 : }
2086 [ # # ]: 0 : }
2087 : : }
2088 : 0 : catch( Exception& )
2089 : : {
2090 : : SAL_WARN( "svx.form", "DataNavigatorWindow::LoadModels(): exception caught" );
2091 : : }
2092 : : }
2093 : :
2094 [ # # ]: 0 : if ( m_aModelsBox.GetEntryCount() > 0 )
2095 : : {
2096 : 0 : m_aModelsBox.SelectEntryPos(0);
2097 : 0 : ModelSelectHdl( &m_aModelsBox );
2098 : : }
2099 : 0 : }
2100 : : // -----------------------------------------------------------------------
2101 : 0 : void DataNavigatorWindow::SetPageModel()
2102 : : {
2103 [ # # ][ # # ]: 0 : rtl::OUString sModel( m_aModelsBox.GetSelectEntry() );
[ # # ]
2104 : : try
2105 : : {
2106 [ # # ][ # # ]: 0 : Any aAny = m_xDataContainer->getByName( sModel );
2107 : 0 : Reference< css::xforms::XModel > xFormsModel;
2108 [ # # ][ # # ]: 0 : if ( aAny >>= xFormsModel )
2109 : : {
2110 : 0 : sal_uInt16 nPagePos = TAB_PAGE_NOTFOUND;
2111 : 0 : sal_uInt16 nId = 0;
2112 [ # # ]: 0 : XFormsPage* pPage = GetCurrentPage( nId );
2113 : : DBG_ASSERT( pPage, "DataNavigatorWindow::SetPageModel(): no page" );
2114 [ # # ]: 0 : if ( nId >= TID_INSTANCE )
2115 : : // instance page
2116 [ # # ]: 0 : nPagePos = m_aTabCtrl.GetPagePos( nId );
2117 : 0 : m_bIsNotifyDisabled = true;
2118 [ # # ]: 0 : String sText = pPage->SetModel( xFormsModel, nPagePos );
2119 : 0 : m_bIsNotifyDisabled = false;
2120 [ # # ]: 0 : if ( sText.Len() > 0 )
2121 [ # # ][ # # ]: 0 : m_aTabCtrl.SetPageText( nId, sText );
2122 [ # # # ]: 0 : }
2123 : : }
2124 [ # # ]: 0 : catch ( NoSuchElementException& )
2125 : : {
2126 : : SAL_WARN( "svx.form", "DataNavigatorWindow::SetPageModel(): no such element" );
2127 : : }
2128 [ # # ]: 0 : catch( Exception& )
2129 : : {
2130 : : SAL_WARN( "svx.form", "DataNavigatorWindow::SetPageModel(): unexpected exception" );
2131 : 0 : }
2132 : 0 : }
2133 : : // -----------------------------------------------------------------------
2134 : 0 : void DataNavigatorWindow::InitPages()
2135 : : {
2136 [ # # ][ # # ]: 0 : rtl::OUString sModel( m_aModelsBox.GetSelectEntry() );
[ # # ]
2137 : : try
2138 : : {
2139 [ # # ][ # # ]: 0 : Any aAny = m_xDataContainer->getByName( sModel );
2140 : 0 : Reference< css::xforms::XModel > xModel;
2141 [ # # ][ # # ]: 0 : if ( aAny >>= xModel )
2142 : : {
2143 [ # # ][ # # ]: 0 : Reference< XEnumerationAccess > xNumAccess( xModel->getInstances(), UNO_QUERY );
[ # # ]
2144 [ # # ]: 0 : if ( xNumAccess.is() )
2145 : : {
2146 [ # # ][ # # ]: 0 : Reference < XEnumeration > xNum = xNumAccess->createEnumeration();
2147 [ # # ][ # # ]: 0 : if ( xNum.is() && xNum->hasMoreElements() )
[ # # ][ # # ]
[ # # ]
2148 : : {
2149 : 0 : sal_Int32 nAlreadyLoadedCount = m_aPageList.size();
2150 [ # # ][ # # ]: 0 : if ( !HasFirstInstancePage() && nAlreadyLoadedCount > 0 )
[ # # ][ # # ]
2151 : 0 : nAlreadyLoadedCount--;
2152 : 0 : sal_Int32 nIdx = 0;
2153 [ # # ][ # # ]: 0 : while ( xNum->hasMoreElements() )
[ # # ]
2154 : : {
2155 [ # # ]: 0 : if ( nIdx > nAlreadyLoadedCount )
2156 : : {
2157 [ # # ]: 0 : Sequence< PropertyValue > xPropSeq;
2158 [ # # ][ # # ]: 0 : if ( xNum->nextElement() >>= xPropSeq )
[ # # ][ # # ]
2159 [ # # ]: 0 : CreateInstancePage( xPropSeq );
2160 : : else
2161 : : {
2162 : : SAL_WARN( "svx.form", "DataNavigator::InitPages(): invalid instance" );
2163 [ # # ]: 0 : }
2164 : : }
2165 : : else
2166 [ # # ][ # # ]: 0 : xNum->nextElement();
2167 : 0 : nIdx++;
2168 : : }
2169 : 0 : }
2170 : 0 : }
2171 [ # # # ]: 0 : }
2172 : : }
2173 [ # # ]: 0 : catch ( NoSuchElementException& )
2174 : : {
2175 : : SAL_WARN( "svx.form", "DataNavigatorWindow::SetPageModel(): no such element" );
2176 : : }
2177 [ # # ]: 0 : catch( Exception& )
2178 : : {
2179 : : SAL_WARN( "svx.form", "DataNavigatorWindow::SetPageModel(): unexpected exception" );
2180 : 0 : }
2181 : 0 : }
2182 : : // -----------------------------------------------------------------------
2183 : 0 : void DataNavigatorWindow::ClearAllPageModels( bool bClearPages )
2184 : : {
2185 [ # # ]: 0 : if ( m_pInstPage )
2186 : 0 : m_pInstPage->ClearModel();
2187 [ # # ]: 0 : if ( m_pSubmissionPage )
2188 : 0 : m_pSubmissionPage->ClearModel();
2189 [ # # ]: 0 : if ( m_pBindingPage )
2190 : 0 : m_pBindingPage->ClearModel();
2191 : :
2192 : 0 : sal_Int32 i, nCount = m_aPageList.size();
2193 [ # # ]: 0 : for ( i = 0; i < nCount; ++i )
2194 : : {
2195 : 0 : XFormsPage* pPage = m_aPageList[i];
2196 : 0 : pPage->ClearModel();
2197 [ # # ]: 0 : if ( bClearPages )
2198 [ # # ]: 0 : delete pPage;
2199 : : }
2200 : :
2201 [ # # ]: 0 : if ( bClearPages )
2202 : : {
2203 : 0 : m_aPageList.clear();
2204 [ # # ]: 0 : while ( m_aTabCtrl.GetPageCount() > MIN_PAGE_COUNT )
2205 : 0 : m_aTabCtrl.RemovePage( m_aTabCtrl.GetPageId( 1 ) );
2206 : : }
2207 : 0 : }
2208 : : // -----------------------------------------------------------------------
2209 : 0 : void DataNavigatorWindow::CreateInstancePage( const Sequence< PropertyValue >& _xPropSeq )
2210 : : {
2211 : 0 : rtl::OUString sInstName;
2212 [ # # ]: 0 : rtl::OUString sID( PN_INSTANCE_ID );
2213 : 0 : const PropertyValue* pProps = _xPropSeq.getConstArray();
2214 : 0 : const PropertyValue* pPropsEnd = pProps + _xPropSeq.getLength();
2215 [ # # ]: 0 : for ( ; pProps != pPropsEnd; ++pProps )
2216 : : {
2217 [ # # ]: 0 : if ( sID.compareTo( pProps->Name ) == 0 )
2218 : : {
2219 : 0 : pProps->Value >>= sInstName;
2220 : 0 : break;
2221 : : }
2222 : : }
2223 : :
2224 [ # # ]: 0 : sal_uInt16 nPageId = GetNewPageId();
2225 [ # # ]: 0 : if ( sInstName.isEmpty() )
2226 : : {
2227 : : SAL_WARN( "svx.form", "DataNavigatorWindow::CreateInstancePage(): instance without name" );
2228 [ # # ]: 0 : String sTemp = rtl::OUString("untitled");
2229 [ # # ][ # # ]: 0 : sTemp += String::CreateFromInt32( nPageId );
[ # # ]
2230 [ # # ][ # # ]: 0 : sInstName = sTemp;
2231 : : }
2232 [ # # ][ # # ]: 0 : m_aTabCtrl.InsertPage( nPageId, sInstName, m_aTabCtrl.GetPageCount() - 2 );
[ # # ][ # # ]
2233 : 0 : }
2234 : :
2235 : : //------------------------------------------------------------------------
2236 : 0 : bool DataNavigatorWindow::HasFirstInstancePage() const
2237 : : {
2238 : 0 : return ( m_aTabCtrl.GetPageId( 0 ) == TID_INSTANCE );
2239 : : }
2240 : :
2241 : : //------------------------------------------------------------------------
2242 : 0 : sal_uInt16 DataNavigatorWindow::GetNewPageId() const
2243 : : {
2244 : 0 : sal_uInt16 i, nMax = 0, nCount = m_aTabCtrl.GetPageCount();
2245 [ # # ]: 0 : for ( i = 0; i < nCount; ++i )
2246 : : {
2247 [ # # ]: 0 : if ( nMax < m_aTabCtrl.GetPageId(i) )
2248 : 0 : nMax = m_aTabCtrl.GetPageId(i);
2249 : : }
2250 : 0 : return ( nMax + 1 );
2251 : : }
2252 : :
2253 : : //------------------------------------------------------------------------
2254 : 0 : void DataNavigatorWindow::Resize()
2255 : : {
2256 [ # # ]: 0 : Window::Resize();
2257 : :
2258 : 0 : Size aOutSz = GetOutputSizePixel();
2259 : 0 : long nWidth = Max( aOutSz.Width(), m_nMinWidth );
2260 : 0 : long nHeight = Max( aOutSz.Height(), m_nMinHeight );
2261 : :
2262 [ # # ]: 0 : Size aSz = m_aModelsBox.GetSizePixel();
2263 [ # # ]: 0 : aSz.Width() = nWidth - 3*m_a3Size.Width() - m_aModelBtn.GetSizePixel().Width();
2264 [ # # ]: 0 : m_aModelsBox.SetSizePixel( aSz );
2265 [ # # ]: 0 : Point aPos = m_aModelBtn.GetPosPixel();
2266 [ # # ]: 0 : aPos.X() = m_aModelsBox.GetPosPixel().X() + aSz.Width() + m_a3Size.Width();
2267 [ # # ]: 0 : m_aModelBtn.SetPosPixel( aPos );
2268 : :
2269 [ # # ]: 0 : aSz = m_aTabCtrl.GetSizePixel();
2270 : 0 : aSz.Width() = nWidth - 2*m_a3Size.Width();
2271 : 0 : aSz.Height() = nHeight - m_nBorderHeight;
2272 [ # # ]: 0 : m_aTabCtrl.SetSizePixel( aSz );
2273 : : // Instance button positioning
2274 [ # # ]: 0 : aPos = m_aInstanceBtn.GetPosPixel();
2275 : : // right aligned
2276 [ # # ]: 0 : aPos.X() = nWidth - m_aInstanceBtn.GetSizePixel().Width() - m_a3Size.Width();
2277 : : // under the tabcontrol
2278 [ # # ]: 0 : aPos.Y() = m_aTabCtrl.GetPosPixel().Y() + aSz.Height() + m_a3Size.Height();
2279 [ # # ]: 0 : m_aInstanceBtn.SetPosPixel( aPos );
2280 : 0 : }
2281 : :
2282 : : //------------------------------------------------------------------------
2283 : 0 : void DataNavigatorWindow::SetDocModified()
2284 : : {
2285 : 0 : SfxObjectShell* pCurrentDoc = SfxObjectShell::Current();
2286 : : DBG_ASSERT( pCurrentDoc, "DataNavigatorWindow::SetDocModified(): no objectshell" );
2287 [ # # ][ # # ]: 0 : if ( !pCurrentDoc->IsModified() && pCurrentDoc->IsEnableSetModified() )
[ # # ]
2288 : 0 : pCurrentDoc->SetModified();
2289 : 0 : }
2290 : :
2291 : : //------------------------------------------------------------------------
2292 : 0 : void DataNavigatorWindow::NotifyChanges( bool _bLoadAll )
2293 : : {
2294 [ # # ]: 0 : if ( !m_bIsNotifyDisabled )
2295 : : {
2296 [ # # ]: 0 : if ( _bLoadAll )
2297 : : {
2298 : : // reset all members
2299 : 0 : RemoveBroadcaster();
2300 : 0 : m_xDataContainer.clear();
2301 : 0 : m_xFrameModel.clear();
2302 : 0 : m_aModelsBox.Clear();
2303 : 0 : m_nLastSelectedPos = LISTBOX_ENTRY_NOTFOUND;
2304 : : // for a reload
2305 : 0 : LoadModels();
2306 : : }
2307 : : else
2308 : 0 : m_aUpdateTimer.Start();
2309 : : }
2310 : 0 : }
2311 : :
2312 : : //------------------------------------------------------------------------
2313 : 0 : void DataNavigatorWindow::AddContainerBroadcaster( const XContainer_ref& xContainer )
2314 : : {
2315 : : Reference< XContainerListener > xListener(
2316 [ # # ][ # # ]: 0 : static_cast< XContainerListener* >( m_xDataListener.get() ), UNO_QUERY );
2317 [ # # ][ # # ]: 0 : xContainer->addContainerListener( xListener );
2318 [ # # ]: 0 : m_aContainerList.push_back( xContainer );
2319 : 0 : }
2320 : :
2321 : : //------------------------------------------------------------------------
2322 : 0 : void DataNavigatorWindow::AddEventBroadcaster( const XEventTarget_ref& xTarget )
2323 : : {
2324 : : Reference< XEventListener > xListener(
2325 [ # # ][ # # ]: 0 : static_cast< XEventListener* >( m_xDataListener.get() ), UNO_QUERY );
2326 [ # # ][ # # ]: 0 : xTarget->addEventListener( EVENTTYPE_CHARDATA, xListener, true );
[ # # ]
2327 [ # # ][ # # ]: 0 : xTarget->addEventListener( EVENTTYPE_CHARDATA, xListener, false );
[ # # ]
2328 [ # # ][ # # ]: 0 : xTarget->addEventListener( EVENTTYPE_ATTR, xListener, true );
[ # # ]
2329 [ # # ][ # # ]: 0 : xTarget->addEventListener( EVENTTYPE_ATTR, xListener, false );
[ # # ]
2330 [ # # ]: 0 : m_aEventTargetList.push_back( xTarget );
2331 : 0 : }
2332 : :
2333 : : //------------------------------------------------------------------------
2334 : 0 : void DataNavigatorWindow::RemoveBroadcaster()
2335 : : {
2336 : : Reference< XContainerListener > xContainerListener(
2337 [ # # ][ # # ]: 0 : static_cast< XContainerListener* >( m_xDataListener.get() ), UNO_QUERY );
2338 : 0 : sal_Int32 i, nCount = m_aContainerList.size();
2339 [ # # ]: 0 : for ( i = 0; i < nCount; ++i )
2340 [ # # ][ # # ]: 0 : m_aContainerList[i]->removeContainerListener( xContainerListener );
2341 : : Reference< XEventListener > xEventListener(
2342 [ # # ][ # # ]: 0 : static_cast< XEventListener* >( m_xDataListener.get() ), UNO_QUERY );
2343 : 0 : nCount = m_aEventTargetList.size();
2344 [ # # ]: 0 : for ( i = 0; i < nCount; ++i )
2345 : : {
2346 [ # # ][ # # ]: 0 : m_aEventTargetList[i]->removeEventListener( EVENTTYPE_CHARDATA, xEventListener, true );
[ # # ]
2347 [ # # ][ # # ]: 0 : m_aEventTargetList[i]->removeEventListener( EVENTTYPE_CHARDATA, xEventListener, false );
[ # # ]
2348 [ # # ][ # # ]: 0 : m_aEventTargetList[i]->removeEventListener( EVENTTYPE_ATTR, xEventListener, true );
[ # # ]
2349 [ # # ][ # # ]: 0 : m_aEventTargetList[i]->removeEventListener( EVENTTYPE_ATTR, xEventListener, false );
[ # # ]
2350 : 0 : }
2351 : 0 : }
2352 : :
2353 : : //========================================================================
2354 : : // class DataNavigator
2355 : : //========================================================================
2356 : : DBG_NAME(DataNavigator)
2357 : : //------------------------------------------------------------------------
2358 : 0 : DataNavigator::DataNavigator( SfxBindings* _pBindings, SfxChildWindow* _pMgr, Window* _pParent ) :
2359 : :
2360 : : SfxDockingWindow( _pBindings, _pMgr, _pParent,
2361 : : WinBits(WB_STDMODELESS|WB_SIZEABLE|WB_ROLLABLE|WB_3DLOOK|WB_DOCKABLE) ),
2362 : : SfxControllerItem( SID_FM_DATANAVIGATOR_CONTROL, *_pBindings ),
2363 : :
2364 [ # # ][ # # ]: 0 : m_aDataWin( this, _pBindings )
2365 : :
2366 : : {
2367 : : DBG_CTOR(DataNavigator,NULL);
2368 : :
2369 [ # # ]: 0 : SetHelpId( HID_DATA_NAVIGATOR_WIN );
2370 [ # # ][ # # ]: 0 : SetText( SVX_RES( RID_STR_DATANAVIGATOR ) );
[ # # ][ # # ]
2371 : :
2372 : 0 : Size aSize = m_aDataWin.GetOutputSizePixel();
2373 [ # # ][ # # ]: 0 : Size aLogSize = PixelToLogic( aSize, MAP_APPFONT );
[ # # ]
2374 : 0 : SfxDockingWindow::SetFloatingSize( aLogSize );
2375 : :
2376 [ # # ]: 0 : m_aDataWin.Show();
2377 : 0 : }
2378 : :
2379 : : //------------------------------------------------------------------------
2380 [ # # ][ # # ]: 0 : DataNavigator::~DataNavigator()
2381 : : {
2382 : : DBG_DTOR(DataNavigator,NULL);
2383 [ # # ]: 0 : }
2384 : :
2385 : : //-----------------------------------------------------------------------
2386 : 0 : void DataNavigator::Update( FmFormShell* /*pFormShell*/ )
2387 : : {
2388 : 0 : }
2389 : : //-----------------------------------------------------------------------
2390 : 0 : void DataNavigator::StateChanged( sal_uInt16 nSID, SfxItemState eState, const SfxPoolItem* pState )
2391 : : {
2392 [ # # ][ # # ]: 0 : if ( !pState || SID_FM_DATANAVIGATOR_CONTROL != nSID )
2393 : 0 : return;
2394 : :
2395 [ # # ]: 0 : if ( eState >= SFX_ITEM_AVAILABLE )
2396 : : {
2397 [ # # ][ # # ]: 0 : FmFormShell* pShell = PTR_CAST( FmFormShell,((SfxObjectItem*)pState)->GetShell() );
2398 : 0 : Update( pShell );
2399 : : }
2400 : : else
2401 : 0 : Update( NULL );
2402 : : }
2403 : :
2404 : : //-----------------------------------------------------------------------
2405 : 0 : void DataNavigator::GetFocus()
2406 : : {
2407 : 0 : SfxDockingWindow::GetFocus();
2408 : 0 : }
2409 : :
2410 : : //-----------------------------------------------------------------------
2411 : 0 : sal_Bool DataNavigator::Close()
2412 : : {
2413 : 0 : Update( NULL );
2414 : 0 : return SfxDockingWindow::Close();
2415 : : }
2416 : :
2417 : : //-----------------------------------------------------------------------
2418 : 0 : Size DataNavigator::CalcDockingSize( SfxChildAlignment eAlign )
2419 : : {
2420 [ # # ][ # # ]: 0 : if ( ( eAlign == SFX_ALIGN_TOP ) || ( eAlign == SFX_ALIGN_BOTTOM ) )
2421 : 0 : return Size();
2422 : :
2423 : 0 : return SfxDockingWindow::CalcDockingSize( eAlign );
2424 : : }
2425 : :
2426 : : //-----------------------------------------------------------------------
2427 : 0 : SfxChildAlignment DataNavigator::CheckAlignment( SfxChildAlignment eActAlign, SfxChildAlignment eAlign )
2428 : : {
2429 [ # # ]: 0 : switch ( eAlign )
2430 : : {
2431 : : case SFX_ALIGN_LEFT:
2432 : : case SFX_ALIGN_RIGHT:
2433 : : case SFX_ALIGN_NOALIGNMENT:
2434 : 0 : return eAlign;
2435 : : default:
2436 : 0 : break;
2437 : : }
2438 : 0 : return eActAlign;
2439 : : }
2440 : :
2441 : : //------------------------------------------------------------------------
2442 : 0 : void DataNavigator::Resize()
2443 : : {
2444 [ # # ]: 0 : SfxDockingWindow::Resize();
2445 : :
2446 [ # # ][ # # ]: 0 : Size aLogOutputSize = PixelToLogic( GetOutputSizePixel(), MAP_APPFONT );
[ # # ][ # # ]
2447 : 0 : Size aLogExplSize = aLogOutputSize;
2448 : 0 : aLogExplSize.Width() -= 2;
2449 : 0 : aLogExplSize.Height() -= 2;
2450 : :
2451 [ # # ][ # # ]: 0 : Point aExplPos = LogicToPixel( Point(1,1), MAP_APPFONT );
[ # # ]
2452 [ # # ][ # # ]: 0 : Size aExplSize = LogicToPixel( aLogExplSize, MAP_APPFONT );
[ # # ]
2453 : :
2454 [ # # ]: 0 : m_aDataWin.SetPosSizePixel( aExplPos, aExplSize );
2455 : 0 : }
2456 : :
2457 : :
2458 : : //========================================================================
2459 : : // class NavigatorFrameManager
2460 : : //========================================================================
2461 : :
2462 : : //-----------------------------------------------------------------------
2463 [ # # ][ + - ]: 135 : SFX_IMPL_DOCKINGWINDOW( DataNavigatorManager, SID_FM_SHOW_DATANAVIGATOR )
[ # # ]
2464 : :
2465 : : //-----------------------------------------------------------------------
2466 : 0 : DataNavigatorManager::DataNavigatorManager(
2467 : : Window* _pParent, sal_uInt16 _nId, SfxBindings* _pBindings, SfxChildWinInfo* _pInfo ) :
2468 : :
2469 : 0 : SfxChildWindow( _pParent, _nId )
2470 : :
2471 : : {
2472 [ # # ][ # # ]: 0 : pWindow = new DataNavigator( _pBindings, this, _pParent );
2473 : 0 : eChildAlignment = SFX_ALIGN_RIGHT;
2474 [ # # ]: 0 : pWindow->SetSizePixel( Size( 250, 400 ) );
2475 [ # # ]: 0 : ( (SfxDockingWindow*)pWindow )->Initialize( _pInfo );
2476 : 0 : }
2477 : :
2478 : : //========================================================================
2479 : : // class AddDataItemDialog
2480 : : //========================================================================
2481 : :
2482 : 0 : AddDataItemDialog::AddDataItemDialog(
2483 : : Window* pParent, ItemNode* _pNode,
2484 : : const Reference< css::xforms::XFormsUIHelper1 >& _rUIHelper ) :
2485 : :
2486 : 0 : ModalDialog( pParent, SVX_RES( RID_SVXDLG_ADD_DATAITEM ) ),
2487 : :
2488 [ # # ]: 0 : m_aItemFL ( this, SVX_RES( FL_ITEM ) ),
2489 [ # # ]: 0 : m_aNameFT ( this, SVX_RES( FT_NAME ) ),
2490 [ # # ]: 0 : m_aNameED ( this, SVX_RES( ED_NAME ) ),
2491 [ # # ]: 0 : m_aDefaultFT ( this, SVX_RES( FT_DEFAULT ) ),
2492 [ # # ]: 0 : m_aDefaultED ( this, SVX_RES( ED_DEFAULT ) ),
2493 [ # # ]: 0 : m_aDefaultBtn ( this, SVX_RES( PB_DEFAULT ) ),
2494 [ # # ]: 0 : m_aSettingsFL ( this, SVX_RES( FL_SETTINGS ) ),
2495 [ # # ]: 0 : m_aDataTypeFT ( this, SVX_RES( FT_DATATYPE ) ),
2496 [ # # ]: 0 : m_aDataTypeLB ( this, SVX_RES( LB_DATATYPE ) ),
2497 [ # # ]: 0 : m_aRequiredCB ( this, SVX_RES( CB_REQUIRED ) ),
2498 [ # # ]: 0 : m_aRequiredBtn ( this, SVX_RES( PB_REQUIRED ) ),
2499 [ # # ]: 0 : m_aRelevantCB ( this, SVX_RES( CB_RELEVANT ) ),
2500 [ # # ]: 0 : m_aRelevantBtn ( this, SVX_RES( PB_RELEVANT ) ),
2501 [ # # ]: 0 : m_aConstraintCB ( this, SVX_RES( CB_CONSTRAINT ) ),
2502 [ # # ]: 0 : m_aConstraintBtn( this, SVX_RES( PB_CONSTRAINT ) ),
2503 [ # # ]: 0 : m_aReadonlyCB ( this, SVX_RES( CB_READONLY ) ),
2504 [ # # ]: 0 : m_aReadonlyBtn ( this, SVX_RES( PB_READONLY ) ),
2505 [ # # ]: 0 : m_aCalculateCB ( this, SVX_RES( CB_CALCULATE ) ),
2506 [ # # ]: 0 : m_aCalculateBtn ( this, SVX_RES( PB_CALCULATE ) ),
2507 [ # # ]: 0 : m_aButtonsFL ( this, SVX_RES( FL_DATANAV_BTN ) ),
2508 [ # # ]: 0 : m_aOKBtn ( this, SVX_RES( BTN_DATANAV_OK ) ),
2509 [ # # ]: 0 : m_aEscBtn ( this, SVX_RES( BTN_DATANAV_ESC ) ),
2510 [ # # ]: 0 : m_aHelpBtn ( this, SVX_RES( BTN_DATANAV_HELP ) ),
2511 : :
2512 : : m_xUIHelper ( _rUIHelper ),
2513 : : m_pItemNode ( _pNode ),
2514 : : m_eItemType ( DITNone ),
2515 [ # # ]: 0 : m_sFL_Element ( SVX_RES( STR_FIXEDLINE_ELEMENT ) ),
2516 [ # # ]: 0 : m_sFL_Attribute ( SVX_RES( STR_FIXEDLINE_ATTRIBUTE ) ),
2517 [ # # ]: 0 : m_sFL_Binding ( SVX_RES( STR_FIXEDLINE_BINDING ) ),
2518 [ # # ][ # # ]: 0 : m_sFT_BindingExp( SVX_RES( STR_FIXEDTEXT_BINDING ) )
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ]
2519 : :
2520 : : {
2521 [ # # ]: 0 : FreeResource();
2522 [ # # ]: 0 : m_aDataTypeLB.SetDropDownLineCount( 10 );
2523 : :
2524 [ # # ]: 0 : InitDialog();
2525 [ # # ]: 0 : InitFromNode();
2526 [ # # ]: 0 : InitDataTypeBox();
2527 [ # # ]: 0 : CheckHdl( NULL );
2528 : 0 : }
2529 : :
2530 : : //------------------------------------------------------------------------
2531 [ # # ][ # # ]: 0 : AddDataItemDialog::~AddDataItemDialog()
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ]
2532 : : {
2533 [ # # ]: 0 : if ( m_xTempBinding.is() )
2534 : : {
2535 [ # # ]: 0 : Reference< css::xforms::XModel > xModel( m_xUIHelper, UNO_QUERY );
2536 [ # # ]: 0 : if ( xModel.is() )
2537 : : {
2538 : : try
2539 : : {
2540 [ # # ][ # # ]: 0 : Reference < XSet > xBindings = xModel->getBindings();
2541 [ # # ]: 0 : if ( xBindings.is() )
2542 [ # # ][ # # ]: 0 : xBindings->remove( makeAny( m_xTempBinding ) );
[ # # ][ # # ]
2543 : : }
2544 [ # # ]: 0 : catch ( Exception& )
2545 : : {
2546 : : SAL_WARN( "svx.form", "AddDataItemDialog::Dtor(): exception caught" );
2547 : : }
2548 : 0 : }
2549 : : }
2550 [ # # ][ # # ]: 0 : if( m_xUIHelper.is() && m_xBinding.is() )
[ # # ]
2551 : : {
2552 : : // remove binding, if it does not convey 'useful' information
2553 [ # # ][ # # ]: 0 : m_xUIHelper->removeBindingIfUseless( m_xBinding );
2554 : : }
2555 [ # # ]: 0 : }
2556 : :
2557 : : //------------------------------------------------------------------------
2558 : 0 : IMPL_LINK( AddDataItemDialog, CheckHdl, CheckBox *, pBox )
2559 : : {
2560 : : // Condition buttons are only enable if their check box is checked
2561 : 0 : m_aReadonlyBtn.Enable( m_aReadonlyCB.IsChecked() );
2562 : 0 : m_aRequiredBtn.Enable( m_aRequiredCB.IsChecked() );
2563 : 0 : m_aRelevantBtn.Enable( m_aRelevantCB.IsChecked() );
2564 : 0 : m_aConstraintBtn.Enable( m_aConstraintCB.IsChecked() );
2565 : 0 : m_aCalculateBtn.Enable( m_aCalculateCB.IsChecked() );
2566 : :
2567 [ # # ][ # # ]: 0 : if ( pBox && m_xTempBinding.is() )
[ # # ]
2568 : : {
2569 : 0 : ::rtl::OUString sTemp, sPropName;
2570 [ # # ]: 0 : if ( &m_aRequiredCB == pBox )
2571 [ # # ]: 0 : sPropName = PN_REQUIRED_EXPR;
2572 [ # # ]: 0 : else if ( &m_aRelevantCB == pBox )
2573 [ # # ]: 0 : sPropName = PN_RELEVANT_EXPR;
2574 [ # # ]: 0 : else if ( &m_aConstraintCB == pBox )
2575 [ # # ]: 0 : sPropName = PN_CONSTRAINT_EXPR;
2576 [ # # ]: 0 : else if ( &m_aReadonlyCB == pBox )
2577 [ # # ]: 0 : sPropName = PN_READONLY_EXPR;
2578 [ # # ]: 0 : else if ( &m_aCalculateCB == pBox )
2579 [ # # ]: 0 : sPropName = PN_CALCULATE_EXPR;
2580 [ # # ]: 0 : bool bIsChecked = ( pBox->IsChecked() != sal_False );
2581 [ # # ][ # # ]: 0 : m_xTempBinding->getPropertyValue( sPropName ) >>= sTemp;
2582 [ # # ][ # # ]: 0 : if ( bIsChecked && sTemp.isEmpty() )
[ # # ]
2583 [ # # ]: 0 : sTemp = TRUE_VALUE;
2584 [ # # ][ # # ]: 0 : else if ( !bIsChecked && !sTemp.isEmpty() )
[ # # ]
2585 : 0 : sTemp = ::rtl::OUString();
2586 [ # # ][ # # ]: 0 : m_xTempBinding->setPropertyValue( sPropName, makeAny( sTemp ) );
[ # # ]
2587 : : }
2588 : :
2589 : 0 : return 0;
2590 : : }
2591 : :
2592 : : //------------------------------------------------------------------------
2593 : 0 : IMPL_LINK( AddDataItemDialog, ConditionHdl, PushButton *, pBtn )
2594 : : {
2595 : 0 : ::rtl::OUString sTemp, sPropName;
2596 [ # # ]: 0 : if ( &m_aDefaultBtn == pBtn )
2597 [ # # ]: 0 : sPropName = PN_BINDING_EXPR;
2598 [ # # ]: 0 : else if ( &m_aRequiredBtn == pBtn )
2599 [ # # ]: 0 : sPropName = PN_REQUIRED_EXPR;
2600 [ # # ]: 0 : else if ( &m_aRelevantBtn == pBtn )
2601 [ # # ]: 0 : sPropName = PN_RELEVANT_EXPR;
2602 [ # # ]: 0 : else if ( &m_aConstraintBtn == pBtn )
2603 [ # # ]: 0 : sPropName = PN_CONSTRAINT_EXPR;
2604 [ # # ]: 0 : else if ( &m_aReadonlyBtn == pBtn )
2605 [ # # ]: 0 : sPropName = PN_READONLY_EXPR;
2606 [ # # ]: 0 : else if ( &m_aCalculateBtn == pBtn )
2607 [ # # ]: 0 : sPropName = PN_CALCULATE_EXPR;
2608 [ # # ]: 0 : AddConditionDialog aDlg( this, sPropName, m_xTempBinding );
2609 : 0 : bool bIsDefBtn = ( &m_aDefaultBtn == pBtn );
2610 [ # # ]: 0 : String sCondition;
2611 [ # # ]: 0 : if ( bIsDefBtn )
2612 [ # # ][ # # ]: 0 : sCondition = m_aDefaultED.GetText();
[ # # ]
2613 : : else
2614 : : {
2615 [ # # ][ # # ]: 0 : m_xTempBinding->getPropertyValue( sPropName ) >>= sTemp;
2616 [ # # ]: 0 : if ( sTemp.isEmpty() )
2617 [ # # ]: 0 : sTemp = TRUE_VALUE;
2618 [ # # ]: 0 : sCondition = sTemp;
2619 : : }
2620 [ # # ]: 0 : aDlg.SetCondition( sCondition );
2621 : :
2622 [ # # ][ # # ]: 0 : if ( aDlg.Execute() == RET_OK )
2623 : : {
2624 [ # # ]: 0 : String sNewCondition = aDlg.GetCondition();
2625 [ # # ]: 0 : if ( bIsDefBtn )
2626 [ # # ]: 0 : m_aDefaultED.SetText( sNewCondition );
2627 : : else
2628 : : {
2629 : :
2630 [ # # ]: 0 : m_xTempBinding->setPropertyValue(
2631 [ # # ][ # # ]: 0 : sPropName, makeAny( ::rtl::OUString( sNewCondition ) ) );
[ # # ]
2632 [ # # ]: 0 : }
2633 : : }
2634 [ # # ][ # # ]: 0 : return 0;
2635 : : }
2636 : :
2637 : 0 : void copyPropSet( const Reference< XPropertySet >& xFrom, Reference< XPropertySet >& xTo )
2638 : : {
2639 : : DBG_ASSERT( xFrom.is(), "copyPropSet(): no source" );
2640 : : DBG_ASSERT( xTo.is(), "copyPropSet(): no target" );
2641 : :
2642 : : try
2643 : : {
2644 : : // get property names & infos, and iterate over target properties
2645 [ # # ][ # # ]: 0 : Sequence< Property > aProperties = xTo->getPropertySetInfo()->getProperties();
[ # # ][ # # ]
2646 : 0 : sal_Int32 nProperties = aProperties.getLength();
2647 : 0 : const Property* pProperties = aProperties.getConstArray();
2648 [ # # ][ # # ]: 0 : Reference< XPropertySetInfo > xFromInfo = xFrom->getPropertySetInfo();
2649 [ # # ]: 0 : for ( sal_Int32 i = 0; i < nProperties; ++i )
2650 : : {
2651 : 0 : const ::rtl::OUString& rName = pProperties[i].Name;
2652 : :
2653 : : // if both set have the property, copy the value
2654 : : // (catch and ignore exceptions, if any)
2655 [ # # ][ # # ]: 0 : if ( xFromInfo->hasPropertyByName( rName ) )
[ # # ]
2656 : : {
2657 : : // don't set readonly properties
2658 [ # # ][ # # ]: 0 : Property aProperty = xFromInfo->getPropertyByName( rName );
2659 [ # # ]: 0 : if ( ( aProperty.Attributes & PropertyAttribute::READONLY ) == 0 )
2660 [ # # ][ # # ]: 0 : xTo->setPropertyValue(rName, xFrom->getPropertyValue( rName ));
[ # # ][ # # ]
2661 : : }
2662 : : // else: no property? then ignore.
2663 [ # # ][ # # ]: 0 : }
2664 : : }
2665 : 0 : catch ( Exception& )
2666 : : {
2667 : : SAL_WARN( "svx.form", "copyPropSet(): exception caught" );
2668 : : }
2669 : 0 : }
2670 : :
2671 : : //------------------------------------------------------------------------
2672 : 0 : IMPL_LINK_NOARG(AddDataItemDialog, OKHdl)
2673 : : {
2674 : 0 : bool bIsHandleBinding = ( DITBinding == m_eItemType );
2675 : 0 : bool bIsHandleText = ( DITText == m_eItemType );
2676 [ # # ][ # # ]: 0 : ::rtl::OUString sNewName( m_aNameED.GetText() );
[ # # ]
2677 : :
2678 [ # # ][ # # ]: 0 : if ( ( !bIsHandleBinding && !bIsHandleText && !m_xUIHelper->isValidXMLName( sNewName ) ) ||
[ # # ][ # # ]
[ # # ]
[ # # # # ]
[ # # ]
2679 : 0 : ( bIsHandleBinding && sNewName.isEmpty() ) )
2680 : : {
2681 : : // Error and don't close the dialog
2682 [ # # ][ # # ]: 0 : ErrorBox aErrBox( this, SVX_RES( RID_ERR_INVALID_XMLNAME ) );
2683 [ # # ]: 0 : String sMessText = aErrBox.GetMessText();
2684 [ # # ][ # # ]: 0 : sMessText.SearchAndReplace( MSG_VARIABLE, sNewName );
[ # # ][ # # ]
[ # # ]
2685 [ # # ]: 0 : aErrBox.SetMessText( sMessText );
2686 [ # # ]: 0 : aErrBox.Execute();
2687 [ # # ][ # # ]: 0 : return 0;
2688 : : }
2689 : :
2690 [ # # ][ # # ]: 0 : ::rtl::OUString sDataType( m_aDataTypeLB.GetSelectEntry() );
[ # # ]
2691 [ # # ][ # # ]: 0 : m_xTempBinding->setPropertyValue( PN_BINDING_TYPE, makeAny( sDataType ) );
[ # # ][ # # ]
2692 : :
2693 [ # # ]: 0 : if ( bIsHandleBinding )
2694 : : {
2695 : : // copy properties from temp binding to original binding
2696 [ # # ]: 0 : copyPropSet( m_xTempBinding, m_pItemNode->m_xPropSet );
2697 : : try
2698 : : {
2699 [ # # ][ # # ]: 0 : ::rtl::OUString sValue = m_aNameED.GetText();
[ # # ]
2700 [ # # ][ # # ]: 0 : m_pItemNode->m_xPropSet->setPropertyValue( PN_BINDING_ID, makeAny( sValue ) );
[ # # ][ # # ]
2701 [ # # ][ # # ]: 0 : sValue = m_aDefaultED.GetText();
[ # # ]
2702 [ # # ][ # # ]: 0 : m_pItemNode->m_xPropSet->setPropertyValue( PN_BINDING_EXPR, makeAny( sValue ) );
[ # # ][ # # ]
[ # # ]
2703 : : }
2704 [ # # ]: 0 : catch ( Exception& )
2705 : : {
2706 : : SAL_WARN( "svx.form", "AddDataDialog::OKHdl(): exception caught" );
2707 : : }
2708 : : }
2709 : : else
2710 : : {
2711 : : // copy properties from temp binding to original binding
2712 [ # # ]: 0 : copyPropSet( m_xTempBinding, m_xBinding );
2713 : : try
2714 : : {
2715 [ # # ]: 0 : if ( bIsHandleText )
2716 [ # # ][ # # ]: 0 : m_xUIHelper->setNodeValue( m_pItemNode->m_xNode, m_aDefaultED.GetText() );
[ # # ][ # # ]
[ # # ]
2717 : : else
2718 : : {
2719 : : Reference< css::xml::dom::XNode > xNewNode =
2720 [ # # ][ # # ]: 0 : m_xUIHelper->renameNode( m_pItemNode->m_xNode, m_aNameED.GetText() );
[ # # ][ # # ]
[ # # ]
2721 [ # # ][ # # ]: 0 : m_xUIHelper->setNodeValue( xNewNode, m_aDefaultED.GetText() );
[ # # ][ # # ]
[ # # ]
2722 [ # # ][ # # ]: 0 : m_pItemNode->m_xNode = xNewNode;
2723 : : }
2724 : : }
2725 [ # # ]: 0 : catch ( Exception& )
2726 : : {
2727 : : SAL_WARN( "svx.form", "AddDataDialog::OKHdl(): exception caught" );
2728 : : }
2729 : : }
2730 : : // then close the dialog
2731 [ # # ]: 0 : EndDialog( RET_OK );
2732 : 0 : return 0;
2733 : : }
2734 : :
2735 : : //------------------------------------------------------------------------
2736 : 0 : void AddDataItemDialog::InitDialog()
2737 : : {
2738 : : // set handler
2739 [ # # ]: 0 : Link aLink = LINK( this, AddDataItemDialog, CheckHdl );
2740 : 0 : m_aRequiredCB.SetClickHdl( aLink );
2741 : 0 : m_aRelevantCB.SetClickHdl( aLink );
2742 : 0 : m_aConstraintCB.SetClickHdl( aLink );
2743 : 0 : m_aReadonlyCB.SetClickHdl( aLink );
2744 : 0 : m_aCalculateCB.SetClickHdl( aLink );
2745 : :
2746 [ # # ]: 0 : aLink = LINK( this, AddDataItemDialog, ConditionHdl );
2747 : 0 : m_aDefaultBtn.SetClickHdl( aLink );
2748 : 0 : m_aRequiredBtn.SetClickHdl( aLink );
2749 : 0 : m_aRelevantBtn.SetClickHdl( aLink );
2750 : 0 : m_aConstraintBtn.SetClickHdl( aLink );
2751 : 0 : m_aReadonlyBtn.SetClickHdl( aLink );
2752 : 0 : m_aCalculateBtn.SetClickHdl( aLink );
2753 : :
2754 [ # # ]: 0 : m_aOKBtn.SetClickHdl( LINK( this, AddDataItemDialog, OKHdl ) );
2755 : 0 : }
2756 : :
2757 : : //------------------------------------------------------------------------
2758 : 0 : void AddDataItemDialog::InitFromNode()
2759 : : {
2760 [ # # ]: 0 : if ( m_pItemNode )
2761 : : {
2762 [ # # ]: 0 : if ( m_pItemNode->m_xNode.is() )
2763 : : {
2764 : : try
2765 : : {
2766 : : // detect type of the node
2767 [ # # ][ # # ]: 0 : css::xml::dom::NodeType eChildType = m_pItemNode->m_xNode->getNodeType();
2768 [ # # # # ]: 0 : switch ( eChildType )
2769 : : {
2770 : : case css::xml::dom::NodeType_ATTRIBUTE_NODE:
2771 : 0 : m_eItemType = DITAttribute;
2772 : 0 : break;
2773 : : case css::xml::dom::NodeType_ELEMENT_NODE:
2774 : 0 : m_eItemType = DITElement;
2775 : 0 : break;
2776 : : case css::xml::dom::NodeType_TEXT_NODE:
2777 : 0 : m_eItemType = DITText;
2778 : 0 : break;
2779 : : default:
2780 : : OSL_FAIL( "AddDataItemDialog::InitFronNode: cannot handle this node type!" );
2781 : 0 : break;
2782 : : }
2783 : :
2784 : : /** Get binding of the node and clone it
2785 : : Then use this temporary binding in the dialog.
2786 : : When the user click OK the temporary binding will be copied
2787 : : into the original binding.
2788 : : */
2789 : :
2790 : 0 : Reference< css::xml::dom::XNode > xNode = m_pItemNode->m_xNode;
2791 [ # # ][ # # ]: 0 : m_xBinding = m_xUIHelper->getBindingForNode( xNode, sal_True );
[ # # ]
2792 [ # # ]: 0 : if ( m_xBinding.is() )
2793 : : {
2794 [ # # ]: 0 : Reference< css::xforms::XModel > xModel( m_xUIHelper, UNO_QUERY );
2795 [ # # ]: 0 : if ( xModel.is() )
2796 : : {
2797 [ # # ][ # # ]: 0 : m_xTempBinding = m_xUIHelper->cloneBindingAsGhost( m_xBinding );
[ # # ]
2798 [ # # ][ # # ]: 0 : Reference < XSet > xBindings = xModel->getBindings();
2799 [ # # ]: 0 : if ( xBindings.is() )
2800 [ # # ][ # # ]: 0 : xBindings->insert( makeAny( m_xTempBinding ) );
[ # # ]
2801 : 0 : }
2802 : : }
2803 : :
2804 [ # # ]: 0 : if ( m_eItemType != DITText )
2805 : : {
2806 [ # # ][ # # ]: 0 : ::rtl::OUString sName( m_xUIHelper->getNodeName( m_pItemNode->m_xNode ) );
2807 [ # # ][ # # ]: 0 : m_aNameED.SetText( sName );
[ # # ]
2808 : : }
2809 [ # # ][ # # ]: 0 : m_aDefaultED.SetText( m_pItemNode->m_xNode->getNodeValue() );
[ # # ][ # # ]
[ # # ][ # # ]
2810 : : }
2811 : 0 : catch( Exception& )
2812 : : {
2813 : : SAL_WARN( "svx.form", "AddDataItemDialog::InitFromNode(): exception caught" );
2814 : : }
2815 : : }
2816 [ # # ]: 0 : else if ( m_pItemNode->m_xPropSet.is() )
2817 : : {
2818 : 0 : m_eItemType = DITBinding;
2819 [ # # ]: 0 : Reference< css::xforms::XModel > xModel( m_xUIHelper, UNO_QUERY );
2820 [ # # ]: 0 : if ( xModel.is() )
2821 : : {
2822 : : try
2823 : : {
2824 [ # # ][ # # ]: 0 : m_xTempBinding = m_xUIHelper->cloneBindingAsGhost( m_pItemNode->m_xPropSet );
[ # # ]
2825 [ # # ][ # # ]: 0 : Reference < XSet > xBindings = xModel->getBindings();
2826 [ # # ]: 0 : if ( xBindings.is() )
2827 [ # # ][ # # ]: 0 : xBindings->insert( makeAny( m_xTempBinding ) );
[ # # ][ # # ]
2828 : : }
2829 [ # # ]: 0 : catch ( Exception& )
2830 : : {
2831 : : SAL_WARN( "svx.form", "AddDataItemDialog::InitFromNode(): exception caught" );
2832 : : }
2833 : : }
2834 : 0 : rtl::OUString sTemp;
2835 : : try
2836 : : {
2837 [ # # ][ # # ]: 0 : Reference< XPropertySetInfo > xInfo = m_pItemNode->m_xPropSet->getPropertySetInfo();
2838 [ # # ][ # # ]: 0 : if ( xInfo->hasPropertyByName( PN_BINDING_ID ) )
[ # # ][ # # ]
2839 : : {
2840 [ # # ][ # # ]: 0 : m_pItemNode->m_xPropSet->getPropertyValue( PN_BINDING_ID ) >>= sTemp;
[ # # ]
2841 [ # # ][ # # ]: 0 : m_aNameED.SetText( sTemp );
[ # # ]
2842 [ # # ][ # # ]: 0 : m_pItemNode->m_xPropSet->getPropertyValue( PN_BINDING_EXPR ) >>= sTemp;
[ # # ]
2843 [ # # ][ # # ]: 0 : m_aDefaultED.SetText( sTemp );
[ # # ]
2844 : : }
2845 [ # # ][ # # ]: 0 : else if ( xInfo->hasPropertyByName( PN_SUBMISSION_BIND ) )
[ # # ][ # # ]
2846 : : {
2847 [ # # ][ # # ]: 0 : m_pItemNode->m_xPropSet->getPropertyValue( PN_SUBMISSION_ID ) >>= sTemp;
[ # # ]
2848 [ # # ][ # # ]: 0 : m_aNameED.SetText( sTemp );
[ # # ]
2849 [ # # ]: 0 : }
2850 : : }
2851 [ # # ]: 0 : catch( Exception& )
2852 : : {
2853 : : SAL_WARN( "svx.form", "AddDataItemDialog::InitFromNode(): exception caught" );
2854 : : }
2855 : :
2856 [ # # ][ # # ]: 0 : Size a3and1Sz = LogicToPixel( Size( 3, 1 ), MAP_APPFONT );
[ # # ]
2857 [ # # ]: 0 : Size aNewSz = m_aDefaultED.GetSizePixel();
2858 [ # # ]: 0 : Point aNewPnt = m_aDefaultED.GetPosPixel();
2859 : 0 : aNewPnt.Y() += a3and1Sz.Height();
2860 [ # # ]: 0 : aNewSz.Width() -= ( m_aDefaultBtn.GetSizePixel().Width() + a3and1Sz.Width() );
2861 [ # # ]: 0 : m_aDefaultED.SetPosSizePixel( aNewPnt, aNewSz );
2862 [ # # ]: 0 : m_aDefaultBtn.Show();
2863 : : }
2864 : :
2865 [ # # ]: 0 : if ( m_xTempBinding.is() )
2866 : : {
2867 : 0 : ::rtl::OUString sTemp;
2868 : : try
2869 : : {
2870 [ # # ][ # # ]: 0 : if ( ( m_xTempBinding->getPropertyValue( PN_REQUIRED_EXPR ) >>= sTemp )
[ # # # # ]
[ # # ][ # # ]
[ # # # #
# # ][ # # ]
2871 : 0 : && !sTemp.isEmpty() )
2872 [ # # ]: 0 : m_aRequiredCB.Check( sal_True );
2873 [ # # ][ # # ]: 0 : if ( ( m_xTempBinding->getPropertyValue( PN_RELEVANT_EXPR ) >>= sTemp )
[ # # ]
[ # # # # ]
[ # # ][ # # ]
[ # # # #
# # ]
2874 : 0 : && !sTemp.isEmpty() )
2875 [ # # ]: 0 : m_aRelevantCB.Check( sal_True );
2876 [ # # ][ # # ]: 0 : if ( ( m_xTempBinding->getPropertyValue( PN_CONSTRAINT_EXPR ) >>= sTemp )
[ # # ]
[ # # # # ]
[ # # ][ # # ]
[ # # # #
# # ]
2877 : 0 : && !sTemp.isEmpty() )
2878 [ # # ]: 0 : m_aConstraintCB.Check( sal_True );
2879 [ # # ][ # # ]: 0 : if ( ( m_xTempBinding->getPropertyValue( PN_READONLY_EXPR ) >>= sTemp )
[ # # ]
[ # # # # ]
[ # # ][ # # ]
[ # # # #
# # ]
2880 : 0 : && !sTemp.isEmpty() )
2881 [ # # ]: 0 : m_aReadonlyCB.Check( sal_True );
2882 [ # # ][ # # ]: 0 : if ( ( m_xTempBinding->getPropertyValue( PN_CALCULATE_EXPR ) >>= sTemp )
[ # # ]
[ # # # # ]
[ # # ][ # # ]
[ # # # #
# # # # ]
2883 : 0 : && !sTemp.isEmpty() )
2884 [ # # ]: 0 : m_aCalculateCB.Check( sal_True );
2885 : : }
2886 [ # # ]: 0 : catch ( Exception& )
2887 : : {
2888 : : SAL_WARN( "svx.form", "AddDataItemDialog::InitFromNode(): exception caught" );
2889 : 0 : }
2890 : : }
2891 : : }
2892 : :
2893 [ # # ]: 0 : if ( DITText == m_eItemType )
2894 : : {
2895 [ # # ][ # # ]: 0 : long nDelta = m_aButtonsFL.GetPosPixel().Y() - m_aSettingsFL.GetPosPixel().Y();
2896 : 0 : size_t i = 0;
2897 : : Window* pWinsForHide[] =
2898 : : {
2899 : : &m_aSettingsFL, &m_aDataTypeFT, &m_aDataTypeLB, &m_aRequiredCB,
2900 : : &m_aRequiredBtn, &m_aRelevantCB, &m_aRelevantBtn, &m_aConstraintCB,
2901 : : &m_aConstraintBtn, &m_aReadonlyCB, &m_aReadonlyBtn, &m_aCalculateCB,
2902 : : &m_aCalculateBtn
2903 : 0 : };
2904 : 0 : Window** pCurrent = pWinsForHide;
2905 [ # # ]: 0 : for ( ; i < sizeof( pWinsForHide ) / sizeof( pWinsForHide[ 0 ] ); ++i, ++pCurrent )
2906 [ # # ]: 0 : (*pCurrent)->Hide();
2907 : :
2908 : : Window* pWinsForMove[] =
2909 : : {
2910 : : &m_aButtonsFL, &m_aOKBtn, &m_aEscBtn, &m_aHelpBtn
2911 : 0 : };
2912 : 0 : pCurrent = pWinsForMove;
2913 [ # # ]: 0 : for ( i = 0; i < sizeof( pWinsForMove ) / sizeof( pWinsForMove[ 0 ] ); ++i, ++pCurrent )
2914 : : {
2915 [ # # ]: 0 : Point aNewPos = (*pCurrent)->GetPosPixel();
2916 : 0 : aNewPos.Y() -= nDelta;
2917 [ # # ]: 0 : (*pCurrent)->SetPosPixel( aNewPos );
2918 : : }
2919 [ # # ]: 0 : Size aNewWinSz = GetSizePixel();
2920 : 0 : aNewWinSz.Height() -= nDelta;
2921 [ # # ]: 0 : SetSizePixel( aNewWinSz );
2922 : :
2923 [ # # ]: 0 : m_aNameFT.Disable();
2924 [ # # ]: 0 : m_aNameED.Disable();
2925 : : }
2926 : 0 : }
2927 : :
2928 : : //------------------------------------------------------------------------
2929 : 0 : void AddDataItemDialog::InitDataTypeBox()
2930 : : {
2931 [ # # ]: 0 : if ( m_eItemType != DITText )
2932 : : {
2933 [ # # ]: 0 : Reference< css::xforms::XModel > xModel( m_xUIHelper, UNO_QUERY );
2934 [ # # ]: 0 : if ( xModel.is() )
2935 : : {
2936 : : try
2937 : : {
2938 : : Reference< css::xforms::XDataTypeRepository > xDataTypes =
2939 [ # # ][ # # ]: 0 : xModel->getDataTypeRepository();
2940 [ # # ]: 0 : if ( xDataTypes.is() )
2941 : : {
2942 [ # # ][ # # ]: 0 : Sequence< ::rtl::OUString > aNameList = xDataTypes->getElementNames();
2943 : 0 : sal_Int32 i, nCount = aNameList.getLength();
2944 [ # # ]: 0 : ::rtl::OUString* pNames = aNameList.getArray();
2945 [ # # ]: 0 : for ( i = 0; i < nCount; ++i )
2946 [ # # ][ # # ]: 0 : m_aDataTypeLB.InsertEntry( pNames[i] );
[ # # ][ # # ]
2947 : : }
2948 : :
2949 [ # # ]: 0 : if ( m_xTempBinding.is() )
2950 : : {
2951 : 0 : rtl::OUString sTemp;
2952 [ # # ][ # # ]: 0 : if ( m_xTempBinding->getPropertyValue( PN_BINDING_TYPE ) >>= sTemp )
[ # # ][ # # ]
2953 : : {
2954 [ # # ][ # # ]: 0 : sal_uInt16 nPos = m_aDataTypeLB.GetEntryPos( String( sTemp ) );
[ # # ]
2955 [ # # ]: 0 : if ( LISTBOX_ENTRY_NOTFOUND == nPos )
2956 [ # # ][ # # ]: 0 : nPos = m_aDataTypeLB.InsertEntry( sTemp );
[ # # ]
2957 [ # # ]: 0 : m_aDataTypeLB.SelectEntryPos( nPos );
2958 : 0 : }
2959 [ # # ]: 0 : }
2960 : : }
2961 [ # # ]: 0 : catch ( Exception& )
2962 : : {
2963 : : SAL_WARN( "svx.form", "AddDataItemDialog::InitDataTypeBox(): exception caught" );
2964 : : }
2965 : 0 : }
2966 : : }
2967 : 0 : }
2968 : :
2969 : 0 : void AddDataItemDialog::InitText( DataItemType _eType )
2970 : : {
2971 [ # # ]: 0 : String sText;
2972 : :
2973 [ # # # ]: 0 : switch ( _eType )
2974 : : {
2975 : : case DITAttribute :
2976 : : {
2977 [ # # ]: 0 : sText = m_sFL_Attribute;
2978 : 0 : break;
2979 : : }
2980 : :
2981 : : case DITBinding :
2982 : : {
2983 [ # # ]: 0 : sText = m_sFL_Binding;
2984 [ # # ]: 0 : m_aDefaultFT.SetText( m_sFT_BindingExp );
2985 : 0 : break;
2986 : : }
2987 : :
2988 : : default:
2989 : : {
2990 [ # # ]: 0 : sText = m_sFL_Element;
2991 : : }
2992 : : }
2993 : :
2994 [ # # ][ # # ]: 0 : m_aItemFL.SetText( sText );
2995 : 0 : }
2996 : :
2997 : : //========================================================================
2998 : : // class AddConditionDialog
2999 : : //========================================================================
3000 : :
3001 : 0 : AddConditionDialog::AddConditionDialog(
3002 : : Window* pParent, const ::rtl::OUString& _rPropertyName,
3003 : : const Reference< XPropertySet >& _rPropSet ) :
3004 : :
3005 : 0 : ModalDialog( pParent, SVX_RES( RID_SVXDLG_ADD_CONDITION ) ),
3006 : :
3007 [ # # ]: 0 : m_aConditionFT ( this, SVX_RES( FT_CONDITION ) ),
3008 [ # # ]: 0 : m_aConditionED ( this, SVX_RES( ED_CONDITION ) ),
3009 [ # # ]: 0 : m_aResultFT ( this, SVX_RES( FT_RESULT ) ),
3010 [ # # ]: 0 : m_aResultWin ( this, SVX_RES( FT_RESULT_PREVIEW ) ),
3011 [ # # ]: 0 : m_aEditNamespacesBtn( this, SVX_RES( PB_EDIT_NAMESPACES ) ),
3012 [ # # ]: 0 : m_aButtonsFL ( this, SVX_RES( FL_DATANAV_BTN ) ),
3013 [ # # ]: 0 : m_aOKBtn ( this, SVX_RES( BTN_DATANAV_OK ) ),
3014 [ # # ]: 0 : m_aEscBtn ( this, SVX_RES( BTN_DATANAV_ESC ) ),
3015 [ # # ]: 0 : m_aHelpBtn ( this, SVX_RES( BTN_DATANAV_HELP ) ),
3016 : :
3017 : : m_sPropertyName ( _rPropertyName ),
3018 [ # # ][ # # ]: 0 : m_xBinding ( _rPropSet )
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ]
3019 : :
3020 : : {
3021 [ # # ]: 0 : FreeResource();
3022 : :
3023 : : DBG_ASSERT( m_xBinding.is(), "AddConditionDialog::Ctor(): no Binding" );
3024 : :
3025 [ # # ]: 0 : m_aResultWin.SetBackground( m_aConditionED.GetBackground() );
3026 [ # # ]: 0 : m_aConditionED.SetModifyHdl( LINK( this, AddConditionDialog, ModifyHdl ) );
3027 [ # # ]: 0 : m_aEditNamespacesBtn.SetClickHdl( LINK( this, AddConditionDialog, EditHdl ) );
3028 [ # # ]: 0 : m_aOKBtn.SetClickHdl( LINK( this, AddConditionDialog, OKHdl ) );
3029 [ # # ]: 0 : m_aResultTimer.SetTimeout( 500 );
3030 [ # # ]: 0 : m_aResultTimer.SetTimeoutHdl( LINK( this, AddConditionDialog, ResultHdl ) );
3031 : :
3032 [ # # ]: 0 : if ( !m_sPropertyName.isEmpty() )
3033 : : {
3034 : : try
3035 : : {
3036 : 0 : rtl::OUString sTemp;
3037 [ # # ]: 0 : if ( ( m_xBinding->getPropertyValue( m_sPropertyName ) >>= sTemp )
[ # # # # ]
[ # # ]
[ # # # # ]
[ # # ]
3038 : 0 : && !sTemp.isEmpty() )
3039 : : {
3040 [ # # ][ # # ]: 0 : m_aConditionED.SetText( sTemp );
[ # # ]
3041 : : }
3042 : : else
3043 : : {
3044 : : //! m_xBinding->setPropertyValue( m_sPropertyName, makeAny( TRUE_VALUE ) );
3045 [ # # ][ # # ]: 0 : m_aConditionED.SetText( TRUE_VALUE );
[ # # ][ # # ]
3046 : : }
3047 : :
3048 : 0 : Reference< css::xforms::XModel > xModel;
3049 [ # # ][ # # ]: 0 : if ( ( m_xBinding->getPropertyValue( PN_BINDING_MODEL ) >>= xModel ) && xModel.is() )
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # #
# # # # ]
[ # # ]
3050 [ # # ][ # # ]: 0 : m_xUIHelper = Reference< css::xforms::XFormsUIHelper1 >( xModel, UNO_QUERY );
[ # # ]
3051 : : }
3052 [ # # ]: 0 : catch ( Exception& )
3053 : : {
3054 : : SAL_WARN( "svx.form", "AddConditionDialog::Ctor(): exception caught" );
3055 : : }
3056 : : }
3057 : :
3058 : : DBG_ASSERT( m_xUIHelper.is(), "AddConditionDialog::Ctor(): no UIHelper" );
3059 [ # # ]: 0 : ResultHdl( &m_aResultTimer );
3060 : 0 : }
3061 : :
3062 : : //------------------------------------------------------------------------
3063 [ # # ][ # # ]: 0 : AddConditionDialog::~AddConditionDialog()
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
3064 : : {
3065 [ # # ]: 0 : }
3066 : :
3067 : : //------------------------------------------------------------------------
3068 : 0 : IMPL_LINK_NOARG(AddConditionDialog, EditHdl)
3069 : : {
3070 : 0 : Reference< XNameContainer > xNameContnr;
3071 : : try
3072 : : {
3073 [ # # ][ # # ]: 0 : m_xBinding->getPropertyValue( PN_BINDING_NAMESPACES ) >>= xNameContnr;
[ # # ][ # # ]
[ # # ]
3074 : : }
3075 [ # # ]: 0 : catch ( Exception& )
3076 : : {
3077 : : SAL_WARN( "svx.form", "AddDataItemDialog::EditHdl(): exception caught" );
3078 : : }
3079 [ # # ]: 0 : NamespaceItemDialog aDlg( this, xNameContnr );
3080 [ # # ]: 0 : aDlg.Execute();
3081 : : try
3082 : : {
3083 [ # # ][ # # ]: 0 : m_xBinding->setPropertyValue( PN_BINDING_NAMESPACES, makeAny( xNameContnr ) );
[ # # ][ # # ]
[ # # ]
3084 : : }
3085 [ # # ]: 0 : catch ( Exception& )
3086 : : {
3087 : : SAL_WARN( "svx.form", "AddDataItemDialog::EditHdl(): exception caught" );
3088 : : }
3089 [ # # ]: 0 : return 0;
3090 : : }
3091 : :
3092 : : //------------------------------------------------------------------------
3093 : 0 : IMPL_LINK_NOARG(AddConditionDialog, OKHdl)
3094 : : {
3095 : : /*!!!
3096 : : try
3097 : : {
3098 : : if ( m_xBinding.is() )
3099 : : m_xBinding->setPropertyValue( m_sPropertyName, makeAny( ::rtl::OUString( m_aConditionED.GetText() ) ) );
3100 : : }
3101 : : catch( const Exception& )
3102 : : {
3103 : : SAL_WARN( "svx.form", "AddConditionDialog, OKHdl: caught an exception!" );
3104 : : }
3105 : : */
3106 : 0 : EndDialog( RET_OK );
3107 : 0 : return 0;
3108 : : }
3109 : :
3110 : : //------------------------------------------------------------------------
3111 : 0 : IMPL_LINK_NOARG(AddConditionDialog, ModifyHdl)
3112 : : {
3113 : 0 : m_aResultTimer.Start();
3114 : 0 : return 0;
3115 : : }
3116 : :
3117 : : //------------------------------------------------------------------------
3118 : 0 : IMPL_LINK_NOARG(AddConditionDialog, ResultHdl)
3119 : : {
3120 [ # # ][ # # ]: 0 : String sCondition = comphelper::string::strip(m_aConditionED.GetText(), ' ');
[ # # ][ # # ]
[ # # ]
3121 [ # # ]: 0 : String sResult;
3122 [ # # ]: 0 : if ( sCondition.Len() > 0 )
3123 : : {
3124 : : try
3125 : : {
3126 [ # # ][ # # ]: 0 : sResult = m_xUIHelper->getResultForExpression( m_xBinding, ( m_sPropertyName == PN_BINDING_EXPR ), sCondition );
[ # # ][ # # ]
[ # # ][ # # ]
3127 : : }
3128 [ # # ]: 0 : catch ( Exception& )
3129 : : {
3130 : : SAL_WARN( "svx.form", "AddConditionDialog::ResultHdl(): exception caught" );
3131 : : }
3132 : : }
3133 [ # # ]: 0 : m_aResultWin.SetText( sResult );
3134 [ # # ][ # # ]: 0 : return 0;
3135 : : }
3136 : :
3137 : : //========================================================================
3138 : : // class NamespaceItemDialog
3139 : : //========================================================================
3140 : :
3141 : 0 : NamespaceItemDialog::NamespaceItemDialog(
3142 : : AddConditionDialog* _pCondDlg, Reference< XNameContainer >& _rContainer ) :
3143 : :
3144 : 0 : ModalDialog( _pCondDlg, SVX_RES( RID_SVXDLG_NAMESPACE_ITEM ) ),
3145 : :
3146 [ # # ]: 0 : m_aNamespacesFT ( this, SVX_RES( FT_NAMESPACES ) ),
3147 [ # # ]: 0 : m_aNamespacesListContainer ( this, SVX_RES( LB_NAMESPACES ) ),
3148 : : m_aNamespacesList ( m_aNamespacesListContainer ),
3149 [ # # ]: 0 : m_aAddNamespaceBtn ( this, SVX_RES( PB_ADD_NAMESPACE ) ),
3150 [ # # ]: 0 : m_aEditNamespaceBtn ( this, SVX_RES( PB_EDIT_NAMESPACE ) ),
3151 [ # # ]: 0 : m_aDeleteNamespaceBtn ( this, SVX_RES( PB_DELETE_NAMESPACE ) ),
3152 [ # # ]: 0 : m_aButtonsFL ( this, SVX_RES( FL_DATANAV_BTN ) ),
3153 [ # # ]: 0 : m_aOKBtn ( this, SVX_RES( BTN_DATANAV_OK ) ),
3154 [ # # ]: 0 : m_aEscBtn ( this, SVX_RES( BTN_DATANAV_ESC ) ),
3155 [ # # ]: 0 : m_aHelpBtn ( this, SVX_RES( BTN_DATANAV_HELP ) ),
3156 : :
3157 : : m_pConditionDlg ( _pCondDlg ),
3158 [ # # ][ # # ]: 0 : m_rNamespaces ( _rContainer )
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
3159 : :
3160 : : {
3161 : : static long aStaticTabs[]= { 3, 0, 35, 200 };
3162 [ # # ]: 0 : m_aNamespacesList.SvxSimpleTable::SetTabs( aStaticTabs );
3163 [ # # ][ # # ]: 0 : String sHeader = String( SVX_RES( STR_HEADER_PREFIX ) );
3164 [ # # ]: 0 : sHeader += '\t';
3165 [ # # ][ # # ]: 0 : sHeader += String( SVX_RES( STR_HEADER_URL ) );
[ # # ][ # # ]
3166 : : m_aNamespacesList.InsertHeaderEntry(
3167 [ # # ][ # # ]: 0 : sHeader, HEADERBAR_APPEND, HIB_LEFT /*| HIB_FIXEDPOS | HIB_FIXED*/ );
3168 : :
3169 [ # # ]: 0 : FreeResource();
3170 : :
3171 [ # # ]: 0 : m_aNamespacesList.SetSelectHdl( LINK( this, NamespaceItemDialog, SelectHdl ) );
3172 [ # # ]: 0 : Link aLink = LINK( this, NamespaceItemDialog, ClickHdl );
3173 : 0 : m_aAddNamespaceBtn.SetClickHdl( aLink );
3174 : 0 : m_aEditNamespaceBtn.SetClickHdl( aLink );
3175 : 0 : m_aDeleteNamespaceBtn.SetClickHdl( aLink );
3176 [ # # ]: 0 : m_aOKBtn.SetClickHdl( LINK( this, NamespaceItemDialog, OKHdl ) );
3177 : :
3178 [ # # ]: 0 : LoadNamespaces();
3179 [ # # ][ # # ]: 0 : SelectHdl( &m_aNamespacesList );
3180 : 0 : }
3181 : :
3182 : : //------------------------------------------------------------------------
3183 [ # # ][ # # ]: 0 : NamespaceItemDialog::~NamespaceItemDialog()
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
3184 : : {
3185 [ # # ]: 0 : }
3186 : :
3187 : : //------------------------------------------------------------------------
3188 : 0 : IMPL_LINK( NamespaceItemDialog, SelectHdl, SvxSimpleTable *, EMPTYARG )
3189 : : {
3190 : 0 : sal_Bool bEnable = ( m_aNamespacesList.FirstSelected() != NULL );
3191 : 0 : m_aEditNamespaceBtn.Enable( bEnable );
3192 : 0 : m_aDeleteNamespaceBtn.Enable( bEnable );
3193 : :
3194 : 0 : return 0;
3195 : : }
3196 : :
3197 : : //------------------------------------------------------------------------
3198 : 0 : IMPL_LINK( NamespaceItemDialog, ClickHdl, PushButton *, pBtn )
3199 : : {
3200 [ # # ]: 0 : if ( &m_aAddNamespaceBtn == pBtn )
3201 : : {
3202 [ # # ]: 0 : ManageNamespaceDialog aDlg( this, m_pConditionDlg, false );
3203 [ # # ][ # # ]: 0 : if ( aDlg.Execute() == RET_OK )
3204 : : {
3205 [ # # ]: 0 : String sEntry = aDlg.GetPrefix();
3206 [ # # ]: 0 : sEntry += '\t';
3207 [ # # ][ # # ]: 0 : sEntry += aDlg.GetURL();
[ # # ]
3208 [ # # ][ # # ]: 0 : m_aNamespacesList.InsertEntry( sEntry );
3209 [ # # ]: 0 : }
3210 : : }
3211 [ # # ]: 0 : else if ( &m_aEditNamespaceBtn == pBtn )
3212 : : {
3213 [ # # ]: 0 : ManageNamespaceDialog aDlg( this, m_pConditionDlg, true );
3214 [ # # ]: 0 : SvLBoxEntry* pEntry = m_aNamespacesList.FirstSelected();
3215 : : DBG_ASSERT( pEntry, "NamespaceItemDialog::ClickHdl(): no entry" );
3216 [ # # ]: 0 : String sPrefix( m_aNamespacesList.GetEntryText( pEntry, 0 ) );
3217 : : aDlg.SetNamespace(
3218 : : sPrefix,
3219 [ # # ][ # # ]: 0 : m_aNamespacesList.GetEntryText( pEntry, 1 ) );
[ # # ]
3220 [ # # ][ # # ]: 0 : if ( aDlg.Execute() == RET_OK )
3221 : : {
3222 : : // if a prefix was changed, mark the old prefix as 'removed'
3223 [ # # ][ # # ]: 0 : if( sPrefix != aDlg.GetPrefix() )
[ # # ][ # # ]
3224 [ # # ][ # # ]: 0 : m_aRemovedList.push_back( sPrefix );
3225 : :
3226 [ # # ][ # # ]: 0 : m_aNamespacesList.SetEntryText( aDlg.GetPrefix(), pEntry, 0 );
[ # # ]
3227 [ # # ][ # # ]: 0 : m_aNamespacesList.SetEntryText( aDlg.GetURL(), pEntry, 1 );
[ # # ]
3228 [ # # ][ # # ]: 0 : }
3229 : : }
3230 [ # # ]: 0 : else if ( &m_aDeleteNamespaceBtn == pBtn )
3231 : : {
3232 [ # # ]: 0 : SvLBoxEntry* pEntry = m_aNamespacesList.FirstSelected();
3233 : : DBG_ASSERT( pEntry, "NamespaceItemDialog::ClickHdl(): no entry" );
3234 [ # # ][ # # ]: 0 : ::rtl::OUString sPrefix( m_aNamespacesList.GetEntryText( pEntry, 0 ) );
[ # # ]
3235 [ # # ]: 0 : m_aRemovedList.push_back( sPrefix );
3236 [ # # ]: 0 : m_aNamespacesList.GetModel()->Remove( pEntry );
3237 : : }
3238 : : else
3239 : : {
3240 : : SAL_WARN( "svx.form", "NamespaceItemDialog::ClickHdl(): invalid button" );
3241 : : }
3242 : :
3243 : 0 : SelectHdl( &m_aNamespacesList );
3244 : 0 : return 0;
3245 : : }
3246 : :
3247 : : //------------------------------------------------------------------------
3248 : 0 : IMPL_LINK_NOARG(NamespaceItemDialog, OKHdl)
3249 : : {
3250 : : try
3251 : : {
3252 : : // update namespace container
3253 : 0 : sal_Int32 i, nRemovedCount = m_aRemovedList.size();
3254 [ # # ]: 0 : for( i = 0; i < nRemovedCount; ++i )
3255 [ # # ][ # # ]: 0 : m_rNamespaces->removeByName( m_aRemovedList[i] );
3256 : :
3257 : 0 : sal_Int32 nEntryCount = m_aNamespacesList.GetEntryCount();
3258 [ # # ]: 0 : for( i = 0; i < nEntryCount; ++i )
3259 : : {
3260 [ # # ]: 0 : SvLBoxEntry* pEntry = m_aNamespacesList.GetEntry(i);
3261 [ # # ][ # # ]: 0 : ::rtl::OUString sPrefix( m_aNamespacesList.GetEntryText( pEntry, 0 ) );
[ # # ]
3262 [ # # ][ # # ]: 0 : ::rtl::OUString sURL( m_aNamespacesList.GetEntryText( pEntry, 1 ) );
[ # # ]
3263 : :
3264 [ # # ][ # # ]: 0 : if ( m_rNamespaces->hasByName( sPrefix ) )
[ # # ]
3265 [ # # ][ # # ]: 0 : m_rNamespaces->replaceByName( sPrefix, makeAny( sURL ) );
[ # # ]
3266 : : else
3267 [ # # ][ # # ]: 0 : m_rNamespaces->insertByName( sPrefix, makeAny( sURL ) );
[ # # ]
3268 [ # # ]: 0 : }
3269 : : }
3270 : 0 : catch ( Exception& )
3271 : : {
3272 : : SAL_WARN( "svx.form", "NamespaceItemDialog::OKHdl(): exception caught" );
3273 : : }
3274 : : // and close the dialog
3275 : 0 : EndDialog( RET_OK );
3276 : 0 : return 0;
3277 : : }
3278 : :
3279 : : //------------------------------------------------------------------------
3280 : 0 : void NamespaceItemDialog::LoadNamespaces()
3281 : : {
3282 : : try
3283 : : {
3284 [ # # ][ # # ]: 0 : Sequence< ::rtl::OUString > aAllNames = m_rNamespaces->getElementNames();
3285 : 0 : const ::rtl::OUString* pAllNames = aAllNames.getConstArray();
3286 : 0 : const ::rtl::OUString* pAllNamesEnd = pAllNames + aAllNames.getLength();
3287 [ # # ]: 0 : for ( ; pAllNames != pAllNamesEnd; ++pAllNames )
3288 : : {
3289 : 0 : ::rtl::OUString sURL;
3290 : 0 : ::rtl::OUString sPrefix = *pAllNames;
3291 [ # # ][ # # ]: 0 : if ( m_rNamespaces->hasByName( sPrefix ) )
[ # # ]
3292 : : {
3293 [ # # ][ # # ]: 0 : Any aAny = m_rNamespaces->getByName( sPrefix );
3294 [ # # ]: 0 : if ( aAny >>= sURL )
3295 : : {
3296 [ # # ]: 0 : String sEntry( sPrefix );
3297 [ # # ]: 0 : sEntry += '\t';
3298 [ # # ][ # # ]: 0 : sEntry += String( sURL );
[ # # ]
3299 : :
3300 [ # # ][ # # ]: 0 : m_aNamespacesList.InsertEntry( sEntry );
3301 : 0 : }
3302 : : }
3303 [ # # ][ # # ]: 0 : }
3304 : : }
3305 : 0 : catch ( Exception& )
3306 : : {
3307 : : SAL_WARN( "svx.form", "NamespaceItemDialog::LoadNamespaces(): exception caught" );
3308 : : }
3309 : 0 : }
3310 : :
3311 : : //========================================================================
3312 : : // class ManageNamespaceDialog
3313 : : //========================================================================
3314 : :
3315 : 0 : ManageNamespaceDialog::ManageNamespaceDialog(
3316 : : Window* pParent, AddConditionDialog* _pCondDlg, bool _bIsEdit ) :
3317 : :
3318 : 0 : ModalDialog( pParent, SVX_RES( RID_SVXDLG_MANAGE_NAMESPACE ) ),
3319 : :
3320 [ # # ]: 0 : m_aPrefixFT ( this, SVX_RES( FT_PREFIX ) ),
3321 [ # # ]: 0 : m_aPrefixED ( this, SVX_RES( ED_PREFIX ) ),
3322 [ # # ]: 0 : m_aUrlFT ( this, SVX_RES( FT_URL ) ),
3323 [ # # ]: 0 : m_aUrlED ( this, SVX_RES( ED_URL ) ),
3324 [ # # ]: 0 : m_aButtonsFL ( this, SVX_RES( FL_DATANAV_BTN ) ),
3325 [ # # ]: 0 : m_aOKBtn ( this, SVX_RES( BTN_DATANAV_OK ) ),
3326 [ # # ]: 0 : m_aEscBtn ( this, SVX_RES( BTN_DATANAV_ESC ) ),
3327 [ # # ]: 0 : m_aHelpBtn ( this, SVX_RES( BTN_DATANAV_HELP ) ),
3328 : :
3329 [ # # ][ # # ]: 0 : m_pConditionDlg ( _pCondDlg )
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ]
3330 : :
3331 : : {
3332 [ # # ]: 0 : if ( _bIsEdit )
3333 [ # # ][ # # ]: 0 : SetText( String( SVX_RES( STR_EDIT_TEXT ) ) );
[ # # ][ # # ]
3334 : :
3335 [ # # ]: 0 : FreeResource();
3336 : :
3337 [ # # ]: 0 : m_aOKBtn.SetClickHdl( LINK( this, ManageNamespaceDialog, OKHdl ) );
3338 : 0 : }
3339 : :
3340 : : //------------------------------------------------------------------------
3341 [ # # ][ # # ]: 0 : ManageNamespaceDialog::~ManageNamespaceDialog()
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
3342 : : {
3343 [ # # ]: 0 : }
3344 : :
3345 : : //------------------------------------------------------------------------
3346 : 0 : IMPL_LINK_NOARG(ManageNamespaceDialog, OKHdl)
3347 : : {
3348 [ # # ]: 0 : String sPrefix = m_aPrefixED.GetText();
3349 : :
3350 : : try
3351 : : {
3352 [ # # ][ # # ]: 0 : if ( !m_pConditionDlg->GetUIHelper()->isValidPrefixName( sPrefix ) )
[ # # ][ # # ]
[ # # ]
3353 : : {
3354 [ # # ][ # # ]: 0 : ErrorBox aErrBox( this, SVX_RES( RID_ERR_INVALID_XMLPREFIX ) );
3355 [ # # ]: 0 : String sMessText = aErrBox.GetMessText();
3356 [ # # ][ # # ]: 0 : sMessText.SearchAndReplace( MSG_VARIABLE, sPrefix );
[ # # ]
3357 [ # # ]: 0 : aErrBox.SetMessText( sMessText );
3358 [ # # ]: 0 : aErrBox.Execute();
3359 [ # # ][ # # ]: 0 : return 0;
[ # # ]
3360 : : }
3361 : : }
3362 [ # # ]: 0 : catch ( Exception& )
3363 : : {
3364 : : SAL_WARN( "svx.form", "ManageNamespacesDialog::OKHdl(): exception caught" );
3365 : : }
3366 : :
3367 : : // no error so close the dialog
3368 [ # # ]: 0 : EndDialog( RET_OK );
3369 [ # # ]: 0 : return 0;
3370 : : }
3371 : :
3372 : : //========================================================================
3373 : : // class AddSubmissionDialog
3374 : : //========================================================================
3375 : :
3376 : 0 : AddSubmissionDialog::AddSubmissionDialog(
3377 : : Window* pParent, ItemNode* _pNode,
3378 : : const Reference< css::xforms::XFormsUIHelper1 >& _rUIHelper ) :
3379 : :
3380 : 0 : ModalDialog( pParent, SVX_RES( RID_SVXDLG_ADD_SUBMISSION ) ),
3381 : :
3382 [ # # ]: 0 : m_aSubmissionFL ( this, SVX_RES( FL_SUBMISSION ) ),
3383 [ # # ]: 0 : m_aNameFT ( this, SVX_RES( FT_SUBMIT_NAME ) ),
3384 [ # # ]: 0 : m_aNameED ( this, SVX_RES( ED_SUBMIT_NAME ) ),
3385 [ # # ]: 0 : m_aActionFT ( this, SVX_RES( FT_SUBMIT_ACTION ) ),
3386 [ # # ]: 0 : m_aActionED ( this, SVX_RES( ED_SUBMIT_ACTION ) ),
3387 [ # # ]: 0 : m_aMethodFT ( this, SVX_RES( FT_SUBMIT_METHOD ) ),
3388 [ # # ]: 0 : m_aMethodLB ( this, SVX_RES( LB_SUBMIT_METHOD ) ),
3389 [ # # ]: 0 : m_aRefFT ( this, SVX_RES( FT_SUBMIT_REF ) ),
3390 [ # # ]: 0 : m_aRefED ( this, SVX_RES( ED_SUBMIT_REF ) ),
3391 [ # # ]: 0 : m_aRefBtn ( this, SVX_RES( PB_SUBMIT_REF ) ),
3392 [ # # ]: 0 : m_aBindFT ( this, SVX_RES( FT_SUBMIT_BIND ) ),
3393 [ # # ]: 0 : m_aBindLB ( this, SVX_RES( LB_SUBMIT_BIND ) ),
3394 [ # # ]: 0 : m_aReplaceFT ( this, SVX_RES( FT_SUBMIT_REPLACE ) ),
3395 [ # # ]: 0 : m_aReplaceLB ( this, SVX_RES( LB_SUBMIT_REPLACE ) ),
3396 : :
3397 [ # # ]: 0 : m_aButtonsFL ( this, SVX_RES( FL_DATANAV_BTN ) ),
3398 [ # # ]: 0 : m_aOKBtn ( this, SVX_RES( BTN_DATANAV_OK ) ),
3399 [ # # ]: 0 : m_aEscBtn ( this, SVX_RES( BTN_DATANAV_ESC ) ),
3400 [ # # ]: 0 : m_aHelpBtn ( this, SVX_RES( BTN_DATANAV_HELP ) ),
3401 : :
3402 : : m_pItemNode ( _pNode ),
3403 [ # # ][ # # ]: 0 : m_xUIHelper ( _rUIHelper )
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ]
3404 : :
3405 : : {
3406 [ # # ]: 0 : FillAllBoxes(); // we need local resources here, so call before FreeResource!!!
3407 : :
3408 [ # # ]: 0 : FreeResource();
3409 : :
3410 [ # # ]: 0 : m_aRefBtn.SetClickHdl( LINK( this, AddSubmissionDialog, RefHdl ) );
3411 [ # # ]: 0 : m_aOKBtn.SetClickHdl( LINK( this, AddSubmissionDialog, OKHdl ) );
3412 : 0 : }
3413 : :
3414 : : //------------------------------------------------------------------------
3415 [ # # ][ # # ]: 0 : AddSubmissionDialog::~AddSubmissionDialog()
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
3416 : : {
3417 : : // #i38991# if we have added a binding, we need to remove it as well.
3418 [ # # ][ # # ]: 0 : if( m_xCreatedBinding.is() && m_xUIHelper.is() )
[ # # ]
3419 [ # # ][ # # ]: 0 : m_xUIHelper->removeBindingIfUseless( m_xCreatedBinding );
3420 [ # # ]: 0 : }
3421 : :
3422 : : //------------------------------------------------------------------------
3423 : 0 : IMPL_LINK_NOARG(AddSubmissionDialog, RefHdl)
3424 : : {
3425 [ # # ][ # # ]: 0 : AddConditionDialog aDlg( this, PN_BINDING_EXPR, m_xTempBinding );
3426 [ # # ][ # # ]: 0 : aDlg.SetCondition( m_aRefED.GetText() );
[ # # ]
3427 [ # # ][ # # ]: 0 : if ( aDlg.Execute() == RET_OK )
3428 [ # # ][ # # ]: 0 : m_aRefED.SetText( aDlg.GetCondition() );
[ # # ]
3429 : :
3430 [ # # ]: 0 : return 0;
3431 : : }
3432 : :
3433 : : //------------------------------------------------------------------------
3434 : 0 : IMPL_LINK_NOARG(AddSubmissionDialog, OKHdl)
3435 : : {
3436 [ # # ][ # # ]: 0 : rtl::OUString sName(m_aNameED.GetText());
[ # # ]
3437 [ # # ]: 0 : if(sName.isEmpty()) {
3438 : :
3439 [ # # ][ # # ]: 0 : ErrorBox aErrorBox(this,SVX_RES(RID_ERR_EMPTY_SUBMISSIONNAME));
3440 [ # # ][ # # ]: 0 : aErrorBox.SetText( Application::GetDisplayName() );
[ # # ]
3441 [ # # ]: 0 : aErrorBox.Execute();
3442 [ # # ]: 0 : return 0;
3443 : : }
3444 : :
3445 [ # # ]: 0 : if ( !m_xSubmission.is() )
3446 : : {
3447 : : DBG_ASSERT( !m_xNewSubmission.is(),
3448 : : "AddSubmissionDialog::OKHdl(): new submission already exists" );
3449 : :
3450 : : // add a new submission
3451 [ # # ]: 0 : Reference< css::xforms::XModel > xModel( m_xUIHelper, UNO_QUERY );
3452 [ # # ]: 0 : if ( xModel.is() )
3453 : : {
3454 : : try
3455 : : {
3456 [ # # ][ # # ]: 0 : m_xNewSubmission = xModel->createSubmission();
[ # # ]
3457 [ # # ][ # # ]: 0 : m_xSubmission = Reference< XPropertySet >( m_xNewSubmission, UNO_QUERY );
[ # # ]
3458 : : }
3459 [ # # ]: 0 : catch ( Exception& )
3460 : : {
3461 : : SAL_WARN( "svx.form", "AddSubmissionDialog::OKHdl(): exception caught" );
3462 : : }
3463 : 0 : }
3464 : : }
3465 : :
3466 [ # # ]: 0 : if ( m_xSubmission.is() )
3467 : : {
3468 [ # # ][ # # ]: 0 : rtl::OUString sTemp = m_aNameED.GetText();
[ # # ]
3469 : : try
3470 : : {
3471 [ # # ][ # # ]: 0 : m_xSubmission->setPropertyValue( PN_SUBMISSION_ID, makeAny( sTemp ) );
[ # # ][ # # ]
3472 [ # # ][ # # ]: 0 : sTemp = m_aActionED.GetText();
[ # # ]
3473 [ # # ][ # # ]: 0 : m_xSubmission->setPropertyValue( PN_SUBMISSION_ACTION, makeAny( sTemp ) );
[ # # ][ # # ]
3474 [ # # ][ # # ]: 0 : sTemp = lcl_MethodString::get().toAPI( m_aMethodLB.GetSelectEntry() );
[ # # ][ # # ]
3475 [ # # ][ # # ]: 0 : m_xSubmission->setPropertyValue( PN_SUBMISSION_METHOD, makeAny( sTemp ) );
[ # # ][ # # ]
3476 [ # # ][ # # ]: 0 : sTemp = m_aRefED.GetText();
[ # # ]
3477 [ # # ][ # # ]: 0 : m_xSubmission->setPropertyValue( PN_SUBMISSION_REF, makeAny( sTemp ) );
[ # # ][ # # ]
3478 [ # # ]: 0 : String sEntry = m_aBindLB.GetSelectEntry();
3479 [ # # ][ # # ]: 0 : sEntry.Erase( sEntry.Search( ':' ) );
3480 [ # # ]: 0 : sTemp = sEntry;
3481 [ # # ][ # # ]: 0 : m_xSubmission->setPropertyValue( PN_SUBMISSION_BIND, makeAny( sTemp ) );
[ # # ][ # # ]
3482 [ # # ][ # # ]: 0 : sTemp = lcl_ReplaceString::get().toAPI( m_aReplaceLB.GetSelectEntry() );
[ # # ][ # # ]
3483 [ # # ][ # # ]: 0 : m_xSubmission->setPropertyValue( PN_SUBMISSION_REPLACE, makeAny( sTemp ) );
[ # # ][ # # ]
[ # # ][ # # ]
3484 : : }
3485 [ # # ]: 0 : catch ( Exception& )
3486 : : {
3487 : : SAL_WARN( "svx.form", "AddSubmissionDialog::OKHdl(): exception caught" );
3488 : 0 : }
3489 : : }
3490 : :
3491 [ # # ]: 0 : EndDialog( RET_OK );
3492 : 0 : return 0;
3493 : : }
3494 : :
3495 : : //------------------------------------------------------------------------
3496 : 0 : void AddSubmissionDialog::FillAllBoxes()
3497 : : {
3498 : : // method box
3499 [ # # ][ # # ]: 0 : m_aMethodLB.InsertEntry( String( SVX_RES( STR_METHOD_POST ) ) );
[ # # ][ # # ]
3500 [ # # ][ # # ]: 0 : m_aMethodLB.InsertEntry( String( SVX_RES( STR_METHOD_PUT ) ) );
[ # # ][ # # ]
3501 [ # # ][ # # ]: 0 : m_aMethodLB.InsertEntry( String( SVX_RES( STR_METHOD_GET ) ) );
[ # # ][ # # ]
3502 [ # # ]: 0 : m_aMethodLB.SelectEntryPos(0);
3503 : :
3504 : : // binding box
3505 [ # # ]: 0 : Reference< css::xforms::XModel > xModel( m_xUIHelper, UNO_QUERY );
3506 [ # # ]: 0 : if ( xModel.is() )
3507 : : {
3508 : : try
3509 : : {
3510 [ # # ][ # # ]: 0 : Reference< XEnumerationAccess > xNumAccess( xModel->getBindings(), UNO_QUERY );
[ # # ]
3511 [ # # ]: 0 : if ( xNumAccess.is() )
3512 : : {
3513 [ # # ][ # # ]: 0 : Reference < XEnumeration > xNum = xNumAccess->createEnumeration();
3514 [ # # ][ # # ]: 0 : if ( xNum.is() && xNum->hasMoreElements() )
[ # # ][ # # ]
[ # # ]
3515 : : {
3516 [ # # ]: 0 : String sDelim( RTL_CONSTASCII_USTRINGPARAM( ": " ) );
3517 [ # # ][ # # ]: 0 : while ( xNum->hasMoreElements() )
[ # # ]
3518 : : {
3519 : 0 : Reference< XPropertySet > xPropSet;
3520 [ # # ][ # # ]: 0 : Any aAny = xNum->nextElement();
3521 [ # # ][ # # ]: 0 : if ( aAny >>= xPropSet )
3522 : : {
3523 [ # # ]: 0 : String sEntry;
3524 : 0 : rtl::OUString sTemp;
3525 [ # # ][ # # ]: 0 : xPropSet->getPropertyValue( PN_BINDING_ID ) >>= sTemp;
[ # # ]
3526 [ # # ][ # # ]: 0 : sEntry += String( sTemp );
[ # # ]
3527 [ # # ]: 0 : sEntry += sDelim;
3528 [ # # ][ # # ]: 0 : xPropSet->getPropertyValue( PN_BINDING_EXPR ) >>= sTemp;
[ # # ]
3529 [ # # ][ # # ]: 0 : sEntry += String( sTemp );
[ # # ]
3530 [ # # ]: 0 : m_aBindLB.InsertEntry( sEntry );
3531 : :
3532 [ # # ]: 0 : if ( !m_xTempBinding.is() )
3533 [ # # ][ # # ]: 0 : m_xTempBinding = xPropSet;
3534 : : }
3535 [ # # ]: 0 : }
3536 : 0 : }
3537 [ # # ]: 0 : }
3538 : : }
3539 [ # # ]: 0 : catch ( Exception& )
3540 : : {
3541 : : SAL_WARN( "svx.form", "AddSubmissionDialog::FillAllBoxes(): exception caught" );
3542 : : }
3543 : : }
3544 : :
3545 : : // #i36342# we need a temporary binding; create one if no existing binding
3546 : : // is found
3547 [ # # ]: 0 : if( !m_xTempBinding.is() )
3548 : : {
3549 [ # # ]: 0 : m_xCreatedBinding = m_xUIHelper->getBindingForNode(
3550 : : Reference<css::xml::dom::XNode>(
3551 [ # # ][ # # ]: 0 : xModel->getDefaultInstance()->getDocumentElement(),
[ # # ]
3552 : : UNO_QUERY_THROW ),
3553 [ # # ][ # # ]: 0 : sal_True );
[ # # ][ # # ]
3554 [ # # ]: 0 : m_xTempBinding = m_xCreatedBinding;
3555 : : }
3556 : :
3557 : : // replace box
3558 [ # # ][ # # ]: 0 : m_aReplaceLB.InsertEntry( String( SVX_RES( STR_REPLACE_NONE ) ) );
[ # # ][ # # ]
3559 [ # # ][ # # ]: 0 : m_aReplaceLB.InsertEntry( String( SVX_RES( STR_REPLACE_INST ) ) );
[ # # ][ # # ]
3560 [ # # ][ # # ]: 0 : m_aReplaceLB.InsertEntry( String( SVX_RES( STR_REPLACE_DOC ) ) );
[ # # ][ # # ]
3561 : :
3562 : :
3563 : : // init the controls with the values of the submission
3564 [ # # ][ # # ]: 0 : if ( m_pItemNode && m_pItemNode->m_xPropSet.is() )
[ # # ]
3565 : : {
3566 [ # # ]: 0 : m_xSubmission = m_pItemNode->m_xPropSet;
3567 : 0 : rtl::OUString sTemp;
3568 : : try
3569 : : {
3570 [ # # ][ # # ]: 0 : m_xSubmission->getPropertyValue( PN_SUBMISSION_ID ) >>= sTemp;
[ # # ]
3571 [ # # ][ # # ]: 0 : m_aNameED.SetText( sTemp );
[ # # ]
3572 [ # # ][ # # ]: 0 : m_xSubmission->getPropertyValue( PN_SUBMISSION_ACTION ) >>= sTemp;
[ # # ]
3573 [ # # ][ # # ]: 0 : m_aActionED.SetText( sTemp );
[ # # ]
3574 [ # # ][ # # ]: 0 : m_xSubmission->getPropertyValue( PN_SUBMISSION_REF ) >>= sTemp;
[ # # ]
3575 [ # # ][ # # ]: 0 : m_aRefED.SetText( sTemp );
[ # # ]
3576 : :
3577 [ # # ][ # # ]: 0 : m_xSubmission->getPropertyValue( PN_SUBMISSION_METHOD ) >>= sTemp;
[ # # ]
3578 [ # # ]: 0 : sTemp = lcl_MethodString::get().toUI( sTemp );
3579 [ # # ][ # # ]: 0 : sal_uInt16 nPos = m_aMethodLB.GetEntryPos( String( sTemp ) );
[ # # ]
3580 [ # # ]: 0 : if ( LISTBOX_ENTRY_NOTFOUND == nPos )
3581 [ # # ][ # # ]: 0 : nPos = m_aMethodLB.InsertEntry( sTemp );
[ # # ]
3582 [ # # ]: 0 : m_aMethodLB.SelectEntryPos( nPos );
3583 : :
3584 [ # # ][ # # ]: 0 : m_xSubmission->getPropertyValue( PN_SUBMISSION_BIND ) >>= sTemp;
[ # # ]
3585 [ # # ][ # # ]: 0 : nPos = m_aBindLB.GetEntryPos( String( sTemp ) );
[ # # ]
3586 [ # # ]: 0 : if ( LISTBOX_ENTRY_NOTFOUND == nPos )
3587 [ # # ][ # # ]: 0 : nPos = m_aBindLB.InsertEntry( sTemp );
[ # # ]
3588 [ # # ]: 0 : m_aBindLB.SelectEntryPos( nPos );
3589 : :
3590 [ # # ][ # # ]: 0 : m_xSubmission->getPropertyValue( PN_SUBMISSION_REPLACE ) >>= sTemp;
[ # # ]
3591 [ # # ]: 0 : sTemp = lcl_ReplaceString::get().toUI( sTemp );
3592 [ # # ]: 0 : if ( sTemp.isEmpty() )
3593 [ # # ][ # # ]: 0 : sTemp = m_aReplaceLB.GetEntry(0); // first entry == "none"
[ # # ]
3594 [ # # ][ # # ]: 0 : nPos = m_aReplaceLB.GetEntryPos( String( sTemp ) );
[ # # ]
3595 [ # # ]: 0 : if ( LISTBOX_ENTRY_NOTFOUND == nPos )
3596 [ # # ][ # # ]: 0 : nPos = m_aReplaceLB.InsertEntry( sTemp );
[ # # ][ # # ]
3597 [ # # ]: 0 : m_aReplaceLB.SelectEntryPos( nPos );
3598 : : }
3599 [ # # ]: 0 : catch ( Exception& )
3600 : : {
3601 : : SAL_WARN( "svx.form", "AddSubmissionDialog::FillAllBoxes(): exception caught" );
3602 : 0 : }
3603 : : }
3604 : :
3605 [ # # ]: 0 : m_aRefBtn.Enable( m_xTempBinding.is() );
3606 : 0 : }
3607 : :
3608 : : //========================================================================
3609 : : // class AddModelDialog
3610 : : //========================================================================
3611 : :
3612 : 0 : AddModelDialog::AddModelDialog( Window* pParent, bool _bEdit ) :
3613 : :
3614 : 0 : ModalDialog( pParent, SVX_RES( RID_SVXDLG_ADD_MODEL ) ),
3615 : :
3616 [ # # ]: 0 : m_aModelFL ( this, SVX_RES( FL_MODEL ) ),
3617 [ # # ]: 0 : m_aNameFT ( this, SVX_RES( FT_MODEL_NAME ) ),
3618 [ # # ]: 0 : m_aNameED ( this, SVX_RES( ED_MODEL_NAME ) ),
3619 [ # # ]: 0 : m_aModifyCB ( this, SVX_RES( CB_MODIFIES_DOCUMENT ) ),
3620 [ # # ]: 0 : m_aButtonsFL ( this, SVX_RES( FL_DATANAV_BTN ) ),
3621 [ # # ]: 0 : m_aOKBtn ( this, SVX_RES( BTN_DATANAV_OK ) ),
3622 [ # # ]: 0 : m_aEscBtn ( this, SVX_RES( BTN_DATANAV_ESC ) ),
3623 [ # # ][ # # ]: 0 : m_aHelpBtn ( this, SVX_RES( BTN_DATANAV_HELP ) )
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
3624 : :
3625 : : {
3626 [ # # ]: 0 : if ( _bEdit )
3627 [ # # ][ # # ]: 0 : SetText( String( SVX_RES( STR_EDIT_TEXT ) ) );
[ # # ][ # # ]
3628 : :
3629 [ # # ]: 0 : FreeResource();
3630 : 0 : }
3631 : :
3632 [ # # ][ # # ]: 0 : AddModelDialog::~AddModelDialog()
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
3633 : : {
3634 [ # # ]: 0 : }
3635 : :
3636 : : //========================================================================
3637 : : // class AddInstanceDialog
3638 : : //========================================================================
3639 : :
3640 : 0 : AddInstanceDialog::AddInstanceDialog( Window* pParent, bool _bEdit ) :
3641 : :
3642 : 0 : ModalDialog( pParent, SVX_RES( RID_SVXDLG_ADD_INSTANCE ) ),
3643 : :
3644 [ # # ]: 0 : m_aInstanceFL ( this, SVX_RES( FL_INSTANCE ) ),
3645 [ # # ]: 0 : m_aNameFT ( this, SVX_RES( FT_INST_NAME ) ),
3646 [ # # ]: 0 : m_aNameED ( this, SVX_RES( ED_INST_NAME ) ),
3647 [ # # ]: 0 : m_aURLFT ( this, SVX_RES( FT_INST_URL ) ),
3648 [ # # ]: 0 : m_aURLED ( this, SVX_RES( ED_INST_URL ) ),
3649 [ # # ]: 0 : m_aFilePickerBtn ( this, SVX_RES( PB_FILEPICKER ) ),
3650 [ # # ]: 0 : m_aLinkInstanceCB ( this, SVX_RES( CB_INST_LINKINST ) ),
3651 [ # # ]: 0 : m_aButtonsFL ( this, SVX_RES( FL_DATANAV_BTN ) ),
3652 [ # # ]: 0 : m_aOKBtn ( this, SVX_RES( BTN_DATANAV_OK ) ),
3653 [ # # ]: 0 : m_aEscBtn ( this, SVX_RES( BTN_DATANAV_ESC ) ),
3654 [ # # ][ # # ]: 0 : m_aHelpBtn ( this, SVX_RES( BTN_DATANAV_HELP ) )
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
3655 : :
3656 : : {
3657 [ # # ]: 0 : if ( _bEdit )
3658 [ # # ][ # # ]: 0 : SetText( String( SVX_RES( STR_EDIT_TEXT ) ) );
[ # # ][ # # ]
3659 : :
3660 [ # # ]: 0 : FreeResource();
3661 : :
3662 [ # # ]: 0 : m_aURLED.DisableHistory();
3663 [ # # ]: 0 : m_aFilePickerBtn.SetClickHdl( LINK( this, AddInstanceDialog, FilePickerHdl ) );
3664 : :
3665 : : // load the filter name from fps_office resource
3666 [ # # ][ # # ]: 0 : m_sAllFilterName = String( ResId( STR_FILTERNAME_ALL, *ResMgr::CreateResMgr("fps_office") ) );
[ # # ][ # # ]
3667 : 0 : }
3668 : :
3669 [ # # ][ # # ]: 0 : AddInstanceDialog::~AddInstanceDialog()
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
3670 : : {
3671 [ # # ]: 0 : }
3672 : :
3673 : : //------------------------------------------------------------------------
3674 : 0 : IMPL_LINK_NOARG(AddInstanceDialog, FilePickerHdl)
3675 : : {
3676 : : ::sfx2::FileDialogHelper aDlg(
3677 [ # # ]: 0 : css::ui::dialogs::TemplateDescription::FILEOPEN_SIMPLE, 0 );
3678 [ # # ][ # # ]: 0 : INetURLObject aFile( SvtPathOptions().GetWorkPath() );
[ # # ][ # # ]
[ # # ]
3679 : :
3680 [ # # ][ # # ]: 0 : aDlg.AddFilter( m_sAllFilterName, DEFINE_CONST_UNICODE(FILEDIALOG_FILTER_ALL) );
[ # # ]
3681 [ # # ]: 0 : String sFilterName( DEFINE_CONST_UNICODE("XML") );
3682 [ # # ][ # # ]: 0 : aDlg.AddFilter( sFilterName, DEFINE_CONST_UNICODE("*.xml") );
[ # # ]
3683 [ # # ]: 0 : aDlg.SetCurrentFilter( sFilterName );
3684 [ # # ][ # # ]: 0 : aDlg.SetDisplayDirectory( aFile.GetMainURL( INetURLObject::NO_DECODE ) );
[ # # ][ # # ]
3685 : :
3686 [ # # ][ # # ]: 0 : if( aDlg.Execute() == ERRCODE_NONE )
3687 [ # # ][ # # ]: 0 : m_aURLED.SetText( aDlg.GetPath() );
[ # # ]
3688 : :
3689 [ # # ][ # # ]: 0 : return 0;
[ # # ]
3690 : : }
3691 : :
3692 : : //========================================================================
3693 : : // class LinkedInstanceWarningBox
3694 : : //========================================================================
3695 : :
3696 : 0 : LinkedInstanceWarningBox::LinkedInstanceWarningBox( Window* pParent ) :
3697 : :
3698 [ # # ]: 0 : MessBox( pParent, SVX_RES( RID_QRY_LINK_WARNING ) )
3699 : :
3700 : : {
3701 [ # # ][ # # ]: 0 : SetText( Application::GetDisplayName() );
[ # # ]
3702 [ # # ][ # # ]: 0 : SetImage( QueryBox::GetStandardImage() );
[ # # ]
3703 [ # # ][ # # ]: 0 : AddButton( SVX_RESSTR( RID_STR_DATANAV_LINKWARN_BUTTON ), BUTTONID_OK, BUTTONDIALOG_DEFBUTTON );
[ # # ][ # # ]
[ # # ]
3704 [ # # ]: 0 : AddButton( BUTTON_CANCEL, BUTTONID_CANCEL, BUTTONDIALOG_CANCELBUTTON );
3705 : 0 : }
3706 : :
3707 : : //............................................................................
3708 : : } // namespace svxform
3709 : : //............................................................................
3710 : :
3711 : :
3712 : : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|