1b9e67834SAndre Fischer /************************************************************** 2b9e67834SAndre Fischer * 3b9e67834SAndre Fischer * Licensed to the Apache Software Foundation (ASF) under one 4b9e67834SAndre Fischer * or more contributor license agreements. See the NOTICE file 5b9e67834SAndre Fischer * distributed with this work for additional information 6b9e67834SAndre Fischer * regarding copyright ownership. The ASF licenses this file 7b9e67834SAndre Fischer * to you under the Apache License, Version 2.0 (the 8b9e67834SAndre Fischer * "License"); you may not use this file except in compliance 9b9e67834SAndre Fischer * with the License. You may obtain a copy of the License at 10b9e67834SAndre Fischer * 11b9e67834SAndre Fischer * http://www.apache.org/licenses/LICENSE-2.0 12b9e67834SAndre Fischer * 13b9e67834SAndre Fischer * Unless required by applicable law or agreed to in writing, 14b9e67834SAndre Fischer * software distributed under the License is distributed on an 15b9e67834SAndre Fischer * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16b9e67834SAndre Fischer * KIND, either express or implied. See the License for the 17b9e67834SAndre Fischer * specific language governing permissions and limitations 18b9e67834SAndre Fischer * under the License. 19b9e67834SAndre Fischer * 20b9e67834SAndre Fischer *************************************************************/ 21b9e67834SAndre Fischer 22b9e67834SAndre Fischer #ifndef SVX_SIDEBAR_TEXT_PROPERTY_PAGE_HXX 23b9e67834SAndre Fischer #define SVX_SIDEBAR_TEXT_PROPERTY_PAGE_HXX 24b9e67834SAndre Fischer 2595a18594SAndre Fischer #include <vcl/ctrl.hxx> 26b9e67834SAndre Fischer #include <sfx2/sidebar/SidebarPanelBase.hxx> 27b9e67834SAndre Fischer #include <sfx2/sidebar/ControllerItem.hxx> 28f120fe41SAndre Fischer #include <sfx2/sidebar/IContextChangeReceiver.hxx> 29b9e67834SAndre Fischer 30b9e67834SAndre Fischer #include <svtools/ctrlbox.hxx> 31b9e67834SAndre Fischer #include <svx/tbxcolorupdate.hxx> 32b9e67834SAndre Fischer #include <editeng/svxenum.hxx> 33b9e67834SAndre Fischer #include <editeng/fhgtitem.hxx> 34b9e67834SAndre Fischer 3537fee4fdSAndre Fischer //#include <com/sun/star/ui/XUIElement.hpp> 3637fee4fdSAndre Fischer #include <com/sun/star/ui/XSidebar.hpp> 37b9e67834SAndre Fischer 38b9e67834SAndre Fischer #include <boost/scoped_ptr.hpp> 39d4aefcaeSZheng Fan #include "TextCharacterSpacingPopup.hxx" 40d4aefcaeSZheng Fan #include "TextUnderlinePopup.hxx" 41facb16e7SArmin Le Grand #include <svx/sidebar/ColorPopup.hxx> 42d4aefcaeSZheng Fan #include <vcl/vclenum.hxx> 43b9e67834SAndre Fischer 4495a18594SAndre Fischer class FloatingWindow; 4595a18594SAndre Fischer class ToolBox; 4695a18594SAndre Fischer 47b9e67834SAndre Fischer namespace svx { namespace sidebar { 48b9e67834SAndre Fischer 49b9e67834SAndre Fischer class SvxSBFontNameBox; 50d4aefcaeSZheng Fan class PopupControl; 51d4aefcaeSZheng Fan class PopupContainer; 52b9e67834SAndre Fischer 53b9e67834SAndre Fischer class TextPropertyPanel 5495a18594SAndre Fischer : public Control, 55f120fe41SAndre Fischer public ::sfx2::sidebar::IContextChangeReceiver, 56b9e67834SAndre Fischer public ::sfx2::sidebar::ControllerItem::ItemUpdateReceiverInterface 57b9e67834SAndre Fischer { 58b9e67834SAndre Fischer public: 5995a18594SAndre Fischer static TextPropertyPanel* Create ( 60b9e67834SAndre Fischer Window* pParent, 61b9e67834SAndre Fischer const cssu::Reference<css::frame::XFrame>& rxFrame, 6237fee4fdSAndre Fischer SfxBindings* pBindings, 6337fee4fdSAndre Fischer const cssu::Reference<css::ui::XSidebar>& rxSidebar); 64b9e67834SAndre Fischer 65b9e67834SAndre Fischer virtual void DataChanged (const DataChangedEvent& rEvent); 66d4aefcaeSZheng Fan ::sfx2::sidebar::ControllerItem& GetSpaceController(); 67d4aefcaeSZheng Fan long GetSelFontSize(); 68d4aefcaeSZheng Fan void SetSpacing(long nKern); 69d4aefcaeSZheng Fan void EndSpacingPopupMode (void); 70d4aefcaeSZheng Fan void EndUnderlinePopupMode (void); 71d4aefcaeSZheng Fan void SetFontColor (const String& rsColorName,const Color aColor); 72d4aefcaeSZheng Fan void SetBrushColor (const String& rsColorName,const Color aColor); 73d4aefcaeSZheng Fan void SetUnderline(FontUnderline eUnderline); 74d4aefcaeSZheng Fan Color& GetUnderlineColor(); 75d4aefcaeSZheng Fan void SetDefaultUnderline(FontUnderline eUnderline); 76b9e67834SAndre Fischer 77b9e67834SAndre Fischer 78b9e67834SAndre Fischer enum ColorType 79b9e67834SAndre Fischer { 80b9e67834SAndre Fischer FONT_COLOR = 1, 81b9e67834SAndre Fischer BACK_COLOR = 2 82b9e67834SAndre Fischer }; 83b9e67834SAndre Fischer 84b9e67834SAndre Fischer virtual void HandleContextChange ( 85b9e67834SAndre Fischer const ::sfx2::sidebar::EnumContext aContext); 86b9e67834SAndre Fischer 87*45da7d5eSAndre Fischer 88*45da7d5eSAndre Fischer // ControllerItem::ItemUpdateReceiverInterface 89*45da7d5eSAndre Fischer 90b9e67834SAndre Fischer virtual void NotifyItemUpdate( 91b9e67834SAndre Fischer const sal_uInt16 nSId, 92b9e67834SAndre Fischer const SfxItemState eState, 93*45da7d5eSAndre Fischer const SfxPoolItem* pState, 94*45da7d5eSAndre Fischer const bool bIsEnabled); 95b9e67834SAndre Fischer 96b9e67834SAndre Fischer private: 97b9e67834SAndre Fischer //ui controls 98b9e67834SAndre Fischer ::boost::scoped_ptr<SvxSBFontNameBox> mpFontNameBox; 99b9e67834SAndre Fischer FontSizeBox maFontSizeBox; 1007a32b0c8SAndre Fischer ::boost::scoped_ptr<Window> mpToolBoxIncDecBackground; 101b9e67834SAndre Fischer ::boost::scoped_ptr<ToolBox> mpToolBoxIncDec; 1027a32b0c8SAndre Fischer ::boost::scoped_ptr<Window> mpToolBoxFontBackground; 103b9e67834SAndre Fischer ::boost::scoped_ptr<ToolBox> mpToolBoxFont; 1047a32b0c8SAndre Fischer ::boost::scoped_ptr<Window> mpToolBoxFontColorBackground; 105b9e67834SAndre Fischer ::boost::scoped_ptr<ToolBox> mpToolBoxFontColor; 1067a32b0c8SAndre Fischer ::boost::scoped_ptr<Window> mpToolBoxScriptBackground; 107b9e67834SAndre Fischer ::boost::scoped_ptr<ToolBox> mpToolBoxScript; 1087a32b0c8SAndre Fischer ::boost::scoped_ptr<Window> mpToolBoxScriptSwBackground; 109b9e67834SAndre Fischer ::boost::scoped_ptr<ToolBox> mpToolBoxScriptSw; 1107a32b0c8SAndre Fischer ::boost::scoped_ptr<Window> mpToolBoxSpacingBackground; 111b9e67834SAndre Fischer ::boost::scoped_ptr<ToolBox> mpToolBoxSpacing; 1127a32b0c8SAndre Fischer ::boost::scoped_ptr<Window> mpToolBoxHighlightBackground; 113b9e67834SAndre Fischer ::boost::scoped_ptr<ToolBox> mpToolBoxHighlight; 114b9e67834SAndre Fischer ::boost::scoped_ptr<ToolboxButtonColorUpdater> mpFontColorUpdater; 115b9e67834SAndre Fischer ::boost::scoped_ptr<ToolboxButtonColorUpdater> mpHighlightUpdater; 116b9e67834SAndre Fischer 117b9e67834SAndre Fischer //control items 118b9e67834SAndre Fischer ::sfx2::sidebar::ControllerItem maFontNameControl; 119b9e67834SAndre Fischer ::sfx2::sidebar::ControllerItem maFontSizeControl; 120b9e67834SAndre Fischer ::sfx2::sidebar::ControllerItem maWeightControl; 121b9e67834SAndre Fischer ::sfx2::sidebar::ControllerItem maItalicControl; 122b9e67834SAndre Fischer ::sfx2::sidebar::ControllerItem maUnderlineControl; 123b9e67834SAndre Fischer ::sfx2::sidebar::ControllerItem maStrikeControl; 124b9e67834SAndre Fischer ::sfx2::sidebar::ControllerItem maShadowControl; 125b9e67834SAndre Fischer ::sfx2::sidebar::ControllerItem maFontColorControl; 126b9e67834SAndre Fischer ::sfx2::sidebar::ControllerItem maScriptControlSw; 127b9e67834SAndre Fischer ::sfx2::sidebar::ControllerItem maSuperScriptControl; 128b9e67834SAndre Fischer ::sfx2::sidebar::ControllerItem maSubScriptControl; 129b9e67834SAndre Fischer ::sfx2::sidebar::ControllerItem maSpacingControl; 130b9e67834SAndre Fischer ::sfx2::sidebar::ControllerItem maHighlightControl; 131b9e67834SAndre Fischer ::sfx2::sidebar::ControllerItem maSDFontGrow; 132b9e67834SAndre Fischer ::sfx2::sidebar::ControllerItem maSDFontShrink; 133b9e67834SAndre Fischer 134b9e67834SAndre Fischer FontWeight meWeight; 135b9e67834SAndre Fischer FontItalic meItalic; 136b9e67834SAndre Fischer FontUnderline meUnderline; 137b9e67834SAndre Fischer Color meUnderlineColor; // 138b9e67834SAndre Fischer bool mbShadow; 139b9e67834SAndre Fischer FontStrikeout meStrike; 140b9e67834SAndre Fischer bool mbWeightAvailable; 141b9e67834SAndre Fischer bool mbPostureAvailable; 142b9e67834SAndre Fischer Color maColor; 143b9e67834SAndre Fischer bool mbColorAvailable; 144b9e67834SAndre Fischer Color maBackColor; 145b9e67834SAndre Fischer bool mbBackColorAvailable; 146b9e67834SAndre Fischer ColorType meColorType; 147b9e67834SAndre Fischer SvxEscapement meEscape; //for sw 148b9e67834SAndre Fischer bool mbSuper; 149b9e67834SAndre Fischer bool mbSub; 150b9e67834SAndre Fischer bool mbKernAvailable; 151b9e67834SAndre Fischer bool mbKernLBAvailable; 152b9e67834SAndre Fischer long mlKerning; 153b9e67834SAndre Fischer SvxFontHeightItem* mpHeightItem; 154b9e67834SAndre Fischer 155b9e67834SAndre Fischer const FontList* mpFontList; 156b9e67834SAndre Fischer bool mbMustDelete; 157b9e67834SAndre Fischer bool mbFocusOnFontSizeCtrl; 158d4aefcaeSZheng Fan TextCharacterSpacingPopup maCharSpacePopup; 159d4aefcaeSZheng Fan TextUnderlinePopup maUnderlinePopup; 160d4aefcaeSZheng Fan ColorPopup maFontColorPopup; 161d4aefcaeSZheng Fan ColorPopup maBrushColorPopup; 162b9e67834SAndre Fischer 16395a18594SAndre Fischer cssu::Reference<css::frame::XFrame> mxFrame; 164b9e67834SAndre Fischer ::sfx2::sidebar::EnumContext maContext; 165b9e67834SAndre Fischer SfxBindings* mpBindings; 16637fee4fdSAndre Fischer cssu::Reference<css::ui::XSidebar> mxSidebar; 167b9e67834SAndre Fischer 168b9e67834SAndre Fischer TextPropertyPanel ( 169b9e67834SAndre Fischer Window* pParent, 170b9e67834SAndre Fischer const cssu::Reference<css::frame::XFrame>& rxFrame, 17137fee4fdSAndre Fischer SfxBindings* pBindings, 17237fee4fdSAndre Fischer const cssu::Reference<css::ui::XSidebar>& rxSidebar); 173b9e67834SAndre Fischer virtual ~TextPropertyPanel (void); 174b9e67834SAndre Fischer 175d4aefcaeSZheng Fan 176d4aefcaeSZheng Fan PopupControl* CreateCharacterSpacingControl (PopupContainer* pParent); 177d4aefcaeSZheng Fan PopupControl* CreateFontColorPopupControl (PopupContainer* pParent); 178d4aefcaeSZheng Fan PopupControl* CreateBrushColorPopupControl (PopupContainer* pParent); 179d4aefcaeSZheng Fan PopupControl* CreateUnderlinePopupControl (PopupContainer* pParent); 180d4aefcaeSZheng Fan DECL_LINK(SpacingClickHdl, ToolBox*); 181d4aefcaeSZheng Fan DECL_LINK(ToolBoxFontColorDropHdl, ToolBox *); //for new color picker 182d4aefcaeSZheng Fan DECL_LINK(ToolBoxHighlightDropHdl, ToolBox *); 183d4aefcaeSZheng Fan DECL_LINK(ToolBoxUnderlineClickHdl, ToolBox* ); 184d4aefcaeSZheng Fan 185b9e67834SAndre Fischer void Initialize (void); 186*45da7d5eSAndre Fischer void SetupToolboxItems (void); 187b9e67834SAndre Fischer void InitToolBoxFont(); 188b9e67834SAndre Fischer void InitToolBoxIncDec(); 189b9e67834SAndre Fischer void InitToolBoxFontColor(); 190b9e67834SAndre Fischer void InitToolBoxScript(); 191b9e67834SAndre Fischer void InitToolBoxHighlight(); 192b9e67834SAndre Fischer void InitToolBoxSpacing(); 193b9e67834SAndre Fischer 194b9e67834SAndre Fischer DECL_LINK(FontSelHdl, FontNameBox *); 195b9e67834SAndre Fischer DECL_LINK(FontSizeModifyHdl, FontSizeBox *); 196b9e67834SAndre Fischer DECL_LINK(FontSizeSelHdl, FontSizeBox *); 197b9e67834SAndre Fischer DECL_LINK(FontSizeLoseFocus, FontSizeBox *); 198b9e67834SAndre Fischer DECL_LINK(ToolboxFontSelectHandler, ToolBox *); 199b9e67834SAndre Fischer DECL_LINK(ToolboxIncDecSelectHdl, ToolBox *); 200b9e67834SAndre Fischer DECL_LINK(ImplPopupModeEndHdl, FloatingWindow* ); 201b9e67834SAndre Fischer DECL_LINK(ToolBoxSwScriptSelectHdl, ToolBox *); 202b9e67834SAndre Fischer DECL_LINK(ToolBoxScriptSelectHdl, ToolBox *); 203d4aefcaeSZheng Fan 204*45da7d5eSAndre Fischer void UpdateItem (const sal_uInt16 nSlotId); 205b9e67834SAndre Fischer }; 206b9e67834SAndre Fischer 207b9e67834SAndre Fischer } } // end of namespace ::svx::sidebar 208b9e67834SAndre Fischer 209b9e67834SAndre Fischer #endif 210