xref: /trunk/main/formula/source/ui/dlg/ControlHelper.hxx (revision cdf0e10c4e3984b49a9502b011690b615761d4a3)
1*cdf0e10cSrcweir /*************************************************************************
2*cdf0e10cSrcweir  *
3*cdf0e10cSrcweir  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4*cdf0e10cSrcweir  *
5*cdf0e10cSrcweir  * Copyright 2000, 2010 Oracle and/or its affiliates.
6*cdf0e10cSrcweir  *
7*cdf0e10cSrcweir  * OpenOffice.org - a multi-platform office productivity suite
8*cdf0e10cSrcweir  *
9*cdf0e10cSrcweir  * This file is part of OpenOffice.org.
10*cdf0e10cSrcweir  *
11*cdf0e10cSrcweir  * OpenOffice.org is free software: you can redistribute it and/or modify
12*cdf0e10cSrcweir  * it under the terms of the GNU Lesser General Public License version 3
13*cdf0e10cSrcweir  * only, as published by the Free Software Foundation.
14*cdf0e10cSrcweir  *
15*cdf0e10cSrcweir  * OpenOffice.org is distributed in the hope that it will be useful,
16*cdf0e10cSrcweir  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17*cdf0e10cSrcweir  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18*cdf0e10cSrcweir  * GNU Lesser General Public License version 3 for more details
19*cdf0e10cSrcweir  * (a copy is included in the LICENSE file that accompanied this code).
20*cdf0e10cSrcweir  *
21*cdf0e10cSrcweir  * You should have received a copy of the GNU Lesser General Public License
22*cdf0e10cSrcweir  * version 3 along with OpenOffice.org.  If not, see
23*cdf0e10cSrcweir  * <http://www.openoffice.org/license.html>
24*cdf0e10cSrcweir  * for a copy of the LGPLv3 License.
25*cdf0e10cSrcweir  *
26*cdf0e10cSrcweir  ************************************************************************/
27*cdf0e10cSrcweir #ifndef FORMULA_CONTROL_HELPER_HXX_INCLUDED
28*cdf0e10cSrcweir #define FORMULA_CONTROL_HELPER_HXX_INCLUDED
29*cdf0e10cSrcweir 
30*cdf0e10cSrcweir #include "formula/funcutl.hxx"
31*cdf0e10cSrcweir #include <svtools/svmedit.hxx>
32*cdf0e10cSrcweir namespace formula
33*cdf0e10cSrcweir {
34*cdf0e10cSrcweir 
35*cdf0e10cSrcweir //============================================================================
36*cdf0e10cSrcweir // class ValWnd
37*cdf0e10cSrcweir class ValWnd : public Window
38*cdf0e10cSrcweir {
39*cdf0e10cSrcweir public:
40*cdf0e10cSrcweir             ValWnd( Window* pParent, const ResId& rId );
41*cdf0e10cSrcweir 
42*cdf0e10cSrcweir     void    SetValue( const String& rStrVal );
43*cdf0e10cSrcweir 
44*cdf0e10cSrcweir protected:
45*cdf0e10cSrcweir     virtual void    Paint( const Rectangle& rRect );
46*cdf0e10cSrcweir 
47*cdf0e10cSrcweir private:
48*cdf0e10cSrcweir     String      aStrValue;
49*cdf0e10cSrcweir     Rectangle   aRectOut;
50*cdf0e10cSrcweir };
51*cdf0e10cSrcweir 
52*cdf0e10cSrcweir //============================================================================
53*cdf0e10cSrcweir // class EditBox
54*cdf0e10cSrcweir class EditBox : public Control
55*cdf0e10cSrcweir {
56*cdf0e10cSrcweir private:
57*cdf0e10cSrcweir 
58*cdf0e10cSrcweir     MultiLineEdit*  pMEdit;
59*cdf0e10cSrcweir     Link            aSelChangedLink;
60*cdf0e10cSrcweir     Selection       aOldSel;
61*cdf0e10cSrcweir     sal_Bool            bMouseFlag;
62*cdf0e10cSrcweir                     DECL_LINK( ChangedHdl, EditBox* );
63*cdf0e10cSrcweir 
64*cdf0e10cSrcweir protected:
65*cdf0e10cSrcweir 
66*cdf0e10cSrcweir     virtual long    PreNotify( NotifyEvent& rNEvt );
67*cdf0e10cSrcweir     virtual void    SelectionChanged();
68*cdf0e10cSrcweir     virtual void    Resize();
69*cdf0e10cSrcweir     virtual void    GetFocus();
70*cdf0e10cSrcweir 
71*cdf0e10cSrcweir 
72*cdf0e10cSrcweir public:
73*cdf0e10cSrcweir                     EditBox( Window* pParent,
74*cdf0e10cSrcweir                                 WinBits nWinStyle = WB_LEFT | WB_BORDER );
75*cdf0e10cSrcweir                     EditBox( Window* pParent, const ResId& rResId );
76*cdf0e10cSrcweir 
77*cdf0e10cSrcweir                     virtual ~EditBox();
78*cdf0e10cSrcweir 
79*cdf0e10cSrcweir     MultiLineEdit*  GetEdit() {return pMEdit;}
80*cdf0e10cSrcweir 
81*cdf0e10cSrcweir     void            SetSelChangedHdl( const Link& rLink ) { aSelChangedLink = rLink; }
82*cdf0e10cSrcweir     const Link&     GetSelChangedHdl() const { return aSelChangedLink; }
83*cdf0e10cSrcweir 
84*cdf0e10cSrcweir     void            UpdateOldSel();
85*cdf0e10cSrcweir };
86*cdf0e10cSrcweir 
87*cdf0e10cSrcweir //============================================================================
88*cdf0e10cSrcweir // class ArgEdit
89*cdf0e10cSrcweir 
90*cdf0e10cSrcweir class ArgEdit : public RefEdit
91*cdf0e10cSrcweir {
92*cdf0e10cSrcweir public:
93*cdf0e10cSrcweir             ArgEdit( Window* pParent, const ResId& rResId );
94*cdf0e10cSrcweir 
95*cdf0e10cSrcweir     void    Init( ArgEdit* pPrevEdit, ArgEdit* pNextEdit,
96*cdf0e10cSrcweir                   ScrollBar& rArgSlider, sal_uInt16 nArgCount );
97*cdf0e10cSrcweir 
98*cdf0e10cSrcweir protected:
99*cdf0e10cSrcweir     virtual void    KeyInput( const KeyEvent& rKEvt );
100*cdf0e10cSrcweir 
101*cdf0e10cSrcweir private:
102*cdf0e10cSrcweir     ArgEdit*    pEdPrev;
103*cdf0e10cSrcweir     ArgEdit*    pEdNext;
104*cdf0e10cSrcweir     ScrollBar*  pSlider;
105*cdf0e10cSrcweir     sal_uInt16      nArgs;
106*cdf0e10cSrcweir };
107*cdf0e10cSrcweir 
108*cdf0e10cSrcweir 
109*cdf0e10cSrcweir //============================================================================
110*cdf0e10cSrcweir // class ArgInput
111*cdf0e10cSrcweir 
112*cdf0e10cSrcweir class ArgInput
113*cdf0e10cSrcweir {
114*cdf0e10cSrcweir private:
115*cdf0e10cSrcweir 
116*cdf0e10cSrcweir     Link            aFxClickLink;
117*cdf0e10cSrcweir     Link            aRefClickLink;
118*cdf0e10cSrcweir     Link            aFxFocusLink;
119*cdf0e10cSrcweir     Link            aRefFocusLink;
120*cdf0e10cSrcweir     Link            aEdFocusLink;
121*cdf0e10cSrcweir     Link            aEdModifyLink;
122*cdf0e10cSrcweir 
123*cdf0e10cSrcweir     FixedText*      pFtArg;
124*cdf0e10cSrcweir     ImageButton*    pBtnFx;
125*cdf0e10cSrcweir     ArgEdit*        pEdArg;
126*cdf0e10cSrcweir     RefButton*  pRefBtn;
127*cdf0e10cSrcweir 
128*cdf0e10cSrcweir     DECL_LINK(  FxBtnClickHdl, ImageButton* );
129*cdf0e10cSrcweir     DECL_LINK(  RefBtnClickHdl,RefButton* );
130*cdf0e10cSrcweir     DECL_LINK(  FxBtnFocusHdl, ImageButton* );
131*cdf0e10cSrcweir     DECL_LINK(  RefBtnFocusHdl,RefButton* );
132*cdf0e10cSrcweir     DECL_LINK(  EdFocusHdl, ArgEdit* );
133*cdf0e10cSrcweir     DECL_LINK(  EdModifyHdl,ArgEdit* );
134*cdf0e10cSrcweir 
135*cdf0e10cSrcweir protected:
136*cdf0e10cSrcweir 
137*cdf0e10cSrcweir     virtual void    FxClick();
138*cdf0e10cSrcweir     virtual void    RefClick();
139*cdf0e10cSrcweir     virtual void    FxFocus();
140*cdf0e10cSrcweir     virtual void    RefFocus();
141*cdf0e10cSrcweir     virtual void    EdFocus();
142*cdf0e10cSrcweir     virtual void    EdModify();
143*cdf0e10cSrcweir 
144*cdf0e10cSrcweir public:
145*cdf0e10cSrcweir 
146*cdf0e10cSrcweir     ArgInput();
147*cdf0e10cSrcweir 
148*cdf0e10cSrcweir     void        InitArgInput (  FixedText*      pftArg,
149*cdf0e10cSrcweir                                 ImageButton*    pbtnFx,
150*cdf0e10cSrcweir                                 ArgEdit*        pedArg,
151*cdf0e10cSrcweir                                 RefButton*  prefBtn);
152*cdf0e10cSrcweir 
153*cdf0e10cSrcweir     void        SetArgName(const String &aArg);
154*cdf0e10cSrcweir     String      GetArgName();
155*cdf0e10cSrcweir     void        SetArgNameFont(const Font&);
156*cdf0e10cSrcweir 
157*cdf0e10cSrcweir     void        SetArgVal(const String &aVal);
158*cdf0e10cSrcweir     String      GetArgVal();
159*cdf0e10cSrcweir 
160*cdf0e10cSrcweir     void        SetArgSelection (const Selection& rSel );
161*cdf0e10cSrcweir     void        ReplaceSelOfArg (const String& rStr );
162*cdf0e10cSrcweir 
163*cdf0e10cSrcweir     Selection   GetArgSelection();
164*cdf0e10cSrcweir 
165*cdf0e10cSrcweir 
166*cdf0e10cSrcweir     ArgEdit*    GetArgEdPtr() {return pEdArg;}
167*cdf0e10cSrcweir 
168*cdf0e10cSrcweir 
169*cdf0e10cSrcweir     void            SetFxClickHdl( const Link& rLink ) { aFxClickLink = rLink; }
170*cdf0e10cSrcweir     const Link&     GetFxClickHdl() const { return aFxClickLink; }
171*cdf0e10cSrcweir 
172*cdf0e10cSrcweir     void            SetRefClickHdl( const Link& rLink ) { aRefClickLink = rLink; }
173*cdf0e10cSrcweir     const Link&     GetRefClickHdl() const { return aRefClickLink; }
174*cdf0e10cSrcweir 
175*cdf0e10cSrcweir     void            SetFxFocusHdl( const Link& rLink ) { aFxFocusLink = rLink; }
176*cdf0e10cSrcweir     const Link&     GetFxFocusHdl() const { return aFxFocusLink; }
177*cdf0e10cSrcweir 
178*cdf0e10cSrcweir     void            SetRefFocusHdl( const Link& rLink ) { aRefFocusLink = rLink; }
179*cdf0e10cSrcweir     const Link&     GetRefFocusHdl() const { return aRefFocusLink; }
180*cdf0e10cSrcweir 
181*cdf0e10cSrcweir     void            SetEdFocusHdl( const Link& rLink ) { aEdFocusLink = rLink; }
182*cdf0e10cSrcweir     const Link&     GetEdFocusHdl() const { return aEdFocusLink; }
183*cdf0e10cSrcweir 
184*cdf0e10cSrcweir     void            SetEdModifyHdl( const Link& rLink ) { aEdModifyLink = rLink; }
185*cdf0e10cSrcweir     const Link&     GetEdModifyHdl() const { return aEdModifyLink; }
186*cdf0e10cSrcweir 
187*cdf0e10cSrcweir     void Hide();
188*cdf0e10cSrcweir     void Show();
189*cdf0e10cSrcweir 
190*cdf0e10cSrcweir };
191*cdf0e10cSrcweir 
192*cdf0e10cSrcweir }
193*cdf0e10cSrcweir #endif // FORMULA_FORMULA_HELPER_HXX_INCLUDED
194