1*3334a7e6SAndrew Rist /************************************************************** 2cdf0e10cSrcweir * 3*3334a7e6SAndrew Rist * Licensed to the Apache Software Foundation (ASF) under one 4*3334a7e6SAndrew Rist * or more contributor license agreements. See the NOTICE file 5*3334a7e6SAndrew Rist * distributed with this work for additional information 6*3334a7e6SAndrew Rist * regarding copyright ownership. The ASF licenses this file 7*3334a7e6SAndrew Rist * to you under the Apache License, Version 2.0 (the 8*3334a7e6SAndrew Rist * "License"); you may not use this file except in compliance 9*3334a7e6SAndrew Rist * with the License. You may obtain a copy of the License at 10*3334a7e6SAndrew Rist * 11*3334a7e6SAndrew Rist * http://www.apache.org/licenses/LICENSE-2.0 12*3334a7e6SAndrew Rist * 13*3334a7e6SAndrew Rist * Unless required by applicable law or agreed to in writing, 14*3334a7e6SAndrew Rist * software distributed under the License is distributed on an 15*3334a7e6SAndrew Rist * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*3334a7e6SAndrew Rist * KIND, either express or implied. See the License for the 17*3334a7e6SAndrew Rist * specific language governing permissions and limitations 18*3334a7e6SAndrew Rist * under the License. 19*3334a7e6SAndrew Rist * 20*3334a7e6SAndrew Rist *************************************************************/ 21*3334a7e6SAndrew Rist 22*3334a7e6SAndrew Rist 23cdf0e10cSrcweir 24cdf0e10cSrcweir #ifndef _SVDIBROW_HXX 25cdf0e10cSrcweir #define _SVDIBROW_HXX 26cdf0e10cSrcweir 27cdf0e10cSrcweir #include <svtools/brwbox.hxx> 28cdf0e10cSrcweir #include <vcl/edit.hxx> 29cdf0e10cSrcweir #include <vcl/floatwin.hxx> 30cdf0e10cSrcweir 31cdf0e10cSrcweir class SfxItemSet; 32cdf0e10cSrcweir class ImpItemListRow; 33cdf0e10cSrcweir class BrowserMouseEvent; 34cdf0e10cSrcweir 35cdf0e10cSrcweir class _SdrItemBrowserControl: public BrowseBox 36cdf0e10cSrcweir { 37cdf0e10cSrcweir friend class ImpItemEdit; 38cdf0e10cSrcweir Container aList; 39cdf0e10cSrcweir long nAktPaintRow; 40cdf0e10cSrcweir Edit* pEditControl; 41cdf0e10cSrcweir XubString aWNamMerk; 42cdf0e10cSrcweir Link aEntryChangedHdl; 43cdf0e10cSrcweir Link aSetDirtyHdl; 44cdf0e10cSrcweir ImpItemListRow* pAktChangeEntry; 45cdf0e10cSrcweir long nLastWhichOfs; 46cdf0e10cSrcweir sal_uInt16 nLastWhich; 47cdf0e10cSrcweir sal_uInt16 nLastWhichOben; 48cdf0e10cSrcweir sal_uInt16 nLastWhichUnten; 49cdf0e10cSrcweir FASTBOOL bWhichesButNames; 50cdf0e10cSrcweir FASTBOOL bDontHideIneffectiveItems; 51cdf0e10cSrcweir FASTBOOL bDontSortItems; 52cdf0e10cSrcweir FASTBOOL bShowWhichIds; 53cdf0e10cSrcweir FASTBOOL bShowRealValues; 54cdf0e10cSrcweir private: 55cdf0e10cSrcweir #if _SOLAR__PRIVATE 56cdf0e10cSrcweir void ImpCtor(); 57cdf0e10cSrcweir void ImpSetEntry(const ImpItemListRow& rEntry, sal_uIntPtr nEntryNum); ImpGetEntry(sal_uIntPtr nPos) const58cdf0e10cSrcweir ImpItemListRow* ImpGetEntry(sal_uIntPtr nPos) const { return (ImpItemListRow*)aList.GetObject(nPos); } 59cdf0e10cSrcweir void ImpSaveWhich(); 60cdf0e10cSrcweir void ImpRestoreWhich(); 61cdf0e10cSrcweir #endif // __PRIVATE 62cdf0e10cSrcweir protected: 63cdf0e10cSrcweir virtual long GetRowCount() const; 64cdf0e10cSrcweir virtual sal_Bool SeekRow(long nRow); 65cdf0e10cSrcweir virtual void PaintField(OutputDevice& rDev, const Rectangle& rRect, sal_uInt16 nColumnId) const; 66cdf0e10cSrcweir virtual void DoubleClick(const BrowserMouseEvent&); 67cdf0e10cSrcweir virtual void KeyInput(const KeyEvent& rEvt); 68cdf0e10cSrcweir virtual void Select(); 69cdf0e10cSrcweir virtual void SetDirty(); // wird z.B. bei Modusumschaltungen gerufen 70cdf0e10cSrcweir virtual Rectangle GetFieldCharacterBounds(sal_Int32 _nRow,sal_Int32 _nColumnPos,sal_Int32 nIndex); 71cdf0e10cSrcweir virtual sal_Int32 GetFieldIndexAtPoint(sal_Int32 _nRow,sal_Int32 _nColumnPos,const Point& _rPoint); 72cdf0e10cSrcweir public: 73cdf0e10cSrcweir _SdrItemBrowserControl(Window* pParent, WinBits nBits=WB_3DLOOK|WB_BORDER|WB_TABSTOP); 74cdf0e10cSrcweir virtual ~_SdrItemBrowserControl(); 75cdf0e10cSrcweir void Clear(); 76cdf0e10cSrcweir void SetAttributes(const SfxItemSet* pAttr, const SfxItemSet* p2ndSet=NULL); 77cdf0e10cSrcweir sal_uIntPtr GetCurrentPos() const; 78cdf0e10cSrcweir sal_uInt16 GetCurrentWhich() const; 79cdf0e10cSrcweir virtual FASTBOOL BegChangeEntry(sal_uIntPtr nPos); 80cdf0e10cSrcweir virtual FASTBOOL EndChangeEntry(); 81cdf0e10cSrcweir virtual void BrkChangeEntry(); 82cdf0e10cSrcweir 83cdf0e10cSrcweir /** GetCellText returns the text at the given position 84cdf0e10cSrcweir @param _nRow 85cdf0e10cSrcweir the number of the row 86cdf0e10cSrcweir @param _nColId 87cdf0e10cSrcweir the ID of the column 88cdf0e10cSrcweir @return 89cdf0e10cSrcweir the text out of the cell 90cdf0e10cSrcweir */ 91cdf0e10cSrcweir virtual String GetCellText(long _nRow, sal_uInt16 _nColId) const; 92cdf0e10cSrcweir GetAktChangeEntry() const93cdf0e10cSrcweir const ImpItemListRow* GetAktChangeEntry() const { return pAktChangeEntry; } GetNewEntryValue() const94cdf0e10cSrcweir XubString GetNewEntryValue() const { return pEditControl->GetText(); } SetEntryChangedHdl(const Link & rLink)95cdf0e10cSrcweir void SetEntryChangedHdl(const Link& rLink) { aEntryChangedHdl=rLink; } GetEntryChangedHdl() const96cdf0e10cSrcweir const Link& GetEntryChangedHdl() const { return aEntryChangedHdl; } SetSetDirtyHdl(const Link & rLink)97cdf0e10cSrcweir void SetSetDirtyHdl(const Link& rLink) { aSetDirtyHdl=rLink; } GetSetDirtyHdl() const98cdf0e10cSrcweir const Link& GetSetDirtyHdl() const { return aSetDirtyHdl; } 99cdf0e10cSrcweir }; 100cdf0e10cSrcweir 101cdf0e10cSrcweir #define WB_STDSIZEABLEDOCKWIN (WB_STDDOCKWIN|WB_3DLOOK|WB_CLOSEABLE|WB_SIZEMOVE) 102cdf0e10cSrcweir #define WB_STDSIZEABLEFLOATWIN (WB_STDFLOATWIN|WB_3DLOOK|WB_CLOSEABLE|WB_SIZEMOVE) 103cdf0e10cSrcweir 104cdf0e10cSrcweir class _SdrItemBrowserWindow: public FloatingWindow { 105cdf0e10cSrcweir _SdrItemBrowserControl aBrowse; 106cdf0e10cSrcweir public: 107cdf0e10cSrcweir _SdrItemBrowserWindow(Window* pParent, WinBits nBits=WB_STDSIZEABLEDOCKWIN); 108cdf0e10cSrcweir virtual ~_SdrItemBrowserWindow(); 109cdf0e10cSrcweir virtual void Resize(); 110cdf0e10cSrcweir virtual void GetFocus(); Clear()111cdf0e10cSrcweir void Clear() { aBrowse.Clear(); } SetAttributes(const SfxItemSet * pAttr,const SfxItemSet * p2ndSet=NULL)112cdf0e10cSrcweir void SetAttributes(const SfxItemSet* pAttr, const SfxItemSet* p2ndSet=NULL) { aBrowse.SetAttributes(pAttr,p2ndSet); } SetFloatingMode(FASTBOOL)113cdf0e10cSrcweir void SetFloatingMode(FASTBOOL /*bOn*/) {} GetBrowserControl() const114cdf0e10cSrcweir const _SdrItemBrowserControl& GetBrowserControl() const { return aBrowse; } GetBrowserControl()115cdf0e10cSrcweir _SdrItemBrowserControl& GetBrowserControl() { return aBrowse; } 116cdf0e10cSrcweir }; 117cdf0e10cSrcweir 118cdf0e10cSrcweir class SdrView; 119cdf0e10cSrcweir 120cdf0e10cSrcweir class SdrItemBrowser: public _SdrItemBrowserWindow { 121cdf0e10cSrcweir Timer aIdleTimer; 122cdf0e10cSrcweir SdrView* pView; 123cdf0e10cSrcweir FASTBOOL bDirty; 124cdf0e10cSrcweir private: 125cdf0e10cSrcweir static Window* ImpGetViewWin(SdrView& rView); 126cdf0e10cSrcweir DECL_LINK(IdleHdl,Timer*); 127cdf0e10cSrcweir DECL_LINK(ChangedHdl,_SdrItemBrowserControl*); 128cdf0e10cSrcweir DECL_LINK(SetDirtyHdl,_SdrItemBrowserControl*); 129cdf0e10cSrcweir public: 130cdf0e10cSrcweir SdrItemBrowser(SdrView& rView); 131cdf0e10cSrcweir void ForceParent(); SetView(SdrView & rView)132cdf0e10cSrcweir void SetView(SdrView& rView) { pView=&rView; ForceParent(); SetDirty(); } 133cdf0e10cSrcweir void SetDirty(); 134cdf0e10cSrcweir void Undirty(); ForceUndirty()135cdf0e10cSrcweir void ForceUndirty() { if (bDirty) Undirty(); } 136cdf0e10cSrcweir }; 137cdf0e10cSrcweir 138cdf0e10cSrcweir #endif //_SVDIBROW_HXX 139cdf0e10cSrcweir 140cdf0e10cSrcweir 141