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]
