|  | /************************************************************** | 
|  | * | 
|  | * Licensed to the Apache Software Foundation (ASF) under one | 
|  | * or more contributor license agreements.  See the NOTICE file | 
|  | * distributed with this work for additional information | 
|  | * regarding copyright ownership.  The ASF licenses this file | 
|  | * to you under the Apache License, Version 2.0 (the | 
|  | * "License"); you may not use this file except in compliance | 
|  | * with the License.  You may obtain a copy of the License at | 
|  | * | 
|  | *   http://www.apache.org/licenses/LICENSE-2.0 | 
|  | * | 
|  | * Unless required by applicable law or agreed to in writing, | 
|  | * software distributed under the License is distributed on an | 
|  | * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY | 
|  | * KIND, either express or implied.  See the License for the | 
|  | * specific language governing permissions and limitations | 
|  | * under the License. | 
|  | * | 
|  | *************************************************************/ | 
|  |  | 
|  |  | 
|  |  | 
|  | #ifndef _SVX_THESDLG_IMPL_HXX | 
|  | #define _SVX_THESDLG_IMPL_HXX | 
|  |  | 
|  | #include "thesdlg.hxx" | 
|  |  | 
|  | #include <svtools/ehdl.hxx> | 
|  | #include <svx/checklbx.hxx> | 
|  | #include <vcl/button.hxx> | 
|  | #include <vcl/combobox.hxx> | 
|  | #include <vcl/edit.hxx> | 
|  | #include <vcl/fixed.hxx> | 
|  | #include <vcl/image.hxx> | 
|  | #include <vcl/lstbox.hxx> | 
|  | #include <vcl/menubtn.hxx> | 
|  | #include <vcl/msgbox.hxx> | 
|  | #include <vcl/svapp.hxx> | 
|  | #include <vcl/timer.hxx> | 
|  | #include <vcl/wrkwin.hxx> | 
|  |  | 
|  | #include <com/sun/star/linguistic2/XThesaurus.hpp> | 
|  | #include <com/sun/star/linguistic2/XMeaning.hpp> | 
|  |  | 
|  | #include <stack> | 
|  | #include <map> | 
|  | #include <algorithm> | 
|  |  | 
|  | using namespace ::com::sun::star; | 
|  | using ::rtl::OUString; | 
|  |  | 
|  | class SvLBoxEntry; | 
|  | class ThesaurusAlternativesCtrl_Impl; | 
|  |  | 
|  |  | 
|  | // class LookUpComboBox_Impl -------------------------------------------------- | 
|  |  | 
|  | class LookUpComboBox_Impl : public ComboBox | 
|  | { | 
|  | Timer                       m_aModifyTimer; | 
|  | Selection                   m_aSelection; | 
|  | Button *                    m_pBtn; | 
|  | SvxThesaurusDialog_Impl &   m_rDialogImpl; | 
|  |  | 
|  | // disable copy c-tor and assignment operator | 
|  | LookUpComboBox_Impl( const LookUpComboBox_Impl & ); | 
|  | LookUpComboBox_Impl & operator = ( const LookUpComboBox_Impl & ); | 
|  |  | 
|  | public: | 
|  | LookUpComboBox_Impl( Window *pParent, const ResId &rResId, SvxThesaurusDialog_Impl &rImpl ); | 
|  | virtual ~LookUpComboBox_Impl(); | 
|  |  | 
|  | DECL_LINK( ModifyTimer_Hdl, Timer * ); | 
|  |  | 
|  | void SetButton( Button *pBtn )  { m_pBtn = pBtn; } | 
|  |  | 
|  | // ComboBox | 
|  | virtual void        Modify(); | 
|  | }; | 
|  |  | 
|  | // class ReplaceEdit_Impl -------------------------------------------------- | 
|  |  | 
|  | class ReplaceEdit_Impl : public Edit | 
|  | { | 
|  | Button *                    m_pBtn; | 
|  |  | 
|  | // disable copy c-tor and assignment operator | 
|  | ReplaceEdit_Impl( const ReplaceEdit_Impl & ); | 
|  | ReplaceEdit_Impl & operator = ( const ReplaceEdit_Impl & ); | 
|  |  | 
|  | public: | 
|  | ReplaceEdit_Impl( Window *pParent, const ResId &rResId ); | 
|  | virtual ~ReplaceEdit_Impl(); | 
|  |  | 
|  | void SetButton( Button *pBtn )  { m_pBtn = pBtn; } | 
|  |  | 
|  | // Edit | 
|  | virtual void        Modify(); | 
|  | virtual void        SetText( const XubString& rStr ); | 
|  | virtual void        SetText( const XubString& rStr, const Selection& rNewSelection ); | 
|  | }; | 
|  |  | 
|  | // class ThesaurusAlternativesCtrl_Impl ---------------------------------- | 
|  |  | 
|  | class AlternativesExtraData | 
|  | { | 
|  | String	sText; | 
|  | bool    bHeader; | 
|  |  | 
|  | public: | 
|  | AlternativesExtraData() : bHeader( false ) {} | 
|  | AlternativesExtraData( const String &rText, bool bIsHeader ) : | 
|  | sText(rText), | 
|  | bHeader(bIsHeader) | 
|  | { | 
|  | } | 
|  |  | 
|  | bool  IsHeader() const          { return bHeader; } | 
|  | const String& GetText() const   { return sText; } | 
|  | }; | 
|  |  | 
|  |  | 
|  | class AlternativesString_Impl : public SvLBoxString | 
|  | { | 
|  | ThesaurusAlternativesCtrl_Impl &    m_rControlImpl; | 
|  | public: | 
|  |  | 
|  | AlternativesString_Impl( ThesaurusAlternativesCtrl_Impl &rControl, | 
|  | SvLBoxEntry* pEntry, sal_uInt16 nFlags, const String& rStr ); | 
|  |  | 
|  | virtual void Paint( const Point& rPos, SvLBox& rDev, sal_uInt16 nFlags, SvLBoxEntry* pEntry); | 
|  | }; | 
|  |  | 
|  |  | 
|  | class ThesaurusAlternativesCtrl_Impl : | 
|  | public SvxCheckListBox | 
|  | { | 
|  | SvxThesaurusDialog_Impl &   m_rDialogImpl; | 
|  |  | 
|  | typedef std::map< const SvLBoxEntry *, AlternativesExtraData >  UserDataMap_t; | 
|  | UserDataMap_t           m_aUserData; | 
|  |  | 
|  | // disable copy c-tor and assignment operator | 
|  | ThesaurusAlternativesCtrl_Impl( const ThesaurusAlternativesCtrl_Impl & ); | 
|  | ThesaurusAlternativesCtrl_Impl & operator = ( const ThesaurusAlternativesCtrl_Impl & ); | 
|  |  | 
|  | public: | 
|  | ThesaurusAlternativesCtrl_Impl( Window* pParent, SvxThesaurusDialog_Impl &rImpl ); | 
|  | virtual ~ThesaurusAlternativesCtrl_Impl(); | 
|  |  | 
|  |  | 
|  | SvLBoxEntry *   AddEntry( sal_Int32 nVal, const String &rText, bool bIsHeader ); | 
|  |  | 
|  | void            ClearExtraData(); | 
|  | void            SetExtraData( const SvLBoxEntry *pEntry, const AlternativesExtraData &rData ); | 
|  | AlternativesExtraData * GetExtraData( const SvLBoxEntry *pEntry ); | 
|  |  | 
|  | virtual void    KeyInput( const KeyEvent& rKEvt ); | 
|  | virtual void    Paint( const Rectangle& rRect ); | 
|  | }; | 
|  |  | 
|  |  | 
|  | // struct SvxThesaurusDialog_Impl ---------------------------------------- | 
|  |  | 
|  | struct SvxThesaurusDialog_Impl | 
|  | { | 
|  | SvxThesaurusDialog *    m_pDialog; | 
|  |  | 
|  | FixedImage              aVendorImageFI; | 
|  | ImageButton             aLeftBtn; | 
|  | FixedText               aWordText; | 
|  | LookUpComboBox_Impl     aWordCB; | 
|  | FixedText               m_aAlternativesText; | 
|  | boost::shared_ptr< ThesaurusAlternativesCtrl_Impl > m_pAlternativesCT; | 
|  | FixedText               aReplaceText; | 
|  | ReplaceEdit_Impl        aReplaceEdit; | 
|  | FixedLine               aFL; | 
|  | HelpButton              aHelpBtn; | 
|  | MenuButton              aLangMBtn; | 
|  | OKButton                aReplaceBtn; | 
|  | CancelButton            aCancelBtn; | 
|  |  | 
|  | String			aErrStr; | 
|  | Image           aVendorDefaultImage; | 
|  | Image           aVendorDefaultImageHC; | 
|  |  | 
|  | uno::Reference< linguistic2::XThesaurus >	xThesaurus; | 
|  | OUString                aLookUpText; | 
|  | LanguageType            nLookUpLanguage; | 
|  | std::stack< OUString >  aLookUpHistory; | 
|  | bool                    m_bWordFound; | 
|  |  | 
|  |  | 
|  | // Handler | 
|  | DECL_LINK( LeftBtnHdl_Impl, Button * ); | 
|  | DECL_LINK( LanguageHdl_Impl, MenuButton * ); | 
|  | DECL_LINK( LookUpHdl_Impl, Button * ); | 
|  | DECL_LINK( WordSelectHdl_Impl, ComboBox * ); | 
|  | DECL_LINK( AlternativesSelectHdl_Impl, SvxCheckListBox * ); | 
|  | DECL_LINK( AlternativesDoubleClickHdl_Impl, SvxCheckListBox * ); | 
|  |  | 
|  | DECL_STATIC_LINK( SvxThesaurusDialog_Impl, SelectFirstHdl_Impl, SvxCheckListBox * ); | 
|  | DECL_STATIC_LINK( SvxThesaurusDialog_Impl, VendorImageInitHdl, SvxThesaurusDialog_Impl * ); | 
|  |  | 
|  |  | 
|  | SvxThesaurusDialog_Impl( SvxThesaurusDialog * pDialog ); | 
|  | ~SvxThesaurusDialog_Impl(); | 
|  |  | 
|  | uno::Sequence< uno::Reference< linguistic2::XMeaning > > SAL_CALL | 
|  | queryMeanings_Impl( ::rtl::OUString& rTerm, const lang::Locale& rLocale, const beans::PropertyValues& rProperties ) throw(lang::IllegalArgumentException, uno::RuntimeException); | 
|  |  | 
|  | bool    UpdateAlternativesBox_Impl(); | 
|  | void    UpdateVendorImage(); | 
|  | void    LookUp( const String &rText ); | 
|  | void    LookUp_Impl(); | 
|  | }; | 
|  |  | 
|  | #endif | 
|  |  |