1*38d50f7bSAndrew Rist /************************************************************** 2cdf0e10cSrcweir * 3*38d50f7bSAndrew Rist * Licensed to the Apache Software Foundation (ASF) under one 4*38d50f7bSAndrew Rist * or more contributor license agreements. See the NOTICE file 5*38d50f7bSAndrew Rist * distributed with this work for additional information 6*38d50f7bSAndrew Rist * regarding copyright ownership. The ASF licenses this file 7*38d50f7bSAndrew Rist * to you under the Apache License, Version 2.0 (the 8*38d50f7bSAndrew Rist * "License"); you may not use this file except in compliance 9*38d50f7bSAndrew Rist * with the License. You may obtain a copy of the License at 10*38d50f7bSAndrew Rist * 11*38d50f7bSAndrew Rist * http://www.apache.org/licenses/LICENSE-2.0 12*38d50f7bSAndrew Rist * 13*38d50f7bSAndrew Rist * Unless required by applicable law or agreed to in writing, 14*38d50f7bSAndrew Rist * software distributed under the License is distributed on an 15*38d50f7bSAndrew Rist * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*38d50f7bSAndrew Rist * KIND, either express or implied. See the License for the 17*38d50f7bSAndrew Rist * specific language governing permissions and limitations 18*38d50f7bSAndrew Rist * under the License. 19*38d50f7bSAndrew Rist * 20*38d50f7bSAndrew Rist *************************************************************/ 21*38d50f7bSAndrew Rist 22*38d50f7bSAndrew Rist 23cdf0e10cSrcweir 24cdf0e10cSrcweir #ifndef SC_NAVIPI_HXX 25cdf0e10cSrcweir #define SC_NAVIPI_HXX 26cdf0e10cSrcweir 27cdf0e10cSrcweir #include <vector> 28cdf0e10cSrcweir #include <vcl/toolbox.hxx> 29cdf0e10cSrcweir #include <vcl/field.hxx> 30cdf0e10cSrcweir #include <vcl/lstbox.hxx> 31cdf0e10cSrcweir #include <svtools/stdctrl.hxx> 32cdf0e10cSrcweir #include <svl/poolitem.hxx> 33cdf0e10cSrcweir #include <svl/lstner.hxx> 34cdf0e10cSrcweir #include <sfx2/childwin.hxx> 35cdf0e10cSrcweir #include "content.hxx" 36cdf0e10cSrcweir #include <svtools/svmedit.hxx> 37cdf0e10cSrcweir 38cdf0e10cSrcweir 39cdf0e10cSrcweir class ScTabViewShell; 40cdf0e10cSrcweir class ScViewData; 41cdf0e10cSrcweir class ScArea; 42cdf0e10cSrcweir class ScScenarioWindow; 43cdf0e10cSrcweir class ScNavigatorControllerItem; 44cdf0e10cSrcweir class ScNavigatorDialogWrapper; 45cdf0e10cSrcweir class ScNavigatorDlg; 46cdf0e10cSrcweir class ScNavigatorSettings; 47cdf0e10cSrcweir class ScRange; 48cdf0e10cSrcweir 49cdf0e10cSrcweir //======================================================================== 50cdf0e10cSrcweir 51cdf0e10cSrcweir #define SC_DROPMODE_URL 0 52cdf0e10cSrcweir #define SC_DROPMODE_LINK 1 53cdf0e10cSrcweir #define SC_DROPMODE_COPY 2 54cdf0e10cSrcweir 55cdf0e10cSrcweir enum NavListMode { NAV_LMODE_NONE = 0x4000, 56cdf0e10cSrcweir NAV_LMODE_AREAS = 0x2000, 57cdf0e10cSrcweir NAV_LMODE_DBAREAS = 0x1000, 58cdf0e10cSrcweir NAV_LMODE_DOCS = 0x800, 59cdf0e10cSrcweir NAV_LMODE_SCENARIOS = 0x400 }; 60cdf0e10cSrcweir 61cdf0e10cSrcweir //======================================================================== 62cdf0e10cSrcweir // class ScScenarioListBox ----------------------------------------------- 63cdf0e10cSrcweir //======================================================================== 64cdf0e10cSrcweir 65cdf0e10cSrcweir class ScScenarioListBox : public ListBox 66cdf0e10cSrcweir { 67cdf0e10cSrcweir public: 68cdf0e10cSrcweir explicit ScScenarioListBox( ScScenarioWindow& rParent ); 69cdf0e10cSrcweir virtual ~ScScenarioListBox(); 70cdf0e10cSrcweir 71cdf0e10cSrcweir void UpdateEntries( List* pNewEntryList ); 72cdf0e10cSrcweir 73cdf0e10cSrcweir protected: 74cdf0e10cSrcweir virtual void Select(); 75cdf0e10cSrcweir virtual void DoubleClick(); 76cdf0e10cSrcweir virtual long Notify( NotifyEvent& rNEvt ); 77cdf0e10cSrcweir 78cdf0e10cSrcweir private: 79cdf0e10cSrcweir struct ScenarioEntry 80cdf0e10cSrcweir { 81cdf0e10cSrcweir String maName; 82cdf0e10cSrcweir String maComment; 83cdf0e10cSrcweir bool mbProtected; 84cdf0e10cSrcweir 85cdf0e10cSrcweir inline explicit ScenarioEntry() : mbProtected( false ) {} 86cdf0e10cSrcweir }; 87cdf0e10cSrcweir typedef ::std::vector< ScenarioEntry > ScenarioList; 88cdf0e10cSrcweir 89cdf0e10cSrcweir private: 90cdf0e10cSrcweir const ScenarioEntry* GetSelectedEntry() const; 91cdf0e10cSrcweir 92cdf0e10cSrcweir void ExecuteScenarioSlot( sal_uInt16 nSlotId ); 93cdf0e10cSrcweir void SelectScenario(); 94cdf0e10cSrcweir void EditScenario(); 95cdf0e10cSrcweir void DeleteScenario( bool bQueryBox ); 96cdf0e10cSrcweir 97cdf0e10cSrcweir private: 98cdf0e10cSrcweir ScScenarioWindow& mrParent; 99cdf0e10cSrcweir ScenarioList maEntries; 100cdf0e10cSrcweir }; 101cdf0e10cSrcweir 102cdf0e10cSrcweir //======================================================================== 103cdf0e10cSrcweir // class ScScenarioWindow ------------------------------------------------ 104cdf0e10cSrcweir //======================================================================== 105cdf0e10cSrcweir class ScScenarioWindow : public Window 106cdf0e10cSrcweir { 107cdf0e10cSrcweir public: 108cdf0e10cSrcweir ScScenarioWindow( Window* pParent,const String& aQH_List,const String& aQH_Comment); 109cdf0e10cSrcweir ~ScScenarioWindow(); 110cdf0e10cSrcweir 111cdf0e10cSrcweir void NotifyState( const SfxPoolItem* pState ); 112cdf0e10cSrcweir void SetComment( const String& rComment ) 113cdf0e10cSrcweir { aEdComment.SetText( rComment ); } 114cdf0e10cSrcweir 115cdf0e10cSrcweir void SetSizePixel( const Size& rNewSize ); 116cdf0e10cSrcweir 117cdf0e10cSrcweir protected: 118cdf0e10cSrcweir 119cdf0e10cSrcweir virtual void Paint( const Rectangle& rRec ); 120cdf0e10cSrcweir 121cdf0e10cSrcweir private: 122cdf0e10cSrcweir ScScenarioListBox aLbScenario; 123cdf0e10cSrcweir MultiLineEdit aEdComment; 124cdf0e10cSrcweir }; 125cdf0e10cSrcweir 126cdf0e10cSrcweir //================================================================== 127cdf0e10cSrcweir // class ColumnEdit 128cdf0e10cSrcweir //================================================================== 129cdf0e10cSrcweir class ColumnEdit : public SpinField 130cdf0e10cSrcweir { 131cdf0e10cSrcweir public: 132cdf0e10cSrcweir ColumnEdit( ScNavigatorDlg* pParent, const ResId& rResId ); 133cdf0e10cSrcweir ~ColumnEdit(); 134cdf0e10cSrcweir 135cdf0e10cSrcweir SCCOL GetCol() { return nCol; } 136cdf0e10cSrcweir void SetCol( SCCOL nColNo ); 137cdf0e10cSrcweir 138cdf0e10cSrcweir protected: 139cdf0e10cSrcweir virtual long Notify( NotifyEvent& rNEvt ); 140cdf0e10cSrcweir virtual void LoseFocus(); 141cdf0e10cSrcweir virtual void Up(); 142cdf0e10cSrcweir virtual void Down(); 143cdf0e10cSrcweir virtual void First(); 144cdf0e10cSrcweir virtual void Last(); 145cdf0e10cSrcweir 146cdf0e10cSrcweir private: 147cdf0e10cSrcweir ScNavigatorDlg& rDlg; 148cdf0e10cSrcweir SCCOL nCol; 149cdf0e10cSrcweir sal_uInt16 nKeyGroup; 150cdf0e10cSrcweir 151cdf0e10cSrcweir void EvalText (); 152cdf0e10cSrcweir void ExecuteCol (); 153cdf0e10cSrcweir SCCOL AlphaToNum ( String& rStr ); 154cdf0e10cSrcweir SCCOL NumStrToAlpha ( String& rStr ); 155cdf0e10cSrcweir SCCOL NumToAlpha ( SCCOL nColNo, String& rStr ); 156cdf0e10cSrcweir }; 157cdf0e10cSrcweir 158cdf0e10cSrcweir 159cdf0e10cSrcweir //================================================================== 160cdf0e10cSrcweir // class RowEdit 161cdf0e10cSrcweir //================================================================== 162cdf0e10cSrcweir class RowEdit : public NumericField 163cdf0e10cSrcweir { 164cdf0e10cSrcweir public: 165cdf0e10cSrcweir RowEdit( ScNavigatorDlg* pParent, const ResId& rResId ); 166cdf0e10cSrcweir ~RowEdit(); 167cdf0e10cSrcweir 168cdf0e10cSrcweir SCROW GetRow() { return (SCROW)GetValue(); } 169cdf0e10cSrcweir void SetRow( SCROW nRow ){ SetValue( nRow ); } 170cdf0e10cSrcweir 171cdf0e10cSrcweir protected: 172cdf0e10cSrcweir virtual long Notify( NotifyEvent& rNEvt ); 173cdf0e10cSrcweir virtual void LoseFocus(); 174cdf0e10cSrcweir 175cdf0e10cSrcweir private: 176cdf0e10cSrcweir ScNavigatorDlg& rDlg; 177cdf0e10cSrcweir 178cdf0e10cSrcweir void ExecuteRow(); 179cdf0e10cSrcweir }; 180cdf0e10cSrcweir 181cdf0e10cSrcweir 182cdf0e10cSrcweir //================================================================== 183cdf0e10cSrcweir // class ScDocListBox 184cdf0e10cSrcweir //================================================================== 185cdf0e10cSrcweir class ScDocListBox : public ListBox 186cdf0e10cSrcweir { 187cdf0e10cSrcweir public: 188cdf0e10cSrcweir ScDocListBox( ScNavigatorDlg* pParent, const ResId& rResId ); 189cdf0e10cSrcweir ~ScDocListBox(); 190cdf0e10cSrcweir 191cdf0e10cSrcweir protected: 192cdf0e10cSrcweir virtual void Select(); 193cdf0e10cSrcweir 194cdf0e10cSrcweir private: 195cdf0e10cSrcweir ScNavigatorDlg& rDlg; 196cdf0e10cSrcweir }; 197cdf0e10cSrcweir 198cdf0e10cSrcweir 199cdf0e10cSrcweir //================================================================== 200cdf0e10cSrcweir // class CommandToolBox 201cdf0e10cSrcweir //================================================================== 202cdf0e10cSrcweir class CommandToolBox : public ToolBox 203cdf0e10cSrcweir { 204cdf0e10cSrcweir public: 205cdf0e10cSrcweir CommandToolBox( ScNavigatorDlg* pParent, const ResId& rResId ); 206cdf0e10cSrcweir ~CommandToolBox(); 207cdf0e10cSrcweir 208cdf0e10cSrcweir void Select( sal_uInt16 nId ); 209cdf0e10cSrcweir void UpdateButtons(); 210cdf0e10cSrcweir void InitImageList(); 211cdf0e10cSrcweir 212cdf0e10cSrcweir virtual void DataChanged( const DataChangedEvent& rDCEvt ); 213cdf0e10cSrcweir 214cdf0e10cSrcweir DECL_LINK( ToolBoxDropdownClickHdl, ToolBox* ); 215cdf0e10cSrcweir 216cdf0e10cSrcweir protected: 217cdf0e10cSrcweir virtual void Select(); 218cdf0e10cSrcweir virtual void Click(); 219cdf0e10cSrcweir 220cdf0e10cSrcweir private: 221cdf0e10cSrcweir ScNavigatorDlg& rDlg; 222cdf0e10cSrcweir }; 223cdf0e10cSrcweir 224cdf0e10cSrcweir //================================================================== 225cdf0e10cSrcweir // class ScNavigatorDlg 226cdf0e10cSrcweir //================================================================== 227cdf0e10cSrcweir 228cdf0e10cSrcweir class ScNavigatorDlg : public Window, public SfxListener 229cdf0e10cSrcweir { 230cdf0e10cSrcweir friend class ScNavigatorControllerItem; 231cdf0e10cSrcweir friend class ScNavigatorDialogWrapper; 232cdf0e10cSrcweir friend class ColumnEdit; 233cdf0e10cSrcweir friend class RowEdit; 234cdf0e10cSrcweir friend class ScDocListBox; 235cdf0e10cSrcweir friend class CommandToolBox; 236cdf0e10cSrcweir friend class ScContentTree; 237cdf0e10cSrcweir 238cdf0e10cSrcweir private: 239cdf0e10cSrcweir SfxBindings& rBindings; // must be first member 240cdf0e10cSrcweir 241cdf0e10cSrcweir ImageList aCmdImageList; // must be before aTbxCmd 242cdf0e10cSrcweir ImageList aCmdImageListH; 243cdf0e10cSrcweir FixedInfo aFtCol; 244cdf0e10cSrcweir ColumnEdit aEdCol; 245cdf0e10cSrcweir FixedInfo aFtRow; 246cdf0e10cSrcweir RowEdit aEdRow; 247cdf0e10cSrcweir CommandToolBox aTbxCmd; 248cdf0e10cSrcweir ScContentTree aLbEntries; 249cdf0e10cSrcweir ScScenarioWindow aWndScenarios; 250cdf0e10cSrcweir ScDocListBox aLbDocuments; 251cdf0e10cSrcweir 252cdf0e10cSrcweir Timer aContentTimer; 253cdf0e10cSrcweir 254cdf0e10cSrcweir String aTitleBase; 255cdf0e10cSrcweir String aStrDragMode; 256cdf0e10cSrcweir String aStrDisplay; 257cdf0e10cSrcweir String aStrActive; 258cdf0e10cSrcweir String aStrNotActive; 259cdf0e10cSrcweir String aStrHidden; 260cdf0e10cSrcweir String aStrActiveWin; 261cdf0e10cSrcweir 262cdf0e10cSrcweir SfxChildWindowContext* pContextWin; 263cdf0e10cSrcweir Size aInitSize; 264cdf0e10cSrcweir ScArea* pMarkArea; 265cdf0e10cSrcweir ScViewData* pViewData; 266cdf0e10cSrcweir 267cdf0e10cSrcweir long nBorderOffset; 268cdf0e10cSrcweir long nListModeHeight; 269cdf0e10cSrcweir long nInitListHeight; 270cdf0e10cSrcweir NavListMode eListMode; 271cdf0e10cSrcweir sal_uInt16 nDropMode; 272cdf0e10cSrcweir SCCOL nCurCol; 273cdf0e10cSrcweir SCROW nCurRow; 274cdf0e10cSrcweir SCTAB nCurTab; 275cdf0e10cSrcweir sal_Bool bFirstBig; 276cdf0e10cSrcweir 277cdf0e10cSrcweir ScNavigatorControllerItem** ppBoundItems; 278cdf0e10cSrcweir 279cdf0e10cSrcweir DECL_LINK( TimeHdl, Timer* ); 280cdf0e10cSrcweir 281cdf0e10cSrcweir void DoResize(); 282cdf0e10cSrcweir 283cdf0e10cSrcweir SfxBindings& GetBindings() 284cdf0e10cSrcweir { return rBindings; } 285cdf0e10cSrcweir 286cdf0e10cSrcweir void SetCurrentCell( SCCOL nCol, SCROW Row ); 287cdf0e10cSrcweir void SetCurrentCellStr( const String rName ); 288cdf0e10cSrcweir void SetCurrentTable( SCTAB nTab ); 289cdf0e10cSrcweir void SetCurrentTableStr( const String rName ); 290cdf0e10cSrcweir void SetCurrentObject( const String rName ); 291cdf0e10cSrcweir void SetCurrentDoc( const String& rDocName ); 292cdf0e10cSrcweir 293cdf0e10cSrcweir ScTabViewShell* GetTabViewShell() const; 294cdf0e10cSrcweir ScNavigatorSettings* GetNavigatorSettings(); 295cdf0e10cSrcweir sal_Bool GetViewData(); 296cdf0e10cSrcweir 297cdf0e10cSrcweir void UpdateColumn ( const SCCOL* pCol = NULL ); 298cdf0e10cSrcweir void UpdateRow ( const SCROW* pRow = NULL ); 299cdf0e10cSrcweir void UpdateTable ( const SCTAB* pTab = NULL ); 300cdf0e10cSrcweir void UpdateAll (); 301cdf0e10cSrcweir 302cdf0e10cSrcweir void GetDocNames(const String* pSelEntry = NULL); 303cdf0e10cSrcweir 304cdf0e10cSrcweir void SetListMode ( NavListMode eMode, sal_Bool bSetSize = sal_True ); 305cdf0e10cSrcweir void ShowList ( sal_Bool bShow, sal_Bool bSetSize ); 306cdf0e10cSrcweir void ShowScenarios ( sal_Bool bShow, sal_Bool bSetSize ); 307cdf0e10cSrcweir 308cdf0e10cSrcweir void SetDropMode(sal_uInt16 nNew); 309cdf0e10cSrcweir sal_uInt16 GetDropMode() const { return nDropMode; } 310cdf0e10cSrcweir 311cdf0e10cSrcweir const String& GetStrDragMode() const { return aStrDragMode; } 312cdf0e10cSrcweir const String& GetStrDisplay() const { return aStrDisplay; } 313cdf0e10cSrcweir 314cdf0e10cSrcweir void CheckDataArea (); 315cdf0e10cSrcweir void MarkDataArea (); 316cdf0e10cSrcweir void UnmarkDataArea (); 317cdf0e10cSrcweir void StartOfDataArea (); 318cdf0e10cSrcweir void EndOfDataArea (); 319cdf0e10cSrcweir 320cdf0e10cSrcweir static void ReleaseFocus(); 321cdf0e10cSrcweir 322cdf0e10cSrcweir protected: 323cdf0e10cSrcweir virtual void Resize(); 324cdf0e10cSrcweir virtual void Paint( const Rectangle& rRec ); 325cdf0e10cSrcweir virtual void Resizing( Size& rSize ); 326cdf0e10cSrcweir 327cdf0e10cSrcweir public: 328cdf0e10cSrcweir ScNavigatorDlg( SfxBindings* pB, SfxChildWindowContext* pCW, Window* pParent ); 329cdf0e10cSrcweir ~ScNavigatorDlg(); 330cdf0e10cSrcweir 331cdf0e10cSrcweir using Window::Notify; 332cdf0e10cSrcweir virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint ); 333cdf0e10cSrcweir 334cdf0e10cSrcweir void CursorPosChanged(); 335cdf0e10cSrcweir 336cdf0e10cSrcweir virtual SfxChildAlignment 337cdf0e10cSrcweir CheckAlignment(SfxChildAlignment,SfxChildAlignment); 338cdf0e10cSrcweir virtual void DataChanged( const DataChangedEvent& rDCEvt ); 339cdf0e10cSrcweir }; 340cdf0e10cSrcweir 341cdf0e10cSrcweir //================================================================== 342cdf0e10cSrcweir 343cdf0e10cSrcweir class ScNavigatorDialogWrapper: public SfxChildWindowContext 344cdf0e10cSrcweir { 345cdf0e10cSrcweir public: 346cdf0e10cSrcweir ScNavigatorDialogWrapper( Window* pParent, 347cdf0e10cSrcweir sal_uInt16 nId, 348cdf0e10cSrcweir SfxBindings* pBindings, 349cdf0e10cSrcweir SfxChildWinInfo* pInfo ); 350cdf0e10cSrcweir 351cdf0e10cSrcweir SFX_DECL_CHILDWINDOWCONTEXT(ScNavigatorDialogWrapper) 352cdf0e10cSrcweir 353cdf0e10cSrcweir virtual void Resizing( Size& rSize ); 354cdf0e10cSrcweir 355cdf0e10cSrcweir private: 356cdf0e10cSrcweir ScNavigatorDlg* pNavigator; 357cdf0e10cSrcweir }; 358cdf0e10cSrcweir 359cdf0e10cSrcweir 360cdf0e10cSrcweir 361cdf0e10cSrcweir #endif // SC_NAVIPI_HXX 362cdf0e10cSrcweir 363