summaryrefslogtreecommitdiff
path: root/extensions/source/bibliography/bibbeam.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'extensions/source/bibliography/bibbeam.cxx')
-rw-r--r--extensions/source/bibliography/bibbeam.cxx321
1 files changed, 321 insertions, 0 deletions
diff --git a/extensions/source/bibliography/bibbeam.cxx b/extensions/source/bibliography/bibbeam.cxx
new file mode 100644
index 000000000000..7020f9eec2ba
--- /dev/null
+++ b/extensions/source/bibliography/bibbeam.cxx
@@ -0,0 +1,321 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * 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.
+ *
+ * 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).
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_extensions.hxx"
+#include <osl/mutex.hxx>
+#include <tools/urlobj.hxx>
+#include <toolkit/helper/vclunohelper.hxx>
+#include <comphelper/processfactory.hxx>
+#include <com/sun/star/awt/PosSize.hpp>
+#include <com/sun/star/frame/XDispatch.hpp>
+#include <com/sun/star/util/XURLTransformer.hpp>
+
+#include "bibliography.hrc"
+#include <vcl/lstbox.hxx>
+#include <vcl/edit.hxx>
+#include <tools/debug.hxx>
+#include "bibbeam.hxx"
+#include "toolbar.hrc"
+#include "bibresid.hxx"
+#include "datman.hxx"
+#ifndef BIBTOOLS_HXX
+#include "bibtools.hxx"
+#endif
+
+using namespace rtl;
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::beans;
+using namespace ::com::sun::star::uno;
+
+#define C2U(cChar) OUString::createFromAscii(cChar)
+
+#define PROPERTY_FRAME 1
+#define ID_TOOLBAR 1
+#define ID_GRIDWIN 2
+
+//.........................................................................
+namespace bib
+{
+//.........................................................................
+
+ using namespace ::com::sun::star::uno;
+
+ void HandleTaskPaneList( Window* pWindow, BOOL bAddToList )
+ {
+ Window* pParent = pWindow->GetParent();
+
+ DBG_ASSERT( pParent, "-GetTaskPaneList(): everybody here should have a parent!" );
+
+ SystemWindow* pSysWin = pParent->GetSystemWindow();
+ if( pSysWin )
+ {
+ TaskPaneList* pTaskPaneList = pSysWin->GetTaskPaneList();
+ if( pTaskPaneList )
+ {
+ if( bAddToList )
+ pTaskPaneList->AddWindow( pWindow );
+ else
+ pTaskPaneList->RemoveWindow( pWindow );
+ }
+ }
+ }
+
+ //=====================================================================
+ //= BibGridwin
+ //=====================================================================
+ class BibGridwin
+ :public Window //DockingWindow
+ {
+ private:
+ Reference< awt::XWindow > m_xGridWin;
+ Reference< awt::XControlModel > m_xGridModel;
+ Reference< awt::XControl > m_xControl;
+ Reference< awt::XControlContainer > m_xControlContainer;
+ // #100312# ---------
+ Reference< frame::XDispatchProviderInterception> m_xDispatchProviderInterception;
+
+ protected:
+
+ virtual void Resize();
+
+ public:
+
+ BibGridwin(Window* pParent, WinBits nStyle = WB_3DLOOK );
+ ~BibGridwin();
+
+ void createGridWin(const Reference< awt::XControlModel > & xDbForm);
+ void disposeGridWin();
+
+ const Reference< awt::XControlContainer >& getControlContainer() const { return m_xControlContainer; }
+ // #100312# ---------
+ const Reference< frame::XDispatchProviderInterception>& getDispatchProviderInterception() const { return m_xDispatchProviderInterception; }
+
+ virtual void GetFocus();
+ };
+
+ //---------------------------------------------------------------------
+ BibGridwin::BibGridwin( Window* _pParent, WinBits _nStyle ) : Window( _pParent, _nStyle )
+ {
+ m_xControlContainer = VCLUnoHelper::CreateControlContainer(this);
+
+ AddToTaskPaneList( this );
+ }
+
+ //---------------------------------------------------------------------
+ BibGridwin::~BibGridwin()
+ {
+ RemoveFromTaskPaneList( this );
+
+ disposeGridWin();
+ }
+
+ //---------------------------------------------------------------------
+ void BibGridwin::Resize()
+ {
+ if(m_xGridWin.is())
+ {
+ ::Size aSize = GetOutputSizePixel();
+ m_xGridWin->setPosSize(0, 0, aSize.Width(),aSize.Height(), awt::PosSize::SIZE);
+ }
+ }
+
+ //---------------------------------------------------------------------
+ void BibGridwin::createGridWin(const uno::Reference< awt::XControlModel > & xGModel)
+ {
+ m_xGridModel = xGModel;
+
+ if( m_xControlContainer.is())
+ {
+ uno::Reference< lang::XMultiServiceFactory > xMgr = comphelper::getProcessServiceFactory();
+
+ if ( m_xGridModel.is() && xMgr.is())
+ {
+ uno::Reference< XPropertySet > xPropSet( m_xGridModel, UNO_QUERY );
+
+ if ( xPropSet.is() && m_xGridModel.is() )
+ {
+ uno::Any aAny = xPropSet->getPropertyValue( C2U("DefaultControl") );
+ rtl::OUString aControlName;
+ aAny >>= aControlName;
+
+ m_xControl = Reference< awt::XControl > (xMgr->createInstance( aControlName ), UNO_QUERY );
+ DBG_ASSERT( m_xControl.is(), "no GridControl created" );
+ if ( m_xControl.is() )
+ m_xControl->setModel( m_xGridModel );
+ }
+
+ if ( m_xControl.is() )
+ {
+ // Peer als Child zu dem FrameWindow
+ m_xControlContainer->addControl(C2U("GridControl"), m_xControl);
+ m_xGridWin=uno::Reference< awt::XWindow > (m_xControl, UNO_QUERY );
+ // #100312# -----
+ m_xDispatchProviderInterception=uno::Reference< frame::XDispatchProviderInterception > (m_xControl, UNO_QUERY );
+ m_xGridWin->setVisible( sal_True );
+ m_xControl->setDesignMode( sal_True );
+ // initially switch on the desing mode - switch it off _after_ loading the form
+ // 17.10.2001 - 93107 - frank.schoenheit@sun.com
+
+ ::Size aSize = GetOutputSizePixel();
+ m_xGridWin->setPosSize(0, 0, aSize.Width(),aSize.Height(), awt::PosSize::POSSIZE);
+ }
+ }
+ }
+ }
+
+ //---------------------------------------------------------------------
+ void BibGridwin::disposeGridWin()
+ {
+ if ( m_xControl.is() )
+ {
+ Reference< awt::XControl > xDel( m_xControl );
+ m_xControl = NULL;
+ m_xGridWin = NULL;
+
+ m_xControlContainer->removeControl( xDel );
+ xDel->dispose();
+ }
+ }
+
+ //---------------------------------------------------------------------
+ void BibGridwin::GetFocus()
+ {
+ if(m_xGridWin.is())
+ m_xGridWin->setFocus();
+ }
+
+ //---------------------------------------------------------------------
+ BibBeamer::BibBeamer( Window* _pParent, BibDataManager* _pDM, WinBits _nStyle )
+ :BibSplitWindow( _pParent, _nStyle | WB_NOSPLITDRAW )
+ ,pDatMan( _pDM )
+ ,pToolBar( NULL )
+ ,pGridWin( NULL )
+ {
+ createToolBar();
+ createGridWin();
+ if ( pDatMan )
+ pDatMan->SetToolbar(pToolBar);
+ pGridWin->Show();
+
+ if ( pDatMan )
+ connectForm( pDatMan );
+ }
+
+ //---------------------------------------------------------------------
+ BibBeamer::~BibBeamer()
+ {
+ if ( isFormConnected() )
+ disconnectForm();
+
+ if ( m_xToolBarRef.is() )
+ m_xToolBarRef->dispose();
+
+ if ( pToolBar )
+ {
+ if ( pDatMan )
+ pDatMan->SetToolbar(0);
+
+ DELETEZ( pToolBar );
+ }
+
+ if( pGridWin )
+ {
+ BibGridwin* pDel = pGridWin;
+ pGridWin = NULL;
+ pDel->disposeGridWin();
+ delete pDel;
+ }
+
+ }
+
+ //---------------------------------------------------------------------
+ void BibBeamer::createToolBar()
+ {
+ pToolBar= new BibToolBar(this, LINK( this, BibBeamer, RecalcLayout_Impl ));
+ ::Size aSize=pToolBar->GetSizePixel();
+ InsertItem(ID_TOOLBAR, pToolBar, aSize.Height(), 0, 0, SWIB_FIXED );
+ if ( m_xController.is() )
+ pToolBar->SetXController( m_xController );
+ }
+
+ //---------------------------------------------------------------------
+ void BibBeamer::createGridWin()
+ {
+ pGridWin = new BibGridwin(this,0);
+
+ InsertItem(ID_GRIDWIN, pGridWin, 40, 1, 0, SWIB_RELATIVESIZE );
+
+ pGridWin->createGridWin( pDatMan->updateGridModel() );
+ }
+
+ //---------------------------------------------------------------------
+ Reference< awt::XControlContainer > BibBeamer::getControlContainer()
+ {
+ Reference< awt::XControlContainer > xReturn;
+ if ( pGridWin )
+ xReturn = pGridWin->getControlContainer();
+ return xReturn;
+ }
+
+ // #100312# -----------------------------------------------------------
+ Reference< frame::XDispatchProviderInterception > BibBeamer::getDispatchProviderInterception()
+ {
+ Reference< frame::XDispatchProviderInterception > xReturn;
+ if ( pGridWin )
+ xReturn = pGridWin->getDispatchProviderInterception();
+ return xReturn;
+ }
+
+ //---------------------------------------------------------------------
+ void BibBeamer::SetXController(const uno::Reference< frame::XController > & xCtr)
+ {
+ m_xController = xCtr;
+
+ if ( pToolBar )
+ pToolBar->SetXController( m_xController );
+
+ }
+
+ //---------------------------------------------------------------------
+ void BibBeamer::GetFocus()
+ {
+ if( pGridWin )
+ pGridWin->GrabFocus();
+ }
+
+ //---------------------------------------------------------------------
+ IMPL_LINK( BibBeamer, RecalcLayout_Impl, void*, /*pVoid*/ )
+ {
+ long nHeight = pToolBar->GetSizePixel().Height();
+ SetItemSize( ID_TOOLBAR, nHeight );
+ return 0L;
+ }
+
+//.........................................................................
+} // namespace bib
+//.........................................................................