1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131
|
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/*
* This file is part of the LibreOffice project.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
* This file incorporates work covered by the following license notice:
*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed
* with this work for additional information regarding copyright
* ownership. The ASF licenses this file to you under the Apache
* License, Version 2.0 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy of
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/
#ifndef INCLUDED_REPORTDESIGN_SOURCE_UI_INC_ADDFIELD_HXX
#define INCLUDED_REPORTDESIGN_SOURCE_UI_INC_ADDFIELD_HXX
#include <com/sun/star/frame/XDispatch.hpp>
#include <com/sun/star/container/XNameAccess.hpp>
#include <com/sun/star/sdbc/XConnection.hpp>
#include <svtools/transfer.hxx>
#include <svtools/treelistbox.hxx>
#include <vcl/floatwin.hxx>
#include <comphelper/propmultiplex.hxx>
#include <comphelper/containermultiplexer.hxx>
#include <vcl/button.hxx>
#include <svx/dataaccessdescriptor.hxx>
#include <cppuhelper/basemutex.hxx>
#include <dbaccess/ToolBoxHelper.hxx>
#include <vcl/toolbox.hxx>
#include <vcl/fixed.hxx>
#include <rtl/ref.hxx>
namespace rptui
{
class OAddFieldWindow;
class OAddFieldWindowListBox;
class OAddFieldWindow :public FloatingWindow
, public ::cppu::BaseMutex
, public ::comphelper::OPropertyChangeListener
, public ::comphelper::OContainerListener
, public dbaui::OToolBoxHelper
{
css::uno::Reference< css::lang::XComponent> m_xHoldAlive;
css::uno::Reference< css::container::XNameAccess> m_xColumns;
css::uno::Reference< css::beans::XPropertySet > m_xRowSet;
VclPtr<ToolBox> m_aActions;
VclPtr<OAddFieldWindowListBox> m_pListBox;
VclPtr<FixedLine> m_aFixedLine;
VclPtr<FixedText> m_aHelpText;
VclPtr<PushButton> m_aInsertButton;
Link<OAddFieldWindow&,void> m_aCreateLink;
OUString m_aCommandName;
OUString m_sFilter;
sal_Int32 m_nCommandType;
bool m_bEscapeProcessing;
::rtl::Reference< comphelper::OPropertyChangeMultiplexer> m_pChangeListener;
::rtl::Reference< comphelper::OContainerListenerAdapter> m_pContainerListener;
DECL_LINK_TYPED( OnClickHdl, Button*, void );
DECL_LINK_TYPED( OnDoubleClickHdl, SvTreeListBox*, bool );
DECL_LINK_TYPED( OnSelectHdl, SvTreeListBox*, void );
DECL_LINK_TYPED( OnSortAction, ToolBox*, void );
OAddFieldWindow(const OAddFieldWindow&) = delete;
void operator =(const OAddFieldWindow&) = delete;
public:
OAddFieldWindow(vcl::Window* pParent
, const css::uno::Reference< css::beans::XPropertySet >& _xRowSet);
virtual ~OAddFieldWindow();
virtual void dispose() override;
virtual void Resize() override;
virtual void GetFocus() override;
virtual bool PreNotify( NotifyEvent& _rNEvt ) override;
inline const OUString& GetCommand() const { return m_aCommandName; }
inline sal_Int32 GetCommandType() const { return m_nCommandType; }
inline bool GetEscapeProcessing() const { return m_bEscapeProcessing; }
inline void SetCreateHdl(const Link<OAddFieldWindow&,void>& _aCreateLink) { m_aCreateLink = _aCreateLink; }
css::uno::Reference< css::sdbc::XConnection> getConnection() const;
css::uno::Sequence< css::beans::PropertyValue > getSelectedFieldDescriptors();
/** will be called when the id of the image list needs to change.
@param _eBitmapSet
<svtools/imgdef.hxx>
*/
virtual void setImageList(sal_Int16 _eBitmapSet) override;
/** will be called when the controls need to be resized.
*/
virtual void resizeControls(const Size& _rDiff) override;
/// Updates the current field list
void Update();
/** fills the descriptor with the column name, column object, command and command type
*
* \param _pSelected the currently selected
* \param _rDescriptor the descriptor will be filled
*/
void fillDescriptor(SvTreeListEntry* _pSelected,svx::ODataAccessDescriptor& _rDescriptor);
private:
// FmXChangeListener
virtual void _propertyChanged(const css::beans::PropertyChangeEvent& evt) throw( css::uno::RuntimeException, std::exception ) override;
// OContainerListener
virtual void _elementInserted( const css::container::ContainerEvent& _rEvent ) throw(css::uno::RuntimeException, std::exception) override;
virtual void _elementRemoved( const css::container::ContainerEvent& _rEvent ) throw(css::uno::RuntimeException, std::exception) override;
virtual void _elementReplaced( const css::container::ContainerEvent& _rEvent ) throw(css::uno::RuntimeException, std::exception) override;
};
} // rptui
#endif // INCLUDED_REPORTDESIGN_SOURCE_UI_INC_ADDFIELD_HXX
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|