blob: 335d96a7d780e3681e8f5000efc3be9de8a76f9a [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_SIDEBAR_PARA_PROPERTY_PANEL_HXX
#define SVX_SIDEBAR_PARA_PROPERTY_PANEL_HXX
#include <vcl/ctrl.hxx>
#include <sfx2/sidebar/ControllerItem.hxx>
#include <sfx2/sidebar/IContextChangeReceiver.hxx>
#include <sfx2/sidebar/GridLayouter.hxx>
#include <editeng/lspcitem.hxx>
#include <svtools/ctrlbox.hxx>
#include <svx/tbxcolorupdate.hxx>
#include <svx/relfld.hxx>
#include <editeng/svxenum.hxx>
#include <editeng/fhgtitem.hxx>
#include <com/sun/star/frame/XFrame.hpp>
#include <com/sun/star/ui/XSidebar.hpp>
#include <boost/scoped_ptr.hpp>
#include <svx/sidebar/ColorPopup.hxx>
#include <vcl/vclenum.hxx>
#include <vcl/fixed.hxx>
#include <svl/poolitem.hxx>
#include <tools/fldunit.hxx>
#include "ParaBulletsPopup.hxx"
#include "ParaNumberingPopup.hxx"
#include "ParaLineSpacingPopup.hxx"
class FloatingWindow;
class ToolBox;
namespace css = ::com::sun::star;
namespace cssu = ::com::sun::star::uno;
namespace svx { namespace sidebar {
class PopupControl;
class PopupContainer;
class ParaPropertyPanel
: public Control,
public ::sfx2::sidebar::IContextChangeReceiver,
public ::sfx2::sidebar::ControllerItem::ItemUpdateReceiverInterface
{
public:
static ParaPropertyPanel* Create (
Window* pParent,
const cssu::Reference<css::frame::XFrame>& rxFrame,
SfxBindings* pBindings,
const cssu::Reference<css::ui::XSidebar>& rxSidebar);
virtual void DataChanged (const DataChangedEvent& rEvent);
SfxBindings* GetBindings();
virtual void HandleContextChange (
const ::sfx2::sidebar::EnumContext aContext);
virtual void NotifyItemUpdate(
const sal_uInt16 nSId,
const SfxItemState eState,
const SfxPoolItem* pState,
const bool bIsEnabled);
void ShowMenu (void);
sal_uInt16 GetBulletTypeIndex(){ return mnBulletTypeIndex; }
sal_uInt16 GetNumTypeIndex(){ return mnNumTypeIndex; }
FieldUnit GetCurrentUnit( SfxItemState eState, const SfxPoolItem* pState );
void EndSpacingPopupMode (void);
void EndBulletsPopupMode (void);
void EndNumberingPopupMode (void);
private:
/**********************************************************
**
** UI controls
**
***********************************************************/
//Alignment
::boost::scoped_ptr<Window> mpAlignToolBoxBackground;
::boost::scoped_ptr<ToolBox> mpAlignToolBox;
::boost::scoped_ptr<Window> mpTBxVertAlignBackground;
::boost::scoped_ptr<ToolBox> mpTBxVertAlign;
//NumBullet&Backcolor
::boost::scoped_ptr<Window> mpTBxNumBulletBackground;
::boost::scoped_ptr<ToolBox> mpTBxNumBullet;
::boost::scoped_ptr<Window> mpTBxBackColorBackground;
::boost::scoped_ptr<ToolBox> mpTBxBackColor;
//Paragraph spacing
::boost::scoped_ptr<FixedText> mpFTUL;
::boost::scoped_ptr<Window> mpTbxUL_IncDecBackground;
::boost::scoped_ptr<ToolBox> mpTbxUL_IncDec;
::boost::scoped_ptr<SvxRelativeField> mpTopDist;
::boost::scoped_ptr<SvxRelativeField> mpBottomDist;
::boost::scoped_ptr<Window> mpLineSPTbxBackground;
::boost::scoped_ptr<ToolBox> mpLineSPTbx;
::boost::scoped_ptr<FixedText> mpFTIndent;
::boost::scoped_ptr<Window> mpTbxIndent_IncDecBackground;
::boost::scoped_ptr<ToolBox> mpTbxIndent_IncDec;
::boost::scoped_ptr<Window> mpTbxProDemoteBackground;
::boost::scoped_ptr<ToolBox> mpTbxProDemote;
::boost::scoped_ptr<SvxRelativeField> mpLeftIndent;
::boost::scoped_ptr<SvxRelativeField> mpRightIndent;
::boost::scoped_ptr<SvxRelativeField> mpFLineIndent;
::boost::scoped_ptr< ::svx::ToolboxButtonColorUpdater > mpColorUpdater;
/**********************************************************
**
** Resources
**
***********************************************************/
FixedImage maFISpace1;
FixedImage maFISpace2;
FixedImage maFIndent1;
FixedImage maFIndent2;
FixedImage maFIndent3;
Image maSpace1;
Image maSpace2;
Image maSpace3;
Image maIndent1;
Image maIndent2;
Image maIndent3;
Image maIndHang;
ImageList maNumBImageList;
ImageList maNumBImageListH;
ImageList maNumBImageListRTL;
Image maImgBackColorHigh;
Image maImgBackColor;
/****************************************************************
**
** Data Member
**
*****************************************************************/
long maTxtLeft;
//Line spacing
SvxLineSpacingItem *mpLnSPItem;
SfxItemState meLnSpState;
bool mbOutLineLeft;
bool mbOutLineRight;
long maUpper;
long maLower;
sal_uInt16 mnBulletTypeIndex;
sal_uInt16 mnNumTypeIndex;
Color maColor;
bool mbColorAvailable;
FieldUnit m_eMetricUnit;
FieldUnit m_last_eMetricUnit;
SfxMapUnit m_eLRSpaceUnit;
SfxMapUnit m_eULSpaceUnit;
/****************************************************************
**
** Controll Items
**
*****************************************************************/
::sfx2::sidebar::ControllerItem maLeftAlignControl;
::sfx2::sidebar::ControllerItem maCenterAlignControl;
::sfx2::sidebar::ControllerItem maRightAlignControl;
::sfx2::sidebar::ControllerItem maJustifyAlignControl;
::sfx2::sidebar::ControllerItem maLRSpaceControl;
::sfx2::sidebar::ControllerItem maLNSpaceControl;
::sfx2::sidebar::ControllerItem maULSpaceControl;
::sfx2::sidebar::ControllerItem maOutLineLeftControl;
::sfx2::sidebar::ControllerItem maOutLineRightControl;
::sfx2::sidebar::ControllerItem maDecIndentControl;
::sfx2::sidebar::ControllerItem maIncIndentControl;
::sfx2::sidebar::ControllerItem maVertTop;
::sfx2::sidebar::ControllerItem maVertCenter;
::sfx2::sidebar::ControllerItem maVertBottom;
::sfx2::sidebar::ControllerItem maBulletOnOff;
::sfx2::sidebar::ControllerItem maNumberOnOff;
::sfx2::sidebar::ControllerItem maBackColorControl;
::sfx2::sidebar::ControllerItem m_aMetricCtl;
::sfx2::sidebar::ControllerItem maBulletNumRuleIndex;
::sfx2::sidebar::ControllerItem maNumNumRuleIndex;
cssu::Reference<css::frame::XFrame> mxFrame;
::sfx2::sidebar::EnumContext maContext;
SfxBindings* mpBindings;
ParaLineSpacingPopup maLineSpacePopup;
ParaBulletsPopup maBulletsPopup;
ParaNumberingPopup maNumberingPopup;
ColorPopup maBGColorPopup;
cssu::Reference<css::ui::XSidebar> mxSidebar;
::sfx2::sidebar::GridLayouter maLayouter;
ParaPropertyPanel (
Window* pParent,
const cssu::Reference<css::frame::XFrame>& rxFrame,
SfxBindings* pBindings,
const cssu::Reference<css::ui::XSidebar>& rxSidebar);
virtual ~ParaPropertyPanel (void);
void InitImageList(::boost::scoped_ptr<ToolBox>& rTbx, ImageList& rImglst, ImageList& rImgHlst);
DECL_LINK(AlignStyleModifyHdl_Impl, ToolBox*);
DECL_LINK(VertTbxSelectHandler, ToolBox*);
DECL_LINK(NumBTbxSelectHandler, ToolBox*);
DECL_LINK(ModifyIndentHdl_Impl, SvxRelativeField*);
DECL_LINK(ClickIndent_IncDec_Hdl_Impl, ToolBox*);
DECL_LINK(ClickProDemote_Hdl_Impl, ToolBox*);
DECL_LINK(ULSpaceHdl_Impl, SvxRelativeField*);
DECL_LINK(ClickUL_IncDec_Hdl_Impl, ToolBox*);
DECL_LINK(ImplPopupModeEndHdl, FloatingWindow* );
void VertStateChanged(sal_uInt16 nSID, SfxItemState eState, const SfxPoolItem* pState);
void ParaBKGStateChanged(sal_uInt16 nSID, SfxItemState eState, const SfxPoolItem* pState);
void StateChangedAlignmentImpl( sal_uInt16 nSID, SfxItemState eState, const SfxPoolItem* pState );
void StateChangedIndentImpl( sal_uInt16 nSID, SfxItemState eState, const SfxPoolItem* pState );
void StateChangedLnSPImpl( sal_uInt16 nSID, SfxItemState eState, const SfxPoolItem* pState );
void StateChangedULImpl( sal_uInt16 nSID, SfxItemState eState, const SfxPoolItem* pState );
void StateChangeOutLineImpl( sal_uInt16 nSID, SfxItemState eState, const SfxPoolItem* pState );
void StateChangeIncDecImpl( sal_uInt16 nSID, SfxItemState eState, const SfxPoolItem* pState );
// Add toggle state for numbering and bullet icons
void StateChangeBulletNumImpl( sal_uInt16 nSID, SfxItemState eState, const SfxPoolItem* pState );
//Modified for Numbering&Bullets Dialog UX Enh
//Handing the transferred the num rule index data of the current selection
void StateChangeBulletNumRuleImpl( sal_uInt16 nSID, SfxItemState eState, const SfxPoolItem* pState );
void initial();
void ReSize(bool bSize);
// Inherited from vcl Window.
virtual void Resize (void);
PopupControl* CreateLineSpacingControl (PopupContainer* pParent);
PopupControl* CreateBulletsPopupControl (PopupContainer* pParent);
PopupControl* CreateNumberingPopupControl (PopupContainer* pParent);
PopupControl* CreateBGColorPopupControl (PopupContainer* pParent);
DECL_LINK(ClickLineSPDropDownHdl_Impl, ToolBox*);
DECL_LINK(NumBTbxDDHandler, ToolBox*);
DECL_LINK(ToolBoxBackColorDDHandler, ToolBox *);
void InitToolBoxAlign();
void InitToolBoxVertAlign();
void InitToolBoxIndent();
void InitToolBoxBGColor();
void InitToolBoxBulletsNumbering();
void InitToolBoxSpacing();
void InitToolBoxLineSpacing();
void SetBGColor (const String& rsColorName, const Color aColor);
};
} } // end of namespace ::svx::sidebar
#endif