summaryrefslogtreecommitdiff
path: root/extensions/source/dbpilots/gridwizard.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'extensions/source/dbpilots/gridwizard.cxx')
-rw-r--r--extensions/source/dbpilots/gridwizard.cxx487
1 files changed, 0 insertions, 487 deletions
diff --git a/extensions/source/dbpilots/gridwizard.cxx b/extensions/source/dbpilots/gridwizard.cxx
deleted file mode 100644
index 93e433cea..000000000
--- a/extensions/source/dbpilots/gridwizard.cxx
+++ /dev/null
@@ -1,487 +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 "gridwizard.hxx"
-#include <com/sun/star/sdbcx/XColumnsSupplier.hpp>
-#include <com/sun/star/sdbc/DataType.hpp>
-#include <comphelper/stl_types.hxx>
-#include <tools/string.hxx>
-#include <com/sun/star/form/XGridColumnFactory.hpp>
-#include <com/sun/star/awt/MouseWheelBehavior.hpp>
-#include <com/sun/star/container/XNameContainer.hpp>
-#include <tools/debug.hxx>
-#include "dbptools.hxx"
-#include "dbpilots.hrc"
-
-#define GW_STATE_DATASOURCE_SELECTION 0
-#define GW_STATE_FIELDSELECTION 1
-
-//.........................................................................
-namespace dbp
-{
-//.........................................................................
-
- using namespace ::com::sun::star::uno;
- using namespace ::com::sun::star::lang;
- using namespace ::com::sun::star::beans;
- using namespace ::com::sun::star::sdbc;
- using namespace ::com::sun::star::container;
- using namespace ::com::sun::star::form;
- using namespace ::com::sun::star::awt;
- using namespace ::svt;
-
- //=====================================================================
- //= OGridWizard
- //=====================================================================
- //---------------------------------------------------------------------
- OGridWizard::OGridWizard( Window* _pParent,
- const Reference< XPropertySet >& _rxObjectModel, const Reference< XMultiServiceFactory >& _rxORB )
- :OControlWizard(_pParent, ModuleRes(RID_DLG_GRIDWIZARD), _rxObjectModel, _rxORB)
- ,m_bHadDataSelection(sal_True)
- {
- initControlSettings(&m_aSettings);
-
- m_pPrevPage->SetHelpId(HID_GRIDWIZARD_PREVIOUS);
- m_pNextPage->SetHelpId(HID_GRIDWIZARD_NEXT);
- m_pCancel->SetHelpId(HID_GRIDWIZARD_CANCEL);
- m_pFinish->SetHelpId(HID_GRIDWIZARD_FINISH);
-
- // if we do not need the data source selection page ...
- if (!needDatasourceSelection())
- { // ... skip it!
- skip(1);
- m_bHadDataSelection = sal_False;
- }
- }
-
- //---------------------------------------------------------------------
- sal_Bool OGridWizard::approveControl(sal_Int16 _nClassId)
- {
- if (FormComponentType::GRIDCONTROL != _nClassId)
- return sal_False;
-
- Reference< XGridColumnFactory > xColumnFactory(getContext().xObjectModel, UNO_QUERY);
- if (!xColumnFactory.is())
- return sal_False;
-
- return sal_True;
- }
-
- //---------------------------------------------------------------------
- void OGridWizard::implApplySettings()
- {
- const OControlWizardContext& rContext = getContext();
-
- // the factory for the columns
- Reference< XGridColumnFactory > xColumnFactory(rContext.xObjectModel, UNO_QUERY);
- DBG_ASSERT(xColumnFactory.is(), "OGridWizard::implApplySettings: should never have made it 'til here!");
- // (if we're here, what the hell happened in approveControl??)
-
- // the container for the columns
- Reference< XNameContainer > xColumnContainer(rContext.xObjectModel, UNO_QUERY);
- DBG_ASSERT(xColumnContainer.is(), "OGridWizard::implApplySettings: no container!");
-
- if (!xColumnFactory.is() || !xColumnContainer.is())
- return;
-
- static const ::rtl::OUString s_sDataFieldProperty (RTL_CONSTASCII_USTRINGPARAM("DataField"));
- static const ::rtl::OUString s_sLabelProperty (RTL_CONSTASCII_USTRINGPARAM("Label"));
- static const ::rtl::OUString s_sWidthProperty (RTL_CONSTASCII_USTRINGPARAM("Width"));
- static const ::rtl::OUString s_sMouseWheelBehavior (RTL_CONSTASCII_USTRINGPARAM("MouseWheelBehavior"));
- static const ::rtl::OUString s_sEmptyString;
-
- // collect "descriptors" for the to-be-created (grid)columns
- DECLARE_STL_VECTOR( ::rtl::OUString, OUStringArray );
- OUStringArray aColumnServiceNames; // service names to be used with the XGridColumnFactory
- OUStringArray aColumnLabelPostfixes; // postfixes to append to the column labels
- OUStringArray aFormFieldNames; // data field names
-
- aColumnServiceNames.reserve(getSettings().aSelectedFields.getLength());
- aColumnLabelPostfixes.reserve(getSettings().aSelectedFields.getLength());
- aFormFieldNames.reserve(getSettings().aSelectedFields.getLength());
-
- // loop through the selected field names
- const ::rtl::OUString* pSelectedFields = getSettings().aSelectedFields.getConstArray();
- const ::rtl::OUString* pEnd = pSelectedFields + getSettings().aSelectedFields.getLength();
- for (;pSelectedFields < pEnd; ++pSelectedFields)
- {
- // get the information for the selected column
- sal_Int32 nFieldType = DataType::OTHER;
- OControlWizardContext::TNameTypeMap::const_iterator aFind = rContext.aTypes.find(*pSelectedFields);
- if ( aFind != rContext.aTypes.end() )
- nFieldType = aFind->second;
-
- aFormFieldNames.push_back(*pSelectedFields);
- switch (nFieldType)
- {
- case DataType::BIT:
- case DataType::BOOLEAN:
- aColumnServiceNames.push_back(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("CheckBox")));
- aColumnLabelPostfixes.push_back(s_sEmptyString);
- break;
-
- case DataType::TINYINT:
- case DataType::SMALLINT:
- case DataType::INTEGER:
- aColumnServiceNames.push_back(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("NumericField")));
- aColumnLabelPostfixes.push_back(s_sEmptyString);
- break;
-
- case DataType::FLOAT:
- case DataType::REAL:
- case DataType::DOUBLE:
- case DataType::NUMERIC:
- case DataType::DECIMAL:
- aColumnServiceNames.push_back(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("FormattedField")));
- aColumnLabelPostfixes.push_back(s_sEmptyString);
- break;
-
- case DataType::DATE:
- aColumnServiceNames.push_back(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("DateField")));
- aColumnLabelPostfixes.push_back(s_sEmptyString);
- break;
-
- case DataType::TIME:
- aColumnServiceNames.push_back(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("TimeField")));
- aColumnLabelPostfixes.push_back(s_sEmptyString);
- break;
-
- case DataType::TIMESTAMP:
- aColumnServiceNames.push_back(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("DateField")));
- aColumnLabelPostfixes.push_back(String(ModuleRes(RID_STR_DATEPOSTFIX)));
-
- aFormFieldNames.push_back(*pSelectedFields);
- aColumnServiceNames.push_back(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("TimeField")));
- aColumnLabelPostfixes.push_back(String(ModuleRes(RID_STR_TIMEPOSTFIX)));
- break;
-
- default:
- aColumnServiceNames.push_back(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("TextField")));
- aColumnLabelPostfixes.push_back(s_sEmptyString);
- }
- }
-
- DBG_ASSERT( aFormFieldNames.size() == aColumnServiceNames.size()
- && aColumnServiceNames.size() == aColumnLabelPostfixes.size(),
- "OGridWizard::implApplySettings: inconsistent descriptor sequences!");
-
- // now loop through the descriptions and create the (grid)columns out of th descriptors
- {
- Reference< XNameAccess > xExistenceChecker(xColumnContainer.get());
-
- ConstOUStringArrayIterator pColumnServiceName = aColumnServiceNames.begin();
- ConstOUStringArrayIterator pColumnLabelPostfix = aColumnLabelPostfixes.begin();
- ConstOUStringArrayIterator pFormFieldName = aFormFieldNames.begin();
- ConstOUStringArrayIterator pColumnServiceNameEnd = aColumnServiceNames.end();
-
- for (;pColumnServiceName < pColumnServiceNameEnd; ++pColumnServiceName, ++pColumnLabelPostfix, ++pFormFieldName)
- {
- // create a (grid)column for the (resultset)column
- try
- {
- Reference< XPropertySet > xColumn( xColumnFactory->createColumn(*pColumnServiceName), UNO_SET_THROW );
- Reference< XPropertySetInfo > xColumnPSI( xColumn->getPropertySetInfo(), UNO_SET_THROW );
-
- ::rtl::OUString sColumnName(*pColumnServiceName);
- disambiguateName(xExistenceChecker, sColumnName);
-
- // the data field the column should be bound to
- xColumn->setPropertyValue(s_sDataFieldProperty, makeAny(*pFormFieldName));
- // the label
- xColumn->setPropertyValue(s_sLabelProperty, makeAny(::rtl::OUString(*pFormFieldName) += *pColumnLabelPostfix));
- // the width (<void/> => column will be auto-sized)
- xColumn->setPropertyValue(s_sWidthProperty, Any());
-
- if ( xColumnPSI->hasPropertyByName( s_sMouseWheelBehavior ) )
- xColumn->setPropertyValue( s_sMouseWheelBehavior, makeAny( MouseWheelBehavior::SCROLL_DISABLED ) );
-
- // insert the column
- xColumnContainer->insertByName(sColumnName, makeAny(xColumn));
- }
- catch(Exception&)
- {
- OSL_FAIL( ( ::rtl::OString("OGridWizard::implApplySettings: unexpected exception while creating the grid column for field ")
- += ::rtl::OString(pFormFieldName->getStr(), pFormFieldName->getLength(), gsl_getSystemTextEncoding())
- += ::rtl::OString("!") ).getStr() );
- }
- }
- }
- }
-
- //---------------------------------------------------------------------
- OWizardPage* OGridWizard::createPage(WizardState _nState)
- {
- switch (_nState)
- {
- case GW_STATE_DATASOURCE_SELECTION:
- return new OTableSelectionPage(this);
- case GW_STATE_FIELDSELECTION:
- return new OGridFieldsSelection(this);
- }
-
- return NULL;
- }
-
- //---------------------------------------------------------------------
- WizardTypes::WizardState OGridWizard::determineNextState( WizardState _nCurrentState ) const
- {
- switch (_nCurrentState)
- {
- case GW_STATE_DATASOURCE_SELECTION:
- return GW_STATE_FIELDSELECTION;
- case GW_STATE_FIELDSELECTION:
- return WZS_INVALID_STATE;
- }
-
- return WZS_INVALID_STATE;
- }
-
- //---------------------------------------------------------------------
- void OGridWizard::enterState(WizardState _nState)
- {
- OControlWizard::enterState(_nState);
-
- enableButtons(WZB_PREVIOUS, m_bHadDataSelection ? (GW_STATE_DATASOURCE_SELECTION < _nState) : GW_STATE_FIELDSELECTION < _nState);
- enableButtons(WZB_NEXT, GW_STATE_FIELDSELECTION != _nState);
- if (_nState < GW_STATE_FIELDSELECTION)
- enableButtons(WZB_FINISH, sal_False);
-
- if (GW_STATE_FIELDSELECTION == _nState)
- defaultButton(WZB_FINISH);
- }
-
- //---------------------------------------------------------------------
- sal_Bool OGridWizard::leaveState(WizardState _nState)
- {
- if (!OControlWizard::leaveState(_nState))
- return sal_False;
-
- if (GW_STATE_FIELDSELECTION == _nState)
- defaultButton(WZB_NEXT);
-
- return sal_True;
- }
-
- //---------------------------------------------------------------------
- sal_Bool OGridWizard::onFinish()
- {
- if ( !OControlWizard::onFinish() )
- return sal_False;
-
- implApplySettings();
-
- return sal_True;
- }
-
- //=====================================================================
- //= OGridFieldsSelection
- //=====================================================================
- //---------------------------------------------------------------------
- OGridFieldsSelection::OGridFieldsSelection( OGridWizard* _pParent )
- :OGridPage(_pParent, ModuleRes(RID_PAGE_GW_FIELDSELECTION))
- ,m_aFrame (this, ModuleRes(FL_FRAME))
- ,m_aExistFieldsLabel (this, ModuleRes(FT_EXISTING_FIELDS))
- ,m_aExistFields (this, ModuleRes(LB_EXISTING_FIELDS))
- ,m_aSelectOne (this, ModuleRes(PB_FIELDRIGHT))
- ,m_aSelectAll (this, ModuleRes(PB_ALLFIELDSRIGHT))
- ,m_aDeselectOne (this, ModuleRes(PB_FIELDLEFT))
- ,m_aDeselectAll (this, ModuleRes(PB_ALLFIELDSLEFT))
- ,m_aSelFieldsLabel (this, ModuleRes(FT_SELECTED_FIELDS))
- ,m_aSelFields (this, ModuleRes(LB_SELECTED_FIELDS))
- {
- FreeResource();
-
- enableFormDatasourceDisplay();
-
- m_aSelectOne.SetClickHdl(LINK(this, OGridFieldsSelection, OnMoveOneEntry));
- m_aSelectAll.SetClickHdl(LINK(this, OGridFieldsSelection, OnMoveAllEntries));
- m_aDeselectOne.SetClickHdl(LINK(this, OGridFieldsSelection, OnMoveOneEntry));
- m_aDeselectAll.SetClickHdl(LINK(this, OGridFieldsSelection, OnMoveAllEntries));
-
- m_aExistFields.SetSelectHdl(LINK(this, OGridFieldsSelection, OnEntrySelected));
- m_aSelFields.SetSelectHdl(LINK(this, OGridFieldsSelection, OnEntrySelected));
- m_aExistFields.SetDoubleClickHdl(LINK(this, OGridFieldsSelection, OnEntryDoubleClicked));
- m_aSelFields.SetDoubleClickHdl(LINK(this, OGridFieldsSelection, OnEntryDoubleClicked));
- }
-
- //---------------------------------------------------------------------
- void OGridFieldsSelection::ActivatePage()
- {
- OGridPage::ActivatePage();
- m_aExistFields.GrabFocus();
- }
-
- //---------------------------------------------------------------------
- bool OGridFieldsSelection::canAdvance() const
- {
- return false;
- // we're the last page in our wizard
- }
-
- //---------------------------------------------------------------------
- void OGridFieldsSelection::initializePage()
- {
- OGridPage::initializePage();
-
- const OControlWizardContext& rContext = getContext();
- fillListBox(m_aExistFields, rContext.aFieldNames);
-
- m_aSelFields.Clear();
- const OGridSettings& rSettings = getSettings();
- const ::rtl::OUString* pSelected = rSettings.aSelectedFields.getConstArray();
- const ::rtl::OUString* pEnd = pSelected + rSettings.aSelectedFields.getLength();
- for (; pSelected < pEnd; ++pSelected)
- {
- m_aSelFields.InsertEntry(*pSelected);
- m_aExistFields.RemoveEntry(*pSelected);
- }
-
- implCheckButtons();
- }
-
- //---------------------------------------------------------------------
- sal_Bool OGridFieldsSelection::commitPage( ::svt::WizardTypes::CommitPageReason _eReason )
- {
- if (!OGridPage::commitPage(_eReason))
- return sal_False;
-
- OGridSettings& rSettings = getSettings();
- sal_uInt16 nSelected = m_aSelFields.GetEntryCount();
-
- rSettings.aSelectedFields.realloc(nSelected);
- ::rtl::OUString* pSelected = rSettings.aSelectedFields.getArray();
-
- for (sal_uInt16 i=0; i<nSelected; ++i, ++pSelected)
- *pSelected = m_aSelFields.GetEntry(i);
-
- return sal_True;
- }
-
- //---------------------------------------------------------------------
- void OGridFieldsSelection::implCheckButtons()
- {
- m_aSelectOne.Enable(m_aExistFields.GetSelectEntryCount() != 0);
- m_aSelectAll.Enable(m_aExistFields.GetEntryCount() != 0);
-
- m_aDeselectOne.Enable(m_aSelFields.GetSelectEntryCount() != 0);
- m_aDeselectAll.Enable(m_aSelFields.GetEntryCount() != 0);
-
- getDialog()->enableButtons(WZB_FINISH, 0 != m_aSelFields.GetEntryCount());
- }
-
- //---------------------------------------------------------------------
- IMPL_LINK(OGridFieldsSelection, OnEntryDoubleClicked, ListBox*, _pList)
- {
- PushButton* pSimulateButton = &m_aExistFields == _pList ? &m_aSelectOne : &m_aDeselectOne;
- if (pSimulateButton->IsEnabled())
- return OnMoveOneEntry( pSimulateButton );
- else
- return 1L;
- }
-
- //---------------------------------------------------------------------
- IMPL_LINK(OGridFieldsSelection, OnEntrySelected, ListBox*, /*NOTINTERESTEDIN*/)
- {
- implCheckButtons();
- return 0L;
- }
-
- //---------------------------------------------------------------------
- IMPL_LINK(OGridFieldsSelection, OnMoveOneEntry, PushButton*, _pButton)
- {
- sal_Bool bMoveRight = (&m_aSelectOne == _pButton);
- ListBox& rMoveTo = bMoveRight ? m_aSelFields : m_aExistFields;
-
- // the index of the selected entry
- sal_uInt16 nSelected = bMoveRight ? m_aExistFields.GetSelectEntryPos() : m_aSelFields.GetSelectEntryPos();
- // the (original) relative position of the entry
- sal_IntPtr nRelativeIndex = reinterpret_cast<sal_IntPtr>(bMoveRight ? m_aExistFields.GetEntryData(nSelected) : m_aSelFields.GetEntryData(nSelected));
-
- sal_uInt16 nInsertPos = LISTBOX_APPEND;
- if (!bMoveRight)
- { // need to determine an insert pos which reflects the original
- nInsertPos = 0;
- while (nInsertPos < rMoveTo.GetEntryCount())
- {
- if (reinterpret_cast<sal_IntPtr>(rMoveTo.GetEntryData(nInsertPos)) > nRelativeIndex)
- break;
- ++nInsertPos;
- }
- }
-
- // the text of the entry to move
- String sMovingEntry = bMoveRight ? m_aExistFields.GetEntry(nSelected) : m_aSelFields.GetEntry(nSelected);
-
- // insert the entry
- nInsertPos = rMoveTo.InsertEntry(sMovingEntry, nInsertPos);
- // preserve it's "relative position" entry data
- rMoveTo.SetEntryData(nInsertPos, reinterpret_cast<void*>(nRelativeIndex));
-
- // remove the entry from it's old list
- if (bMoveRight)
- {
- sal_uInt16 nSelectPos = m_aExistFields.GetSelectEntryPos();
- m_aExistFields.RemoveEntry(nSelected);
- if ((LISTBOX_ENTRY_NOTFOUND != nSelectPos) && (nSelectPos < m_aExistFields.GetEntryCount()))
- m_aExistFields.SelectEntryPos(nSelectPos);
-
- m_aExistFields.GrabFocus();
- }
- else
- {
- sal_uInt16 nSelectPos = m_aSelFields.GetSelectEntryPos();
- m_aSelFields.RemoveEntry(nSelected);
- if ((LISTBOX_ENTRY_NOTFOUND != nSelectPos) && (nSelectPos < m_aSelFields.GetEntryCount()))
- m_aSelFields.SelectEntryPos(nSelectPos);
-
- m_aSelFields.GrabFocus();
- }
-
- implCheckButtons();
- return 0;
- }
-
- //---------------------------------------------------------------------
- IMPL_LINK(OGridFieldsSelection, OnMoveAllEntries, PushButton*, _pButton)
- {
- sal_Bool bMoveRight = (&m_aSelectAll == _pButton);
- m_aExistFields.Clear();
- m_aSelFields.Clear();
- fillListBox(bMoveRight ? m_aSelFields : m_aExistFields, getContext().aFieldNames);
-
- implCheckButtons();
- return 0;
- }
-
-//.........................................................................
-} // namespace dbp
-//.........................................................................
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */