Line data Source code
1 : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 : /*
3 : * This file is part of the LibreOffice project.
4 : *
5 : * This Source Code Form is subject to the terms of the Mozilla Public
6 : * License, v. 2.0. If a copy of the MPL was not distributed with this
7 : * file, You can obtain one at http://mozilla.org/MPL/2.0/.
8 : *
9 : * This file incorporates work covered by the following license notice:
10 : *
11 : * Licensed to the Apache Software Foundation (ASF) under one or more
12 : * contributor license agreements. See the NOTICE file distributed
13 : * with this work for additional information regarding copyright
14 : * ownership. The ASF licenses this file to you under the Apache
15 : * License, Version 2.0 (the "License"); you may not use this file
16 : * except in compliance with the License. You may obtain a copy of
17 : * the License at http://www.apache.org/licenses/LICENSE-2.0 .
18 : */
19 : #ifndef INCLUDED_SVX_SOURCE_INC_DATANAVI_HXX
20 : #define INCLUDED_SVX_SOURCE_INC_DATANAVI_HXX
21 :
22 : #include <vcl/builder.hxx>
23 : #include <vcl/dialog.hxx>
24 : #include <vcl/fixed.hxx>
25 : #include <vcl/layout.hxx>
26 : #include <vcl/lstbox.hxx>
27 : #include <vcl/menubtn.hxx>
28 : #include <vcl/tabctrl.hxx>
29 : #include <vcl/tabpage.hxx>
30 : #include <vcl/toolbox.hxx>
31 : #include <vcl/idle.hxx>
32 : #include <svtools/inettbc.hxx>
33 : #include <svtools/simptabl.hxx>
34 : #include <svtools/svmedit.hxx>
35 : #include <svtools/treelistbox.hxx>
36 : #include <sfx2/dockwin.hxx>
37 : #include <sfx2/childwin.hxx>
38 : #include <sfx2/ctrlitem.hxx>
39 : #include <svx/dialmgr.hxx>
40 : #include <svx/dialogs.hrc>
41 : #include <svx/fmresids.hrc>
42 : #include <svx/svxdllapi.h>
43 : #include <rtl/ref.hxx>
44 : #include <com/sun/star/beans/XPropertySet.hpp>
45 : #include <com/sun/star/container/XContainer.hpp>
46 : #include <com/sun/star/container/XNameContainer.hpp>
47 : #include <com/sun/star/frame/XFrame.hpp>
48 : #include <com/sun/star/xforms/XFormsUIHelper1.hpp>
49 : #include <com/sun/star/xforms/XModel.hpp>
50 : #include <com/sun/star/xforms/XSubmission.hpp>
51 : #include <com/sun/star/xml/dom/XNode.hpp>
52 : #include <com/sun/star/xml/dom/events/XEventTarget.hpp>
53 :
54 : #include "datalistener.hxx"
55 : #include <vector>
56 :
57 : class FmFormShell;
58 :
59 :
60 :
61 : namespace svxform
62 : {
63 :
64 :
65 : enum DataGroupType
66 : {
67 : DGTUnknown = 0,
68 : DGTInstance,
69 : DGTSubmission,
70 : DGTBinding
71 : };
72 :
73 : enum DataItemType
74 : {
75 : DITNone = 0,
76 : DITText,
77 : DITAttribute,
78 : DITElement,
79 : DITBinding
80 : };
81 :
82 : struct ItemNode;
83 : class XFormsPage;
84 : class DataNavigatorWindow;
85 : class AddInstanceDialog;
86 :
87 : typedef ::com::sun::star::uno::Reference<
88 : ::com::sun::star::xforms::XFormsUIHelper1 > XFormsUIHelper1_ref;
89 : typedef ::com::sun::star::uno::Reference<
90 : ::com::sun::star::xml::dom::XNode > XNode_ref;
91 : typedef ::com::sun::star::uno::Reference<
92 : ::com::sun::star::beans::XPropertySet > XPropertySet_ref;
93 : typedef ::com::sun::star::uno::Reference<
94 : ::com::sun::star::xforms::XModel > XModel_ref;
95 : typedef ::com::sun::star::uno::Reference<
96 : ::com::sun::star::container::XContainer > XContainer_ref;
97 : typedef ::com::sun::star::uno::Reference<
98 : ::com::sun::star::container::XNameContainer > XNameContainer_ref;
99 : typedef ::com::sun::star::uno::Reference<
100 : ::com::sun::star::frame::XFrame > XFrame_ref;
101 : typedef ::com::sun::star::uno::Reference<
102 : ::com::sun::star::frame::XModel > XFrameModel_ref;
103 : typedef ::com::sun::star::uno::Reference<
104 : ::com::sun::star::xml::dom::events::XEventTarget > XEventTarget_ref;
105 : typedef ::com::sun::star::uno::Reference<
106 : ::com::sun::star::xforms::XSubmission > XSubmission_ref;
107 :
108 : typedef ::com::sun::star::uno::Sequence<
109 : ::com::sun::star::beans::PropertyValue > PropertyValue_seq;
110 :
111 : typedef std::vector< XContainer_ref > ContainerList;
112 : typedef std::vector< XEventTarget_ref > EventTargetList;
113 :
114 :
115 : class DataTreeListBox : public SvTreeListBox
116 : {
117 : private:
118 : VclPtr<XFormsPage> m_pXFormsPage;
119 : DataGroupType m_eGroup;
120 : sal_uInt16 m_nAddId;
121 : sal_uInt16 m_nAddElementId;
122 : sal_uInt16 m_nAddAttributeId;
123 : sal_uInt16 m_nEditId;
124 : sal_uInt16 m_nRemoveId;
125 :
126 : protected:
127 : using SvTreeListBox::ExecuteDrop;
128 :
129 : public:
130 : DataTreeListBox( vcl::Window* pParent, WinBits nBits );
131 : virtual ~DataTreeListBox();
132 : virtual void dispose() SAL_OVERRIDE;
133 :
134 : virtual PopupMenu* CreateContextMenu() SAL_OVERRIDE;
135 : virtual void ExcecuteContextMenuAction( sal_uInt16 _nSelectedPopupEntry ) SAL_OVERRIDE;
136 : virtual sal_Int8 AcceptDrop( const AcceptDropEvent& rEvt ) SAL_OVERRIDE;
137 : virtual sal_Int8 ExecuteDrop( const ExecuteDropEvent& rEvt ) SAL_OVERRIDE;
138 : virtual void StartDrag( sal_Int8 nAction, const Point& rPosPixel ) SAL_OVERRIDE;
139 :
140 : void SetGroup(DataGroupType _eGroup);
141 : void SetXFormsPage(XFormsPage* _pPage);
142 : void SetToolBoxItemIds(sal_uInt16 _nAddId,
143 : sal_uInt16 _nAddElementId,
144 : sal_uInt16 _nAddAttributeId,
145 : sal_uInt16 _nEditId,
146 : sal_uInt16 _nRemoveId);
147 : void DeleteAndClear();
148 : void RemoveEntry( SvTreeListEntry* _pEntry );
149 : };
150 :
151 0 : class ReplaceString
152 : {
153 : OUString m_sDoc_UI;
154 : OUString m_sInstance_UI;
155 : OUString m_sNone_UI;
156 :
157 : OUString m_sDoc_API;
158 : OUString m_sInstance_API;
159 : OUString m_sNone_API;
160 :
161 : ReplaceString( const ReplaceString& ) SAL_DELETED_FUNCTION;
162 :
163 : public:
164 0 : ReplaceString() :
165 : m_sDoc_API( "all" ),
166 : m_sInstance_API( "instance" ),
167 0 : m_sNone_API( "none" )
168 : {
169 0 : m_sDoc_UI = SVX_RESSTR(RID_STR_REPLACE_DOC);
170 0 : m_sInstance_UI = SVX_RESSTR(RID_STR_REPLACE_INST);
171 0 : m_sNone_UI = SVX_RESSTR(RID_STR_REPLACE_NONE);
172 0 : }
173 :
174 : /** convert submission replace string from API value to UI value.
175 : Use 'none' as default. */
176 0 : OUString toUI( const OUString& rStr ) const
177 : {
178 0 : if( rStr == m_sDoc_API )
179 0 : return m_sDoc_UI;
180 0 : else if( rStr == m_sInstance_API )
181 0 : return m_sInstance_UI;
182 : else
183 0 : return m_sNone_UI;
184 : }
185 :
186 : /** convert submission replace string from UI to API.
187 : Use 'none' as default. */
188 0 : OUString toAPI( const OUString& rStr ) const
189 : {
190 0 : if( rStr == m_sDoc_UI )
191 0 : return m_sDoc_API;
192 0 : else if( rStr == m_sInstance_UI )
193 0 : return m_sInstance_API;
194 : else
195 0 : return m_sNone_API;
196 : }
197 : };
198 :
199 0 : class MethodString
200 : {
201 : OUString m_sPost_UI;
202 : OUString m_sPut_UI;
203 : OUString m_sGet_UI;
204 :
205 : OUString m_sPost_API;
206 : OUString m_sPut_API;
207 : OUString m_sGet_API;
208 :
209 : MethodString( const MethodString& ) SAL_DELETED_FUNCTION;
210 :
211 : public:
212 :
213 0 : MethodString() :
214 : m_sPost_API( "post" ),
215 : m_sPut_API( "put" ),
216 0 : m_sGet_API( "get" )
217 : {
218 0 : m_sPost_UI = SVX_RESSTR(RID_STR_METHOD_POST);
219 0 : m_sPut_UI = SVX_RESSTR(RID_STR_METHOD_PUT);
220 0 : m_sGet_UI = SVX_RESSTR(RID_STR_METHOD_GET);
221 0 : }
222 :
223 : /** convert from API to UI; put is default. */
224 0 : OUString toUI( const OUString& rStr ) const
225 : {
226 0 : if( rStr == m_sGet_API )
227 0 : return m_sGet_UI;
228 0 : else if( rStr == m_sPost_API )
229 0 : return m_sPost_UI;
230 : else
231 0 : return m_sPut_UI;
232 : }
233 :
234 : /** convert from UI to API; put is default */
235 0 : OUString toAPI( const OUString& rStr ) const
236 : {
237 0 : if( rStr == m_sGet_UI )
238 0 : return m_sGet_API;
239 0 : else if( rStr == m_sPost_UI )
240 0 : return m_sPost_API;
241 : else
242 0 : return m_sPut_API;
243 : }
244 : };
245 :
246 :
247 : class XFormsPage : public TabPage
248 : {
249 : private:
250 : MethodString m_aMethodString;
251 : ReplaceString m_aReplaceString;
252 :
253 : VclPtr<ToolBox> m_pToolBox;
254 : VclPtr<DataTreeListBox> m_pItemList;
255 : sal_uInt16 m_nAddId;
256 : sal_uInt16 m_nAddElementId;
257 : sal_uInt16 m_nAddAttributeId;
258 : sal_uInt16 m_nEditId;
259 : sal_uInt16 m_nRemoveId;
260 :
261 : XFormsUIHelper1_ref m_xUIHelper;
262 :
263 : VclPtr<DataNavigatorWindow> m_pNaviWin;
264 : bool m_bHasModel;
265 : DataGroupType m_eGroup;
266 : ImageList m_TbxImageList;
267 : // these strings are not valid on the Submission and Binding Page
268 : // mb: furthermore these are properties of an instance, thus
269 : // it would be much better to get/set them through the UIHelper
270 : // interface.
271 : OUString m_sInstanceName;
272 : OUString m_sInstanceURL;
273 : bool m_bLinkOnce;
274 :
275 : DECL_LINK_TYPED(TbxSelectHdl, ToolBox *, void);
276 : DECL_LINK(ItemSelectHdl, void *);
277 :
278 : void AddChildren( SvTreeListEntry* _pParent,
279 : const ImageList& _rImgLst,
280 : const XNode_ref& _xNode );
281 : bool DoToolBoxAction( sal_uInt16 _nToolBoxID );
282 : SvTreeListEntry* AddEntry( ItemNode* _pNewNode, bool _bIsElement );
283 : SvTreeListEntry* AddEntry( const XPropertySet_ref& _rPropSet );
284 : void EditEntry( const XPropertySet_ref& _rPropSet );
285 : bool RemoveEntry();
286 :
287 : protected:
288 : virtual bool Notify( NotifyEvent& rNEvt ) SAL_OVERRIDE;
289 :
290 : public:
291 : XFormsPage( vcl::Window* pParent, DataNavigatorWindow* _pNaviWin, DataGroupType _eGroup );
292 : virtual ~XFormsPage();
293 : virtual void dispose() SAL_OVERRIDE;
294 :
295 : virtual void Resize() SAL_OVERRIDE;
296 :
297 0 : inline bool HasModel() const { return m_bHasModel; }
298 : OUString SetModel( const XModel_ref& _xModel, sal_uInt16 _nPagePos );
299 : void ClearModel();
300 : OUString LoadInstance( const PropertyValue_seq& _xPropSeq,
301 : const ImageList& _rImgLst );
302 :
303 : bool DoMenuAction( sal_uInt16 _nMenuID );
304 : void EnableMenuItems( Menu* _pMenu );
305 :
306 : inline SvTreeListEntry* GetSelectedItem() const { return m_pItemList->FirstSelected(); }
307 0 : inline const OUString& GetInstanceName() const { return m_sInstanceName; }
308 0 : inline const OUString& GetInstanceURL() const { return m_sInstanceURL; }
309 0 : inline bool GetLinkOnce() const { return m_bLinkOnce; }
310 0 : inline void SetInstanceName( const OUString &name ) { m_sInstanceName=name; }
311 0 : inline void SetInstanceURL( const OUString &url ) { m_sInstanceURL=url; }
312 0 : inline void SetLinkOnce( bool bLinkOnce ) { m_bLinkOnce=bLinkOnce; }
313 :
314 : typedef com::sun::star::uno::Reference<com::sun::star::beans::XPropertySet> XPropertySet_t;
315 : typedef com::sun::star::uno::Reference<com::sun::star::xml::dom::XNode> XNode_t;
316 :
317 0 : inline XPropertySet_t GetBindingForNode( const XNode_t &xNode ) { return m_xUIHelper->getBindingForNode(xNode,true); }
318 0 : inline OUString GetServiceNameForNode( const XNode_t &xNode ) { return m_xUIHelper->getDefaultServiceNameForNode(xNode); }
319 0 : inline XFormsUIHelper1_ref GetXFormsHelper() const { return m_xUIHelper; }
320 : };
321 :
322 :
323 :
324 : typedef std::vector< VclPtr<XFormsPage> > PageList;
325 : typedef ::rtl::Reference < DataListener > DataListener_ref;
326 :
327 : class DataNavigatorWindow : public vcl::Window, public VclBuilderContainer
328 : {
329 : private:
330 : VclPtr<ListBox> m_pModelsBox;
331 : VclPtr<MenuButton> m_pModelBtn;
332 : VclPtr<TabControl> m_pTabCtrl;
333 : VclPtr<MenuButton> m_pInstanceBtn;
334 :
335 : VclPtr<XFormsPage> m_pInstPage;
336 : VclPtr<XFormsPage> m_pSubmissionPage;
337 : VclPtr<XFormsPage> m_pBindingPage;
338 :
339 : sal_Int32 m_nLastSelectedPos;
340 : bool m_bShowDetails;
341 : bool m_bIsNotifyDisabled;
342 : ImageList m_aItemImageList;
343 : PageList m_aPageList;
344 : ContainerList m_aContainerList;
345 : EventTargetList m_aEventTargetList;
346 : Timer m_aUpdateTimer;
347 :
348 : DataListener_ref m_xDataListener;
349 : XNameContainer_ref m_xDataContainer;
350 : XFrame_ref m_xFrame;
351 : XFrameModel_ref m_xFrameModel;
352 :
353 : DECL_LINK( ModelSelectHdl, ListBox * );
354 : DECL_LINK_TYPED( MenuSelectHdl, MenuButton *, void );
355 : DECL_LINK( MenuActivateHdl, MenuButton * );
356 : DECL_LINK(ActivatePageHdl, void *);
357 : DECL_LINK_TYPED(UpdateHdl, Timer *, void);
358 :
359 : XFormsPage* GetCurrentPage( sal_uInt16& rCurId );
360 : void LoadModels();
361 : void SetPageModel();
362 : void ClearAllPageModels( bool bClearPages );
363 : void InitPages();
364 : void CreateInstancePage( const PropertyValue_seq& _xPropSeq );
365 : bool HasFirstInstancePage() const;
366 : sal_uInt16 GetNewPageId() const;
367 :
368 : bool IsAdditionalPage(sal_uInt16 nPageId) const;
369 :
370 : protected:
371 : virtual void Resize() SAL_OVERRIDE;
372 : virtual Size GetOptimalSize() const SAL_OVERRIDE;
373 :
374 : public:
375 : DataNavigatorWindow( vcl::Window* pParent, SfxBindings* pBindings );
376 : virtual ~DataNavigatorWindow();
377 : virtual void dispose() SAL_OVERRIDE;
378 :
379 : static void SetDocModified();
380 : void NotifyChanges( bool _bLoadAll = false );
381 : void AddContainerBroadcaster( const XContainer_ref& xContainer );
382 : void AddEventBroadcaster( const XEventTarget_ref& xTarget );
383 : void RemoveBroadcaster();
384 :
385 0 : inline const ImageList& GetItemImageList() const { return m_aItemImageList; }
386 0 : inline bool IsShowDetails() const { return m_bShowDetails; }
387 0 : inline void DisableNotify( bool _bDisable ) { m_bIsNotifyDisabled = _bDisable; }
388 : };
389 :
390 :
391 : class DataNavigator : public SfxDockingWindow, public SfxControllerItem
392 : {
393 : private:
394 : VclPtr<DataNavigatorWindow> m_aDataWin;
395 :
396 : protected:
397 : virtual void Resize() SAL_OVERRIDE;
398 : virtual bool Close() SAL_OVERRIDE;
399 : virtual void GetFocus() SAL_OVERRIDE;
400 : virtual Size CalcDockingSize( SfxChildAlignment ) SAL_OVERRIDE;
401 : virtual SfxChildAlignment CheckAlignment( SfxChildAlignment, SfxChildAlignment ) SAL_OVERRIDE;
402 :
403 : public:
404 : DataNavigator( SfxBindings* pBindings, SfxChildWindow* pMgr, vcl::Window* pParent );
405 : virtual ~DataNavigator();
406 : virtual void dispose() SAL_OVERRIDE;
407 :
408 : using Window::Update;
409 : using SfxDockingWindow::StateChanged;
410 :
411 : void StateChanged( sal_uInt16 nSID, SfxItemState eState,
412 : const SfxPoolItem* pState ) SAL_OVERRIDE;
413 : };
414 :
415 :
416 0 : class SVX_DLLPUBLIC DataNavigatorManager : public SfxChildWindow
417 : {
418 : public:
419 : SVX_DLLPRIVATE DataNavigatorManager( vcl::Window* pParent, sal_uInt16 nId,
420 : SfxBindings* pBindings, SfxChildWinInfo* pInfo );
421 : SFX_DECL_CHILDWINDOW( DataNavigatorManager );
422 : };
423 :
424 :
425 : class AddDataItemDialog : public ModalDialog
426 : {
427 : private:
428 :
429 : VclPtr<VclFrame> m_pItemFrame;
430 : VclPtr<FixedText> m_pNameFT;
431 : VclPtr<Edit> m_pNameED;
432 : VclPtr<FixedText> m_pDefaultFT;
433 : VclPtr<Edit> m_pDefaultED;
434 : VclPtr<PushButton> m_pDefaultBtn;
435 :
436 : VclPtr<VclFrame> m_pSettingsFrame;
437 :
438 : VclPtr<FixedText> m_pDataTypeFT;
439 : VclPtr<ListBox> m_pDataTypeLB;
440 :
441 : VclPtr<CheckBox> m_pRequiredCB;
442 : VclPtr<PushButton> m_pRequiredBtn;
443 : VclPtr<CheckBox> m_pRelevantCB;
444 : VclPtr<PushButton> m_pRelevantBtn;
445 : VclPtr<CheckBox> m_pConstraintCB;
446 : VclPtr<PushButton> m_pConstraintBtn;
447 : VclPtr<CheckBox> m_pReadonlyCB;
448 : VclPtr<PushButton> m_pReadonlyBtn;
449 : VclPtr<CheckBox> m_pCalculateCB;
450 : VclPtr<PushButton> m_pCalculateBtn;
451 :
452 : VclPtr<OKButton> m_pOKBtn;
453 :
454 : XFormsUIHelper1_ref m_xUIHelper;
455 : XPropertySet_ref m_xBinding;
456 : XPropertySet_ref m_xTempBinding;
457 :
458 : ItemNode* m_pItemNode;
459 : DataItemType m_eItemType;
460 : OUString m_sFL_Element;
461 : OUString m_sFL_Attribute;
462 : OUString m_sFL_Binding;
463 : OUString m_sFT_BindingExp;
464 :
465 : DECL_LINK( CheckHdl, CheckBox * );
466 : DECL_LINK( ConditionHdl, PushButton * );
467 : DECL_LINK(OKHdl, void *);
468 :
469 : void InitDialog();
470 : void InitFromNode();
471 : void InitDataTypeBox();
472 :
473 : public:
474 : AddDataItemDialog(
475 : vcl::Window* pParent, ItemNode* _pNode, const XFormsUIHelper1_ref& _rUIHelper );
476 : virtual ~AddDataItemDialog();
477 : virtual void dispose() SAL_OVERRIDE;
478 :
479 : void InitText( DataItemType _eType );
480 : };
481 :
482 :
483 : class AddConditionDialog : public ModalDialog
484 : {
485 : private:
486 : VclPtr<VclMultiLineEdit> m_pConditionED;
487 : VclPtr<VclMultiLineEdit> m_pResultWin;
488 : VclPtr<PushButton> m_pEditNamespacesBtn;
489 : VclPtr<OKButton> m_pOKBtn;
490 :
491 : Idle m_aResultIdle;
492 : OUString m_sPropertyName;
493 :
494 : XFormsUIHelper1_ref m_xUIHelper;
495 : XPropertySet_ref m_xBinding;
496 :
497 : DECL_LINK(ModifyHdl, void *);
498 : DECL_LINK_TYPED(ResultHdl, Idle *, void);
499 : DECL_LINK(EditHdl, void *);
500 : DECL_LINK(OKHdl, void *);
501 :
502 : public:
503 : AddConditionDialog(vcl::Window* pParent,
504 : const OUString& _rPropertyName, const XPropertySet_ref& _rBinding);
505 : virtual ~AddConditionDialog();
506 : virtual void dispose() SAL_OVERRIDE;
507 :
508 0 : XFormsUIHelper1_ref GetUIHelper() const { return m_xUIHelper; }
509 0 : OUString GetCondition() const { return m_pConditionED->GetText(); }
510 0 : void SetCondition(const OUString& _rCondition)
511 : {
512 0 : m_pConditionED->SetText(_rCondition);
513 0 : m_aResultIdle.Start();
514 0 : }
515 : };
516 :
517 :
518 : class NamespaceItemDialog : public ModalDialog
519 : {
520 : private:
521 : typedef std::vector< OUString > PrefixList;
522 :
523 : VclPtr<SvSimpleTable> m_pNamespacesList;
524 : VclPtr<PushButton> m_pAddNamespaceBtn;
525 : VclPtr<PushButton> m_pEditNamespaceBtn;
526 : VclPtr<PushButton> m_pDeleteNamespaceBtn;
527 : VclPtr<OKButton> m_pOKBtn;
528 :
529 : VclPtr<AddConditionDialog> m_pConditionDlg;
530 : PrefixList m_aRemovedList;
531 :
532 : XNameContainer_ref& m_rNamespaces;
533 :
534 : DECL_LINK( SelectHdl, SvSimpleTable * );
535 : DECL_LINK( ClickHdl, PushButton * );
536 : DECL_LINK(OKHdl, void *);
537 :
538 : void LoadNamespaces();
539 :
540 : public:
541 : NamespaceItemDialog( AddConditionDialog* pParent, XNameContainer_ref& _rContainer );
542 : virtual ~NamespaceItemDialog();
543 : virtual void dispose() SAL_OVERRIDE;
544 : };
545 :
546 :
547 : class ManageNamespaceDialog : public ModalDialog
548 : {
549 : private:
550 : VclPtr<Edit> m_pPrefixED;
551 : VclPtr<Edit> m_pUrlED;
552 : VclPtr<OKButton> m_pOKBtn;
553 :
554 : VclPtr<AddConditionDialog> m_pConditionDlg;
555 :
556 : DECL_LINK(OKHdl, void *);
557 :
558 : public:
559 : ManageNamespaceDialog(vcl::Window* pParent, AddConditionDialog* _pCondDlg, bool bIsEdit);
560 : virtual ~ManageNamespaceDialog();
561 : virtual void dispose() SAL_OVERRIDE;
562 :
563 0 : void SetNamespace(const OUString& _rPrefix, const OUString& _rURL)
564 : {
565 0 : m_pPrefixED->SetText( _rPrefix );
566 0 : m_pUrlED->SetText( _rURL );
567 0 : }
568 0 : OUString GetPrefix() const { return m_pPrefixED->GetText(); }
569 0 : OUString GetURL() const { return m_pUrlED->GetText(); }
570 : };
571 :
572 :
573 : class AddSubmissionDialog : public ModalDialog
574 : {
575 : private:
576 : MethodString m_aMethodString;
577 : ReplaceString m_aReplaceString;
578 :
579 : VclPtr<Edit> m_pNameED;
580 : VclPtr<Edit> m_pActionED;
581 : VclPtr<ListBox> m_pMethodLB;
582 : VclPtr<Edit> m_pRefED;
583 : VclPtr<PushButton> m_pRefBtn;
584 : VclPtr<ListBox> m_pBindLB;
585 : VclPtr<ListBox> m_pReplaceLB;
586 :
587 : VclPtr<OKButton> m_pOKBtn;
588 :
589 : ItemNode* m_pItemNode;
590 :
591 : XFormsUIHelper1_ref m_xUIHelper;
592 : XSubmission_ref m_xNewSubmission;
593 : XPropertySet_ref m_xSubmission;
594 : XPropertySet_ref m_xTempBinding;
595 : XPropertySet_ref m_xCreatedBinding;
596 :
597 : DECL_LINK(RefHdl, void *);
598 : DECL_LINK(OKHdl, void *);
599 :
600 : void FillAllBoxes();
601 :
602 : public:
603 : AddSubmissionDialog( vcl::Window* pParent, ItemNode* _pNode,
604 : const XFormsUIHelper1_ref& _rUIHelper );
605 : virtual ~AddSubmissionDialog();
606 : virtual void dispose() SAL_OVERRIDE;
607 :
608 0 : inline const XSubmission_ref& GetNewSubmission() const { return m_xNewSubmission; }
609 : };
610 :
611 :
612 : class AddModelDialog : public ModalDialog
613 : {
614 : private:
615 : VclPtr<Edit> m_pNameED;
616 : VclPtr<CheckBox> m_pModifyCB;
617 :
618 : public:
619 : AddModelDialog( vcl::Window* pParent, bool _bEdit );
620 : virtual ~AddModelDialog();
621 : virtual void dispose() SAL_OVERRIDE;
622 :
623 0 : OUString GetName() const { return m_pNameED->GetText(); }
624 0 : void SetName( const OUString& _rName ) { m_pNameED->SetText( _rName );}
625 :
626 0 : bool GetModifyDoc() const { return bool( m_pModifyCB->IsChecked() ); }
627 0 : void SetModifyDoc( const bool bModify ) { m_pModifyCB->Check( bModify ); }
628 : };
629 :
630 :
631 : class AddInstanceDialog : public ModalDialog
632 : {
633 : private:
634 : VclPtr<Edit> m_pNameED;
635 : VclPtr<FixedText> m_pURLFT;
636 : VclPtr<SvtURLBox> m_pURLED;
637 : VclPtr<PushButton> m_pFilePickerBtn;
638 : VclPtr<CheckBox> m_pLinkInstanceCB;
639 :
640 : OUString m_sAllFilterName;
641 :
642 : DECL_LINK(FilePickerHdl, void *);
643 :
644 : public:
645 : AddInstanceDialog( vcl::Window* pParent, bool _bEdit );
646 : virtual ~AddInstanceDialog();
647 : virtual void dispose() SAL_OVERRIDE;
648 :
649 : void SetRenameMode()
650 : {
651 : m_pURLFT->Disable();
652 : m_pURLED->Disable();
653 : m_pFilePickerBtn->Disable();
654 : m_pLinkInstanceCB->Disable();
655 : }
656 0 : OUString GetName() const { return m_pNameED->GetText(); }
657 0 : void SetName( const OUString& _rName ) { m_pNameED->SetText( _rName );}
658 0 : OUString GetURL() const { return m_pURLED->GetText(); }
659 0 : void SetURL( const OUString& _rURL ) { m_pURLED->SetText( _rURL );}
660 0 : bool IsLinkInstance() const { return m_pLinkInstanceCB->IsChecked(); }
661 0 : void SetLinkInstance( bool _bLink ) { m_pLinkInstanceCB->Check(_bLink); }
662 : };
663 :
664 :
665 0 : class LinkedInstanceWarningBox : public MessageDialog
666 : {
667 : public:
668 : LinkedInstanceWarningBox( vcl::Window* pParent );
669 : };
670 :
671 :
672 : }
673 :
674 :
675 : #endif // INCLUDED_SVX_SOURCE_INC_DATANAVI_HXX
676 :
677 : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|