xref: /AOO41X/main/reportdesign/source/ui/inc/GroupsSorting.hxx (revision 9ee13d1351a4b51ae8bed78e67629c7bd5f4481e)
1 /**************************************************************
2  *
3  * Licensed to the Apache Software Foundation (ASF) under one
4  * or more contributor license agreements.  See the NOTICE file
5  * distributed with this work for additional information
6  * regarding copyright ownership.  The ASF licenses this file
7  * to you under the Apache License, Version 2.0 (the
8  * "License"); you may not use this file except in compliance
9  * with the License.  You may obtain a copy of the License at
10  *
11  *   http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing,
14  * software distributed under the License is distributed on an
15  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16  * KIND, either express or implied.  See the License for the
17  * specific language governing permissions and limitations
18  * under the License.
19  *
20  *************************************************************/
21 
22 
23 #ifndef RPTUI_GROUPS_SORTING_HXX
24 #define RPTUI_GROUPS_SORTING_HXX
25 
26 #include <vcl/floatwin.hxx>
27 #ifndef _FIXED_HXX //autogen
28 #include <vcl/fixed.hxx>
29 #endif
30 #include <vcl/lstbox.hxx>
31 #include <vcl/edit.hxx>
32 #include <vcl/field.hxx>
33 #include <vcl/button.hxx>
34 #include <vcl/toolbox.hxx>
35 #include <com/sun/star/report/XGroups.hpp>
36 #include <com/sun/star/report/XGroup.hpp>
37 #include <com/sun/star/container/XNameAccess.hpp>
38 #include "GroupProperties.hxx"
39 #include <comphelper/propmultiplex.hxx>
40 #include "cppuhelper/basemutex.hxx"
41 #include <svtools/svmedit.hxx>
42 #include <rtl/ref.hxx>
43 
44 #include <vector>
45 
46 #include <dbaccess/ToolBoxHelper.hxx>
47 
48 #include <vcl/ImageListProvider.hxx>
49 
50 namespace comphelper
51 {
52     class OPropertyChangeMultiplexer;
53 }
54 namespace rptui
55 {
56 class OFieldExpressionControl;
57 class OReportController;
58 /*************************************************************************
59 |*
60 |* Groups and Sorting dialog
61 |*
62 \************************************************************************/
63 
64 class OGroupsSortingDialog :    public FloatingWindow
65                             ,   public ::cppu::BaseMutex
66                                 ,   public ::comphelper::OPropertyChangeListener
67                            ,public dbaui::OToolBoxHelper
68                            ,public vcl::IImageListProvider
69 {
70     friend class OFieldExpressionControl;
71 
72     FixedLine                               m_aFL2;
73     FixedText                               m_aMove;
74 //BTN   ImageButton                             m_aPB_Up;
75 //BTN   ImageButton                             m_aPB_Down;
76 //BTN   ImageButton                             m_aPB_Delete;
77     ToolBox                                 m_aToolBox;
78 
79     FixedLine                               m_aFL3;
80     FixedText                               m_aOrder;
81     ListBox                                 m_aOrderLst;
82     FixedText                               m_aHeader;
83     ListBox                                 m_aHeaderLst;
84     FixedText                               m_aFooter;
85     ListBox                                 m_aFooterLst;
86     FixedText                               m_aGroupOn;
87     ListBox                                 m_aGroupOnLst;
88     FixedText                               m_aGroupInterval;
89     NumericField                            m_aGroupIntervalEd;
90     FixedText                               m_aKeepTogether;
91     ListBox                                 m_aKeepTogetherLst;
92     FixedLine                               m_aFL;
93     FixedText                               m_aHelpWindow;
94 
95     OFieldExpressionControl*                m_pFieldExpression;
96     ::rptui::OReportController*             m_pController;
97     ::rtl::Reference< comphelper::OPropertyChangeMultiplexer>                       m_pCurrentGroupListener;
98     ::rtl::Reference< comphelper::OPropertyChangeMultiplexer>                       m_pReportListener;
99     ::com::sun::star::uno::Reference< ::com::sun::star::report::XGroups>            m_xGroups;
100     ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess >    m_xColumns;
101     sal_Bool                                m_bReadOnly;
102 private:
103     DECL_LINK( OnControlFocusLost, Control* );
104     DECL_LINK( OnControlFocusGot, Control* );
105     DECL_LINK( LBChangeHdl, ListBox* );
106 //BTN   DECL_LINK( ClickHdl, ImageButton* );
107     DECL_LINK( OnFormatAction,      ToolBox* );
108 
109     /** returns the groups
110         @return the groups which now have to check which one changes
111     */
getGroups()112     ::com::sun::star::uno::Reference< ::com::sun::star::report::XGroups>& getGroups() { return m_xGroups; }
113 
getGroup(sal_Int32 _nPos)114     ::com::sun::star::uno::Reference< ::com::sun::star::report::XGroup> getGroup(sal_Int32 _nPos)
115     {
116         OSL_ENSURE(_nPos >= 0 && _nPos < m_xGroups->getCount(),"Invalid count!");
117         return ::com::sun::star::uno::Reference< ::com::sun::star::report::XGroup>(m_xGroups->getByIndex(_nPos),::com::sun::star::uno::UNO_QUERY);
118     }
119 
120     /** updates the listboxes with the new group properties
121         @param  _nRow   the new group pos
122     */
123     void DisplayData( sal_Int32 _nRow );
124 
125     /** saves the values from the listboxes into the group at position _nRow
126         @param  _nRow   the group pos to store in
127     */
128     void SaveData( sal_Int32 _nRow );
129 
130     /** returns <TRUE/> when the dialog should be read only
131     */
132     sal_Bool isReadOnly( ) const;
133 
134     /** returns the data type for the given column name
135         @param _sColumnName
136     */
137     sal_Int32 getColumnDataType(const ::rtl::OUString& _sColumnName);
138 
139     /** shows the text given by the id in the multiline edit
140         @param  _nResId the string id
141     */
142     void showHelpText(sal_uInt16 _nResId);
143     /** display the group props
144         @param  _xGroup the group to display
145     */
146     void displayGroup(const ::com::sun::star::uno::Reference< ::com::sun::star::report::XGroup>& _xGroup);
147 
148     /** enables or diables the up and down button
149         @param  _nRow   the row which will be active
150     */
151     void checkButtons(sal_Int32 _nRow);
152 
153     /** clears the m_xColumns member and reset the fields
154     *
155     */
156     void fillColumns();
157     OGroupsSortingDialog(OGroupsSortingDialog&);
158     void operator =(OGroupsSortingDialog&);
159 protected:
160     // window
161     virtual void    Resize();
162     // OPropertyChangeListener
163     virtual void    _propertyChanged(const ::com::sun::star::beans::PropertyChangeEvent& _rEvent) throw( ::com::sun::star::uno::RuntimeException);
164 public:
165     OGroupsSortingDialog( Window* pParent
166                         ,sal_Bool _bReadOnly
167                         ,::rptui::OReportController* _pController);
168     virtual ~OGroupsSortingDialog();
169 
170     /** sets the newe columns at the groups dialog.
171         @param  _xColumns the new columns
172     */
173     void setColumns(const ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess >& _xColumns);
174 
175     /* updates the current view
176     */
177     void UpdateData( );
178 
179         /** will be called when the controls need to be resized.
180             @param  _rDiff
181                 Contains the difference of the old and new toolbox size.
182         */
183         virtual void resizeControls(const Size& _rDiff);
184 
185         /** will be called when the image list is needed.
186             @param  _eSymbolsSize
187                 <svtools/imgdef.hxx>
188             @param  _bHiContast
189                 <TRUE/> when in high contrast mode.
190         */
191     virtual ImageList getImageList(sal_Int16 _eSymbolsSize,sal_Bool _bHiContast) const;
192 
193     // ImageListProvider interface
194     virtual ImageList getImageList(vcl::ImageListType) SAL_THROW ((com::sun::star::lang::IllegalArgumentException ));
195 
196 };
197 // =============================================================================
198 } // namespace rptui
199 // =============================================================================
200 #endif // RPTUI_GROUPS_SORTING_HXX
201