xref: /trunk/main/cui/source/dialogs/commonlingui.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 
28 #ifndef SVX_COMMON_LINGUI_HXX
29 #define SVX_COMMON_LINGUI_HXX
30 
31 #include <vcl/ctrl.hxx>
32 #include <svtools/stdctrl.hxx>
33 #include <vcl/edit.hxx>
34 #include <svtools/svxbox.hxx>
35 #ifndef _SV_BUTTON_HXX
36 #include <vcl/button.hxx>
37 #endif
38 #include <vcl/group.hxx>
39 #include <vcl/dialog.hxx>
40 
41 //=============================================================================
42 // SvxClickInfoCtr
43 //=============================================================================
44 
45 class SvxClickInfoCtr: public Control
46 {
47 private:
48     FixedInfo                   aFixedInfo;
49     Link                        aActivateLink;
50 
51 public:
52     SvxClickInfoCtr( Window* pParent, const ResId& rResId );
53     ~SvxClickInfoCtr();
54 
55     virtual void        SetText( const XubString& rStr );
56     virtual XubString   GetText() const;
57 
58     void                SetActivateHdl( const Link& rLink ) { aActivateLink = rLink; }
59     const Link&         GetActivateHdl() const { return aActivateLink; }
60 
61 protected:
62     virtual void        MouseButtonDown( const MouseEvent& rMEvt );
63     virtual long        PreNotify( NotifyEvent& rNEvt );
64 
65 };
66 
67 //=============================================================================
68 // SvxCommonLinguisticControl
69 //=============================================================================
70 class SvxCommonLinguisticControl : public Window
71 {
72 public:
73     enum ButtonType
74     {
75         eClose,
76         eIgnore,
77         eIgnoreAll,
78         eChange,
79         eChangeAll,
80         eOptions
81     };
82 
83 protected:
84     FixedText       aWordText;
85     SvxClickInfoCtr aAktWord;
86 
87     FixedText       aNewWord;
88     Edit            aNewWordED;
89 
90     FixedText       aSuggestionFT;
91 
92     PushButton      aIgnoreBtn;
93     PushButton      aIgnoreAllBtn;
94     PushButton      aChangeBtn;
95     PushButton      aChangeAllBtn;
96     PushButton      aOptionsBtn;
97 
98     FixedInfo       aStatusText;
99     HelpButton      aHelpBtn;
100     CancelButton    aCancelBtn;
101 
102     GroupBox        aAuditBox;
103 
104 protected:
105     virtual void    Paint( const Rectangle& rRect );
106 
107 private:
108     PushButton* implGetButton( ButtonType _eType  ) const;
109 
110 public:
111     SvxCommonLinguisticControl( ModalDialog* _pParent );
112 
113     // handlers
114     inline void         SetResetWordHdl( const Link& _rLink )   { aAktWord.SetActivateHdl( _rLink ); }
115     inline const Link&  GetResetWordHdl() const                 { return aAktWord.GetActivateHdl(); }
116 
117     void    SetButtonHandler( ButtonType _eType, const Link& _rHandler );
118     void    EnableButton( ButtonType _eType, sal_Bool _bEnable );
119 
120     inline  PushButton*         GetButton( ButtonType _eType )          { return implGetButton( _eType  ); }
121     inline  const PushButton*   GetButton( ButtonType _eType ) const    { return implGetButton( _eType  ); }
122 
123     // users of this class may want to insert own controls in some places, where the ordinary
124     // Z-Order determined by construction time is not sufficient
125     // Use the following methods for this
126     enum ControlGroup // control groups in this window which cannot be devided (e.g. are adjacent in the Z order)
127     {
128         eLeftRightWords,    // the controls for the two words (original and suggestion), including the labels
129         eSuggestionLabel,   // the label for the suggestion
130         eActionButtons,     // the group of "ignore(all)" / "change(all)" buttons
131         eDialogButtons      // the group of dialog control buttons (help and close)
132     };
133     void    InsertControlGroup( Window& _rFirstGroupWindow, Window& _rLastGroupWindow, ControlGroup _eInsertAfter );
134 
135     /** enlarges the window
136 
137         Some controls "stick" to the borders: The group of change/ignore buttons, for instance, sticks
138         to the right, the dictionary list as well as the close/help buttons stick to the bottom of the
139         window.
140     */
141     void    Enlarge( sal_Int32 _nX, sal_Int32 _nY );
142 
143     // control access methods
144     inline void     SetCurrentText( const String& _rText )  { aAktWord.SetText( _rText ); }
145     inline String   GetCurrentText( ) const                 { return aAktWord.GetText(); }
146 
147     inline void     SetStatusText( const String& _rText )   { aStatusText.SetText( _rText ); }
148     inline String   GetStatusText( ) const                  { return aStatusText.GetText(); }
149 
150     inline Edit&        GetWordInputControl()           { return aNewWordED; }
151     inline const Edit&  GetWordInputControl() const { return aNewWordED; }
152 
153     // returns the location (upper-left corner) of the group of action buttons
154     inline Point    GetActionButtonsLocation( ) const { return aIgnoreBtn.GetPosPixel(); }
155 };
156 
157 
158 
159 #endif // SVX_COMMON_LINGUI_HXX
160