1 /*************************************************************************
2  *
3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4  *
5  * Copyright 2000, 2010 Oracle and/or its affiliates.
6  *
7  * OpenOffice.org - a multi-platform office productivity suite
8  *
9  * This file is part of OpenOffice.org.
10  *
11  * OpenOffice.org is free software: you can redistribute it and/or modify
12  * it under the terms of the GNU Lesser General Public License version 3
13  * only, as published by the Free Software Foundation.
14  *
15  * OpenOffice.org is distributed in the hope that it will be useful,
16  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18  * GNU Lesser General Public License version 3 for more details
19  * (a copy is included in the LICENSE file that accompanied this code).
20  *
21  * You should have received a copy of the GNU Lesser General Public License
22  * version 3 along with OpenOffice.org.  If not, see
23  * <http://www.openoffice.org/license.html>
24  * for a copy of the LGPLv3 License.
25  *
26  ************************************************************************/
27 
28 #ifndef _DBAUI_SQLMESSAGE_HXX_
29 #define _DBAUI_SQLMESSAGE_HXX_
30 
31 #ifndef _BUTTON_HXX
32 #include <vcl/button.hxx>
33 #endif
34 #ifndef _FIXED_HXX
35 #include <vcl/fixed.hxx>
36 #endif
37 #ifndef _SV_BTNDLG_HXX
38 #include <vcl/btndlg.hxx>
39 #endif
40 
41 #ifndef _DBHELPER_DBEXCEPTION_HXX_
42 #include <connectivity/dbexception.hxx>
43 #endif
44 
45 #include <memory>
46 
47 // some forwards
48 namespace com { namespace sun { namespace star {
49 	namespace sdb {
50 		class SQLContext;
51 	}
52 	namespace sdbc {
53 		class SQLException;
54 	}
55 } } }
56 
57 //.........................................................................
58 namespace dbaui
59 {
60 //.........................................................................
61 
62 //==================================================================
63 // OSQLMessageBox
64 //==================================================================
65 struct SQLMessageBox_Impl;
66 class OSQLMessageBox : public ButtonDialog
67 {
68 	FixedImage		m_aInfoImage;
69 	FixedText		m_aTitle;
70 	FixedText		m_aMessage;
71     ::rtl::OUString m_sHelpURL;
72 
73     ::std::auto_ptr< SQLMessageBox_Impl >   m_pImpl;
74 
75 public:
76 	enum MessageType
77 	{
78 		Info,
79 		Error,
80 		Warning,
81 		Query,
82 
83         AUTO
84 	};
85 
86 public:
87 	/**	display an SQLException with auto-recognizing a main and a detailed message
88 
89         The first two messages from the exception chain are used as main and detailed message (recognizing the
90 		detailed field of an <type scope="com::sun::star::sdb">SQLContext</type>).
91 	*/
92 	OSQLMessageBox(
93         Window* _pParent,
94 		const dbtools::SQLExceptionInfo& _rException,
95         WinBits _nStyle = WB_OK | WB_DEF_OK,
96         const ::rtl::OUString& _rHelpURL = ::rtl::OUString()
97     );
98 
99 	/**	display a database related error message
100 
101         @param	rTitle		the title to display
102 		@param	rMessage	the detailed message to display
103         @param  _eType      determines the image to use. AUTO is disallowed in this constructor version
104 	*/
105 	OSQLMessageBox(Window* pParent,
106 				const UniString& rTitle,
107 				const UniString& rMessage,
108 				WinBits nStyle = WB_OK | WB_DEF_OK,
109 				MessageType _eType = Info,
110                 const ::dbtools::SQLExceptionInfo* _pAdditionalErrorInfo = NULL );
111 
112     ~OSQLMessageBox();
113 
114 private:
115     void Construct( WinBits nStyle, MessageType eImage );
116 
117 	DECL_LINK(ButtonClickHdl, Button* );
118 
119 private:
120     void    impl_positionControls();
121     void    impl_initImage( MessageType _eImage );
122     void    impl_createStandardButtons( WinBits _nStyle );
123     void    impl_addDetailsButton();
124 };
125 
126 //==================================================================
127 // OSQLWarningBox
128 //==================================================================
129 class OSQLWarningBox : public OSQLMessageBox
130 {
131 public:
132 	OSQLWarningBox( Window* _pParent,
133 				    const UniString& _rMessage,
134 				    WinBits _nStyle = WB_OK | WB_DEF_OK,
135                     const ::dbtools::SQLExceptionInfo* _pAdditionalErrorInfo = NULL );
136 };
137 
138 //.........................................................................
139 }	// namespace dbaui
140 //.........................................................................
141 
142 #endif // _DBAUI_SQLMESSAGE_HXX_
143 
144