| /************************************************************** |
| * |
| * 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 _SVDIBROW_HXX |
| #define _SVDIBROW_HXX |
| |
| #include <svtools/brwbox.hxx> |
| #include <vcl/edit.hxx> |
| #include <vcl/floatwin.hxx> |
| |
| class SfxItemSet; |
| class ImpItemListRow; |
| class BrowserMouseEvent; |
| |
| class _SdrItemBrowserControl: public BrowseBox |
| { |
| friend class ImpItemEdit; |
| Container aList; |
| long nAktPaintRow; |
| Edit* pEditControl; |
| XubString aWNamMerk; |
| Link aEntryChangedHdl; |
| Link aSetDirtyHdl; |
| ImpItemListRow* pAktChangeEntry; |
| long nLastWhichOfs; |
| sal_uInt16 nLastWhich; |
| sal_uInt16 nLastWhichOben; |
| sal_uInt16 nLastWhichUnten; |
| FASTBOOL bWhichesButNames; |
| FASTBOOL bDontHideIneffectiveItems; |
| FASTBOOL bDontSortItems; |
| FASTBOOL bShowWhichIds; |
| FASTBOOL bShowRealValues; |
| private: |
| #if _SOLAR__PRIVATE |
| void ImpCtor(); |
| void ImpSetEntry(const ImpItemListRow& rEntry, sal_uIntPtr nEntryNum); |
| ImpItemListRow* ImpGetEntry(sal_uIntPtr nPos) const { return (ImpItemListRow*)aList.GetObject(nPos); } |
| void ImpSaveWhich(); |
| void ImpRestoreWhich(); |
| #endif // __PRIVATE |
| protected: |
| virtual long GetRowCount() const; |
| virtual sal_Bool SeekRow(long nRow); |
| virtual void PaintField(OutputDevice& rDev, const Rectangle& rRect, sal_uInt16 nColumnId) const; |
| virtual void DoubleClick(const BrowserMouseEvent&); |
| virtual void KeyInput(const KeyEvent& rEvt); |
| virtual void Select(); |
| virtual void SetDirty(); // wird z.B. bei Modusumschaltungen gerufen |
| virtual Rectangle GetFieldCharacterBounds(sal_Int32 _nRow,sal_Int32 _nColumnPos,sal_Int32 nIndex); |
| virtual sal_Int32 GetFieldIndexAtPoint(sal_Int32 _nRow,sal_Int32 _nColumnPos,const Point& _rPoint); |
| public: |
| _SdrItemBrowserControl(Window* pParent, WinBits nBits=WB_3DLOOK|WB_BORDER|WB_TABSTOP); |
| virtual ~_SdrItemBrowserControl(); |
| void Clear(); |
| void SetAttributes(const SfxItemSet* pAttr, const SfxItemSet* p2ndSet=NULL); |
| sal_uIntPtr GetCurrentPos() const; |
| sal_uInt16 GetCurrentWhich() const; |
| virtual FASTBOOL BegChangeEntry(sal_uIntPtr nPos); |
| virtual FASTBOOL EndChangeEntry(); |
| virtual void BrkChangeEntry(); |
| |
| /** GetCellText returns the text at the given position |
| @param _nRow |
| the number of the row |
| @param _nColId |
| the ID of the column |
| @return |
| the text out of the cell |
| */ |
| virtual String GetCellText(long _nRow, sal_uInt16 _nColId) const; |
| |
| const ImpItemListRow* GetAktChangeEntry() const { return pAktChangeEntry; } |
| XubString GetNewEntryValue() const { return pEditControl->GetText(); } |
| void SetEntryChangedHdl(const Link& rLink) { aEntryChangedHdl=rLink; } |
| const Link& GetEntryChangedHdl() const { return aEntryChangedHdl; } |
| void SetSetDirtyHdl(const Link& rLink) { aSetDirtyHdl=rLink; } |
| const Link& GetSetDirtyHdl() const { return aSetDirtyHdl; } |
| }; |
| |
| #define WB_STDSIZEABLEDOCKWIN (WB_STDDOCKWIN|WB_3DLOOK|WB_CLOSEABLE|WB_SIZEMOVE) |
| #define WB_STDSIZEABLEFLOATWIN (WB_STDFLOATWIN|WB_3DLOOK|WB_CLOSEABLE|WB_SIZEMOVE) |
| |
| class _SdrItemBrowserWindow: public FloatingWindow { |
| _SdrItemBrowserControl aBrowse; |
| public: |
| _SdrItemBrowserWindow(Window* pParent, WinBits nBits=WB_STDSIZEABLEDOCKWIN); |
| virtual ~_SdrItemBrowserWindow(); |
| virtual void Resize(); |
| virtual void GetFocus(); |
| void Clear() { aBrowse.Clear(); } |
| void SetAttributes(const SfxItemSet* pAttr, const SfxItemSet* p2ndSet=NULL) { aBrowse.SetAttributes(pAttr,p2ndSet); } |
| void SetFloatingMode(FASTBOOL /*bOn*/) {} |
| const _SdrItemBrowserControl& GetBrowserControl() const { return aBrowse; } |
| _SdrItemBrowserControl& GetBrowserControl() { return aBrowse; } |
| }; |
| |
| class SdrView; |
| |
| class SdrItemBrowser: public _SdrItemBrowserWindow { |
| Timer aIdleTimer; |
| SdrView* pView; |
| FASTBOOL bDirty; |
| private: |
| static Window* ImpGetViewWin(SdrView& rView); |
| DECL_LINK(IdleHdl,Timer*); |
| DECL_LINK(ChangedHdl,_SdrItemBrowserControl*); |
| DECL_LINK(SetDirtyHdl,_SdrItemBrowserControl*); |
| public: |
| SdrItemBrowser(SdrView& rView); |
| void ForceParent(); |
| void SetView(SdrView& rView) { pView=&rView; ForceParent(); SetDirty(); } |
| void SetDirty(); |
| void Undirty(); |
| void ForceUndirty() { if (bDirty) Undirty(); } |
| }; |
| |
| #endif //_SVDIBROW_HXX |
| |
| |