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