1c25918c1SAndrew Rist /************************************************************** 2cdf0e10cSrcweir * 3c25918c1SAndrew Rist * Licensed to the Apache Software Foundation (ASF) under one 4c25918c1SAndrew Rist * or more contributor license agreements. See the NOTICE file 5c25918c1SAndrew Rist * distributed with this work for additional information 6c25918c1SAndrew Rist * regarding copyright ownership. The ASF licenses this file 7c25918c1SAndrew Rist * to you under the Apache License, Version 2.0 (the 8c25918c1SAndrew Rist * "License"); you may not use this file except in compliance 9c25918c1SAndrew Rist * with the License. You may obtain a copy of the License at 10cdf0e10cSrcweir * 11c25918c1SAndrew Rist * http://www.apache.org/licenses/LICENSE-2.0 12cdf0e10cSrcweir * 13c25918c1SAndrew Rist * Unless required by applicable law or agreed to in writing, 14c25918c1SAndrew Rist * software distributed under the License is distributed on an 15c25918c1SAndrew Rist * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16c25918c1SAndrew Rist * KIND, either express or implied. See the License for the 17c25918c1SAndrew Rist * specific language governing permissions and limitations 18c25918c1SAndrew Rist * under the License. 19cdf0e10cSrcweir * 20c25918c1SAndrew Rist *************************************************************/ 21c25918c1SAndrew Rist 22c25918c1SAndrew Rist 23cdf0e10cSrcweir 24cdf0e10cSrcweir // MARKER(update_precomp.py): autogen include statement, do not remove 25cdf0e10cSrcweir #include "precompiled_formula.hxx" 26cdf0e10cSrcweir 27cdf0e10cSrcweir //---------------------------------------------------------------------------- 28cdf0e10cSrcweir #include <vcl/sound.hxx> 29cdf0e10cSrcweir #include <vcl/svapp.hxx> 30cdf0e10cSrcweir #include <vcl/scrbar.hxx> 31cdf0e10cSrcweir 32cdf0e10cSrcweir #include "formula/funcutl.hxx" 33cdf0e10cSrcweir #include "formula/IControlReferenceHandler.hxx" 34cdf0e10cSrcweir #include "ControlHelper.hxx" 35cdf0e10cSrcweir #include "ModuleHelper.hxx" 36cdf0e10cSrcweir #include "ForResId.hrc" 37*3ce09a58SSteve Yin // IAccessibility2 implementation 2009. ------ 38*3ce09a58SSteve Yin #include "com/sun/star/accessibility/AccessibleRole.hpp" 39*3ce09a58SSteve Yin // ------ IAccessibility2 implementation 2009. 40cdf0e10cSrcweir 41cdf0e10cSrcweir 42cdf0e10cSrcweir namespace formula 43cdf0e10cSrcweir { 44cdf0e10cSrcweir //============================================================================ 45cdf0e10cSrcweir // class ValWnd 46cdf0e10cSrcweir //---------------------------------------------------------------------------- 47cdf0e10cSrcweir 48cdf0e10cSrcweir ValWnd::ValWnd( Window* pParent, const ResId& rId ) : Window( pParent, rId ) 49cdf0e10cSrcweir { 50cdf0e10cSrcweir Font aFnt( GetFont() ); 51cdf0e10cSrcweir aFnt.SetTransparent( sal_True ); 52cdf0e10cSrcweir aFnt.SetWeight( WEIGHT_LIGHT ); 53cdf0e10cSrcweir if ( pParent->IsBackground() ) 54cdf0e10cSrcweir { 55cdf0e10cSrcweir Wallpaper aBack = pParent->GetBackground(); 56cdf0e10cSrcweir SetFillColor( aBack.GetColor() ); 57cdf0e10cSrcweir SetBackground( aBack ); 58cdf0e10cSrcweir aFnt.SetFillColor( aBack.GetColor() ); 59cdf0e10cSrcweir } 60cdf0e10cSrcweir else 61cdf0e10cSrcweir { 62cdf0e10cSrcweir SetFillColor(); 63cdf0e10cSrcweir SetBackground(); 64cdf0e10cSrcweir } 65cdf0e10cSrcweir SetFont( aFnt ); 66cdf0e10cSrcweir SetLineColor(); 67cdf0e10cSrcweir 68cdf0e10cSrcweir Size aSzWnd = GetOutputSizePixel(); 69cdf0e10cSrcweir long nHeight = GetTextHeight(); 70cdf0e10cSrcweir long nDiff = aSzWnd.Height()-nHeight; 71cdf0e10cSrcweir 72cdf0e10cSrcweir aRectOut = Rectangle( Point( 1, ( nDiff<2 ) ? 1 : nDiff/2), 73cdf0e10cSrcweir Size ( aSzWnd.Width()-2, nHeight ) ); 74cdf0e10cSrcweir SetClipRegion( Region( aRectOut ) ); 75*3ce09a58SSteve Yin SetAccessibleRole( ::com::sun::star::accessibility::AccessibleRole::LABEL ); 76cdf0e10cSrcweir } 77cdf0e10cSrcweir 78cdf0e10cSrcweir //---------------------------------------------------------------------------- 79cdf0e10cSrcweir 80cdf0e10cSrcweir void __EXPORT ValWnd::Paint( const Rectangle& ) 81cdf0e10cSrcweir { 82cdf0e10cSrcweir DrawText( aRectOut.TopLeft(), aStrValue ); 83cdf0e10cSrcweir } 84cdf0e10cSrcweir 85cdf0e10cSrcweir //---------------------------------------------------------------------------- 86cdf0e10cSrcweir 87cdf0e10cSrcweir void ValWnd::SetValue( const String& rStrVal ) 88cdf0e10cSrcweir { 89cdf0e10cSrcweir if ( aStrValue != rStrVal ) 90cdf0e10cSrcweir { 91cdf0e10cSrcweir aStrValue = rStrVal; 92cdf0e10cSrcweir DrawRect( aRectOut ); // alten Text loeschen 93cdf0e10cSrcweir Paint( aRectOut ); // und neu malen 94cdf0e10cSrcweir } 95cdf0e10cSrcweir } 96cdf0e10cSrcweir 97cdf0e10cSrcweir //============================================================================ 98cdf0e10cSrcweir // class ArgEdit 99cdf0e10cSrcweir //---------------------------------------------------------------------------- 100cdf0e10cSrcweir 101cdf0e10cSrcweir ArgEdit::ArgEdit( Window* pParent, const ResId& rResId ) 102cdf0e10cSrcweir : RefEdit( pParent, rResId ), 103cdf0e10cSrcweir pEdPrev ( NULL ), 104cdf0e10cSrcweir pEdNext ( NULL ), 105cdf0e10cSrcweir pSlider ( NULL ), 106cdf0e10cSrcweir nArgs ( 0 ) 107cdf0e10cSrcweir { 108cdf0e10cSrcweir } 109cdf0e10cSrcweir 110cdf0e10cSrcweir //---------------------------------------------------------------------------- 111cdf0e10cSrcweir 112cdf0e10cSrcweir void ArgEdit::Init( ArgEdit* pPrevEdit, ArgEdit* pNextEdit, 113cdf0e10cSrcweir ScrollBar& rArgSlider, sal_uInt16 nArgCount ) 114cdf0e10cSrcweir { 115cdf0e10cSrcweir pEdPrev = pPrevEdit; 116cdf0e10cSrcweir pEdNext = pNextEdit; 117cdf0e10cSrcweir pSlider = &rArgSlider; 118cdf0e10cSrcweir nArgs = nArgCount; 119cdf0e10cSrcweir } 120cdf0e10cSrcweir 121cdf0e10cSrcweir //---------------------------------------------------------------------------- 122cdf0e10cSrcweir 123cdf0e10cSrcweir // Cursorsteuerung fuer EditFelder im Argument-Dialog 124cdf0e10cSrcweir 125cdf0e10cSrcweir void __EXPORT ArgEdit::KeyInput( const KeyEvent& rKEvt ) 126cdf0e10cSrcweir { 127cdf0e10cSrcweir KeyCode aCode = rKEvt.GetKeyCode(); 128cdf0e10cSrcweir sal_Bool bUp = (aCode.GetCode() == KEY_UP); 129cdf0e10cSrcweir sal_Bool bDown = (aCode.GetCode() == KEY_DOWN); 130cdf0e10cSrcweir ArgEdit* pEd = NULL; 131cdf0e10cSrcweir 132cdf0e10cSrcweir if ( pSlider 133cdf0e10cSrcweir && ( !aCode.IsShift() && !aCode.IsMod1() && !aCode.IsMod2() ) 134cdf0e10cSrcweir && ( bUp || bDown ) ) 135cdf0e10cSrcweir { 136cdf0e10cSrcweir if ( nArgs > 1 ) 137cdf0e10cSrcweir { 138cdf0e10cSrcweir long nThumb = pSlider->GetThumbPos(); 139cdf0e10cSrcweir sal_Bool bDoScroll = sal_False; 140cdf0e10cSrcweir sal_Bool bChangeFocus = sal_False; 141cdf0e10cSrcweir 142cdf0e10cSrcweir if ( bDown ) 143cdf0e10cSrcweir { 144cdf0e10cSrcweir if ( nArgs > 4 ) 145cdf0e10cSrcweir { 146cdf0e10cSrcweir if ( !pEdNext ) 147cdf0e10cSrcweir { 148cdf0e10cSrcweir nThumb++; 149cdf0e10cSrcweir bDoScroll = ( nThumb+3 < (long)nArgs ); 150cdf0e10cSrcweir } 151cdf0e10cSrcweir else 152cdf0e10cSrcweir { 153cdf0e10cSrcweir pEd = pEdNext; 154cdf0e10cSrcweir bChangeFocus = sal_True; 155cdf0e10cSrcweir } 156cdf0e10cSrcweir } 157cdf0e10cSrcweir else if ( pEdNext ) 158cdf0e10cSrcweir { 159cdf0e10cSrcweir pEd = pEdNext; 160cdf0e10cSrcweir bChangeFocus = sal_True; 161cdf0e10cSrcweir } 162cdf0e10cSrcweir } 163cdf0e10cSrcweir else // if ( bUp ) 164cdf0e10cSrcweir { 165cdf0e10cSrcweir if ( nArgs > 4 ) 166cdf0e10cSrcweir { 167cdf0e10cSrcweir if ( !pEdPrev ) 168cdf0e10cSrcweir { 169cdf0e10cSrcweir nThumb--; 170cdf0e10cSrcweir bDoScroll = ( nThumb >= 0 ); 171cdf0e10cSrcweir } 172cdf0e10cSrcweir else 173cdf0e10cSrcweir { 174cdf0e10cSrcweir pEd = pEdPrev; 175cdf0e10cSrcweir bChangeFocus = sal_True; 176cdf0e10cSrcweir } 177cdf0e10cSrcweir } 178cdf0e10cSrcweir else if ( pEdPrev ) 179cdf0e10cSrcweir { 180cdf0e10cSrcweir pEd = pEdPrev; 181cdf0e10cSrcweir bChangeFocus = sal_True; 182cdf0e10cSrcweir } 183cdf0e10cSrcweir } 184cdf0e10cSrcweir 185cdf0e10cSrcweir if ( bDoScroll ) 186cdf0e10cSrcweir { 187cdf0e10cSrcweir pSlider->SetThumbPos( nThumb ); 188cdf0e10cSrcweir ((Link&)pSlider->GetEndScrollHdl()).Call( pSlider ); 189cdf0e10cSrcweir } 190cdf0e10cSrcweir else if ( bChangeFocus ) 191cdf0e10cSrcweir { 192cdf0e10cSrcweir pEd->GrabFocus(); 193cdf0e10cSrcweir } 194cdf0e10cSrcweir else 195cdf0e10cSrcweir Sound::Beep(); 196cdf0e10cSrcweir } 197cdf0e10cSrcweir else 198cdf0e10cSrcweir Sound::Beep(); 199cdf0e10cSrcweir } 200cdf0e10cSrcweir else 201cdf0e10cSrcweir RefEdit::KeyInput( rKEvt ); 202cdf0e10cSrcweir } 203cdf0e10cSrcweir 204cdf0e10cSrcweir 205cdf0e10cSrcweir 206cdf0e10cSrcweir 207cdf0e10cSrcweir /************************************************************************* 208cdf0e10cSrcweir #* Member: ArgInput Datum:13.01.97 209cdf0e10cSrcweir #*------------------------------------------------------------------------ 210cdf0e10cSrcweir #* 211cdf0e10cSrcweir #* Klasse: ArgInput 212cdf0e10cSrcweir #* 213cdf0e10cSrcweir #* Funktion: Konstruktor der Klasse ArgInput 214cdf0e10cSrcweir #* 215cdf0e10cSrcweir #* Input: --- 216cdf0e10cSrcweir #* 217cdf0e10cSrcweir #* Output: --- 218cdf0e10cSrcweir #* 219cdf0e10cSrcweir #************************************************************************/ 220cdf0e10cSrcweir 221cdf0e10cSrcweir ArgInput::ArgInput() 222cdf0e10cSrcweir { 223cdf0e10cSrcweir pFtArg=NULL; 224cdf0e10cSrcweir pBtnFx=NULL; 225cdf0e10cSrcweir pEdArg=NULL; 226cdf0e10cSrcweir pRefBtn=NULL; 227cdf0e10cSrcweir } 228cdf0e10cSrcweir 229cdf0e10cSrcweir /************************************************************************* 230cdf0e10cSrcweir #* Member: InitArgInput Datum:13.01.97 231cdf0e10cSrcweir #*------------------------------------------------------------------------ 232cdf0e10cSrcweir #* 233cdf0e10cSrcweir #* Klasse: ArgInput 234cdf0e10cSrcweir #* 235cdf0e10cSrcweir #* Funktion: Initialisiert die Pointer der Klasse 236cdf0e10cSrcweir #* 237cdf0e10cSrcweir #* Input: --- 238cdf0e10cSrcweir #* 239cdf0e10cSrcweir #* Output: --- 240cdf0e10cSrcweir #* 241cdf0e10cSrcweir #************************************************************************/ 242cdf0e10cSrcweir 243cdf0e10cSrcweir void ArgInput::InitArgInput(FixedText* pftArg, 244cdf0e10cSrcweir ImageButton* pbtnFx, 245cdf0e10cSrcweir ArgEdit* pedArg, 246cdf0e10cSrcweir RefButton* prefBtn) 247cdf0e10cSrcweir { 248cdf0e10cSrcweir pFtArg =pftArg; 249cdf0e10cSrcweir pBtnFx =pbtnFx; 250cdf0e10cSrcweir pEdArg =pedArg; 251cdf0e10cSrcweir pRefBtn=prefBtn; 252cdf0e10cSrcweir 253cdf0e10cSrcweir if(pBtnFx!=NULL) 254cdf0e10cSrcweir { 255cdf0e10cSrcweir pBtnFx->SetClickHdl ( LINK( this, ArgInput, FxBtnClickHdl ) ); 256cdf0e10cSrcweir pBtnFx->SetGetFocusHdl( LINK( this, ArgInput, FxBtnFocusHdl ) ); 257cdf0e10cSrcweir } 258cdf0e10cSrcweir if(pRefBtn!=NULL) 259cdf0e10cSrcweir { 260cdf0e10cSrcweir pRefBtn->SetClickHdl ( LINK( this, ArgInput, RefBtnClickHdl ) ); 261cdf0e10cSrcweir pRefBtn->SetGetFocusHdl( LINK( this, ArgInput, RefBtnFocusHdl ) ); 262cdf0e10cSrcweir } 263cdf0e10cSrcweir if(pEdArg!=NULL) 264cdf0e10cSrcweir { 265cdf0e10cSrcweir pEdArg->SetGetFocusHdl ( LINK( this, ArgInput, EdFocusHdl ) ); 266cdf0e10cSrcweir pEdArg->SetModifyHdl ( LINK( this, ArgInput, EdModifyHdl ) ); 267cdf0e10cSrcweir } 268cdf0e10cSrcweir 269cdf0e10cSrcweir } 270cdf0e10cSrcweir 271cdf0e10cSrcweir /************************************************************************* 272cdf0e10cSrcweir #* Member: SetArgName Datum:13.01.97 273cdf0e10cSrcweir #*------------------------------------------------------------------------ 274cdf0e10cSrcweir #* 275cdf0e10cSrcweir #* Klasse: ArgInput 276cdf0e10cSrcweir #* 277cdf0e10cSrcweir #* Funktion: Setzt den Namen fuer das Argument 278cdf0e10cSrcweir #* 279cdf0e10cSrcweir #* Input: String 280cdf0e10cSrcweir #* 281cdf0e10cSrcweir #* Output: --- 282cdf0e10cSrcweir #* 283cdf0e10cSrcweir #************************************************************************/ 284cdf0e10cSrcweir void ArgInput::SetArgName(const String &aArg) 285cdf0e10cSrcweir { 286cdf0e10cSrcweir if(pFtArg !=NULL) pFtArg->SetText(aArg ); 287cdf0e10cSrcweir } 288cdf0e10cSrcweir 289cdf0e10cSrcweir /************************************************************************* 290cdf0e10cSrcweir #* Member: GetArgName Datum:06.02.97 291cdf0e10cSrcweir #*------------------------------------------------------------------------ 292cdf0e10cSrcweir #* 293cdf0e10cSrcweir #* Klasse: ArgInput 294cdf0e10cSrcweir #* 295cdf0e10cSrcweir #* Funktion: Liefert den Namen fuer das Argument zurueck 296cdf0e10cSrcweir #* 297cdf0e10cSrcweir #* Input: String 298cdf0e10cSrcweir #* 299cdf0e10cSrcweir #* Output: --- 300cdf0e10cSrcweir #* 301cdf0e10cSrcweir #************************************************************************/ 302cdf0e10cSrcweir String ArgInput::GetArgName() 303cdf0e10cSrcweir { 304cdf0e10cSrcweir String aPrivArgName; 305cdf0e10cSrcweir if(pFtArg !=NULL) 306cdf0e10cSrcweir aPrivArgName=pFtArg->GetText(); 307cdf0e10cSrcweir 308cdf0e10cSrcweir return aPrivArgName; 309cdf0e10cSrcweir } 310cdf0e10cSrcweir 311cdf0e10cSrcweir 312cdf0e10cSrcweir /************************************************************************* 313cdf0e10cSrcweir #* Member: SetArgName Datum:13.01.97 314cdf0e10cSrcweir #*------------------------------------------------------------------------ 315cdf0e10cSrcweir #* 316cdf0e10cSrcweir #* Klasse: ArgInput 317cdf0e10cSrcweir #* 318cdf0e10cSrcweir #* Funktion: Setzt den Namen fuer das Argument 319cdf0e10cSrcweir #* 320cdf0e10cSrcweir #* Input: String 321cdf0e10cSrcweir #* 322cdf0e10cSrcweir #* Output: --- 323cdf0e10cSrcweir #* 324cdf0e10cSrcweir #************************************************************************/ 325cdf0e10cSrcweir void ArgInput::SetArgNameFont (const Font &aFont) 326cdf0e10cSrcweir { 327cdf0e10cSrcweir if(pFtArg !=NULL) pFtArg->SetFont(aFont); 328cdf0e10cSrcweir } 329cdf0e10cSrcweir 330cdf0e10cSrcweir /************************************************************************* 331cdf0e10cSrcweir #* Member: SetArgSelection Datum:13.01.97 332cdf0e10cSrcweir #*------------------------------------------------------------------------ 333cdf0e10cSrcweir #* 334cdf0e10cSrcweir #* Klasse: ArgInput 335cdf0e10cSrcweir #* 336cdf0e10cSrcweir #* Funktion: Stellt die Selection fuer die EditBox ein. 337cdf0e10cSrcweir #* 338cdf0e10cSrcweir #* Input: String 339cdf0e10cSrcweir #* 340cdf0e10cSrcweir #* Output: --- 341cdf0e10cSrcweir #* 342cdf0e10cSrcweir #************************************************************************/ 343cdf0e10cSrcweir void ArgInput::SetArgSelection (const Selection& rSel ) 344cdf0e10cSrcweir { 345cdf0e10cSrcweir if(pEdArg !=NULL) pEdArg ->SetSelection(rSel ); 346cdf0e10cSrcweir } 347cdf0e10cSrcweir 348cdf0e10cSrcweir /************************************************************************* 349cdf0e10cSrcweir #* Member: SetArgSelection Datum:13.01.97 350cdf0e10cSrcweir #*------------------------------------------------------------------------ 351cdf0e10cSrcweir #* 352cdf0e10cSrcweir #* Klasse: ArgInput 353cdf0e10cSrcweir #* 354cdf0e10cSrcweir #* Funktion: Liefert die Selection fuer die EditBox zurueck. 355cdf0e10cSrcweir #* 356cdf0e10cSrcweir #* Input: String 357cdf0e10cSrcweir #* 358cdf0e10cSrcweir #* Output: --- 359cdf0e10cSrcweir #* 360cdf0e10cSrcweir #************************************************************************/ 361cdf0e10cSrcweir Selection ArgInput::GetArgSelection () 362cdf0e10cSrcweir { 363cdf0e10cSrcweir Selection aSel; 364cdf0e10cSrcweir if(pEdArg !=NULL) aSel=pEdArg ->GetSelection(); 365cdf0e10cSrcweir return aSel; 366cdf0e10cSrcweir } 367cdf0e10cSrcweir 368cdf0e10cSrcweir /************************************************************************* 369cdf0e10cSrcweir #* Member: SetArgSelection Datum:13.01.97 370cdf0e10cSrcweir #*------------------------------------------------------------------------ 371cdf0e10cSrcweir #* 372cdf0e10cSrcweir #* Klasse: ArgInput 373cdf0e10cSrcweir #* 374cdf0e10cSrcweir #* Funktion: Ersetzt die Selection in der EditBox. 375cdf0e10cSrcweir #* 376cdf0e10cSrcweir #* Input: String 377cdf0e10cSrcweir #* 378cdf0e10cSrcweir #* Output: --- 379cdf0e10cSrcweir #* 380cdf0e10cSrcweir #************************************************************************/ 381cdf0e10cSrcweir void ArgInput::ReplaceSelOfArg(const String& rStr ) 382cdf0e10cSrcweir { 383cdf0e10cSrcweir if(pEdArg !=NULL) pEdArg ->ReplaceSelected(rStr ); 384cdf0e10cSrcweir } 385cdf0e10cSrcweir 386cdf0e10cSrcweir 387cdf0e10cSrcweir 388cdf0e10cSrcweir /************************************************************************* 389cdf0e10cSrcweir #* Member: SetArgVal Datum:13.01.97 390cdf0e10cSrcweir #*------------------------------------------------------------------------ 391cdf0e10cSrcweir #* 392cdf0e10cSrcweir #* Klasse: ArgInput 393cdf0e10cSrcweir #* 394cdf0e10cSrcweir #* Funktion: Setzt den Wert fuer das Argument 395cdf0e10cSrcweir #* 396cdf0e10cSrcweir #* Input: String 397cdf0e10cSrcweir #* 398cdf0e10cSrcweir #* Output: --- 399cdf0e10cSrcweir #* 400cdf0e10cSrcweir #************************************************************************/ 401cdf0e10cSrcweir void ArgInput::SetArgVal(const String &aVal) 402cdf0e10cSrcweir { 403cdf0e10cSrcweir if(pEdArg !=NULL) 404cdf0e10cSrcweir { 405cdf0e10cSrcweir pEdArg ->SetRefString(aVal ); 406cdf0e10cSrcweir } 407cdf0e10cSrcweir } 408cdf0e10cSrcweir 409cdf0e10cSrcweir /************************************************************************* 410cdf0e10cSrcweir #* Member: SetArgName Datum:13.01.97 411cdf0e10cSrcweir #*------------------------------------------------------------------------ 412cdf0e10cSrcweir #* 413cdf0e10cSrcweir #* Klasse: ArgInput 414cdf0e10cSrcweir #* 415cdf0e10cSrcweir #* Funktion: Liefert den Wert fuer das Argument 416cdf0e10cSrcweir #* 417cdf0e10cSrcweir #* Input: --- 418cdf0e10cSrcweir #* 419cdf0e10cSrcweir #* Output: String 420cdf0e10cSrcweir #* 421cdf0e10cSrcweir #************************************************************************/ 422cdf0e10cSrcweir String ArgInput::GetArgVal() 423cdf0e10cSrcweir { 424cdf0e10cSrcweir String aResult; 425cdf0e10cSrcweir if(pEdArg!=NULL) 426cdf0e10cSrcweir { 427cdf0e10cSrcweir aResult=pEdArg->GetText(); 428cdf0e10cSrcweir } 429cdf0e10cSrcweir return aResult; 430cdf0e10cSrcweir } 431cdf0e10cSrcweir 432cdf0e10cSrcweir /************************************************************************* 433cdf0e10cSrcweir #* Member: SetArgName Datum:13.01.97 434cdf0e10cSrcweir #*------------------------------------------------------------------------ 435cdf0e10cSrcweir #* 436cdf0e10cSrcweir #* Klasse: ArgInput 437cdf0e10cSrcweir #* 438cdf0e10cSrcweir #* Funktion: Versteckt die Controls 439cdf0e10cSrcweir #* 440cdf0e10cSrcweir #* Input: --- 441cdf0e10cSrcweir #* 442cdf0e10cSrcweir #* Output: --- 443cdf0e10cSrcweir #* 444cdf0e10cSrcweir #************************************************************************/ 445cdf0e10cSrcweir void ArgInput::Hide() 446cdf0e10cSrcweir { 447cdf0e10cSrcweir if ( pFtArg && pBtnFx && pEdArg && pRefBtn) 448cdf0e10cSrcweir { 449cdf0e10cSrcweir pFtArg->Hide(); 450cdf0e10cSrcweir pBtnFx->Hide(); 451cdf0e10cSrcweir pEdArg->Hide(); 452cdf0e10cSrcweir pRefBtn->Hide(); 453cdf0e10cSrcweir } 454cdf0e10cSrcweir } 455cdf0e10cSrcweir 456cdf0e10cSrcweir /************************************************************************* 457cdf0e10cSrcweir #* Member: SetArgName Datum:13.01.97 458cdf0e10cSrcweir #*------------------------------------------------------------------------ 459cdf0e10cSrcweir #* 460cdf0e10cSrcweir #* Klasse: ArgInput 461cdf0e10cSrcweir #* 462cdf0e10cSrcweir #* Funktion: Zaubert die Controls wieder hervor. 463cdf0e10cSrcweir #* 464cdf0e10cSrcweir #* Input: --- 465cdf0e10cSrcweir #* 466cdf0e10cSrcweir #* Output: --- 467cdf0e10cSrcweir #* 468cdf0e10cSrcweir #************************************************************************/ 469cdf0e10cSrcweir void ArgInput::Show() 470cdf0e10cSrcweir { 471cdf0e10cSrcweir if ( pFtArg && pBtnFx && pEdArg && pRefBtn) 472cdf0e10cSrcweir { 473cdf0e10cSrcweir pFtArg->Show(); 474cdf0e10cSrcweir pBtnFx->Show(); 475cdf0e10cSrcweir pEdArg->Show(); 476cdf0e10cSrcweir pRefBtn->Show(); 477cdf0e10cSrcweir } 478cdf0e10cSrcweir } 479*3ce09a58SSteve Yin //IAccessibility2 Implementation 2009----- 480*3ce09a58SSteve Yin void ArgInput::UpdateAccessibleNames() 481*3ce09a58SSteve Yin { 482*3ce09a58SSteve Yin String aArgName = String::CreateFromAscii(":"); 483*3ce09a58SSteve Yin aArgName += pFtArg->GetText(); 484*3ce09a58SSteve Yin 485*3ce09a58SSteve Yin String aName = pBtnFx->GetQuickHelpText(); 486*3ce09a58SSteve Yin aName += aArgName; 487*3ce09a58SSteve Yin pBtnFx->SetAccessibleName(aName); 488*3ce09a58SSteve Yin 489*3ce09a58SSteve Yin aName = pRefBtn->GetQuickHelpText(); 490*3ce09a58SSteve Yin aName += aArgName; 491*3ce09a58SSteve Yin pRefBtn->SetAccessibleName(aName); 492*3ce09a58SSteve Yin } 493cdf0e10cSrcweir 494cdf0e10cSrcweir /************************************************************************* 495cdf0e10cSrcweir #* Member: FxClick Datum:13.01.97 496cdf0e10cSrcweir #*------------------------------------------------------------------------ 497cdf0e10cSrcweir #* 498cdf0e10cSrcweir #* Klasse: ArgInput 499cdf0e10cSrcweir #* 500cdf0e10cSrcweir #* Funktion: Gibt den Event weiter. 501cdf0e10cSrcweir #* 502cdf0e10cSrcweir #* Input: --- 503cdf0e10cSrcweir #* 504cdf0e10cSrcweir #* Output: --- 505cdf0e10cSrcweir #* 506cdf0e10cSrcweir #************************************************************************/ 507cdf0e10cSrcweir void ArgInput::FxClick() 508cdf0e10cSrcweir { 509cdf0e10cSrcweir aFxClickLink.Call(this); 510cdf0e10cSrcweir } 511cdf0e10cSrcweir 512cdf0e10cSrcweir /************************************************************************* 513cdf0e10cSrcweir #* Member: RefClick Datum:13.01.97 514cdf0e10cSrcweir #*------------------------------------------------------------------------ 515cdf0e10cSrcweir #* 516cdf0e10cSrcweir #* Klasse: ArgInput 517cdf0e10cSrcweir #* 518cdf0e10cSrcweir #* Funktion: Gibt den Event weiter. 519cdf0e10cSrcweir #* 520cdf0e10cSrcweir #* Input: --- 521cdf0e10cSrcweir #* 522cdf0e10cSrcweir #* Output: --- 523cdf0e10cSrcweir #* 524cdf0e10cSrcweir #************************************************************************/ 525cdf0e10cSrcweir void ArgInput::RefClick() 526cdf0e10cSrcweir { 527cdf0e10cSrcweir aRefClickLink.Call(this); 528cdf0e10cSrcweir } 529cdf0e10cSrcweir 530cdf0e10cSrcweir /************************************************************************* 531cdf0e10cSrcweir #* Member: FxFocus Datum:13.01.97 532cdf0e10cSrcweir #*------------------------------------------------------------------------ 533cdf0e10cSrcweir #* 534cdf0e10cSrcweir #* Klasse: ArgInput 535cdf0e10cSrcweir #* 536cdf0e10cSrcweir #* Funktion: Gibt den Event weiter. 537cdf0e10cSrcweir #* 538cdf0e10cSrcweir #* Input: --- 539cdf0e10cSrcweir #* 540cdf0e10cSrcweir #* Output: --- 541cdf0e10cSrcweir #* 542cdf0e10cSrcweir #************************************************************************/ 543cdf0e10cSrcweir void ArgInput::FxFocus() 544cdf0e10cSrcweir { 545cdf0e10cSrcweir aFxFocusLink.Call(this); 546cdf0e10cSrcweir } 547cdf0e10cSrcweir 548cdf0e10cSrcweir /************************************************************************* 549cdf0e10cSrcweir #* Member: RefFocus Datum:13.01.97 550cdf0e10cSrcweir #*------------------------------------------------------------------------ 551cdf0e10cSrcweir #* 552cdf0e10cSrcweir #* Klasse: ArgInput 553cdf0e10cSrcweir #* 554cdf0e10cSrcweir #* Funktion: Gibt den Event weiter. 555cdf0e10cSrcweir #* 556cdf0e10cSrcweir #* Input: --- 557cdf0e10cSrcweir #* 558cdf0e10cSrcweir #* Output: --- 559cdf0e10cSrcweir #* 560cdf0e10cSrcweir #************************************************************************/ 561cdf0e10cSrcweir void ArgInput::RefFocus() 562cdf0e10cSrcweir { 563cdf0e10cSrcweir aRefFocusLink.Call(this); 564cdf0e10cSrcweir } 565cdf0e10cSrcweir 566cdf0e10cSrcweir /************************************************************************* 567cdf0e10cSrcweir #* Member: EdFocus Datum:13.01.97 568cdf0e10cSrcweir #*------------------------------------------------------------------------ 569cdf0e10cSrcweir #* 570cdf0e10cSrcweir #* Klasse: ArgInput 571cdf0e10cSrcweir #* 572cdf0e10cSrcweir #* Funktion: Gibt den Event weiter. 573cdf0e10cSrcweir #* 574cdf0e10cSrcweir #* Input: --- 575cdf0e10cSrcweir #* 576cdf0e10cSrcweir #* Output: --- 577cdf0e10cSrcweir #* 578cdf0e10cSrcweir #************************************************************************/ 579cdf0e10cSrcweir void ArgInput::EdFocus() 580cdf0e10cSrcweir { 581cdf0e10cSrcweir aEdFocusLink.Call(this); 582cdf0e10cSrcweir } 583cdf0e10cSrcweir 584cdf0e10cSrcweir /************************************************************************* 585cdf0e10cSrcweir #* Member: EdModify Datum:13.01.97 586cdf0e10cSrcweir #*------------------------------------------------------------------------ 587cdf0e10cSrcweir #* 588cdf0e10cSrcweir #* Klasse: ArgInput 589cdf0e10cSrcweir #* 590cdf0e10cSrcweir #* Funktion: Gibt den Event weiter. 591cdf0e10cSrcweir #* 592cdf0e10cSrcweir #* Input: --- 593cdf0e10cSrcweir #* 594cdf0e10cSrcweir #* Output: --- 595cdf0e10cSrcweir #* 596cdf0e10cSrcweir #************************************************************************/ 597cdf0e10cSrcweir void ArgInput::EdModify() 598cdf0e10cSrcweir { 599cdf0e10cSrcweir aEdModifyLink.Call(this); 600cdf0e10cSrcweir } 601cdf0e10cSrcweir 602cdf0e10cSrcweir /************************************************************************* 603cdf0e10cSrcweir #* Handle: FxBtnHdl Datum:13.01.97 604cdf0e10cSrcweir #*------------------------------------------------------------------------ 605cdf0e10cSrcweir #* 606cdf0e10cSrcweir #* Klasse: ArgInput 607cdf0e10cSrcweir #* 608cdf0e10cSrcweir #* Funktion: Handle fuer Fx-Button Click-Event. 609cdf0e10cSrcweir #* 610cdf0e10cSrcweir #* Input: --- 611cdf0e10cSrcweir #* 612cdf0e10cSrcweir #* Output: --- 613cdf0e10cSrcweir #* 614cdf0e10cSrcweir #************************************************************************/ 615cdf0e10cSrcweir IMPL_LINK( ArgInput, FxBtnClickHdl, ImageButton*, pBtn ) 616cdf0e10cSrcweir { 617cdf0e10cSrcweir if(pBtn==pBtnFx) FxClick(); 618cdf0e10cSrcweir 619cdf0e10cSrcweir return 0; 620cdf0e10cSrcweir } 621cdf0e10cSrcweir 622cdf0e10cSrcweir /************************************************************************* 623cdf0e10cSrcweir #* Handle: RefBtnClickHdl Datum:13.01.97 624cdf0e10cSrcweir #*------------------------------------------------------------------------ 625cdf0e10cSrcweir #* 626cdf0e10cSrcweir #* Klasse: ArgInput 627cdf0e10cSrcweir #* 628cdf0e10cSrcweir #* Funktion: Handle fuer Fx-Button Click-Event. 629cdf0e10cSrcweir #* 630cdf0e10cSrcweir #* Input: --- 631cdf0e10cSrcweir #* 632cdf0e10cSrcweir #* Output: --- 633cdf0e10cSrcweir #* 634cdf0e10cSrcweir #************************************************************************/ 635cdf0e10cSrcweir IMPL_LINK( ArgInput, RefBtnClickHdl,RefButton*, pBtn ) 636cdf0e10cSrcweir { 637cdf0e10cSrcweir if(pRefBtn==pBtn) RefClick(); 638cdf0e10cSrcweir 639cdf0e10cSrcweir return 0; 640cdf0e10cSrcweir } 641cdf0e10cSrcweir 642cdf0e10cSrcweir /************************************************************************* 643cdf0e10cSrcweir #* Handle: FxBtnFocusHdl Datum:13.01.97 644cdf0e10cSrcweir #*------------------------------------------------------------------------ 645cdf0e10cSrcweir #* 646cdf0e10cSrcweir #* Klasse: ArgInput 647cdf0e10cSrcweir #* 648cdf0e10cSrcweir #* Funktion: Handle fuer Fx-Button Focus-Event. 649cdf0e10cSrcweir #* 650cdf0e10cSrcweir #* Input: --- 651cdf0e10cSrcweir #* 652cdf0e10cSrcweir #* Output: --- 653cdf0e10cSrcweir #* 654cdf0e10cSrcweir #************************************************************************/ 655cdf0e10cSrcweir IMPL_LINK( ArgInput, FxBtnFocusHdl, ImageButton*, pBtn ) 656cdf0e10cSrcweir { 657cdf0e10cSrcweir if(pBtn==pBtnFx) FxFocus(); 658cdf0e10cSrcweir 659cdf0e10cSrcweir return 0; 660cdf0e10cSrcweir } 661cdf0e10cSrcweir 662cdf0e10cSrcweir /************************************************************************* 663cdf0e10cSrcweir #* Handle: RefBtnFocusHdl Datum:13.01.97 664cdf0e10cSrcweir #*------------------------------------------------------------------------ 665cdf0e10cSrcweir #* 666cdf0e10cSrcweir #* Klasse: ArgInput 667cdf0e10cSrcweir #* 668cdf0e10cSrcweir #* Funktion: Handle fuer Fx-Button Focus-Event. 669cdf0e10cSrcweir #* 670cdf0e10cSrcweir #* Input: --- 671cdf0e10cSrcweir #* 672cdf0e10cSrcweir #* Output: --- 673cdf0e10cSrcweir #* 674cdf0e10cSrcweir #************************************************************************/ 675cdf0e10cSrcweir IMPL_LINK( ArgInput, RefBtnFocusHdl,RefButton*, pBtn ) 676cdf0e10cSrcweir { 677cdf0e10cSrcweir if(pRefBtn==pBtn) RefFocus(); 678cdf0e10cSrcweir 679cdf0e10cSrcweir return 0; 680cdf0e10cSrcweir } 681cdf0e10cSrcweir 682cdf0e10cSrcweir /************************************************************************* 683cdf0e10cSrcweir #* Handle: EdFocusHdl Datum:13.01.97 684cdf0e10cSrcweir #*------------------------------------------------------------------------ 685cdf0e10cSrcweir #* 686cdf0e10cSrcweir #* Klasse: ArgInput 687cdf0e10cSrcweir #* 688cdf0e10cSrcweir #* Funktion: Handle fuer Fx-Button Focus-Event. 689cdf0e10cSrcweir #* 690cdf0e10cSrcweir #* Input: --- 691cdf0e10cSrcweir #* 692cdf0e10cSrcweir #* Output: --- 693cdf0e10cSrcweir #* 694cdf0e10cSrcweir #************************************************************************/ 695cdf0e10cSrcweir IMPL_LINK( ArgInput, EdFocusHdl, ArgEdit*, pEd ) 696cdf0e10cSrcweir { 697cdf0e10cSrcweir if(pEd==pEdArg) EdFocus(); 698cdf0e10cSrcweir 699cdf0e10cSrcweir return 0; 700cdf0e10cSrcweir } 701cdf0e10cSrcweir 702cdf0e10cSrcweir /************************************************************************* 703cdf0e10cSrcweir #* Handle: RefBtnClickHdl Datum:13.01.97 704cdf0e10cSrcweir #*------------------------------------------------------------------------ 705cdf0e10cSrcweir #* 706cdf0e10cSrcweir #* Klasse: ArgInput 707cdf0e10cSrcweir #* 708cdf0e10cSrcweir #* Funktion: Handle fuer Fx-Button Focus-Event. 709cdf0e10cSrcweir #* 710cdf0e10cSrcweir #* Input: --- 711cdf0e10cSrcweir #* 712cdf0e10cSrcweir #* Output: --- 713cdf0e10cSrcweir #* 714cdf0e10cSrcweir #************************************************************************/ 715cdf0e10cSrcweir IMPL_LINK( ArgInput, EdModifyHdl,ArgEdit*, pEd ) 716cdf0e10cSrcweir { 717cdf0e10cSrcweir if(pEd==pEdArg) EdModify(); 718cdf0e10cSrcweir 719cdf0e10cSrcweir return 0; 720cdf0e10cSrcweir } 721cdf0e10cSrcweir 722cdf0e10cSrcweir /************************************************************************* 723cdf0e10cSrcweir #* Member: EditBox Datum:20.01.97 724cdf0e10cSrcweir #*------------------------------------------------------------------------ 725cdf0e10cSrcweir #* 726cdf0e10cSrcweir #* Klasse: EditBox 727cdf0e10cSrcweir #* 728cdf0e10cSrcweir #* Funktion: Konstruktor der Klasse ArgInput 729cdf0e10cSrcweir #* 730cdf0e10cSrcweir #* Input: Parent, Window-Style 731cdf0e10cSrcweir #* 732cdf0e10cSrcweir #* Output: --- 733cdf0e10cSrcweir #* 734cdf0e10cSrcweir #************************************************************************/ 735cdf0e10cSrcweir EditBox::EditBox( Window* pParent,WinBits nWinStyle) 736cdf0e10cSrcweir :Control(pParent,nWinStyle|WB_DIALOGCONTROL) 737cdf0e10cSrcweir { 738cdf0e10cSrcweir pMEdit=new MultiLineEdit(this,WB_LEFT | WB_VSCROLL | (nWinStyle & WB_TABSTOP) | 739cdf0e10cSrcweir WB_NOBORDER | WB_NOHIDESELECTION | WB_IGNORETAB); 740cdf0e10cSrcweir 741cdf0e10cSrcweir pMEdit->Show(); 742cdf0e10cSrcweir aOldSel=pMEdit->GetSelection(); 743cdf0e10cSrcweir } 744cdf0e10cSrcweir 745cdf0e10cSrcweir /************************************************************************* 746cdf0e10cSrcweir #* Member: EditBox Datum:20.01.97 747cdf0e10cSrcweir #*------------------------------------------------------------------------ 748cdf0e10cSrcweir #* 749cdf0e10cSrcweir #* Klasse: EditBox 750cdf0e10cSrcweir #* 751cdf0e10cSrcweir #* Funktion: Konstruktor der Klasse ArgInput 752cdf0e10cSrcweir #* 753cdf0e10cSrcweir #* Input: Parent, Resource 754cdf0e10cSrcweir #* 755cdf0e10cSrcweir #* Output: --- 756cdf0e10cSrcweir #* 757cdf0e10cSrcweir #************************************************************************/ 758cdf0e10cSrcweir EditBox::EditBox( Window* pParent, const ResId& rResId ) 759cdf0e10cSrcweir :Control(pParent,rResId), 760cdf0e10cSrcweir bMouseFlag(sal_False) 761cdf0e10cSrcweir { 762cdf0e10cSrcweir WinBits nStyle=GetStyle(); 763cdf0e10cSrcweir SetStyle( nStyle| WB_DIALOGCONTROL); 764cdf0e10cSrcweir 765cdf0e10cSrcweir pMEdit=new MultiLineEdit(this,WB_LEFT | WB_VSCROLL | (nStyle & WB_TABSTOP) | 766cdf0e10cSrcweir WB_NOBORDER | WB_NOHIDESELECTION | WB_IGNORETAB); 767cdf0e10cSrcweir pMEdit->Show(); 768cdf0e10cSrcweir aOldSel=pMEdit->GetSelection(); 769cdf0e10cSrcweir Resize(); 770cdf0e10cSrcweir WinBits nWinStyle=GetStyle() | WB_DIALOGCONTROL; 771cdf0e10cSrcweir SetStyle(nWinStyle); 772cdf0e10cSrcweir 773cdf0e10cSrcweir // #105582# the HelpId from the resource must be set for the MultiLineEdit, 774cdf0e10cSrcweir // not for the control that contains it. 775cdf0e10cSrcweir pMEdit->SetHelpId( GetHelpId() ); 776cdf0e10cSrcweir SetHelpId( "" ); 777cdf0e10cSrcweir } 778cdf0e10cSrcweir 779cdf0e10cSrcweir EditBox::~EditBox() 780cdf0e10cSrcweir { 781cdf0e10cSrcweir MultiLineEdit* pTheEdit=pMEdit; 782cdf0e10cSrcweir pMEdit->Disable(); 783cdf0e10cSrcweir pMEdit=NULL; 784cdf0e10cSrcweir delete pTheEdit; 785cdf0e10cSrcweir } 786cdf0e10cSrcweir /************************************************************************* 787cdf0e10cSrcweir #* Member: EditBox Datum:20.01.97 788cdf0e10cSrcweir #*------------------------------------------------------------------------ 789cdf0e10cSrcweir #* 790cdf0e10cSrcweir #* Klasse: EditBox 791cdf0e10cSrcweir #* 792cdf0e10cSrcweir #* Funktion: Wenn sich die Selektion geaendert hat, so wird 793cdf0e10cSrcweir #* diese Funktion aufgerufen. 794cdf0e10cSrcweir #* 795cdf0e10cSrcweir #* Input: --- 796cdf0e10cSrcweir #* 797cdf0e10cSrcweir #* Output: --- 798cdf0e10cSrcweir #* 799cdf0e10cSrcweir #************************************************************************/ 800cdf0e10cSrcweir void EditBox::SelectionChanged() 801cdf0e10cSrcweir { 802cdf0e10cSrcweir aSelChangedLink.Call(this); 803cdf0e10cSrcweir } 804cdf0e10cSrcweir 805cdf0e10cSrcweir /************************************************************************* 806cdf0e10cSrcweir #* Member: EditBox Datum:20.05.98 807cdf0e10cSrcweir #*------------------------------------------------------------------------ 808cdf0e10cSrcweir #* 809cdf0e10cSrcweir #* Klasse: EditBox 810cdf0e10cSrcweir #* 811cdf0e10cSrcweir #* Funktion: Wenn sich die Groesse geaendert hat, so muss 812cdf0e10cSrcweir #* auch der MultiLineEdit angepasst werden.. 813cdf0e10cSrcweir #* 814cdf0e10cSrcweir #* Input: --- 815cdf0e10cSrcweir #* 816cdf0e10cSrcweir #* Output: --- 817cdf0e10cSrcweir #* 818cdf0e10cSrcweir #************************************************************************/ 819cdf0e10cSrcweir void EditBox::Resize() 820cdf0e10cSrcweir { 821cdf0e10cSrcweir Size aSize=GetOutputSizePixel(); 822cdf0e10cSrcweir if(pMEdit!=NULL) pMEdit->SetOutputSizePixel(aSize); 823cdf0e10cSrcweir } 824cdf0e10cSrcweir 825cdf0e10cSrcweir /************************************************************************* 826cdf0e10cSrcweir #* Member: GetFocus Datum:26.05.98 827cdf0e10cSrcweir #*------------------------------------------------------------------------ 828cdf0e10cSrcweir #* 829cdf0e10cSrcweir #* Klasse: EditBox 830cdf0e10cSrcweir #* 831cdf0e10cSrcweir #* Funktion: Wenn der Control aktiviert wird, so wird 832cdf0e10cSrcweir #* die Selection aufgehoben und der Cursor ans 833cdf0e10cSrcweir #* Ende gesetzt. 834cdf0e10cSrcweir #* 835cdf0e10cSrcweir #* Input: --- 836cdf0e10cSrcweir #* 837cdf0e10cSrcweir #* Output: --- 838cdf0e10cSrcweir #* 839cdf0e10cSrcweir #************************************************************************/ 840cdf0e10cSrcweir void EditBox::GetFocus() 841cdf0e10cSrcweir { 842cdf0e10cSrcweir if(pMEdit!=NULL) 843cdf0e10cSrcweir { 844cdf0e10cSrcweir pMEdit->GrabFocus(); 845cdf0e10cSrcweir } 846cdf0e10cSrcweir } 847cdf0e10cSrcweir 848cdf0e10cSrcweir 849cdf0e10cSrcweir 850cdf0e10cSrcweir /************************************************************************* 851cdf0e10cSrcweir #* Member: EditBox Datum:20.01.97 852cdf0e10cSrcweir #*------------------------------------------------------------------------ 853cdf0e10cSrcweir #* 854cdf0e10cSrcweir #* Klasse: EditBox 855cdf0e10cSrcweir #* 856cdf0e10cSrcweir #* Funktion: Wenn ein Event ausgeloest wird, so wird diese Routine 857cdf0e10cSrcweir #* zuerst aufgerufen und ein PostUserEvent verschickt. 858cdf0e10cSrcweir #* 859cdf0e10cSrcweir #* Input: Notify-Event 860cdf0e10cSrcweir #* 861cdf0e10cSrcweir #* Output: --- 862cdf0e10cSrcweir #* 863cdf0e10cSrcweir #************************************************************************/ 864cdf0e10cSrcweir long EditBox::PreNotify( NotifyEvent& rNEvt ) 865cdf0e10cSrcweir { 866cdf0e10cSrcweir long nResult=sal_True; 867cdf0e10cSrcweir 868cdf0e10cSrcweir if(pMEdit==NULL) return nResult; 869cdf0e10cSrcweir 870cdf0e10cSrcweir sal_uInt16 nSwitch=rNEvt.GetType(); 871cdf0e10cSrcweir if(nSwitch==EVENT_KEYINPUT)// || nSwitch==EVENT_KEYUP) 872cdf0e10cSrcweir { 873cdf0e10cSrcweir const KeyCode& aKeyCode=rNEvt.GetKeyEvent()->GetKeyCode(); 874cdf0e10cSrcweir sal_uInt16 nKey=aKeyCode.GetCode(); 875cdf0e10cSrcweir if( (nKey==KEY_RETURN && !aKeyCode.IsShift()) || nKey==KEY_TAB ) 876cdf0e10cSrcweir { 877cdf0e10cSrcweir nResult=GetParent()->Notify(rNEvt); 878cdf0e10cSrcweir } 879cdf0e10cSrcweir else 880cdf0e10cSrcweir { 881cdf0e10cSrcweir nResult=Control::PreNotify(rNEvt); 882cdf0e10cSrcweir Application::PostUserEvent( LINK( this, EditBox, ChangedHdl ) ); 883cdf0e10cSrcweir } 884cdf0e10cSrcweir 885cdf0e10cSrcweir } 886cdf0e10cSrcweir else 887cdf0e10cSrcweir { 888cdf0e10cSrcweir nResult=Control::PreNotify(rNEvt); 889cdf0e10cSrcweir 890cdf0e10cSrcweir if(nSwitch==EVENT_MOUSEBUTTONDOWN || nSwitch==EVENT_MOUSEBUTTONUP) 891cdf0e10cSrcweir { 892cdf0e10cSrcweir bMouseFlag=sal_True; 893cdf0e10cSrcweir Application::PostUserEvent( LINK( this, EditBox, ChangedHdl ) ); 894cdf0e10cSrcweir } 895cdf0e10cSrcweir } 896cdf0e10cSrcweir return nResult; 897cdf0e10cSrcweir } 898cdf0e10cSrcweir 899cdf0e10cSrcweir /************************************************************************* 900cdf0e10cSrcweir #* Member: EditBox Datum:21.01.97 901cdf0e10cSrcweir #*------------------------------------------------------------------------ 902cdf0e10cSrcweir #* 903cdf0e10cSrcweir #* Klasse: EditBox 904cdf0e10cSrcweir #* 905cdf0e10cSrcweir #* Funktion: Wenn ein Event ausgeloest wurde, so wird diese Routine 906cdf0e10cSrcweir #* zuerst aufgerufen. 907cdf0e10cSrcweir #* 908cdf0e10cSrcweir #* Input: Key-Event 909cdf0e10cSrcweir #* 910cdf0e10cSrcweir #* Output: --- 911cdf0e10cSrcweir #* 912cdf0e10cSrcweir #************************************************************************/ 913cdf0e10cSrcweir IMPL_LINK( EditBox, ChangedHdl, EditBox*, EMPTYARG ) 914cdf0e10cSrcweir { 915cdf0e10cSrcweir if(pMEdit!=NULL) 916cdf0e10cSrcweir { 917cdf0e10cSrcweir Selection aNewSel=pMEdit->GetSelection(); 918cdf0e10cSrcweir 919cdf0e10cSrcweir if(aNewSel.Min()!=aOldSel.Min() || aNewSel.Max()!=aOldSel.Max()) 920cdf0e10cSrcweir { 921cdf0e10cSrcweir SelectionChanged(); 922cdf0e10cSrcweir aOldSel=aNewSel; 923cdf0e10cSrcweir } 924cdf0e10cSrcweir } 925cdf0e10cSrcweir return 0; 926cdf0e10cSrcweir } 927cdf0e10cSrcweir 928cdf0e10cSrcweir void EditBox::UpdateOldSel() 929cdf0e10cSrcweir { 930cdf0e10cSrcweir // if selection is set for editing a function, store it as aOldSel, 931cdf0e10cSrcweir // so SelectionChanged isn't called in the next ChangedHdl call 932cdf0e10cSrcweir 933cdf0e10cSrcweir if (pMEdit) 934cdf0e10cSrcweir aOldSel = pMEdit->GetSelection(); 935cdf0e10cSrcweir } 936cdf0e10cSrcweir //---------------------------------------------------------------------------- 937cdf0e10cSrcweir 938cdf0e10cSrcweir //============================================================================ 939cdf0e10cSrcweir // class RefEdit 940cdf0e10cSrcweir //---------------------------------------------------------------------------- 941cdf0e10cSrcweir 942cdf0e10cSrcweir #define SC_ENABLE_TIME 100 943cdf0e10cSrcweir 944cdf0e10cSrcweir RefEdit::RefEdit( Window* _pParent,IControlReferenceHandler* pParent, const ResId& rResId ) : 945cdf0e10cSrcweir Edit( _pParent, rResId ), 946cdf0e10cSrcweir pAnyRefDlg( pParent ), 947cdf0e10cSrcweir bSilentFocus( sal_False ) 948cdf0e10cSrcweir { 949cdf0e10cSrcweir aTimer.SetTimeoutHdl( LINK( this, RefEdit, UpdateHdl ) ); 950cdf0e10cSrcweir aTimer.SetTimeout( SC_ENABLE_TIME ); 951cdf0e10cSrcweir } 952cdf0e10cSrcweir 953cdf0e10cSrcweir RefEdit::RefEdit( Window* pParent, const ResId& rResId ) : 954cdf0e10cSrcweir Edit( pParent, rResId ), 955cdf0e10cSrcweir pAnyRefDlg( NULL ), 956cdf0e10cSrcweir bSilentFocus( sal_False ) 957cdf0e10cSrcweir { 958cdf0e10cSrcweir } 959cdf0e10cSrcweir 960cdf0e10cSrcweir RefEdit::~RefEdit() 961cdf0e10cSrcweir { 962cdf0e10cSrcweir aTimer.SetTimeoutHdl( Link() ); 963cdf0e10cSrcweir aTimer.Stop(); 964cdf0e10cSrcweir } 965cdf0e10cSrcweir 966cdf0e10cSrcweir void RefEdit::SetRefString( const XubString& rStr ) 967cdf0e10cSrcweir { 968cdf0e10cSrcweir Edit::SetText( rStr ); 969cdf0e10cSrcweir } 970cdf0e10cSrcweir 971cdf0e10cSrcweir void RefEdit::SetText( const XubString& rStr ) 972cdf0e10cSrcweir { 973cdf0e10cSrcweir Edit::SetText( rStr ); 974cdf0e10cSrcweir UpdateHdl( &aTimer ); 975cdf0e10cSrcweir } 976cdf0e10cSrcweir 977cdf0e10cSrcweir void RefEdit::StartUpdateData() 978cdf0e10cSrcweir { 979cdf0e10cSrcweir aTimer.Start(); 980cdf0e10cSrcweir } 981cdf0e10cSrcweir 982cdf0e10cSrcweir void RefEdit::SilentGrabFocus() 983cdf0e10cSrcweir { 984cdf0e10cSrcweir bSilentFocus = sal_True; 985cdf0e10cSrcweir GrabFocus(); 986cdf0e10cSrcweir bSilentFocus = sal_False; 987cdf0e10cSrcweir } 988cdf0e10cSrcweir 989cdf0e10cSrcweir void RefEdit::SetRefDialog( IControlReferenceHandler* pDlg ) 990cdf0e10cSrcweir { 991cdf0e10cSrcweir pAnyRefDlg = pDlg; 992cdf0e10cSrcweir 993cdf0e10cSrcweir if( pDlg ) 994cdf0e10cSrcweir { 995cdf0e10cSrcweir aTimer.SetTimeoutHdl( LINK( this, RefEdit, UpdateHdl ) ); 996cdf0e10cSrcweir aTimer.SetTimeout( SC_ENABLE_TIME ); 997cdf0e10cSrcweir } 998cdf0e10cSrcweir else 999cdf0e10cSrcweir { 1000cdf0e10cSrcweir aTimer.SetTimeoutHdl( Link() ); 1001cdf0e10cSrcweir aTimer.Stop(); 1002cdf0e10cSrcweir } 1003cdf0e10cSrcweir } 1004cdf0e10cSrcweir 1005cdf0e10cSrcweir void RefEdit::Modify() 1006cdf0e10cSrcweir { 1007cdf0e10cSrcweir Edit::Modify(); 1008cdf0e10cSrcweir if( pAnyRefDlg ) 1009cdf0e10cSrcweir pAnyRefDlg->HideReference(); 1010cdf0e10cSrcweir } 1011cdf0e10cSrcweir 1012cdf0e10cSrcweir void RefEdit::KeyInput( const KeyEvent& rKEvt ) 1013cdf0e10cSrcweir { 1014cdf0e10cSrcweir const KeyCode& rKeyCode = rKEvt.GetKeyCode(); 1015cdf0e10cSrcweir if( pAnyRefDlg && !rKeyCode.GetModifier() && (rKeyCode.GetCode() == KEY_F2) ) 1016cdf0e10cSrcweir pAnyRefDlg->ReleaseFocus( this ); 1017cdf0e10cSrcweir else 1018cdf0e10cSrcweir Edit::KeyInput( rKEvt ); 1019cdf0e10cSrcweir } 1020cdf0e10cSrcweir 1021cdf0e10cSrcweir void RefEdit::GetFocus() 1022cdf0e10cSrcweir { 1023cdf0e10cSrcweir Edit::GetFocus(); 1024cdf0e10cSrcweir if( !bSilentFocus ) 1025cdf0e10cSrcweir StartUpdateData(); 1026cdf0e10cSrcweir } 1027cdf0e10cSrcweir 1028cdf0e10cSrcweir void RefEdit::LoseFocus() 1029cdf0e10cSrcweir { 1030cdf0e10cSrcweir Edit::LoseFocus(); 1031cdf0e10cSrcweir if( pAnyRefDlg ) 1032cdf0e10cSrcweir pAnyRefDlg->HideReference(); 1033cdf0e10cSrcweir } 1034cdf0e10cSrcweir 1035cdf0e10cSrcweir IMPL_LINK( RefEdit, UpdateHdl, Timer*, EMPTYARG ) 1036cdf0e10cSrcweir { 1037cdf0e10cSrcweir if( pAnyRefDlg ) 1038cdf0e10cSrcweir pAnyRefDlg->ShowReference( GetText() ); 1039cdf0e10cSrcweir return 0; 1040cdf0e10cSrcweir } 1041cdf0e10cSrcweir 1042cdf0e10cSrcweir 1043cdf0e10cSrcweir //============================================================================ 1044cdf0e10cSrcweir // class RefButton 1045cdf0e10cSrcweir //---------------------------------------------------------------------------- 1046cdf0e10cSrcweir RefButton::RefButton( Window* _pParent, const ResId& rResId) : 1047cdf0e10cSrcweir ImageButton( _pParent, rResId ), 1048cdf0e10cSrcweir aImgRefStart( ModuleRes( RID_BMP_REFBTN1 ) ), 1049cdf0e10cSrcweir aImgRefStartHC( ModuleRes( RID_BMP_REFBTN1_H ) ), 1050cdf0e10cSrcweir aImgRefDone( ModuleRes( RID_BMP_REFBTN2 ) ), 1051cdf0e10cSrcweir aImgRefDoneHC( ModuleRes( RID_BMP_REFBTN2_H ) ), 1052cdf0e10cSrcweir pAnyRefDlg( NULL ), 1053cdf0e10cSrcweir pRefEdit( NULL ) 1054cdf0e10cSrcweir { 1055cdf0e10cSrcweir SetStartImage(); 1056cdf0e10cSrcweir } 1057cdf0e10cSrcweir 1058cdf0e10cSrcweir RefButton::RefButton( Window* _pParent, const ResId& rResId, RefEdit* pEdit, IControlReferenceHandler* _pDlg ) : 1059cdf0e10cSrcweir ImageButton( _pParent, rResId ), 1060cdf0e10cSrcweir aImgRefStart( ModuleRes( RID_BMP_REFBTN1 ) ), 1061cdf0e10cSrcweir aImgRefStartHC( ModuleRes( RID_BMP_REFBTN1_H ) ), 1062cdf0e10cSrcweir aImgRefDone( ModuleRes( RID_BMP_REFBTN2 ) ), 1063cdf0e10cSrcweir aImgRefDoneHC( ModuleRes( RID_BMP_REFBTN2_H ) ), 1064cdf0e10cSrcweir pAnyRefDlg( _pDlg ), 1065cdf0e10cSrcweir pRefEdit( pEdit ) 1066cdf0e10cSrcweir { 1067cdf0e10cSrcweir SetStartImage(); 1068cdf0e10cSrcweir } 1069cdf0e10cSrcweir 1070cdf0e10cSrcweir void RefButton::SetStartImage() 1071cdf0e10cSrcweir { 1072cdf0e10cSrcweir SetModeImage( aImgRefStart ); 1073cdf0e10cSrcweir SetModeImage( aImgRefStartHC, BMP_COLOR_HIGHCONTRAST ); 1074cdf0e10cSrcweir } 1075cdf0e10cSrcweir 1076cdf0e10cSrcweir void RefButton::SetEndImage() 1077cdf0e10cSrcweir { 1078cdf0e10cSrcweir SetModeImage( aImgRefDone ); 1079cdf0e10cSrcweir SetModeImage( aImgRefDoneHC, BMP_COLOR_HIGHCONTRAST ); 1080cdf0e10cSrcweir } 1081cdf0e10cSrcweir 1082cdf0e10cSrcweir void RefButton::SetReferences( IControlReferenceHandler* pDlg, RefEdit* pEdit ) 1083cdf0e10cSrcweir { 1084cdf0e10cSrcweir pAnyRefDlg = pDlg; 1085cdf0e10cSrcweir pRefEdit = pEdit; 1086cdf0e10cSrcweir } 1087cdf0e10cSrcweir 1088cdf0e10cSrcweir //---------------------------------------------------------------------------- 1089cdf0e10cSrcweir 1090cdf0e10cSrcweir void RefButton::Click() 1091cdf0e10cSrcweir { 1092cdf0e10cSrcweir if( pAnyRefDlg ) 1093cdf0e10cSrcweir pAnyRefDlg->ToggleCollapsed( pRefEdit, this ); 1094cdf0e10cSrcweir } 1095cdf0e10cSrcweir 1096cdf0e10cSrcweir void RefButton::KeyInput( const KeyEvent& rKEvt ) 1097cdf0e10cSrcweir { 1098cdf0e10cSrcweir const KeyCode& rKeyCode = rKEvt.GetKeyCode(); 1099cdf0e10cSrcweir if( pAnyRefDlg && !rKeyCode.GetModifier() && (rKeyCode.GetCode() == KEY_F2) ) 1100cdf0e10cSrcweir pAnyRefDlg->ReleaseFocus( pRefEdit ); 1101cdf0e10cSrcweir else 1102cdf0e10cSrcweir ImageButton::KeyInput( rKEvt ); 1103cdf0e10cSrcweir } 1104cdf0e10cSrcweir 1105cdf0e10cSrcweir void RefButton::GetFocus() 1106cdf0e10cSrcweir { 1107cdf0e10cSrcweir ImageButton::GetFocus(); 1108cdf0e10cSrcweir if( pRefEdit ) 1109cdf0e10cSrcweir pRefEdit->StartUpdateData(); 1110cdf0e10cSrcweir } 1111cdf0e10cSrcweir 1112cdf0e10cSrcweir void RefButton::LoseFocus() 1113cdf0e10cSrcweir { 1114cdf0e10cSrcweir ImageButton::LoseFocus(); 1115cdf0e10cSrcweir if( pRefEdit ) 1116cdf0e10cSrcweir pRefEdit->Modify(); 1117cdf0e10cSrcweir } 1118cdf0e10cSrcweir 1119cdf0e10cSrcweir 1120cdf0e10cSrcweir } // formula 1121