xref: /aoo41x/main/sc/source/ui/view/colrowba.cxx (revision b3f79822)
1*b3f79822SAndrew Rist /**************************************************************
2cdf0e10cSrcweir  *
3*b3f79822SAndrew Rist  * Licensed to the Apache Software Foundation (ASF) under one
4*b3f79822SAndrew Rist  * or more contributor license agreements.  See the NOTICE file
5*b3f79822SAndrew Rist  * distributed with this work for additional information
6*b3f79822SAndrew Rist  * regarding copyright ownership.  The ASF licenses this file
7*b3f79822SAndrew Rist  * to you under the Apache License, Version 2.0 (the
8*b3f79822SAndrew Rist  * "License"); you may not use this file except in compliance
9*b3f79822SAndrew Rist  * with the License.  You may obtain a copy of the License at
10*b3f79822SAndrew Rist  *
11*b3f79822SAndrew Rist  *   http://www.apache.org/licenses/LICENSE-2.0
12*b3f79822SAndrew Rist  *
13*b3f79822SAndrew Rist  * Unless required by applicable law or agreed to in writing,
14*b3f79822SAndrew Rist  * software distributed under the License is distributed on an
15*b3f79822SAndrew Rist  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*b3f79822SAndrew Rist  * KIND, either express or implied.  See the License for the
17*b3f79822SAndrew Rist  * specific language governing permissions and limitations
18*b3f79822SAndrew Rist  * under the License.
19*b3f79822SAndrew Rist  *
20*b3f79822SAndrew Rist  *************************************************************/
21*b3f79822SAndrew Rist 
22*b3f79822SAndrew Rist 
23cdf0e10cSrcweir 
24cdf0e10cSrcweir // MARKER(update_precomp.py): autogen include statement, do not remove
25cdf0e10cSrcweir #include "precompiled_sc.hxx"
26cdf0e10cSrcweir 
27cdf0e10cSrcweir 
28cdf0e10cSrcweir 
29cdf0e10cSrcweir // INCLUDE ---------------------------------------------------------------
30cdf0e10cSrcweir 
31cdf0e10cSrcweir #include <svx/svdtrans.hxx>
32cdf0e10cSrcweir #include <unotools/localedatawrapper.hxx>
33cdf0e10cSrcweir 
34cdf0e10cSrcweir #include "colrowba.hxx"
35cdf0e10cSrcweir #include "document.hxx"
36cdf0e10cSrcweir #include "scmod.hxx"
37cdf0e10cSrcweir #include "tabvwsh.hxx"
38cdf0e10cSrcweir #include "docsh.hxx"
39cdf0e10cSrcweir #include "appoptio.hxx"
40cdf0e10cSrcweir #include "globstr.hrc"
41cdf0e10cSrcweir 
42cdf0e10cSrcweir // STATIC DATA -----------------------------------------------------------
43cdf0e10cSrcweir 
44cdf0e10cSrcweir //==================================================================
45cdf0e10cSrcweir 
lcl_MetricString(long nTwips,const String & rText)46cdf0e10cSrcweir String lcl_MetricString( long nTwips, const String& rText )
47cdf0e10cSrcweir {
48cdf0e10cSrcweir 	if ( nTwips <= 0 )
49cdf0e10cSrcweir 		return ScGlobal::GetRscString(STR_TIP_HIDE);
50cdf0e10cSrcweir 	else
51cdf0e10cSrcweir 	{
52cdf0e10cSrcweir 		FieldUnit eUserMet = SC_MOD()->GetAppOptions().GetAppMetric();
53cdf0e10cSrcweir 
54cdf0e10cSrcweir         sal_Int64 nUserVal = MetricField::ConvertValue( nTwips*100, 1, 2, FUNIT_TWIP, eUserMet );
55cdf0e10cSrcweir 
56cdf0e10cSrcweir 		String aStr = rText;
57cdf0e10cSrcweir 		aStr += ' ';
58cdf0e10cSrcweir         aStr += ScGlobal::pLocaleData->getNum( nUserVal, 2 );
59cdf0e10cSrcweir 		aStr += ' ';
60cdf0e10cSrcweir 		aStr += SdrFormatter::GetUnitStr(eUserMet);
61cdf0e10cSrcweir 
62cdf0e10cSrcweir 		return aStr;
63cdf0e10cSrcweir 	}
64cdf0e10cSrcweir }
65cdf0e10cSrcweir 
66cdf0e10cSrcweir //==================================================================
67cdf0e10cSrcweir 
ScColBar(Window * pParent,ScViewData * pData,ScHSplitPos eWhichPos,ScHeaderFunctionSet * pFunc,ScHeaderSelectionEngine * pEng)68cdf0e10cSrcweir ScColBar::ScColBar( Window* pParent, ScViewData* pData, ScHSplitPos eWhichPos,
69cdf0e10cSrcweir 					ScHeaderFunctionSet* pFunc, ScHeaderSelectionEngine* pEng ) :
70cdf0e10cSrcweir 			ScHeaderControl( pParent, pEng, MAXCOL+1, HDR_HORIZONTAL ),
71cdf0e10cSrcweir 			pViewData( pData ),
72cdf0e10cSrcweir 			eWhich( eWhichPos ),
73cdf0e10cSrcweir 			pFuncSet( pFunc ),
74cdf0e10cSrcweir 			pSelEngine( pEng )
75cdf0e10cSrcweir {
76cdf0e10cSrcweir 	Show();
77cdf0e10cSrcweir }
78cdf0e10cSrcweir 
~ScColBar()79cdf0e10cSrcweir ScColBar::~ScColBar()
80cdf0e10cSrcweir {
81cdf0e10cSrcweir }
82cdf0e10cSrcweir 
UseNumericHeader() const83cdf0e10cSrcweir inline sal_Bool ScColBar::UseNumericHeader() const
84cdf0e10cSrcweir {
85cdf0e10cSrcweir     return pViewData->GetDocument()->GetAddressConvention() == formula::FormulaGrammar::CONV_XL_R1C1;
86cdf0e10cSrcweir }
87cdf0e10cSrcweir 
GetPos()88cdf0e10cSrcweir SCCOLROW ScColBar::GetPos()
89cdf0e10cSrcweir {
90cdf0e10cSrcweir 	return pViewData->GetPosX(eWhich);
91cdf0e10cSrcweir }
92cdf0e10cSrcweir 
GetEntrySize(SCCOLROW nEntryNo)93cdf0e10cSrcweir sal_uInt16 ScColBar::GetEntrySize( SCCOLROW nEntryNo )
94cdf0e10cSrcweir {
95cdf0e10cSrcweir 	ScDocument* pDoc = pViewData->GetDocument();
96cdf0e10cSrcweir 	SCTAB nTab = pViewData->GetTabNo();
97cdf0e10cSrcweir 	SCCOL nLastCol = -1;
98cdf0e10cSrcweir 	if (pDoc->ColHidden(static_cast<SCCOL>(nEntryNo), nTab, nLastCol))
99cdf0e10cSrcweir 		return 0;
100cdf0e10cSrcweir 	else
101cdf0e10cSrcweir 		return (sal_uInt16) ScViewData::ToPixel( pDoc->GetColWidth( static_cast<SCCOL>(nEntryNo), nTab ), pViewData->GetPPTX() );
102cdf0e10cSrcweir }
103cdf0e10cSrcweir 
GetEntryText(SCCOLROW nEntryNo)104cdf0e10cSrcweir String ScColBar::GetEntryText( SCCOLROW nEntryNo )
105cdf0e10cSrcweir {
106cdf0e10cSrcweir 	return UseNumericHeader()
107cdf0e10cSrcweir 	    ? String::CreateFromInt32( nEntryNo + 1 )
108cdf0e10cSrcweir 	    : ScColToAlpha( static_cast<SCCOL>(nEntryNo) );
109cdf0e10cSrcweir }
110cdf0e10cSrcweir 
SetEntrySize(SCCOLROW nPos,sal_uInt16 nNewSize)111cdf0e10cSrcweir void ScColBar::SetEntrySize( SCCOLROW nPos, sal_uInt16 nNewSize )
112cdf0e10cSrcweir {
113cdf0e10cSrcweir 	sal_uInt16 nSizeTwips;
114cdf0e10cSrcweir 	ScSizeMode eMode = SC_SIZE_DIRECT;
115cdf0e10cSrcweir 	if (nNewSize>0 && nNewSize<10) nNewSize=10;				// (Pixel)
116cdf0e10cSrcweir 
117cdf0e10cSrcweir 	if ( nNewSize == HDR_SIZE_OPTIMUM )
118cdf0e10cSrcweir 	{
119cdf0e10cSrcweir 		nSizeTwips = STD_EXTRA_WIDTH;
120cdf0e10cSrcweir 		eMode = SC_SIZE_OPTIMAL;
121cdf0e10cSrcweir 	}
122cdf0e10cSrcweir 	else
123cdf0e10cSrcweir 		nSizeTwips = (sal_uInt16) ( nNewSize / pViewData->GetPPTX() );
124cdf0e10cSrcweir 
125cdf0e10cSrcweir 	ScMarkData& rMark = pViewData->GetMarkData();
126cdf0e10cSrcweir //	SCTAB nTab = pViewData->GetTabNo();
127cdf0e10cSrcweir 
128cdf0e10cSrcweir 	SCCOLROW* pRanges = new SCCOLROW[MAXCOL+1];
129cdf0e10cSrcweir 	SCCOL nRangeCnt = 0;
130cdf0e10cSrcweir 	if ( rMark.IsColumnMarked( static_cast<SCCOL>(nPos) ) )
131cdf0e10cSrcweir 	{
132cdf0e10cSrcweir 		SCCOL nStart = 0;
133cdf0e10cSrcweir 		while (nStart<=MAXCOL)
134cdf0e10cSrcweir 		{
135cdf0e10cSrcweir 			while (nStart<MAXCOL && !rMark.IsColumnMarked(nStart))
136cdf0e10cSrcweir 				++nStart;
137cdf0e10cSrcweir 			if (rMark.IsColumnMarked(nStart))
138cdf0e10cSrcweir 			{
139cdf0e10cSrcweir 				SCCOL nEnd = nStart;
140cdf0e10cSrcweir 				while (nEnd<MAXCOL && rMark.IsColumnMarked(nEnd))
141cdf0e10cSrcweir 					++nEnd;
142cdf0e10cSrcweir 				if (!rMark.IsColumnMarked(nEnd))
143cdf0e10cSrcweir 					--nEnd;
144cdf0e10cSrcweir 				pRanges[static_cast<size_t>(2*nRangeCnt)  ] = nStart;
145cdf0e10cSrcweir 				pRanges[static_cast<size_t>(2*nRangeCnt+1)] = nEnd;
146cdf0e10cSrcweir 				++nRangeCnt;
147cdf0e10cSrcweir 				nStart = nEnd+1;
148cdf0e10cSrcweir 			}
149cdf0e10cSrcweir 			else
150cdf0e10cSrcweir 				nStart = MAXCOL+1;
151cdf0e10cSrcweir 		}
152cdf0e10cSrcweir 	}
153cdf0e10cSrcweir 	else
154cdf0e10cSrcweir 	{
155cdf0e10cSrcweir 		pRanges[0] = nPos;
156cdf0e10cSrcweir 		pRanges[1] = nPos;
157cdf0e10cSrcweir 		nRangeCnt = 1;
158cdf0e10cSrcweir 	}
159cdf0e10cSrcweir 
160cdf0e10cSrcweir 	pViewData->GetView()->SetWidthOrHeight( sal_True, nRangeCnt, pRanges, eMode, nSizeTwips );
161cdf0e10cSrcweir 	delete[] pRanges;
162cdf0e10cSrcweir }
163cdf0e10cSrcweir 
HideEntries(SCCOLROW nStart,SCCOLROW nEnd)164cdf0e10cSrcweir void ScColBar::HideEntries( SCCOLROW nStart, SCCOLROW nEnd )
165cdf0e10cSrcweir {
166cdf0e10cSrcweir 	SCCOLROW nRange[2];
167cdf0e10cSrcweir 	nRange[0] = nStart;
168cdf0e10cSrcweir 	nRange[1] = nEnd;
169cdf0e10cSrcweir 	pViewData->GetView()->SetWidthOrHeight( sal_True, 1, nRange, SC_SIZE_DIRECT, 0 );
170cdf0e10cSrcweir }
171cdf0e10cSrcweir 
SetMarking(sal_Bool bSet)172cdf0e10cSrcweir void ScColBar::SetMarking( sal_Bool bSet )
173cdf0e10cSrcweir {
174cdf0e10cSrcweir 	pViewData->GetMarkData().SetMarking( bSet );
175cdf0e10cSrcweir 	if (!bSet)
176cdf0e10cSrcweir 	{
177cdf0e10cSrcweir 		pViewData->GetView()->UpdateAutoFillMark();
178cdf0e10cSrcweir 	}
179cdf0e10cSrcweir }
180cdf0e10cSrcweir 
SelectWindow()181cdf0e10cSrcweir void ScColBar::SelectWindow()
182cdf0e10cSrcweir {
183cdf0e10cSrcweir 	ScTabViewShell* pViewSh = pViewData->GetViewShell();
184cdf0e10cSrcweir 
185cdf0e10cSrcweir 	pViewSh->SetActive();			// Appear und SetViewFrame
186cdf0e10cSrcweir 	pViewSh->DrawDeselectAll();
187cdf0e10cSrcweir 
188cdf0e10cSrcweir 	ScSplitPos eActive = pViewData->GetActivePart();
189cdf0e10cSrcweir 	if (eWhich==SC_SPLIT_LEFT)
190cdf0e10cSrcweir 	{
191cdf0e10cSrcweir 		if (eActive==SC_SPLIT_TOPRIGHT)		eActive=SC_SPLIT_TOPLEFT;
192cdf0e10cSrcweir 		if (eActive==SC_SPLIT_BOTTOMRIGHT)	eActive=SC_SPLIT_BOTTOMLEFT;
193cdf0e10cSrcweir 	}
194cdf0e10cSrcweir 	else
195cdf0e10cSrcweir 	{
196cdf0e10cSrcweir 		if (eActive==SC_SPLIT_TOPLEFT)		eActive=SC_SPLIT_TOPRIGHT;
197cdf0e10cSrcweir 		if (eActive==SC_SPLIT_BOTTOMLEFT)	eActive=SC_SPLIT_BOTTOMRIGHT;
198cdf0e10cSrcweir 	}
199cdf0e10cSrcweir 	pViewSh->ActivatePart( eActive );
200cdf0e10cSrcweir 
201cdf0e10cSrcweir 	pFuncSet->SetColumn( sal_True );
202cdf0e10cSrcweir 	pFuncSet->SetWhich( eActive );
203cdf0e10cSrcweir 
204cdf0e10cSrcweir 	pViewSh->ActiveGrabFocus();
205cdf0e10cSrcweir }
206cdf0e10cSrcweir 
IsDisabled()207cdf0e10cSrcweir sal_Bool ScColBar::IsDisabled()
208cdf0e10cSrcweir {
209cdf0e10cSrcweir 	ScModule* pScMod = SC_MOD();
210cdf0e10cSrcweir 	return pScMod->IsFormulaMode() || pScMod->IsModalMode();
211cdf0e10cSrcweir }
212cdf0e10cSrcweir 
ResizeAllowed()213cdf0e10cSrcweir sal_Bool ScColBar::ResizeAllowed()
214cdf0e10cSrcweir {
215cdf0e10cSrcweir 	return !pViewData->HasEditView( pViewData->GetActivePart() ) &&
216cdf0e10cSrcweir 			!pViewData->GetDocShell()->IsReadOnly();
217cdf0e10cSrcweir }
218cdf0e10cSrcweir 
DrawInvert(long nDragPosP)219cdf0e10cSrcweir void ScColBar::DrawInvert( long nDragPosP )
220cdf0e10cSrcweir {
221cdf0e10cSrcweir 	Rectangle aRect( nDragPosP,0, nDragPosP+HDR_SLIDERSIZE-1,GetOutputSizePixel().Width()-1 );
222cdf0e10cSrcweir 	Update();
223cdf0e10cSrcweir 	Invert(aRect);
224cdf0e10cSrcweir 
225cdf0e10cSrcweir 	pViewData->GetView()->InvertVertical(eWhich,nDragPosP);
226cdf0e10cSrcweir }
227cdf0e10cSrcweir 
GetDragHelp(long nVal)228cdf0e10cSrcweir String ScColBar::GetDragHelp( long nVal )
229cdf0e10cSrcweir {
230cdf0e10cSrcweir 	long nTwips = (long) ( nVal / pViewData->GetPPTX() );
231cdf0e10cSrcweir 	return lcl_MetricString( nTwips, ScGlobal::GetRscString(STR_TIP_WIDTH) );
232cdf0e10cSrcweir }
233cdf0e10cSrcweir 
IsLayoutRTL()234cdf0e10cSrcweir sal_Bool ScColBar::IsLayoutRTL()		// overloaded only for columns
235cdf0e10cSrcweir {
236cdf0e10cSrcweir 	return pViewData->GetDocument()->IsLayoutRTL( pViewData->GetTabNo() );
237cdf0e10cSrcweir }
238cdf0e10cSrcweir 
239cdf0e10cSrcweir //==================================================================
240cdf0e10cSrcweir 
ScRowBar(Window * pParent,ScViewData * pData,ScVSplitPos eWhichPos,ScHeaderFunctionSet * pFunc,ScHeaderSelectionEngine * pEng)241cdf0e10cSrcweir ScRowBar::ScRowBar( Window* pParent, ScViewData* pData, ScVSplitPos eWhichPos,
242cdf0e10cSrcweir 					ScHeaderFunctionSet* pFunc, ScHeaderSelectionEngine* pEng ) :
243cdf0e10cSrcweir 			ScHeaderControl( pParent, pEng, MAXROW+1, HDR_VERTICAL ),
244cdf0e10cSrcweir 			pViewData( pData ),
245cdf0e10cSrcweir 			eWhich( eWhichPos ),
246cdf0e10cSrcweir 			pFuncSet( pFunc ),
247cdf0e10cSrcweir 			pSelEngine( pEng )
248cdf0e10cSrcweir {
249cdf0e10cSrcweir 	Show();
250cdf0e10cSrcweir }
251cdf0e10cSrcweir 
~ScRowBar()252cdf0e10cSrcweir ScRowBar::~ScRowBar()
253cdf0e10cSrcweir {
254cdf0e10cSrcweir }
255cdf0e10cSrcweir 
GetPos()256cdf0e10cSrcweir SCCOLROW ScRowBar::GetPos()
257cdf0e10cSrcweir {
258cdf0e10cSrcweir 	return pViewData->GetPosY(eWhich);
259cdf0e10cSrcweir }
260cdf0e10cSrcweir 
GetEntrySize(SCCOLROW nEntryNo)261cdf0e10cSrcweir sal_uInt16 ScRowBar::GetEntrySize( SCCOLROW nEntryNo )
262cdf0e10cSrcweir {
263cdf0e10cSrcweir 	ScDocument* pDoc = pViewData->GetDocument();
264cdf0e10cSrcweir 	SCTAB nTab = pViewData->GetTabNo();
265cdf0e10cSrcweir 	SCROW nLastRow = -1;
266cdf0e10cSrcweir 	if (pDoc->RowHidden(nEntryNo, nTab, nLastRow))
267cdf0e10cSrcweir 		return 0;
268cdf0e10cSrcweir 	else
269cdf0e10cSrcweir         return (sal_uInt16) ScViewData::ToPixel( pDoc->GetOriginalHeight( nEntryNo,
270cdf0e10cSrcweir                     nTab ), pViewData->GetPPTY() );
271cdf0e10cSrcweir }
272cdf0e10cSrcweir 
GetEntryText(SCCOLROW nEntryNo)273cdf0e10cSrcweir String ScRowBar::GetEntryText( SCCOLROW nEntryNo )
274cdf0e10cSrcweir {
275cdf0e10cSrcweir 	return String::CreateFromInt32( nEntryNo + 1 );
276cdf0e10cSrcweir }
277cdf0e10cSrcweir 
SetEntrySize(SCCOLROW nPos,sal_uInt16 nNewSize)278cdf0e10cSrcweir void ScRowBar::SetEntrySize( SCCOLROW nPos, sal_uInt16 nNewSize )
279cdf0e10cSrcweir {
280cdf0e10cSrcweir 	sal_uInt16 nSizeTwips;
281cdf0e10cSrcweir 	ScSizeMode eMode = SC_SIZE_DIRECT;
282cdf0e10cSrcweir 	if (nNewSize>0 && nNewSize<10) nNewSize=10;				// (Pixel)
283cdf0e10cSrcweir 
284cdf0e10cSrcweir 	if ( nNewSize == HDR_SIZE_OPTIMUM )
285cdf0e10cSrcweir 	{
286cdf0e10cSrcweir 		nSizeTwips = 0;
287cdf0e10cSrcweir 		eMode = SC_SIZE_OPTIMAL;
288cdf0e10cSrcweir 	}
289cdf0e10cSrcweir 	else
290cdf0e10cSrcweir 		nSizeTwips = (sal_uInt16) ( nNewSize / pViewData->GetPPTY() );
291cdf0e10cSrcweir 
292cdf0e10cSrcweir 	ScMarkData& rMark = pViewData->GetMarkData();
293cdf0e10cSrcweir //	SCTAB nTab = pViewData->GetTabNo();
294cdf0e10cSrcweir 
295cdf0e10cSrcweir 	SCCOLROW* pRanges = new SCCOLROW[MAXROW+1];
296cdf0e10cSrcweir 	SCROW nRangeCnt = 0;
297cdf0e10cSrcweir 	if ( rMark.IsRowMarked( nPos ) )
298cdf0e10cSrcweir 	{
299cdf0e10cSrcweir 		SCROW nStart = 0;
300cdf0e10cSrcweir 		while (nStart<=MAXROW)
301cdf0e10cSrcweir 		{
302cdf0e10cSrcweir 			while (nStart<MAXROW && !rMark.IsRowMarked(nStart))
303cdf0e10cSrcweir 				++nStart;
304cdf0e10cSrcweir 			if (rMark.IsRowMarked(nStart))
305cdf0e10cSrcweir 			{
306cdf0e10cSrcweir 				SCROW nEnd = nStart;
307cdf0e10cSrcweir 				while (nEnd<MAXROW && rMark.IsRowMarked(nEnd))
308cdf0e10cSrcweir 					++nEnd;
309cdf0e10cSrcweir 				if (!rMark.IsRowMarked(nEnd))
310cdf0e10cSrcweir 					--nEnd;
311cdf0e10cSrcweir 				pRanges[static_cast<size_t>(2*nRangeCnt)  ] = nStart;
312cdf0e10cSrcweir 				pRanges[static_cast<size_t>(2*nRangeCnt+1)] = nEnd;
313cdf0e10cSrcweir 				++nRangeCnt;
314cdf0e10cSrcweir 				nStart = nEnd+1;
315cdf0e10cSrcweir 			}
316cdf0e10cSrcweir 			else
317cdf0e10cSrcweir 				nStart = MAXROW+1;
318cdf0e10cSrcweir 		}
319cdf0e10cSrcweir 	}
320cdf0e10cSrcweir 	else
321cdf0e10cSrcweir 	{
322cdf0e10cSrcweir 		pRanges[0] = nPos;
323cdf0e10cSrcweir 		pRanges[1] = nPos;
324cdf0e10cSrcweir 		nRangeCnt = 1;
325cdf0e10cSrcweir 	}
326cdf0e10cSrcweir 
327cdf0e10cSrcweir 	pViewData->GetView()->SetWidthOrHeight( sal_False, nRangeCnt, pRanges, eMode, nSizeTwips );
328cdf0e10cSrcweir 	delete[] pRanges;
329cdf0e10cSrcweir }
330cdf0e10cSrcweir 
HideEntries(SCCOLROW nStart,SCCOLROW nEnd)331cdf0e10cSrcweir void ScRowBar::HideEntries( SCCOLROW nStart, SCCOLROW nEnd )
332cdf0e10cSrcweir {
333cdf0e10cSrcweir 	SCCOLROW nRange[2];
334cdf0e10cSrcweir 	nRange[0] = nStart;
335cdf0e10cSrcweir 	nRange[1] = nEnd;
336cdf0e10cSrcweir 	pViewData->GetView()->SetWidthOrHeight( sal_False, 1, nRange, SC_SIZE_DIRECT, 0 );
337cdf0e10cSrcweir }
338cdf0e10cSrcweir 
SetMarking(sal_Bool bSet)339cdf0e10cSrcweir void ScRowBar::SetMarking( sal_Bool bSet )
340cdf0e10cSrcweir {
341cdf0e10cSrcweir 	pViewData->GetMarkData().SetMarking( bSet );
342cdf0e10cSrcweir 	if (!bSet)
343cdf0e10cSrcweir 	{
344cdf0e10cSrcweir 		pViewData->GetView()->UpdateAutoFillMark();
345cdf0e10cSrcweir 	}
346cdf0e10cSrcweir }
347cdf0e10cSrcweir 
SelectWindow()348cdf0e10cSrcweir void ScRowBar::SelectWindow()
349cdf0e10cSrcweir {
350cdf0e10cSrcweir 	ScTabViewShell* pViewSh = pViewData->GetViewShell();
351cdf0e10cSrcweir 
352cdf0e10cSrcweir 	pViewSh->SetActive();			// Appear und SetViewFrame
353cdf0e10cSrcweir 	pViewSh->DrawDeselectAll();
354cdf0e10cSrcweir 
355cdf0e10cSrcweir 	ScSplitPos eActive = pViewData->GetActivePart();
356cdf0e10cSrcweir 	if (eWhich==SC_SPLIT_TOP)
357cdf0e10cSrcweir 	{
358cdf0e10cSrcweir 		if (eActive==SC_SPLIT_BOTTOMLEFT)	eActive=SC_SPLIT_TOPLEFT;
359cdf0e10cSrcweir 		if (eActive==SC_SPLIT_BOTTOMRIGHT)	eActive=SC_SPLIT_TOPRIGHT;
360cdf0e10cSrcweir 	}
361cdf0e10cSrcweir 	else
362cdf0e10cSrcweir 	{
363cdf0e10cSrcweir 		if (eActive==SC_SPLIT_TOPLEFT)		eActive=SC_SPLIT_BOTTOMLEFT;
364cdf0e10cSrcweir 		if (eActive==SC_SPLIT_TOPRIGHT)		eActive=SC_SPLIT_BOTTOMRIGHT;
365cdf0e10cSrcweir 	}
366cdf0e10cSrcweir 	pViewSh->ActivatePart( eActive );
367cdf0e10cSrcweir 
368cdf0e10cSrcweir 	pFuncSet->SetColumn( sal_False );
369cdf0e10cSrcweir 	pFuncSet->SetWhich( eActive );
370cdf0e10cSrcweir 
371cdf0e10cSrcweir 	pViewSh->ActiveGrabFocus();
372cdf0e10cSrcweir }
373cdf0e10cSrcweir 
IsDisabled()374cdf0e10cSrcweir sal_Bool ScRowBar::IsDisabled()
375cdf0e10cSrcweir {
376cdf0e10cSrcweir 	ScModule* pScMod = SC_MOD();
377cdf0e10cSrcweir 	return pScMod->IsFormulaMode() || pScMod->IsModalMode();
378cdf0e10cSrcweir }
379cdf0e10cSrcweir 
ResizeAllowed()380cdf0e10cSrcweir sal_Bool ScRowBar::ResizeAllowed()
381cdf0e10cSrcweir {
382cdf0e10cSrcweir 	return !pViewData->HasEditView( pViewData->GetActivePart() ) &&
383cdf0e10cSrcweir 			!pViewData->GetDocShell()->IsReadOnly();
384cdf0e10cSrcweir }
385cdf0e10cSrcweir 
DrawInvert(long nDragPosP)386cdf0e10cSrcweir void ScRowBar::DrawInvert( long nDragPosP )
387cdf0e10cSrcweir {
388cdf0e10cSrcweir 	Rectangle aRect( 0,nDragPosP, GetOutputSizePixel().Width()-1,nDragPosP+HDR_SLIDERSIZE-1 );
389cdf0e10cSrcweir 	Update();
390cdf0e10cSrcweir 	Invert(aRect);
391cdf0e10cSrcweir 
392cdf0e10cSrcweir 	pViewData->GetView()->InvertHorizontal(eWhich,nDragPosP);
393cdf0e10cSrcweir }
394cdf0e10cSrcweir 
GetDragHelp(long nVal)395cdf0e10cSrcweir String ScRowBar::GetDragHelp( long nVal )
396cdf0e10cSrcweir {
397cdf0e10cSrcweir 	long nTwips = (long) ( nVal / pViewData->GetPPTY() );
398cdf0e10cSrcweir 	return lcl_MetricString( nTwips, ScGlobal::GetRscString(STR_TIP_HEIGHT) );
399cdf0e10cSrcweir }
400cdf0e10cSrcweir 
401cdf0e10cSrcweir //	GetHiddenCount ist nur fuer Zeilen ueberladen
402cdf0e10cSrcweir 
GetHiddenCount(SCROW nEntryNo)403cdf0e10cSrcweir SCROW ScRowBar::GetHiddenCount( SCROW nEntryNo )
404cdf0e10cSrcweir {
405cdf0e10cSrcweir 	ScDocument* pDoc = pViewData->GetDocument();
406cdf0e10cSrcweir 	SCTAB nTab = pViewData->GetTabNo();
407cdf0e10cSrcweir 	return pDoc->GetHiddenRowCount( nEntryNo, nTab );
408cdf0e10cSrcweir }
409cdf0e10cSrcweir 
IsMirrored()410cdf0e10cSrcweir sal_Bool ScRowBar::IsMirrored()			// overloaded only for rows
411cdf0e10cSrcweir {
412cdf0e10cSrcweir 	return pViewData->GetDocument()->IsLayoutRTL( pViewData->GetTabNo() );
413cdf0e10cSrcweir }
414cdf0e10cSrcweir 
415cdf0e10cSrcweir 
416