xref: /AOO41X/main/formula/source/ui/dlg/ControlHelper.hxx (revision ffad8df045fe8db79e3e50f731c1fa6ab6501c83)
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 #ifndef FORMULA_CONTROL_HELPER_HXX_INCLUDED
24 #define FORMULA_CONTROL_HELPER_HXX_INCLUDED
25 
26 #include "formula/funcutl.hxx"
27 #include <svtools/svmedit.hxx>
28 namespace formula
29 {
30 
31 //============================================================================
32 // class ValWnd
33 class ValWnd : public Window
34 {
35 public:
36             ValWnd( Window* pParent, const ResId& rId );
37 
38     void    SetValue( const String& rStrVal );
39 
40 protected:
41     virtual void    Paint( const Rectangle& rRect );
42 
43 private:
44     String      aStrValue;
45     Rectangle   aRectOut;
46 };
47 
48 //============================================================================
49 // class EditBox
50 class EditBox : public Control
51 {
52 private:
53 
54     MultiLineEdit*  pMEdit;
55     Link            aSelChangedLink;
56     Selection       aOldSel;
57     sal_Bool            bMouseFlag;
58                     DECL_LINK( ChangedHdl, EditBox* );
59 
60 protected:
61 
62     virtual long    PreNotify( NotifyEvent& rNEvt );
63     virtual void    SelectionChanged();
64     virtual void    Resize();
65     virtual void    GetFocus();
66 
67 
68 public:
69                     EditBox( Window* pParent,
70                                 WinBits nWinStyle = WB_LEFT | WB_BORDER );
71                     EditBox( Window* pParent, const ResId& rResId );
72 
73                     virtual ~EditBox();
74 
GetEdit()75     MultiLineEdit*  GetEdit() {return pMEdit;}
76 
SetSelChangedHdl(const Link & rLink)77     void            SetSelChangedHdl( const Link& rLink ) { aSelChangedLink = rLink; }
GetSelChangedHdl() const78     const Link&     GetSelChangedHdl() const { return aSelChangedLink; }
79 
80     void            UpdateOldSel();
81 };
82 
83 //============================================================================
84 // class ArgEdit
85 
86 class ArgEdit : public RefEdit
87 {
88 public:
89             ArgEdit( Window* pParent, const ResId& rResId );
90 
91     void    Init( ArgEdit* pPrevEdit, ArgEdit* pNextEdit,
92                   ScrollBar& rArgSlider, sal_uInt16 nArgCount );
93 
94 protected:
95     virtual void    KeyInput( const KeyEvent& rKEvt );
96 
97 private:
98     ArgEdit*    pEdPrev;
99     ArgEdit*    pEdNext;
100     ScrollBar*  pSlider;
101     sal_uInt16      nArgs;
102 };
103 
104 
105 //============================================================================
106 // class ArgInput
107 
108 class ArgInput
109 {
110 private:
111 
112     Link            aFxClickLink;
113     Link            aRefClickLink;
114     Link            aFxFocusLink;
115     Link            aRefFocusLink;
116     Link            aEdFocusLink;
117     Link            aEdModifyLink;
118 
119     FixedText*      pFtArg;
120     ImageButton*    pBtnFx;
121     ArgEdit*        pEdArg;
122     RefButton*  pRefBtn;
123 
124     DECL_LINK(  FxBtnClickHdl, ImageButton* );
125     DECL_LINK(  RefBtnClickHdl,RefButton* );
126     DECL_LINK(  FxBtnFocusHdl, ImageButton* );
127     DECL_LINK(  RefBtnFocusHdl,RefButton* );
128     DECL_LINK(  EdFocusHdl, ArgEdit* );
129     DECL_LINK(  EdModifyHdl,ArgEdit* );
130 
131 protected:
132 
133     virtual void    FxClick();
134     virtual void    RefClick();
135     virtual void    FxFocus();
136     virtual void    RefFocus();
137     virtual void    EdFocus();
138     virtual void    EdModify();
139 
140 public:
141 
142     ArgInput();
143 
144     void        InitArgInput (  FixedText*      pftArg,
145                                 ImageButton*    pbtnFx,
146                                 ArgEdit*        pedArg,
147                                 RefButton*  prefBtn);
148 
149     void        SetArgName(const String &aArg);
150     String      GetArgName();
151     void        SetArgNameFont(const Font&);
152 
153     void        SetArgVal(const String &aVal);
154     String      GetArgVal();
155 
156     void        SetArgSelection (const Selection& rSel );
157     void        ReplaceSelOfArg (const String& rStr );
158 
159     Selection   GetArgSelection();
160 
161 
GetArgEdPtr()162     ArgEdit*    GetArgEdPtr() {return pEdArg;}
163 
164 
SetFxClickHdl(const Link & rLink)165     void            SetFxClickHdl( const Link& rLink ) { aFxClickLink = rLink; }
GetFxClickHdl() const166     const Link&     GetFxClickHdl() const { return aFxClickLink; }
167 
SetRefClickHdl(const Link & rLink)168     void            SetRefClickHdl( const Link& rLink ) { aRefClickLink = rLink; }
GetRefClickHdl() const169     const Link&     GetRefClickHdl() const { return aRefClickLink; }
170 
SetFxFocusHdl(const Link & rLink)171     void            SetFxFocusHdl( const Link& rLink ) { aFxFocusLink = rLink; }
GetFxFocusHdl() const172     const Link&     GetFxFocusHdl() const { return aFxFocusLink; }
173 
SetRefFocusHdl(const Link & rLink)174     void            SetRefFocusHdl( const Link& rLink ) { aRefFocusLink = rLink; }
GetRefFocusHdl() const175     const Link&     GetRefFocusHdl() const { return aRefFocusLink; }
176 
SetEdFocusHdl(const Link & rLink)177     void            SetEdFocusHdl( const Link& rLink ) { aEdFocusLink = rLink; }
GetEdFocusHdl() const178     const Link&     GetEdFocusHdl() const { return aEdFocusLink; }
179 
SetEdModifyHdl(const Link & rLink)180     void            SetEdModifyHdl( const Link& rLink ) { aEdModifyLink = rLink; }
GetEdModifyHdl() const181     const Link&     GetEdModifyHdl() const { return aEdModifyLink; }
182 
183     void Hide();
184     void Show();
185 
186     void UpdateAccessibleNames();
187 };
188 
189 }
190 #endif // FORMULA_FORMULA_HELPER_HXX_INCLUDED
191