summaryrefslogtreecommitdiff
path: root/extensions/source/bibliography/general.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'extensions/source/bibliography/general.cxx')
-rw-r--r--extensions/source/bibliography/general.cxx878
1 files changed, 0 insertions, 878 deletions
diff --git a/extensions/source/bibliography/general.cxx b/extensions/source/bibliography/general.cxx
deleted file mode 100644
index 9c5910613..000000000
--- a/extensions/source/bibliography/general.cxx
+++ /dev/null
@@ -1,878 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * 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 <comphelper/processfactory.hxx>
-#include <com/sun/star/awt/PosSize.hpp>
-#include <com/sun/star/sdbc/XRowSet.hpp>
-#include <com/sun/star/sdb/XColumn.hpp>
-#include <com/sun/star/sdb/CommandType.hpp>
-#include <com/sun/star/sdbcx/XColumnsSupplier.hpp>
-#include <com/sun/star/form/ListSourceType.hpp>
-#include <com/sun/star/awt/XWindow.hpp>
-#include <toolkit/helper/vclunohelper.hxx>
-#include <cppuhelper/implbase1.hxx> // helper for implementations
-#include "general.hxx"
-#include "sections.hrc"
-#include "bibresid.hxx"
-#include "datman.hxx"
-#include "bibconfig.hxx"
-#include "bibprop.hrc"
-#include "bib.hrc"
-#include "bibmod.hxx"
-#include "bibtools.hxx"
-#include "bibliography.hrc"
-#include <tools/debug.hxx>
-#include <vcl/svapp.hxx>
-#include <vcl/i18nhelp.hxx>
-#include <vcl/mnemonic.hxx>
-#include <algorithm>
-#include <functional>
-#include <vector>
-#include <tools/urlobj.hxx>
-
-using namespace ::com::sun::star;
-using namespace ::com::sun::star::uno;
-using namespace ::com::sun::star::form;
-using namespace ::com::sun::star::sdb;
-using namespace ::rtl;
-
-#define C2U(cChar) OUString::createFromAscii(cChar)
-#define C2S(cChar) String::CreateFromAscii(cChar)
-#define DISTANCE_CONTROL_TO_FIXEDTEXT 5
-
-::Point lcl_MovePoint(const FixedText& rFixedText)
-{
- ::Point aRet(rFixedText.GetPosPixel());
- aRet.X() += rFixedText.GetSizePixel().Width();
- aRet.X() += DISTANCE_CONTROL_TO_FIXEDTEXT;
- return aRet;
-}
-
-//-----------------------------------------------------------------------------
-OUString lcl_GetColumnName( const Mapping* pMapping, sal_uInt16 nIndexPos )
-{
- BibConfig* pBibConfig = BibModul::GetConfig();
- OUString sRet = pBibConfig->GetDefColumnName(nIndexPos);
- if(pMapping)
- for(sal_uInt16 i = 0; i < COLUMN_COUNT; i++)
- {
- if(pMapping->aColumnPairs[i].sLogicalColumnName == sRet)
- {
- sRet = pMapping->aColumnPairs[i].sRealColumnName;
- break;
- }
- }
- return sRet;
-}
-
-class BibPosListener :public cppu::WeakImplHelper1 <sdbc::XRowSetListener>
-{
- BibGeneralPage* pParentPage;
-public:
- BibPosListener(BibGeneralPage* pParent);
-
- //XPositioningListener
- virtual void SAL_CALL cursorMoved(const lang::EventObject& event) throw( uno::RuntimeException );
- virtual void SAL_CALL rowChanged(const lang::EventObject& /*event*/) throw( uno::RuntimeException ){ /* not interested in */ }
- virtual void SAL_CALL rowSetChanged(const lang::EventObject& /*event*/) throw( uno::RuntimeException ){ /* not interested in */ }
-
- //XEventListener
- virtual void SAL_CALL disposing(const lang::EventObject& Source) throw( uno::RuntimeException );
-
-};
-
-BibPosListener::BibPosListener(BibGeneralPage* pParent) :
- pParentPage(pParent)
-{
-}
-
-void BibPosListener::cursorMoved(const lang::EventObject& /*aEvent*/) throw( uno::RuntimeException )
-{
- try
- {
- uno::Reference< form::XBoundComponent > xLstBox = pParentPage->GetTypeListBoxModel();
- uno::Reference< beans::XPropertySet > xPropSet(xLstBox, UNO_QUERY);
- if(xPropSet.is())
- {
- BibConfig* pBibConfig = BibModul::GetConfig();
- BibDataManager* pDatMan = pParentPage->GetDataManager();
- BibDBDescriptor aDesc;
- aDesc.sDataSource = pDatMan->getActiveDataSource();
- aDesc.sTableOrQuery = pDatMan->getActiveDataTable();
- aDesc.nCommandType = CommandType::TABLE;
-
- const Mapping* pMapping = pBibConfig->GetMapping(aDesc);
- OUString sTypeMapping = pBibConfig->GetDefColumnName(AUTHORITYTYPE_POS);
- if(pMapping)
- {
- for(sal_uInt16 nEntry = 0; nEntry < COLUMN_COUNT; nEntry++)
- {
- if(pMapping->aColumnPairs[nEntry].sLogicalColumnName == sTypeMapping)
- {
- sTypeMapping = pMapping->aColumnPairs[nEntry].sRealColumnName;
- break;
- }
- }
- }
- rtl::OUString uTypeMapping = sTypeMapping;
-
- uno::Reference< form::XForm > xForm = pDatMan->getForm();
- uno::Reference< sdbcx::XColumnsSupplier > xSupplyCols(xForm, UNO_QUERY);
- uno::Reference< container::XNameAccess > xValueAcc;
- if (xSupplyCols.is())
- xValueAcc = xSupplyCols->getColumns();
-
- sal_Int16 nTempVal = -1;
- if(xValueAcc.is() && xValueAcc->hasByName(uTypeMapping))
- {
- uno::Any aVal = xValueAcc->getByName(uTypeMapping);
- uno::Reference< uno::XInterface > xInt = *(uno::Reference< uno::XInterface > *)aVal.getValue();
- uno::Reference< sdb::XColumn > xCol(xInt, UNO_QUERY);
- DBG_ASSERT(xCol.is(), "BibPosListener::positioned : invalid column (no sdb::XColumn) !");
- if (xCol.is())
- {
- nTempVal = xCol->getShort();
- // getShort returns zero if the value is not a number
- if (!nTempVal || xCol->wasNull())
- {
- rtl::OUString sTempVal = xCol->getString();
- if(sTempVal != rtl::OUString('0'))
- nTempVal = -1;
- }
- }
- }
- if(nTempVal < 0 || nTempVal >= TYPE_COUNT)
- {
- uno::Any aSel;
- uno::Sequence<sal_Int16> aSelSeq(1);
- sal_Int16* pArr = aSelSeq.getArray();
- pArr[0] = TYPE_COUNT;
- aSel.setValue(&aSelSeq, ::getCppuType((Sequence<sal_Int16>*)0));
- xPropSet->setPropertyValue(C2U("SelectedItems"), aSel);
- }
- }
- }
- catch(Exception& rEx)
- {
- (void) rEx; // make compiler happy
- OSL_FAIL("BibPosListener::positioned: something went wrong !");
- }
-}
-
-void BibPosListener::disposing(const lang::EventObject& /*Source*/) throw( uno::RuntimeException )
-{
-}
-
-BibGeneralPage::BibGeneralPage(Window* pParent, BibDataManager* pMan):
- BibTabPage(pParent,BibResId(RID_TP_GENERAL)),
- aControlParentWin(this, WB_DIALOGCONTROL),
- aIdentifierFT(&aControlParentWin, BibResId(FT_IDENTIFIER )),
- aAuthTypeFT(&aControlParentWin, BibResId(FT_AUTHTYPE )),
- aYearFT(&aControlParentWin, BibResId(FT_YEAR )),
- aAuthorFT(&aControlParentWin, BibResId(FT_AUTHOR )),
- aTitleFT(&aControlParentWin, BibResId(FT_TITLE )),
- aPublisherFT(&aControlParentWin, BibResId(FT_PUBLISHER )),
- aAddressFT(&aControlParentWin, BibResId(FT_ADDRESS )),
- aISBNFT(&aControlParentWin, BibResId(FT_ISBN )),
- aChapterFT(&aControlParentWin, BibResId(FT_CHAPTER )),
- aPagesFT(&aControlParentWin, BibResId(FT_PAGE )),
- aFirstFL(&aControlParentWin, BibResId(FL_1 )),
- aEditorFT(&aControlParentWin, BibResId(FT_EDITOR )),
- aEditionFT(&aControlParentWin, BibResId(FT_EDITION )),
- aBooktitleFT(&aControlParentWin, BibResId(FT_BOOKTITLE )),
- aVolumeFT(&aControlParentWin, BibResId(FT_VOLUME )),
- aHowpublishedFT(&aControlParentWin, BibResId(FT_HOWPUBLISHED )),
- aOrganizationsFT(&aControlParentWin,BibResId(FT_ORGANIZATION )),
- aInstitutionFT(&aControlParentWin, BibResId(FT_INSTITUTION )),
- aSchoolFT(&aControlParentWin, BibResId(FT_SCHOOL )),
- aReportTypeFT(&aControlParentWin, BibResId(FT_REPORT )),
- aMonthFT(&aControlParentWin, BibResId(FT_MONTH )),
- aSecondFL(&aControlParentWin, BibResId(FL_2 )),
- aJournalFT(&aControlParentWin, BibResId(FT_JOURNAL )),
- aNumberFT(&aControlParentWin, BibResId(FT_NUMBER )),
- aSeriesFT(&aControlParentWin, BibResId(FT_SERIES )),
- aAnnoteFT(&aControlParentWin, BibResId(FT_ANNOTE )),
- aNoteFT(&aControlParentWin, BibResId(FT_NOTE )),
- aURLFT(&aControlParentWin, BibResId(FT_URL )),
- aThirdFL(&aControlParentWin, BibResId(FL_3 )),
- aCustom1FT(&aControlParentWin, BibResId(FT_CUSTOM1 )),
- aCustom2FT(&aControlParentWin, BibResId(FT_CUSTOM2 )),
- aCustom3FT(&aControlParentWin, BibResId(FT_CUSTOM3 )),
- aCustom4FT(&aControlParentWin, BibResId(FT_CUSTOM4 )),
- aCustom5FT(&aControlParentWin, BibResId(FT_CUSTOM5 )),
- aHoriScroll(this, WB_HORZ),
- aVertScroll(this, WB_VERT),
- sErrorPrefix(BibResId(ST_ERROR_PREFIX)),
- pDatMan(pMan)
-{
- aControlParentWin.Show();
- aControlParentWin.SetHelpId(HID_BIB_CONTROL_PARENT);
- aStdSize = GetOutputSizePixel();
-
- aBibTypeArr[0] = String(BibResId(ST_TYPE_ARTICLE));
- aBibTypeArr[1] = String(BibResId(ST_TYPE_BOOK));
- aBibTypeArr[2] = String(BibResId(ST_TYPE_BOOKLET));
- aBibTypeArr[3] = String(BibResId(ST_TYPE_CONFERENCE));
- aBibTypeArr[4] = String(BibResId(ST_TYPE_INBOOK ));
- aBibTypeArr[5] = String(BibResId(ST_TYPE_INCOLLECTION));
- aBibTypeArr[6] = String(BibResId(ST_TYPE_INPROCEEDINGS));
- aBibTypeArr[7] = String(BibResId(ST_TYPE_JOURNAL ));
- aBibTypeArr[8] = String(BibResId(ST_TYPE_MANUAL ));
- aBibTypeArr[9] = String(BibResId(ST_TYPE_MASTERSTHESIS));
- aBibTypeArr[10] = String(BibResId(ST_TYPE_MISC ));
- aBibTypeArr[11] = String(BibResId(ST_TYPE_PHDTHESIS ));
- aBibTypeArr[12] = String(BibResId(ST_TYPE_PROCEEDINGS ));
- aBibTypeArr[13] = String(BibResId(ST_TYPE_TECHREPORT ));
- aBibTypeArr[14] = String(BibResId(ST_TYPE_UNPUBLISHED ));
- aBibTypeArr[15] = String(BibResId(ST_TYPE_EMAIL ));
- aBibTypeArr[16] = String(BibResId(ST_TYPE_WWW ));
- aBibTypeArr[17] = String(BibResId(ST_TYPE_CUSTOM1 ));
- aBibTypeArr[18] = String(BibResId(ST_TYPE_CUSTOM2 ));
- aBibTypeArr[19] = String(BibResId(ST_TYPE_CUSTOM3 ));
- aBibTypeArr[20] = String(BibResId(ST_TYPE_CUSTOM4 ));
- aBibTypeArr[21] = String(BibResId(ST_TYPE_CUSTOM5 ));
-
- FreeResource();
-
- InitFixedTexts();
-
- aBasePos = aIdentifierFT.GetPosPixel();
-
- sal_Int16* pMap = nFT2CtrlMap;
- for( sal_uInt16 i = 0 ; i < FIELD_COUNT ; ++i, ++pMap )
- {
- aControls[ i ] = 0;
- *pMap = -1;
- }
-
- AdjustScrollbars();
- Link aScrollLnk(LINK(this, BibGeneralPage, ScrollHdl));
- aHoriScroll.SetScrollHdl( aScrollLnk );
- aVertScroll.SetScrollHdl( aScrollLnk );
- aHoriScroll.SetLineSize(10);
- aVertScroll.SetLineSize(10);
- aHoriScroll.SetPageSize( aIdentifierFT.GetSizePixel().Width());
- aVertScroll.SetPageSize(
- aPublisherFT.GetPosPixel().Y() - aIdentifierFT.GetPosPixel().Y());
- aHoriScroll.Show();
- aVertScroll.Show();
-
- BibConfig* pBibConfig = BibModul::GetConfig();
- BibDBDescriptor aDesc;
- aDesc.sDataSource = pDatMan->getActiveDataSource();
- aDesc.sTableOrQuery = pDatMan->getActiveDataTable();
- aDesc.nCommandType = CommandType::TABLE;
- const Mapping* pMapping = pBibConfig->GetMapping(aDesc);
-
- xCtrlContnr = VCLUnoHelper::CreateControlContainer(&aControlParentWin);
-
- xMgr = comphelper::getProcessServiceFactory();
- // the control should be a bit smaller than the fixed text
- Size aControlSize(aIdentifierFT.GetSizePixel());
- aControlSize.Width() = aControlSize.Width() * 8 / 10;
-
- AddControlWithError( lcl_GetColumnName( pMapping, IDENTIFIER_POS ), lcl_MovePoint( aIdentifierFT ),
- aControlSize, sTableErrorString, aIdentifierFT.GetText(),
- HID_BIB_IDENTIFIER_POS, 0 );
-
- sTypeColumnName = lcl_GetColumnName(pMapping, AUTHORITYTYPE_POS);
-
- AddControlWithError( sTypeColumnName, lcl_MovePoint(aAuthTypeFT ), aControlSize, sTableErrorString,
- aAuthTypeFT.GetText(), HID_BIB_AUTHORITYTYPE_POS, 1 );
-
- ::Point aYearPos = lcl_MovePoint(aYearFT);
- AddControlWithError( lcl_GetColumnName( pMapping, YEAR_POS ), aYearPos,
- aControlSize, sTableErrorString, aYearFT.GetText(), HID_BIB_YEAR_POS, 4 );
-
- AddControlWithError( lcl_GetColumnName(pMapping, AUTHOR_POS), lcl_MovePoint(aAuthorFT),
- aControlSize, sTableErrorString, aAuthorFT.GetText(), HID_BIB_AUTHOR_POS, 2 );
-
- ::Point aTitlePos( lcl_MovePoint( aTitleFT ) );
- ::Size aTitleSize = aTitleFT.GetSizePixel();
- aTitleSize.Width() = aYearPos.X() + aControlSize.Width() - aTitlePos.X();
- AddControlWithError( lcl_GetColumnName(pMapping, TITLE_POS), aTitlePos, aTitleSize, sTableErrorString,
- aTitleFT.GetText(), HID_BIB_TITLE_POS, 22 );
-
- AddControlWithError( lcl_GetColumnName( pMapping, PUBLISHER_POS ), lcl_MovePoint( aPublisherFT),
- aControlSize, sTableErrorString, aPublisherFT.GetText(), HID_BIB_PUBLISHER_POS, 5 );
-
- AddControlWithError( lcl_GetColumnName( pMapping, ADDRESS_POS ), lcl_MovePoint( aAddressFT ),
- aControlSize, sTableErrorString, aAddressFT.GetText(), HID_BIB_ADDRESS_POS, 7 );
-
- AddControlWithError( lcl_GetColumnName( pMapping, ISBN_POS ), lcl_MovePoint( aISBNFT ),
- aControlSize, sTableErrorString, aISBNFT.GetText(), HID_BIB_ISBN_POS, 6 );
-
- AddControlWithError( lcl_GetColumnName( pMapping, CHAPTER_POS ), lcl_MovePoint(aChapterFT),
- aControlSize, sTableErrorString, aChapterFT.GetText(), HID_BIB_CHAPTER_POS, 10 );
-
- AddControlWithError( lcl_GetColumnName( pMapping, PAGES_POS ), lcl_MovePoint( aPagesFT ),
- aControlSize, sTableErrorString, aPagesFT.GetText(), HID_BIB_PAGES_POS, 19 );
-
- AddControlWithError( lcl_GetColumnName( pMapping, EDITOR_POS ), lcl_MovePoint( aEditorFT ),
- aControlSize, sTableErrorString, aEditorFT.GetText(), HID_BIB_EDITOR_POS, 12 );
-
- AddControlWithError( lcl_GetColumnName( pMapping, EDITION_POS ), lcl_MovePoint(aEditionFT),
- aControlSize, sTableErrorString, aEditionFT.GetText(), HID_BIB_EDITION_POS, 11 );
-
- AddControlWithError( lcl_GetColumnName(pMapping, BOOKTITLE_POS), lcl_MovePoint(aBooktitleFT),
- aControlSize, sTableErrorString, aBooktitleFT.GetText(), HID_BIB_BOOKTITLE_POS, 9 );
-
- AddControlWithError( lcl_GetColumnName( pMapping, VOLUME_POS ), lcl_MovePoint( aVolumeFT ),
- aControlSize, sTableErrorString, aVolumeFT.GetText(), HID_BIB_VOLUME_POS, 24 );
-
- AddControlWithError( lcl_GetColumnName( pMapping, HOWPUBLISHED_POS ), lcl_MovePoint( aHowpublishedFT ),
- aControlSize, sTableErrorString, aHowpublishedFT.GetText(), HID_BIB_HOWPUBLISHED_POS, 13 );
-
- AddControlWithError( lcl_GetColumnName( pMapping, ORGANIZATIONS_POS ), lcl_MovePoint( aOrganizationsFT ),
- aControlSize, sTableErrorString, aOrganizationsFT.GetText(), HID_BIB_ORGANIZATIONS_POS, 18 );
-
- AddControlWithError( lcl_GetColumnName( pMapping, INSTITUTION_POS ), lcl_MovePoint( aInstitutionFT ),
- aControlSize, sTableErrorString, aInstitutionFT.GetText(), HID_BIB_INSTITUTION_POS, 14 );
-
- AddControlWithError( lcl_GetColumnName( pMapping, SCHOOL_POS ), lcl_MovePoint( aSchoolFT ),
- aControlSize, sTableErrorString, aSchoolFT.GetText(), HID_BIB_SCHOOL_POS, 20 );
-
- AddControlWithError( lcl_GetColumnName( pMapping, REPORTTYPE_POS ), lcl_MovePoint( aReportTypeFT ),
- aControlSize, sTableErrorString, aReportTypeFT.GetText(), HID_BIB_REPORTTYPE_POS, 23 );
-
- AddControlWithError( lcl_GetColumnName( pMapping, MONTH_POS ), lcl_MovePoint( aMonthFT ),
- aControlSize, sTableErrorString, aMonthFT.GetText(), HID_BIB_MONTH_POS, 3 );
-
- AddControlWithError( lcl_GetColumnName( pMapping, JOURNAL_POS ), lcl_MovePoint( aJournalFT ),
- aControlSize, sTableErrorString, aJournalFT.GetText(), HID_BIB_JOURNAL_POS, 15 );
-
- AddControlWithError( lcl_GetColumnName( pMapping, NUMBER_POS ), lcl_MovePoint( aNumberFT ),
- aControlSize, sTableErrorString, aNumberFT.GetText(), HID_BIB_NUMBER_POS, 17 );
-
- AddControlWithError( lcl_GetColumnName( pMapping, SERIES_POS ), lcl_MovePoint( aSeriesFT ),
- aControlSize, sTableErrorString, aSeriesFT.GetText(), HID_BIB_SERIES_POS, 21 );
-
- AddControlWithError( lcl_GetColumnName( pMapping, ANNOTE_POS ), lcl_MovePoint( aAnnoteFT ),
- aControlSize, sTableErrorString, aAnnoteFT.GetText(), HID_BIB_ANNOTE_POS, 8 );
-
- AddControlWithError( lcl_GetColumnName( pMapping, NOTE_POS ), lcl_MovePoint( aNoteFT ),
- aControlSize, sTableErrorString, aNoteFT.GetText(), HID_BIB_NOTE_POS, 16 );
-
- AddControlWithError( lcl_GetColumnName( pMapping, URL_POS ), lcl_MovePoint( aURLFT ),
- aControlSize, sTableErrorString, aURLFT.GetText(), HID_BIB_URL_POS, 25 );
-
- AddControlWithError( lcl_GetColumnName( pMapping, CUSTOM1_POS ), lcl_MovePoint( aCustom1FT ),
- aControlSize, sTableErrorString, aCustom1FT.GetText(), HID_BIB_CUSTOM1_POS, 26 );
-
- AddControlWithError( lcl_GetColumnName( pMapping, CUSTOM2_POS ), lcl_MovePoint( aCustom2FT ),
- aControlSize, sTableErrorString, aCustom2FT.GetText(), HID_BIB_CUSTOM2_POS, 27 );
-
- AddControlWithError( lcl_GetColumnName( pMapping, CUSTOM3_POS ), lcl_MovePoint( aCustom3FT ),
- aControlSize, sTableErrorString, aCustom3FT.GetText(), HID_BIB_CUSTOM3_POS, 28 );
-
- AddControlWithError( lcl_GetColumnName( pMapping, CUSTOM4_POS ), lcl_MovePoint( aCustom4FT ),
- aControlSize, sTableErrorString, aCustom4FT.GetText(), HID_BIB_CUSTOM4_POS, 29 );
-
- AddControlWithError( lcl_GetColumnName( pMapping, CUSTOM5_POS ), lcl_MovePoint( aCustom5FT ),
- aControlSize, sTableErrorString, aCustom5FT.GetText(), HID_BIB_CUSTOM5_POS, 30 );
-
- xPosListener = new BibPosListener(this);
- uno::Reference< sdbc::XRowSet > xRowSet(pDatMan->getForm(), UNO_QUERY);
- if(xRowSet.is())
- xRowSet->addRowSetListener(xPosListener);
- uno::Reference< form::runtime::XFormController > xFormCtrl = pDatMan->GetFormController();
- xFormCtrl->setContainer(xCtrlContnr);
- xFormCtrl->activateTabOrder();
-
- if(sTableErrorString.Len())
- sTableErrorString.Insert(sErrorPrefix, 0);
-}
-//-----------------------------------------------------------------------------
-BibGeneralPage::~BibGeneralPage()
-{
- if (pDatMan && xPosListener.is())
- {
- uno::Reference< sdbc::XRowSet > xRowSet(pDatMan->getForm(), UNO_QUERY);
- if(xRowSet.is())
- xRowSet->removeRowSetListener(xPosListener);
- }
-}
-
-void BibGeneralPage::RemoveListeners()
-{
- for(sal_uInt16 i = 0; i < FIELD_COUNT; i++)
- {
- if(aControls[i].is())
- {
- uno::Reference< awt::XWindow > xCtrWin(aControls[i], uno::UNO_QUERY );
- xCtrWin->removeFocusListener( this );
- aControls[i] = 0;
- }
- }
-}
-
-void BibGeneralPage::CommitActiveControl()
-{
- uno::Reference< form::runtime::XFormController > xFormCtrl = pDatMan->GetFormController();
- uno::Reference< awt::XControl > xCurr = xFormCtrl->getCurrentControl();
- if(xCurr.is())
- {
- uno::Reference< awt::XControlModel > xModel = xCurr->getModel();
- uno::Reference< form::XBoundComponent > xBound(xModel, UNO_QUERY);
- if(xBound.is())
- xBound->commit();
- }
-}
-//-----------------------------------------------------------------------------
-void BibGeneralPage::AddControlWithError( const OUString& rColumnName, const ::Point& rPos, const ::Size& rSize,
- String& rErrorString, String aColumnUIName, const rtl::OString& sHelpId, sal_uInt16 nIndexInFTArray )
-{
- // adds also the XControl and creates a map entry in nFT2CtrlMap[] for mapping between control and FT
-
- sal_Int16 nIndex = -1;
- uno::Reference< awt::XControlModel > xTmp = AddXControl(rColumnName, rPos, rSize, sHelpId, nIndex );
- if( xTmp.is() )
- {
- DBG_ASSERT( nIndexInFTArray < FIELD_COUNT, "*BibGeneralPage::AddControlWithError(): wrong array index!" );
- DBG_ASSERT( nFT2CtrlMap[ nIndexInFTArray ] < 0, "+BibGeneralPage::AddControlWithError(): index already in use!" );
-
- nFT2CtrlMap[ nIndexInFTArray ] = nIndex;
- }
- else
- {
- if( rErrorString.Len() )
- rErrorString += '\n';
-
- rErrorString += MnemonicGenerator::EraseAllMnemonicChars( aColumnUIName );
- }
-}
-//-----------------------------------------------------------------------------
-uno::Reference< awt::XControlModel > BibGeneralPage::AddXControl(
- const String& rName,
- ::Point rPos, ::Size rSize, const rtl::OString& sHelpId, sal_Int16& rIndex )
-{
- uno::Reference< awt::XControlModel > xCtrModel;
- try
- {
- sal_Bool bTypeListBox = sTypeColumnName == rName;
- xCtrModel = pDatMan->loadControlModel(rName, bTypeListBox);
- if ( xCtrModel.is() && xMgr.is())
- {
- uno::Reference< beans::XPropertySet > xPropSet( xCtrModel, UNO_QUERY );
-
- if( xPropSet.is())
- {
- uno::Reference< beans::XPropertySetInfo > xPropInfo = xPropSet->getPropertySetInfo();
-
- uno::Any aAny = xPropSet->getPropertyValue( C2U("DefaultControl") );
- rtl::OUString aControlName;
- aAny >>= aControlName;
-
- rtl::OUString uProp(C2U("HelpURL"));
- if(xPropInfo->hasPropertyByName(uProp))
- {
- ::rtl::OUString sId = ::rtl::OUString::createFromAscii( INET_HID_SCHEME );
- DBG_ASSERT( INetURLObject( rtl::OStringToOUString( sHelpId, RTL_TEXTENCODING_UTF8 ) ).GetProtocol() == INET_PROT_NOT_VALID, "Wrong HelpId!" );
- sId += ::rtl::OUString( sHelpId, sHelpId.getLength(), RTL_TEXTENCODING_UTF8 );
- xPropSet->setPropertyValue( uProp, makeAny( sId ) );
- }
-
- if(bTypeListBox)
- {
- //uno::Reference< beans::XPropertySet > xPropSet(xControl, UNO_QUERY);
- aAny <<= (sal_Int16)1;
- xPropSet->setPropertyValue(C2U("BoundColumn"), aAny);
- ListSourceType eSet = ListSourceType_VALUELIST;
- aAny.setValue( &eSet, ::getCppuType((const ListSourceType*)0) );
- xPropSet->setPropertyValue(C2U("ListSourceType"), aAny);
-
- uno::Sequence<rtl::OUString> aListSource(TYPE_COUNT);
- rtl::OUString* pListSourceArr = aListSource.getArray();
- //pListSourceArr[0] = C2U("select TypeName, TypeIndex from TypeNms");
- for(sal_uInt16 i = 0; i < TYPE_COUNT; i++)
- pListSourceArr[i] = String::CreateFromInt32(i);
- aAny.setValue(&aListSource, ::getCppuType((uno::Sequence<rtl::OUString>*)0));
-
- xPropSet->setPropertyValue(C2U("ListSource"), aAny);
-
- uno::Sequence<rtl::OUString> aValues(TYPE_COUNT + 1);
- rtl::OUString* pValuesArr = aValues.getArray();
- for(sal_uInt16 j = 0; j < TYPE_COUNT; j++)
- pValuesArr[j] = aBibTypeArr[j];
- // empty string if an invalid value no values is set
- pValuesArr[TYPE_COUNT] = rtl::OUString();
-
- aAny.setValue(&aValues, ::getCppuType((uno::Sequence<rtl::OUString>*)0));
-
- xPropSet->setPropertyValue(C2U("StringItemList"), aAny);
-
- sal_Bool bTrue = sal_True;
- aAny.setValue( &bTrue, ::getBooleanCppuType() );
- xPropSet->setPropertyValue( C2U("Dropdown"), aAny );
-
- aControlName = C2U("com.sun.star.form.control.ListBox");
- xLBModel = Reference< form::XBoundComponent >(xCtrModel, UNO_QUERY);
-
- }
-
- uno::Reference< awt::XControl > xControl(xMgr->createInstance( aControlName ), UNO_QUERY );
- if ( xControl.is() )
- {
- xControl->setModel( xCtrModel);
-
- // Peer als Child zu dem FrameWindow
- xCtrlContnr->addControl(rName, xControl);
- uno::Reference< awt::XWindow > xCtrWin(xControl, UNO_QUERY );
- xCtrWin->addFocusListener( this );
- rIndex = -1; // -> implies, that not found
- for(sal_uInt16 i = 0; i < FIELD_COUNT; i++)
- if(!aControls[i].is())
- {
- aControls[i] = xCtrWin;
- rIndex = sal_Int16( i );
- break;
- }
- xCtrWin->setVisible( sal_True );
- xControl->setDesignMode( sal_True );
- // initially switch on the desing mode - switch it off _after_ loading the form
-
- xCtrWin->setPosSize(rPos.X(), rPos.Y(), rSize.Width(),
- rSize.Height(), awt::PosSize::POSSIZE);
- }
- }
- }
- }
- catch(Exception& rEx)
- {
- (void) rEx; // make compiler happy
- OSL_FAIL("BibGeneralPage::AddXControl: something went wrong !");
- }
- return xCtrModel;
-}
-
-void BibGeneralPage::AdjustScrollbars()
-{
- long nVertScrollWidth = aVertScroll.GetSizePixel().Width();
- long nHoriScrollHeight = aHoriScroll.GetSizePixel().Height();
- ::Size aOutSize(GetOutputSizePixel());
- sal_Bool bHoriVisible = aOutSize.Width() <= aStdSize.Width();
- sal_Bool bVertVisible = (aOutSize.Height()-(bHoriVisible ? nHoriScrollHeight : 0)) <= (aStdSize.Height());
- aHoriScroll.Show(bHoriVisible);
- aVertScroll.Show(bVertVisible);
-
- if(bHoriVisible)
- {
- ::Size aHoriSize(aOutSize.Width() - (bVertVisible ? nVertScrollWidth : 0),
- nHoriScrollHeight);
- aHoriScroll.SetSizePixel(aHoriSize);
- aHoriScroll.SetRange( Range(0, aStdSize.Width()));
- aHoriScroll.SetVisibleSize( aHoriSize.Width() - (bVertVisible ? nVertScrollWidth : 0));
- }
- if(bVertVisible)
- {
- ::Size aVertSize(nHoriScrollHeight, aOutSize.Height() -
- (bHoriVisible ? nHoriScrollHeight : 0));
- aVertScroll.SetSizePixel(aVertSize);
- aVertScroll.SetRange( Range(0, aStdSize.Height()));
- aVertScroll.SetVisibleSize( aVertSize.Height() );
- }
-
- ::Size aSize(8, 8);
- aSize = LogicToPixel(aSize, MapMode(MAP_APPFONT));
- ::Size aScrollSize(aOutSize.Width() - aSize.Height(), aSize.Height());
- ::Point aScrollPos(0, aOutSize.Height() - aSize.Height());
- aHoriScroll.SetPosSizePixel(aScrollPos, aScrollSize);
-
- aScrollPos.X() = aOutSize.Width() - aSize.Width();
- aScrollPos.Y() = 0;
- aScrollSize.Width() = aSize.Width();
- aScrollSize.Height() = aOutSize.Height() - aSize.Height();
- aVertScroll.SetPosSizePixel(aScrollPos, aScrollSize);
-
- ::Size aControlParentWinSz(aOutSize);
- if(bHoriVisible)
- aControlParentWinSz.Height() -= aSize.Height();
- if(bVertVisible)
- aControlParentWinSz.Width() -= aSize.Width();
- aControlParentWin.SetSizePixel(aControlParentWinSz);
-}
-
-void BibGeneralPage::Resize()
-{
- AdjustScrollbars();
- ScrollHdl(&aVertScroll);
- ScrollHdl(&aHoriScroll);
- Window::Resize();
-}
-
-void BibGeneralPage::InitFixedTexts( void )
-{
- String aFixedStrings[ FIELD_COUNT ] =
- {
- String( BibResId( ST_IDENTIFIER ) ),
- String( BibResId( ST_AUTHTYPE ) ),
- String( BibResId( ST_AUTHOR ) ),
- String( BibResId( ST_TITLE ) ),
- String( BibResId( ST_MONTH ) ),
- String( BibResId( ST_YEAR ) ),
- String( BibResId( ST_ISBN ) ),
- String( BibResId( ST_BOOKTITLE ) ),
- String( BibResId( ST_CHAPTER ) ),
- String( BibResId( ST_EDITION ) ),
- String( BibResId( ST_EDITOR ) ),
- String( BibResId( ST_HOWPUBLISHED ) ),
- String( BibResId( ST_INSTITUTION ) ),
- String( BibResId( ST_JOURNAL ) ),
- String( BibResId( ST_NOTE ) ),
- String( BibResId( ST_ANNOTE ) ),
- String( BibResId( ST_NUMBER ) ),
- String( BibResId( ST_ORGANIZATION ) ),
- String( BibResId( ST_PAGE ) ),
- String( BibResId( ST_PUBLISHER ) ),
- String( BibResId( ST_ADDRESS ) ),
- String( BibResId( ST_SCHOOL ) ),
- String( BibResId( ST_SERIES ) ),
- String( BibResId( ST_REPORT ) ),
- String( BibResId( ST_VOLUME ) ),
- String( BibResId( ST_URL ) ),
- String( BibResId( ST_CUSTOM1 ) ),
- String( BibResId( ST_CUSTOM2 ) ),
- String( BibResId( ST_CUSTOM3 ) ),
- String( BibResId( ST_CUSTOM4 ) ),
- String( BibResId( ST_CUSTOM5 ) )
- };
-
- aFixedTexts[0] = &aIdentifierFT;
- aFixedTexts[1] = &aAuthTypeFT;
- aFixedTexts[2] = &aAuthorFT;
- aFixedTexts[3] = &aTitleFT;
- aFixedTexts[4] = &aMonthFT;
- aFixedTexts[5] = &aYearFT;
- aFixedTexts[6] = &aISBNFT;
- aFixedTexts[7] = &aBooktitleFT;
- aFixedTexts[8] = &aChapterFT;
- aFixedTexts[9] = &aEditionFT;
- aFixedTexts[10] = &aEditorFT;
- aFixedTexts[11] = &aHowpublishedFT;
- aFixedTexts[12] = &aInstitutionFT;
- aFixedTexts[13] = &aJournalFT;
- aFixedTexts[14] = &aNoteFT;
- aFixedTexts[15] = &aAnnoteFT;
- aFixedTexts[16] = &aNumberFT;
- aFixedTexts[17] = &aOrganizationsFT;
- aFixedTexts[18] = &aPagesFT;
- aFixedTexts[19] = &aPublisherFT;
- aFixedTexts[20] = &aAddressFT;
- aFixedTexts[21] = &aSchoolFT;
- aFixedTexts[22] = &aSeriesFT;
- aFixedTexts[23] = &aReportTypeFT;
- aFixedTexts[24] = &aVolumeFT;
- aFixedTexts[25] = &aURLFT;
- aFixedTexts[26] = &aCustom1FT;
- aFixedTexts[27] = &aCustom2FT;
- aFixedTexts[28] = &aCustom3FT;
- aFixedTexts[29] = &aCustom4FT;
- aFixedTexts[30] = &aCustom5FT;
-
- int i;
-
- MnemonicGenerator aMnemonicGenerator;
- // init mnemonics, first register all strings
- for( i = 0 ; i < FIELD_COUNT ; ++i )
- aMnemonicGenerator.RegisterMnemonic( aFixedStrings[ i ] );
-
- // ... then get all strings
- for( i = 0 ; i < FIELD_COUNT ; ++i )
- aMnemonicGenerator.CreateMnemonic( aFixedStrings[ i ] );
-
- // set texts
- for( i = 0 ; i < FIELD_COUNT ; ++i )
- aFixedTexts[ i ]->SetText( aFixedStrings[ i ] );
-}
-
-IMPL_LINK(BibGeneralPage, ScrollHdl, ScrollBar*, pScroll)
-{
- sal_Bool bVertical = &aVertScroll == pScroll;
- long nOffset = 0;
- long nCurrentOffset = 0;
- if(bVertical)
- nCurrentOffset = aFixedTexts[0]->GetPosPixel().Y() - aBasePos.Y();
- else
- nCurrentOffset = aFixedTexts[0]->GetPosPixel().X() - aBasePos.X();
- nOffset = pScroll->IsVisible() ? pScroll->GetThumbPos() + nCurrentOffset : nCurrentOffset;;
-
- for(sal_uInt16 i = 0; i < FIELD_COUNT; i++)
- {
- ::Point aPos = aFixedTexts[i]->GetPosPixel();
- if(bVertical)
- aPos.Y() -= nOffset;
- else
- aPos.X() -= nOffset;
- aFixedTexts[i]->SetPosPixel(aPos);
- if(aControls[i].is())
- {
- awt::Rectangle aRect = aControls[i]->getPosSize();
- long nX = aRect.X;
- long nY = aRect.Y;
- if(bVertical)
- nY -= nOffset;
- else
- nX -= nOffset;
- aControls[i]->setPosSize(nX, nY, 0, 0, awt::PosSize::POS);
- }
- }
- return 0;
-}
-
-void BibGeneralPage::focusGained(const awt::FocusEvent& rEvent) throw( uno::RuntimeException )
-{
- Reference<awt::XWindow> xCtrWin(rEvent.Source, UNO_QUERY );
- if(xCtrWin.is())
- {
- ::Size aOutSize = aControlParentWin.GetOutputSizePixel();
- awt::Rectangle aRect = xCtrWin->getPosSize();
- long nX = aRect.X;
- if(nX < 0)
- {
- // left of the visible area
- aHoriScroll.SetThumbPos(aHoriScroll.GetThumbPos() + nX);
- ScrollHdl(&aHoriScroll);
- }
- else if(nX > aOutSize.Width())
- {
- // right of the visible area
- aHoriScroll.SetThumbPos(aHoriScroll.GetThumbPos() + nX - aOutSize.Width() + aFixedTexts[0]->GetSizePixel().Width());
- ScrollHdl(&aHoriScroll);
- }
- long nY = aRect.Y;
- if(nY < 0)
- {
- // below the visible area
- aVertScroll.SetThumbPos(aVertScroll.GetThumbPos() + nY);
- ScrollHdl(&aVertScroll);
- }
- else if(nY > aOutSize.Height())
- {
- // over the visible area
- aVertScroll.SetThumbPos(aVertScroll.GetThumbPos() + nY - aOutSize.Height()+ aFixedTexts[0]->GetSizePixel().Height());
- ScrollHdl(&aVertScroll);
- }
- }
-}
-
-void BibGeneralPage::focusLost(const awt::FocusEvent& ) throw( uno::RuntimeException )
-{
- CommitActiveControl();
-}
-
-void BibGeneralPage::disposing(const lang::EventObject& /*Source*/) throw( uno::RuntimeException )
-{
-}
-
-void BibGeneralPage::GetFocus()
-{
- Reference< awt::XWindow >* pxControl = aControls;
-
- for( int i = FIELD_COUNT ; i ; --i, ++pxControl )
- {
- if( pxControl->is() )
- {
- ( *pxControl )->setFocus();
- return;
- }
- }
-
- // fallback
- aControlParentWin.GrabFocus();
-}
-
-sal_Bool BibGeneralPage::HandleShortCutKey( const KeyEvent& rKeyEvent )
-{
- DBG_ASSERT( KEY_MOD2 == rKeyEvent.GetKeyCode().GetModifier(), "+BibGeneralPage::HandleShortCutKey(): this is not for me!" );
-
- const vcl::I18nHelper& rI18nHelper = Application::GetSettings().GetUILocaleI18nHelper();
- const xub_Unicode c = rKeyEvent.GetCharCode();
- sal_Bool bHandled = sal_False;
-
- sal_Int16 i;
-
- typedef std::vector< sal_Int16 > sal_Int16_vector;
-
- sal_Int16_vector::size_type nFocused = 0xFFFF; // index of focused in vector, no one focused initial
- DBG_ASSERT( nFocused > 0, "*BibGeneralPage::HandleShortCutKey(): size_type works not as expected!" );
-
- sal_Int16_vector aMatchList;
-
- for( i = 0 ; i < FIELD_COUNT ; ++i )
- {
- if( rI18nHelper.MatchMnemonic( aFixedTexts[ i ]->GetText(), c ) )
- {
- bHandled = sal_True;
- sal_Int16 nCtrlIndex = nFT2CtrlMap[ i ];
-
- if( nCtrlIndex >= 0 )
- { // store index of control
- DBG_ASSERT( aControls[ nCtrlIndex ].is(), "-BibGeneralPage::HandleShortCutKey(): valid index and no control?" );
-
- uno::Reference< awt::XControl > xControl( aControls[ nCtrlIndex ], UNO_QUERY );
- DBG_ASSERT( xControl.is(), "-BibGeneralPage::HandleShortCutKey(): a control wich is not a control!" );
-
- Window* pWindow = VCLUnoHelper::GetWindow( xControl->getPeer() );
-
- if( pWindow )
- {
- aMatchList.push_back( nCtrlIndex );
- if( pWindow->HasChildPathFocus() )
- { // save focused control
- DBG_ASSERT( nFocused == 0xFFFF, "+BibGeneralPage::HandleShortCutKey(): more than one with focus?!" );
- DBG_ASSERT( !aMatchList.empty(), "+BibGeneralPage::HandleShortCutKey(): push_back and no content?!" );
- nFocused = aMatchList.size() - 1;
- }
- }
- }
- }
- }
-
- if( bHandled )
- {
- DBG_ASSERT( !aMatchList.empty(), "*BibGeneralPage::HandleShortCutKey(): be prepared to crash..." );
-
- if( nFocused >= ( aMatchList.size() - 1 ) )
- // >=... includes 0xFFFF
- // no one or last focused, take first
- nFocused = 0;
- else
- // take next one
- nFocused++;
-
- aControls[ aMatchList[ nFocused ] ]->setFocus();
- }
-
- return bHandled;
-}
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */