2010-10-12 15:59:03 +02:00
|
|
|
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
|
2001-01-09 14:43:04 +00:00
|
|
|
/*************************************************************************
|
|
|
|
*
|
2008-04-10 13:04:54 +00:00
|
|
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
2001-01-09 14:43:04 +00:00
|
|
|
*
|
2010-02-12 15:01:35 +01:00
|
|
|
* Copyright 2000, 2010 Oracle and/or its affiliates.
|
2001-01-09 14:43:04 +00:00
|
|
|
*
|
2008-04-10 13:04:54 +00:00
|
|
|
* OpenOffice.org - a multi-platform office productivity suite
|
2001-01-09 14:43:04 +00:00
|
|
|
*
|
2008-04-10 13:04:54 +00:00
|
|
|
* This file is part of OpenOffice.org.
|
2001-01-09 14:43:04 +00:00
|
|
|
*
|
2008-04-10 13:04:54 +00:00
|
|
|
* OpenOffice.org is free software: you can redistribute it and/or modify
|
|
|
|
* it under the terms of the GNU Lesser General Public License version 3
|
|
|
|
* only, as published by the Free Software Foundation.
|
2001-01-09 14:43:04 +00:00
|
|
|
*
|
2008-04-10 13:04:54 +00:00
|
|
|
* OpenOffice.org is distributed in the hope that it will be useful,
|
|
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
|
* GNU Lesser General Public License version 3 for more details
|
|
|
|
* (a copy is included in the LICENSE file that accompanied this code).
|
2001-01-09 14:43:04 +00:00
|
|
|
*
|
2008-04-10 13:04:54 +00:00
|
|
|
* You should have received a copy of the GNU Lesser General Public License
|
|
|
|
* version 3 along with OpenOffice.org. If not, see
|
|
|
|
* <http://www.openoffice.org/license.html>
|
|
|
|
* for a copy of the LGPLv3 License.
|
2001-01-09 14:43:04 +00:00
|
|
|
*
|
|
|
|
************************************************************************/
|
|
|
|
|
2006-09-17 05:56:39 +00:00
|
|
|
|
2001-01-09 14:43:04 +00:00
|
|
|
#include "dataview.hxx"
|
|
|
|
#include <toolkit/unohlp.hxx>
|
|
|
|
#include <comphelper/types.hxx>
|
autorecovery: define a new css.document.XDocumentRecovery interface, implement it in both SFX and DBACCESS, and use it in the autorecovery
In this course, the auto recovery learned to restore multiple views of a document. Also, in the course of the change,
the LoadDispatchListener became superfluous, and was removed.
Also, the loader code in dbaccess was slightly adjusted, since now the connectController call is in the responsibility
of the loader, and must not happen inside the XController::attachModel call anymore. This change made the
ModelControllerConnector class superfluous, so it has been removed, too.
2010-01-05 22:32:38 +01:00
|
|
|
#include <comphelper/namedvaluecollection.hxx>
|
2001-01-09 14:43:04 +00:00
|
|
|
#include <sfx2/app.hxx>
|
|
|
|
#include <sfx2/imgmgr.hxx>
|
2002-02-19 12:48:54 +00:00
|
|
|
#include "IController.hxx"
|
2002-04-29 07:39:01 +00:00
|
|
|
#include "UITools.hxx"
|
|
|
|
#include <sfx2/sfx.hrc>
|
|
|
|
#include <svtools/imgdef.hxx>
|
autorecovery: define a new css.document.XDocumentRecovery interface, implement it in both SFX and DBACCESS, and use it in the autorecovery
In this course, the auto recovery learned to restore multiple views of a document. Also, in the course of the change,
the LoadDispatchListener became superfluous, and was removed.
Also, the loader code in dbaccess was slightly adjusted, since now the connectController call is in the responsibility
of the loader, and must not happen inside the XController::attachModel call anymore. This change made the
ModelControllerConnector class superfluous, so it has been removed, too.
2010-01-05 22:32:38 +01:00
|
|
|
#include <tools/diagnose_ex.h>
|
2001-08-15 12:39:35 +00:00
|
|
|
|
|
|
|
//.........................................................................
|
|
|
|
namespace dbaui
|
2001-01-09 14:43:04 +00:00
|
|
|
{
|
2001-08-15 12:39:35 +00:00
|
|
|
//.........................................................................
|
2002-04-29 07:39:01 +00:00
|
|
|
using namespace ::com::sun::star::uno;
|
2004-09-09 08:41:25 +00:00
|
|
|
using namespace ::com::sun::star::beans;
|
2002-04-29 07:39:01 +00:00
|
|
|
using namespace ::com::sun::star::util;
|
|
|
|
using namespace ::com::sun::star::lang;
|
2004-11-17 13:47:39 +00:00
|
|
|
using namespace ::com::sun::star::frame;
|
2002-04-29 07:39:01 +00:00
|
|
|
|
2001-08-15 12:39:35 +00:00
|
|
|
//=====================================================================
|
|
|
|
//= ColorChanger
|
|
|
|
//=====================================================================
|
|
|
|
class ColorChanger
|
|
|
|
{
|
|
|
|
protected:
|
|
|
|
OutputDevice* m_pDev;
|
|
|
|
|
|
|
|
public:
|
|
|
|
ColorChanger( OutputDevice* _pDev, const Color& _rNewLineColor, const Color& _rNewFillColor )
|
|
|
|
:m_pDev( _pDev )
|
|
|
|
{
|
|
|
|
m_pDev->Push( PUSH_LINECOLOR | PUSH_FILLCOLOR );
|
|
|
|
m_pDev->SetLineColor( _rNewLineColor );
|
|
|
|
m_pDev->SetFillColor( _rNewFillColor );
|
|
|
|
}
|
|
|
|
|
|
|
|
~ColorChanger()
|
|
|
|
{
|
|
|
|
m_pDev->Pop();
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
2001-08-16 13:22:02 +00:00
|
|
|
DBG_NAME(ODataView)
|
2001-08-15 12:39:35 +00:00
|
|
|
// -------------------------------------------------------------------------
|
2002-02-19 12:48:54 +00:00
|
|
|
ODataView::ODataView( Window* pParent,
|
2008-06-25 11:40:17 +00:00
|
|
|
IController& _rController,
|
2002-02-19 12:48:54 +00:00
|
|
|
const Reference< XMultiServiceFactory >& _rFactory,
|
|
|
|
WinBits nStyle)
|
2001-08-15 12:39:35 +00:00
|
|
|
:Window(pParent,nStyle)
|
|
|
|
,m_xServiceFactory(_rFactory)
|
2008-06-25 11:40:17 +00:00
|
|
|
,m_rController( _rController )
|
2010-11-25 14:28:03 +01:00
|
|
|
,m_aSeparator( this )
|
2001-08-15 12:39:35 +00:00
|
|
|
{
|
|
|
|
DBG_CTOR(ODataView,NULL);
|
2008-06-25 11:40:17 +00:00
|
|
|
m_rController.acquire();
|
2004-11-17 13:47:39 +00:00
|
|
|
m_pAccel.reset(::svt::AcceleratorExecute::createAcceleratorHelper());
|
2010-11-25 14:28:03 +01:00
|
|
|
m_aSeparator.Show();
|
2001-08-15 12:39:35 +00:00
|
|
|
}
|
2001-08-23 13:46:27 +00:00
|
|
|
|
2001-08-15 12:39:35 +00:00
|
|
|
// -------------------------------------------------------------------------
|
2001-08-23 13:46:27 +00:00
|
|
|
void ODataView::Construct()
|
2001-01-09 14:43:04 +00:00
|
|
|
{
|
|
|
|
}
|
2001-08-23 13:46:27 +00:00
|
|
|
|
2001-08-15 12:39:35 +00:00
|
|
|
// -------------------------------------------------------------------------
|
|
|
|
ODataView::~ODataView()
|
2001-01-09 14:43:04 +00:00
|
|
|
{
|
2004-08-02 14:32:17 +00:00
|
|
|
DBG_DTOR(ODataView,NULL);
|
2001-08-15 12:39:35 +00:00
|
|
|
|
2008-06-25 11:40:17 +00:00
|
|
|
m_rController.release();
|
2001-01-09 14:43:04 +00:00
|
|
|
}
|
|
|
|
|
2001-08-15 12:39:35 +00:00
|
|
|
// -------------------------------------------------------------------------
|
2006-06-20 01:56:16 +00:00
|
|
|
void ODataView::resizeDocumentView( Rectangle& /*_rPlayground*/ )
|
2001-01-09 14:43:04 +00:00
|
|
|
{
|
|
|
|
}
|
|
|
|
|
2001-08-15 12:39:35 +00:00
|
|
|
// -------------------------------------------------------------------------
|
|
|
|
void ODataView::Paint( const Rectangle& _rRect )
|
|
|
|
{
|
|
|
|
//.................................................................
|
|
|
|
// draw the background
|
|
|
|
{
|
|
|
|
ColorChanger aColors( this, COL_TRANSPARENT, GetSettings().GetStyleSettings().GetFaceColor() );
|
|
|
|
DrawRect( _rRect );
|
|
|
|
}
|
|
|
|
|
|
|
|
// let the base class do anything it needs
|
|
|
|
Window::Paint( _rRect );
|
|
|
|
}
|
|
|
|
|
|
|
|
// -------------------------------------------------------------------------
|
2001-08-23 13:46:27 +00:00
|
|
|
void ODataView::resizeAll( const Rectangle& _rPlayground )
|
2001-08-15 12:39:35 +00:00
|
|
|
{
|
2001-08-23 13:46:27 +00:00
|
|
|
Rectangle aPlayground( _rPlayground );
|
2001-08-15 12:39:35 +00:00
|
|
|
|
2010-11-25 14:28:03 +01:00
|
|
|
// position the separator
|
|
|
|
const Size aSeparatorSize = Size( aPlayground.GetWidth(), 2 );
|
|
|
|
m_aSeparator.SetPosSizePixel( aPlayground.TopLeft(), aSeparatorSize );
|
|
|
|
aPlayground.Top() += aSeparatorSize.Height() + 1;
|
2001-01-09 14:43:04 +00:00
|
|
|
|
2001-08-23 13:46:27 +00:00
|
|
|
// position the controls of the document's view
|
|
|
|
resizeDocumentView( aPlayground );
|
|
|
|
}
|
|
|
|
|
|
|
|
// -------------------------------------------------------------------------
|
|
|
|
void ODataView::Resize()
|
|
|
|
{
|
|
|
|
Window::Resize();
|
2002-07-25 06:08:55 +00:00
|
|
|
resizeAll( Rectangle( Point( 0, 0), GetSizePixel() ) );
|
2001-08-15 12:39:35 +00:00
|
|
|
}
|
2002-02-19 12:48:54 +00:00
|
|
|
// -----------------------------------------------------------------------------
|
2008-06-25 11:40:17 +00:00
|
|
|
long ODataView::PreNotify( NotifyEvent& _rNEvt )
|
2002-02-19 12:48:54 +00:00
|
|
|
{
|
2008-06-25 11:40:17 +00:00
|
|
|
bool bHandled = false;
|
|
|
|
switch ( _rNEvt.GetType() )
|
2002-02-19 12:48:54 +00:00
|
|
|
{
|
|
|
|
case EVENT_KEYINPUT:
|
|
|
|
{
|
2008-06-25 11:40:17 +00:00
|
|
|
const KeyEvent* pKeyEvent = _rNEvt.GetKeyEvent();
|
2002-02-19 12:48:54 +00:00
|
|
|
const KeyCode& aKeyCode = pKeyEvent->GetKeyCode();
|
2008-06-25 11:40:17 +00:00
|
|
|
if ( m_pAccel.get() && m_pAccel->execute( aKeyCode ) )
|
|
|
|
// the accelerator consumed the event
|
|
|
|
return 1L;
|
2002-02-19 12:48:54 +00:00
|
|
|
}
|
2008-06-25 11:40:17 +00:00
|
|
|
// NO break
|
|
|
|
case EVENT_KEYUP:
|
|
|
|
case EVENT_MOUSEBUTTONDOWN:
|
|
|
|
case EVENT_MOUSEBUTTONUP:
|
|
|
|
bHandled = m_rController.interceptUserInput( _rNEvt );
|
|
|
|
break;
|
2002-02-19 12:48:54 +00:00
|
|
|
}
|
2008-06-25 11:40:17 +00:00
|
|
|
return bHandled ? 1L : Window::PreNotify( _rNEvt );
|
2002-02-19 12:48:54 +00:00
|
|
|
}
|
|
|
|
// -----------------------------------------------------------------------------
|
2002-04-29 07:39:01 +00:00
|
|
|
void ODataView::StateChanged( StateChangedType nType )
|
|
|
|
{
|
|
|
|
Window::StateChanged( nType );
|
|
|
|
|
|
|
|
if ( nType == STATE_CHANGE_CONTROLBACKGROUND )
|
|
|
|
{
|
|
|
|
// Check if we need to get new images for normal/high contrast mode
|
2008-06-25 11:40:17 +00:00
|
|
|
m_rController.notifyHiContrastChanged();
|
2002-04-29 07:39:01 +00:00
|
|
|
}
|
autorecovery: define a new css.document.XDocumentRecovery interface, implement it in both SFX and DBACCESS, and use it in the autorecovery
In this course, the auto recovery learned to restore multiple views of a document. Also, in the course of the change,
the LoadDispatchListener became superfluous, and was removed.
Also, the loader code in dbaccess was slightly adjusted, since now the connectController call is in the responsibility
of the loader, and must not happen inside the XController::attachModel call anymore. This change made the
ModelControllerConnector class superfluous, so it has been removed, too.
2010-01-05 22:32:38 +01:00
|
|
|
|
|
|
|
if ( nType == STATE_CHANGE_INITSHOW )
|
|
|
|
{
|
|
|
|
// now that there's a view which is finally visible, remove the "Hidden" value from the
|
|
|
|
// model's arguments.
|
|
|
|
try
|
|
|
|
{
|
|
|
|
Reference< XController > xController( m_rController.getXController(), UNO_SET_THROW );
|
|
|
|
Reference< XModel > xModel( xController->getModel(), UNO_QUERY );
|
|
|
|
if ( xModel.is() )
|
|
|
|
{
|
|
|
|
::comphelper::NamedValueCollection aArgs( xModel->getArgs() );
|
|
|
|
aArgs.remove( "Hidden" );
|
2010-02-15 16:05:58 +01:00
|
|
|
xModel->attachResource( xModel->getURL(), aArgs.getPropertyValues() );
|
autorecovery: define a new css.document.XDocumentRecovery interface, implement it in both SFX and DBACCESS, and use it in the autorecovery
In this course, the auto recovery learned to restore multiple views of a document. Also, in the course of the change,
the LoadDispatchListener became superfluous, and was removed.
Also, the loader code in dbaccess was slightly adjusted, since now the connectController call is in the responsibility
of the loader, and must not happen inside the XController::attachModel call anymore. This change made the
ModelControllerConnector class superfluous, so it has been removed, too.
2010-01-05 22:32:38 +01:00
|
|
|
}
|
|
|
|
}
|
|
|
|
catch( const Exception& )
|
|
|
|
{
|
|
|
|
DBG_UNHANDLED_EXCEPTION();
|
|
|
|
}
|
|
|
|
}
|
2002-04-29 07:39:01 +00:00
|
|
|
}
|
|
|
|
// -----------------------------------------------------------------------------
|
|
|
|
void ODataView::DataChanged( const DataChangedEvent& rDCEvt )
|
|
|
|
{
|
|
|
|
Window::DataChanged( rDCEvt );
|
2001-02-05 08:20:23 +00:00
|
|
|
|
2007-07-06 07:03:13 +00:00
|
|
|
if ( (rDCEvt.GetType() == DATACHANGED_FONTS) ||
|
|
|
|
(rDCEvt.GetType() == DATACHANGED_DISPLAY) ||
|
|
|
|
(rDCEvt.GetType() == DATACHANGED_FONTSUBSTITUTION) ||
|
|
|
|
((rDCEvt.GetType() == DATACHANGED_SETTINGS) &&
|
|
|
|
(rDCEvt.GetFlags() & SETTINGS_STYLE)) )
|
2002-04-29 07:39:01 +00:00
|
|
|
{
|
|
|
|
// Check if we need to get new images for normal/high contrast mode
|
2008-06-25 11:40:17 +00:00
|
|
|
m_rController.notifyHiContrastChanged();
|
2002-04-29 07:39:01 +00:00
|
|
|
}
|
|
|
|
}
|
2004-11-17 13:47:39 +00:00
|
|
|
// -----------------------------------------------------------------------------
|
|
|
|
void ODataView::attachFrame(const Reference< XFrame >& _xFrame)
|
|
|
|
{
|
|
|
|
m_pAccel->init(m_xServiceFactory,_xFrame);
|
|
|
|
}
|
2001-08-15 12:39:35 +00:00
|
|
|
//.........................................................................
|
2002-04-29 07:39:01 +00:00
|
|
|
}
|
|
|
|
// namespace dbaui
|
2001-08-15 12:39:35 +00:00
|
|
|
//.........................................................................
|
2010-10-12 15:59:03 +02:00
|
|
|
|
|
|
|
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|