1*b1cdbd2cSJim Jagielski /**************************************************************
2*b1cdbd2cSJim Jagielski  *
3*b1cdbd2cSJim Jagielski  * Licensed to the Apache Software Foundation (ASF) under one
4*b1cdbd2cSJim Jagielski  * or more contributor license agreements.  See the NOTICE file
5*b1cdbd2cSJim Jagielski  * distributed with this work for additional information
6*b1cdbd2cSJim Jagielski  * regarding copyright ownership.  The ASF licenses this file
7*b1cdbd2cSJim Jagielski  * to you under the Apache License, Version 2.0 (the
8*b1cdbd2cSJim Jagielski  * "License"); you may not use this file except in compliance
9*b1cdbd2cSJim Jagielski  * with the License.  You may obtain a copy of the License at
10*b1cdbd2cSJim Jagielski  *
11*b1cdbd2cSJim Jagielski  *   http://www.apache.org/licenses/LICENSE-2.0
12*b1cdbd2cSJim Jagielski  *
13*b1cdbd2cSJim Jagielski  * Unless required by applicable law or agreed to in writing,
14*b1cdbd2cSJim Jagielski  * software distributed under the License is distributed on an
15*b1cdbd2cSJim Jagielski  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*b1cdbd2cSJim Jagielski  * KIND, either express or implied.  See the License for the
17*b1cdbd2cSJim Jagielski  * specific language governing permissions and limitations
18*b1cdbd2cSJim Jagielski  * under the License.
19*b1cdbd2cSJim Jagielski  *
20*b1cdbd2cSJim Jagielski  *************************************************************/
21*b1cdbd2cSJim Jagielski 
22*b1cdbd2cSJim Jagielski 
23*b1cdbd2cSJim Jagielski #include "precompiled_reportdesign.hxx"
24*b1cdbd2cSJim Jagielski #include "ReportWindow.hxx"
25*b1cdbd2cSJim Jagielski #include "ReportSection.hxx"
26*b1cdbd2cSJim Jagielski #include "SectionView.hxx"
27*b1cdbd2cSJim Jagielski #include "ViewsWindow.hxx"
28*b1cdbd2cSJim Jagielski #include "ReportRuler.hxx"
29*b1cdbd2cSJim Jagielski #include "DesignView.hxx"
30*b1cdbd2cSJim Jagielski #include "UITools.hxx"
31*b1cdbd2cSJim Jagielski 
32*b1cdbd2cSJim Jagielski #include <tools/debug.hxx>
33*b1cdbd2cSJim Jagielski #include <svtools/colorcfg.hxx>
34*b1cdbd2cSJim Jagielski #include <svl/itempool.hxx>
35*b1cdbd2cSJim Jagielski #include <unotools/syslocale.hxx>
36*b1cdbd2cSJim Jagielski 
37*b1cdbd2cSJim Jagielski #include "RptDef.hxx"
38*b1cdbd2cSJim Jagielski #include "dlgedfunc.hxx"
39*b1cdbd2cSJim Jagielski #include "RptModel.hxx"
40*b1cdbd2cSJim Jagielski #include "uistrings.hrc"
41*b1cdbd2cSJim Jagielski #include "RptPage.hxx"
42*b1cdbd2cSJim Jagielski #include "ReportController.hxx"
43*b1cdbd2cSJim Jagielski #include "EndMarker.hxx"
44*b1cdbd2cSJim Jagielski #include "ColorChanger.hxx"
45*b1cdbd2cSJim Jagielski #include "ScrollHelper.hxx"
46*b1cdbd2cSJim Jagielski 
47*b1cdbd2cSJim Jagielski #include "helpids.hrc"
48*b1cdbd2cSJim Jagielski #include "dlgedfac.hxx"
49*b1cdbd2cSJim Jagielski #include <boost/bind.hpp>
50*b1cdbd2cSJim Jagielski #include <toolkit/helper/vclunohelper.hxx>
51*b1cdbd2cSJim Jagielski 
52*b1cdbd2cSJim Jagielski 
53*b1cdbd2cSJim Jagielski #define SECTION_OFFSET	3
54*b1cdbd2cSJim Jagielski namespace rptui
55*b1cdbd2cSJim Jagielski {
56*b1cdbd2cSJim Jagielski using namespace ::com::sun::star;
57*b1cdbd2cSJim Jagielski using namespace ::comphelper;
58*b1cdbd2cSJim Jagielski //==================================================================
59*b1cdbd2cSJim Jagielski // class OReportWindow
60*b1cdbd2cSJim Jagielski //==================================================================
DBG_NAME(rpt_OReportWindow)61*b1cdbd2cSJim Jagielski DBG_NAME( rpt_OReportWindow )
62*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------------
63*b1cdbd2cSJim Jagielski OReportWindow::OReportWindow(OScrollWindowHelper* _pParent,ODesignView* _pView)
64*b1cdbd2cSJim Jagielski : Window(_pParent,WB_DIALOGCONTROL)
65*b1cdbd2cSJim Jagielski , ::comphelper::OPropertyChangeListener(m_aMutex)
66*b1cdbd2cSJim Jagielski ,m_aHRuler(this)
67*b1cdbd2cSJim Jagielski ,m_pView(_pView)
68*b1cdbd2cSJim Jagielski ,m_pParent(_pParent)
69*b1cdbd2cSJim Jagielski ,m_aViewsWindow(this)
70*b1cdbd2cSJim Jagielski ,m_pObjFac( new DlgEdFactory() )
71*b1cdbd2cSJim Jagielski {
72*b1cdbd2cSJim Jagielski 	DBG_CTOR( rpt_OReportWindow,NULL);
73*b1cdbd2cSJim Jagielski 	SetHelpId(UID_RPT_REPORTWINDOW);
74*b1cdbd2cSJim Jagielski 	SetMapMode( MapMode( MAP_100TH_MM ) );
75*b1cdbd2cSJim Jagielski 
76*b1cdbd2cSJim Jagielski 	m_aViewsWindow.Show();
77*b1cdbd2cSJim Jagielski 
78*b1cdbd2cSJim Jagielski 	m_aHRuler.Show();
79*b1cdbd2cSJim Jagielski 	m_aHRuler.Activate();
80*b1cdbd2cSJim Jagielski 	m_aHRuler.SetPagePos(0);
81*b1cdbd2cSJim Jagielski 	m_aHRuler.SetBorders();
82*b1cdbd2cSJim Jagielski 	m_aHRuler.SetIndents();
83*b1cdbd2cSJim Jagielski 	m_aHRuler.SetMargin1();
84*b1cdbd2cSJim Jagielski 	m_aHRuler.SetMargin2();
85*b1cdbd2cSJim Jagielski     const MeasurementSystem eSystem = SvtSysLocale().GetLocaleData().getMeasurementSystemEnum();
86*b1cdbd2cSJim Jagielski     m_aHRuler.SetUnit(MEASURE_METRIC == eSystem ? FUNIT_CM : FUNIT_INCH);
87*b1cdbd2cSJim Jagielski 
88*b1cdbd2cSJim Jagielski 	ImplInitSettings();
89*b1cdbd2cSJim Jagielski     m_pReportListener = addStyleListener(_pView->getController().getReportDefinition(),this);
90*b1cdbd2cSJim Jagielski }
91*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------------
~OReportWindow()92*b1cdbd2cSJim Jagielski OReportWindow::~OReportWindow()
93*b1cdbd2cSJim Jagielski {
94*b1cdbd2cSJim Jagielski 	DBG_DTOR( rpt_OReportWindow,NULL);
95*b1cdbd2cSJim Jagielski     if ( m_pReportListener.is() )
96*b1cdbd2cSJim Jagielski 		m_pReportListener->dispose();
97*b1cdbd2cSJim Jagielski }
98*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------------
initialize()99*b1cdbd2cSJim Jagielski void OReportWindow::initialize()
100*b1cdbd2cSJim Jagielski {
101*b1cdbd2cSJim Jagielski 	m_aViewsWindow.initialize();
102*b1cdbd2cSJim Jagielski }
103*b1cdbd2cSJim Jagielski //----------------------------------------------------------------------------
SetInsertObj(sal_uInt16 eObj,const::rtl::OUString & _sShapeType)104*b1cdbd2cSJim Jagielski void OReportWindow::SetInsertObj( sal_uInt16 eObj,const ::rtl::OUString& _sShapeType )
105*b1cdbd2cSJim Jagielski {
106*b1cdbd2cSJim Jagielski 	m_aViewsWindow.SetInsertObj( eObj,_sShapeType);
107*b1cdbd2cSJim Jagielski }
108*b1cdbd2cSJim Jagielski 
109*b1cdbd2cSJim Jagielski //----------------------------------------------------------------------------
GetInsertObjString() const110*b1cdbd2cSJim Jagielski rtl::OUString OReportWindow::GetInsertObjString() const
111*b1cdbd2cSJim Jagielski {
112*b1cdbd2cSJim Jagielski 	return m_aViewsWindow.GetInsertObjString();
113*b1cdbd2cSJim Jagielski }
114*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------------
SetMode(DlgEdMode eNewMode)115*b1cdbd2cSJim Jagielski void OReportWindow::SetMode( DlgEdMode eNewMode )
116*b1cdbd2cSJim Jagielski {
117*b1cdbd2cSJim Jagielski 	m_aViewsWindow.SetMode(eNewMode);
118*b1cdbd2cSJim Jagielski }
119*b1cdbd2cSJim Jagielski //----------------------------------------------------------------------------
removeSection(sal_uInt16 _nPosition)120*b1cdbd2cSJim Jagielski void OReportWindow::removeSection(sal_uInt16 _nPosition)
121*b1cdbd2cSJim Jagielski {
122*b1cdbd2cSJim Jagielski 	m_aViewsWindow.removeSection(_nPosition);
123*b1cdbd2cSJim Jagielski 	m_pParent->setTotalSize(GetTotalWidth(),GetTotalHeight());
124*b1cdbd2cSJim Jagielski     m_aViewsWindow.Invalidate(INVALIDATE_TRANSPARENT);
125*b1cdbd2cSJim Jagielski 	//Resize();
126*b1cdbd2cSJim Jagielski }
127*b1cdbd2cSJim Jagielski //----------------------------------------------------------------------------
addSection(const uno::Reference<report::XSection> & _xSection,const::rtl::OUString & _sColorEntry,sal_uInt16 _nPosition)128*b1cdbd2cSJim Jagielski void OReportWindow::addSection(const uno::Reference< report::XSection >& _xSection,const ::rtl::OUString& _sColorEntry,sal_uInt16 _nPosition)
129*b1cdbd2cSJim Jagielski {
130*b1cdbd2cSJim Jagielski 	if ( !_xSection.is() )
131*b1cdbd2cSJim Jagielski 		return;
132*b1cdbd2cSJim Jagielski 
133*b1cdbd2cSJim Jagielski 	m_aViewsWindow.addSection(_xSection,_sColorEntry,_nPosition);
134*b1cdbd2cSJim Jagielski 
135*b1cdbd2cSJim Jagielski 	m_pParent->setTotalSize(GetTotalWidth(),GetTotalHeight());
136*b1cdbd2cSJim Jagielski }
137*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------------
toggleGrid(sal_Bool _bVisible)138*b1cdbd2cSJim Jagielski void OReportWindow::toggleGrid(sal_Bool _bVisible)
139*b1cdbd2cSJim Jagielski {
140*b1cdbd2cSJim Jagielski 	m_aViewsWindow.toggleGrid(_bVisible);
141*b1cdbd2cSJim Jagielski }
142*b1cdbd2cSJim Jagielski //----------------------------------------------------------------------------
showRuler(sal_Bool _bShow)143*b1cdbd2cSJim Jagielski void OReportWindow::showRuler(sal_Bool _bShow)
144*b1cdbd2cSJim Jagielski {
145*b1cdbd2cSJim Jagielski 	m_aHRuler.Show(_bShow);
146*b1cdbd2cSJim Jagielski 
147*b1cdbd2cSJim Jagielski 	m_aViewsWindow.showRuler(_bShow);
148*b1cdbd2cSJim Jagielski }
149*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------------
getMaxMarkerWidth(sal_Bool _bWithEnd) const150*b1cdbd2cSJim Jagielski sal_Int32 OReportWindow::getMaxMarkerWidth(sal_Bool _bWithEnd) const
151*b1cdbd2cSJim Jagielski {
152*b1cdbd2cSJim Jagielski     Fraction aStartWidth(long(REPORT_STARTMARKER_WIDTH));
153*b1cdbd2cSJim Jagielski     aStartWidth *= m_aViewsWindow.GetMapMode().GetScaleX();
154*b1cdbd2cSJim Jagielski     if ( _bWithEnd )
155*b1cdbd2cSJim Jagielski         aStartWidth += Fraction(long(REPORT_ENDMARKER_WIDTH));
156*b1cdbd2cSJim Jagielski 	return sal_Int32((long)aStartWidth);
157*b1cdbd2cSJim Jagielski }
158*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------------
GetTotalWidth() const159*b1cdbd2cSJim Jagielski sal_Int32 OReportWindow::GetTotalWidth() const
160*b1cdbd2cSJim Jagielski {
161*b1cdbd2cSJim Jagielski 	sal_Int32 nWidth = 0;
162*b1cdbd2cSJim Jagielski 	if ( !m_aViewsWindow.empty() )
163*b1cdbd2cSJim Jagielski 	{
164*b1cdbd2cSJim Jagielski         Fraction aStartWidth(long(REPORT_ENDMARKER_WIDTH + REPORT_STARTMARKER_WIDTH ));
165*b1cdbd2cSJim Jagielski         const Fraction aZoom(m_pView->getController().getZoomValue(),100);
166*b1cdbd2cSJim Jagielski         aStartWidth *= aZoom; // m_aViewsWindow.GetMapMode().GetScaleX();;
167*b1cdbd2cSJim Jagielski 		const sal_Int32 nPaperWidth = getStyleProperty<awt::Size>(m_pView->getController().getReportDefinition(),PROPERTY_PAPERSIZE).Width;
168*b1cdbd2cSJim Jagielski         Fraction aPaperWidth(nPaperWidth,1);
169*b1cdbd2cSJim Jagielski         aPaperWidth *= aZoom;
170*b1cdbd2cSJim Jagielski 		const Size aPageSize = LogicToPixel(Size(aPaperWidth,0));
171*b1cdbd2cSJim Jagielski 		nWidth = aPageSize.Width() + long(aStartWidth);
172*b1cdbd2cSJim Jagielski 	}
173*b1cdbd2cSJim Jagielski 	return nWidth;
174*b1cdbd2cSJim Jagielski }
175*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------------
Resize()176*b1cdbd2cSJim Jagielski void OReportWindow::Resize()
177*b1cdbd2cSJim Jagielski {
178*b1cdbd2cSJim Jagielski 	Window::Resize();
179*b1cdbd2cSJim Jagielski 	if ( !m_aViewsWindow.empty() )
180*b1cdbd2cSJim Jagielski 	{
181*b1cdbd2cSJim Jagielski 		const Size aTotalOutputSize = GetOutputSizePixel();
182*b1cdbd2cSJim Jagielski         Fraction aStartWidth(long(REPORT_STARTMARKER_WIDTH)*m_pView->getController().getZoomValue(),100);
183*b1cdbd2cSJim Jagielski 
184*b1cdbd2cSJim Jagielski 		const Point aOffset = LogicToPixel( Point( SECTION_OFFSET, 0 ), MAP_APPFONT );
185*b1cdbd2cSJim Jagielski 		Point aStartPoint((long)aStartWidth + aOffset.X(),0);
186*b1cdbd2cSJim Jagielski 		uno::Reference<report::XReportDefinition> xReportDefinition = getReportView()->getController().getReportDefinition();
187*b1cdbd2cSJim Jagielski 		const sal_Int32 nPaperWidth = getStyleProperty<awt::Size>(xReportDefinition,PROPERTY_PAPERSIZE).Width;
188*b1cdbd2cSJim Jagielski 		sal_Int32 nLeftMargin = getStyleProperty<sal_Int32>(xReportDefinition,PROPERTY_LEFTMARGIN);
189*b1cdbd2cSJim Jagielski 		sal_Int32 nRightMargin = getStyleProperty<sal_Int32>(xReportDefinition,PROPERTY_RIGHTMARGIN);
190*b1cdbd2cSJim Jagielski 		Size aPageSize  = m_aViewsWindow.LogicToPixel(Size(nPaperWidth ,0));
191*b1cdbd2cSJim Jagielski 		nLeftMargin     = m_aViewsWindow.LogicToPixel(Size(nLeftMargin,0)).Width();
192*b1cdbd2cSJim Jagielski 		nRightMargin    = m_aViewsWindow.LogicToPixel(Size(nRightMargin,0)).Width();
193*b1cdbd2cSJim Jagielski 
194*b1cdbd2cSJim Jagielski 		aPageSize.Height() = m_aHRuler.GetSizePixel().Height();
195*b1cdbd2cSJim Jagielski 
196*b1cdbd2cSJim Jagielski         const long nTermp(m_aViewsWindow.getTotalHeight() + aPageSize.Height());
197*b1cdbd2cSJim Jagielski 		long nSectionsHeight = ::std::max<long>(nTermp,aTotalOutputSize.Height());
198*b1cdbd2cSJim Jagielski 
199*b1cdbd2cSJim Jagielski 		m_aHRuler.SetPosSizePixel(aStartPoint,aPageSize);
200*b1cdbd2cSJim Jagielski 		m_aHRuler.SetNullOffset(nLeftMargin);
201*b1cdbd2cSJim Jagielski 		m_aHRuler.SetMargin1(0);
202*b1cdbd2cSJim Jagielski 		m_aHRuler.SetMargin2(aPageSize.Width() - nLeftMargin - nRightMargin);
203*b1cdbd2cSJim Jagielski 
204*b1cdbd2cSJim Jagielski 		aStartPoint.Y() += aPageSize.Height();
205*b1cdbd2cSJim Jagielski 		nSectionsHeight -= aStartPoint.Y();
206*b1cdbd2cSJim Jagielski 
207*b1cdbd2cSJim Jagielski         aStartPoint.X() = aOffset.X();
208*b1cdbd2cSJim Jagielski 
209*b1cdbd2cSJim Jagielski         m_aViewsWindow.SetPosSizePixel(aStartPoint,Size(aTotalOutputSize.Width(),nSectionsHeight));
210*b1cdbd2cSJim Jagielski 	}
211*b1cdbd2cSJim Jagielski }
212*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------------
getThumbPos() const213*b1cdbd2cSJim Jagielski Point OReportWindow::getThumbPos() const
214*b1cdbd2cSJim Jagielski {
215*b1cdbd2cSJim Jagielski 	return m_pParent->getThumbPos();
216*b1cdbd2cSJim Jagielski }
217*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------------
ImplInitSettings()218*b1cdbd2cSJim Jagielski void OReportWindow::ImplInitSettings()
219*b1cdbd2cSJim Jagielski {
220*b1cdbd2cSJim Jagielski 	SetBackground( );
221*b1cdbd2cSJim Jagielski }
222*b1cdbd2cSJim Jagielski //-----------------------------------------------------------------------------
DataChanged(const DataChangedEvent & rDCEvt)223*b1cdbd2cSJim Jagielski void OReportWindow::DataChanged( const DataChangedEvent& rDCEvt )
224*b1cdbd2cSJim Jagielski {
225*b1cdbd2cSJim Jagielski 	Window::DataChanged( rDCEvt );
226*b1cdbd2cSJim Jagielski 
227*b1cdbd2cSJim Jagielski 	if ( (rDCEvt.GetType() == DATACHANGED_SETTINGS) &&
228*b1cdbd2cSJim Jagielski 		 (rDCEvt.GetFlags() & SETTINGS_STYLE) )
229*b1cdbd2cSJim Jagielski 	{
230*b1cdbd2cSJim Jagielski 		ImplInitSettings();
231*b1cdbd2cSJim Jagielski         Invalidate();
232*b1cdbd2cSJim Jagielski 	}
233*b1cdbd2cSJim Jagielski }
234*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------------
GetTotalHeight() const235*b1cdbd2cSJim Jagielski sal_Int32 OReportWindow::GetTotalHeight() const
236*b1cdbd2cSJim Jagielski {
237*b1cdbd2cSJim Jagielski 	return m_aViewsWindow.getTotalHeight();
238*b1cdbd2cSJim Jagielski }
239*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------------
ScrollChildren(const Point & _aThumbPos)240*b1cdbd2cSJim Jagielski void OReportWindow::ScrollChildren(const Point& _aThumbPos)
241*b1cdbd2cSJim Jagielski {
242*b1cdbd2cSJim Jagielski     MapMode aMap = m_aHRuler.GetMapMode();
243*b1cdbd2cSJim Jagielski     Point aOrg( aMap.GetOrigin() );
244*b1cdbd2cSJim Jagielski     if ( aOrg.X() != (-_aThumbPos.X()) )
245*b1cdbd2cSJim Jagielski     {
246*b1cdbd2cSJim Jagielski         aMap.SetOrigin( Point(- _aThumbPos.X(), aOrg.Y()));
247*b1cdbd2cSJim Jagielski         m_aHRuler.SetMapMode( aMap );
248*b1cdbd2cSJim Jagielski         m_aHRuler.Scroll(-(aOrg.X() + _aThumbPos.X()),0);
249*b1cdbd2cSJim Jagielski     }
250*b1cdbd2cSJim Jagielski 
251*b1cdbd2cSJim Jagielski     /*const Point aPos(PixelToLogic(_aThumbPos));*/
252*b1cdbd2cSJim Jagielski     m_aViewsWindow.scrollChildren(_aThumbPos);
253*b1cdbd2cSJim Jagielski }
254*b1cdbd2cSJim Jagielski //----------------------------------------------------------------------------
getSectionCount() const255*b1cdbd2cSJim Jagielski sal_uInt16 OReportWindow::getSectionCount() const
256*b1cdbd2cSJim Jagielski {
257*b1cdbd2cSJim Jagielski 	return m_aViewsWindow.getSectionCount();
258*b1cdbd2cSJim Jagielski }
259*b1cdbd2cSJim Jagielski //----------------------------------------------------------------------------
notifySizeChanged()260*b1cdbd2cSJim Jagielski void OReportWindow::notifySizeChanged()
261*b1cdbd2cSJim Jagielski {
262*b1cdbd2cSJim Jagielski 	m_pParent->setTotalSize(GetTotalWidth(),GetTotalHeight());
263*b1cdbd2cSJim Jagielski }
264*b1cdbd2cSJim Jagielski //----------------------------------------------------------------------------
HasSelection() const265*b1cdbd2cSJim Jagielski sal_Bool OReportWindow::HasSelection() const
266*b1cdbd2cSJim Jagielski {
267*b1cdbd2cSJim Jagielski 	return m_aViewsWindow.HasSelection();
268*b1cdbd2cSJim Jagielski }
269*b1cdbd2cSJim Jagielski //----------------------------------------------------------------------------
Delete()270*b1cdbd2cSJim Jagielski void OReportWindow::Delete()
271*b1cdbd2cSJim Jagielski {
272*b1cdbd2cSJim Jagielski 
273*b1cdbd2cSJim Jagielski 	m_aViewsWindow.Delete();
274*b1cdbd2cSJim Jagielski }
275*b1cdbd2cSJim Jagielski //----------------------------------------------------------------------------
Copy()276*b1cdbd2cSJim Jagielski void OReportWindow::Copy()
277*b1cdbd2cSJim Jagielski {
278*b1cdbd2cSJim Jagielski 
279*b1cdbd2cSJim Jagielski 	m_aViewsWindow.Copy();
280*b1cdbd2cSJim Jagielski }
281*b1cdbd2cSJim Jagielski //----------------------------------------------------------------------------
Paste()282*b1cdbd2cSJim Jagielski void OReportWindow::Paste()
283*b1cdbd2cSJim Jagielski {
284*b1cdbd2cSJim Jagielski 
285*b1cdbd2cSJim Jagielski 	m_aViewsWindow.Paste();
286*b1cdbd2cSJim Jagielski }
287*b1cdbd2cSJim Jagielski //----------------------------------------------------------------------------
IsPasteAllowed() const288*b1cdbd2cSJim Jagielski sal_Bool OReportWindow::IsPasteAllowed() const
289*b1cdbd2cSJim Jagielski {
290*b1cdbd2cSJim Jagielski     return m_aViewsWindow.IsPasteAllowed();
291*b1cdbd2cSJim Jagielski }
292*b1cdbd2cSJim Jagielski //-----------------------------------------------------------------------------
SelectAll(const sal_uInt16 _nObjectType)293*b1cdbd2cSJim Jagielski void OReportWindow::SelectAll(const sal_uInt16 _nObjectType)
294*b1cdbd2cSJim Jagielski {
295*b1cdbd2cSJim Jagielski 
296*b1cdbd2cSJim Jagielski 	m_aViewsWindow.SelectAll(_nObjectType);
297*b1cdbd2cSJim Jagielski }
298*b1cdbd2cSJim Jagielski //-----------------------------------------------------------------------------
unmarkAllObjects(OSectionView * _pSectionView)299*b1cdbd2cSJim Jagielski void OReportWindow::unmarkAllObjects(OSectionView* _pSectionView)
300*b1cdbd2cSJim Jagielski {
301*b1cdbd2cSJim Jagielski 
302*b1cdbd2cSJim Jagielski 	m_aViewsWindow.unmarkAllObjects(_pSectionView);
303*b1cdbd2cSJim Jagielski }
304*b1cdbd2cSJim Jagielski //-----------------------------------------------------------------------------
showProperties(const uno::Reference<report::XSection> & _xReportComponent)305*b1cdbd2cSJim Jagielski void OReportWindow::showProperties(const uno::Reference< report::XSection>& _xReportComponent)
306*b1cdbd2cSJim Jagielski {
307*b1cdbd2cSJim Jagielski 	::boost::shared_ptr<OSectionWindow> pSectionWindow = m_aViewsWindow.getSectionWindow( _xReportComponent );
308*b1cdbd2cSJim Jagielski     m_pView->UpdatePropertyBrowserDelayed(pSectionWindow->getReportSection().getSectionView());
309*b1cdbd2cSJim Jagielski }
310*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------------
handleKeyEvent(const KeyEvent & _rEvent)311*b1cdbd2cSJim Jagielski sal_Bool OReportWindow::handleKeyEvent(const KeyEvent& _rEvent)
312*b1cdbd2cSJim Jagielski {
313*b1cdbd2cSJim Jagielski 	return m_aViewsWindow.handleKeyEvent(_rEvent);
314*b1cdbd2cSJim Jagielski }
315*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------
setMarked(OSectionView * _pSectionView,sal_Bool _bMark)316*b1cdbd2cSJim Jagielski void OReportWindow::setMarked(OSectionView* _pSectionView,sal_Bool _bMark)
317*b1cdbd2cSJim Jagielski {
318*b1cdbd2cSJim Jagielski 	if ( _pSectionView )
319*b1cdbd2cSJim Jagielski 		m_aViewsWindow.setMarked(_pSectionView,_bMark);
320*b1cdbd2cSJim Jagielski }
321*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------
setMarked(const uno::Reference<report::XSection> & _xSection,sal_Bool _bMark)322*b1cdbd2cSJim Jagielski void OReportWindow::setMarked(const uno::Reference< report::XSection>& _xSection,sal_Bool _bMark)
323*b1cdbd2cSJim Jagielski {
324*b1cdbd2cSJim Jagielski 
325*b1cdbd2cSJim Jagielski 	m_aViewsWindow.setMarked(_xSection,_bMark);
326*b1cdbd2cSJim Jagielski }
327*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------
setMarked(const uno::Sequence<uno::Reference<report::XReportComponent>> & _xShape,sal_Bool _bMark)328*b1cdbd2cSJim Jagielski void OReportWindow::setMarked(const uno::Sequence< uno::Reference< report::XReportComponent> >& _xShape,sal_Bool _bMark)
329*b1cdbd2cSJim Jagielski {
330*b1cdbd2cSJim Jagielski 
331*b1cdbd2cSJim Jagielski 	m_aViewsWindow.setMarked(_xShape,_bMark);
332*b1cdbd2cSJim Jagielski }
333*b1cdbd2cSJim Jagielski //-----------------------------------------------------------------------------
getMarkedSection(NearSectionAccess nsa) const334*b1cdbd2cSJim Jagielski ::boost::shared_ptr<OSectionWindow> OReportWindow::getMarkedSection(NearSectionAccess nsa) const
335*b1cdbd2cSJim Jagielski {
336*b1cdbd2cSJim Jagielski 	return  m_aViewsWindow.getMarkedSection(nsa);
337*b1cdbd2cSJim Jagielski }
338*b1cdbd2cSJim Jagielski //-----------------------------------------------------------------------------
getSectionWindow(const::com::sun::star::uno::Reference<::com::sun::star::report::XSection> & _xSection) const339*b1cdbd2cSJim Jagielski ::boost::shared_ptr<OSectionWindow> OReportWindow::getSectionWindow(const ::com::sun::star::uno::Reference< ::com::sun::star::report::XSection>& _xSection) const
340*b1cdbd2cSJim Jagielski {
341*b1cdbd2cSJim Jagielski 	return  m_aViewsWindow.getSectionWindow(_xSection);
342*b1cdbd2cSJim Jagielski }
343*b1cdbd2cSJim Jagielski // -------------------------------------------------------------------------
markSection(const sal_uInt16 _nPos)344*b1cdbd2cSJim Jagielski void OReportWindow::markSection(const sal_uInt16 _nPos)
345*b1cdbd2cSJim Jagielski {
346*b1cdbd2cSJim Jagielski 
347*b1cdbd2cSJim Jagielski     m_aViewsWindow.markSection(_nPos);
348*b1cdbd2cSJim Jagielski }
349*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------------
fillCollapsedSections(::std::vector<sal_uInt16> & _rCollapsedPositions) const350*b1cdbd2cSJim Jagielski void OReportWindow::fillCollapsedSections(::std::vector<sal_uInt16>& _rCollapsedPositions) const
351*b1cdbd2cSJim Jagielski {
352*b1cdbd2cSJim Jagielski 
353*b1cdbd2cSJim Jagielski     m_aViewsWindow.fillCollapsedSections(_rCollapsedPositions);
354*b1cdbd2cSJim Jagielski }
355*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------------
collapseSections(const uno::Sequence<::com::sun::star::beans::PropertyValue> & _aCollpasedSections)356*b1cdbd2cSJim Jagielski void OReportWindow::collapseSections(const uno::Sequence< ::com::sun::star::beans::PropertyValue>& _aCollpasedSections)
357*b1cdbd2cSJim Jagielski {
358*b1cdbd2cSJim Jagielski 
359*b1cdbd2cSJim Jagielski     m_aViewsWindow.collapseSections(_aCollpasedSections);
360*b1cdbd2cSJim Jagielski }
361*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------------
alignMarkedObjects(sal_Int32 _nControlModification,bool _bAlignAtSection,bool bBoundRects)362*b1cdbd2cSJim Jagielski void OReportWindow::alignMarkedObjects(sal_Int32 _nControlModification,bool _bAlignAtSection, bool bBoundRects)
363*b1cdbd2cSJim Jagielski {
364*b1cdbd2cSJim Jagielski 
365*b1cdbd2cSJim Jagielski     m_aViewsWindow.alignMarkedObjects(_nControlModification, _bAlignAtSection, bBoundRects);
366*b1cdbd2cSJim Jagielski }
367*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------------
setGridSnap(sal_Bool bOn)368*b1cdbd2cSJim Jagielski void OReportWindow::setGridSnap(sal_Bool bOn)
369*b1cdbd2cSJim Jagielski {
370*b1cdbd2cSJim Jagielski 
371*b1cdbd2cSJim Jagielski     m_aViewsWindow.setGridSnap(bOn);
372*b1cdbd2cSJim Jagielski }
373*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------------
setDragStripes(sal_Bool bOn)374*b1cdbd2cSJim Jagielski void OReportWindow::setDragStripes(sal_Bool bOn)
375*b1cdbd2cSJim Jagielski {
376*b1cdbd2cSJim Jagielski     m_aViewsWindow.setDragStripes(bOn);
377*b1cdbd2cSJim Jagielski }
378*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------------
getMarkedObjectCount() const379*b1cdbd2cSJim Jagielski sal_uInt32 OReportWindow::getMarkedObjectCount() const
380*b1cdbd2cSJim Jagielski {
381*b1cdbd2cSJim Jagielski     return m_aViewsWindow.getMarkedObjectCount();
382*b1cdbd2cSJim Jagielski }
383*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------------
zoom(const Fraction & _aZoom)384*b1cdbd2cSJim Jagielski void OReportWindow::zoom(const Fraction& _aZoom)
385*b1cdbd2cSJim Jagielski {
386*b1cdbd2cSJim Jagielski     m_aHRuler.SetZoom(_aZoom);
387*b1cdbd2cSJim Jagielski     m_aHRuler.Invalidate();
388*b1cdbd2cSJim Jagielski 
389*b1cdbd2cSJim Jagielski     //setZoomFactor(_aZoom,*this); // if this will be include the H - ruler has the wrong size
390*b1cdbd2cSJim Jagielski     m_aViewsWindow.zoom(_aZoom);
391*b1cdbd2cSJim Jagielski 
392*b1cdbd2cSJim Jagielski     notifySizeChanged();
393*b1cdbd2cSJim Jagielski     const Point aNewThumbPos( m_pParent->getThumbPos() );
394*b1cdbd2cSJim Jagielski 
395*b1cdbd2cSJim Jagielski     ScrollChildren( aNewThumbPos );
396*b1cdbd2cSJim Jagielski     Resize();
397*b1cdbd2cSJim Jagielski 
398*b1cdbd2cSJim Jagielski     Invalidate(INVALIDATE_NOERASE | INVALIDATE_NOCHILDREN | INVALIDATE_TRANSPARENT);
399*b1cdbd2cSJim Jagielski }
400*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------------
fillControlModelSelection(::std::vector<uno::Reference<uno::XInterface>> & _rSelection) const401*b1cdbd2cSJim Jagielski void OReportWindow::fillControlModelSelection(::std::vector< uno::Reference< uno::XInterface > >& _rSelection) const
402*b1cdbd2cSJim Jagielski {
403*b1cdbd2cSJim Jagielski     m_aViewsWindow.fillControlModelSelection(_rSelection);
404*b1cdbd2cSJim Jagielski }
405*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------------
impl_getRealPixelWidth() const406*b1cdbd2cSJim Jagielski sal_Int32 OReportWindow::impl_getRealPixelWidth() const
407*b1cdbd2cSJim Jagielski {
408*b1cdbd2cSJim Jagielski     const sal_Int32 nPaperWidth = getStyleProperty<awt::Size>(m_pView->getController().getReportDefinition(),PROPERTY_PAPERSIZE).Width;
409*b1cdbd2cSJim Jagielski     MapMode aMap( MAP_100TH_MM );
410*b1cdbd2cSJim Jagielski     const Size aPageSize = LogicToPixel(Size(nPaperWidth,0),aMap);
411*b1cdbd2cSJim Jagielski     return aPageSize.Width() + REPORT_ENDMARKER_WIDTH + REPORT_STARTMARKER_WIDTH + SECTION_OFFSET;
412*b1cdbd2cSJim Jagielski }
413*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------------
getZoomFactor(SvxZoomType _eType) const414*b1cdbd2cSJim Jagielski sal_uInt16 OReportWindow::getZoomFactor(SvxZoomType _eType) const
415*b1cdbd2cSJim Jagielski {
416*b1cdbd2cSJim Jagielski     sal_uInt16 nZoom(100);
417*b1cdbd2cSJim Jagielski     const Size aSize( GetSizePixel() );
418*b1cdbd2cSJim Jagielski     switch( _eType)
419*b1cdbd2cSJim Jagielski     {
420*b1cdbd2cSJim Jagielski         case SVX_ZOOM_PERCENT:
421*b1cdbd2cSJim Jagielski             nZoom = m_pView->getController().getZoomValue();
422*b1cdbd2cSJim Jagielski             break;
423*b1cdbd2cSJim Jagielski         case SVX_ZOOM_OPTIMAL:
424*b1cdbd2cSJim Jagielski             break;
425*b1cdbd2cSJim Jagielski         case SVX_ZOOM_WHOLEPAGE:
426*b1cdbd2cSJim Jagielski             {
427*b1cdbd2cSJim Jagielski                 nZoom = (sal_uInt16)(long)Fraction(aSize.Width()*100,impl_getRealPixelWidth());
428*b1cdbd2cSJim Jagielski                 MapMode aMap( MAP_100TH_MM );
429*b1cdbd2cSJim Jagielski                 const Size aHeight = m_aViewsWindow.LogicToPixel(m_aViewsWindow.PixelToLogic(Size(0,GetTotalHeight() + m_aHRuler.GetSizePixel().Height())),aMap);
430*b1cdbd2cSJim Jagielski                 nZoom = ::std::min(nZoom,(sal_uInt16)(long)Fraction(aSize.Height()*100,aHeight.Height()));
431*b1cdbd2cSJim Jagielski             }
432*b1cdbd2cSJim Jagielski             break;
433*b1cdbd2cSJim Jagielski         case SVX_ZOOM_PAGEWIDTH:
434*b1cdbd2cSJim Jagielski             nZoom = (sal_uInt16)(long)Fraction(aSize.Width()*100,impl_getRealPixelWidth());
435*b1cdbd2cSJim Jagielski             break;
436*b1cdbd2cSJim Jagielski         default:
437*b1cdbd2cSJim Jagielski             break;
438*b1cdbd2cSJim Jagielski     }
439*b1cdbd2cSJim Jagielski 
440*b1cdbd2cSJim Jagielski     return nZoom;
441*b1cdbd2cSJim Jagielski }
442*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------------
_propertyChanged(const beans::PropertyChangeEvent & _rEvent)443*b1cdbd2cSJim Jagielski void OReportWindow::_propertyChanged(const beans::PropertyChangeEvent& _rEvent) throw( uno::RuntimeException)
444*b1cdbd2cSJim Jagielski {
445*b1cdbd2cSJim Jagielski     (void)_rEvent;
446*b1cdbd2cSJim Jagielski     Resize();
447*b1cdbd2cSJim Jagielski     m_aViewsWindow.Resize();
448*b1cdbd2cSJim Jagielski     static sal_Int32 nIn = INVALIDATE_TRANSPARENT;
449*b1cdbd2cSJim Jagielski     Invalidate(nIn);
450*b1cdbd2cSJim Jagielski }
451*b1cdbd2cSJim Jagielski //==================================================================
452*b1cdbd2cSJim Jagielski }	//rptui
453*b1cdbd2cSJim Jagielski //==================================================================
454*b1cdbd2cSJim Jagielski 
455