User: rt      
Date: 2007-07-06 08:38:05+0000
Modified:
   dba/dbaccess/source/ui/misc/singledoccontroller.cxx

Log:
 INTEGRATION: CWS oj14 (1.16.4); FILE MERGED
 2007/06/04 18:50:02 oj 1.16.4.9: RESYNC: (1.20-1.21); FILE MERGED
 2006/12/21 12:30:02 oj 1.16.4.8: impl selectionSupplier
 2006/11/13 13:23:56 oj 1.16.4.7: merge conflicts
 2006/11/08 11:15:28 oj 1.16.4.6: merge conflicts resolved
 2006/11/07 09:39:24 oj 1.16.4.5: RESYNC: (1.17-1.19); FILE MERGED
 2006/07/04 08:15:49 oj 1.16.4.4: RESYNC: (1.16-1.17); FILE MERGED
 2006/04/25 13:03:20 oj 1.16.4.3: new include
 2006/03/20 07:48:50 oj 1.16.4.2: use of module client helper
 2006/01/03 07:49:22 oj 1.16.4.1: changed module client

File Changes:

Directory: /dba/dbaccess/source/ui/misc/
========================================

File [changed]: singledoccontroller.cxx
Url: 
http://dba.openoffice.org/source/browse/dba/dbaccess/source/ui/misc/singledoccontroller.cxx?r1=1.21&r2=1.22
Delta lines:  +164 -60
----------------------
--- singledoccontroller.cxx     2007-04-16 16:29:08+0000        1.21
+++ singledoccontroller.cxx     2007-07-06 08:38:03+0000        1.22
@@ -84,22 +84,62 @@
 #ifndef _DBHELPER_DBEXCEPTION_HXX_
 #include <connectivity/dbexception.hxx>
 #endif
+#ifndef _CONNECTIVITY_DBTOOLS_HXX_
+#include <connectivity/dbtools.hxx>
+#endif
 #ifndef DBACCESS_UI_BROWSER_ID_HXX
 #include "browserids.hxx"
 #endif
-
+#ifndef _TOOLKIT_HELPER_VCLUNOHELPER_HXX_
+#include <toolkit/unohlp.hxx>
+#endif
+#ifndef _DBAUI_MODULE_DBU_HXX_
+#include "moduledbu.hxx"
+#endif
+#ifndef _DBAUI_COMMON_TYPES_HXX_
+#include "commontypes.hxx"
+#endif
 //........................................................................
 namespace dbaui
 {
 //........................................................................
+    using namespace ::com::sun::star;
+       using namespace uno;
+       using namespace beans;
+       using namespace lang;
+       using namespace container;
+       using namespace sdbc;
+    using namespace sdb;
+       using namespace frame;
+       using namespace util;
+
+    struct OSingleDocumentControllerImpl
+    {
+        OModuleClient m_aModuleClient;
+               uno::Any m_aCurrentError; // contains the current error which 
can be set through IEnvironment
+
+               // <properties>
+        SharedConnection            m_xConnection;
+        ::dbtools::DatabaseMetaData m_aSdbMetaData;
+               // </properties>
+               ::rtl::OUString m_sDataSourceName;              // the data 
source we're working for
+               uno::Reference< beans::XPropertySet >
+                                               m_xDataSource;
+               uno::Reference< util::XNumberFormatter >        
+                                               m_xFormatter;   // a number 
formatter working with the connection's NumberFormatsSupplier
+               ModelControllerConnector
+                        m_aModelConnector;
+               sal_Bool                m_bSuspended     : 1;   // is true when 
the controller was already suspended
+               sal_Bool                m_bEditable              : 1;   // is 
the control readonly or not
+               sal_Bool                m_bModified              : 1;   // is 
the data modified
 
-       using namespace ::com::sun::star::uno;
-       using namespace ::com::sun::star::beans;
-       using namespace ::com::sun::star::lang;
-       using namespace ::com::sun::star::container;
-       using namespace ::com::sun::star::sdbc;
-    using namespace ::com::sun::star::sdb;
-       using namespace ::com::sun::star::frame;
+        OSingleDocumentControllerImpl() : 
+            m_bSuspended( sal_False )
+                   ,m_bEditable(sal_True)
+                   ,m_bModified(sal_False)
+        {
+        }
+    };
 
        //====================================================================
        //= OSingleDocumentController
@@ -107,14 +147,35 @@
        //--------------------------------------------------------------------
        OSingleDocumentController::OSingleDocumentController(const Reference< 
XMultiServiceFactory >& _rxORB)
                :OSingleDocumentController_CBASE( _rxORB )
-               ,m_bSuspended( sal_False )
-               ,m_bEditable(sal_True)
-               ,m_bModified(sal_False)
-
+        ,m_pImpl(new OSingleDocumentControllerImpl())
+       {
+       }
+    //--------------------------------------------------------------------
+    OSingleDocumentController::~OSingleDocumentController()
+    {
+    }
+       //--------------------------------------------------------------------
+       Sequence<sal_Int8> SAL_CALL 
OSingleDocumentController::getImplementationId(  ) throw(RuntimeException)
+       {
+               static ::cppu::OImplementationId * pId = 0;
+               if (! pId)
+               {
+                       ::osl::MutexGuard aGuard( 
::osl::Mutex::getGlobalMutex() );
+                       if (! pId)
        {
+                               static ::cppu::OImplementationId aId;
+                               pId = &aId;
+                       }
+               }
+               return pId->getImplementationId();
        }
 
        //--------------------------------------------------------------------
+       Sequence< Type > SAL_CALL OSingleDocumentController::getTypes(  ) throw 
(RuntimeException)
+       {
+               return OSingleDocumentController_CBASE::getTypes();
+       }
+       //--------------------------------------------------------------------
        void OSingleDocumentController::initializeConnection( const Reference< 
XConnection >& _rxForeignConn )
        {
                DBG_ASSERT( !isConnected(), 
"OSingleDocumentController::initializeConnection: not to be called when already 
connected!" );
@@ -122,28 +183,37 @@
                if ( isConnected() )
                        disconnect();
 
-        m_xConnection.reset( _rxForeignConn, SharedConnection::NoTakeOwnership 
);
-        m_aSdbMetaData.reset( m_xConnection );
-               startConnectionListening( m_xConnection );
+        m_pImpl->m_xConnection.reset( _rxForeignConn, 
SharedConnection::NoTakeOwnership );
+        m_pImpl->m_aSdbMetaData.reset( m_pImpl->m_xConnection );
+               startConnectionListening( m_pImpl->m_xConnection );
 
                // get the data source the connection belongs to
-               if ( !m_xDataSource.is() )
-               {
                        try
                        {
-                               Reference< XChild > xConnAsChild( 
m_xConnection, UNO_QUERY );
+                       if ( !m_pImpl->m_xDataSource.is() )
+                       {
+                               Reference< XChild > xConnAsChild( 
m_pImpl->m_xConnection, UNO_QUERY );
                                Reference< XDataSource > xDS;
                                if ( xConnAsChild.is() )
                                        xDS = Reference< XDataSource >( 
xConnAsChild->getParent(), UNO_QUERY );
 
                                // (take the indirection through XDataSource to 
ensure we have a correct object ....)
-                               m_xDataSource.set(xDS,UNO_QUERY);
-                               DBG_ASSERT( m_xDataSource.is(), 
"OSingleDocumentController::initializeConnection: could not retrieve the data 
source!" );
+                               m_pImpl->m_xDataSource.set(xDS,UNO_QUERY);
+                               DBG_ASSERT( m_pImpl->m_xDataSource.is(), 
"OSingleDocumentController::initializeConnection: could not retrieve the data 
source!" );
+                       }
 
-                               if ( m_xDataSource.is() )
+                       if ( m_pImpl->m_xDataSource.is() )
                                {
-                                       m_xDataSource->getPropertyValue( 
PROPERTY_NAME ) >>= m_sDataSourceName;
-                                       DBG_ASSERT( 
m_sDataSourceName.getLength(), 
"OSingleDocumentController::initializeConnection: invalid data source name!" );
+                               m_pImpl->m_xDataSource->getPropertyValue( 
PROPERTY_NAME ) >>= m_pImpl->m_sDataSourceName;
+                               DBG_ASSERT( 
m_pImpl->m_sDataSourceName.getLength(), 
"OSingleDocumentController::initializeConnection: invalid data source name!" );
+                               Reference< XNumberFormatsSupplier> xSupplier = 
::dbtools::getNumberFormats(m_pImpl->m_xConnection);
+                               if(xSupplier.is())
+                               {
+                                       m_pImpl->m_xFormatter = Reference< 
util::XNumberFormatter >(getORB()
+                                               
->createInstance(::rtl::OUString::createFromAscii("com.sun.star.util.NumberFormatter")),
 UNO_QUERY);
+                                       
m_pImpl->m_xFormatter->attachNumberFormatsSupplier(xSupplier);
+                               }
+                               OSL_ENSURE(m_pImpl->m_xFormatter.is(),"No 
NumberFormatter!");
                                }
                        }
                        catch( const Exception& )
@@ -151,16 +221,15 @@
                                DBG_ERROR( 
"OSingleDocumentController::initializeConnection: caught an exception!" );
                        }
                }
-       }
 
        //--------------------------------------------------------------------
        void OSingleDocumentController::reconnect( sal_Bool _bUI )
        {
-               OSL_ENSURE(!m_bSuspended, "Cannot reconnect while suspended!");
+               OSL_ENSURE(!m_pImpl->m_bSuspended, "Cannot reconnect while 
suspended!");
                
-               stopConnectionListening( m_xConnection );
-        m_aSdbMetaData.reset( NULL );
-        m_xConnection.clear();
+               stopConnectionListening( m_pImpl->m_xConnection );
+        m_pImpl->m_aSdbMetaData.reset( NULL );
+        m_pImpl->m_xConnection.clear();
 
                // reconnect
                sal_Bool bReConnect = sal_True;
@@ -173,8 +242,8 @@
                // now really reconnect ...
                if ( bReConnect )
         {
-            m_xConnection.reset( connect( 
Reference<XDataSource>(m_xDataSource,UNO_QUERY), sal_True ), 
SharedConnection::TakeOwnership );
-            m_aSdbMetaData.reset( m_xConnection );
+            m_pImpl->m_xConnection.reset( connect( 
Reference<XDataSource>(m_pImpl->m_xDataSource,UNO_QUERY), sal_True ), 
SharedConnection::TakeOwnership );
+            m_pImpl->m_aSdbMetaData.reset( m_pImpl->m_xConnection );
         }
 
                // invalidate all slots
@@ -184,9 +253,9 @@
        //--------------------------------------------------------------------
        void OSingleDocumentController::disconnect()
        {
-               stopConnectionListening(m_xConnection);
-        m_aSdbMetaData.reset( NULL );
-        m_xConnection.clear();
+               stopConnectionListening(m_pImpl->m_xConnection);
+        m_pImpl->m_aSdbMetaData.reset( NULL );
+        m_pImpl->m_xConnection.clear();
 
                InvalidateAll();
        }
@@ -208,7 +277,7 @@
 
                attachFrame( Reference < XFrame >() );
 
-               m_xDataSource.clear();
+               m_pImpl->m_xDataSource.clear();
        }
 
        //--------------------------------------------------------------------
@@ -226,7 +295,7 @@
        {
         if ( _rSource.Source == getConnection() )
         {
-                   if (    !m_bSuspended // when already suspended then we 
don't have to reconnect
+                   if (    !m_pImpl->m_bSuspended // when already suspended 
then we don't have to reconnect
                            &&  !getBroadcastHelper().bInDispose  
                            &&  !getBroadcastHelper().bDisposed 
                            &&  isConnected() 
@@ -236,7 +305,7 @@
                    }
             else
             {
-                m_xConnection.reset( m_xConnection, 
SharedConnection::NoTakeOwnership );
+                m_pImpl->m_xConnection.reset( m_pImpl->m_xConnection, 
SharedConnection::NoTakeOwnership );
                     // this prevents the "disposeComponent" call in disconnect
                 disconnect();
             }
@@ -274,35 +343,35 @@
                @param  _aException
                        contains a description of the error or the error 
directly
        */
-       void OSingleDocumentController::appendError(const 
::com::sun::star::sdbc::SQLException& _aException)
+       void OSingleDocumentController::appendError(const sdbc::SQLException& 
_aException)
        {
-               concatSQLExceptions(m_aCurrentError,makeAny(_aException));
+               
concatSQLExceptions(m_pImpl->m_aCurrentError,makeAny(_aException));
        }
        //--------------------------------------------------------------------
        /** clears the error state.
        */
        void OSingleDocumentController::clearError()
        {
-               m_aCurrentError = Any();
+               m_pImpl->m_aCurrentError = Any();
        }
        //--------------------------------------------------------------------
        /** set the current error in the given parameter.
                @param  _rException
                        will contain the current error
        */
-       void 
OSingleDocumentController::getError(::com::sun::star::sdbc::SQLException& 
_rException ) const
+       void OSingleDocumentController::getError(sdbc::SQLException& 
_rException ) const
        {
-               m_aCurrentError >>= _rException;
+               m_pImpl->m_aCurrentError >>= _rException;
        }
        //--------------------------------------------------------------------
        sal_Bool OSingleDocumentController::hasError() const
        {
-               return m_aCurrentError.hasValue();
+               return m_pImpl->m_aCurrentError.hasValue();
        }
        //--------------------------------------------------------------------
        sal_Bool SAL_CALL OSingleDocumentController::suspend(sal_Bool bSuspend) 
throw( RuntimeException )
        {
-               m_bSuspended = bSuspend;
+               m_pImpl->m_bSuspended = bSuspend;
                if ( !bSuspend && !isConnected() )
                        reconnect(sal_True);
 
@@ -319,7 +388,7 @@
                switch (_nId)
                {
                        case ID_BROWSER_UNDO:
-                               aReturn.bEnabled = m_bEditable && 
m_aUndoManager.GetUndoActionCount() != 0;
+                               aReturn.bEnabled = m_pImpl->m_bEditable && 
m_aUndoManager.GetUndoActionCount() != 0;
                                if ( aReturn.bEnabled )
                                {
                                        String sUndo(ModuleRes(STR_UNDO_COLON));
@@ -329,7 +398,7 @@
                                }
                                break;
                        case ID_BROWSER_REDO:
-                               aReturn.bEnabled = m_bEditable && 
m_aUndoManager.GetRedoActionCount() != 0;
+                               aReturn.bEnabled = m_pImpl->m_bEditable && 
m_aUndoManager.GetRedoActionCount() != 0;
                                if ( aReturn.bEnabled )
                                {
                                        String sRedo(ModuleRes(STR_REDO_COLON));
@@ -381,7 +450,7 @@
        // 
-----------------------------------------------------------------------------
        void OSingleDocumentController::setModified(sal_Bool _bModified)
        {
-               m_bModified = _bModified;
+               m_pImpl->m_bModified = _bModified;
                InvalidateFeature(ID_BROWSER_SAVEDOC);
 
         if ( isFeatureSupported( ID_BROWSER_SAVEASDOC ) )
@@ -390,7 +459,7 @@
        // 
-----------------------------------------------------------------------------
        Reference< XModel >  SAL_CALL OSingleDocumentController::getModel(void) 
throw( RuntimeException )
        {
-               return NULL;//Reference< XModel >(m_xDataSource,UNO_QUERY); // 
OJ: i31891
+               return NULL;//Reference< XModel 
>(m_pImpl->m_xDataSource,UNO_QUERY); // OJ: i31891
        }
        // 
-----------------------------------------------------------------------------
        sal_Bool SAL_CALL OSingleDocumentController::attachModel(const 
Reference< XModel > & _rxModel) throw( RuntimeException )
@@ -398,7 +467,7 @@
                ::osl::MutexGuard aGuard( m_aMutex );   
 
         Reference< XOfficeDatabaseDocument > xOfficeDoc( _rxModel, UNO_QUERY );
-        m_xDataSource.set( xOfficeDoc.is() ? xOfficeDoc->getDataSource() : 
Reference<XDataSource>(), UNO_QUERY );
+        m_pImpl->m_xDataSource.set( xOfficeDoc.is() ? 
xOfficeDoc->getDataSource() : Reference<XDataSource>(), UNO_QUERY );
 
         return sal_True;
        }
@@ -406,10 +475,45 @@
         ::rtl::OUString OSingleDocumentController::getDataSourceName() const
         { 
                 ::rtl::OUString sName;
-                if ( m_xDataSource.is() )
-                        m_xDataSource->getPropertyValue(PROPERTY_NAME) >>= 
sName;
+               if ( m_pImpl->m_xDataSource.is() )
+                       m_pImpl->m_xDataSource->getPropertyValue(PROPERTY_NAME) 
>>= sName;
                 return sName; 
         }
+       // 
-----------------------------------------------------------------------------
+       void OSingleDocumentController::connectionLostMessage() const
+       {
+               String aMessage(ModuleRes(RID_STR_CONNECTION_LOST));
+               Reference< awt::XWindow> xWindow = getTopMostContainerWindow();
+               Window* pWin = NULL;
+               if ( xWindow.is() )
+                       pWin = VCLUnoHelper::GetWindow(xWindow);
+               if ( !pWin )
+                       pWin = getView()->Window::GetParent();
+               
+               InfoBox(pWin, aMessage).Execute();
+       }
+       // 
-----------------------------------------------------------------------------
+       const Reference< XConnection >&
+                                       
OSingleDocumentController::getConnection() const 
+       { 
+               return m_pImpl->m_xConnection; 
+       }
+       // 
-----------------------------------------------------------------------------
+    sal_Bool           OSingleDocumentController::isReadOnly()                 
const { return !m_pImpl->m_bEditable; }
+       sal_Bool                OSingleDocumentController::isEditable()         
        const { return m_pImpl->m_bEditable; }
+       sal_Bool                OSingleDocumentController::isModified()         
        const { return m_pImpl->m_bModified; }
+    void            OSingleDocumentController::setEditable(sal_Bool 
_bEditable)          { m_pImpl->m_bEditable = _bEditable; }
+    const ::dbtools::DatabaseMetaData& 
OSingleDocumentController::getSdbMetaData() const { return 
m_pImpl->m_aSdbMetaData; }
+    sal_Bool       OSingleDocumentController::isConnected() const { return 
m_pImpl->m_xConnection.is(); }
+    uno::Reference< sdbc::XDatabaseMetaData >
+                                       OSingleDocumentController::getMetaData( 
) const 
+    { 
+        return isConnected() ? m_pImpl->m_xConnection->getMetaData() : 
uno::Reference< sdbc::XDatabaseMetaData >(); 
+    }
+    const uno::Reference< beans::XPropertySet >&
+                                       
OSingleDocumentController::getDataSource() const { return 
m_pImpl->m_xDataSource; }
+    sal_Bool   OSingleDocumentController::haveDataSource() const { return 
m_pImpl->m_xDataSource.is(); }
+    uno::Reference< util::XNumberFormatter >   
OSingleDocumentController::getNumberFormatter() const   { return 
m_pImpl->m_xFormatter; }
 //........................................................................
 }      // namespace dbaui
 //........................................................................




---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to