blob: 5a54efc56efd34dda6833f737e8adee07117e294 [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 _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