1*b1cdbd2cSJim Jagielski /**************************************************************
2*b1cdbd2cSJim Jagielski *
3*b1cdbd2cSJim Jagielski * Licensed to the Apache Software Foundation (ASF) under one
4*b1cdbd2cSJim Jagielski * or more contributor license agreements. See the NOTICE file
5*b1cdbd2cSJim Jagielski * distributed with this work for additional information
6*b1cdbd2cSJim Jagielski * regarding copyright ownership. The ASF licenses this file
7*b1cdbd2cSJim Jagielski * to you under the Apache License, Version 2.0 (the
8*b1cdbd2cSJim Jagielski * "License"); you may not use this file except in compliance
9*b1cdbd2cSJim Jagielski * with the License. You may obtain a copy of the License at
10*b1cdbd2cSJim Jagielski *
11*b1cdbd2cSJim Jagielski * http://www.apache.org/licenses/LICENSE-2.0
12*b1cdbd2cSJim Jagielski *
13*b1cdbd2cSJim Jagielski * Unless required by applicable law or agreed to in writing,
14*b1cdbd2cSJim Jagielski * software distributed under the License is distributed on an
15*b1cdbd2cSJim Jagielski * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*b1cdbd2cSJim Jagielski * KIND, either express or implied. See the License for the
17*b1cdbd2cSJim Jagielski * specific language governing permissions and limitations
18*b1cdbd2cSJim Jagielski * under the License.
19*b1cdbd2cSJim Jagielski *
20*b1cdbd2cSJim Jagielski *************************************************************/
21*b1cdbd2cSJim Jagielski
22*b1cdbd2cSJim Jagielski
23*b1cdbd2cSJim Jagielski
24*b1cdbd2cSJim Jagielski // MARKER(update_precomp.py): autogen include statement, do not remove
25*b1cdbd2cSJim Jagielski #include "precompiled_svx.hxx"
26*b1cdbd2cSJim Jagielski
27*b1cdbd2cSJim Jagielski // include ---------------------------------------------------------------
28*b1cdbd2cSJim Jagielski #include <tools/shl.hxx>
29*b1cdbd2cSJim Jagielski #include <sfx2/dispatch.hxx>
30*b1cdbd2cSJim Jagielski #include <sfx2/objsh.hxx>
31*b1cdbd2cSJim Jagielski #include <sfx2/viewsh.hxx>
32*b1cdbd2cSJim Jagielski #include <sfx2/module.hxx>
33*b1cdbd2cSJim Jagielski #include <tools/urlobj.hxx>
34*b1cdbd2cSJim Jagielski
35*b1cdbd2cSJim Jagielski #define _SVX_ITEMWIN_CXX
36*b1cdbd2cSJim Jagielski
37*b1cdbd2cSJim Jagielski #include <vcl/svapp.hxx>
38*b1cdbd2cSJim Jagielski
39*b1cdbd2cSJim Jagielski #include <svx/dialogs.hrc>
40*b1cdbd2cSJim Jagielski
41*b1cdbd2cSJim Jagielski #define DELAY_TIMEOUT 100
42*b1cdbd2cSJim Jagielski
43*b1cdbd2cSJim Jagielski #include <svx/xlnclit.hxx>
44*b1cdbd2cSJim Jagielski #include <svx/xlnwtit.hxx>
45*b1cdbd2cSJim Jagielski #include <svx/xlineit0.hxx>
46*b1cdbd2cSJim Jagielski #include <svx/xlndsit.hxx>
47*b1cdbd2cSJim Jagielski #include <svx/xtable.hxx>
48*b1cdbd2cSJim Jagielski #include "svx/drawitem.hxx"
49*b1cdbd2cSJim Jagielski #include <svx/dialmgr.hxx>
50*b1cdbd2cSJim Jagielski #include "svx/dlgutil.hxx"
51*b1cdbd2cSJim Jagielski #include <svx/itemwin.hxx>
52*b1cdbd2cSJim Jagielski #include "svx/linectrl.hxx"
53*b1cdbd2cSJim Jagielski #include <svtools/colorcfg.hxx>
54*b1cdbd2cSJim Jagielski
55*b1cdbd2cSJim Jagielski using namespace ::com::sun::star::uno;
56*b1cdbd2cSJim Jagielski using namespace ::com::sun::star::frame;
57*b1cdbd2cSJim Jagielski using namespace ::com::sun::star::util;
58*b1cdbd2cSJim Jagielski using namespace ::com::sun::star::lang;
59*b1cdbd2cSJim Jagielski using namespace ::com::sun::star::beans;
60*b1cdbd2cSJim Jagielski
61*b1cdbd2cSJim Jagielski #define LOGICAL_EDIT_HEIGHT 12
62*b1cdbd2cSJim Jagielski //========================================================================
63*b1cdbd2cSJim Jagielski // SvxLineBox
64*b1cdbd2cSJim Jagielski //========================================================================
65*b1cdbd2cSJim Jagielski
SvxLineBox(Window * pParent,const Reference<XFrame> & rFrame,WinBits nBits)66*b1cdbd2cSJim Jagielski SvxLineBox::SvxLineBox( Window* pParent, const Reference< XFrame >& rFrame, WinBits nBits ) :
67*b1cdbd2cSJim Jagielski LineLB( pParent, nBits ),
68*b1cdbd2cSJim Jagielski meBmpMode ( GetSettings().GetStyleSettings().GetHighContrastMode() ? BMP_COLOR_HIGHCONTRAST : BMP_COLOR_NORMAL ),
69*b1cdbd2cSJim Jagielski nCurPos ( 0 ),
70*b1cdbd2cSJim Jagielski aLogicalSize(40,140),
71*b1cdbd2cSJim Jagielski bRelease ( sal_True ),
72*b1cdbd2cSJim Jagielski mpSh ( NULL ),
73*b1cdbd2cSJim Jagielski mxFrame ( rFrame )
74*b1cdbd2cSJim Jagielski {
75*b1cdbd2cSJim Jagielski SetSizePixel( LogicToPixel( aLogicalSize, MAP_APPFONT ));
76*b1cdbd2cSJim Jagielski Show();
77*b1cdbd2cSJim Jagielski
78*b1cdbd2cSJim Jagielski aDelayTimer.SetTimeout( DELAY_TIMEOUT );
79*b1cdbd2cSJim Jagielski aDelayTimer.SetTimeoutHdl( LINK( this, SvxLineBox, DelayHdl_Impl ) );
80*b1cdbd2cSJim Jagielski aDelayTimer.Start();
81*b1cdbd2cSJim Jagielski }
82*b1cdbd2cSJim Jagielski
83*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
84*b1cdbd2cSJim Jagielski
~SvxLineBox()85*b1cdbd2cSJim Jagielski SvxLineBox::~SvxLineBox()
86*b1cdbd2cSJim Jagielski {
87*b1cdbd2cSJim Jagielski }
88*b1cdbd2cSJim Jagielski
89*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
90*b1cdbd2cSJim Jagielski
IMPL_LINK(SvxLineBox,DelayHdl_Impl,Timer *,EMPTYARG)91*b1cdbd2cSJim Jagielski IMPL_LINK( SvxLineBox, DelayHdl_Impl, Timer *, EMPTYARG )
92*b1cdbd2cSJim Jagielski {
93*b1cdbd2cSJim Jagielski if ( GetEntryCount() == 0 )
94*b1cdbd2cSJim Jagielski {
95*b1cdbd2cSJim Jagielski mpSh = SfxObjectShell::Current();
96*b1cdbd2cSJim Jagielski FillControl();
97*b1cdbd2cSJim Jagielski }
98*b1cdbd2cSJim Jagielski return 0;
99*b1cdbd2cSJim Jagielski }
100*b1cdbd2cSJim Jagielski
101*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
102*b1cdbd2cSJim Jagielski
Select()103*b1cdbd2cSJim Jagielski void SvxLineBox::Select()
104*b1cdbd2cSJim Jagielski {
105*b1cdbd2cSJim Jagielski // Call the parent's Select() member to trigger accessibility events.
106*b1cdbd2cSJim Jagielski LineLB::Select();
107*b1cdbd2cSJim Jagielski
108*b1cdbd2cSJim Jagielski if ( !IsTravelSelect() )
109*b1cdbd2cSJim Jagielski {
110*b1cdbd2cSJim Jagielski XLineStyle eXLS;
111*b1cdbd2cSJim Jagielski sal_uInt16 nPos = GetSelectEntryPos();
112*b1cdbd2cSJim Jagielski // SfxDispatcher* pDisp = rBindings.GetDispatcher();
113*b1cdbd2cSJim Jagielski //DBG_ASSERT( pDisp, "invalid Dispatcher" );
114*b1cdbd2cSJim Jagielski
115*b1cdbd2cSJim Jagielski switch ( nPos )
116*b1cdbd2cSJim Jagielski {
117*b1cdbd2cSJim Jagielski case 0:
118*b1cdbd2cSJim Jagielski eXLS = XLINE_NONE;
119*b1cdbd2cSJim Jagielski break;
120*b1cdbd2cSJim Jagielski
121*b1cdbd2cSJim Jagielski case 1:
122*b1cdbd2cSJim Jagielski eXLS = XLINE_SOLID;
123*b1cdbd2cSJim Jagielski break;
124*b1cdbd2cSJim Jagielski
125*b1cdbd2cSJim Jagielski default:
126*b1cdbd2cSJim Jagielski {
127*b1cdbd2cSJim Jagielski eXLS = XLINE_DASH;
128*b1cdbd2cSJim Jagielski
129*b1cdbd2cSJim Jagielski if ( nPos != LISTBOX_ENTRY_NOTFOUND &&
130*b1cdbd2cSJim Jagielski SfxObjectShell::Current() &&
131*b1cdbd2cSJim Jagielski SfxObjectShell::Current()->GetItem( SID_DASH_LIST ) )
132*b1cdbd2cSJim Jagielski {
133*b1cdbd2cSJim Jagielski // LineDashItem wird nur geschickt, wenn es auch einen Dash besitzt.
134*b1cdbd2cSJim Jagielski // Notify k"ummert sich darum!
135*b1cdbd2cSJim Jagielski SvxDashListItem aItem( *(const SvxDashListItem*)(
136*b1cdbd2cSJim Jagielski SfxObjectShell::Current()->GetItem( SID_DASH_LIST ) ) );
137*b1cdbd2cSJim Jagielski XLineDashItem aLineDashItem( GetSelectEntry(),
138*b1cdbd2cSJim Jagielski aItem.GetDashList()->GetDash( nPos - 2 )->GetDash() );
139*b1cdbd2cSJim Jagielski
140*b1cdbd2cSJim Jagielski Any a;
141*b1cdbd2cSJim Jagielski Sequence< PropertyValue > aArgs( 1 );
142*b1cdbd2cSJim Jagielski aArgs[0].Name = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "LineDash" ));
143*b1cdbd2cSJim Jagielski aLineDashItem.QueryValue ( a );
144*b1cdbd2cSJim Jagielski aArgs[0].Value = a;
145*b1cdbd2cSJim Jagielski SfxToolBoxControl::Dispatch( Reference< XDispatchProvider >( mxFrame->getController(), UNO_QUERY ),
146*b1cdbd2cSJim Jagielski ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( ".uno:LineDash" )),
147*b1cdbd2cSJim Jagielski aArgs );
148*b1cdbd2cSJim Jagielski // pDisp->Execute( SID_ATTR_LINE_DASH, SFX_CALLMODE_RECORD, &aLineDashItem, 0L );
149*b1cdbd2cSJim Jagielski }
150*b1cdbd2cSJim Jagielski }
151*b1cdbd2cSJim Jagielski break;
152*b1cdbd2cSJim Jagielski }
153*b1cdbd2cSJim Jagielski
154*b1cdbd2cSJim Jagielski XLineStyleItem aLineStyleItem( eXLS );
155*b1cdbd2cSJim Jagielski Any a;
156*b1cdbd2cSJim Jagielski Sequence< PropertyValue > aArgs( 1 );
157*b1cdbd2cSJim Jagielski aArgs[0].Name = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "XLineStyle" ));
158*b1cdbd2cSJim Jagielski aLineStyleItem.QueryValue ( a );
159*b1cdbd2cSJim Jagielski aArgs[0].Value = a;
160*b1cdbd2cSJim Jagielski SfxToolBoxControl::Dispatch( Reference< XDispatchProvider >( mxFrame->getController(), UNO_QUERY ),
161*b1cdbd2cSJim Jagielski ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( ".uno:XLineStyle" )),
162*b1cdbd2cSJim Jagielski aArgs );
163*b1cdbd2cSJim Jagielski // pDisp->Execute( SID_ATTR_LINE_STYLE, SFX_CALLMODE_RECORD, &aLineStyleItem, 0L );
164*b1cdbd2cSJim Jagielski
165*b1cdbd2cSJim Jagielski nCurPos = GetSelectEntryPos();
166*b1cdbd2cSJim Jagielski ReleaseFocus_Impl();
167*b1cdbd2cSJim Jagielski }
168*b1cdbd2cSJim Jagielski }
169*b1cdbd2cSJim Jagielski
170*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
171*b1cdbd2cSJim Jagielski
PreNotify(NotifyEvent & rNEvt)172*b1cdbd2cSJim Jagielski long SvxLineBox::PreNotify( NotifyEvent& rNEvt )
173*b1cdbd2cSJim Jagielski {
174*b1cdbd2cSJim Jagielski sal_uInt16 nType = rNEvt.GetType();
175*b1cdbd2cSJim Jagielski
176*b1cdbd2cSJim Jagielski switch(nType)
177*b1cdbd2cSJim Jagielski {
178*b1cdbd2cSJim Jagielski case EVENT_MOUSEBUTTONDOWN:
179*b1cdbd2cSJim Jagielski case EVENT_GETFOCUS:
180*b1cdbd2cSJim Jagielski nCurPos = GetSelectEntryPos();
181*b1cdbd2cSJim Jagielski break;
182*b1cdbd2cSJim Jagielski case EVENT_LOSEFOCUS:
183*b1cdbd2cSJim Jagielski SelectEntryPos(nCurPos);
184*b1cdbd2cSJim Jagielski break;
185*b1cdbd2cSJim Jagielski case EVENT_KEYINPUT:
186*b1cdbd2cSJim Jagielski {
187*b1cdbd2cSJim Jagielski const KeyEvent* pKEvt = rNEvt.GetKeyEvent();
188*b1cdbd2cSJim Jagielski if( pKEvt->GetKeyCode().GetCode() == KEY_TAB)
189*b1cdbd2cSJim Jagielski {
190*b1cdbd2cSJim Jagielski bRelease = sal_False;
191*b1cdbd2cSJim Jagielski Select();
192*b1cdbd2cSJim Jagielski }
193*b1cdbd2cSJim Jagielski }
194*b1cdbd2cSJim Jagielski break;
195*b1cdbd2cSJim Jagielski }
196*b1cdbd2cSJim Jagielski return LineLB::PreNotify( rNEvt );
197*b1cdbd2cSJim Jagielski }
198*b1cdbd2cSJim Jagielski
199*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
200*b1cdbd2cSJim Jagielski
Notify(NotifyEvent & rNEvt)201*b1cdbd2cSJim Jagielski long SvxLineBox::Notify( NotifyEvent& rNEvt )
202*b1cdbd2cSJim Jagielski {
203*b1cdbd2cSJim Jagielski long nHandled = LineLB::Notify( rNEvt );
204*b1cdbd2cSJim Jagielski
205*b1cdbd2cSJim Jagielski if ( rNEvt.GetType() == EVENT_KEYINPUT )
206*b1cdbd2cSJim Jagielski {
207*b1cdbd2cSJim Jagielski const KeyEvent* pKEvt = rNEvt.GetKeyEvent();
208*b1cdbd2cSJim Jagielski
209*b1cdbd2cSJim Jagielski switch ( pKEvt->GetKeyCode().GetCode() )
210*b1cdbd2cSJim Jagielski {
211*b1cdbd2cSJim Jagielski case KEY_RETURN:
212*b1cdbd2cSJim Jagielski Select();
213*b1cdbd2cSJim Jagielski nHandled = 1;
214*b1cdbd2cSJim Jagielski break;
215*b1cdbd2cSJim Jagielski
216*b1cdbd2cSJim Jagielski case KEY_ESCAPE:
217*b1cdbd2cSJim Jagielski SelectEntryPos( nCurPos );
218*b1cdbd2cSJim Jagielski ReleaseFocus_Impl();
219*b1cdbd2cSJim Jagielski nHandled = 1;
220*b1cdbd2cSJim Jagielski break;
221*b1cdbd2cSJim Jagielski }
222*b1cdbd2cSJim Jagielski }
223*b1cdbd2cSJim Jagielski return nHandled;
224*b1cdbd2cSJim Jagielski }
225*b1cdbd2cSJim Jagielski
226*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
227*b1cdbd2cSJim Jagielski
ReleaseFocus_Impl()228*b1cdbd2cSJim Jagielski void SvxLineBox::ReleaseFocus_Impl()
229*b1cdbd2cSJim Jagielski {
230*b1cdbd2cSJim Jagielski if(!bRelease)
231*b1cdbd2cSJim Jagielski {
232*b1cdbd2cSJim Jagielski bRelease = sal_True;
233*b1cdbd2cSJim Jagielski return;
234*b1cdbd2cSJim Jagielski }
235*b1cdbd2cSJim Jagielski
236*b1cdbd2cSJim Jagielski if( SfxViewShell::Current() )
237*b1cdbd2cSJim Jagielski {
238*b1cdbd2cSJim Jagielski Window* pShellWnd = SfxViewShell::Current()->GetWindow();
239*b1cdbd2cSJim Jagielski
240*b1cdbd2cSJim Jagielski if ( pShellWnd )
241*b1cdbd2cSJim Jagielski pShellWnd->GrabFocus();
242*b1cdbd2cSJim Jagielski }
243*b1cdbd2cSJim Jagielski }
244*b1cdbd2cSJim Jagielski /* -----------------------------08.03.2002 15:39------------------------------
245*b1cdbd2cSJim Jagielski
246*b1cdbd2cSJim Jagielski ---------------------------------------------------------------------------*/
DataChanged(const DataChangedEvent & rDCEvt)247*b1cdbd2cSJim Jagielski void SvxLineBox::DataChanged( const DataChangedEvent& rDCEvt )
248*b1cdbd2cSJim Jagielski {
249*b1cdbd2cSJim Jagielski if ( (rDCEvt.GetType() == DATACHANGED_SETTINGS) &&
250*b1cdbd2cSJim Jagielski (rDCEvt.GetFlags() & SETTINGS_STYLE) )
251*b1cdbd2cSJim Jagielski {
252*b1cdbd2cSJim Jagielski SetSizePixel(LogicToPixel(aLogicalSize, MAP_APPFONT));
253*b1cdbd2cSJim Jagielski Size aDropSize( aLogicalSize.Width(), LOGICAL_EDIT_HEIGHT);
254*b1cdbd2cSJim Jagielski SetDropDownSizePixel(LogicToPixel(aDropSize, MAP_APPFONT));
255*b1cdbd2cSJim Jagielski }
256*b1cdbd2cSJim Jagielski
257*b1cdbd2cSJim Jagielski LineLB::DataChanged( rDCEvt );
258*b1cdbd2cSJim Jagielski
259*b1cdbd2cSJim Jagielski if ( (rDCEvt.GetType() == DATACHANGED_SETTINGS) &&
260*b1cdbd2cSJim Jagielski (rDCEvt.GetFlags() & SETTINGS_STYLE) )
261*b1cdbd2cSJim Jagielski {
262*b1cdbd2cSJim Jagielski BmpColorMode eMode = GetSettings().GetStyleSettings().GetHighContrastMode() ? BMP_COLOR_HIGHCONTRAST : BMP_COLOR_NORMAL;
263*b1cdbd2cSJim Jagielski if( eMode != meBmpMode )
264*b1cdbd2cSJim Jagielski {
265*b1cdbd2cSJim Jagielski meBmpMode = eMode;
266*b1cdbd2cSJim Jagielski FillControl();
267*b1cdbd2cSJim Jagielski }
268*b1cdbd2cSJim Jagielski }
269*b1cdbd2cSJim Jagielski }
270*b1cdbd2cSJim Jagielski
FillControl()271*b1cdbd2cSJim Jagielski void SvxLineBox::FillControl()
272*b1cdbd2cSJim Jagielski {
273*b1cdbd2cSJim Jagielski // FillStyles();
274*b1cdbd2cSJim Jagielski if ( !mpSh )
275*b1cdbd2cSJim Jagielski mpSh = SfxObjectShell::Current();
276*b1cdbd2cSJim Jagielski
277*b1cdbd2cSJim Jagielski if( mpSh )
278*b1cdbd2cSJim Jagielski {
279*b1cdbd2cSJim Jagielski const SvxDashListItem* pItem = (const SvxDashListItem*)( mpSh->GetItem( SID_DASH_LIST ) );
280*b1cdbd2cSJim Jagielski if ( pItem )
281*b1cdbd2cSJim Jagielski Fill( pItem->GetDashList() );
282*b1cdbd2cSJim Jagielski }
283*b1cdbd2cSJim Jagielski
284*b1cdbd2cSJim Jagielski
285*b1cdbd2cSJim Jagielski // rBindings.Invalidate( SID_ATTR_LINE_DASH );
286*b1cdbd2cSJim Jagielski }
287*b1cdbd2cSJim Jagielski //========================================================================
288*b1cdbd2cSJim Jagielski // SvxColorBox
289*b1cdbd2cSJim Jagielski //========================================================================
290*b1cdbd2cSJim Jagielski
SvxColorBox(Window * pParent,const::rtl::OUString & rCommand,const Reference<XFrame> & rFrame,WinBits nBits)291*b1cdbd2cSJim Jagielski SvxColorBox::SvxColorBox(
292*b1cdbd2cSJim Jagielski Window* pParent,
293*b1cdbd2cSJim Jagielski const ::rtl::OUString& rCommand,
294*b1cdbd2cSJim Jagielski const Reference< XFrame >& rFrame,
295*b1cdbd2cSJim Jagielski WinBits nBits ) :
296*b1cdbd2cSJim Jagielski ColorLB( pParent, nBits ),
297*b1cdbd2cSJim Jagielski nCurPos ( 0 ),
298*b1cdbd2cSJim Jagielski aLogicalSize(45,80),
299*b1cdbd2cSJim Jagielski bRelease ( sal_True ),
300*b1cdbd2cSJim Jagielski maCommand ( rCommand ),
301*b1cdbd2cSJim Jagielski mxFrame ( rFrame )
302*b1cdbd2cSJim Jagielski {
303*b1cdbd2cSJim Jagielski SetSizePixel( LogicToPixel( aLogicalSize , MAP_APPFONT));
304*b1cdbd2cSJim Jagielski Show();
305*b1cdbd2cSJim Jagielski
306*b1cdbd2cSJim Jagielski SfxObjectShell* pSh = SfxObjectShell::Current();
307*b1cdbd2cSJim Jagielski
308*b1cdbd2cSJim Jagielski if ( pSh )
309*b1cdbd2cSJim Jagielski {
310*b1cdbd2cSJim Jagielski const SvxColorTableItem* pItem =
311*b1cdbd2cSJim Jagielski (const SvxColorTableItem*)( pSh->GetItem( SID_COLOR_TABLE ) );
312*b1cdbd2cSJim Jagielski if(pItem)
313*b1cdbd2cSJim Jagielski Fill( pItem->GetColorTable() );
314*b1cdbd2cSJim Jagielski }
315*b1cdbd2cSJim Jagielski }
316*b1cdbd2cSJim Jagielski
317*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
318*b1cdbd2cSJim Jagielski
IMPL_LINK(SvxColorBox,DelayHdl_Impl,Timer *,EMPTYARG)319*b1cdbd2cSJim Jagielski IMPL_LINK( SvxColorBox, DelayHdl_Impl, Timer *, EMPTYARG )
320*b1cdbd2cSJim Jagielski {
321*b1cdbd2cSJim Jagielski SfxObjectShell* pSh = SfxObjectShell::Current();
322*b1cdbd2cSJim Jagielski
323*b1cdbd2cSJim Jagielski if ( pSh )
324*b1cdbd2cSJim Jagielski {
325*b1cdbd2cSJim Jagielski const SvxColorTableItem* pItem = (const SvxColorTableItem*)( pSh->GetItem( SID_COLOR_TABLE ) );
326*b1cdbd2cSJim Jagielski if ( pItem )
327*b1cdbd2cSJim Jagielski Fill( pItem->GetColorTable() );
328*b1cdbd2cSJim Jagielski // rBindings.Invalidate( nId );
329*b1cdbd2cSJim Jagielski }
330*b1cdbd2cSJim Jagielski return 0;
331*b1cdbd2cSJim Jagielski }
332*b1cdbd2cSJim Jagielski
333*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
334*b1cdbd2cSJim Jagielski
~SvxColorBox()335*b1cdbd2cSJim Jagielski SvxColorBox::~SvxColorBox()
336*b1cdbd2cSJim Jagielski {
337*b1cdbd2cSJim Jagielski }
338*b1cdbd2cSJim Jagielski
339*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
340*b1cdbd2cSJim Jagielski
Update(const XLineColorItem * pItem)341*b1cdbd2cSJim Jagielski void SvxColorBox::Update( const XLineColorItem* pItem )
342*b1cdbd2cSJim Jagielski {
343*b1cdbd2cSJim Jagielski if ( pItem )
344*b1cdbd2cSJim Jagielski SelectEntry( pItem->GetColorValue() );
345*b1cdbd2cSJim Jagielski else
346*b1cdbd2cSJim Jagielski SetNoSelection();
347*b1cdbd2cSJim Jagielski }
348*b1cdbd2cSJim Jagielski
349*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
350*b1cdbd2cSJim Jagielski
Select()351*b1cdbd2cSJim Jagielski void SvxColorBox::Select()
352*b1cdbd2cSJim Jagielski {
353*b1cdbd2cSJim Jagielski // OJ: base class call needed here because otherwise no event is send for accessibility
354*b1cdbd2cSJim Jagielski ColorLB::Select();
355*b1cdbd2cSJim Jagielski if ( !IsTravelSelect() )
356*b1cdbd2cSJim Jagielski {
357*b1cdbd2cSJim Jagielski XLineColorItem aLineColorItem( GetSelectEntry(), GetSelectEntryColor() );
358*b1cdbd2cSJim Jagielski
359*b1cdbd2cSJim Jagielski INetURLObject aObj( maCommand );
360*b1cdbd2cSJim Jagielski
361*b1cdbd2cSJim Jagielski Any a;
362*b1cdbd2cSJim Jagielski Sequence< PropertyValue > aArgs( 1 );
363*b1cdbd2cSJim Jagielski aArgs[0].Name = aObj.GetURLPath();
364*b1cdbd2cSJim Jagielski aLineColorItem.QueryValue( a );
365*b1cdbd2cSJim Jagielski aArgs[0].Value = a;
366*b1cdbd2cSJim Jagielski SfxToolBoxControl::Dispatch( Reference< XDispatchProvider >( mxFrame->getController(), UNO_QUERY ),
367*b1cdbd2cSJim Jagielski maCommand,
368*b1cdbd2cSJim Jagielski aArgs );
369*b1cdbd2cSJim Jagielski // rBindings.GetDispatcher()->Execute( nId, SFX_CALLMODE_RECORD, &aLineColorItem, 0L );
370*b1cdbd2cSJim Jagielski
371*b1cdbd2cSJim Jagielski nCurPos = GetSelectEntryPos();
372*b1cdbd2cSJim Jagielski ReleaseFocus_Impl();
373*b1cdbd2cSJim Jagielski }
374*b1cdbd2cSJim Jagielski }
375*b1cdbd2cSJim Jagielski
376*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
377*b1cdbd2cSJim Jagielski
PreNotify(NotifyEvent & rNEvt)378*b1cdbd2cSJim Jagielski long SvxColorBox::PreNotify( NotifyEvent& rNEvt )
379*b1cdbd2cSJim Jagielski {
380*b1cdbd2cSJim Jagielski sal_uInt16 nType = rNEvt.GetType();
381*b1cdbd2cSJim Jagielski
382*b1cdbd2cSJim Jagielski switch(nType)
383*b1cdbd2cSJim Jagielski {
384*b1cdbd2cSJim Jagielski case EVENT_MOUSEBUTTONDOWN:
385*b1cdbd2cSJim Jagielski case EVENT_GETFOCUS:
386*b1cdbd2cSJim Jagielski nCurPos = GetSelectEntryPos();
387*b1cdbd2cSJim Jagielski break;
388*b1cdbd2cSJim Jagielski case EVENT_LOSEFOCUS:
389*b1cdbd2cSJim Jagielski SelectEntryPos(nCurPos);
390*b1cdbd2cSJim Jagielski break;
391*b1cdbd2cSJim Jagielski case EVENT_KEYINPUT:
392*b1cdbd2cSJim Jagielski {
393*b1cdbd2cSJim Jagielski const KeyEvent* pKEvt = rNEvt.GetKeyEvent();
394*b1cdbd2cSJim Jagielski
395*b1cdbd2cSJim Jagielski if( pKEvt->GetKeyCode().GetCode() == KEY_TAB)
396*b1cdbd2cSJim Jagielski {
397*b1cdbd2cSJim Jagielski bRelease = sal_False;
398*b1cdbd2cSJim Jagielski Select();
399*b1cdbd2cSJim Jagielski }
400*b1cdbd2cSJim Jagielski }
401*b1cdbd2cSJim Jagielski }
402*b1cdbd2cSJim Jagielski
403*b1cdbd2cSJim Jagielski return ColorLB::PreNotify( rNEvt );
404*b1cdbd2cSJim Jagielski }
405*b1cdbd2cSJim Jagielski
406*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
407*b1cdbd2cSJim Jagielski
Notify(NotifyEvent & rNEvt)408*b1cdbd2cSJim Jagielski long SvxColorBox::Notify( NotifyEvent& rNEvt )
409*b1cdbd2cSJim Jagielski {
410*b1cdbd2cSJim Jagielski long nHandled = ColorLB::Notify( rNEvt );
411*b1cdbd2cSJim Jagielski
412*b1cdbd2cSJim Jagielski if ( rNEvt.GetType() == EVENT_KEYINPUT )
413*b1cdbd2cSJim Jagielski {
414*b1cdbd2cSJim Jagielski const KeyEvent* pKEvt = rNEvt.GetKeyEvent();
415*b1cdbd2cSJim Jagielski
416*b1cdbd2cSJim Jagielski switch ( pKEvt->GetKeyCode().GetCode() )
417*b1cdbd2cSJim Jagielski {
418*b1cdbd2cSJim Jagielski case KEY_RETURN:
419*b1cdbd2cSJim Jagielski Select();
420*b1cdbd2cSJim Jagielski nHandled = 1;
421*b1cdbd2cSJim Jagielski break;
422*b1cdbd2cSJim Jagielski
423*b1cdbd2cSJim Jagielski case KEY_ESCAPE:
424*b1cdbd2cSJim Jagielski SelectEntryPos( nCurPos );
425*b1cdbd2cSJim Jagielski ReleaseFocus_Impl();
426*b1cdbd2cSJim Jagielski nHandled = 1;
427*b1cdbd2cSJim Jagielski break;
428*b1cdbd2cSJim Jagielski }
429*b1cdbd2cSJim Jagielski }
430*b1cdbd2cSJim Jagielski return nHandled;
431*b1cdbd2cSJim Jagielski }
432*b1cdbd2cSJim Jagielski /* -----------------------------08.03.2002 15:35------------------------------
433*b1cdbd2cSJim Jagielski
434*b1cdbd2cSJim Jagielski ---------------------------------------------------------------------------*/
DataChanged(const DataChangedEvent & rDCEvt)435*b1cdbd2cSJim Jagielski void SvxColorBox::DataChanged( const DataChangedEvent& rDCEvt )
436*b1cdbd2cSJim Jagielski {
437*b1cdbd2cSJim Jagielski if ( (rDCEvt.GetType() == DATACHANGED_SETTINGS) &&
438*b1cdbd2cSJim Jagielski (rDCEvt.GetFlags() & SETTINGS_STYLE) )
439*b1cdbd2cSJim Jagielski {
440*b1cdbd2cSJim Jagielski SetSizePixel(LogicToPixel(aLogicalSize, MAP_APPFONT));
441*b1cdbd2cSJim Jagielski Size aDropSize( aLogicalSize.Width(), LOGICAL_EDIT_HEIGHT);
442*b1cdbd2cSJim Jagielski SetDropDownSizePixel(LogicToPixel(aDropSize, MAP_APPFONT));
443*b1cdbd2cSJim Jagielski }
444*b1cdbd2cSJim Jagielski
445*b1cdbd2cSJim Jagielski ColorLB::DataChanged( rDCEvt );
446*b1cdbd2cSJim Jagielski }
447*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
448*b1cdbd2cSJim Jagielski
ReleaseFocus_Impl()449*b1cdbd2cSJim Jagielski void SvxColorBox::ReleaseFocus_Impl()
450*b1cdbd2cSJim Jagielski {
451*b1cdbd2cSJim Jagielski if(!bRelease)
452*b1cdbd2cSJim Jagielski {
453*b1cdbd2cSJim Jagielski bRelease = sal_True;
454*b1cdbd2cSJim Jagielski return;
455*b1cdbd2cSJim Jagielski }
456*b1cdbd2cSJim Jagielski
457*b1cdbd2cSJim Jagielski if( SfxViewShell::Current() )
458*b1cdbd2cSJim Jagielski {
459*b1cdbd2cSJim Jagielski Window* pShellWnd = SfxViewShell::Current()->GetWindow();
460*b1cdbd2cSJim Jagielski
461*b1cdbd2cSJim Jagielski if ( pShellWnd )
462*b1cdbd2cSJim Jagielski pShellWnd->GrabFocus();
463*b1cdbd2cSJim Jagielski }
464*b1cdbd2cSJim Jagielski }
465*b1cdbd2cSJim Jagielski
466*b1cdbd2cSJim Jagielski //========================================================================
467*b1cdbd2cSJim Jagielski // SvxMetricField
468*b1cdbd2cSJim Jagielski //========================================================================
469*b1cdbd2cSJim Jagielski
SvxMetricField(Window * pParent,const Reference<XFrame> & rFrame,WinBits nBits)470*b1cdbd2cSJim Jagielski SvxMetricField::SvxMetricField(
471*b1cdbd2cSJim Jagielski Window* pParent, const Reference< XFrame >& rFrame, WinBits nBits ) :
472*b1cdbd2cSJim Jagielski MetricField( pParent, nBits ),
473*b1cdbd2cSJim Jagielski aCurTxt( String() ),
474*b1cdbd2cSJim Jagielski mxFrame( rFrame )
475*b1cdbd2cSJim Jagielski {
476*b1cdbd2cSJim Jagielski Size aSize = Size(GetTextWidth( String::CreateFromAscii("99,99mm") ),GetTextHeight());
477*b1cdbd2cSJim Jagielski aSize.Width() += 20;
478*b1cdbd2cSJim Jagielski aSize.Height() += 6;
479*b1cdbd2cSJim Jagielski SetSizePixel( aSize );
480*b1cdbd2cSJim Jagielski aLogicalSize = PixelToLogic(aSize, MAP_APPFONT);
481*b1cdbd2cSJim Jagielski SetUnit( FUNIT_MM );
482*b1cdbd2cSJim Jagielski SetDecimalDigits( 2 );
483*b1cdbd2cSJim Jagielski SetMax( 5000 );
484*b1cdbd2cSJim Jagielski SetMin( 0 );
485*b1cdbd2cSJim Jagielski SetLast( 5000 );
486*b1cdbd2cSJim Jagielski SetFirst( 0 );
487*b1cdbd2cSJim Jagielski
488*b1cdbd2cSJim Jagielski eDlgUnit = SfxModule::GetModuleFieldUnit( mxFrame );
489*b1cdbd2cSJim Jagielski SetFieldUnit( *this, eDlgUnit, sal_False );
490*b1cdbd2cSJim Jagielski Show();
491*b1cdbd2cSJim Jagielski }
492*b1cdbd2cSJim Jagielski
493*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
494*b1cdbd2cSJim Jagielski
~SvxMetricField()495*b1cdbd2cSJim Jagielski SvxMetricField::~SvxMetricField()
496*b1cdbd2cSJim Jagielski {
497*b1cdbd2cSJim Jagielski }
498*b1cdbd2cSJim Jagielski
499*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
500*b1cdbd2cSJim Jagielski
Update(const XLineWidthItem * pItem)501*b1cdbd2cSJim Jagielski void SvxMetricField::Update( const XLineWidthItem* pItem )
502*b1cdbd2cSJim Jagielski {
503*b1cdbd2cSJim Jagielski if ( pItem )
504*b1cdbd2cSJim Jagielski {
505*b1cdbd2cSJim Jagielski if ( pItem->GetValue() != GetCoreValue( *this, ePoolUnit ) )
506*b1cdbd2cSJim Jagielski SetMetricValue( *this, pItem->GetValue(), ePoolUnit );
507*b1cdbd2cSJim Jagielski }
508*b1cdbd2cSJim Jagielski else
509*b1cdbd2cSJim Jagielski SetText( String() );
510*b1cdbd2cSJim Jagielski }
511*b1cdbd2cSJim Jagielski
512*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
513*b1cdbd2cSJim Jagielski
Modify()514*b1cdbd2cSJim Jagielski void SvxMetricField::Modify()
515*b1cdbd2cSJim Jagielski {
516*b1cdbd2cSJim Jagielski MetricField::Modify();
517*b1cdbd2cSJim Jagielski long nTmp = GetCoreValue( *this, ePoolUnit );
518*b1cdbd2cSJim Jagielski XLineWidthItem aLineWidthItem( nTmp );
519*b1cdbd2cSJim Jagielski
520*b1cdbd2cSJim Jagielski Any a;
521*b1cdbd2cSJim Jagielski Sequence< PropertyValue > aArgs( 1 );
522*b1cdbd2cSJim Jagielski aArgs[0].Name = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "LineWidth" ));
523*b1cdbd2cSJim Jagielski aLineWidthItem.QueryValue( a );
524*b1cdbd2cSJim Jagielski aArgs[0].Value = a;
525*b1cdbd2cSJim Jagielski SfxToolBoxControl::Dispatch( Reference< XDispatchProvider >( mxFrame->getController(), UNO_QUERY ),
526*b1cdbd2cSJim Jagielski ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( ".uno:LineWidth" )),
527*b1cdbd2cSJim Jagielski aArgs );
528*b1cdbd2cSJim Jagielski // rBindings.GetDispatcher()->Execute( SID_ATTR_LINE_WIDTH, SFX_CALLMODE_RECORD, &aLineWidthItem, 0L );
529*b1cdbd2cSJim Jagielski }
530*b1cdbd2cSJim Jagielski
531*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
532*b1cdbd2cSJim Jagielski
ReleaseFocus_Impl()533*b1cdbd2cSJim Jagielski void SvxMetricField::ReleaseFocus_Impl()
534*b1cdbd2cSJim Jagielski {
535*b1cdbd2cSJim Jagielski if( SfxViewShell::Current() )
536*b1cdbd2cSJim Jagielski {
537*b1cdbd2cSJim Jagielski Window* pShellWnd = SfxViewShell::Current()->GetWindow();
538*b1cdbd2cSJim Jagielski if ( pShellWnd )
539*b1cdbd2cSJim Jagielski pShellWnd->GrabFocus();
540*b1cdbd2cSJim Jagielski }
541*b1cdbd2cSJim Jagielski }
542*b1cdbd2cSJim Jagielski
543*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
544*b1cdbd2cSJim Jagielski
Down()545*b1cdbd2cSJim Jagielski void SvxMetricField::Down()
546*b1cdbd2cSJim Jagielski {
547*b1cdbd2cSJim Jagielski sal_Int64 nValue = GetValue();
548*b1cdbd2cSJim Jagielski nValue -= GetSpinSize();
549*b1cdbd2cSJim Jagielski
550*b1cdbd2cSJim Jagielski // Um unter OS/2 einen Sprung auf Max zu verhindern
551*b1cdbd2cSJim Jagielski if ( nValue >= GetMin() )
552*b1cdbd2cSJim Jagielski MetricField::Down();
553*b1cdbd2cSJim Jagielski }
554*b1cdbd2cSJim Jagielski
555*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
556*b1cdbd2cSJim Jagielski
Up()557*b1cdbd2cSJim Jagielski void SvxMetricField::Up()
558*b1cdbd2cSJim Jagielski {
559*b1cdbd2cSJim Jagielski MetricField::Up();
560*b1cdbd2cSJim Jagielski }
561*b1cdbd2cSJim Jagielski
562*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
563*b1cdbd2cSJim Jagielski
SetCoreUnit(SfxMapUnit eUnit)564*b1cdbd2cSJim Jagielski void SvxMetricField::SetCoreUnit( SfxMapUnit eUnit )
565*b1cdbd2cSJim Jagielski {
566*b1cdbd2cSJim Jagielski ePoolUnit = eUnit;
567*b1cdbd2cSJim Jagielski }
568*b1cdbd2cSJim Jagielski
569*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
570*b1cdbd2cSJim Jagielski
RefreshDlgUnit()571*b1cdbd2cSJim Jagielski void SvxMetricField::RefreshDlgUnit()
572*b1cdbd2cSJim Jagielski {
573*b1cdbd2cSJim Jagielski FieldUnit eTmpUnit = SfxModule::GetModuleFieldUnit( mxFrame );
574*b1cdbd2cSJim Jagielski if ( eDlgUnit != eTmpUnit )
575*b1cdbd2cSJim Jagielski {
576*b1cdbd2cSJim Jagielski eDlgUnit = eTmpUnit;
577*b1cdbd2cSJim Jagielski SetFieldUnit( *this, eDlgUnit, sal_False );
578*b1cdbd2cSJim Jagielski }
579*b1cdbd2cSJim Jagielski }
580*b1cdbd2cSJim Jagielski
581*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
582*b1cdbd2cSJim Jagielski
PreNotify(NotifyEvent & rNEvt)583*b1cdbd2cSJim Jagielski long SvxMetricField::PreNotify( NotifyEvent& rNEvt )
584*b1cdbd2cSJim Jagielski {
585*b1cdbd2cSJim Jagielski sal_uInt16 nType = rNEvt.GetType();
586*b1cdbd2cSJim Jagielski
587*b1cdbd2cSJim Jagielski if ( EVENT_MOUSEBUTTONDOWN == nType || EVENT_GETFOCUS == nType )
588*b1cdbd2cSJim Jagielski aCurTxt = GetText();
589*b1cdbd2cSJim Jagielski
590*b1cdbd2cSJim Jagielski return MetricField::PreNotify( rNEvt );
591*b1cdbd2cSJim Jagielski }
592*b1cdbd2cSJim Jagielski
593*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
594*b1cdbd2cSJim Jagielski
Notify(NotifyEvent & rNEvt)595*b1cdbd2cSJim Jagielski long SvxMetricField::Notify( NotifyEvent& rNEvt )
596*b1cdbd2cSJim Jagielski {
597*b1cdbd2cSJim Jagielski long nHandled = MetricField::Notify( rNEvt );
598*b1cdbd2cSJim Jagielski
599*b1cdbd2cSJim Jagielski if ( rNEvt.GetType() == EVENT_KEYINPUT )
600*b1cdbd2cSJim Jagielski {
601*b1cdbd2cSJim Jagielski const KeyEvent* pKEvt = rNEvt.GetKeyEvent();
602*b1cdbd2cSJim Jagielski const KeyCode& rKey = pKEvt->GetKeyCode();
603*b1cdbd2cSJim Jagielski SfxViewShell* pSh = SfxViewShell::Current();
604*b1cdbd2cSJim Jagielski
605*b1cdbd2cSJim Jagielski if ( rKey.GetModifier() && rKey.GetGroup() != KEYGROUP_CURSOR && pSh )
606*b1cdbd2cSJim Jagielski pSh->KeyInput( *pKEvt );
607*b1cdbd2cSJim Jagielski else
608*b1cdbd2cSJim Jagielski {
609*b1cdbd2cSJim Jagielski bool bHandled = sal_False;
610*b1cdbd2cSJim Jagielski
611*b1cdbd2cSJim Jagielski switch ( rKey.GetCode() )
612*b1cdbd2cSJim Jagielski {
613*b1cdbd2cSJim Jagielski case KEY_RETURN:
614*b1cdbd2cSJim Jagielski Reformat();
615*b1cdbd2cSJim Jagielski bHandled = sal_True;
616*b1cdbd2cSJim Jagielski break;
617*b1cdbd2cSJim Jagielski
618*b1cdbd2cSJim Jagielski case KEY_ESCAPE:
619*b1cdbd2cSJim Jagielski SetText( aCurTxt );
620*b1cdbd2cSJim Jagielski bHandled = sal_True;
621*b1cdbd2cSJim Jagielski break;
622*b1cdbd2cSJim Jagielski }
623*b1cdbd2cSJim Jagielski
624*b1cdbd2cSJim Jagielski if ( bHandled )
625*b1cdbd2cSJim Jagielski {
626*b1cdbd2cSJim Jagielski nHandled = 1;
627*b1cdbd2cSJim Jagielski Modify();
628*b1cdbd2cSJim Jagielski ReleaseFocus_Impl();
629*b1cdbd2cSJim Jagielski }
630*b1cdbd2cSJim Jagielski }
631*b1cdbd2cSJim Jagielski }
632*b1cdbd2cSJim Jagielski return nHandled;
633*b1cdbd2cSJim Jagielski }
634*b1cdbd2cSJim Jagielski /* -----------------------------08.03.2002 15:32------------------------------
635*b1cdbd2cSJim Jagielski
636*b1cdbd2cSJim Jagielski ---------------------------------------------------------------------------*/
DataChanged(const DataChangedEvent & rDCEvt)637*b1cdbd2cSJim Jagielski void SvxMetricField::DataChanged( const DataChangedEvent& rDCEvt )
638*b1cdbd2cSJim Jagielski {
639*b1cdbd2cSJim Jagielski if ( (rDCEvt.GetType() == DATACHANGED_SETTINGS) &&
640*b1cdbd2cSJim Jagielski (rDCEvt.GetFlags() & SETTINGS_STYLE) )
641*b1cdbd2cSJim Jagielski {
642*b1cdbd2cSJim Jagielski SetSizePixel(LogicToPixel(aLogicalSize, MAP_APPFONT));
643*b1cdbd2cSJim Jagielski }
644*b1cdbd2cSJim Jagielski
645*b1cdbd2cSJim Jagielski MetricField::DataChanged( rDCEvt );
646*b1cdbd2cSJim Jagielski }
647*b1cdbd2cSJim Jagielski
648*b1cdbd2cSJim Jagielski //========================================================================
649*b1cdbd2cSJim Jagielski // SvxFillTypeBox
650*b1cdbd2cSJim Jagielski //========================================================================
651*b1cdbd2cSJim Jagielski
SvxFillTypeBox(Window * pParent,WinBits nBits)652*b1cdbd2cSJim Jagielski SvxFillTypeBox::SvxFillTypeBox( Window* pParent, WinBits nBits ) :
653*b1cdbd2cSJim Jagielski FillTypeLB( pParent, nBits | WB_TABSTOP ),
654*b1cdbd2cSJim Jagielski nCurPos ( 0 ),
655*b1cdbd2cSJim Jagielski bSelect ( sal_False ),
656*b1cdbd2cSJim Jagielski bRelease(sal_True)
657*b1cdbd2cSJim Jagielski {
658*b1cdbd2cSJim Jagielski SetSizePixel( LogicToPixel( Size(40, 40 ),MAP_APPFONT ));
659*b1cdbd2cSJim Jagielski Fill();
660*b1cdbd2cSJim Jagielski SelectEntryPos( XFILL_SOLID );
661*b1cdbd2cSJim Jagielski Show();
662*b1cdbd2cSJim Jagielski }
663*b1cdbd2cSJim Jagielski
664*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
665*b1cdbd2cSJim Jagielski
~SvxFillTypeBox()666*b1cdbd2cSJim Jagielski SvxFillTypeBox::~SvxFillTypeBox()
667*b1cdbd2cSJim Jagielski {
668*b1cdbd2cSJim Jagielski }
669*b1cdbd2cSJim Jagielski
670*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
671*b1cdbd2cSJim Jagielski
PreNotify(NotifyEvent & rNEvt)672*b1cdbd2cSJim Jagielski long SvxFillTypeBox::PreNotify( NotifyEvent& rNEvt )
673*b1cdbd2cSJim Jagielski {
674*b1cdbd2cSJim Jagielski sal_uInt16 nType = rNEvt.GetType();
675*b1cdbd2cSJim Jagielski
676*b1cdbd2cSJim Jagielski if ( EVENT_MOUSEBUTTONDOWN == nType || EVENT_GETFOCUS == nType )
677*b1cdbd2cSJim Jagielski nCurPos = GetSelectEntryPos();
678*b1cdbd2cSJim Jagielski else if ( EVENT_LOSEFOCUS == nType
679*b1cdbd2cSJim Jagielski && Application::GetFocusWindow()
680*b1cdbd2cSJim Jagielski && !IsWindowOrChild( Application::GetFocusWindow(), sal_True ) )
681*b1cdbd2cSJim Jagielski {
682*b1cdbd2cSJim Jagielski if ( !bSelect )
683*b1cdbd2cSJim Jagielski SelectEntryPos( nCurPos );
684*b1cdbd2cSJim Jagielski else
685*b1cdbd2cSJim Jagielski bSelect = sal_False;
686*b1cdbd2cSJim Jagielski }
687*b1cdbd2cSJim Jagielski
688*b1cdbd2cSJim Jagielski return FillTypeLB::PreNotify( rNEvt );
689*b1cdbd2cSJim Jagielski }
690*b1cdbd2cSJim Jagielski
691*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
692*b1cdbd2cSJim Jagielski
Notify(NotifyEvent & rNEvt)693*b1cdbd2cSJim Jagielski long SvxFillTypeBox::Notify( NotifyEvent& rNEvt )
694*b1cdbd2cSJim Jagielski {
695*b1cdbd2cSJim Jagielski long nHandled = FillTypeLB::Notify( rNEvt );
696*b1cdbd2cSJim Jagielski
697*b1cdbd2cSJim Jagielski if ( rNEvt.GetType() == EVENT_KEYINPUT )
698*b1cdbd2cSJim Jagielski {
699*b1cdbd2cSJim Jagielski const KeyEvent* pKEvt = rNEvt.GetKeyEvent();
700*b1cdbd2cSJim Jagielski switch ( pKEvt->GetKeyCode().GetCode() )
701*b1cdbd2cSJim Jagielski {
702*b1cdbd2cSJim Jagielski case KEY_RETURN:
703*b1cdbd2cSJim Jagielski nHandled = 1;
704*b1cdbd2cSJim Jagielski ( (Link&)GetSelectHdl() ).Call( this );
705*b1cdbd2cSJim Jagielski break;
706*b1cdbd2cSJim Jagielski case KEY_TAB:
707*b1cdbd2cSJim Jagielski bRelease = sal_False;
708*b1cdbd2cSJim Jagielski ( (Link&)GetSelectHdl() ).Call( this );
709*b1cdbd2cSJim Jagielski bRelease = sal_True;
710*b1cdbd2cSJim Jagielski break;
711*b1cdbd2cSJim Jagielski
712*b1cdbd2cSJim Jagielski case KEY_ESCAPE:
713*b1cdbd2cSJim Jagielski SelectEntryPos( nCurPos );
714*b1cdbd2cSJim Jagielski ReleaseFocus_Impl();
715*b1cdbd2cSJim Jagielski nHandled = 1;
716*b1cdbd2cSJim Jagielski break;
717*b1cdbd2cSJim Jagielski }
718*b1cdbd2cSJim Jagielski }
719*b1cdbd2cSJim Jagielski return nHandled;
720*b1cdbd2cSJim Jagielski }
721*b1cdbd2cSJim Jagielski
722*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
723*b1cdbd2cSJim Jagielski
ReleaseFocus_Impl()724*b1cdbd2cSJim Jagielski void SvxFillTypeBox::ReleaseFocus_Impl()
725*b1cdbd2cSJim Jagielski {
726*b1cdbd2cSJim Jagielski if( SfxViewShell::Current() )
727*b1cdbd2cSJim Jagielski {
728*b1cdbd2cSJim Jagielski Window* pShellWnd = SfxViewShell::Current()->GetWindow();
729*b1cdbd2cSJim Jagielski
730*b1cdbd2cSJim Jagielski if ( pShellWnd )
731*b1cdbd2cSJim Jagielski pShellWnd->GrabFocus();
732*b1cdbd2cSJim Jagielski }
733*b1cdbd2cSJim Jagielski }
734*b1cdbd2cSJim Jagielski
735*b1cdbd2cSJim Jagielski //========================================================================
736*b1cdbd2cSJim Jagielski // SvxFillAttrBox
737*b1cdbd2cSJim Jagielski //========================================================================
738*b1cdbd2cSJim Jagielski
SvxFillAttrBox(Window * pParent,WinBits nBits)739*b1cdbd2cSJim Jagielski SvxFillAttrBox::SvxFillAttrBox( Window* pParent, WinBits nBits ) :
740*b1cdbd2cSJim Jagielski
741*b1cdbd2cSJim Jagielski FillAttrLB( pParent, nBits | WB_TABSTOP ),
742*b1cdbd2cSJim Jagielski
743*b1cdbd2cSJim Jagielski nCurPos( 0 ),
744*b1cdbd2cSJim Jagielski bRelease( sal_True )
745*b1cdbd2cSJim Jagielski
746*b1cdbd2cSJim Jagielski {
747*b1cdbd2cSJim Jagielski SetPosPixel( Point( 90, 0 ) );
748*b1cdbd2cSJim Jagielski SetSizePixel( LogicToPixel( Size(50, 80 ), MAP_APPFONT ));
749*b1cdbd2cSJim Jagielski Show();
750*b1cdbd2cSJim Jagielski }
751*b1cdbd2cSJim Jagielski
752*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
753*b1cdbd2cSJim Jagielski
~SvxFillAttrBox()754*b1cdbd2cSJim Jagielski SvxFillAttrBox::~SvxFillAttrBox()
755*b1cdbd2cSJim Jagielski {
756*b1cdbd2cSJim Jagielski }
757*b1cdbd2cSJim Jagielski
758*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
759*b1cdbd2cSJim Jagielski
PreNotify(NotifyEvent & rNEvt)760*b1cdbd2cSJim Jagielski long SvxFillAttrBox::PreNotify( NotifyEvent& rNEvt )
761*b1cdbd2cSJim Jagielski {
762*b1cdbd2cSJim Jagielski sal_uInt16 nType = rNEvt.GetType();
763*b1cdbd2cSJim Jagielski
764*b1cdbd2cSJim Jagielski if ( EVENT_MOUSEBUTTONDOWN == nType || EVENT_GETFOCUS == nType )
765*b1cdbd2cSJim Jagielski nCurPos = GetSelectEntryPos();
766*b1cdbd2cSJim Jagielski
767*b1cdbd2cSJim Jagielski return FillAttrLB::PreNotify( rNEvt );
768*b1cdbd2cSJim Jagielski }
769*b1cdbd2cSJim Jagielski
770*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
771*b1cdbd2cSJim Jagielski
Notify(NotifyEvent & rNEvt)772*b1cdbd2cSJim Jagielski long SvxFillAttrBox::Notify( NotifyEvent& rNEvt )
773*b1cdbd2cSJim Jagielski {
774*b1cdbd2cSJim Jagielski long nHandled = FillAttrLB::Notify( rNEvt );
775*b1cdbd2cSJim Jagielski
776*b1cdbd2cSJim Jagielski if ( rNEvt.GetType() == EVENT_KEYINPUT )
777*b1cdbd2cSJim Jagielski {
778*b1cdbd2cSJim Jagielski const KeyEvent* pKEvt = rNEvt.GetKeyEvent();
779*b1cdbd2cSJim Jagielski
780*b1cdbd2cSJim Jagielski switch ( pKEvt->GetKeyCode().GetCode() )
781*b1cdbd2cSJim Jagielski {
782*b1cdbd2cSJim Jagielski case KEY_RETURN:
783*b1cdbd2cSJim Jagielski ( (Link&)GetSelectHdl() ).Call( this );
784*b1cdbd2cSJim Jagielski nHandled = 1;
785*b1cdbd2cSJim Jagielski break;
786*b1cdbd2cSJim Jagielski case KEY_TAB:
787*b1cdbd2cSJim Jagielski bRelease = sal_False;
788*b1cdbd2cSJim Jagielski GetSelectHdl().Call( this );
789*b1cdbd2cSJim Jagielski bRelease = sal_True;
790*b1cdbd2cSJim Jagielski break;
791*b1cdbd2cSJim Jagielski case KEY_ESCAPE:
792*b1cdbd2cSJim Jagielski SelectEntryPos( nCurPos );
793*b1cdbd2cSJim Jagielski ReleaseFocus_Impl();
794*b1cdbd2cSJim Jagielski nHandled = 1;
795*b1cdbd2cSJim Jagielski break;
796*b1cdbd2cSJim Jagielski }
797*b1cdbd2cSJim Jagielski }
798*b1cdbd2cSJim Jagielski return nHandled;
799*b1cdbd2cSJim Jagielski }
800*b1cdbd2cSJim Jagielski
801*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
802*b1cdbd2cSJim Jagielski
Select()803*b1cdbd2cSJim Jagielski void SvxFillAttrBox::Select()
804*b1cdbd2cSJim Jagielski {
805*b1cdbd2cSJim Jagielski FillAttrLB::Select();
806*b1cdbd2cSJim Jagielski }
807*b1cdbd2cSJim Jagielski
808*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
809*b1cdbd2cSJim Jagielski
ReleaseFocus_Impl()810*b1cdbd2cSJim Jagielski void SvxFillAttrBox::ReleaseFocus_Impl()
811*b1cdbd2cSJim Jagielski {
812*b1cdbd2cSJim Jagielski if( SfxViewShell::Current() )
813*b1cdbd2cSJim Jagielski {
814*b1cdbd2cSJim Jagielski Window* pShellWnd = SfxViewShell::Current()->GetWindow();
815*b1cdbd2cSJim Jagielski
816*b1cdbd2cSJim Jagielski if ( pShellWnd )
817*b1cdbd2cSJim Jagielski pShellWnd->GrabFocus();
818*b1cdbd2cSJim Jagielski }
819*b1cdbd2cSJim Jagielski }
820