xref: /aoo41x/main/sc/source/ui/attrdlg/condfrmt.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 #include <sfx2/dispatch.hxx>
29cdf0e10cSrcweir #include <svl/stritem.hxx>
30cdf0e10cSrcweir 
31cdf0e10cSrcweir #include "tabvwsh.hxx"
32cdf0e10cSrcweir #include "reffact.hxx"
33cdf0e10cSrcweir #include "conditio.hxx"
34cdf0e10cSrcweir #include "stlpool.hxx"
35cdf0e10cSrcweir #include "uiitems.hxx"
36cdf0e10cSrcweir #include "document.hxx"
37cdf0e10cSrcweir #include "scresid.hxx"
38cdf0e10cSrcweir 
39cdf0e10cSrcweir #include "condfrmt.hrc"
40cdf0e10cSrcweir #include "globstr.hrc"
41cdf0e10cSrcweir 
42cdf0e10cSrcweir #define _CONDFRMT_CXX
43cdf0e10cSrcweir #include "condfrmt.hxx"
44cdf0e10cSrcweir #undef _CONDFRMT_CXX
45cdf0e10cSrcweir 
46cdf0e10cSrcweir 
47cdf0e10cSrcweir //============================================================================
48cdf0e10cSrcweir //	class ScConditionalFormat
49cdf0e10cSrcweir 
50cdf0e10cSrcweir //----------------------------------------------------------------------------
51cdf0e10cSrcweir // Konstruktor
52cdf0e10cSrcweir 
ScConditionalFormatDlg(SfxBindings * pB,SfxChildWindow * pCW,Window * pParent,ScDocument * pCurDoc,const ScConditionalFormat * pCurrentFormat)53cdf0e10cSrcweir ScConditionalFormatDlg::ScConditionalFormatDlg(
54cdf0e10cSrcweir 			SfxBindings* pB, SfxChildWindow* pCW, Window* pParent,
55cdf0e10cSrcweir 			ScDocument* pCurDoc,
56cdf0e10cSrcweir 			const ScConditionalFormat* pCurrentFormat )
57cdf0e10cSrcweir 	:	ScAnyRefDlg			( pB, pCW, pParent, RID_SCDLG_CONDFORMAT ),
58cdf0e10cSrcweir 
59cdf0e10cSrcweir 		aCbxCond1			( this, ScResId( CBX_COND1 ) ),
60cdf0e10cSrcweir 		aLbCond11			( this, ScResId( LB_COND1_1 ) ),
61cdf0e10cSrcweir 		aLbCond12			( this, ScResId( LB_COND1_2 ) ),
62cdf0e10cSrcweir         aEdtCond11          ( this, this, ScResId( EDT_COND1_1 ) ),
63cdf0e10cSrcweir 		aRbCond11			( this, ScResId( RB_COND1_1 ), &aEdtCond11,this ),
64cdf0e10cSrcweir 		aFtCond1And			( this, ScResId( FT_COND1_AND ) ),
65cdf0e10cSrcweir         aEdtCond12          ( this, this, ScResId( EDT_COND1_2 ) ),
66cdf0e10cSrcweir 		aRbCond12			( this, ScResId( RB_COND1_2 ), &aEdtCond12,this ),
67cdf0e10cSrcweir 		aFtCond1Template	( this, ScResId( FT_COND1_TEMPLATE ) ),
68cdf0e10cSrcweir 		aLbCond1Template	( this, ScResId( LB_COND1_TEMPLATE ) ),
69cdf0e10cSrcweir         aBtnNew1            ( this, ScResId( BTN_COND1_NEW ) ),
70cdf0e10cSrcweir 
71cdf0e10cSrcweir 		aCbxCond2			( this, ScResId( CBX_COND2 ) ),
72cdf0e10cSrcweir 		aLbCond21			( this, ScResId( LB_COND2_1 ) ),
73cdf0e10cSrcweir 		aLbCond22			( this, ScResId( LB_COND2_2 ) ),
74cdf0e10cSrcweir         aEdtCond21          ( this, this, ScResId( EDT_COND2_1 ) ),
75cdf0e10cSrcweir 		aRbCond21			( this, ScResId( RB_COND2_1 ), &aEdtCond21,this ),
76cdf0e10cSrcweir 		aFtCond2And			( this, ScResId( FT_COND2_AND ) ),
77cdf0e10cSrcweir         aEdtCond22          ( this, this, ScResId( EDT_COND2_2 ) ),
78cdf0e10cSrcweir 		aRbCond22			( this, ScResId( RB_COND2_2 ), &aEdtCond22,this ),
79cdf0e10cSrcweir 		aFtCond2Template	( this, ScResId( FT_COND2_TEMPLATE ) ),
80cdf0e10cSrcweir 		aLbCond2Template	( this, ScResId( LB_COND2_TEMPLATE ) ),
81cdf0e10cSrcweir         aBtnNew2            ( this, ScResId( BTN_COND2_NEW ) ),
82cdf0e10cSrcweir 
83cdf0e10cSrcweir 		aCbxCond3			( this, ScResId( CBX_COND3 ) ),
84cdf0e10cSrcweir 		aLbCond31			( this, ScResId( LB_COND3_1 ) ),
85cdf0e10cSrcweir 		aLbCond32			( this, ScResId( LB_COND3_2 ) ),
86cdf0e10cSrcweir         aEdtCond31          ( this, this, ScResId( EDT_COND3_1 ) ),
87cdf0e10cSrcweir 		aRbCond31			( this, ScResId( RB_COND3_1 ), &aEdtCond31,this ),
88cdf0e10cSrcweir 		aFtCond3And			( this, ScResId( FT_COND3_AND ) ),
89cdf0e10cSrcweir         aEdtCond32          ( this, this, ScResId( EDT_COND3_2 ) ),
90cdf0e10cSrcweir 		aRbCond32			( this, ScResId( RB_COND3_2 ), &aEdtCond32,this ),
91cdf0e10cSrcweir 		aFtCond3Template	( this, ScResId( FT_COND3_TEMPLATE ) ),
92cdf0e10cSrcweir 		aLbCond3Template	( this, ScResId( LB_COND3_TEMPLATE ) ),
93cdf0e10cSrcweir         aBtnNew3            ( this, ScResId( BTN_COND3_NEW ) ),
94cdf0e10cSrcweir 
95cdf0e10cSrcweir 		aBtnOk				( this, ScResId( BTN_OK ) ),
96cdf0e10cSrcweir 		aBtnCancel			( this, ScResId( BTN_CANCEL ) ),
97cdf0e10cSrcweir 		aBtnHelp			( this, ScResId( BTN_HELP ) ),
98cdf0e10cSrcweir         aFlSep2             ( this, ScResId( FL_SEP2 ) ),
99cdf0e10cSrcweir         aFlSep1             ( this, ScResId( FL_SEP1 ) ),
100cdf0e10cSrcweir 		pEdActive			( NULL ),
101cdf0e10cSrcweir 		bDlgLostFocus       ( sal_False ),
102cdf0e10cSrcweir 
103cdf0e10cSrcweir 		pDoc				( pCurDoc )
104cdf0e10cSrcweir {
105cdf0e10cSrcweir 	Point aPos;
106cdf0e10cSrcweir 	String aName;
107cdf0e10cSrcweir 	SfxStyleSheetBase* pStyle;
108cdf0e10cSrcweir 
109cdf0e10cSrcweir 	FreeResource();
110cdf0e10cSrcweir 
111cdf0e10cSrcweir 	// Handler setzen
112cdf0e10cSrcweir 	aCbxCond1.SetClickHdl ( LINK( this, ScConditionalFormatDlg, ClickCond1Hdl ) );
113cdf0e10cSrcweir 	aLbCond11.SetSelectHdl( LINK( this, ScConditionalFormatDlg, ChangeCond11Hdl ) );
114cdf0e10cSrcweir 	aLbCond12.SetSelectHdl( LINK( this, ScConditionalFormatDlg, ChangeCond12Hdl ) );
115cdf0e10cSrcweir 
116cdf0e10cSrcweir 	aCbxCond2.SetClickHdl ( LINK( this, ScConditionalFormatDlg, ClickCond2Hdl ) );
117cdf0e10cSrcweir 	aLbCond21.SetSelectHdl( LINK( this, ScConditionalFormatDlg, ChangeCond21Hdl ) );
118cdf0e10cSrcweir 	aLbCond22.SetSelectHdl( LINK( this, ScConditionalFormatDlg, ChangeCond22Hdl ) );
119cdf0e10cSrcweir 
120cdf0e10cSrcweir 	aCbxCond3.SetClickHdl ( LINK( this, ScConditionalFormatDlg, ClickCond3Hdl ) );
121cdf0e10cSrcweir 	aLbCond31.SetSelectHdl( LINK( this, ScConditionalFormatDlg, ChangeCond31Hdl ) );
122cdf0e10cSrcweir 	aLbCond32.SetSelectHdl( LINK( this, ScConditionalFormatDlg, ChangeCond32Hdl ) );
123cdf0e10cSrcweir 
124cdf0e10cSrcweir 	aBtnOk.SetClickHdl    ( LINK( this, ScConditionalFormatDlg, BtnHdl ) );
125cdf0e10cSrcweir //?	aBtnCancel.SetClickHdl( LINK( this, ScConditionalFormatDlg, BtnHdl ) );
126cdf0e10cSrcweir 
127cdf0e10cSrcweir     Link aLink = LINK( this, ScConditionalFormatDlg, NewBtnHdl );
128cdf0e10cSrcweir     aBtnNew1.SetClickHdl( aLink );
129cdf0e10cSrcweir     aBtnNew2.SetClickHdl( aLink );
130cdf0e10cSrcweir     aBtnNew3.SetClickHdl( aLink );
131cdf0e10cSrcweir 
132cdf0e10cSrcweir     aLink = LINK( this, ScConditionalFormatDlg, GetFocusHdl );
133cdf0e10cSrcweir     aEdtCond11.SetGetFocusHdl( aLink );
134cdf0e10cSrcweir     aEdtCond12.SetGetFocusHdl( aLink );
135cdf0e10cSrcweir     aEdtCond21.SetGetFocusHdl( aLink );
136cdf0e10cSrcweir     aEdtCond22.SetGetFocusHdl( aLink );
137cdf0e10cSrcweir     aEdtCond31.SetGetFocusHdl( aLink );
138cdf0e10cSrcweir     aEdtCond32.SetGetFocusHdl( aLink );
139cdf0e10cSrcweir     aRbCond11.SetGetFocusHdl( aLink );
140cdf0e10cSrcweir     aRbCond12.SetGetFocusHdl( aLink );
141cdf0e10cSrcweir     aRbCond21.SetGetFocusHdl( aLink );
142cdf0e10cSrcweir     aRbCond22.SetGetFocusHdl( aLink );
143cdf0e10cSrcweir     aRbCond31.SetGetFocusHdl( aLink );
144cdf0e10cSrcweir     aRbCond32.SetGetFocusHdl( aLink );
145cdf0e10cSrcweir 
146cdf0e10cSrcweir     aLink = LINK( this, ScConditionalFormatDlg, LoseFocusHdl );
147cdf0e10cSrcweir     aEdtCond11.SetLoseFocusHdl( aLink );
148cdf0e10cSrcweir     aEdtCond12.SetLoseFocusHdl( aLink );
149cdf0e10cSrcweir     aEdtCond21.SetLoseFocusHdl( aLink );
150cdf0e10cSrcweir     aEdtCond22.SetLoseFocusHdl( aLink );
151cdf0e10cSrcweir     aEdtCond31.SetLoseFocusHdl( aLink );
152cdf0e10cSrcweir     aEdtCond32.SetLoseFocusHdl( aLink );
153cdf0e10cSrcweir     aRbCond11.SetLoseFocusHdl( aLink );
154cdf0e10cSrcweir     aRbCond12.SetLoseFocusHdl( aLink );
155cdf0e10cSrcweir     aRbCond21.SetLoseFocusHdl( aLink );
156cdf0e10cSrcweir     aRbCond22.SetLoseFocusHdl( aLink );
157cdf0e10cSrcweir     aRbCond31.SetLoseFocusHdl( aLink );
158cdf0e10cSrcweir     aRbCond32.SetLoseFocusHdl( aLink );
159cdf0e10cSrcweir 
160cdf0e10cSrcweir 	// Condition 1
161cdf0e10cSrcweir 	aCond1Pos1 = aLbCond12.GetPosPixel();		// Position Edit ohne Listbox
162cdf0e10cSrcweir 	aCond1Pos2 = aEdtCond11.GetPosPixel();		// Position Edit mit Listbox
163cdf0e10cSrcweir 	aRBtn1Pos1 = aRbCond11.GetPosPixel();
164cdf0e10cSrcweir 	aRBtn1Pos2 = aRbCond12.GetPosPixel();
165cdf0e10cSrcweir 	aPos = aEdtCond12.GetPosPixel();
166cdf0e10cSrcweir 	aPos.X() += aEdtCond12.GetSizePixel().Width();	// rechter Rand
167cdf0e10cSrcweir 	aCond1Size3 = aEdtCond11.GetSizePixel();
168cdf0e10cSrcweir 	aCond1Size2 = Size( aPos.X() - aCond1Pos2.X(), aCond1Size3.Height() );
169cdf0e10cSrcweir 	aCond1Size1 = Size( aPos.X() - aCond1Pos1.X(), aCond1Size3.Height() );
170cdf0e10cSrcweir 
171cdf0e10cSrcweir 	aCbxCond1.Check();
172cdf0e10cSrcweir 	aLbCond11.SelectEntryPos( 0 );
173cdf0e10cSrcweir 	aLbCond12.SelectEntryPos( 0 );
174cdf0e10cSrcweir 
175cdf0e10cSrcweir 	// Condition 2
176cdf0e10cSrcweir 	aCond2Pos1  = aLbCond22.GetPosPixel();		// Position Edit ohne Listbox
177cdf0e10cSrcweir 	aCond2Pos2  = aEdtCond21.GetPosPixel();		// Position Edit mit Listbox
178cdf0e10cSrcweir 	aRBtn2Pos1 = aRbCond21.GetPosPixel();
179cdf0e10cSrcweir 	aRBtn2Pos2 = aRbCond22.GetPosPixel();
180cdf0e10cSrcweir 	aPos = aEdtCond22.GetPosPixel();
181cdf0e10cSrcweir 	aPos.X() += aEdtCond22.GetSizePixel().Width();	// rechter Rand
182cdf0e10cSrcweir 	aCond2Size3 = aEdtCond21.GetSizePixel();
183cdf0e10cSrcweir 	aCond2Size2 = Size( aPos.X() - aCond2Pos2.X(), aCond2Size3.Height() );
184cdf0e10cSrcweir 	aCond2Size1 = Size( aPos.X() - aCond2Pos1.X(), aCond2Size3.Height() );
185cdf0e10cSrcweir 
186cdf0e10cSrcweir 	aCbxCond2.Check( sal_False );
187cdf0e10cSrcweir 	aLbCond21.SelectEntryPos( 0 );
188cdf0e10cSrcweir 	aLbCond22.SelectEntryPos( 0 );
189cdf0e10cSrcweir 
190cdf0e10cSrcweir 	// Condition 3
191cdf0e10cSrcweir 	aCond3Pos1  = aLbCond32.GetPosPixel();		// Position Edit ohne Listbox
192cdf0e10cSrcweir 	aCond3Pos2  = aEdtCond31.GetPosPixel();		// Position Edit mit Listbox
193cdf0e10cSrcweir 	aRBtn3Pos1 = aRbCond31.GetPosPixel();
194cdf0e10cSrcweir 	aRBtn3Pos2 = aRbCond32.GetPosPixel();
195cdf0e10cSrcweir 	aPos = aEdtCond32.GetPosPixel();
196cdf0e10cSrcweir 	aPos.X() += aEdtCond32.GetSizePixel().Width();	// rechter Rand
197cdf0e10cSrcweir 	aCond3Size3 = aEdtCond31.GetSizePixel();
198cdf0e10cSrcweir 	aCond3Size2 = Size( aPos.X() - aCond3Pos2.X(), aCond3Size3.Height() );
199cdf0e10cSrcweir 	aCond3Size1 = Size( aPos.X() - aCond3Pos1.X(), aCond3Size3.Height() );
200cdf0e10cSrcweir 
201cdf0e10cSrcweir 	aCbxCond3.Check( sal_False );
202cdf0e10cSrcweir 	aLbCond31.SelectEntryPos( 0 );
203cdf0e10cSrcweir 	aLbCond32.SelectEntryPos( 0 );
204cdf0e10cSrcweir 
205cdf0e10cSrcweir 	// Vorlagen aus pDoc holen
206cdf0e10cSrcweir 	SfxStyleSheetIterator aStyleIter( pDoc->GetStyleSheetPool(), SFX_STYLE_FAMILY_PARA );
207cdf0e10cSrcweir 	for ( pStyle = aStyleIter.First(); pStyle; pStyle = aStyleIter.Next() )
208cdf0e10cSrcweir 	{
209cdf0e10cSrcweir 		aName = pStyle->GetName();
210cdf0e10cSrcweir 		aLbCond1Template.InsertEntry( aName );
211cdf0e10cSrcweir 		aLbCond2Template.InsertEntry( aName );
212cdf0e10cSrcweir 		aLbCond3Template.InsertEntry( aName );
213cdf0e10cSrcweir 	}
214cdf0e10cSrcweir 
215cdf0e10cSrcweir 	// Vorlagen eintragen
216cdf0e10cSrcweir //!	pStyle = pDoc->GetSelectionStyle( /* ??? const ScMarkData& rMark ??? */ );
217cdf0e10cSrcweir 	pStyle = NULL;	//!
218cdf0e10cSrcweir 	if (pStyle)
219cdf0e10cSrcweir 		aName = pStyle->GetName();
220cdf0e10cSrcweir 	else
221cdf0e10cSrcweir 		aName = ScGlobal::GetRscString(STR_STYLENAME_STANDARD);
222cdf0e10cSrcweir 	aLbCond1Template.SelectEntry( aName );
223cdf0e10cSrcweir 	aLbCond2Template.SelectEntry( aName );
224cdf0e10cSrcweir 	aLbCond3Template.SelectEntry( aName );
225cdf0e10cSrcweir 
226cdf0e10cSrcweir 	ScAddress aCurPos;
227cdf0e10cSrcweir 	ScTabViewShell* pViewShell = ScTabViewShell::GetActiveViewShell();
228cdf0e10cSrcweir 	if (pViewShell)
229cdf0e10cSrcweir 	{
230cdf0e10cSrcweir 		ScViewData* pData = pViewShell->GetViewData();
231cdf0e10cSrcweir 		aCurPos = ScAddress( pData->GetCurX(), pData->GetCurY(), pData->GetTabNo() );
232cdf0e10cSrcweir 	}
233cdf0e10cSrcweir 
234cdf0e10cSrcweir 	// Inhalt aus ConditionalFormat holen
235cdf0e10cSrcweir 	if ( pCurrentFormat )
236cdf0e10cSrcweir 	{
237cdf0e10cSrcweir 		const ScCondFormatEntry* pEntry;
238cdf0e10cSrcweir 		if ( pCurrentFormat->Count() > 0 )
239cdf0e10cSrcweir 		{
240cdf0e10cSrcweir 			pEntry= pCurrentFormat->GetEntry( 0 );
241cdf0e10cSrcweir 			aEdtCond11.SetText( pEntry->GetExpression( aCurPos, 0 ) );
242cdf0e10cSrcweir 			aLbCond1Template.SelectEntry( pEntry->GetStyle() );
243cdf0e10cSrcweir 
244cdf0e10cSrcweir 			ScConditionMode	eMode = pEntry->GetOperation();
245cdf0e10cSrcweir 			if ( eMode == SC_COND_DIRECT )			// via Formel
246cdf0e10cSrcweir 			{
247cdf0e10cSrcweir 				aLbCond11.SelectEntryPos( 1 );
248cdf0e10cSrcweir 				ChangeCond11Hdl( NULL );
249cdf0e10cSrcweir 			}
250cdf0e10cSrcweir 			else if ( eMode == SC_COND_NONE )		// ???
251cdf0e10cSrcweir 				;
252cdf0e10cSrcweir 			else									// via Werte
253cdf0e10cSrcweir 			{
254cdf0e10cSrcweir                 aLbCond12.SelectEntryPos( sal::static_int_cast<sal_uInt16>( eMode ) );
255cdf0e10cSrcweir 				if ( ( eMode == SC_COND_BETWEEN ) || ( eMode == SC_COND_NOTBETWEEN ) )
256cdf0e10cSrcweir 					aEdtCond12.SetText( pEntry->GetExpression( aCurPos, 1 ) );
257cdf0e10cSrcweir 			}
258cdf0e10cSrcweir 		}
259cdf0e10cSrcweir 
260cdf0e10cSrcweir 
261cdf0e10cSrcweir 		if ( pCurrentFormat->Count() > 1 )
262cdf0e10cSrcweir 		{
263cdf0e10cSrcweir 			aCbxCond2.Check( sal_True );
264cdf0e10cSrcweir 			pEntry= pCurrentFormat->GetEntry( 1 );
265cdf0e10cSrcweir 			aEdtCond21.SetText( pEntry->GetExpression( aCurPos, 0 ) );
266cdf0e10cSrcweir 			aLbCond2Template.SelectEntry( pEntry->GetStyle() );
267cdf0e10cSrcweir 
268cdf0e10cSrcweir 			ScConditionMode	eMode = pEntry->GetOperation();
269cdf0e10cSrcweir 			if ( eMode == SC_COND_DIRECT )			// via Formel
270cdf0e10cSrcweir 			{
271cdf0e10cSrcweir 				aLbCond21.SelectEntryPos( 1 );
272cdf0e10cSrcweir 				ChangeCond21Hdl( NULL );
273cdf0e10cSrcweir 			}
274cdf0e10cSrcweir 			else if ( eMode == SC_COND_NONE )		// ???
275cdf0e10cSrcweir 				;
276cdf0e10cSrcweir 			else									// via Werte
277cdf0e10cSrcweir 			{
278cdf0e10cSrcweir                 aLbCond22.SelectEntryPos( sal::static_int_cast<sal_uInt16>( eMode ) );
279cdf0e10cSrcweir 				if ( ( eMode == SC_COND_BETWEEN ) || ( eMode == SC_COND_NOTBETWEEN ) )
280cdf0e10cSrcweir 					aEdtCond22.SetText( pEntry->GetExpression( aCurPos, 1 ) );
281cdf0e10cSrcweir 			}
282cdf0e10cSrcweir 		}
283cdf0e10cSrcweir 
284cdf0e10cSrcweir 		if ( pCurrentFormat->Count() > 2 )
285cdf0e10cSrcweir 		{
286cdf0e10cSrcweir 			aCbxCond3.Check( sal_True );
287cdf0e10cSrcweir 			pEntry= pCurrentFormat->GetEntry( 2 );
288cdf0e10cSrcweir 			aEdtCond31.SetText( pEntry->GetExpression( aCurPos, 0 ) );
289cdf0e10cSrcweir 			aLbCond3Template.SelectEntry( pEntry->GetStyle() );
290cdf0e10cSrcweir 
291cdf0e10cSrcweir 			ScConditionMode	eMode = pEntry->GetOperation();
292cdf0e10cSrcweir 			if ( eMode == SC_COND_DIRECT )			// via Formel
293cdf0e10cSrcweir 			{
294cdf0e10cSrcweir 				aLbCond31.SelectEntryPos( 1 );
295cdf0e10cSrcweir 				ChangeCond31Hdl( NULL );
296cdf0e10cSrcweir 			}
297cdf0e10cSrcweir 			else if ( eMode == SC_COND_NONE )		// ???
298cdf0e10cSrcweir 				;
299cdf0e10cSrcweir 			else									// via Werte
300cdf0e10cSrcweir 			{
301cdf0e10cSrcweir                 aLbCond32.SelectEntryPos( sal::static_int_cast<sal_uInt16>( eMode ) );
302cdf0e10cSrcweir 				if ( ( eMode == SC_COND_BETWEEN ) || ( eMode == SC_COND_NOTBETWEEN ) )
303cdf0e10cSrcweir 					aEdtCond32.SetText( pEntry->GetExpression( aCurPos, 1 ) );
304cdf0e10cSrcweir 			}
305cdf0e10cSrcweir 		}
306cdf0e10cSrcweir 	}
307cdf0e10cSrcweir 
308cdf0e10cSrcweir 	ClickCond1Hdl( NULL );
309cdf0e10cSrcweir 	ClickCond2Hdl( NULL );
310cdf0e10cSrcweir 	ClickCond3Hdl( NULL );
311cdf0e10cSrcweir 
312cdf0e10cSrcweir 	ChangeCond12Hdl( NULL );
313cdf0e10cSrcweir 	ChangeCond22Hdl( NULL );
314cdf0e10cSrcweir 	ChangeCond32Hdl( NULL );
315cdf0e10cSrcweir 
316cdf0e10cSrcweir 	aEdtCond11.GrabFocus();
317cdf0e10cSrcweir 	pEdActive = &aEdtCond11;
318cdf0e10cSrcweir 	//@BugID 54702 Enablen/Disablen nur noch in Basisklasse
319cdf0e10cSrcweir 	//SFX_APPWINDOW->Enable();		// Ref-Feld hat Focus
320cdf0e10cSrcweir //	SFX_APPWINDOW->Disable();
321cdf0e10cSrcweir 
322cdf0e10cSrcweir 	aLbCond11.SetAccessibleRelationLabeledBy( &aCbxCond1 );
323cdf0e10cSrcweir 	aLbCond12.SetAccessibleRelationLabeledBy( &aCbxCond1 );
324cdf0e10cSrcweir 	aEdtCond11.SetAccessibleRelationLabeledBy( &aCbxCond1 );
325cdf0e10cSrcweir 	aRbCond11.SetAccessibleRelationLabeledBy( &aCbxCond1 );
326cdf0e10cSrcweir 
327cdf0e10cSrcweir 	aLbCond21.SetAccessibleRelationLabeledBy( &aCbxCond2 );
328cdf0e10cSrcweir 	aLbCond22.SetAccessibleRelationLabeledBy( &aCbxCond2 );
329cdf0e10cSrcweir 	aEdtCond21.SetAccessibleRelationLabeledBy( &aCbxCond2 );
330cdf0e10cSrcweir 	aRbCond21.SetAccessibleRelationLabeledBy( &aCbxCond2 );
331cdf0e10cSrcweir 
332cdf0e10cSrcweir 	aLbCond31.SetAccessibleRelationLabeledBy( &aCbxCond3 );
333cdf0e10cSrcweir 	aLbCond32.SetAccessibleRelationLabeledBy( &aCbxCond3 );
334cdf0e10cSrcweir 	aEdtCond31.SetAccessibleRelationLabeledBy( &aCbxCond3 );
335cdf0e10cSrcweir 	aRbCond31.SetAccessibleRelationLabeledBy( &aCbxCond3 );
336cdf0e10cSrcweir 	aLbCond11.SetAccessibleName( ScResId(LABEL_FORMARTTING_CONDITIONS) );
337cdf0e10cSrcweir 	aLbCond12.SetAccessibleName( ScResId(LABEL_CONDITIONS) );
338cdf0e10cSrcweir 	aEdtCond11.SetAccessibleName( ScResId(LABEL_CONDITION_VALUE) );
339cdf0e10cSrcweir 
340cdf0e10cSrcweir 	aLbCond21.SetAccessibleName( ScResId(LABEL_FORMARTTING_CONDITIONS) );
341cdf0e10cSrcweir 	aLbCond22.SetAccessibleName( ScResId(LABEL_CONDITIONS) );
342cdf0e10cSrcweir 	aEdtCond21.SetAccessibleName( ScResId(LABEL_CONDITION_VALUE) );
343cdf0e10cSrcweir 
344cdf0e10cSrcweir 	aLbCond31.SetAccessibleName( ScResId(LABEL_FORMARTTING_CONDITIONS) );
345cdf0e10cSrcweir 	aLbCond32.SetAccessibleName( ScResId(LABEL_CONDITIONS) );
346cdf0e10cSrcweir 	aEdtCond31.SetAccessibleName( ScResId(LABEL_CONDITION_VALUE) );
347cdf0e10cSrcweir }
348cdf0e10cSrcweir 
349cdf0e10cSrcweir 
350cdf0e10cSrcweir //----------------------------------------------------------------------------
351cdf0e10cSrcweir // Destruktor
352cdf0e10cSrcweir 
~ScConditionalFormatDlg()353cdf0e10cSrcweir __EXPORT ScConditionalFormatDlg::~ScConditionalFormatDlg()
354cdf0e10cSrcweir {
355cdf0e10cSrcweir }
356cdf0e10cSrcweir 
357cdf0e10cSrcweir 
358cdf0e10cSrcweir //----------------------------------------------------------------------------
359cdf0e10cSrcweir 
SetReference(const ScRange & rRef,ScDocument * pDocP)360cdf0e10cSrcweir void ScConditionalFormatDlg::SetReference( const ScRange& rRef, ScDocument* pDocP )
361cdf0e10cSrcweir {
362cdf0e10cSrcweir 	if ( pEdActive )
363cdf0e10cSrcweir 	{
364cdf0e10cSrcweir 		if ( rRef.aStart != rRef.aEnd )
365cdf0e10cSrcweir 			RefInputStart(pEdActive);
366cdf0e10cSrcweir 
367cdf0e10cSrcweir 		String aStr;
368cdf0e10cSrcweir 		rRef.Format( aStr, SCR_ABS_3D, pDocP, pDocP->GetAddressConvention () );
369cdf0e10cSrcweir 		String aVal( pEdActive->GetText() );
370cdf0e10cSrcweir 		Selection aSel( pEdActive->GetSelection() );
371cdf0e10cSrcweir         aSel.Justify();
372cdf0e10cSrcweir 		aVal.Erase( (xub_StrLen)aSel.Min(), (xub_StrLen)aSel.Len() );
373cdf0e10cSrcweir 		aVal.Insert( aStr, (xub_StrLen)aSel.Min() );
374cdf0e10cSrcweir 		Selection aNewSel( aSel.Min(), aSel.Min()+aStr.Len() );
375cdf0e10cSrcweir 		pEdActive->SetRefString( aVal );
376cdf0e10cSrcweir 		pEdActive->SetSelection( aNewSel );
377cdf0e10cSrcweir //		pEdActive->SetModifyFlag();
378cdf0e10cSrcweir 	}
379cdf0e10cSrcweir }
380cdf0e10cSrcweir 
381cdf0e10cSrcweir //----------------------------------------------------------------------------
382cdf0e10cSrcweir 
AddRefEntry()383cdf0e10cSrcweir void ScConditionalFormatDlg::AddRefEntry()
384cdf0e10cSrcweir {
385cdf0e10cSrcweir 	if ( pEdActive )
386cdf0e10cSrcweir 	{
387cdf0e10cSrcweir 		String aVal = pEdActive->GetText();
388cdf0e10cSrcweir 		aVal += ';';
389cdf0e10cSrcweir 		pEdActive->SetText(aVal);
390cdf0e10cSrcweir 
391cdf0e10cSrcweir 		xub_StrLen nLen = aVal.Len();
392cdf0e10cSrcweir 		pEdActive->SetSelection( Selection( nLen, nLen ) );
393cdf0e10cSrcweir //		pEdActive->SetModifyFlag();
394cdf0e10cSrcweir 	}
395cdf0e10cSrcweir }
396cdf0e10cSrcweir 
397cdf0e10cSrcweir //----------------------------------------------------------------------------
398cdf0e10cSrcweir 
IsRefInputMode() const399cdf0e10cSrcweir sal_Bool ScConditionalFormatDlg::IsRefInputMode() const
400cdf0e10cSrcweir {
401cdf0e10cSrcweir 	return (pEdActive != NULL);
402cdf0e10cSrcweir }
403cdf0e10cSrcweir 
404cdf0e10cSrcweir 
405cdf0e10cSrcweir //----------------------------------------------------------------------------
406cdf0e10cSrcweir 
SetActive()407cdf0e10cSrcweir void ScConditionalFormatDlg::SetActive()
408cdf0e10cSrcweir {
409cdf0e10cSrcweir 	if ( bDlgLostFocus )
410cdf0e10cSrcweir 	{
411cdf0e10cSrcweir 		bDlgLostFocus = sal_False;
412cdf0e10cSrcweir         if( pEdActive )
413cdf0e10cSrcweir             pEdActive->GrabFocus();
414cdf0e10cSrcweir 	}
415cdf0e10cSrcweir 	else
416cdf0e10cSrcweir 		GrabFocus();
417cdf0e10cSrcweir 
418cdf0e10cSrcweir 	RefInputDone();
419cdf0e10cSrcweir }
420cdf0e10cSrcweir 
421cdf0e10cSrcweir 
422cdf0e10cSrcweir //----------------------------------------------------------------------------
423cdf0e10cSrcweir // Holt die ausgewaehlte bedingte Formatierung ab
424cdf0e10cSrcweir 
GetConditionalFormat(ScConditionalFormat & rCndFmt)425cdf0e10cSrcweir void ScConditionalFormatDlg::GetConditionalFormat( ScConditionalFormat& rCndFmt )
426cdf0e10cSrcweir {
427cdf0e10cSrcweir 	ScConditionMode eOper;
428cdf0e10cSrcweir 	String sExpr1;
429cdf0e10cSrcweir 	String sExpr2;
430cdf0e10cSrcweir 	String sStyle;
431cdf0e10cSrcweir 	ScAddress aCurPos;
432cdf0e10cSrcweir 
433cdf0e10cSrcweir 	ScTabViewShell* pViewShell = ScTabViewShell::GetActiveViewShell();
434cdf0e10cSrcweir 	if (pViewShell)
435cdf0e10cSrcweir 	{
436cdf0e10cSrcweir 		ScViewData* pData = pViewShell->GetViewData();
437cdf0e10cSrcweir 		aCurPos = ScAddress( pData->GetCurX(), pData->GetCurY(), pData->GetTabNo() );
438cdf0e10cSrcweir 	}
439cdf0e10cSrcweir 
440cdf0e10cSrcweir 	if ( aCbxCond1.IsChecked() )
441cdf0e10cSrcweir 	{
442cdf0e10cSrcweir 		if ( aLbCond11.GetSelectEntryPos() == 1 )	// via Formel
443cdf0e10cSrcweir 			eOper = SC_COND_DIRECT;
444cdf0e10cSrcweir 		else
445cdf0e10cSrcweir 			eOper = (ScConditionMode)aLbCond12.GetSelectEntryPos();
446cdf0e10cSrcweir 		sExpr1 = aEdtCond11.GetText();
447cdf0e10cSrcweir 		sExpr2 = aEdtCond12.GetText();
448cdf0e10cSrcweir 		sStyle = aLbCond1Template.GetSelectEntry();
449cdf0e10cSrcweir 		ScCondFormatEntry aNewEntry( eOper, sExpr1, sExpr2, pDoc, aCurPos, sStyle );
450cdf0e10cSrcweir 		rCndFmt.AddEntry( aNewEntry );
451cdf0e10cSrcweir 	}
452cdf0e10cSrcweir 
453cdf0e10cSrcweir 	if ( aCbxCond2.IsChecked() )
454cdf0e10cSrcweir 	{
455cdf0e10cSrcweir 		if ( aLbCond21.GetSelectEntryPos() == 1 )	// via Formel???
456cdf0e10cSrcweir 			eOper = SC_COND_DIRECT;
457cdf0e10cSrcweir 		else
458cdf0e10cSrcweir 			eOper = (ScConditionMode)aLbCond22.GetSelectEntryPos();
459cdf0e10cSrcweir 		sExpr1 = aEdtCond21.GetText();
460cdf0e10cSrcweir 		sExpr2 = aEdtCond22.GetText();
461cdf0e10cSrcweir 		sStyle = aLbCond2Template.GetSelectEntry();
462cdf0e10cSrcweir 		ScCondFormatEntry aNewEntry( eOper, sExpr1, sExpr2, pDoc, aCurPos, sStyle );
463cdf0e10cSrcweir 		rCndFmt.AddEntry( aNewEntry );
464cdf0e10cSrcweir 	}
465cdf0e10cSrcweir 
466cdf0e10cSrcweir 	if ( aCbxCond3.IsChecked() )
467cdf0e10cSrcweir 	{
468cdf0e10cSrcweir 		if ( aLbCond31.GetSelectEntryPos() == 1 )	// via Formel???
469cdf0e10cSrcweir 			eOper = SC_COND_DIRECT;
470cdf0e10cSrcweir 		else
471cdf0e10cSrcweir 			eOper = (ScConditionMode)aLbCond32.GetSelectEntryPos();
472cdf0e10cSrcweir 		sExpr1 = aEdtCond31.GetText();
473cdf0e10cSrcweir 		sExpr2 = aEdtCond32.GetText();
474cdf0e10cSrcweir 		sStyle = aLbCond3Template.GetSelectEntry();
475cdf0e10cSrcweir 		ScCondFormatEntry aNewEntry( eOper, sExpr1, sExpr2, pDoc, aCurPos, sStyle );
476cdf0e10cSrcweir 		rCndFmt.AddEntry( aNewEntry );
477cdf0e10cSrcweir 	}
478cdf0e10cSrcweir }
479cdf0e10cSrcweir 
480cdf0e10cSrcweir 
481cdf0e10cSrcweir //----------------------------------------------------------------------------
482cdf0e10cSrcweir // Zerstoert den Dialog
483cdf0e10cSrcweir 
Close()484cdf0e10cSrcweir sal_Bool ScConditionalFormatDlg::Close()
485cdf0e10cSrcweir {
486cdf0e10cSrcweir 	return DoClose( ScCondFormatDlgWrapper::GetChildWindowId() );
487cdf0e10cSrcweir }
488cdf0e10cSrcweir 
489cdf0e10cSrcweir 
490cdf0e10cSrcweir //----------------------------------------------------------------------------
491cdf0e10cSrcweir // Handler:
492cdf0e10cSrcweir 
493cdf0e10cSrcweir //----------------------------------------------------------------------------
494cdf0e10cSrcweir // Enabled/Disabled Condition1-Controls
495cdf0e10cSrcweir 
IMPL_LINK(ScConditionalFormatDlg,ClickCond1Hdl,void *,EMPTYARG)496cdf0e10cSrcweir IMPL_LINK( ScConditionalFormatDlg, ClickCond1Hdl, void *, EMPTYARG )
497cdf0e10cSrcweir {
498cdf0e10cSrcweir 	sal_Bool bChecked = aCbxCond1.IsChecked();
499cdf0e10cSrcweir 
500cdf0e10cSrcweir 	aLbCond11.Enable( bChecked );
501cdf0e10cSrcweir 	aLbCond12.Enable( bChecked );
502cdf0e10cSrcweir 	aEdtCond11.Enable( bChecked );
503cdf0e10cSrcweir 	aRbCond11.Enable( bChecked );
504cdf0e10cSrcweir 	aFtCond1And.Enable( bChecked );
505cdf0e10cSrcweir 	aEdtCond12.Enable( bChecked );
506cdf0e10cSrcweir 	aRbCond12.Enable( bChecked );
507cdf0e10cSrcweir 	aFtCond1Template.Enable( bChecked );
508cdf0e10cSrcweir 	aLbCond1Template.Enable( bChecked );
509cdf0e10cSrcweir     aBtnNew1.Enable( bChecked );
510cdf0e10cSrcweir 
511cdf0e10cSrcweir 	return( 0L );
512cdf0e10cSrcweir }
513cdf0e10cSrcweir 
514cdf0e10cSrcweir 
515cdf0e10cSrcweir //----------------------------------------------------------------------------
516cdf0e10cSrcweir // Zellwert/Formel
517cdf0e10cSrcweir 
IMPL_LINK(ScConditionalFormatDlg,ChangeCond11Hdl,void *,EMPTYARG)518cdf0e10cSrcweir IMPL_LINK( ScConditionalFormatDlg, ChangeCond11Hdl, void *, EMPTYARG )
519cdf0e10cSrcweir {
520cdf0e10cSrcweir 	sal_uInt16 nPos = aLbCond11.GetSelectEntryPos();
521cdf0e10cSrcweir 
522cdf0e10cSrcweir 	if( nPos == 0 ) // Zellwert
523cdf0e10cSrcweir 	{
524cdf0e10cSrcweir 		aLbCond12.Show();
525cdf0e10cSrcweir 		aEdtCond11.SetPosPixel( aCond1Pos2 );
526cdf0e10cSrcweir 	}
527cdf0e10cSrcweir 	else // Formel
528cdf0e10cSrcweir 	{
529cdf0e10cSrcweir 		aLbCond12.Hide();
530cdf0e10cSrcweir 		aFtCond1And.Hide();
531cdf0e10cSrcweir 		aEdtCond12.Hide();
532cdf0e10cSrcweir 		aRbCond12.Hide();
533cdf0e10cSrcweir 		aRbCond11.SetPosPixel( aRBtn1Pos2 );
534cdf0e10cSrcweir 		aEdtCond11.SetPosSizePixel( aCond1Pos1, aCond1Size1 );
535cdf0e10cSrcweir 	}
536cdf0e10cSrcweir 
537cdf0e10cSrcweir 	ChangeCond12Hdl( NULL );
538cdf0e10cSrcweir 
539cdf0e10cSrcweir 	return( 0L );
540cdf0e10cSrcweir }
541cdf0e10cSrcweir 
542cdf0e10cSrcweir 
543cdf0e10cSrcweir //----------------------------------------------------------------------------
544cdf0e10cSrcweir // zwischen, gleich, groesser, ...
545cdf0e10cSrcweir 
IMPL_LINK(ScConditionalFormatDlg,ChangeCond12Hdl,void *,EMPTYARG)546cdf0e10cSrcweir IMPL_LINK( ScConditionalFormatDlg, ChangeCond12Hdl, void *, EMPTYARG )
547cdf0e10cSrcweir {
548cdf0e10cSrcweir 	if( aLbCond12.IsVisible() )
549cdf0e10cSrcweir 	{
550cdf0e10cSrcweir 		sal_uInt16 nPos = aLbCond12.GetSelectEntryPos();
551cdf0e10cSrcweir 
552cdf0e10cSrcweir 		if( nPos == 6  || nPos == 7 ) // zwischen, n. zwischen
553cdf0e10cSrcweir 		{
554cdf0e10cSrcweir 			aEdtCond11.SetSizePixel( aCond1Size3 );
555cdf0e10cSrcweir 			aRbCond11.SetPosPixel( aRBtn1Pos1 );
556cdf0e10cSrcweir 			aFtCond1And.Show();
557cdf0e10cSrcweir 			aEdtCond12.Show();
558cdf0e10cSrcweir 			aRbCond12.Show();
559cdf0e10cSrcweir 		}
560cdf0e10cSrcweir 		else // gleich, n. gleich ...
561cdf0e10cSrcweir 		{
562cdf0e10cSrcweir 			aEdtCond12.Hide();
563cdf0e10cSrcweir 			aRbCond12.Hide();
564cdf0e10cSrcweir 			aFtCond1And.Hide();
565cdf0e10cSrcweir 			aRbCond11.SetPosPixel( aRBtn1Pos2 );
566cdf0e10cSrcweir 			aEdtCond11.SetSizePixel( aCond1Size2 );
567cdf0e10cSrcweir 		}
568cdf0e10cSrcweir 	}
569cdf0e10cSrcweir 
570cdf0e10cSrcweir 	return( 0L );
571cdf0e10cSrcweir }
572cdf0e10cSrcweir 
573cdf0e10cSrcweir 
574cdf0e10cSrcweir //----------------------------------------------------------------------------
575cdf0e10cSrcweir // Enabled/Disabled Condition2-Controls
576cdf0e10cSrcweir 
IMPL_LINK(ScConditionalFormatDlg,ClickCond2Hdl,void *,EMPTYARG)577cdf0e10cSrcweir IMPL_LINK( ScConditionalFormatDlg, ClickCond2Hdl, void *, EMPTYARG )
578cdf0e10cSrcweir {
579cdf0e10cSrcweir 	sal_Bool bChecked = aCbxCond2.IsChecked();
580cdf0e10cSrcweir 
581cdf0e10cSrcweir 	aLbCond21.Enable( bChecked );
582cdf0e10cSrcweir 	aLbCond22.Enable( bChecked );
583cdf0e10cSrcweir 	aEdtCond21.Enable( bChecked );
584cdf0e10cSrcweir 	aRbCond21.Enable( bChecked );
585cdf0e10cSrcweir 	aFtCond2And.Enable( bChecked );
586cdf0e10cSrcweir 	aEdtCond22.Enable( bChecked );
587cdf0e10cSrcweir 	aRbCond22.Enable( bChecked );
588cdf0e10cSrcweir 	aFtCond2Template.Enable( bChecked );
589cdf0e10cSrcweir 	aLbCond2Template.Enable( bChecked );
590cdf0e10cSrcweir     aBtnNew2.Enable( bChecked );
591cdf0e10cSrcweir 
592cdf0e10cSrcweir 	return( 0L );
593cdf0e10cSrcweir }
594cdf0e10cSrcweir 
595cdf0e10cSrcweir 
596cdf0e10cSrcweir //----------------------------------------------------------------------------
597cdf0e10cSrcweir // Zellwert/Formel
598cdf0e10cSrcweir 
IMPL_LINK(ScConditionalFormatDlg,ChangeCond21Hdl,void *,EMPTYARG)599cdf0e10cSrcweir IMPL_LINK( ScConditionalFormatDlg, ChangeCond21Hdl, void *, EMPTYARG )
600cdf0e10cSrcweir {
601cdf0e10cSrcweir 	sal_uInt16 nPos = aLbCond21.GetSelectEntryPos();
602cdf0e10cSrcweir 
603cdf0e10cSrcweir 	if( nPos == 0 ) // Zellwert
604cdf0e10cSrcweir 	{
605cdf0e10cSrcweir 		aLbCond22.Show();
606cdf0e10cSrcweir 		aEdtCond21.SetPosPixel( aCond2Pos2 );
607cdf0e10cSrcweir 	}
608cdf0e10cSrcweir 	else // Formel
609cdf0e10cSrcweir 	{
610cdf0e10cSrcweir 		aLbCond22.Hide();
611cdf0e10cSrcweir 		aFtCond2And.Hide();
612cdf0e10cSrcweir 		aEdtCond22.Hide();
613cdf0e10cSrcweir 		aRbCond22.Hide();
614cdf0e10cSrcweir 		aRbCond21.SetPosPixel( aRBtn2Pos2 );
615cdf0e10cSrcweir 		aEdtCond21.SetPosSizePixel( aCond2Pos1, aCond2Size1 );
616cdf0e10cSrcweir 	}
617cdf0e10cSrcweir 
618cdf0e10cSrcweir 	ChangeCond22Hdl( NULL );
619cdf0e10cSrcweir 
620cdf0e10cSrcweir 	return( 0L );
621cdf0e10cSrcweir }
622cdf0e10cSrcweir 
623cdf0e10cSrcweir 
624cdf0e10cSrcweir //----------------------------------------------------------------------------
625cdf0e10cSrcweir // zwischen, gleich, groesser, ...
626cdf0e10cSrcweir 
IMPL_LINK(ScConditionalFormatDlg,ChangeCond22Hdl,void *,EMPTYARG)627cdf0e10cSrcweir IMPL_LINK( ScConditionalFormatDlg, ChangeCond22Hdl, void *, EMPTYARG )
628cdf0e10cSrcweir {
629cdf0e10cSrcweir 	if( aLbCond22.IsVisible() )
630cdf0e10cSrcweir 	{
631cdf0e10cSrcweir 		sal_uInt16 nPos = aLbCond22.GetSelectEntryPos();
632cdf0e10cSrcweir 
633cdf0e10cSrcweir 		if( nPos == 6  || nPos == 7 ) // zwischen, n. zwischen
634cdf0e10cSrcweir 		{
635cdf0e10cSrcweir 			aEdtCond21.SetSizePixel( aCond2Size3 );
636cdf0e10cSrcweir 			aRbCond21.SetPosPixel( aRBtn2Pos1 );
637cdf0e10cSrcweir 			aFtCond2And.Show();
638cdf0e10cSrcweir 			aEdtCond22.Show();
639cdf0e10cSrcweir 			aRbCond22.Show();
640cdf0e10cSrcweir 		}
641cdf0e10cSrcweir 		else // gleich, n. gleich ...
642cdf0e10cSrcweir 		{
643cdf0e10cSrcweir 			aEdtCond22.Hide();
644cdf0e10cSrcweir 			aRbCond22.Hide();
645cdf0e10cSrcweir 			aFtCond2And.Hide();
646cdf0e10cSrcweir 			aRbCond21.SetPosPixel( aRBtn2Pos2 );
647cdf0e10cSrcweir 			aEdtCond21.SetSizePixel( aCond2Size2 );
648cdf0e10cSrcweir 		}
649cdf0e10cSrcweir 	}
650cdf0e10cSrcweir 
651cdf0e10cSrcweir 	return( 0L );
652cdf0e10cSrcweir }
653cdf0e10cSrcweir 
654cdf0e10cSrcweir 
655cdf0e10cSrcweir //----------------------------------------------------------------------------
656cdf0e10cSrcweir // Enabled/Disabled Condition3-Controls
657cdf0e10cSrcweir 
IMPL_LINK(ScConditionalFormatDlg,ClickCond3Hdl,void *,EMPTYARG)658cdf0e10cSrcweir IMPL_LINK( ScConditionalFormatDlg, ClickCond3Hdl, void *, EMPTYARG )
659cdf0e10cSrcweir {
660cdf0e10cSrcweir 	sal_Bool bChecked = aCbxCond3.IsChecked();
661cdf0e10cSrcweir 
662cdf0e10cSrcweir 	aLbCond31.Enable( bChecked );
663cdf0e10cSrcweir 	aLbCond32.Enable( bChecked );
664cdf0e10cSrcweir 	aEdtCond31.Enable( bChecked );
665cdf0e10cSrcweir 	aRbCond31.Enable( bChecked );
666cdf0e10cSrcweir 	aFtCond3And.Enable( bChecked );
667cdf0e10cSrcweir 	aEdtCond32.Enable( bChecked );
668cdf0e10cSrcweir 	aRbCond32.Enable( bChecked );
669cdf0e10cSrcweir 	aFtCond3Template.Enable( bChecked );
670cdf0e10cSrcweir 	aLbCond3Template.Enable( bChecked );
671cdf0e10cSrcweir     aBtnNew3.Enable( bChecked );
672cdf0e10cSrcweir 
673cdf0e10cSrcweir 	return( 0L );
674cdf0e10cSrcweir }
675cdf0e10cSrcweir 
676cdf0e10cSrcweir 
677cdf0e10cSrcweir //----------------------------------------------------------------------------
678cdf0e10cSrcweir // Zellwert/Formel
679cdf0e10cSrcweir 
IMPL_LINK(ScConditionalFormatDlg,ChangeCond31Hdl,void *,EMPTYARG)680cdf0e10cSrcweir IMPL_LINK( ScConditionalFormatDlg, ChangeCond31Hdl, void *, EMPTYARG )
681cdf0e10cSrcweir {
682cdf0e10cSrcweir 	sal_uInt16 nPos = aLbCond31.GetSelectEntryPos();
683cdf0e10cSrcweir 
684cdf0e10cSrcweir 	if( nPos == 0 ) // Zellwert
685cdf0e10cSrcweir 	{
686cdf0e10cSrcweir 		aLbCond32.Show();
687cdf0e10cSrcweir 		aEdtCond31.SetPosPixel( aCond3Pos2 );
688cdf0e10cSrcweir 	}
689cdf0e10cSrcweir 	else // Formel
690cdf0e10cSrcweir 	{
691cdf0e10cSrcweir 		aLbCond32.Hide();
692cdf0e10cSrcweir 		aFtCond3And.Hide();
693cdf0e10cSrcweir 		aEdtCond32.Hide();
694cdf0e10cSrcweir 		aRbCond32.Hide();
695cdf0e10cSrcweir 		aRbCond31.SetPosPixel( aRBtn3Pos2 );
696cdf0e10cSrcweir 		aEdtCond31.SetPosSizePixel( aCond3Pos1, aCond3Size1 );
697cdf0e10cSrcweir 	}
698cdf0e10cSrcweir 
699cdf0e10cSrcweir 	ChangeCond32Hdl( NULL );
700cdf0e10cSrcweir 
701cdf0e10cSrcweir 	return( 0L );
702cdf0e10cSrcweir }
703cdf0e10cSrcweir 
704cdf0e10cSrcweir 
705cdf0e10cSrcweir //----------------------------------------------------------------------------
706cdf0e10cSrcweir // zwischen, gleich, groesser, ...
707cdf0e10cSrcweir 
IMPL_LINK(ScConditionalFormatDlg,ChangeCond32Hdl,void *,EMPTYARG)708cdf0e10cSrcweir IMPL_LINK( ScConditionalFormatDlg, ChangeCond32Hdl, void *, EMPTYARG )
709cdf0e10cSrcweir {
710cdf0e10cSrcweir 	if( aLbCond32.IsVisible() )
711cdf0e10cSrcweir 	{
712cdf0e10cSrcweir 		sal_uInt16 nPos = aLbCond32.GetSelectEntryPos();
713cdf0e10cSrcweir 
714cdf0e10cSrcweir 		if( nPos == 6  || nPos == 7 ) // zwischen, n. zwischen
715cdf0e10cSrcweir 		{
716cdf0e10cSrcweir 			aEdtCond31.SetSizePixel( aCond3Size3 );
717cdf0e10cSrcweir 			aRbCond31.SetPosPixel( aRBtn3Pos1 );
718cdf0e10cSrcweir 			aFtCond3And.Show();
719cdf0e10cSrcweir 			aEdtCond32.Show();
720cdf0e10cSrcweir 			aRbCond32.Show();
721cdf0e10cSrcweir 		}
722cdf0e10cSrcweir 		else // gleich, n. gleich ...
723cdf0e10cSrcweir 		{
724cdf0e10cSrcweir 			aEdtCond32.Hide();
725cdf0e10cSrcweir 			aRbCond32.Hide();
726cdf0e10cSrcweir 			aFtCond3And.Hide();
727cdf0e10cSrcweir 			aRbCond31.SetPosPixel( aRBtn3Pos2 );
728cdf0e10cSrcweir 			aEdtCond31.SetSizePixel( aCond3Size2 );
729cdf0e10cSrcweir 		}
730cdf0e10cSrcweir 	}
731cdf0e10cSrcweir 
732cdf0e10cSrcweir 	return( 0L );
733cdf0e10cSrcweir }
734cdf0e10cSrcweir 
735cdf0e10cSrcweir 
736cdf0e10cSrcweir //----------------------------------------------------------------------------
737cdf0e10cSrcweir 
IMPL_LINK(ScConditionalFormatDlg,GetFocusHdl,Control *,pCtrl)738cdf0e10cSrcweir IMPL_LINK( ScConditionalFormatDlg, GetFocusHdl, Control*, pCtrl )
739cdf0e10cSrcweir {
740cdf0e10cSrcweir     if( (pCtrl == (Control*)&aEdtCond11) || (pCtrl == (Control*)&aRbCond11) )
741cdf0e10cSrcweir         pEdActive = &aEdtCond11;
742cdf0e10cSrcweir     else if( (pCtrl == (Control*)&aEdtCond12) || (pCtrl == (Control*)&aRbCond12) )
743cdf0e10cSrcweir         pEdActive = &aEdtCond12;
744cdf0e10cSrcweir     else if( (pCtrl == (Control*)&aEdtCond21) || (pCtrl == (Control*)&aRbCond21) )
745cdf0e10cSrcweir         pEdActive = &aEdtCond21;
746cdf0e10cSrcweir     else if( (pCtrl == (Control*)&aEdtCond22) || (pCtrl == (Control*)&aRbCond22) )
747cdf0e10cSrcweir         pEdActive = &aEdtCond22;
748cdf0e10cSrcweir     else if( (pCtrl == (Control*)&aEdtCond31) || (pCtrl == (Control*)&aRbCond31) )
749cdf0e10cSrcweir         pEdActive = &aEdtCond31;
750cdf0e10cSrcweir     else if( (pCtrl == (Control*)&aEdtCond32) || (pCtrl == (Control*)&aRbCond32) )
751cdf0e10cSrcweir         pEdActive = &aEdtCond32;
752cdf0e10cSrcweir     else
753cdf0e10cSrcweir         pEdActive = NULL;
754cdf0e10cSrcweir 
755cdf0e10cSrcweir     if( pEdActive )
756cdf0e10cSrcweir         pEdActive->SetSelection( Selection( 0, SELECTION_MAX ) );
757cdf0e10cSrcweir 
758cdf0e10cSrcweir     return 0;
759cdf0e10cSrcweir }
760cdf0e10cSrcweir 
761cdf0e10cSrcweir 
762cdf0e10cSrcweir //----------------------------------------------------------------------------
763cdf0e10cSrcweir 
IMPL_LINK(ScConditionalFormatDlg,LoseFocusHdl,Control *,EMPTYARG)764cdf0e10cSrcweir IMPL_LINK( ScConditionalFormatDlg, LoseFocusHdl, Control*, EMPTYARG )
765cdf0e10cSrcweir {
766cdf0e10cSrcweir     bDlgLostFocus = !IsActive();
767cdf0e10cSrcweir     return 0;
768cdf0e10cSrcweir }
769cdf0e10cSrcweir 
770cdf0e10cSrcweir 
771cdf0e10cSrcweir //----------------------------------------------------------------------------
772cdf0e10cSrcweir //	[OK], [Cancel]
773cdf0e10cSrcweir 
IMPL_LINK(ScConditionalFormatDlg,BtnHdl,PushButton *,pBtn)774cdf0e10cSrcweir IMPL_LINK( ScConditionalFormatDlg, BtnHdl, PushButton*, pBtn )
775cdf0e10cSrcweir {
776cdf0e10cSrcweir 	if ( pBtn == &aBtnOk )
777cdf0e10cSrcweir 	{
778cdf0e10cSrcweir 		ScConditionalFormat aCondFrmt( 0, pDoc );
779cdf0e10cSrcweir 		GetConditionalFormat( aCondFrmt );
780cdf0e10cSrcweir 		ScCondFrmtItem aOutItem( FID_CONDITIONAL_FORMAT, aCondFrmt );
781cdf0e10cSrcweir 
782cdf0e10cSrcweir 		SetDispatcherLock( sal_False );
783cdf0e10cSrcweir 		SwitchToDocument();
784cdf0e10cSrcweir 		GetBindings().GetDispatcher()->Execute( FID_CONDITIONAL_FORMAT,
785cdf0e10cSrcweir 								  SFX_CALLMODE_SLOT | SFX_CALLMODE_RECORD,
786cdf0e10cSrcweir 								  &aOutItem, 0L, 0L );
787cdf0e10cSrcweir 		Close();
788cdf0e10cSrcweir 	}
789cdf0e10cSrcweir 	else if ( pBtn == &aBtnCancel )
790cdf0e10cSrcweir 		Close();
791cdf0e10cSrcweir 
792cdf0e10cSrcweir 	return( 0L );
793cdf0e10cSrcweir }
794cdf0e10cSrcweir 
795cdf0e10cSrcweir 
796cdf0e10cSrcweir //----------------------------------------------------------------------------
797cdf0e10cSrcweir 
IMPL_LINK(ScConditionalFormatDlg,NewBtnHdl,PushButton *,pBtn)798cdf0e10cSrcweir IMPL_LINK( ScConditionalFormatDlg, NewBtnHdl, PushButton*, pBtn )
799cdf0e10cSrcweir {
800cdf0e10cSrcweir     SfxUInt16Item aFamilyItem( SID_STYLE_FAMILY, SFX_STYLE_FAMILY_PARA );
801cdf0e10cSrcweir     SfxStringItem aRefItem( SID_STYLE_REFERENCE, ScGlobal::GetRscString(STR_STYLENAME_STANDARD) );
802cdf0e10cSrcweir 
803cdf0e10cSrcweir     // unlock the dispatcher so SID_STYLE_NEW can be executed
804cdf0e10cSrcweir     // (SetDispatcherLock would affect all Calc documents)
805cdf0e10cSrcweir     SfxDispatcher* pDisp = GetBindings().GetDispatcher();
806cdf0e10cSrcweir     sal_Bool bLocked = pDisp->IsLocked();
807cdf0e10cSrcweir     if (bLocked)
808cdf0e10cSrcweir         pDisp->Lock(sal_False);
809cdf0e10cSrcweir 
810cdf0e10cSrcweir     // Execute the "new style" slot, complete with undo and all necessary updates.
811cdf0e10cSrcweir     // The return value (SfxUInt16Item) is ignored, look for new styles instead.
812cdf0e10cSrcweir     pDisp->Execute( SID_STYLE_NEW, SFX_CALLMODE_SYNCHRON | SFX_CALLMODE_RECORD | SFX_CALLMODE_MODAL,
813cdf0e10cSrcweir                     &aFamilyItem,
814cdf0e10cSrcweir                     &aRefItem,
815cdf0e10cSrcweir                     0L );
816cdf0e10cSrcweir 
817cdf0e10cSrcweir     if (bLocked)
818cdf0e10cSrcweir         pDisp->Lock(sal_True);
819cdf0e10cSrcweir 
820cdf0e10cSrcweir     // Find the new style and add it into the style list boxes
821cdf0e10cSrcweir     String aNewStyle;
822cdf0e10cSrcweir     SfxStyleSheetIterator aStyleIter( pDoc->GetStyleSheetPool(), SFX_STYLE_FAMILY_PARA );
823cdf0e10cSrcweir     for ( SfxStyleSheetBase* pStyle = aStyleIter.First(); pStyle; pStyle = aStyleIter.Next() )
824cdf0e10cSrcweir     {
825cdf0e10cSrcweir         String aName = pStyle->GetName();
826cdf0e10cSrcweir         if ( aLbCond1Template.GetEntryPos(aName) == LISTBOX_ENTRY_NOTFOUND )    // all lists contain the same entries
827cdf0e10cSrcweir         {
828cdf0e10cSrcweir             aLbCond1Template.InsertEntry( aName );
829cdf0e10cSrcweir             aLbCond2Template.InsertEntry( aName );
830cdf0e10cSrcweir             aLbCond3Template.InsertEntry( aName );
831cdf0e10cSrcweir             // if there are several new styles (from API or a different view),
832cdf0e10cSrcweir             // assume the last one is the result of the dialog
833cdf0e10cSrcweir             aNewStyle = aName;
834cdf0e10cSrcweir         }
835cdf0e10cSrcweir     }
836cdf0e10cSrcweir 
837cdf0e10cSrcweir     // select the new style in the list box for which the button was pressed
838cdf0e10cSrcweir     if ( aNewStyle.Len() )
839cdf0e10cSrcweir     {
840cdf0e10cSrcweir         ListBox* pListBox = &aLbCond1Template;
841cdf0e10cSrcweir         if ( pBtn == &aBtnNew2 )
842cdf0e10cSrcweir             pListBox = &aLbCond2Template;
843cdf0e10cSrcweir         else if ( pBtn == &aBtnNew3 )
844cdf0e10cSrcweir             pListBox = &aLbCond3Template;
845cdf0e10cSrcweir 
846cdf0e10cSrcweir         pListBox->SelectEntry( aNewStyle );
847cdf0e10cSrcweir     }
848cdf0e10cSrcweir 
849cdf0e10cSrcweir     return 0;
850cdf0e10cSrcweir }
851cdf0e10cSrcweir 
852