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