User: rt      
Date: 2008-06-16 13:48:42+0000
Modified:
   dba/reportdesign/source/ui/report/dlgedfunc.cxx

Log:
 INTEGRATION: CWS rptchart02 (1.7.4); FILE MERGED
 2008/04/30 13:03:35 oj 1.7.4.5: #i88843# impl clone method
 2008/04/16 06:30:59 oj 1.7.4.4: RESYNC: (1.7-1.8); FILE MERGED
 2008/04/14 11:22:48 oj 1.7.4.3: allow to double click when in insert mode
 2008/04/03 06:35:21 oj 1.7.4.2: #i86343# remove unused code
 2008/03/12 09:45:18 oj 1.7.4.1: impl chart handling

File Changes:

Directory: /dba/reportdesign/source/ui/report/
==============================================

File [changed]: dlgedfunc.cxx
Url: 
http://dba.openoffice.org/source/browse/dba/reportdesign/source/ui/report/dlgedfunc.cxx?r1=1.8&r2=1.9
Delta lines:  +224 -96
----------------------
--- dlgedfunc.cxx       2008-04-10 19:17:26+0000        1.8
+++ dlgedfunc.cxx       2008-06-16 13:48:39+0000        1.9
@@ -29,18 +29,25 @@
  ************************************************************************/
 #include "precompiled_reportdesign.hxx"
 #include <vcl/scrbar.hxx>
+#include <vcl/svapp.hxx>
+#include <vcl/seleng.hxx>
+#include <com/sun/star/linguistic2/XSpellChecker1.hpp>
+#include <com/sun/star/embed/EmbedStates.hpp>
+#include <com/sun/star/beans/XPropertySet.hpp>
+
 #include <svx/svdview.hxx>
 #include <svx/svdpagv.hxx>
 #include <svx/outlobj.hxx>
-#include <vcl/svapp.hxx>
 #include <svx/unolingu.hxx>
-#include <com/sun/star/linguistic2/XSpellChecker1.hpp>
 #include <svx/svdetc.hxx>
 #include <svx/editstat.hxx>
 #include <svx/svdoutl.hxx>
 #include <svx/svddrgmt.hxx>
 #include <svx/svdoashp.hxx>
+#include <svx/svxids.hrc>
+#include <svx/svditer.hxx>
 
+#include <toolkit/helper/vclunohelper.hxx>
 
 #include "dlgedfunc.hxx"
 #include "ReportSection.hxx"
@@ -51,19 +58,14 @@
 #include "ReportWindow.hxx"
 #include "RptObject.hxx"
 #include "ScrollHelper.hxx"
-#include <vcl/seleng.hxx>
+
 #include "ReportRuler.hxx"
 #include "UITools.hxx"
-#ifndef _SBASLTID_HRC
-#include <svx/svxids.hrc>
-#endif
-#include <svx/svditer.hxx>
-#include <toolkit/helper/vclunohelper.hxx>
-#include <com/sun/star/beans/XPropertySet.hpp>
+
 #include <uistrings.hrc>
 #include "UndoEnv.hxx"
 #include <RptModel.hxx>
-#include "InsertFunctions.hxx"
+#include <tools/diagnose_ex.h>
 
 #define DEFAUL_MOVE_SIZE    100
 namespace rptui
@@ -127,7 +129,9 @@
  m_pView(_pParent->getView()),
  m_xOverlappingObj(NULL),
  m_pOverlappingObj(NULL),
- m_bSelectionMode(false)
+ m_bSelectionMode(false),
+ m_bUiActive(false),
+ m_bShowPropertyBrowser(false)
 {
        // m_pParent = _pParent;
        aScrollTimer.SetTimeoutHdl( LINK( this, DlgEdFunc, ScrollTimeout ) );
@@ -136,11 +140,10 @@
 }
 
 //----------------------------------------------------------------------------
-    void DlgEdFunc::setOverlappedControlColor(sal_Int32 _nColor)
-    {
+void DlgEdFunc::setOverlappedControlColor(sal_Int32 _nColor)
+{
         m_nOverlappedControlColor = _nColor;
-    }
-
+}
 // 
-----------------------------------------------------------------------------
 sal_Int32 lcl_setColorOfObject(uno::Reference< uno::XInterface > _xObj, long 
_nColorTRGB)
 {
@@ -250,6 +253,26 @@
        return bHandled;
 }
 // 
-----------------------------------------------------------------------------
+void DlgEdFunc::checkTwoCklicks(const MouseEvent& rMEvt)
+{
+    deactivateOle();
+
+    const USHORT nClicks = rMEvt.GetClicks();
+       if ( nClicks == 2 && rMEvt.IsLeft() )
+       {
+               if ( m_pView->AreObjectsMarked() )
+               {
+                       const SdrMarkList& rMarkList = 
m_pView->GetMarkedObjectList();
+                       if (rMarkList.GetMarkCount() == 1)
+                       {
+                               const SdrMark* pMark = rMarkList.GetMark(0);
+                               SdrObject* pObj = pMark->GetMarkedSdrObj();
+                               activateOle(pObj);
+            } // if (rMarkList.GetMarkCount() == 1)
+        } // if ( pView->AreObjectsMarked() )
+    }
+}
+// 
-----------------------------------------------------------------------------
 void DlgEdFunc::stopScrollTimer()
 {
     unColorizeOverlappedObj();
@@ -268,6 +291,8 @@
 {
        BOOL bReturn = FALSE;
 
+    if ( !m_bUiActive )
+    {
     const KeyCode& rCode = _rEvent.GetKeyCode();
        USHORT nCode = rCode.GetCode();
 
@@ -279,6 +304,11 @@
                        {
                                m_pParent->getViewsWindow()->BrkAction();
                                bReturn = TRUE;
+                           } // if ( m_pParent->getViewsWindow()->IsAction() )
+                else if ( m_pView->IsTextEdit() )
+                   {
+                           m_pView->SdrEndTextEdit();
+                           bReturn = TRUE;
                        }
                        else if ( m_pView->AreObjectsMarked() )
                        {
@@ -290,8 +320,13 @@
                     m_pParent->getViewsWindow()->unmarkAllObjects(NULL);
                                        //m_pView->UnmarkAll();
                                
+                                   deactivateOle(true);
                                bReturn = FALSE;
                        }
+                else
+                {
+                    deactivateOle(true);
+                }
                }
                break;
                case KEY_TAB:
@@ -339,11 +374,23 @@
                        bReturn = TRUE;
                }
                break;
+            case KEY_RETURN:
+                if ( !rCode.IsMod1() )
+                {
+                    const SdrMarkList& rMarkList = 
m_pView->GetMarkedObjectList();
+                    if ( rMarkList.GetMarkCount() == 1 )
+                    {
+                        SdrObject* pObj = rMarkList.GetMark( 0 
)->GetMarkedSdrObj();
+                        activateOle(pObj);
+                    }
+                }
+                break;
                default:
                {
             bReturn = m_pView->KeyInput(_rEvent, m_pParent);
                }
                break;
+           } // switch ( nCode )
        }
 
        if ( bReturn && m_pParent->IsMouseCaptured() )
@@ -352,6 +399,78 @@
        return bReturn;
 }
 // 
-----------------------------------------------------------------------------
+void DlgEdFunc::activateOle(SdrObject* _pObj)
+{
+    if ( _pObj )
+    {
+        const UINT16 nSdrObjKind = _pObj->GetObjIdentifier();
+        //
+           //  OLE: activate
+           //
+           if (nSdrObjKind == OBJ_OLE2)
+           {
+            bool bIsInplaceOle = false;
+                   if (!bIsInplaceOle)
+                   {
+                SdrOle2Obj* pOleObj = dynamic_cast<SdrOle2Obj*>(_pObj);
+                if ( pOleObj->GetObjRef().is() )
+                           {
+                    if (m_pView->IsTextEdit())
+                           {
+                                   m_pView->SdrEndTextEdit();
+                           }
+
+                    pOleObj->AddOwnLightClient();
+                    pOleObj->SetWindow(VCLUnoHelper::GetInterface(m_pParent));
+                    try
+                    {
+                        pOleObj->GetObjRef()->changeState( 
embed::EmbedStates::UI_ACTIVE );
+                        m_bUiActive = true;
+                        OReportController* pController = 
m_pParent->getViewsWindow()->getView()->getReportView()->getController();
+                        m_bShowPropertyBrowser = 
pController->isCommandChecked(SID_SHOW_PROPERTYBROWSER);
+                        if ( m_bShowPropertyBrowser )
+                            
pController->executeChecked(SID_SHOW_PROPERTYBROWSER,uno::Sequence< 
beans::PropertyValue >());
+                    }
+                    catch( uno::Exception& )
+                    {
+                        DBG_UNHANDLED_EXCEPTION();
+                    }
+                           }
+                   }
+           } // if (nSdrObjKind == OBJ_OLE2)
+    } // if ( _pObj )
+}
+// 
-----------------------------------------------------------------------------
+void DlgEdFunc::deactivateOle(bool _bSelect)
+{
+    OLEObjCache& rObjCache = GetSdrGlobalData().GetOLEObjCache();
+    const ULONG nCount = rObjCache.Count();
+    for(ULONG i = 0 ; i< nCount;++i)
+    {
+        SdrOle2Obj* pObj = 
reinterpret_cast<SdrOle2Obj*>(rObjCache.GetObject(i));
+        if ( m_pParent->getPage() == pObj->GetPage() )
+        {
+            uno::Reference< embed::XEmbeddedObject > xObj = pObj->GetObjRef();
+            if ( xObj.is() && xObj->getCurrentState() == 
embed::EmbedStates::UI_ACTIVE )
+            {
+                xObj->changeState( embed::EmbedStates::RUNNING );
+                m_bUiActive = false;
+                if ( m_bShowPropertyBrowser )
+                {
+                    OReportController* pController = 
m_pParent->getViewsWindow()->getView()->getReportView()->getController();
+                    
pController->executeChecked(SID_SHOW_PROPERTYBROWSER,uno::Sequence< 
beans::PropertyValue >());
+                }
+
+                if ( _bSelect )
+                {
+                    SdrPageView* pPV = m_pView->GetSdrPageView();
+                           m_pView->MarkObj(pObj, pPV);
+                }
+            } // if ( xObj.is() && xObj->getCurrentState() == 
embed::EmbedStates::UI_ACTIVE )
+        }
+    } // for(ULONG i = 0 ; i< nCount;++i)
+}
+// 
-----------------------------------------------------------------------------
 void DlgEdFunc::colorizeOverlappedObject(SdrObject* _pOverlappedObj)
 {
        OObjectBase* pObj = dynamic_cast<OObjectBase*>(_pOverlappedObj);
@@ -562,6 +681,7 @@
            // if no action, create object
            if ( !m_pParent->getViewsWindow()->IsAction() )
         {
+            deactivateOle(true);
             if ( m_pParent->getViewsWindow()->HasSelection() )
                 m_pParent->getViewsWindow()->unmarkAllObjects(m_pView);
                    m_pView->BegCreateObj(m_aMDPos);
@@ -619,7 +739,7 @@
                 OOle2Obj* pObj = 
dynamic_cast<OOle2Obj*>(pMark->GetMarkedSdrObj());
                        if ( pObj && !pObj->IsEmpty() )
                 {
-                    InitializeChart(pController->getModel(),pObj->GetObjRef());
+                    pObj->initializeChart(pController->getModel());
                 }
             }
         }
@@ -636,7 +756,10 @@
                SdrViewEvent aVEvt;
                m_pView->PickAnything(rMEvt, SDRMOUSEBUTTONDOWN, aVEvt);
                m_pView->MarkObj(aVEvt.pRootObj, pPV);
-       }
+       } // ift() && !rMEvt.IsMod2() )
+
+    checkTwoCklicks(rMEvt);
+    
     
m_pParent->getViewsWindow()->getView()->getReportView()->UpdatePropertyBrowserDelayed(m_pView);
     return bReturn;
 }
@@ -724,8 +847,10 @@
                    m_pParent->getViewsWindow()->BegMarkObj( m_aMDPos ,m_pView);
                }
         else
+        {
             m_pView->SdrBeginTextEdit( 
aVEvt.pRootObj,m_pView->GetSdrPageView(),m_pParent,sal_False );
     }
+    }
 
        return TRUE;
 }
@@ -744,8 +869,11 @@
         checkMovementAllowed(rMEvt);
 
     m_pParent->getViewsWindow()->EndAction();
-       m_pParent->SetPointer( m_pView->GetPreferedPointer( aPnt, m_pParent) );
     
+    checkTwoCklicks(rMEvt);
+
+       m_pParent->SetPointer( m_pView->GetPreferedPointer( aPnt, m_pParent) );
+    if ( !m_bUiActive )
     
m_pParent->getViewsWindow()->getView()->getReportView()->UpdatePropertyBrowserDelayed(m_pView);
        m_bSelectionMode = false;
        return TRUE;




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

Reply via email to