/************************************************************** * * 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 SC_PVLAYDLG_HXX #define SC_PVLAYDLG_HXX #include #include #include #include #include #include #include #include "anyrefdg.hxx" #include "fieldwnd.hxx" // ============================================================================ class ScViewData; class ScDocument; class ScRangeData; class ScDPObject; // ============================================================================ class ScPivotLayoutDlg : public ScAnyRefDlg { public: ScPivotLayoutDlg( SfxBindings* pB, SfxChildWindow* pCW, Window* pParent, const ScDPObject& rDPObject ); virtual ~ScPivotLayoutDlg(); ScDPLabelData* GetLabelData( SCCOL nCol, size_t* pnIndex = 0 ); String GetFuncString( sal_uInt16& rnFuncMask, bool bIsValue = true ); void NotifyStartTracking( ScPivotFieldWindow& rSourceWindow ); void NotifyDoubleClick( ScPivotFieldWindow& rSourceWindow ); void NotifyFieldRemoved( ScPivotFieldWindow& rSourceWindow ); protected: virtual void Tracking( const TrackingEvent& rTEvt ); virtual void SetReference( const ScRange& rRef, ScDocument* pDoc ); virtual sal_Bool IsRefInputMode() const; virtual void SetActive(); virtual sal_Bool Close(); private: /** Returns the localized function name for the specified (1-based) resource index. */ inline const String& GetFuncName( sal_uInt16 nFuncIdx ) const { return maFuncNames[ nFuncIdx - 1 ]; } /** Returns the specified field window. */ ScPivotFieldWindow& GetFieldWindow( ScPivotFieldType eFieldType ); /** Fills the field windows from the current pivot table settings. */ void InitFieldWindows(); /** Sets focus to the specified field window, if it is not empty. */ void GrabFieldFocus( ScPivotFieldWindow& rFieldWindow ); /** Returns true, if the specified field can be inserted into the specified field window. */ bool IsInsertAllowed( const ScPivotFieldWindow& rSourceWindow, const ScPivotFieldWindow& rTargetWindow ); /** Moves the selected field in the source window to the specified window. */ bool MoveField( ScPivotFieldWindow& rSourceWindow, ScPivotFieldWindow& rTargetWindow, size_t nInsertIndex, bool bMoveExisting ); // Handler DECL_LINK( ClickHdl, PushButton * ); DECL_LINK( OkHdl, OKButton * ); DECL_LINK( CancelHdl, CancelButton * ); DECL_LINK( MoreClickHdl, MoreButton * ); DECL_LINK( EdOutModifyHdl, Edit * ); DECL_LINK( EdInModifyHdl, Edit * ); DECL_LINK( SelAreaHdl, ListBox * ); DECL_LINK( ChildEventListener, VclWindowEvent* ); private: typedef ::std::auto_ptr< ScDPObject > ScDPObjectPtr; FixedLine maFlLayout; ScrollBar maScrPage; FixedText maFtPage; ScPivotFieldWindow maWndPage; ScrollBar maScrCol; FixedText maFtCol; ScPivotFieldWindow maWndCol; ScrollBar maScrRow; FixedText maFtRow; ScPivotFieldWindow maWndRow; ScrollBar maScrData; FixedText maFtData; ScPivotFieldWindow maWndData; FixedLine maFlSelect; ScrollBar maScrSelect; ScPivotFieldWindow maWndSelect; FixedInfo maFtInfo; FixedLine maFlAreas; FixedText maFtInArea; ::formula::RefEdit maEdInPos; ::formula::RefButton maRbInPos; ListBox maLbOutPos; FixedText maFtOutArea; formula::RefEdit maEdOutPos; formula::RefButton maRbOutPos; CheckBox maBtnIgnEmptyRows; CheckBox maBtnDetectCat; CheckBox maBtnTotalCol; CheckBox maBtnTotalRow; CheckBox maBtnFilter; CheckBox maBtnDrillDown; OKButton maBtnOk; CancelButton maBtnCancel; HelpButton maBtnHelp; PushButton maBtnRemove; PushButton maBtnOptions; MoreButton maBtnMore; ::std::vector< String > maFuncNames; /// Localized function names from resource. ScDPObjectPtr mxDlgDPObject; /// Clone of the pivot table object this dialog is based on. ScPivotParam maPivotData; /// The pivot table field configuration. ScDPLabelDataVector maLabelData; /// Information about all dimensions. ScViewData* mpViewData; ScDocument* mpDoc; ScPivotFieldWindow* mpFocusWindow; /// Pointer to the field window that currently has the focus. ScPivotFieldWindow* mpTrackingWindow; /// Pointer to the field window that has started mouse tracking. ScPivotFieldWindow* mpDropWindow; /// Pointer to the field window that shows an insertion cursor. ::formula::RefEdit* mpActiveEdit; bool mbRefInputMode; }; // ============================================================================ #endif