1 /************************************************************************* 2 * 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * Copyright 2000, 2010 Oracle and/or its affiliates. 6 * 7 * OpenOffice.org - a multi-platform office productivity suite 8 * 9 * This file is part of OpenOffice.org. 10 * 11 * OpenOffice.org is free software: you can redistribute it and/or modify 12 * it under the terms of the GNU Lesser General Public License version 3 13 * only, as published by the Free Software Foundation. 14 * 15 * OpenOffice.org is distributed in the hope that it will be useful, 16 * but WITHOUT ANY WARRANTY; without even the implied warranty of 17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 18 * GNU Lesser General Public License version 3 for more details 19 * (a copy is included in the LICENSE file that accompanied this code). 20 * 21 * You should have received a copy of the GNU Lesser General Public License 22 * version 3 along with OpenOffice.org. If not, see 23 * <http://www.openoffice.org/license.html> 24 * for a copy of the LGPLv3 License. 25 * 26 ************************************************************************/ 27 28 // MARKER(update_precomp.py): autogen include statement, do not remove 29 #include "precompiled_svtools.hxx" 30 31 32 #ifndef GCC 33 #endif 34 35 //------------------------------------------------------------------ 36 37 //#include "Svitems.hxx" 38 39 #include "property.hxx" 40 /* 41 #include "property.hrc" 42 #include "Scresid.hxx" 43 */ 44 #define FRAME_OFFSET 4 45 46 47 SvXPropertyControl::SvXPropertyControl( Window* pParent, WinBits nWinStyle) 48 : Control(pParent,nWinStyle) 49 { 50 } 51 52 SvXPropertyControl::SvXPropertyControl( Window* pParent, const ResId& rResId ) 53 : Control(pParent,rResId ) 54 { 55 } 56 57 //------------------------------------------------------------------ 58 59 SvXPropertyEdit::SvXPropertyEdit( Window* pParent, WinBits nWinStyle) 60 : SvXPropertyControl(pParent,nWinStyle), 61 aEdit(this,WB_BORDER | WB_TABSTOP) 62 { 63 pListener=NULL; 64 aEdit.SetModifyHdl( 65 LINK( this, SvXPropertyEdit, ModifiedHdl )); 66 aEdit.SetGetFocusHdl( 67 LINK( this, SvXPropertyEdit, GetFocusHdl)); 68 aEdit.SetLoseFocusHdl( 69 LINK( this, SvXPropertyEdit, LoseFocusHdl)); 70 71 aEdit.Show(); 72 } 73 74 SvXPropertyEdit::SvXPropertyEdit( Window* pParent, const ResId& rResId) 75 : SvXPropertyControl(pParent,rResId), 76 aEdit(this,WB_BORDER | WB_TABSTOP) 77 { 78 pListener=NULL; 79 aEdit.SetModifyHdl( 80 LINK( this, SvXPropertyEdit, ModifiedHdl )); 81 aEdit.SetGetFocusHdl( 82 LINK( this, SvXPropertyEdit, GetFocusHdl)); 83 aEdit.SetLoseFocusHdl( 84 LINK( this, SvXPropertyEdit, LoseFocusHdl)); 85 86 Size aSize=GetSizePixel(); 87 SetCtrSize(aSize); 88 aEdit.Show(); 89 } 90 91 void SvXPropertyEdit::SetSvXPropertyCtrListener(SvXPropertyCtrListener* pCtrListener) 92 { 93 pListener=pCtrListener; 94 } 95 96 SvXPropertyCtrListener* SvXPropertyEdit::GetSvXPropertyCtrListener() 97 { 98 return pListener; 99 } 100 101 102 void SvXPropertyEdit::SetCtrSize(const Size& rSize) 103 { 104 SetSizePixel(rSize); 105 Size aSize=GetOutputSizePixel(); 106 Point aPos(0,0); 107 aEdit.SetPosPixel(aPos); 108 aEdit.SetSizePixel(aSize); 109 } 110 111 void SvXPropertyEdit::SetLocked(sal_Bool bLocked) 112 { 113 if(bLocked) 114 Disable(); 115 else 116 Enable(); 117 } 118 119 void SvXPropertyEdit::SetProperty(const String &rString) 120 { 121 aEdit.SetText(rString); 122 } 123 124 String SvXPropertyEdit::GetProperty() const 125 { 126 return aEdit.GetText(); 127 } 128 129 sal_Bool SvXPropertyEdit::HasList() 130 { 131 return sal_False; 132 }; 133 134 135 void SvXPropertyEdit::ClearList() 136 { 137 return; 138 } 139 void SvXPropertyEdit::InsertEntry( const String&,sal_uInt16 ) 140 { 141 return; 142 } 143 144 void SvXPropertyEdit::SetMyName(const String &rString) 145 { 146 aName=rString; 147 } 148 149 String SvXPropertyEdit::GetMyName()const 150 { 151 return aName; 152 } 153 154 void SvXPropertyEdit::SetMyData(void* pDat) 155 { 156 pData=pDat; 157 } 158 159 void* SvXPropertyEdit::GetMyData() 160 { 161 return pData; 162 } 163 164 165 IMPL_LINK( SvXPropertyEdit, ModifiedHdl, Edit*, EMPTYARG ) 166 { 167 if(pListener!=NULL) 168 pListener->Modified(this); 169 return 0; 170 } 171 172 IMPL_LINK( SvXPropertyEdit, GetFocusHdl, Edit*, EMPTYARG ) 173 { 174 if(pListener!=NULL) 175 pListener->GetFocus(this); 176 return 0; 177 } 178 179 IMPL_LINK( SvXPropertyEdit, LoseFocusHdl, Edit*, EMPTYARG ) 180 { 181 if(pListener!=NULL) 182 pListener->LoseFocus(this); 183 return 0; 184 } 185 186 //------------------------------------------------------------------ 187 188 SvXPropertyListBox::SvXPropertyListBox( Window* pParent, WinBits nWinStyle) 189 : SvXPropertyControl(pParent,nWinStyle), 190 aListBox(this,WB_BORDER | WB_DROPDOWN | WB_TABSTOP) 191 { 192 pListener=NULL; 193 aListBox.SetSelectHdl( 194 LINK( this, SvXPropertyListBox, ModifiedHdl )); 195 aListBox.SetGetFocusHdl( 196 LINK( this, SvXPropertyListBox, GetFocusHdl)); 197 aListBox.SetLoseFocusHdl( 198 LINK( this, SvXPropertyListBox, LoseFocusHdl)); 199 aListBox.Show(); 200 } 201 202 SvXPropertyListBox::SvXPropertyListBox( Window* pParent, const ResId& rResId) 203 : SvXPropertyControl(pParent,rResId), 204 aListBox(this,WB_BORDER | WB_DROPDOWN | WB_TABSTOP) 205 { 206 pListener=NULL; 207 aListBox.SetSelectHdl( 208 LINK( this, SvXPropertyListBox, ModifiedHdl )); 209 aListBox.SetGetFocusHdl( 210 LINK( this, SvXPropertyListBox, GetFocusHdl)); 211 aListBox.SetLoseFocusHdl( 212 LINK( this, SvXPropertyListBox, LoseFocusHdl)); 213 214 Size aSize=GetSizePixel(); 215 SetCtrSize(aSize); 216 aListBox.Show(); 217 } 218 219 void SvXPropertyListBox::SetSvXPropertyCtrListener(SvXPropertyCtrListener* pCtrListener) 220 { 221 pListener=pCtrListener; 222 } 223 224 SvXPropertyCtrListener* SvXPropertyListBox::GetSvXPropertyCtrListener() 225 { 226 return pListener; 227 } 228 229 230 void SvXPropertyListBox::SetCtrSize(const Size& rSize) 231 { 232 SetSizePixel(rSize); 233 Size aSize=GetOutputSizePixel(); 234 Point aPos(0,0); 235 aListBox.SetPosPixel(aPos); 236 aListBox.SetSizePixel(aSize); 237 } 238 239 void SvXPropertyListBox::SetLocked(sal_Bool bLocked) 240 { 241 if(bLocked) 242 Disable(); 243 else 244 Enable(); 245 } 246 247 void SvXPropertyListBox::SetProperty(const String &rString) 248 { 249 aListBox.SelectEntry(rString); 250 } 251 252 String SvXPropertyListBox::GetProperty()const 253 { 254 return aListBox.GetSelectEntry(); 255 } 256 257 sal_Bool SvXPropertyListBox::HasList() 258 { 259 return sal_True; 260 } 261 262 263 void SvXPropertyListBox::ClearList() 264 { 265 aListBox.Clear(); 266 } 267 268 void SvXPropertyListBox::InsertEntry( const String& rString,sal_uInt16 nPos) 269 { 270 aListBox.InsertEntry(rString,nPos); 271 } 272 273 void SvXPropertyListBox::SetMyName(const String &rString) 274 { 275 aName=rString; 276 } 277 278 String SvXPropertyListBox::GetMyName()const 279 { 280 return aName; 281 } 282 283 void SvXPropertyListBox::SetMyData(void* pDat) 284 { 285 pData=pDat; 286 } 287 288 void* SvXPropertyListBox::GetMyData() 289 { 290 return pData; 291 } 292 293 IMPL_LINK( SvXPropertyListBox, ModifiedHdl, ListBox*, EMPTYARG ) 294 { 295 if(pListener!=NULL) 296 pListener->Modified(this); 297 return 0; 298 } 299 300 IMPL_LINK( SvXPropertyListBox, GetFocusHdl, ListBox*, EMPTYARG ) 301 { 302 if(pListener!=NULL) 303 pListener->GetFocus(this); 304 return 0; 305 } 306 307 IMPL_LINK( SvXPropertyListBox, LoseFocusHdl, ListBox*, EMPTYARG ) 308 { 309 if(pListener!=NULL) 310 pListener->LoseFocus(this); 311 return 0; 312 } 313 314 //------------------------------------------------------------------ 315 316 317 SvXPropertyComboBox::SvXPropertyComboBox( Window* pParent, WinBits nWinStyle) 318 : SvXPropertyControl(pParent,nWinStyle), 319 aComboBox(this,WB_BORDER | WB_DROPDOWN | WB_TABSTOP) 320 { 321 pListener=NULL; 322 aComboBox.SetModifyHdl( 323 LINK( this, SvXPropertyComboBox, ModifiedHdl )); 324 aComboBox.SetGetFocusHdl( 325 LINK( this, SvXPropertyComboBox, GetFocusHdl)); 326 aComboBox.SetLoseFocusHdl( 327 LINK( this, SvXPropertyComboBox, LoseFocusHdl)); 328 aComboBox.Show(); 329 } 330 331 SvXPropertyComboBox::SvXPropertyComboBox( Window* pParent, const ResId& rResId) 332 : SvXPropertyControl(pParent,rResId), 333 aComboBox(this,WB_BORDER | WB_DROPDOWN | WB_TABSTOP) 334 { 335 pListener=NULL; 336 aComboBox.SetModifyHdl( 337 LINK( this, SvXPropertyComboBox, ModifiedHdl )); 338 aComboBox.SetGetFocusHdl( 339 LINK( this, SvXPropertyComboBox, GetFocusHdl)); 340 aComboBox.SetLoseFocusHdl( 341 LINK( this, SvXPropertyComboBox, LoseFocusHdl)); 342 343 Size aSize=GetSizePixel(); 344 SetCtrSize(aSize); 345 aComboBox.Show(); 346 } 347 348 void SvXPropertyComboBox::SetLocked(sal_Bool bLocked) 349 { 350 if(bLocked) 351 Disable(); 352 else 353 Enable(); 354 } 355 356 void SvXPropertyComboBox::SetSvXPropertyCtrListener(SvXPropertyCtrListener* pCtrListener) 357 { 358 pListener=pCtrListener; 359 } 360 361 SvXPropertyCtrListener* SvXPropertyComboBox::GetSvXPropertyCtrListener() 362 { 363 return pListener; 364 } 365 366 367 void SvXPropertyComboBox::SetCtrSize(const Size& rSize) 368 { 369 SetSizePixel(rSize); 370 Size aSize=GetOutputSizePixel(); 371 Point aPos(0,0); 372 aComboBox.SetPosPixel(aPos); 373 aComboBox.SetSizePixel(aSize); 374 } 375 376 377 void SvXPropertyComboBox::SetProperty(const String &rString) 378 { 379 aComboBox.SetText(rString); 380 } 381 382 String SvXPropertyComboBox::GetProperty() const 383 { 384 return aComboBox.GetText(); 385 } 386 387 sal_Bool SvXPropertyComboBox::HasList() 388 { 389 return sal_True; 390 } 391 392 void SvXPropertyComboBox::ClearList() 393 { 394 aComboBox.Clear(); 395 } 396 397 void SvXPropertyComboBox::InsertEntry( const String& rString,sal_uInt16 nPos) 398 { 399 aComboBox.InsertEntry(rString,nPos); 400 } 401 402 void SvXPropertyComboBox::SetMyName(const String &rString) 403 { 404 aName=rString; 405 } 406 407 String SvXPropertyComboBox::GetMyName()const 408 { 409 return aName; 410 } 411 412 void SvXPropertyComboBox::SetMyData(void* pDat) 413 { 414 pData=pDat; 415 } 416 417 void* SvXPropertyComboBox::GetMyData() 418 { 419 return pData; 420 } 421 422 IMPL_LINK( SvXPropertyComboBox, ModifiedHdl, ComboBox*, EMPTYARG ) 423 { 424 if(pListener!=NULL) 425 pListener->Modified(this); 426 return 0; 427 } 428 429 IMPL_LINK( SvXPropertyComboBox, GetFocusHdl, ComboBox*, EMPTYARG ) 430 { 431 if(pListener!=NULL) 432 pListener->GetFocus(this); 433 return 0; 434 } 435 436 IMPL_LINK( SvXPropertyComboBox, LoseFocusHdl, ComboBox*, EMPTYARG ) 437 { 438 if(pListener!=NULL) 439 pListener->LoseFocus(this); 440 return 0; 441 } 442 //------------------------------------------------------------------ 443 444 SvPropertyLine::SvPropertyLine( Window* pParent,WinBits nWinStyle) 445 : Control(pParent,nWinStyle), 446 aName(this,WB_BORDER), 447 pSvXPropertyControl(NULL), 448 aXButton(this,WB_BORDER), 449 bIsLocked(sal_False), 450 bIsHyperlink(sal_False) 451 { 452 bNeedsRepaint = sal_True; 453 bHasXButton = sal_False; 454 aXButton.SetText( XubString( RTL_CONSTASCII_USTRINGPARAM( "..." ) ) ); 455 aName.Show(); 456 aXButton.Show(); 457 eKindOfCtr = KOC_UNDEFINED; 458 Wallpaper aWall = GetBackground(); 459 aWall.SetColor( Color( COL_TRANSPARENT ) ); 460 SetBackground( aWall ); 461 } 462 463 SvPropertyLine::SvPropertyLine( Window* pParent,const ResId& rResId ) 464 : Control(pParent,rResId), 465 aName (this,WB_BORDER), 466 pSvXPropertyControl(NULL), 467 aXButton (this,WB_BORDER), 468 bIsLocked(sal_False), 469 bIsHyperlink(sal_False) 470 { 471 bNeedsRepaint = sal_True; 472 bHasXButton = sal_False; 473 eKindOfCtr = KOC_UNDEFINED; 474 aXButton.SetText( XubString( RTL_CONSTASCII_USTRINGPARAM( "..." ) ) ); 475 aName.Show(); 476 aXButton.Show(); 477 Wallpaper aWall = GetBackground(); 478 aWall.SetColor( Color( COL_TRANSPARENT ) ); 479 SetBackground( aWall ); 480 Resize(); 481 } 482 483 void SvPropertyLine::SetSvXPropertyControl(SvXPropertyControl* pXControl) 484 { 485 pSvXPropertyControl=pXControl; 486 pSvXPropertyControl->Show(); 487 Resize(); 488 } 489 490 SvXPropertyControl* SvPropertyLine::GetSvXPropertyControl() 491 { 492 return pSvXPropertyControl; 493 } 494 495 void SvPropertyLine::Resize() 496 { 497 Size aSize=GetOutputSizePixel(); 498 Size a2Size=aSize; 499 500 aSize.Width()=nNameWidth; 501 a2Size.Width()-=nNameWidth; 502 503 Point aPos(0,0); 504 aName.SetPosPixel(aPos); 505 aName.SetSizePixel(aSize); 506 507 sal_uInt16 nXButtonWidth=0; 508 509 if(bHasXButton) 510 { 511 nXButtonWidth=(sal_uInt16)aSize.Height(); 512 } 513 a2Size.Width()=a2Size.Width()-nXButtonWidth; 514 515 aPos.X()+=aSize.Width(); 516 517 if(pSvXPropertyControl!=NULL) 518 { 519 pSvXPropertyControl->SetPosPixel(aPos); 520 pSvXPropertyControl->SetCtrSize(a2Size); 521 } 522 523 if(bHasXButton) 524 { 525 aPos.X()=GetOutputSizePixel().Width() 526 -nXButtonWidth; 527 aSize.Width()=nXButtonWidth; 528 aXButton .SetSizePixel(aSize); 529 aXButton .SetPosPixel(aPos); 530 } 531 } 532 533 void SvPropertyLine::SetNeedsRepaint(sal_Bool bFlag) 534 { 535 bNeedsRepaint=bFlag; 536 } 537 538 sal_Bool SvPropertyLine::NeedsRepaint() 539 { 540 return bNeedsRepaint; 541 } 542 543 void SvPropertyLine::SetName(const String& rString ) 544 { 545 aName.SetText(rString); 546 aName.Invalidate(); 547 } 548 549 String SvPropertyLine::GetName() const 550 { 551 return aName.GetText(); 552 } 553 554 void SvPropertyLine::SetKindOfControl(eKindOfControl eKOC) 555 { 556 eKindOfCtr=eKOC; 557 } 558 559 eKindOfControl SvPropertyLine::GetKindOfControl() 560 { 561 return eKindOfCtr; 562 } 563 564 void SvPropertyLine::ShowXButton() 565 { 566 bHasXButton=sal_True; 567 aXButton.Show(); 568 Resize(); 569 } 570 void SvPropertyLine::HideXButton() 571 { 572 bHasXButton=sal_False; 573 aXButton.Hide(); 574 Resize(); 575 } 576 sal_Bool SvPropertyLine::IsVisibleXButton() 577 { 578 return bHasXButton; 579 } 580 581 void SvPropertyLine::ShowAsHyperLink(sal_Bool nFlag) 582 { 583 bIsHyperlink=nFlag; 584 if(nFlag) 585 { 586 Font aFont=GetFont(); 587 aFont.SetUnderline(UNDERLINE_SINGLE); 588 aFont.SetColor(Color(COL_BLUE)); 589 aName.SetFont(aFont); 590 } 591 else 592 { 593 Font aFont=GetFont(); 594 aName.SetFont(aFont); 595 } 596 } 597 598 sal_Bool SvPropertyLine::IsShownAsHyperlink() 599 { 600 return bIsHyperlink; 601 } 602 603 void SvPropertyLine::Locked(sal_Bool nFlag) 604 { 605 bIsLocked=nFlag; 606 if(pSvXPropertyControl!=NULL) 607 pSvXPropertyControl->SetLocked(nFlag); 608 } 609 610 sal_Bool SvPropertyLine::IsLineLocked() 611 { 612 return bIsLocked; 613 } 614 615 void SvPropertyLine::SetNameWidth(sal_uInt16 nWidth) 616 { 617 nNameWidth=nWidth; 618 Resize(); 619 } 620 621 void SvPropertyLine::SetClickHdl(const Link& rLink) 622 { 623 aXButton.SetClickHdl(rLink ); 624 } 625 626 //---------------------------------------------------------- 627 628 SvXPropEvListener::SvXPropEvListener() 629 { 630 pTheActiveControl=NULL; 631 } 632 633 SvXPropEvListener::~SvXPropEvListener() 634 { 635 } 636 637 void SvXPropEvListener::Modified (SvXPropertyControl *pSvXPCtr) 638 { 639 pTheActiveControl=pSvXPCtr; 640 aModifyLink.Call(this); 641 } 642 643 void SvXPropEvListener::GetFocus (SvXPropertyControl *pSvXPCtr) 644 { 645 pTheActiveControl=pSvXPCtr; 646 aGetFocusLink.Call(this); 647 } 648 649 void SvXPropEvListener::LoseFocus (SvXPropertyControl *pSvXPCtr) 650 { 651 pTheActiveControl=pSvXPCtr; 652 aLoseFocusLink.Call(this); 653 } 654 655 void SvXPropEvListener::KeyInput (SvXPropertyControl *pSvXPCtr,const KeyCode& theKeyCode) 656 { 657 pTheActiveControl=pSvXPCtr; 658 aKeyCode=theKeyCode; 659 aKeyInputLink.Call(this); 660 } 661 662 SvXPropertyControl * SvXPropEvListener::GetPropertyControl() 663 { 664 return pTheActiveControl; 665 } 666 667 KeyCode SvXPropEvListener::GetKeyCode() const 668 { 669 return aKeyCode; 670 } 671 672 //------------------------------------------------------------------ 673 674 SvListBoxForProperties::SvListBoxForProperties( Window* pParent, WinBits nWinStyle) 675 : Control(pParent,nWinStyle), 676 aPlayGround(this,WB_DIALOGCONTROL), 677 aVScroll(this,WB_VSCROLL|WB_REPEAT|WB_DRAG), 678 pPropDataControl(NULL) 679 { 680 681 aListener.SetModifyHdl (LINK( this, SvListBoxForProperties, ModifyHdl)); 682 aListener.SetGetFocusHdl (LINK( this, SvListBoxForProperties, GetFocusHdl)); 683 aListener.SetLoseFocusHdl(LINK( this, SvListBoxForProperties,LoseFocusHdl)); 684 aListener.SetKeyInputHdl (LINK( this, SvListBoxForProperties, KeyInputHdl)); 685 686 nYOffset=0; 687 nTheNameSize=0; 688 ListBox aListBox(this,WB_DROPDOWN); 689 aListBox.SetPosSizePixel(Point(0,0),Size(100,100)); 690 nRowHeight=(sal_uInt16)aListBox.GetSizePixel().Height(); 691 Wallpaper aWall = aPlayGround.GetBackground(); 692 aWall.SetColor( Color( COL_TRANSPARENT ) ); 693 aPlayGround.SetBackground( aWall ); 694 aPlayGround.Show(); 695 aVScroll.Hide(); 696 aVScroll.SetScrollHdl( 697 LINK( this, SvListBoxForProperties, ScrollHdl )); 698 699 } 700 701 702 SvListBoxForProperties::SvListBoxForProperties( Window* pParent, const ResId& rResId ) 703 : Control(pParent,rResId), 704 aPlayGround(this,0), 705 aVScroll(this,WB_VSCROLL|WB_REPEAT|WB_DRAG), 706 pPropDataControl(NULL) 707 { 708 nTheNameSize=0; 709 nYOffset=0; 710 ListBox aListBox(this,WB_DROPDOWN); 711 aListBox.SetPosSizePixel(Point(0,0),Size(100,100)); 712 nRowHeight=(sal_uInt16)aListBox.GetSizePixel().Height(); 713 Wallpaper aWall = aPlayGround.GetBackground(); 714 aWall.SetColor( Color( COL_TRANSPARENT ) ); 715 aPlayGround.SetBackground( aWall ); 716 aPlayGround.Show(); 717 aVScroll.Hide(); 718 aVScroll.SetScrollHdl( LINK( this, SvListBoxForProperties, ScrollHdl ) ); 719 UpdateVScroll(); 720 Resize(); 721 } 722 723 SvListBoxForProperties::~SvListBoxForProperties() 724 { 725 Clear(); 726 } 727 728 void SvListBoxForProperties::Clear() 729 { 730 for(sal_uInt16 i=0;i<PLineArray.Count();i++) 731 { 732 SvPropertyLine* pPropLine=PLineArray[i]; 733 734 switch(pPropLine->GetKindOfControl()) 735 { 736 case KOC_LISTBOX: 737 case KOC_COMBOBOX: 738 case KOC_EDIT: delete pPropLine->GetSvXPropertyControl(); 739 break; 740 default: 741 break; 742 } 743 delete pPropLine; 744 } 745 PLineArray.Remove(0,PLineArray.Count()); 746 } 747 748 749 void SvListBoxForProperties::Resize() 750 { 751 Size aSize=GetOutputSizePixel(); 752 Size a2Size=aSize; 753 Size aVScrollSize; 754 755 if(aVScroll.IsVisible()) 756 { 757 Point aPos(0,0); 758 aVScrollSize=aVScroll.GetSizePixel(); 759 aVScrollSize.Height()=aSize.Height(); 760 a2Size.Width()-=aVScrollSize.Width(); 761 aPos.X()=a2Size.Width(); 762 aVScroll.SetPosPixel(aPos); 763 aVScroll.SetSizePixel(aVScrollSize); 764 } 765 766 aPlayGround.SetPosPixel(Point(0,0)); 767 aPlayGround.SetSizePixel(a2Size); 768 UpdatePosNSize(); 769 } 770 771 void SvListBoxForProperties::SetController( SvPropertyDataControl *pPDC) 772 { 773 pPropDataControl=pPDC; 774 } 775 776 sal_uInt16 SvListBoxForProperties::CalcVisibleLines() 777 { 778 Size aSize=aPlayGround.GetOutputSizePixel(); 779 sal_uInt16 nResult=0; 780 if(nRowHeight!=0) 781 nResult=(sal_uInt16) aSize.Height()/nRowHeight; 782 783 return nResult; 784 } 785 786 void SvListBoxForProperties::UpdateVScroll() 787 { 788 sal_uInt16 nLines=CalcVisibleLines(); 789 aVScroll.SetPageSize(nLines-1); 790 aVScroll.SetVisibleSize(nLines-1); 791 aVScroll.SetRange(Range(0,PLineArray.Count()-1)); 792 if(PLineArray.Count()<=nLines) 793 { 794 aVScroll.Hide(); 795 } 796 else 797 { 798 sal_Bool bFlag=aVScroll.IsVisible(); 799 aVScroll.Show(); 800 if(!bFlag)Resize(); 801 } 802 803 804 } 805 806 void SvListBoxForProperties::UpdatePosNSize() 807 { 808 Point aPos(0,nYOffset); 809 810 for(sal_uInt16 i=0; i<PLineArray.Count();i++) 811 { 812 if((PLineArray[i])->NeedsRepaint()) 813 { 814 (PLineArray[i])->SetPosPixel(aPos); 815 Size aSize=aPlayGround.GetOutputSizePixel(); 816 aSize.Height()=nRowHeight; 817 (PLineArray[i])->SetSizePixel(aSize); 818 (PLineArray[i])->SetNameWidth(nTheNameSize+2*FRAME_OFFSET); 819 (PLineArray[i])->Invalidate(); 820 (PLineArray[i])->Update(); 821 (PLineArray[i])->Show(); 822 (PLineArray[i])->SetNeedsRepaint(sal_False); 823 } 824 else 825 { 826 if((PLineArray[i])->IsVisible()) 827 { 828 Size aSize=aPlayGround.GetOutputSizePixel(); 829 aSize.Height()=nRowHeight; 830 (PLineArray[i])->SetSizePixel(aSize); 831 (PLineArray[i])->SetNameWidth(nTheNameSize+2*FRAME_OFFSET); 832 (PLineArray[i])->Invalidate(); 833 } 834 } 835 836 aPos.Y()+=nRowHeight; 837 } 838 aPlayGround.Invalidate(); 839 aPlayGround.Update(); 840 } 841 842 void SvListBoxForProperties::UpdatePlayGround() 843 { 844 Point aPos(0,0); 845 long nThumbPos=aVScroll.GetThumbPos(); 846 long nLines=aVScroll.GetPageSize(); 847 long nDelta=aVScroll.GetDelta(); 848 849 sal_uInt16 nStart,nEnd; 850 Size aSize=aPlayGround.GetOutputSizePixel(); 851 Point aPEnd; 852 aPEnd.X()=aSize.Width(); 853 854 if(nDelta>0) 855 { 856 nStart=(sal_uInt16)(nThumbPos+nLines+1-nDelta); 857 nEnd=(sal_uInt16)(nThumbPos+nLines); 858 aPos.Y()=(nLines+1-nDelta)*nRowHeight; 859 } 860 else 861 { 862 nStart=(sal_uInt16)nThumbPos; 863 nEnd=(sal_uInt16)(nThumbPos-nDelta); 864 aPEnd.Y()=(nThumbPos-nDelta)*nRowHeight;; 865 } 866 867 aSize.Height()=nRowHeight; 868 869 nDelta=-nDelta*nRowHeight; 870 871 aPlayGround.Scroll(0,nDelta,SCROLL_CHILDREN); 872 873 for(sal_uInt16 i=nStart; i<=nEnd;i++) 874 { 875 (PLineArray[i])->SetPosSizePixel(aPos,aSize); 876 (PLineArray[i])->SetNameWidth(nTheNameSize+2*FRAME_OFFSET); 877 (PLineArray[i])->Show(); 878 aPos.Y()+=nRowHeight; 879 } 880 aPlayGround.Update(); 881 } 882 883 void SvListBoxForProperties::UpdateAll() 884 { 885 UpdatePosNSize(); 886 UpdatePlayGround(); 887 //UpdateVScroll(); 888 } 889 890 void SvListBoxForProperties::DisableUpdate() 891 { 892 bUpdate=sal_False; 893 } 894 895 void SvListBoxForProperties::EnableUpdate() 896 { 897 bUpdate=sal_True; 898 UpdateAll(); 899 } 900 901 void SvListBoxForProperties::SetPropertyValue( const String & rEntryName, const String & rValue ) 902 { 903 sal_uInt16 i, iEnd = PLineArray.Count(); 904 for( i = 0 ; i < iEnd ; i++ ) 905 { 906 SvPropertyLine* pPropLine = PLineArray[ i ]; 907 SvXPropertyControl* pSvXPCtr=pPropLine->GetSvXPropertyControl(); 908 if( pSvXPCtr && pSvXPCtr->GetMyName() == rEntryName ) 909 { 910 pSvXPCtr->SetProperty( rValue ); 911 } 912 } 913 } 914 915 sal_uInt16 SvListBoxForProperties::AppendEntry( const SvPropertyData& aPropData) 916 { 917 return InsertEntry(aPropData); 918 } 919 920 sal_uInt16 SvListBoxForProperties::InsertEntry( const SvPropertyData& aPropData, sal_uInt16 nPos) 921 { 922 sal_uInt16 nInsPos=nPos; 923 SvPropertyLine* pPropLine=new SvPropertyLine(&aPlayGround,WB_TABSTOP | WB_DIALOGCONTROL); 924 925 if(nPos==LISTBOX_APPEND) 926 { 927 nInsPos=PLineArray.Count(); 928 PLineArray.Insert(pPropLine,nInsPos); 929 } 930 else 931 { 932 PLineArray.Insert(pPropLine,nPos); 933 } 934 pPropLine->SetNameWidth(nTheNameSize); 935 UpdateVScroll(); 936 UpdatePosNSize(); 937 ChangeEntry(aPropData,nInsPos); 938 return nInsPos; 939 } 940 941 void SvListBoxForProperties::ChangeEntry( const SvPropertyData& aPropData, sal_uInt16 nPos) 942 { 943 if(nPos<PLineArray.Count()) 944 { 945 SvPropertyLine* pPropLine=PLineArray[nPos]; 946 947 switch(pPropLine->GetKindOfControl()) 948 { 949 case KOC_LISTBOX: 950 case KOC_COMBOBOX: 951 case KOC_EDIT: delete pPropLine->GetSvXPropertyControl(); 952 break; 953 default: 954 break; 955 } 956 957 switch(aPropData.eKind) 958 { 959 case KOC_LISTBOX: 960 pPropLine->SetSvXPropertyControl( 961 new SvXPropertyComboBox(pPropLine,WB_TABSTOP)); 962 pPropLine->SetKindOfControl(aPropData.eKind); 963 break; 964 case KOC_COMBOBOX: 965 pPropLine->SetSvXPropertyControl( 966 new SvXPropertyComboBox(pPropLine,WB_TABSTOP)); 967 pPropLine->SetKindOfControl(aPropData.eKind); 968 break; 969 case KOC_EDIT: 970 pPropLine->SetSvXPropertyControl( 971 new SvXPropertyEdit(pPropLine,WB_TABSTOP)); 972 pPropLine->SetKindOfControl(aPropData.eKind); 973 break; 974 case KOC_USERDEFINED: 975 pPropLine->SetSvXPropertyControl(aPropData.pControl); 976 aPropData.pControl->SetParent(pPropLine); 977 pPropLine->SetKindOfControl(aPropData.eKind); 978 break; 979 default: 980 pPropLine->SetSvXPropertyControl(NULL); 981 pPropLine->SetKindOfControl(KOC_UNDEFINED); 982 break; 983 } 984 985 SvXPropertyControl* pSvXPCtr=pPropLine->GetSvXPropertyControl(); 986 987 if(pSvXPCtr!=NULL) 988 { 989 pSvXPCtr->SetSvXPropertyCtrListener(&aListener); 990 pSvXPCtr->SetProperty(aPropData.aValue); 991 pSvXPCtr->SetMyData(aPropData.pDataPtr); 992 pSvXPCtr->SetMyName(aPropData.aName); 993 994 if(pSvXPCtr->HasList()) 995 { 996 for(sal_uInt16 i=0;i<aPropData.theValues.Count();i++) 997 { 998 pSvXPCtr->InsertEntry(*(aPropData.theValues[i])); 999 } 1000 } 1001 } 1002 1003 pPropLine->SetName(aPropData.aName); 1004 1005 sal_uInt16 nTextWidth=(sal_uInt16)aPlayGround.GetTextWidth(aPropData.aName); 1006 1007 if ( nTheNameSize < nTextWidth ) 1008 nTheNameSize = nTextWidth; 1009 1010 if ( aPropData.bHasVisibleXButton ) 1011 { 1012 pPropLine->SetClickHdl(LINK( this, SvListBoxForProperties, ClickHdl ) ); 1013 pPropLine->ShowXButton(); 1014 } 1015 else 1016 pPropLine->HideXButton(); 1017 1018 pPropLine->Locked(aPropData.bIsLocked); 1019 1020 pPropLine->ShowAsHyperLink(aPropData.bIsHyperLink); 1021 pPropLine->SetData(aPropData.pDataPtr); 1022 } 1023 } 1024 1025 sal_uInt16 SvListBoxForProperties::GetFirstVisibleEntry() 1026 { 1027 return 0; 1028 } 1029 void SvListBoxForProperties::SetFirstVisibleEntry(sal_uInt16) 1030 { 1031 return; 1032 } 1033 1034 void SvListBoxForProperties::SetSelectedEntry(sal_uInt16) 1035 { 1036 return; 1037 } 1038 1039 sal_uInt16 SvListBoxForProperties::GetSelectedEntry() 1040 { 1041 return 0; 1042 } 1043 1044 IMPL_LINK( SvListBoxForProperties, ScrollHdl, ScrollBar*, pSB ) 1045 { 1046 if(pSB!=NULL) 1047 { 1048 long nDelta=aVScroll.GetDelta(); 1049 nYOffset=-aVScroll.GetThumbPos()*nRowHeight; 1050 //aPlayGround.SetUpdateMode(sal_False); 1051 1052 long nThumbPos=aVScroll.GetThumbPos(); 1053 long nLines=aVScroll.GetPageSize(); 1054 1055 UpdatePlayGround(); 1056 1057 for(long i=nThumbPos-nDelta; i<nThumbPos+nLines-nDelta;i++) 1058 { 1059 if(i>=nThumbPos && i<=nThumbPos+nLines) 1060 { 1061 (PLineArray[sal::static_int_cast< sal_uInt16 >(i)])-> 1062 SetNeedsRepaint(sal_True); 1063 } 1064 else 1065 { 1066 (PLineArray[sal::static_int_cast< sal_uInt16 >(i)])->Hide(); 1067 (PLineArray[sal::static_int_cast< sal_uInt16 >(i)])-> 1068 SetNeedsRepaint(sal_False); 1069 } 1070 } 1071 } 1072 return 0; 1073 } 1074 1075 IMPL_LINK( SvListBoxForProperties, ClickHdl, PushButton*,pPB) 1076 { 1077 if(pPB!=NULL) 1078 { 1079 SvPropertyLine *pPropLine=(SvPropertyLine *)pPB->GetParent(); 1080 SvXPropertyControl* pSvXPCtr=pPropLine->GetSvXPropertyControl(); 1081 pPropDataControl->Clicked(pSvXPCtr->GetMyName(), 1082 pSvXPCtr->GetProperty(),pSvXPCtr->GetMyData()); 1083 } 1084 return 0; 1085 } 1086 1087 IMPL_LINK( SvListBoxForProperties, ModifyHdl,SvXPropEvListener*, pSvXPEvL) 1088 { 1089 if(pSvXPEvL!=NULL && pPropDataControl!=NULL) 1090 { 1091 1092 SvXPropertyControl* pSvXPCtr=aListener.GetPropertyControl(); 1093 1094 pPropDataControl->Modified(pSvXPCtr->GetMyName(), 1095 pSvXPCtr->GetProperty(),pSvXPCtr->GetMyData()); 1096 1097 } 1098 return 0; 1099 } 1100 1101 IMPL_LINK( SvListBoxForProperties, GetFocusHdl,SvXPropEvListener*, pSvXPEvL) 1102 { 1103 if(pSvXPEvL!=NULL && pPropDataControl!=NULL) 1104 { 1105 SvXPropertyControl* pSvXPCtr=aListener.GetPropertyControl(); 1106 1107 pPropDataControl->Select(pSvXPCtr->GetMyName(),pSvXPCtr->GetMyData()); 1108 } 1109 return 0; 1110 } 1111 1112 IMPL_LINK( SvListBoxForProperties, LoseFocusHdl,SvXPropEvListener*, pSvXPEvL) 1113 { 1114 if(pSvXPEvL!=NULL && pPropDataControl!=NULL) 1115 { 1116 SvXPropertyControl* pSvXPCtr=aListener.GetPropertyControl(); 1117 1118 pPropDataControl->Commit(pSvXPCtr->GetMyName(), 1119 pSvXPCtr->GetProperty(),pSvXPCtr->GetMyData()); 1120 /* 1121 { 1122 pSvXPCtr->SetProperty( 1123 pPropDataControl->GetTheCorrectProperty()); 1124 } 1125 */ 1126 } 1127 return 0; 1128 } 1129 1130 IMPL_LINK( SvListBoxForProperties, KeyInputHdl,SvXPropEvListener*, pSvXPEvL) 1131 { 1132 // FIXME - This code does not make a lot of sense. 1133 if(pSvXPEvL!=NULL && pPropDataControl!=NULL) 1134 { 1135 /*SvXPropertyControl* pSvXPCtr=*/aListener.GetPropertyControl(); 1136 } 1137 return 0; 1138 } 1139 1140 1141 1142 1143 SvTabPageForProperties::SvTabPageForProperties(Window* pParent,WinBits nWinStyle) 1144 : TabPage(pParent,nWinStyle), 1145 aLbProp(this) 1146 { 1147 aLbProp.Show(); 1148 } 1149 1150 void SvTabPageForProperties::Resize() 1151 { 1152 Point aPos(3,3); 1153 Size aSize=GetOutputSizePixel(); 1154 aSize.Width()-=6; 1155 aSize.Height()-=6; 1156 1157 aLbProp.SetPosSizePixel(aPos,aSize); 1158 } 1159 1160 SvListBoxForProperties* SvTabPageForProperties::GetTheListBox() 1161 { 1162 return &aLbProp; 1163 } 1164 1165 1166 SvPropertyBox::SvPropertyBox( Window* pParent, WinBits nWinStyle) 1167 : Control(pParent,nWinStyle), 1168 aTabControl(this) 1169 { 1170 aTabControl.Show(); 1171 } 1172 1173 SvPropertyBox::SvPropertyBox( Window* pParent, const ResId& rResId ) 1174 : Control(pParent,rResId), 1175 aTabControl(this) 1176 { 1177 aTabControl.Show(); 1178 Resize(); 1179 } 1180 1181 SvPropertyBox::~SvPropertyBox() 1182 { 1183 ClearAll(); 1184 } 1185 1186 1187 void SvPropertyBox::ClearAll() 1188 { 1189 sal_uInt16 nCount=aTabControl.GetPageCount(); 1190 1191 for(sal_uInt16 i=nCount;i>=1;i--) 1192 { 1193 SvTabPageForProperties* pPage=(SvTabPageForProperties*) 1194 aTabControl.GetTabPage(i); 1195 aTabControl.RemovePage(i); 1196 delete pPage; 1197 } 1198 } 1199 1200 1201 void SvPropertyBox::Resize() 1202 { 1203 Point aPos(3,3); 1204 Size aSize=GetOutputSizePixel(); 1205 aSize.Width()-=6; 1206 aSize.Height()-=6; 1207 1208 aTabControl.SetPosSizePixel(aPos,aSize); 1209 1210 sal_uInt16 nCount=aTabControl.GetPageCount(); 1211 1212 aSize=aTabControl.GetTabPageSizePixel(); 1213 for(sal_uInt16 i=1;i<=nCount;i++) 1214 { 1215 SvTabPageForProperties* pPage=(SvTabPageForProperties*) 1216 aTabControl.GetTabPage(i); 1217 pPage->SetSizePixel(aSize); 1218 } 1219 1220 } 1221 1222 1223 sal_uInt16 SvPropertyBox::AppendPage( const String & rText ) 1224 { 1225 sal_uInt16 nId=aTabControl.GetPageCount()+1; 1226 aTabControl.InsertPage( nId,rText); 1227 SvTabPageForProperties* pPage=new SvTabPageForProperties(&aTabControl); 1228 pPage->SetSizePixel(aTabControl.GetTabPageSizePixel()); 1229 pPage->GetTheListBox()->SetController(pThePropDataCtr); 1230 aTabControl.SetTabPage( nId, pPage); 1231 aTabControl.SetCurPageId(nId); 1232 return nId; 1233 } 1234 1235 void SvPropertyBox::SetPage( sal_uInt16 nId) 1236 { 1237 aTabControl.SetCurPageId(nId); 1238 } 1239 1240 sal_uInt16 SvPropertyBox::GetCurPage() 1241 { 1242 return aTabControl.GetCurPageId(); 1243 } 1244 1245 sal_uInt16 SvPropertyBox::CalcVisibleLines() 1246 { 1247 SvTabPageForProperties* pPage=(SvTabPageForProperties*) 1248 aTabControl.GetTabPage(aTabControl.GetCurPageId()); 1249 return pPage->GetTheListBox()->CalcVisibleLines(); 1250 } 1251 void SvPropertyBox::EnableUpdate() 1252 { 1253 SvTabPageForProperties* pPage=(SvTabPageForProperties*) 1254 aTabControl.GetTabPage(aTabControl.GetCurPageId()); 1255 pPage->GetTheListBox()->EnableUpdate(); 1256 } 1257 1258 void SvPropertyBox::DisableUpdate() 1259 { 1260 SvTabPageForProperties* pPage=(SvTabPageForProperties*) 1261 aTabControl.GetTabPage(aTabControl.GetCurPageId()); 1262 pPage->GetTheListBox()->DisableUpdate(); 1263 } 1264 1265 void SvPropertyBox::SetController(SvPropertyDataControl *pDataCtr) 1266 { 1267 pThePropDataCtr=pDataCtr; 1268 sal_uInt16 nCount=aTabControl.GetPageCount(); 1269 1270 for(sal_uInt16 i=1;i<=nCount;i++) 1271 { 1272 SvTabPageForProperties* pPage=(SvTabPageForProperties*) 1273 aTabControl.GetTabPage(i); 1274 1275 pPage->GetTheListBox()->SetController(pThePropDataCtr); 1276 } 1277 1278 } 1279 1280 sal_uInt16 SvPropertyBox::InsertEntry( const SvPropertyData& rData, sal_uInt16 nPos) 1281 { 1282 SvTabPageForProperties* pPage=(SvTabPageForProperties*) 1283 aTabControl.GetTabPage(aTabControl.GetCurPageId()); 1284 return pPage->GetTheListBox()->InsertEntry(rData,nPos); 1285 } 1286 1287 void SvPropertyBox::ChangeEntry( const SvPropertyData& rData, sal_uInt16 nPos) 1288 { 1289 SvTabPageForProperties* pPage=(SvTabPageForProperties*) 1290 aTabControl.GetTabPage(aTabControl.GetCurPageId()); 1291 pPage->GetTheListBox()->ChangeEntry(rData,nPos); 1292 } 1293 1294 sal_uInt16 SvPropertyBox::AppendEntry( const SvPropertyData& rData) 1295 { 1296 SvTabPageForProperties* pPage=(SvTabPageForProperties*) 1297 aTabControl.GetTabPage(aTabControl.GetCurPageId()); 1298 return pPage->GetTheListBox()->AppendEntry(rData); 1299 } 1300 1301 void SvPropertyBox::SetPropertyValue( const String & rEntryName, const String & rValue ) 1302 { 1303 SvTabPageForProperties* pPage=(SvTabPageForProperties*) 1304 aTabControl.GetTabPage(aTabControl.GetCurPageId()); 1305 pPage->GetTheListBox()->SetPropertyValue( rEntryName, rValue ); 1306 } 1307 1308 void SvPropertyBox::SetFirstVisibleEntry(sal_uInt16 nPos) 1309 { 1310 SvTabPageForProperties* pPage=(SvTabPageForProperties*) 1311 aTabControl.GetTabPage(aTabControl.GetCurPageId()); 1312 pPage->GetTheListBox()->SetFirstVisibleEntry(nPos); 1313 } 1314 sal_uInt16 SvPropertyBox::GetFirstVisibleEntry() 1315 { 1316 SvTabPageForProperties* pPage=(SvTabPageForProperties*) 1317 aTabControl.GetTabPage(aTabControl.GetCurPageId()); 1318 return pPage->GetTheListBox()->GetFirstVisibleEntry(); 1319 } 1320 1321 void SvPropertyBox::SetSelectedEntry(sal_uInt16 nPos) 1322 { 1323 SvTabPageForProperties* pPage=(SvTabPageForProperties*) 1324 aTabControl.GetTabPage(aTabControl.GetCurPageId()); 1325 pPage->GetTheListBox()->SetSelectedEntry(nPos); 1326 } 1327 sal_uInt16 SvPropertyBox::GetSelectedEntry() 1328 { 1329 SvTabPageForProperties* pPage=(SvTabPageForProperties*) 1330 aTabControl.GetTabPage(aTabControl.GetCurPageId()); 1331 return pPage->GetTheListBox()->GetSelectedEntry(); 1332 } 1333 1334 void SvPropertyBox::ClearTable() 1335 { 1336 SvTabPageForProperties* pPage=(SvTabPageForProperties*) 1337 aTabControl.GetTabPage(aTabControl.GetCurPageId()); 1338 pPage->GetTheListBox()->Clear(); 1339 } 1340 1341 SvBasicPropertyDataControl::~SvBasicPropertyDataControl() 1342 { 1343 } 1344 1345 void SvBasicPropertyDataControl::Modified(const String& aName, 1346 const String& aVal,void* pData) 1347 { 1348 aEntryName=aName; 1349 aEntryProperty=aVal; 1350 pTheData=pData; 1351 aModifyLink.Call(this); 1352 } 1353 1354 void SvBasicPropertyDataControl::Clicked( const String& aName, 1355 const String& aVal, 1356 void* pData) //Xtension-Button pressed 1357 { 1358 aEntryName=aName; 1359 aEntryProperty=aVal; 1360 pTheData=pData; 1361 aClickedLink.Call(this); 1362 } 1363 1364 void SvBasicPropertyDataControl::Commit( const String& aName, 1365 const String& aVal, 1366 void* pData) //User accept changes 1367 { 1368 aEntryName=aName; 1369 aEntryProperty=aVal; 1370 pTheData=pData; 1371 aCommitLink.Call(this); 1372 } 1373 1374 void SvBasicPropertyDataControl::Select( const String& aName, 1375 void* pData) //User select new Row 1376 { 1377 aEntryName=aName; 1378 pTheData=pData; 1379 aSelectLink.Call(this); 1380 } 1381 1382 void SvBasicPropertyDataControl::LinkClicked(const String&, void*) 1383 { 1384 } 1385 1386 1387 String SvBasicPropertyDataControl::GetName() const //Tell's the name of the Property 1388 { 1389 return aEntryName; 1390 } 1391 1392 String SvBasicPropertyDataControl::GetProperty() const //Tell's the content of the Property 1393 { 1394 return aEntryProperty; 1395 } 1396 1397 void* SvBasicPropertyDataControl::GetData() //Tell's the storage 1398 { 1399 return pTheData; 1400 } 1401 1402 /* 1403 String SvBasicPropertyDataControl::GetTheCorrectProperty() const 1404 { 1405 return aCorrectProperty; 1406 } 1407 */ 1408 1409 void SvBasicPropertyDataControl::SetTheCorrectProperty(const String& aString) 1410 { 1411 aCorrectProperty=aString; 1412 } 1413 1414 void SvBasicPropertyDataControl::SetIsCorrect(sal_Bool nFlag) 1415 { 1416 bCorrectness=nFlag; 1417 } 1418 1419 1420 1421 //======================================================================== 1422 // Property-Dialog: 1423 /* zum TESTEN im CALC*/ 1424 //======================================================================== 1425 /* 1426 ScPropertyDlg::ScPropertyDlg( Window* pParent) : 1427 ModalDialog ( pParent, ScResId( RID_SCDLG_PROPERTIES) ), 1428 aPropListBox ( this, ResId( CTR_PROPLINE) ), 1429 aKindOfListBox (this,ResId( LB_KIND_OF_PROP)), 1430 aModAnswer (this,ResId(FT_ANSMOD )), 1431 aClickAnswer (this,ResId(FT_ANSCLICK )), 1432 aCommitAnswer (this,ResId(FT_ANSCOMMIT)), 1433 aSelectAnswer (this,ResId(FT_ANSSELECT)), 1434 anOk(this,ResId( BTN_OK)), 1435 aCancel(this,ResId( BTN_CANCEL)) 1436 { 1437 FreeResource(); 1438 1439 aKindOfListBox.SelectEntryPos(0); 1440 aKindOfListBox.SetSelectHdl( 1441 LINK( this, ScPropertyDlg, ModifiedHdl )); 1442 nCount=0; 1443 nClickCount=0; 1444 1445 String aString("Don't know "); 1446 1447 aBaProDatCtr.SetModifyHdl (LINK( this, ScPropertyDlg, RowModifiedHdl )); 1448 aBaProDatCtr.SetClickedHdl(LINK( this, ScPropertyDlg, ClickHdl )); 1449 aBaProDatCtr.SetCommitHdl (LINK( this, ScPropertyDlg, SelectHdl )); 1450 aBaProDatCtr.SetSelectHdl (LINK( this, ScPropertyDlg, CommitHdl )); 1451 1452 aPropListBox.SetController(&aBaProDatCtr); 1453 1454 sal_uInt16 nPageId=aPropListBox.AppendPage("YabbaDabbaDo"); 1455 aPropListBox.SetPage(nPageId); 1456 aProperty.eKind=KOC_EDIT; 1457 aProperty.aName=aString; 1458 aProperty.aName+=String((sal_uInt16)++nCount); 1459 aProperty.aValue=sizeof ComboBox; 1460 aProperty.bHasVisibleXButton=sal_False; 1461 aProperty.bIsHyperLink=sal_False; 1462 aProperty.bIsLocked=sal_False; 1463 aProperty.pDataPtr=NULL; 1464 aProperty.pControl=NULL; 1465 aProperty.theValues.Insert(new String("1"),aProperty.theValues.Count()); 1466 aProperty.theValues.Insert(new String("2"),aProperty.theValues.Count()); 1467 aProperty.theValues.Insert(new String("3"),aProperty.theValues.Count()); 1468 aProperty.theValues.Insert(new String("4"),aProperty.theValues.Count()); 1469 aPropListBox.InsertEntry(aProperty); 1470 aProperty.bHasVisibleXButton=sal_True; 1471 aProperty.aName=aString; 1472 aProperty.aName+=String((sal_uInt16)++nCount); 1473 aProperty.aValue="42"; 1474 aProperty.eKind=KOC_LISTBOX; 1475 aPropListBox.InsertEntry(aProperty); 1476 aProperty.aName=aString; 1477 aProperty.aName+=String((sal_uInt16)++nCount); 1478 aProperty.eKind=KOC_COMBOBOX; 1479 aProperty.bHasVisibleXButton=sal_False; 1480 aPropListBox.InsertEntry(aProperty); 1481 } 1482 1483 ScPropertyDlg::~ScPropertyDlg() 1484 { 1485 delete aProperty.theValues[0]; 1486 delete aProperty.theValues[1]; 1487 delete aProperty.theValues[2]; 1488 delete aProperty.theValues[3]; 1489 } 1490 1491 IMPL_LINK( ScPropertyDlg, ModifiedHdl, ListBox*, pLB ) 1492 { 1493 if(pLB!=NULL) 1494 { 1495 String aString("Don't know "); 1496 aProperty.aName=aString; 1497 aProperty.aName+=String((sal_uInt16)++nCount); 1498 if(nCount>20) 1499 { 1500 String aStr("Yabba "); 1501 aStr+=aPropListBox.GetCurPage(); 1502 sal_uInt16 nPageId=aPropListBox.AppendPage(aStr); 1503 aPropListBox.SetPage(nPageId); 1504 nCount=0; 1505 } 1506 1507 aProperty.eKind=(eKindOfControl)(aKindOfListBox.GetSelectEntryPos()+1); 1508 aProperty.bHasVisibleXButton=sal_False; 1509 if((nCount % 5)==0) aProperty.bHasVisibleXButton=sal_True; 1510 aPropListBox.InsertEntry(aProperty); 1511 } 1512 return 0; 1513 } 1514 1515 IMPL_LINK( ScPropertyDlg, RowModifiedHdl, SvBasicPropertyDataControl* ,pProCtr) 1516 { 1517 if(pProCtr!=NULL) 1518 { 1519 aModAnswer.SetText(aBaProDatCtr.GetProperty()); 1520 aModAnswer.Invalidate(); 1521 aBaProDatCtr.SetIsCorrect(sal_True); 1522 } 1523 return 0; 1524 } 1525 1526 IMPL_LINK( ScPropertyDlg, CommitHdl, SvBasicPropertyDataControl*,pProCtr) 1527 { 1528 if(pProCtr!=NULL) 1529 { 1530 aCommitAnswer.SetText(aBaProDatCtr.GetProperty()); 1531 aCommitAnswer.Invalidate(); 1532 aBaProDatCtr.SetIsCorrect(sal_True); 1533 } 1534 return 0; 1535 } 1536 1537 IMPL_LINK( ScPropertyDlg, ClickHdl, SvBasicPropertyDataControl*,pProCtr) 1538 { 1539 if(pProCtr!=NULL) 1540 { 1541 aClickAnswer.SetText(aBaProDatCtr.GetName()); 1542 aClickAnswer.Invalidate(); 1543 aBaProDatCtr.SetIsCorrect(sal_True); 1544 } 1545 return 0; 1546 } 1547 1548 IMPL_LINK( ScPropertyDlg, SelectHdl, SvBasicPropertyDataControl*,pProCtr) 1549 { 1550 if(pProCtr!=NULL) 1551 { 1552 aSelectAnswer.SetText(aBaProDatCtr.GetName()); 1553 aSelectAnswer.Invalidate(); 1554 aBaProDatCtr.SetIsCorrect(sal_True); 1555 } 1556 return 0; 1557 } 1558 */ 1559 1560 1561