summaryrefslogtreecommitdiff
path: root/extensions/source/dbpilots/listcombowizard.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'extensions/source/dbpilots/listcombowizard.cxx')
-rw-r--r--extensions/source/dbpilots/listcombowizard.cxx564
1 files changed, 0 insertions, 564 deletions
diff --git a/extensions/source/dbpilots/listcombowizard.cxx b/extensions/source/dbpilots/listcombowizard.cxx
deleted file mode 100644
index 7d27faf1d..000000000
--- a/extensions/source/dbpilots/listcombowizard.cxx
+++ /dev/null
@@ -1,564 +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 "listcombowizard.hxx"
-#include "commonpagesdbp.hxx"
-#include <com/sun/star/sdbc/XConnection.hpp>
-#include <com/sun/star/sdbcx/XTablesSupplier.hpp>
-#include <com/sun/star/container/XNameAccess.hpp>
-#include <com/sun/star/form/ListSourceType.hpp>
-#include <com/sun/star/sdbcx/XColumnsSupplier.hpp>
-#include <tools/debug.hxx>
-#include <vcl/msgbox.hxx>
-#include <connectivity/dbtools.hxx>
-#include "dbpilots.hrc"
-#include <comphelper/extract.hxx>
-
-//.........................................................................
-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::sdbcx;
- using namespace ::com::sun::star::container;
- using namespace ::com::sun::star::form;
- using namespace ::svt;
- using namespace ::dbtools;
-
- //=====================================================================
- //= OListComboWizard
- //=====================================================================
- //---------------------------------------------------------------------
- OListComboWizard::OListComboWizard( Window* _pParent,
- const Reference< XPropertySet >& _rxObjectModel, const Reference< XMultiServiceFactory >& _rxORB )
- :OControlWizard(_pParent, ModuleRes(RID_DLG_LISTCOMBOWIZARD), _rxObjectModel, _rxORB)
- ,m_bListBox(sal_False)
- ,m_bHadDataSelection(sal_True)
- {
- initControlSettings(&m_aSettings);
-
- m_pPrevPage->SetHelpId(HID_LISTWIZARD_PREVIOUS);
- m_pNextPage->SetHelpId(HID_LISTWIZARD_NEXT);
- m_pCancel->SetHelpId(HID_LISTWIZARD_CANCEL);
- m_pFinish->SetHelpId(HID_LISTWIZARD_FINISH);
-
- // if we do not need the data source selection page ...
- if (!needDatasourceSelection())
- { // ... skip it!
- skip(1);
- m_bHadDataSelection = sal_False;
- }
- }
-
- //---------------------------------------------------------------------
- sal_Bool OListComboWizard::approveControl(sal_Int16 _nClassId)
- {
- switch (_nClassId)
- {
- case FormComponentType::LISTBOX:
- m_bListBox = sal_True;
- setTitleBase(String(ModuleRes(RID_STR_LISTWIZARD_TITLE)));
- return sal_True;
- case FormComponentType::COMBOBOX:
- m_bListBox = sal_False;
- setTitleBase(String(ModuleRes(RID_STR_COMBOWIZARD_TITLE)));
- return sal_True;
- }
- return sal_False;
- }
-
- //---------------------------------------------------------------------
- OWizardPage* OListComboWizard::createPage(WizardState _nState)
- {
- switch (_nState)
- {
- case LCW_STATE_DATASOURCE_SELECTION:
- return new OTableSelectionPage(this);
- case LCW_STATE_TABLESELECTION:
- return new OContentTableSelection(this);
- case LCW_STATE_FIELDSELECTION:
- return new OContentFieldSelection(this);
- case LCW_STATE_FIELDLINK:
- return new OLinkFieldsPage(this);
- case LCW_STATE_COMBODBFIELD:
- return new OComboDBFieldPage(this);
- }
-
- return NULL;
- }
-
- //---------------------------------------------------------------------
- WizardTypes::WizardState OListComboWizard::determineNextState( WizardState _nCurrentState ) const
- {
- switch (_nCurrentState)
- {
- case LCW_STATE_DATASOURCE_SELECTION:
- return LCW_STATE_TABLESELECTION;
- case LCW_STATE_TABLESELECTION:
- return LCW_STATE_FIELDSELECTION;
- case LCW_STATE_FIELDSELECTION:
- return getFinalState();
- }
-
- return WZS_INVALID_STATE;
- }
-
- //---------------------------------------------------------------------
- void OListComboWizard::enterState(WizardState _nState)
- {
- OControlWizard::enterState(_nState);
-
- enableButtons(WZB_PREVIOUS, m_bHadDataSelection ? (LCW_STATE_DATASOURCE_SELECTION < _nState) : LCW_STATE_TABLESELECTION < _nState);
- enableButtons(WZB_NEXT, getFinalState() != _nState);
- if (_nState < getFinalState())
- enableButtons(WZB_FINISH, sal_False);
-
- if (getFinalState() == _nState)
- defaultButton(WZB_FINISH);
- }
-
- //---------------------------------------------------------------------
- sal_Bool OListComboWizard::leaveState(WizardState _nState)
- {
- if (!OControlWizard::leaveState(_nState))
- return sal_False;
-
- if (getFinalState() == _nState)
- defaultButton(WZB_NEXT);
-
- return sal_True;
- }
-
- //---------------------------------------------------------------------
- void OListComboWizard::implApplySettings()
- {
- try
- {
- // for quoting identifiers, we need the connection meta data
- Reference< XConnection > xConn = getFormConnection();
- DBG_ASSERT(xConn.is(), "OListComboWizard::implApplySettings: no connection, unable to quote!");
- Reference< XDatabaseMetaData > xMetaData;
- if (xConn.is())
- xMetaData = xConn->getMetaData();
-
- // do some quotings
- if (xMetaData.is())
- {
- ::rtl::OUString sQuoteString = xMetaData->getIdentifierQuoteString();
- if (isListBox()) // only when we have a listbox this should be not empty
- getSettings().sLinkedListField = quoteName(sQuoteString, getSettings().sLinkedListField);
-
- ::rtl::OUString sCatalog, sSchema, sName;
- ::dbtools::qualifiedNameComponents( xMetaData, getSettings().sListContentTable, sCatalog, sSchema, sName, ::dbtools::eInDataManipulation );
- getSettings().sListContentTable = ::dbtools::composeTableNameForSelect( xConn, sCatalog, sSchema, sName );
-
- getSettings().sListContentField = quoteName(sQuoteString, getSettings().sListContentField);
- }
-
- // ListSourceType: SQL
- getContext().xObjectModel->setPropertyValue(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ListSourceType")), makeAny((sal_Int32)ListSourceType_SQL));
-
- if (isListBox())
- {
- // BoundColumn: 1
- getContext().xObjectModel->setPropertyValue(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("BoundColumn")), makeAny((sal_Int16)1));
-
- // build the statement to set as list source
- String sStatement;
- sStatement.AppendAscii("SELECT ");
- sStatement += getSettings().sListContentField;
- sStatement.AppendAscii(", ");
- sStatement += getSettings().sLinkedListField;
- sStatement.AppendAscii(" FROM ");
- sStatement += getSettings().sListContentTable;
- Sequence< ::rtl::OUString > aListSource(1);
- aListSource[0] = sStatement;
- getContext().xObjectModel->setPropertyValue(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ListSource")), makeAny(aListSource));
- }
- else
- {
- // build the statement to set as list source
- String sStatement;
- sStatement.AppendAscii("SELECT DISTINCT ");
- sStatement += getSettings().sListContentField;
- sStatement.AppendAscii(" FROM ");
- sStatement += getSettings().sListContentTable;
- getContext().xObjectModel->setPropertyValue(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ListSource")), makeAny(::rtl::OUString(sStatement)));
- }
-
- // the bound field
- getContext().xObjectModel->setPropertyValue(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("DataField")), makeAny(::rtl::OUString(getSettings().sLinkedFormField)));
- }
- catch(Exception&)
- {
- OSL_FAIL("OListComboWizard::implApplySettings: could not set the property values for the listbox!");
- }
- }
-
- //---------------------------------------------------------------------
- sal_Bool OListComboWizard::onFinish()
- {
- if ( !OControlWizard::onFinish() )
- return sal_False;
-
- implApplySettings();
- return sal_True;
- }
-
- //=====================================================================
- //= OLCPage
- //=====================================================================
- //---------------------------------------------------------------------
- Reference< XNameAccess > OLCPage::getTables(sal_Bool _bNeedIt)
- {
- Reference< XConnection > xConn = getFormConnection();
- DBG_ASSERT(!_bNeedIt || xConn.is(), "OLCPage::getTables: should have an active connection when reaching this page!");
- (void)_bNeedIt;
-
- Reference< XTablesSupplier > xSuppTables(xConn, UNO_QUERY);
- Reference< XNameAccess > xTables;
- if (xSuppTables.is())
- xTables = xSuppTables->getTables();
-
- DBG_ASSERT(!_bNeedIt || xTables.is() || !xConn.is(), "OLCPage::getTables: got no tables from the connection!");
-
- return xTables;
- }
-
- //---------------------------------------------------------------------
- Sequence< ::rtl::OUString > OLCPage::getTableFields(sal_Bool _bNeedIt)
- {
- Reference< XNameAccess > xTables = getTables(_bNeedIt);
- Sequence< ::rtl::OUString > aColumnNames;
- if (xTables.is())
- {
- try
- {
- // the list table as XColumnsSupplier
- Reference< XColumnsSupplier > xSuppCols;
- xTables->getByName(getSettings().sListContentTable) >>= xSuppCols;
- DBG_ASSERT(!_bNeedIt || xSuppCols.is(), "OLCPage::getTableFields: no columns supplier!");
-
- // the columns
- Reference< XNameAccess > xColumns;
- if (xSuppCols.is())
- xColumns = xSuppCols->getColumns();
-
- // the column names
- if (xColumns.is())
- aColumnNames = xColumns->getElementNames();
- }
- catch(Exception&)
- {
- DBG_ASSERT(!_bNeedIt, "OLinkFieldsPage::initializePage: caught an exception while retrieving the columns!");
- }
- }
- return aColumnNames;
- }
-
- //=====================================================================
- //= OContentTableSelection
- //=====================================================================
- //---------------------------------------------------------------------
- OContentTableSelection::OContentTableSelection( OListComboWizard* _pParent )
- :OLCPage(_pParent, ModuleRes(RID_PAGE_LCW_CONTENTSELECTION_TABLE))
- ,m_aFrame (this, ModuleRes(FL_FRAME))
- ,m_aSelectTableLabel (this, ModuleRes(FT_SELECTTABLE_LABEL))
- ,m_aSelectTable (this, ModuleRes(LB_SELECTTABLE))
- {
- FreeResource();
-
- enableFormDatasourceDisplay();
-
- m_aSelectTable.SetDoubleClickHdl(LINK(this, OContentTableSelection, OnTableDoubleClicked));
- m_aSelectTable.SetSelectHdl(LINK(this, OContentTableSelection, OnTableSelected));
- }
-
- //---------------------------------------------------------------------
- void OContentTableSelection::ActivatePage()
- {
- OLCPage::ActivatePage();
- m_aSelectTable.GrabFocus();
- }
-
- //---------------------------------------------------------------------
- bool OContentTableSelection::canAdvance() const
- {
- if (!OLCPage::canAdvance())
- return false;
-
- return 0 != m_aSelectTable.GetSelectEntryCount();
- }
-
- //---------------------------------------------------------------------
- IMPL_LINK( OContentTableSelection, OnTableSelected, ListBox*, /*_pListBox*/ )
- {
- updateDialogTravelUI();
- return 0L;
- }
-
- //---------------------------------------------------------------------
- IMPL_LINK( OContentTableSelection, OnTableDoubleClicked, ListBox*, _pListBox )
- {
- if (_pListBox->GetSelectEntryCount())
- getDialog()->travelNext();
- return 0L;
- }
-
- //---------------------------------------------------------------------
- void OContentTableSelection::initializePage()
- {
- OLCPage::initializePage();
-
- // fill the list with the table name
- m_aSelectTable.Clear();
- try
- {
- Reference< XNameAccess > xTables = getTables(sal_True);
- Sequence< ::rtl::OUString > aTableNames;
- if (xTables.is())
- aTableNames = xTables->getElementNames();
- fillListBox(m_aSelectTable, aTableNames);
- }
- catch(Exception&)
- {
- OSL_FAIL("OContentTableSelection::initializePage: could not retrieve the table names!");
- }
-
- m_aSelectTable.SelectEntry(getSettings().sListContentTable);
- }
-
- //---------------------------------------------------------------------
- sal_Bool OContentTableSelection::commitPage( ::svt::WizardTypes::CommitPageReason _eReason )
- {
- if (!OLCPage::commitPage(_eReason))
- return sal_False;
-
- OListComboSettings& rSettings = getSettings();
- rSettings.sListContentTable = m_aSelectTable.GetSelectEntry();
- if (!rSettings.sListContentTable.Len() && (::svt::WizardTypes::eTravelBackward != _eReason))
- // need to select a table
- return sal_False;
-
- return sal_True;
- }
-
- //=====================================================================
- //= OContentFieldSelection
- //=====================================================================
- //---------------------------------------------------------------------
- OContentFieldSelection::OContentFieldSelection( OListComboWizard* _pParent )
- :OLCPage(_pParent, ModuleRes(RID_PAGE_LCW_CONTENTSELECTION_FIELD))
- ,m_aFrame (this, ModuleRes(FL_FRAME))
- ,m_aTableFields (this, ModuleRes(FT_TABLEFIELDS))
- ,m_aSelectTableField (this, ModuleRes(LB_SELECTFIELD))
- ,m_aDisplayedFieldLabel (this, ModuleRes(FT_DISPLAYEDFIELD))
- ,m_aDisplayedField (this, ModuleRes(ET_DISPLAYEDFIELD))
- ,m_aInfo (this, ModuleRes(FT_CONTENTFIELD_INFO))
- {
- m_aInfo.SetText(String(ModuleRes( isListBox() ? STR_FIELDINFO_LISTBOX : STR_FIELDINFO_COMBOBOX)));
- FreeResource();
- m_aSelectTableField.SetSelectHdl(LINK(this, OContentFieldSelection, OnFieldSelected));
- m_aSelectTableField.SetDoubleClickHdl(LINK(this, OContentFieldSelection, OnTableDoubleClicked));
- }
-
- //---------------------------------------------------------------------
- void OContentFieldSelection::ActivatePage()
- {
- OLCPage::ActivatePage();
- m_aTableFields.GrabFocus();
- }
-
- //---------------------------------------------------------------------
- void OContentFieldSelection::initializePage()
- {
- OLCPage::initializePage();
-
- // fill the list of fields
- fillListBox(m_aSelectTableField, getTableFields(sal_True));
-
- m_aSelectTableField.SelectEntry(getSettings().sListContentField);
- m_aDisplayedField.SetText(getSettings().sListContentField);
- }
-
- //---------------------------------------------------------------------
- bool OContentFieldSelection::canAdvance() const
- {
- if (!OLCPage::canAdvance())
- return false;
-
- return 0 != m_aSelectTableField.GetSelectEntryCount();
- }
-
- //---------------------------------------------------------------------
- IMPL_LINK( OContentFieldSelection, OnTableDoubleClicked, ListBox*, /*NOTINTERESTEDIN*/ )
- {
- if (m_aSelectTableField.GetSelectEntryCount())
- getDialog()->travelNext();
- return 0L;
- }
-
- //---------------------------------------------------------------------
- IMPL_LINK( OContentFieldSelection, OnFieldSelected, ListBox*, /*NOTINTERESTEDIN*/ )
- {
- updateDialogTravelUI();
- m_aDisplayedField.SetText(m_aSelectTableField.GetSelectEntry());
- return 0L;
- }
-
- //---------------------------------------------------------------------
- sal_Bool OContentFieldSelection::commitPage( ::svt::WizardTypes::CommitPageReason _eReason )
- {
- if (!OLCPage::commitPage(_eReason))
- return sal_False;
-
- getSettings().sListContentField = m_aSelectTableField.GetSelectEntry();
-
- return sal_True;
- }
-
- //=====================================================================
- //= OLinkFieldsPage
- //=====================================================================
- //---------------------------------------------------------------------
- OLinkFieldsPage::OLinkFieldsPage( OListComboWizard* _pParent )
- :OLCPage(_pParent, ModuleRes(RID_PAGE_LCW_FIELDLINK))
- ,m_aDescription (this, ModuleRes(FT_FIELDLINK_DESC))
- ,m_aFrame (this, ModuleRes(FL_FRAME))
- ,m_aValueListFieldLabel (this, ModuleRes(FT_VALUELISTFIELD))
- ,m_aValueListField (this, ModuleRes(CMB_VALUELISTFIELD))
- ,m_aTableFieldLabel (this, ModuleRes(FT_TABLEFIELD))
- ,m_aTableField (this, ModuleRes(CMB_TABLEFIELD))
- {
- FreeResource();
-
- m_aValueListField.SetModifyHdl(LINK(this, OLinkFieldsPage, OnSelectionModified));
- m_aTableField.SetModifyHdl(LINK(this, OLinkFieldsPage, OnSelectionModified));
- m_aValueListField.SetSelectHdl(LINK(this, OLinkFieldsPage, OnSelectionModified));
- m_aTableField.SetSelectHdl(LINK(this, OLinkFieldsPage, OnSelectionModified));
- }
-
- //---------------------------------------------------------------------
- void OLinkFieldsPage::ActivatePage()
- {
- OLCPage::ActivatePage();
- m_aValueListField.GrabFocus();
- }
-
- //---------------------------------------------------------------------
- void OLinkFieldsPage::initializePage()
- {
- OLCPage::initializePage();
-
- // fill the value list
- fillListBox(m_aValueListField, getContext().aFieldNames);
- // fill the table field list
- fillListBox(m_aTableField, getTableFields(sal_True));
-
- // the initial selections
- m_aValueListField.SetText(getSettings().sLinkedFormField);
- m_aTableField.SetText(getSettings().sLinkedListField);
-
- implCheckFinish();
- }
-
- //---------------------------------------------------------------------
- bool OLinkFieldsPage::canAdvance() const
- {
- // we're on the last page here, no travelNext allowed ...
- return false;
- }
-
- //---------------------------------------------------------------------
- void OLinkFieldsPage::implCheckFinish()
- {
- sal_Bool bInvalidSelection = (COMBOBOX_ENTRY_NOTFOUND == m_aValueListField.GetEntryPos(m_aValueListField.GetText()));
- bInvalidSelection |= (COMBOBOX_ENTRY_NOTFOUND == m_aTableField.GetEntryPos(m_aTableField.GetText()));
- getDialog()->enableButtons(WZB_FINISH, !bInvalidSelection);
- }
-
- //---------------------------------------------------------------------
- IMPL_LINK(OLinkFieldsPage, OnSelectionModified, void*, EMPTYARG)
- {
- implCheckFinish();
- return 0L;
- }
-
- //---------------------------------------------------------------------
- sal_Bool OLinkFieldsPage::commitPage( ::svt::WizardTypes::CommitPageReason _eReason )
- {
- if (!OLCPage::commitPage(_eReason))
- return sal_False;
-
- getSettings().sLinkedFormField = m_aValueListField.GetText();
- getSettings().sLinkedListField = m_aTableField.GetText();
-
- return sal_True;
- }
-
- //=====================================================================
- //= OComboDBFieldPage
- //=====================================================================
- //---------------------------------------------------------------------
- OComboDBFieldPage::OComboDBFieldPage( OControlWizard* _pParent )
- :ODBFieldPage(_pParent)
- {
- setDescriptionText(String(ModuleRes(RID_STR_COMBOWIZ_DBFIELD)));
- }
-
- //---------------------------------------------------------------------
- String& OComboDBFieldPage::getDBFieldSetting()
- {
- return getSettings().sLinkedFormField;
- }
-
- //---------------------------------------------------------------------
- void OComboDBFieldPage::ActivatePage()
- {
- ODBFieldPage::ActivatePage();
- getDialog()->enableButtons(WZB_FINISH, sal_True);
- }
-
- //---------------------------------------------------------------------
- bool OComboDBFieldPage::canAdvance() const
- {
- // we're on the last page here, no travelNext allowed ...
- return false;
- }
-
-//.........................................................................
-} // namespace dbp
-//.........................................................................
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */