blob: 7f41522287448f68f2d4623bc34a0dbe9df161fb [file] [log] [blame]
/**************************************************************
*
* 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