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