blob: 272f706a3e850439767338f2a3921c55003c6d39 [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_PROPERTYPANEL_AREAPAGE_HXX
#define SVX_PROPERTYPANEL_AREAPAGE_HXX
#include <svx/sidebar/ColorPopup.hxx>
#include "AreaTransparencyGradientPopup.hxx"
#include <vcl/ctrl.hxx>
#include <sfx2/sidebar/SidebarPanelBase.hxx>
#include <sfx2/sidebar/ControllerItem.hxx>
#include <sfx2/sidebar/GridLayouter.hxx>
#include <svx/xgrad.hxx>
#include <svx/itemwin.hxx>
#include <svx/xfillit0.hxx>
#include <svx/xflclit.hxx>
#include <svx/xflgrit.hxx>
#include <svx/xflhtit.hxx>
#include <svx/xbtmpit.hxx>
#include <svx/drawitem.hxx>
#include <vcl/lstbox.hxx>
#include <vcl/field.hxx>
#include <vcl/fixed.hxx>
#include <svl/intitem.hxx>
#include <svx/tbxcolorupdate.hxx>
#include <com/sun/star/ui/XUIElement.hpp>
#include <boost/scoped_ptr.hpp>
class XFillFloatTransparenceItem;
namespace svx { class ToolboxButtonColorUpdater; }
namespace svx { namespace sidebar {
class PopupContainer;
class AreaTransparencyGradientControl;
class AreaPropertyPanel
: public Control,
public ::sfx2::sidebar::ControllerItem::ItemUpdateReceiverInterface
{
public:
static AreaPropertyPanel* Create(
Window* pParent,
const cssu::Reference<css::frame::XFrame>& rxFrame,
SfxBindings* pBindings);
virtual void DataChanged(
const DataChangedEvent& rEvent);
virtual void NotifyItemUpdate(
const sal_uInt16 nSId,
const SfxItemState eState,
const SfxPoolItem* pState,
const bool bIsEnabled);
SfxBindings* GetBindings();
const static sal_Int32 DEFAULT_CENTERX;
const static sal_Int32 DEFAULT_CENTERY;
const static sal_Int32 DEFAULT_ANGLE;
const static sal_Int32 DEFAULT_STARTVALUE;
const static sal_Int32 DEFAULT_ENDVALUE;
const static sal_Int32 DEFAULT_BORDER;
XGradient GetGradient (const XGradientStyle eStyle) const;
void SetGradient (const XGradient& rGradient);
sal_Int32 GetSelectedTransparencyTypeIndex (void) const;
virtual void Resize (void);
private:
sal_uInt16 meLastXFS;
Color maLastColor;
sal_uInt16 mnLastPosGradient;
sal_uInt16 mnLastPosHatch;
sal_uInt16 mnLastPosBitmap;
sal_uInt16 mnLastTransSolid;
XGradient maGradientLinear;
XGradient maGradientAxial;
XGradient maGradientRadial;
XGradient maGradientElliptical;
XGradient maGradientSquare;
XGradient maGradientRect;
//ui controls
::boost::scoped_ptr< FixedText > mpColorTextFT;
::boost::scoped_ptr< SvxFillTypeBox > mpLbFillType;
::boost::scoped_ptr< SvxFillAttrBox > mpLbFillAttr;
::boost::scoped_ptr< Window > mpToolBoxColorBackground;
::boost::scoped_ptr< ToolBox > mpToolBoxColor; // for new color picker
::boost::scoped_ptr< FixedText > mpTrspTextFT;
::boost::scoped_ptr< ListBox > mpLBTransType;
::boost::scoped_ptr< MetricField > mpMTRTransparent;
::boost::scoped_ptr< Window > mpBTNGradientBackground;
::boost::scoped_ptr< ToolBox > mpBTNGradient;
::boost::scoped_ptr< ::svx::ToolboxButtonColorUpdater > mpColorUpdater;
::boost::scoped_ptr< XFillStyleItem > mpStyleItem;
::boost::scoped_ptr< XFillColorItem > mpColorItem;
::boost::scoped_ptr< XFillGradientItem > mpFillGradientItem;
::boost::scoped_ptr< XFillHatchItem > mpHatchItem;
::boost::scoped_ptr< XFillBitmapItem > mpBitmapItem;
::sfx2::sidebar::ControllerItem maStyleControl;
::sfx2::sidebar::ControllerItem maColorControl;
::sfx2::sidebar::ControllerItem maGradientControl;
::sfx2::sidebar::ControllerItem maHatchControl;
::sfx2::sidebar::ControllerItem maBitmapControl;
::sfx2::sidebar::ControllerItem maColorTableControl;
::sfx2::sidebar::ControllerItem maGradientListControl;
::sfx2::sidebar::ControllerItem maHatchListControl;
::sfx2::sidebar::ControllerItem maBitmapListControl;
::sfx2::sidebar::ControllerItem maFillTransparenceController;
::sfx2::sidebar::ControllerItem maFillFloatTransparenceController;
Image maImgAxial;
Image maImgElli;
Image maImgQuad;
Image maImgRadial;
Image maImgSquare;
Image maImgLinear;
Image maImgColor;
//for high contract
Image maImgAxialH;
Image maImgElliH;
Image maImgQuadH;
Image maImgRadialH;
Image maImgSquareH;
Image maImgLinearH;
Image maImgColorH;
String msHelpFillType;
String msHelpFillAttr;
AreaTransparencyGradientPopup maTrGrPopup;
ColorPopup maColorPopup;
::boost::scoped_ptr< XFillFloatTransparenceItem > mpFloatTransparenceItem;
::boost::scoped_ptr< SfxUInt16Item > mpTransparanceItem;
cssu::Reference<css::frame::XFrame> mxFrame;
SfxBindings* mpBindings;
/// bitfield
bool mbColorAvail : 1;
::sfx2::sidebar::GridLayouter maLayouter;
DECL_LINK(SelectFillTypeHdl, ListBox* );
DECL_LINK(SelectFillAttrHdl, ListBox* );
DECL_LINK(ChangeTrgrTypeHdl_Impl, void*);
DECL_LINK(ModifyTransparentHdl_Impl, void*);
DECL_LINK( ImplPopupModeEndHdl, FloatingWindow* );
// for transparency gradient
PopupControl* CreateTransparencyGradientControl (PopupContainer* pParent);
DECL_LINK( ClickTrGrHdl_Impl, ToolBox* );
// for color picker
PopupControl* CreateColorPopupControl (PopupContainer* pParent);
DECL_LINK(ToolBoxColorDropHdl, ToolBox *); //for new color picker
// constructor/destuctor
AreaPropertyPanel(
Window* pParent,
const cssu::Reference<css::frame::XFrame>& rxFrame,
SfxBindings* pBindings);
virtual ~AreaPropertyPanel(void);
void SetupIcons(void);
void Initialize();
void Update();
void ImpUpdateTransparencies();
Color GetLastColor (void) const;
void SetColor (
const String& rsColorName,
const Color aColor);
};
} } // end of namespace ::svx::sidebar
#endif // SVX_PROPERTYPANEL_AREAPAGE_HXX
// eof