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 
24*b1cdbd2cSJim Jagielski // MARKER(update_precomp.py): autogen include statement, do not remove
25*b1cdbd2cSJim Jagielski #include "precompiled_dbaccess.hxx"
26*b1cdbd2cSJim Jagielski 
27*b1cdbd2cSJim Jagielski #ifndef DBAUI_TABLEFIELDDESCRIPTION_HXX
28*b1cdbd2cSJim Jagielski #include "TableFieldDescWin.hxx"
29*b1cdbd2cSJim Jagielski #endif
30*b1cdbd2cSJim Jagielski #ifndef _TOOLS_DEBUG_HXX
31*b1cdbd2cSJim Jagielski #include <tools/debug.hxx>
32*b1cdbd2cSJim Jagielski #endif
33*b1cdbd2cSJim Jagielski #ifndef DBAUI_FIELDDESCRIPTIONS_HXX
34*b1cdbd2cSJim Jagielski #include "FieldDescriptions.hxx"
35*b1cdbd2cSJim Jagielski #endif
36*b1cdbd2cSJim Jagielski #ifndef _DBU_TBL_HRC_
37*b1cdbd2cSJim Jagielski #include "dbu_tbl.hrc"
38*b1cdbd2cSJim Jagielski #endif
39*b1cdbd2cSJim Jagielski #ifndef DBAUI_FIELDDESCRIPTIONS_HXX
40*b1cdbd2cSJim Jagielski #include "FieldDescriptions.hxx"
41*b1cdbd2cSJim Jagielski #endif
42*b1cdbd2cSJim Jagielski #ifndef DBAUI_TABLEDESIGNHELPBAR_HXX
43*b1cdbd2cSJim Jagielski #include "TableDesignHelpBar.hxx"
44*b1cdbd2cSJim Jagielski #endif
45*b1cdbd2cSJim Jagielski #ifndef _SV_FIXED_HXX
46*b1cdbd2cSJim Jagielski #include <vcl/fixed.hxx>
47*b1cdbd2cSJim Jagielski #endif
48*b1cdbd2cSJim Jagielski #ifndef _DBA_DBACCESS_HELPID_HRC_
49*b1cdbd2cSJim Jagielski #include "dbaccess_helpid.hrc"
50*b1cdbd2cSJim Jagielski #endif
51*b1cdbd2cSJim Jagielski #ifndef _DBAUI_MODULE_DBU_HXX_
52*b1cdbd2cSJim Jagielski #include "moduledbu.hxx"
53*b1cdbd2cSJim Jagielski #endif
54*b1cdbd2cSJim Jagielski #include <memory>
55*b1cdbd2cSJim Jagielski 
56*b1cdbd2cSJim Jagielski #define STANDARD_MARGIN					 6
57*b1cdbd2cSJim Jagielski #define DETAILS_HEADER_HEIGHT			25
58*b1cdbd2cSJim Jagielski #define CONTROL_SPACING_X	18	// 6
59*b1cdbd2cSJim Jagielski #define	CONTROL_SPACING_Y	5
60*b1cdbd2cSJim Jagielski #define CONTROL_HEIGHT		20
61*b1cdbd2cSJim Jagielski #define CONTROL_WIDTH_1		140	// 100
62*b1cdbd2cSJim Jagielski #define CONTROL_WIDTH_2		100 // 60
63*b1cdbd2cSJim Jagielski #define CONTROL_WIDTH_3		250
64*b1cdbd2cSJim Jagielski #define CONTROL_WIDTH_4		(CONTROL_WIDTH_3 - CONTROL_HEIGHT - 5)
65*b1cdbd2cSJim Jagielski #define DETAILS_OPT_PAGE_WIDTH			(CONTROL_WIDTH_1 + CONTROL_SPACING_X + CONTROL_WIDTH_4 + 50)
66*b1cdbd2cSJim Jagielski #define DETAILS_OPT_PAGE_HEIGHT			((CONTROL_HEIGHT + CONTROL_SPACING_Y) * 5)
67*b1cdbd2cSJim Jagielski #define DETAILS_MIN_HELP_WIDTH			100
68*b1cdbd2cSJim Jagielski #define DETAILS_OPT_HELP_WIDTH			200
69*b1cdbd2cSJim Jagielski #define DETAILS_MIN_HELP_HEIGHT			50
70*b1cdbd2cSJim Jagielski #define DETAILS_OPT_HELP_HEIGHT			100
71*b1cdbd2cSJim Jagielski 
72*b1cdbd2cSJim Jagielski 
73*b1cdbd2cSJim Jagielski using namespace dbaui;
74*b1cdbd2cSJim Jagielski //==================================================================
75*b1cdbd2cSJim Jagielski // class OTableFieldDescWin
76*b1cdbd2cSJim Jagielski //==================================================================
DBG_NAME(OTableFieldDescWin)77*b1cdbd2cSJim Jagielski DBG_NAME(OTableFieldDescWin)
78*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------------
79*b1cdbd2cSJim Jagielski OTableFieldDescWin::OTableFieldDescWin( Window* pParent)
80*b1cdbd2cSJim Jagielski 	:TabPage(pParent, WB_3DLOOK)
81*b1cdbd2cSJim Jagielski {
82*b1cdbd2cSJim Jagielski 	DBG_CTOR(OTableFieldDescWin,NULL);
83*b1cdbd2cSJim Jagielski 	//////////////////////////////////////////////////////////////////////
84*b1cdbd2cSJim Jagielski 	// Header
85*b1cdbd2cSJim Jagielski 	m_pHeader = new FixedText( this, WB_CENTER | WB_INFO );	//  | WB_3DLOOK
86*b1cdbd2cSJim Jagielski 	m_pHeader->SetText( String(ModuleRes(STR_TAB_PROPERTIES)) );
87*b1cdbd2cSJim Jagielski 	m_pHeader->Show();
88*b1cdbd2cSJim Jagielski 
89*b1cdbd2cSJim Jagielski 	//////////////////////////////////////////////////////////////////////
90*b1cdbd2cSJim Jagielski 	// HelpBar
91*b1cdbd2cSJim Jagielski 	m_pHelpBar = new OTableDesignHelpBar( this );
92*b1cdbd2cSJim Jagielski 	m_pHelpBar->SetHelpId(HID_TAB_DESIGN_HELP_TEXT_FRAME);
93*b1cdbd2cSJim Jagielski 	m_pHelpBar->Show();
94*b1cdbd2cSJim Jagielski 
95*b1cdbd2cSJim Jagielski 	m_pGenPage = new OFieldDescGenWin( this, m_pHelpBar );
96*b1cdbd2cSJim Jagielski 	getGenPage()->SetHelpId( HID_TABLE_DESIGN_TABPAGE_GENERAL );
97*b1cdbd2cSJim Jagielski 	getGenPage()->Show();
98*b1cdbd2cSJim Jagielski }
99*b1cdbd2cSJim Jagielski 
100*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------------
~OTableFieldDescWin()101*b1cdbd2cSJim Jagielski OTableFieldDescWin::~OTableFieldDescWin()
102*b1cdbd2cSJim Jagielski {
103*b1cdbd2cSJim Jagielski 	DBG_DTOR(OTableFieldDescWin,NULL);
104*b1cdbd2cSJim Jagielski 	//////////////////////////////////////////////////////////////////////
105*b1cdbd2cSJim Jagielski 	// Childs zerstoeren
106*b1cdbd2cSJim Jagielski 	m_pHelpBar->Hide();
107*b1cdbd2cSJim Jagielski 	getGenPage()->Hide();
108*b1cdbd2cSJim Jagielski 	m_pHeader->Hide();
109*b1cdbd2cSJim Jagielski 
110*b1cdbd2cSJim Jagielski 	{
111*b1cdbd2cSJim Jagielski 		::std::auto_ptr<Window> aTemp(m_pGenPage);
112*b1cdbd2cSJim Jagielski 		m_pGenPage = NULL;
113*b1cdbd2cSJim Jagielski 	}
114*b1cdbd2cSJim Jagielski 	{
115*b1cdbd2cSJim Jagielski 		::std::auto_ptr<Window> aTemp(m_pHeader);
116*b1cdbd2cSJim Jagielski 		m_pHeader = NULL;
117*b1cdbd2cSJim Jagielski 	}
118*b1cdbd2cSJim Jagielski 	{
119*b1cdbd2cSJim Jagielski 		::std::auto_ptr<Window> aTemp(m_pHelpBar);
120*b1cdbd2cSJim Jagielski 		m_pHelpBar = NULL;
121*b1cdbd2cSJim Jagielski 	}
122*b1cdbd2cSJim Jagielski }
123*b1cdbd2cSJim Jagielski 
124*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------------
Init()125*b1cdbd2cSJim Jagielski void OTableFieldDescWin::Init()
126*b1cdbd2cSJim Jagielski {
127*b1cdbd2cSJim Jagielski 	DBG_ASSERT(getGenPage() != NULL, "OTableFieldDescWin::Init : ups ... no GenericPage ... this will crash ...");
128*b1cdbd2cSJim Jagielski 	getGenPage()->Init();
129*b1cdbd2cSJim Jagielski }
130*b1cdbd2cSJim Jagielski 
131*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------------
SetReadOnly(sal_Bool bRead)132*b1cdbd2cSJim Jagielski void OTableFieldDescWin::SetReadOnly( sal_Bool bRead )
133*b1cdbd2cSJim Jagielski {
134*b1cdbd2cSJim Jagielski 	DBG_CHKTHIS(OTableFieldDescWin,NULL);
135*b1cdbd2cSJim Jagielski 	getGenPage()->SetReadOnly( bRead );
136*b1cdbd2cSJim Jagielski }
137*b1cdbd2cSJim Jagielski 
138*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------------
DisplayData(OFieldDescription * pFieldDescr)139*b1cdbd2cSJim Jagielski void OTableFieldDescWin::DisplayData( OFieldDescription* pFieldDescr )
140*b1cdbd2cSJim Jagielski {
141*b1cdbd2cSJim Jagielski 	DBG_CHKTHIS(OTableFieldDescWin,NULL);
142*b1cdbd2cSJim Jagielski 	getGenPage()->DisplayData( pFieldDescr );
143*b1cdbd2cSJim Jagielski }
144*b1cdbd2cSJim Jagielski 
145*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------------
SaveData(OFieldDescription * pFieldDescr)146*b1cdbd2cSJim Jagielski void OTableFieldDescWin::SaveData( OFieldDescription* pFieldDescr )
147*b1cdbd2cSJim Jagielski {
148*b1cdbd2cSJim Jagielski 	DBG_CHKTHIS(OTableFieldDescWin,NULL);
149*b1cdbd2cSJim Jagielski 	getGenPage()->SaveData( pFieldDescr );
150*b1cdbd2cSJim Jagielski }
151*b1cdbd2cSJim Jagielski 
152*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------------
Paint(const Rectangle &)153*b1cdbd2cSJim Jagielski void OTableFieldDescWin::Paint( const Rectangle& /*rRect*/ )
154*b1cdbd2cSJim Jagielski {
155*b1cdbd2cSJim Jagielski 	DBG_CHKTHIS(OTableFieldDescWin,NULL);
156*b1cdbd2cSJim Jagielski 	//////////////////////////////////////////////////////////////////////
157*b1cdbd2cSJim Jagielski 	// 3D-Linie am oberen Fensterrand
158*b1cdbd2cSJim Jagielski 	const StyleSettings& rStyleSettings = GetSettings().GetStyleSettings();
159*b1cdbd2cSJim Jagielski 
160*b1cdbd2cSJim Jagielski 	SetLineColor( rStyleSettings.GetLightColor() );
161*b1cdbd2cSJim Jagielski 	DrawLine( Point(0,0), Point(GetSizePixel().Width(),0) );
162*b1cdbd2cSJim Jagielski 
163*b1cdbd2cSJim Jagielski 	//////////////////////////////////////////////////////////////////////
164*b1cdbd2cSJim Jagielski 	// 3D-Linie zum Abtrennen des Headers
165*b1cdbd2cSJim Jagielski 	DrawLine( Point(3, DETAILS_HEADER_HEIGHT), Point(GetSizePixel().Width()-6, DETAILS_HEADER_HEIGHT) );
166*b1cdbd2cSJim Jagielski 	SetLineColor( rStyleSettings.GetShadowColor() );
167*b1cdbd2cSJim Jagielski 	DrawLine( Point(3, DETAILS_HEADER_HEIGHT-1), Point(GetSizePixel().Width()-6, DETAILS_HEADER_HEIGHT-1) );
168*b1cdbd2cSJim Jagielski }
169*b1cdbd2cSJim Jagielski 
170*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------------
Resize()171*b1cdbd2cSJim Jagielski void OTableFieldDescWin::Resize()
172*b1cdbd2cSJim Jagielski {
173*b1cdbd2cSJim Jagielski 	DBG_CHKTHIS(OTableFieldDescWin,NULL);
174*b1cdbd2cSJim Jagielski 	//////////////////////////////////////////////////////////////////////
175*b1cdbd2cSJim Jagielski 	// Abmessungen parent window
176*b1cdbd2cSJim Jagielski 	Size aOutputSize( GetOutputSizePixel() );
177*b1cdbd2cSJim Jagielski 	long nOutputWidth = aOutputSize.Width();
178*b1cdbd2cSJim Jagielski 	long nOutputHeight = aOutputSize.Height();
179*b1cdbd2cSJim Jagielski 
180*b1cdbd2cSJim Jagielski 	// da die GenPage scrollen kann, ich selber aber nicht, positioniere ich das HelpFenster, wenn ich zu schmal werde,
181*b1cdbd2cSJim Jagielski 	// _unter_ der Genpage, nicht rechts daneben. Zuvor versuche ich aber noch, es etwas schmaler zu machen
182*b1cdbd2cSJim Jagielski 
183*b1cdbd2cSJim Jagielski 	long nHelpX, nHelpY;
184*b1cdbd2cSJim Jagielski 	long nHelpWidth, nHelpHeight;
185*b1cdbd2cSJim Jagielski 	long nPageWidth, nPageHeight;
186*b1cdbd2cSJim Jagielski 
187*b1cdbd2cSJim Jagielski 	// passen beide nebeneinander (Rand + Page + Rand + Help) ?
188*b1cdbd2cSJim Jagielski 	if (STANDARD_MARGIN + DETAILS_OPT_PAGE_WIDTH + STANDARD_MARGIN + DETAILS_MIN_HELP_WIDTH <= nOutputWidth)
189*b1cdbd2cSJim Jagielski 	{	// ja -> dann ist die Frage, ob man der Hilfe ihre Optimal-Breite geben kann
190*b1cdbd2cSJim Jagielski 		nHelpWidth = DETAILS_OPT_HELP_WIDTH;
191*b1cdbd2cSJim Jagielski 		nPageWidth = nOutputWidth - nHelpWidth - STANDARD_MARGIN - STANDARD_MARGIN;
192*b1cdbd2cSJim Jagielski 		if (nPageWidth < DETAILS_OPT_PAGE_WIDTH)
193*b1cdbd2cSJim Jagielski 		{	// dann doch lieber die Hilfe von ihrer optimalen in Richtung auf die minimale Groesse
194*b1cdbd2cSJim Jagielski 			long nTransfer = DETAILS_OPT_PAGE_WIDTH - nPageWidth;
195*b1cdbd2cSJim Jagielski 			nPageWidth += nTransfer;
196*b1cdbd2cSJim Jagielski 			nHelpWidth -= nTransfer;
197*b1cdbd2cSJim Jagielski 		}
198*b1cdbd2cSJim Jagielski 		nHelpX = nOutputWidth - nHelpWidth;
199*b1cdbd2cSJim Jagielski 		// die Hoehen sind dann einfach ...
200*b1cdbd2cSJim Jagielski 		nHelpY = DETAILS_HEADER_HEIGHT + 1;
201*b1cdbd2cSJim Jagielski 		nHelpHeight = nOutputHeight - nHelpY;
202*b1cdbd2cSJim Jagielski 		nPageHeight = nOutputHeight - STANDARD_MARGIN - DETAILS_HEADER_HEIGHT - STANDARD_MARGIN;
203*b1cdbd2cSJim Jagielski 	}
204*b1cdbd2cSJim Jagielski 	else
205*b1cdbd2cSJim Jagielski 	{	// nebeneinander geht nicht, also untereinander (Rand + Header + Page + Help)
206*b1cdbd2cSJim Jagielski 		if (STANDARD_MARGIN + DETAILS_HEADER_HEIGHT + DETAILS_OPT_PAGE_HEIGHT + DETAILS_MIN_HELP_HEIGHT <= nOutputHeight)
207*b1cdbd2cSJim Jagielski 		{	// es reicht zumindest, um beide untereinander (Page optimal, Help minimal) unterzubringen
208*b1cdbd2cSJim Jagielski 			nHelpHeight = DETAILS_OPT_HELP_HEIGHT;
209*b1cdbd2cSJim Jagielski 			nPageHeight = nOutputHeight - nHelpHeight - DETAILS_HEADER_HEIGHT - STANDARD_MARGIN;
210*b1cdbd2cSJim Jagielski 			if (nPageHeight < DETAILS_OPT_PAGE_HEIGHT)
211*b1cdbd2cSJim Jagielski 			{	// wie oben : Page optimal, Hilfe soviel wie eben bleibt (das ist groesser/gleich ihrem Minimum)
212*b1cdbd2cSJim Jagielski 				long nTransfer = DETAILS_OPT_PAGE_HEIGHT - nPageHeight;
213*b1cdbd2cSJim Jagielski 				nPageHeight += nTransfer;
214*b1cdbd2cSJim Jagielski 				nHelpHeight -= nTransfer;
215*b1cdbd2cSJim Jagielski 			}
216*b1cdbd2cSJim Jagielski 			nHelpY = nOutputHeight - nHelpHeight;
217*b1cdbd2cSJim Jagielski 			// und ueber die ganze Breite
218*b1cdbd2cSJim Jagielski 			nHelpX = 0;					// ohne Margin, da das HelpCtrl einen eigenen hat
219*b1cdbd2cSJim Jagielski 			nHelpWidth = nOutputWidth;	// dito
220*b1cdbd2cSJim Jagielski 			nPageWidth = nOutputWidth - STANDARD_MARGIN - STANDARD_MARGIN;
221*b1cdbd2cSJim Jagielski 		}
222*b1cdbd2cSJim Jagielski 		else
223*b1cdbd2cSJim Jagielski 		{	// dummerweise reicht es nicht mal, um Page optimal und Help minimal zu zeigen
224*b1cdbd2cSJim Jagielski 			nHelpX = nHelpY = nHelpWidth = nHelpHeight = 0;	// -> kein Help-Fenster
225*b1cdbd2cSJim Jagielski 			nPageWidth = nOutputWidth - STANDARD_MARGIN - STANDARD_MARGIN;
226*b1cdbd2cSJim Jagielski 			nPageHeight = nOutputHeight - STANDARD_MARGIN - DETAILS_HEADER_HEIGHT - STANDARD_MARGIN;
227*b1cdbd2cSJim Jagielski 		}
228*b1cdbd2cSJim Jagielski 	}
229*b1cdbd2cSJim Jagielski 
230*b1cdbd2cSJim Jagielski 	m_pHeader->SetPosSizePixel( Point(0, STANDARD_MARGIN), Size(nOutputWidth, 15) );
231*b1cdbd2cSJim Jagielski 
232*b1cdbd2cSJim Jagielski 	getGenPage()->SetPosSizePixel(Point	(	STANDARD_MARGIN,
233*b1cdbd2cSJim Jagielski 										STANDARD_MARGIN + DETAILS_HEADER_HEIGHT
234*b1cdbd2cSJim Jagielski 									),
235*b1cdbd2cSJim Jagielski 							  Size	(	nPageWidth,
236*b1cdbd2cSJim Jagielski 										nPageHeight
237*b1cdbd2cSJim Jagielski 									)
238*b1cdbd2cSJim Jagielski 							 );
239*b1cdbd2cSJim Jagielski 	if (nHelpHeight)
240*b1cdbd2cSJim Jagielski 	{
241*b1cdbd2cSJim Jagielski 		m_pHelpBar->Show();
242*b1cdbd2cSJim Jagielski 		m_pHelpBar->SetPosSizePixel(Point	(	nHelpX,
243*b1cdbd2cSJim Jagielski 											nHelpY
244*b1cdbd2cSJim Jagielski 										),
245*b1cdbd2cSJim Jagielski 								  Size	(	nHelpWidth,
246*b1cdbd2cSJim Jagielski 											nHelpHeight
247*b1cdbd2cSJim Jagielski 										)
248*b1cdbd2cSJim Jagielski 								 );
249*b1cdbd2cSJim Jagielski 	}
250*b1cdbd2cSJim Jagielski 	else
251*b1cdbd2cSJim Jagielski 	{
252*b1cdbd2cSJim Jagielski 		m_pHelpBar->Hide();
253*b1cdbd2cSJim Jagielski 	}
254*b1cdbd2cSJim Jagielski 	Invalidate();
255*b1cdbd2cSJim Jagielski }
256*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------------
getActiveChild() const257*b1cdbd2cSJim Jagielski IClipboardTest* OTableFieldDescWin::getActiveChild() const
258*b1cdbd2cSJim Jagielski {
259*b1cdbd2cSJim Jagielski 	IClipboardTest* pTest = NULL;
260*b1cdbd2cSJim Jagielski 	switch(m_eChildFocus)
261*b1cdbd2cSJim Jagielski 	{
262*b1cdbd2cSJim Jagielski 		case DESCRIPTION:
263*b1cdbd2cSJim Jagielski 			pTest = getGenPage();
264*b1cdbd2cSJim Jagielski 			break;
265*b1cdbd2cSJim Jagielski 		default:
266*b1cdbd2cSJim Jagielski 			pTest = getHelpBar();
267*b1cdbd2cSJim Jagielski 			break;
268*b1cdbd2cSJim Jagielski 	}
269*b1cdbd2cSJim Jagielski 	return pTest;
270*b1cdbd2cSJim Jagielski }
271*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------------
isCopyAllowed()272*b1cdbd2cSJim Jagielski sal_Bool OTableFieldDescWin::isCopyAllowed()
273*b1cdbd2cSJim Jagielski {
274*b1cdbd2cSJim Jagielski 	return getActiveChild() && getActiveChild()->isCopyAllowed();
275*b1cdbd2cSJim Jagielski }
276*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------------
isCutAllowed()277*b1cdbd2cSJim Jagielski sal_Bool OTableFieldDescWin::isCutAllowed()
278*b1cdbd2cSJim Jagielski {
279*b1cdbd2cSJim Jagielski 	return (getGenPage() && getGenPage()->HasChildPathFocus() && getGenPage()->isCutAllowed());
280*b1cdbd2cSJim Jagielski }
281*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------------
isPasteAllowed()282*b1cdbd2cSJim Jagielski sal_Bool OTableFieldDescWin::isPasteAllowed()
283*b1cdbd2cSJim Jagielski {
284*b1cdbd2cSJim Jagielski 	return (getGenPage() && getGenPage()->HasChildPathFocus() && getGenPage()->isPasteAllowed());
285*b1cdbd2cSJim Jagielski }
286*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------------
cut()287*b1cdbd2cSJim Jagielski void OTableFieldDescWin::cut()
288*b1cdbd2cSJim Jagielski {
289*b1cdbd2cSJim Jagielski 	if ( getGenPage() && getGenPage()->HasChildPathFocus() )
290*b1cdbd2cSJim Jagielski 		getGenPage()->cut();
291*b1cdbd2cSJim Jagielski }
292*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------------
copy()293*b1cdbd2cSJim Jagielski void OTableFieldDescWin::copy()
294*b1cdbd2cSJim Jagielski {
295*b1cdbd2cSJim Jagielski 	if ( getActiveChild() )
296*b1cdbd2cSJim Jagielski 		getActiveChild()->copy();
297*b1cdbd2cSJim Jagielski }
298*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------------
paste()299*b1cdbd2cSJim Jagielski void OTableFieldDescWin::paste()
300*b1cdbd2cSJim Jagielski {
301*b1cdbd2cSJim Jagielski 	if ( getGenPage() && getGenPage()->HasChildPathFocus() )
302*b1cdbd2cSJim Jagielski 		getGenPage()->paste();
303*b1cdbd2cSJim Jagielski }
304*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------------
GetFocus()305*b1cdbd2cSJim Jagielski void OTableFieldDescWin::GetFocus()
306*b1cdbd2cSJim Jagielski {
307*b1cdbd2cSJim Jagielski 	if ( getGenPage() )
308*b1cdbd2cSJim Jagielski 		getGenPage()->GetFocus();
309*b1cdbd2cSJim Jagielski }
310*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------------
LoseFocus()311*b1cdbd2cSJim Jagielski void OTableFieldDescWin::LoseFocus()
312*b1cdbd2cSJim Jagielski {
313*b1cdbd2cSJim Jagielski 	if ( getGenPage() )
314*b1cdbd2cSJim Jagielski 		getGenPage()->LoseFocus();
315*b1cdbd2cSJim Jagielski }
316*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------------
PreNotify(NotifyEvent & rNEvt)317*b1cdbd2cSJim Jagielski long OTableFieldDescWin::PreNotify( NotifyEvent& rNEvt )
318*b1cdbd2cSJim Jagielski {
319*b1cdbd2cSJim Jagielski 	sal_Bool bHandled = sal_False;
320*b1cdbd2cSJim Jagielski 	switch(rNEvt.GetType())
321*b1cdbd2cSJim Jagielski 	{
322*b1cdbd2cSJim Jagielski 		case EVENT_GETFOCUS:
323*b1cdbd2cSJim Jagielski 			if( getGenPage() && getGenPage()->HasChildPathFocus() )
324*b1cdbd2cSJim Jagielski 				m_eChildFocus = DESCRIPTION;
325*b1cdbd2cSJim Jagielski 			else
326*b1cdbd2cSJim Jagielski 				m_eChildFocus = HELP;
327*b1cdbd2cSJim Jagielski 			break;
328*b1cdbd2cSJim Jagielski 	}
329*b1cdbd2cSJim Jagielski 
330*b1cdbd2cSJim Jagielski 	return bHandled ? 1L : TabPage::PreNotify(rNEvt);
331*b1cdbd2cSJim Jagielski }
332*b1cdbd2cSJim Jagielski 
333*b1cdbd2cSJim Jagielski 
334