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