xref: /aoo4110/main/svtools/workben/browser.cxx (revision b1cdbd2c)
1*b1cdbd2cSJim Jagielski /**************************************************************
2*b1cdbd2cSJim Jagielski  *
3*b1cdbd2cSJim Jagielski  * Licensed to the Apache Software Foundation (ASF) under one
4*b1cdbd2cSJim Jagielski  * or more contributor license agreements.  See the NOTICE file
5*b1cdbd2cSJim Jagielski  * distributed with this work for additional information
6*b1cdbd2cSJim Jagielski  * regarding copyright ownership.  The ASF licenses this file
7*b1cdbd2cSJim Jagielski  * to you under the Apache License, Version 2.0 (the
8*b1cdbd2cSJim Jagielski  * "License"); you may not use this file except in compliance
9*b1cdbd2cSJim Jagielski  * with the License.  You may obtain a copy of the License at
10*b1cdbd2cSJim Jagielski  *
11*b1cdbd2cSJim Jagielski  *   http://www.apache.org/licenses/LICENSE-2.0
12*b1cdbd2cSJim Jagielski  *
13*b1cdbd2cSJim Jagielski  * Unless required by applicable law or agreed to in writing,
14*b1cdbd2cSJim Jagielski  * software distributed under the License is distributed on an
15*b1cdbd2cSJim Jagielski  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*b1cdbd2cSJim Jagielski  * KIND, either express or implied.  See the License for the
17*b1cdbd2cSJim Jagielski  * specific language governing permissions and limitations
18*b1cdbd2cSJim Jagielski  * under the License.
19*b1cdbd2cSJim Jagielski  *
20*b1cdbd2cSJim Jagielski  *************************************************************/
21*b1cdbd2cSJim Jagielski 
22*b1cdbd2cSJim Jagielski 
23*b1cdbd2cSJim Jagielski 
24*b1cdbd2cSJim Jagielski // MARKER(update_precomp.py): autogen include statement, do not remove
25*b1cdbd2cSJim Jagielski #include "precompiled_svtools.hxx"
26*b1cdbd2cSJim Jagielski #include <vcl/svapp.hxx>
27*b1cdbd2cSJim Jagielski #include <vcl/sound.hxx>
28*b1cdbd2cSJim Jagielski #include <vcl/msgbox.hxx>
29*b1cdbd2cSJim Jagielski #include <vcl/floatwin.hxx>
30*b1cdbd2cSJim Jagielski #include <vcl/menu.hxx>
31*b1cdbd2cSJim Jagielski #include <vcl/wrkwin.hxx>
32*b1cdbd2cSJim Jagielski #include <vcl/edit.hxx>
33*b1cdbd2cSJim Jagielski #include <svtools/brwbox.hxx>
34*b1cdbd2cSJim Jagielski #include <vcl/group.hxx>
35*b1cdbd2cSJim Jagielski 
36*b1cdbd2cSJim Jagielski #ifndef _SV_BUTTON_HXX //autogen
37*b1cdbd2cSJim Jagielski #include <vcl/button.hxx>
38*b1cdbd2cSJim Jagielski #endif
39*b1cdbd2cSJim Jagielski #include <vcl/dialog.hxx>
40*b1cdbd2cSJim Jagielski 
41*b1cdbd2cSJim Jagielski #define MID_BROWSER 			10
42*b1cdbd2cSJim Jagielski #define MID_MODE				11
43*b1cdbd2cSJim Jagielski #define MID_EVENTVIEW			12
44*b1cdbd2cSJim Jagielski #define MID_INVALIDATE			13
45*b1cdbd2cSJim Jagielski #define MID_CLEAR				14
46*b1cdbd2cSJim Jagielski #define MID_ROW                 20
47*b1cdbd2cSJim Jagielski #define MID_INSERTROW_BEFORE	21
48*b1cdbd2cSJim Jagielski #define MID_INSERTROW_AT		22
49*b1cdbd2cSJim Jagielski #define MID_INSERTROW_BEHIND	23
50*b1cdbd2cSJim Jagielski #define MID_REMOVEROW_BEFORE	24
51*b1cdbd2cSJim Jagielski #define MID_REMOVEROW_AT		25
52*b1cdbd2cSJim Jagielski #define MID_REMOVEROW_BEHIND	26
53*b1cdbd2cSJim Jagielski #define MID_MODIFYROW_BEFORE	27
54*b1cdbd2cSJim Jagielski #define MID_MODIFYROW_AT		28
55*b1cdbd2cSJim Jagielski #define MID_MODIFYROW_BEHIND	29
56*b1cdbd2cSJim Jagielski #define MID_COL                 30
57*b1cdbd2cSJim Jagielski #define MID_INSERTCOL			31
58*b1cdbd2cSJim Jagielski #define MID_REMOVECOL			32
59*b1cdbd2cSJim Jagielski #define MID_MOVECOLLEFT 		33
60*b1cdbd2cSJim Jagielski #define MID_MOVECOLRIGHT		34
61*b1cdbd2cSJim Jagielski #define MID_SELECTIONS			60
62*b1cdbd2cSJim Jagielski #define MID_SELECTROW			61
63*b1cdbd2cSJim Jagielski #define MID_SELECTALL			62
64*b1cdbd2cSJim Jagielski #define MID_SELECTNONE			63
65*b1cdbd2cSJim Jagielski #define MID_INVERSE 			64
66*b1cdbd2cSJim Jagielski #define MID_EXTRAS  			70
67*b1cdbd2cSJim Jagielski #define MID_STARMONEY_1 		71
68*b1cdbd2cSJim Jagielski 
69*b1cdbd2cSJim Jagielski //==================================================================
70*b1cdbd2cSJim Jagielski 
71*b1cdbd2cSJim Jagielski class BrowseModeDialog: public ModalDialog
72*b1cdbd2cSJim Jagielski {
73*b1cdbd2cSJim Jagielski 	RadioButton     aSingleSel;
74*b1cdbd2cSJim Jagielski 	RadioButton     aMultiSel;
75*b1cdbd2cSJim Jagielski 	GroupBox        aSelGroup;
76*b1cdbd2cSJim Jagielski 
77*b1cdbd2cSJim Jagielski 	CheckBox        aKeepHighlight;
78*b1cdbd2cSJim Jagielski 	CheckBox        aColumnCursor;
79*b1cdbd2cSJim Jagielski 	CheckBox        aThumbDragging;
80*b1cdbd2cSJim Jagielski 	GroupBox        aOptGroup;
81*b1cdbd2cSJim Jagielski 
82*b1cdbd2cSJim Jagielski 	RadioButton     aNoHLines;
83*b1cdbd2cSJim Jagielski 	RadioButton     aDottedHLines;
84*b1cdbd2cSJim Jagielski 	RadioButton     aFullHLines;
85*b1cdbd2cSJim Jagielski 	GroupBox        aHLinGroup;
86*b1cdbd2cSJim Jagielski 
87*b1cdbd2cSJim Jagielski 	RadioButton     aNoVLines;
88*b1cdbd2cSJim Jagielski 	RadioButton     aDottedVLines;
89*b1cdbd2cSJim Jagielski 	RadioButton     aFullVLines;
90*b1cdbd2cSJim Jagielski 	GroupBox        aVLinGroup;
91*b1cdbd2cSJim Jagielski 
92*b1cdbd2cSJim Jagielski 	OKButton        aOKButton;
93*b1cdbd2cSJim Jagielski 	CancelButton    aCancelButton;
94*b1cdbd2cSJim Jagielski 
95*b1cdbd2cSJim Jagielski public:
96*b1cdbd2cSJim Jagielski 					BrowseModeDialog( Window *pParent );
97*b1cdbd2cSJim Jagielski 
98*b1cdbd2cSJim Jagielski 	void            SetMode( BrowserMode eMode );
99*b1cdbd2cSJim Jagielski 	BrowserMode     GetMode() const;
100*b1cdbd2cSJim Jagielski };
101*b1cdbd2cSJim Jagielski 
102*b1cdbd2cSJim Jagielski //==================================================================
103*b1cdbd2cSJim Jagielski 
104*b1cdbd2cSJim Jagielski DECLARE_LIST(DataList,long);
105*b1cdbd2cSJim Jagielski 
106*b1cdbd2cSJim Jagielski class Browser: public BrowseBox
107*b1cdbd2cSJim Jagielski {
108*b1cdbd2cSJim Jagielski friend class AppWindow;
109*b1cdbd2cSJim Jagielski 
110*b1cdbd2cSJim Jagielski 	DataList        aRows;
111*b1cdbd2cSJim Jagielski 	sal_Bool            bInverse;
112*b1cdbd2cSJim Jagielski 	Edit*			pEdit;
113*b1cdbd2cSJim Jagielski 
114*b1cdbd2cSJim Jagielski protected:
115*b1cdbd2cSJim Jagielski 	virtual long    GetRowCount() const;
116*b1cdbd2cSJim Jagielski 	virtual sal_Bool    SeekRow( long nRow );
117*b1cdbd2cSJim Jagielski 	virtual void	PaintField( OutputDevice& rDev, const Rectangle& rRect,
118*b1cdbd2cSJim Jagielski 								sal_uInt16 nColumnId ) const;
119*b1cdbd2cSJim Jagielski 
120*b1cdbd2cSJim Jagielski 	virtual void    Select();
121*b1cdbd2cSJim Jagielski 	virtual void	DoubleClick();
122*b1cdbd2cSJim Jagielski 	virtual void    CursorMoved();
123*b1cdbd2cSJim Jagielski 	virtual void    StartScroll();
124*b1cdbd2cSJim Jagielski 	virtual void    EndScroll();
125*b1cdbd2cSJim Jagielski 	virtual void    Command( const CommandEvent &eEvt );
126*b1cdbd2cSJim Jagielski 
127*b1cdbd2cSJim Jagielski 	virtual sal_Bool    StartDragging( Pointer& rMovePtr,
128*b1cdbd2cSJim Jagielski 								   Pointer& rCopyPtr );
129*b1cdbd2cSJim Jagielski 	virtual void    EndDragging( const DropAction &rAction );
130*b1cdbd2cSJim Jagielski 	virtual	void	MouseButtonDown( const BrowserMouseEvent &rEvt );
131*b1cdbd2cSJim Jagielski 
132*b1cdbd2cSJim Jagielski public:
133*b1cdbd2cSJim Jagielski 					Browser( AppWindow* pParent, BrowserMode eMode );
134*b1cdbd2cSJim Jagielski 					~Browser();
135*b1cdbd2cSJim Jagielski 
SetInverseSelection(sal_Bool bInverseSel)136*b1cdbd2cSJim Jagielski 	void            SetInverseSelection( sal_Bool bInverseSel )
137*b1cdbd2cSJim Jagielski 					{ bInverse = bInverseSel; }
138*b1cdbd2cSJim Jagielski };
139*b1cdbd2cSJim Jagielski 
140*b1cdbd2cSJim Jagielski //------------------------------------------------------------------
141*b1cdbd2cSJim Jagielski 
142*b1cdbd2cSJim Jagielski class AppWindow: public WorkWindow
143*b1cdbd2cSJim Jagielski {
144*b1cdbd2cSJim Jagielski 	MenuBar         aMenu;
145*b1cdbd2cSJim Jagielski 	PopupMenu		aBrwMenu, aRowMenu, aColMenu, aSelMenu, aExtMenu;
146*b1cdbd2cSJim Jagielski 	Edit			aEdit;
147*b1cdbd2cSJim Jagielski 	Browser         aBrowser;
148*b1cdbd2cSJim Jagielski 	BrowserMode     eCurMode;
149*b1cdbd2cSJim Jagielski 	FloatingWindow *pEventView;
150*b1cdbd2cSJim Jagielski 	sal_uLong           nNewRowNo;
151*b1cdbd2cSJim Jagielski 
152*b1cdbd2cSJim Jagielski private:
153*b1cdbd2cSJim Jagielski 	DECL_LINK( Modify, void * );
154*b1cdbd2cSJim Jagielski 	DECL_LINK( MenuSelect, Menu * );
155*b1cdbd2cSJim Jagielski 
156*b1cdbd2cSJim Jagielski protected:
157*b1cdbd2cSJim Jagielski 	void            Resize();
158*b1cdbd2cSJim Jagielski 	void            Activate();
159*b1cdbd2cSJim Jagielski 
160*b1cdbd2cSJim Jagielski public:
161*b1cdbd2cSJim Jagielski 					AppWindow();
162*b1cdbd2cSJim Jagielski 					~AppWindow();
163*b1cdbd2cSJim Jagielski 
164*b1cdbd2cSJim Jagielski 	void            Event( const String &rEvent );
165*b1cdbd2cSJim Jagielski };
166*b1cdbd2cSJim Jagielski 
167*b1cdbd2cSJim Jagielski //------------------------------------------------------------------
168*b1cdbd2cSJim Jagielski 
169*b1cdbd2cSJim Jagielski class App: public Application
170*b1cdbd2cSJim Jagielski {
171*b1cdbd2cSJim Jagielski protected:
172*b1cdbd2cSJim Jagielski 	void            Main();
173*b1cdbd2cSJim Jagielski 
174*b1cdbd2cSJim Jagielski public:
175*b1cdbd2cSJim Jagielski 					App();
176*b1cdbd2cSJim Jagielski 					~App();
177*b1cdbd2cSJim Jagielski };
178*b1cdbd2cSJim Jagielski 
179*b1cdbd2cSJim Jagielski //==================================================================
180*b1cdbd2cSJim Jagielski 
181*b1cdbd2cSJim Jagielski App aApp;
182*b1cdbd2cSJim Jagielski 
183*b1cdbd2cSJim Jagielski //==================================================================
184*b1cdbd2cSJim Jagielski 
BrowseModeDialog(Window * pParent)185*b1cdbd2cSJim Jagielski BrowseModeDialog::BrowseModeDialog( Window *pParent ):
186*b1cdbd2cSJim Jagielski 	ModalDialog( pParent, WinBits( WB_MOVEABLE | WB_CLOSEABLE | WB_3DLOOK ) ),
187*b1cdbd2cSJim Jagielski 
188*b1cdbd2cSJim Jagielski 	aSingleSel( this ),
189*b1cdbd2cSJim Jagielski 	aMultiSel( this ),
190*b1cdbd2cSJim Jagielski 	aSelGroup( this ),
191*b1cdbd2cSJim Jagielski 
192*b1cdbd2cSJim Jagielski 	aKeepHighlight( this ),
193*b1cdbd2cSJim Jagielski 	aColumnCursor( this ),
194*b1cdbd2cSJim Jagielski 	aThumbDragging( this ),
195*b1cdbd2cSJim Jagielski 	aOptGroup( this ),
196*b1cdbd2cSJim Jagielski 
197*b1cdbd2cSJim Jagielski 	aNoHLines( this ),
198*b1cdbd2cSJim Jagielski 	aDottedHLines( this ),
199*b1cdbd2cSJim Jagielski 	aFullHLines( this ),
200*b1cdbd2cSJim Jagielski 	aHLinGroup( this ),
201*b1cdbd2cSJim Jagielski 
202*b1cdbd2cSJim Jagielski 	aNoVLines( this, WinBits( WB_GROUP ) ),
203*b1cdbd2cSJim Jagielski 	aDottedVLines( this ),
204*b1cdbd2cSJim Jagielski 	aFullVLines( this ),
205*b1cdbd2cSJim Jagielski 	aVLinGroup( this ),
206*b1cdbd2cSJim Jagielski 
207*b1cdbd2cSJim Jagielski 	aOKButton( this ),
208*b1cdbd2cSJim Jagielski 	aCancelButton( this )
209*b1cdbd2cSJim Jagielski {
210*b1cdbd2cSJim Jagielski 	SetOutputSizePixel( Size( 290, 220 ) );
211*b1cdbd2cSJim Jagielski 	SetText( String( "Browse Mode", RTL_TEXTENCODING_IBM_850 ) );
212*b1cdbd2cSJim Jagielski 
213*b1cdbd2cSJim Jagielski 	aSingleSel.SetText( String( "single", RTL_TEXTENCODING_IBM_850 ) );
214*b1cdbd2cSJim Jagielski 	aMultiSel.SetText( String( "multi", RTL_TEXTENCODING_IBM_850 ) );
215*b1cdbd2cSJim Jagielski 	aSelGroup.SetText( String( " Selection ", RTL_TEXTENCODING_IBM_850 ) );
216*b1cdbd2cSJim Jagielski 
217*b1cdbd2cSJim Jagielski 	aKeepHighlight.SetText( String( "keep highlight", RTL_TEXTENCODING_IBM_850 ) );
218*b1cdbd2cSJim Jagielski 	aColumnCursor.SetText( String( "column cursor", RTL_TEXTENCODING_IBM_850 ) );
219*b1cdbd2cSJim Jagielski 	aThumbDragging.SetText( String( "thumb dragging", RTL_TEXTENCODING_IBM_850 ) );
220*b1cdbd2cSJim Jagielski 	aOptGroup.SetText( String( " Options ", RTL_TEXTENCODING_IBM_850 ) );
221*b1cdbd2cSJim Jagielski 
222*b1cdbd2cSJim Jagielski 	aNoHLines.SetText( String( "none", RTL_TEXTENCODING_IBM_850 ) );
223*b1cdbd2cSJim Jagielski 	aDottedHLines.SetText( String( "dotted", RTL_TEXTENCODING_IBM_850 ) );
224*b1cdbd2cSJim Jagielski 	aFullHLines.SetText( String( "full", RTL_TEXTENCODING_IBM_850 ) );
225*b1cdbd2cSJim Jagielski 	aHLinGroup.SetText( String( " Horizontal ", RTL_TEXTENCODING_IBM_850 ) );
226*b1cdbd2cSJim Jagielski 
227*b1cdbd2cSJim Jagielski 	aNoVLines.SetText( String( "none", RTL_TEXTENCODING_IBM_850 ) );
228*b1cdbd2cSJim Jagielski 	aDottedVLines.SetText( String( "dotted", RTL_TEXTENCODING_IBM_850 ) );
229*b1cdbd2cSJim Jagielski 	aFullVLines.SetText( String( "full", RTL_TEXTENCODING_IBM_850 ) );
230*b1cdbd2cSJim Jagielski 	aVLinGroup.SetText( String( " Vertical ", RTL_TEXTENCODING_IBM_850 ) );
231*b1cdbd2cSJim Jagielski 
232*b1cdbd2cSJim Jagielski 	aSingleSel.SetPosSizePixel( Point( 20, 30 ), Size( 80, 14 ) );
233*b1cdbd2cSJim Jagielski 	aMultiSel.SetPosSizePixel( Point( 20, 70 ), Size( 80, 14 ) );
234*b1cdbd2cSJim Jagielski 	aSelGroup.SetPosSizePixel( Point( 10, 10 ), Size( 100, 80 ) );
235*b1cdbd2cSJim Jagielski 	aSelGroup.SetText( String( " Selection ", RTL_TEXTENCODING_IBM_850 ) );
236*b1cdbd2cSJim Jagielski 
237*b1cdbd2cSJim Jagielski 	aKeepHighlight.SetPosSizePixel( Point( 130, 30 ), Size( 140, 14 ) );
238*b1cdbd2cSJim Jagielski 	aColumnCursor.SetPosSizePixel( Point( 130, 50 ), Size( 140, 14 ) );
239*b1cdbd2cSJim Jagielski 	aThumbDragging.SetPosSizePixel( Point( 130, 70 ), Size( 140, 14 ) );
240*b1cdbd2cSJim Jagielski 	aOptGroup.SetPosSizePixel( Point( 120, 10 ), Size( 160, 80 ) );
241*b1cdbd2cSJim Jagielski 	aOptGroup.SetText( String( " Options ", RTL_TEXTENCODING_IBM_850 ) );
242*b1cdbd2cSJim Jagielski 
243*b1cdbd2cSJim Jagielski 	aNoHLines.SetPosSizePixel( Point( 20, 120 ), Size( 80, 14 ) );
244*b1cdbd2cSJim Jagielski 	aDottedHLines.SetPosSizePixel( Point( 20, 140 ), Size( 80, 14 ) );
245*b1cdbd2cSJim Jagielski 	aFullHLines.SetPosSizePixel( Point( 20, 160 ), Size( 80, 14 ) );
246*b1cdbd2cSJim Jagielski 	aHLinGroup.SetPosSizePixel( Point( 10, 100 ), Size( 100, 80 ) );
247*b1cdbd2cSJim Jagielski 	aHLinGroup.SetText( String( " horizontal ", RTL_TEXTENCODING_IBM_850 ) );
248*b1cdbd2cSJim Jagielski 
249*b1cdbd2cSJim Jagielski 	aNoVLines.SetPosSizePixel( Point( 130, 120 ), Size( 80, 14 ) );
250*b1cdbd2cSJim Jagielski 	aDottedVLines.SetPosSizePixel( Point( 130, 140 ), Size( 80, 14 ) );
251*b1cdbd2cSJim Jagielski 	aFullVLines.SetPosSizePixel( Point( 130, 160 ), Size( 80, 14 ) );
252*b1cdbd2cSJim Jagielski 	aVLinGroup.SetPosSizePixel( Point( 120, 100 ), Size( 100, 80 ) );
253*b1cdbd2cSJim Jagielski 	aVLinGroup.SetText( String( " vertical ", RTL_TEXTENCODING_IBM_850 ) );
254*b1cdbd2cSJim Jagielski 
255*b1cdbd2cSJim Jagielski 	aOKButton.SetPosSizePixel( Point( 10, 190 ), Size( 100, 22 ) );
256*b1cdbd2cSJim Jagielski 	aCancelButton.SetPosSizePixel( Point( 120, 190 ), Size( 100, 22 ) );
257*b1cdbd2cSJim Jagielski 
258*b1cdbd2cSJim Jagielski 	aSingleSel.Check();
259*b1cdbd2cSJim Jagielski 	aNoHLines.Check();
260*b1cdbd2cSJim Jagielski 	aNoVLines.Check();
261*b1cdbd2cSJim Jagielski 
262*b1cdbd2cSJim Jagielski 	aSingleSel.Show();
263*b1cdbd2cSJim Jagielski 	aMultiSel.Show();
264*b1cdbd2cSJim Jagielski 	aSelGroup.Show();
265*b1cdbd2cSJim Jagielski 
266*b1cdbd2cSJim Jagielski 	aKeepHighlight.Show();
267*b1cdbd2cSJim Jagielski 	aColumnCursor.Show();
268*b1cdbd2cSJim Jagielski 	aThumbDragging.Show();
269*b1cdbd2cSJim Jagielski 	aOptGroup.Show();
270*b1cdbd2cSJim Jagielski 
271*b1cdbd2cSJim Jagielski 	aNoHLines.Show();
272*b1cdbd2cSJim Jagielski 	aDottedHLines.Show();
273*b1cdbd2cSJim Jagielski 	aFullHLines.Show();
274*b1cdbd2cSJim Jagielski 	aHLinGroup.Show();
275*b1cdbd2cSJim Jagielski 
276*b1cdbd2cSJim Jagielski 	aNoVLines.Show();
277*b1cdbd2cSJim Jagielski 	aDottedVLines.Show();
278*b1cdbd2cSJim Jagielski 	aFullVLines.Show();
279*b1cdbd2cSJim Jagielski 	aVLinGroup.Show();
280*b1cdbd2cSJim Jagielski 
281*b1cdbd2cSJim Jagielski 	aOKButton.Show();
282*b1cdbd2cSJim Jagielski 	aCancelButton.Show();
283*b1cdbd2cSJim Jagielski }
284*b1cdbd2cSJim Jagielski 
285*b1cdbd2cSJim Jagielski //------------------------------------------------------------------
286*b1cdbd2cSJim Jagielski 
SetMode(BrowserMode eMode)287*b1cdbd2cSJim Jagielski void BrowseModeDialog::SetMode( BrowserMode eMode )
288*b1cdbd2cSJim Jagielski {
289*b1cdbd2cSJim Jagielski 	if ( ( eMode & BROWSER_COLUMNSELECTION ) == BROWSER_COLUMNSELECTION )
290*b1cdbd2cSJim Jagielski 		aColumnCursor.Check();
291*b1cdbd2cSJim Jagielski 	if ( ( eMode & BROWSER_MULTISELECTION ) == BROWSER_MULTISELECTION )
292*b1cdbd2cSJim Jagielski 		aMultiSel.Check();
293*b1cdbd2cSJim Jagielski 	if ( ( eMode & BROWSER_THUMBDRAGGING ) == BROWSER_THUMBDRAGGING )
294*b1cdbd2cSJim Jagielski 		aThumbDragging.Check();
295*b1cdbd2cSJim Jagielski 	if ( ( eMode & BROWSER_KEEPHIGHLIGHT ) == BROWSER_KEEPHIGHLIGHT )
296*b1cdbd2cSJim Jagielski 		aKeepHighlight.Check();
297*b1cdbd2cSJim Jagielski 	if ( ( eMode & BROWSER_HLINESFULL ) == BROWSER_HLINESFULL )
298*b1cdbd2cSJim Jagielski 		aFullHLines.Check();
299*b1cdbd2cSJim Jagielski 	if ( ( eMode & BROWSER_VLINESFULL ) == BROWSER_VLINESFULL )
300*b1cdbd2cSJim Jagielski 		aFullVLines.Check();
301*b1cdbd2cSJim Jagielski 	if ( ( eMode & BROWSER_HLINESDOTS ) == BROWSER_HLINESDOTS )
302*b1cdbd2cSJim Jagielski 		aDottedHLines.Check();
303*b1cdbd2cSJim Jagielski 	if ( ( eMode & BROWSER_VLINESDOTS ) == BROWSER_VLINESDOTS )
304*b1cdbd2cSJim Jagielski 		aDottedVLines.Check();
305*b1cdbd2cSJim Jagielski }
306*b1cdbd2cSJim Jagielski 
307*b1cdbd2cSJim Jagielski //------------------------------------------------------------------
308*b1cdbd2cSJim Jagielski 
GetMode() const309*b1cdbd2cSJim Jagielski BrowserMode BrowseModeDialog::GetMode() const
310*b1cdbd2cSJim Jagielski {
311*b1cdbd2cSJim Jagielski 	BrowserMode eMode = 0;
312*b1cdbd2cSJim Jagielski 
313*b1cdbd2cSJim Jagielski 	if ( aColumnCursor.IsChecked() )
314*b1cdbd2cSJim Jagielski 		eMode |= BROWSER_COLUMNSELECTION;
315*b1cdbd2cSJim Jagielski 	if ( aMultiSel.IsChecked() )
316*b1cdbd2cSJim Jagielski 		eMode |= BROWSER_MULTISELECTION;
317*b1cdbd2cSJim Jagielski 
318*b1cdbd2cSJim Jagielski 	if ( aKeepHighlight.IsChecked() )
319*b1cdbd2cSJim Jagielski 		eMode |= BROWSER_KEEPHIGHLIGHT;
320*b1cdbd2cSJim Jagielski 	if ( aThumbDragging.IsChecked() )
321*b1cdbd2cSJim Jagielski 		eMode |= BROWSER_THUMBDRAGGING;
322*b1cdbd2cSJim Jagielski 
323*b1cdbd2cSJim Jagielski 	if ( aDottedHLines.IsChecked() )
324*b1cdbd2cSJim Jagielski 		eMode |= BROWSER_HLINESDOTS;
325*b1cdbd2cSJim Jagielski 	if ( aFullHLines.IsChecked() )
326*b1cdbd2cSJim Jagielski 		eMode |= BROWSER_HLINESFULL;
327*b1cdbd2cSJim Jagielski 
328*b1cdbd2cSJim Jagielski 	if ( aDottedVLines.IsChecked() )
329*b1cdbd2cSJim Jagielski 		eMode |= BROWSER_VLINESDOTS;
330*b1cdbd2cSJim Jagielski 	if ( aFullVLines.IsChecked() )
331*b1cdbd2cSJim Jagielski 		eMode |= BROWSER_VLINESFULL;
332*b1cdbd2cSJim Jagielski 
333*b1cdbd2cSJim Jagielski 	return eMode;
334*b1cdbd2cSJim Jagielski }
335*b1cdbd2cSJim Jagielski 
336*b1cdbd2cSJim Jagielski //==================================================================
337*b1cdbd2cSJim Jagielski 
Browser(AppWindow * pParent,BrowserMode eMode)338*b1cdbd2cSJim Jagielski Browser::Browser( AppWindow* pParent, BrowserMode eMode ):
339*b1cdbd2cSJim Jagielski 	BrowseBox( pParent, WinBits(WB_DRAG), eMode ),
340*b1cdbd2cSJim Jagielski 	bInverse(sal_False),
341*b1cdbd2cSJim Jagielski 	pEdit( 0 )
342*b1cdbd2cSJim Jagielski {
343*b1cdbd2cSJim Jagielski 	for ( long n = 0; n < 100; ++n )
344*b1cdbd2cSJim Jagielski 		aRows.Insert( n, LIST_APPEND );
345*b1cdbd2cSJim Jagielski 
346*b1cdbd2cSJim Jagielski 	//InsertHandleColumn( 30 );
347*b1cdbd2cSJim Jagielski 	InsertDataColumn( 1, String( "eins", RTL_TEXTENCODING_IBM_850 ), 85 ); // FreezeColumn( 1 );
348*b1cdbd2cSJim Jagielski 	InsertDataColumn( 2, String( "zwei", RTL_TEXTENCODING_IBM_850 ), 85 ); // FreezeColumn( 2 );
349*b1cdbd2cSJim Jagielski 	InsertDataColumn( 3, String( "drei", RTL_TEXTENCODING_IBM_850 ), 85 );
350*b1cdbd2cSJim Jagielski 	InsertDataColumn( 4, String( "vier", RTL_TEXTENCODING_IBM_850 ), 85 );
351*b1cdbd2cSJim Jagielski 	InsertDataColumn( 5, String( "fuenf", RTL_TEXTENCODING_IBM_850 ), 85 );
352*b1cdbd2cSJim Jagielski 	InsertDataColumn( 6, String( "sechs", RTL_TEXTENCODING_IBM_850 ), 85 );
353*b1cdbd2cSJim Jagielski 	InsertDataColumn( 7, String( "sieben", RTL_TEXTENCODING_IBM_850 ), 85 );
354*b1cdbd2cSJim Jagielski 	InsertDataColumn( 8, String( "acht", RTL_TEXTENCODING_IBM_850 ), 85 );
355*b1cdbd2cSJim Jagielski 	InsertDataColumn( 9, String( "neun", RTL_TEXTENCODING_IBM_850 ), 85 );
356*b1cdbd2cSJim Jagielski 	InsertDataColumn(10, String( "zehn", RTL_TEXTENCODING_IBM_850 ), 85 );
357*b1cdbd2cSJim Jagielski }
358*b1cdbd2cSJim Jagielski 
359*b1cdbd2cSJim Jagielski //------------------------------------------------------------------
360*b1cdbd2cSJim Jagielski 
~Browser()361*b1cdbd2cSJim Jagielski Browser::~Browser()
362*b1cdbd2cSJim Jagielski {
363*b1cdbd2cSJim Jagielski 	delete pEdit;
364*b1cdbd2cSJim Jagielski }
365*b1cdbd2cSJim Jagielski 
366*b1cdbd2cSJim Jagielski //------------------------------------------------------------------
367*b1cdbd2cSJim Jagielski 
StartDragging(Pointer & rMovePtr,Pointer & rCopyPtr)368*b1cdbd2cSJim Jagielski sal_Bool Browser::StartDragging( Pointer& rMovePtr, Pointer& rCopyPtr )
369*b1cdbd2cSJim Jagielski {
370*b1cdbd2cSJim Jagielski 	rMovePtr = Pointer( POINTER_MOVEDATA );
371*b1cdbd2cSJim Jagielski 	rCopyPtr = Pointer( POINTER_COPYDATA );
372*b1cdbd2cSJim Jagielski 	return sal_True;
373*b1cdbd2cSJim Jagielski }
374*b1cdbd2cSJim Jagielski 
375*b1cdbd2cSJim Jagielski //------------------------------------------------------------------
376*b1cdbd2cSJim Jagielski 
MouseButtonDown(const BrowserMouseEvent & rEvt)377*b1cdbd2cSJim Jagielski void Browser::MouseButtonDown( const BrowserMouseEvent &rEvt )
378*b1cdbd2cSJim Jagielski {
379*b1cdbd2cSJim Jagielski 	if ( 3 == rEvt.GetClicks() )
380*b1cdbd2cSJim Jagielski 		InfoBox( 0, String( GetColumnAtXPosPixel(rEvt.GetPosPixel().X() ) ) ).Execute();
381*b1cdbd2cSJim Jagielski 	else
382*b1cdbd2cSJim Jagielski 		BrowseBox::MouseButtonDown( rEvt );
383*b1cdbd2cSJim Jagielski }
384*b1cdbd2cSJim Jagielski 
385*b1cdbd2cSJim Jagielski //------------------------------------------------------------------
386*b1cdbd2cSJim Jagielski 
EndDragging(const DropAction & rAction)387*b1cdbd2cSJim Jagielski void Browser::EndDragging( const DropAction &rAction )
388*b1cdbd2cSJim Jagielski {
389*b1cdbd2cSJim Jagielski }
390*b1cdbd2cSJim Jagielski 
391*b1cdbd2cSJim Jagielski //------------------------------------------------------------------
392*b1cdbd2cSJim Jagielski 
StartScroll()393*b1cdbd2cSJim Jagielski void Browser::StartScroll()
394*b1cdbd2cSJim Jagielski {
395*b1cdbd2cSJim Jagielski 	( (AppWindow*) GetParent() )->Event( String( "StartScroll", RTL_TEXTENCODING_IBM_850 ) );
396*b1cdbd2cSJim Jagielski 	if ( pEdit )
397*b1cdbd2cSJim Jagielski 		pEdit->Hide();
398*b1cdbd2cSJim Jagielski 	BrowseBox::StartScroll();
399*b1cdbd2cSJim Jagielski }
400*b1cdbd2cSJim Jagielski 
401*b1cdbd2cSJim Jagielski //------------------------------------------------------------------
402*b1cdbd2cSJim Jagielski 
EndScroll()403*b1cdbd2cSJim Jagielski void Browser::EndScroll()
404*b1cdbd2cSJim Jagielski {
405*b1cdbd2cSJim Jagielski 	BrowseBox::EndScroll();
406*b1cdbd2cSJim Jagielski 	( (AppWindow*) GetParent() )->Event( String( "EndScroll", RTL_TEXTENCODING_IBM_850 ) );
407*b1cdbd2cSJim Jagielski 	if ( pEdit )
408*b1cdbd2cSJim Jagielski 		pEdit->Show();
409*b1cdbd2cSJim Jagielski }
410*b1cdbd2cSJim Jagielski //------------------------------------------------------------------
411*b1cdbd2cSJim Jagielski 
Command(const CommandEvent & rEvt)412*b1cdbd2cSJim Jagielski void Browser::Command( const CommandEvent &rEvt )
413*b1cdbd2cSJim Jagielski {
414*b1cdbd2cSJim Jagielski 	String aEvent( String( "Command at ", RTL_TEXTENCODING_IBM_850 ) );
415*b1cdbd2cSJim Jagielski 	aEvent += rEvt.GetMousePosPixel().X();
416*b1cdbd2cSJim Jagielski 	aEvent += String( ":", RTL_TEXTENCODING_IBM_850 );
417*b1cdbd2cSJim Jagielski 	aEvent += rEvt.GetMousePosPixel().Y();
418*b1cdbd2cSJim Jagielski 	( (AppWindow*) GetParent() )->Event( aEvent );
419*b1cdbd2cSJim Jagielski 	BrowseBox::Command(rEvt);
420*b1cdbd2cSJim Jagielski }
421*b1cdbd2cSJim Jagielski 
422*b1cdbd2cSJim Jagielski //------------------------------------------------------------------
423*b1cdbd2cSJim Jagielski 
Select()424*b1cdbd2cSJim Jagielski void Browser::Select()
425*b1cdbd2cSJim Jagielski {
426*b1cdbd2cSJim Jagielski 	String aEvent( String( "Select: ", RTL_TEXTENCODING_IBM_850 ) );
427*b1cdbd2cSJim Jagielski 	DELETEZ(pEdit);
428*b1cdbd2cSJim Jagielski 	for ( long nRow = FirstSelectedRow(bInverse); nRow >= 0; nRow = NextSelectedRow() )
429*b1cdbd2cSJim Jagielski 	{
430*b1cdbd2cSJim Jagielski 		if ( bInverse )
431*b1cdbd2cSJim Jagielski 			aEvent += String( String( "~", RTL_TEXTENCODING_IBM_850 ) );
432*b1cdbd2cSJim Jagielski 		aEvent += String( nRow );
433*b1cdbd2cSJim Jagielski 		aEvent += String( ", ", RTL_TEXTENCODING_IBM_850 );
434*b1cdbd2cSJim Jagielski 	}
435*b1cdbd2cSJim Jagielski 	aEvent.Erase( aEvent.Len() - 2 );
436*b1cdbd2cSJim Jagielski 
437*b1cdbd2cSJim Jagielski 	( (AppWindow*) GetParent() )->Event( aEvent );
438*b1cdbd2cSJim Jagielski }
439*b1cdbd2cSJim Jagielski 
440*b1cdbd2cSJim Jagielski //------------------------------------------------------------------
441*b1cdbd2cSJim Jagielski 
DoubleClick()442*b1cdbd2cSJim Jagielski void Browser::DoubleClick()
443*b1cdbd2cSJim Jagielski {
444*b1cdbd2cSJim Jagielski 	String aEvent( String( "DoubleClick: ", RTL_TEXTENCODING_IBM_850 ) );
445*b1cdbd2cSJim Jagielski 	aEvent += String( GetCurRow() );
446*b1cdbd2cSJim Jagielski 	aEvent += String( String( ", ", RTL_TEXTENCODING_IBM_850 ) );
447*b1cdbd2cSJim Jagielski 	aEvent += String( FirstSelectedRow() );
448*b1cdbd2cSJim Jagielski 	( (AppWindow*) GetParent() )->Event( aEvent );
449*b1cdbd2cSJim Jagielski 
450*b1cdbd2cSJim Jagielski 	SetNoSelection();
451*b1cdbd2cSJim Jagielski 	if ( !pEdit )
452*b1cdbd2cSJim Jagielski 		pEdit = new Edit( &GetDataWindow() );
453*b1cdbd2cSJim Jagielski 	Rectangle aRect( GetFieldRect( GetCurColumnId() ) );
454*b1cdbd2cSJim Jagielski 	pEdit->SetPosSizePixel( aRect.TopLeft(), aRect.GetSize() );
455*b1cdbd2cSJim Jagielski 	pEdit->Show();
456*b1cdbd2cSJim Jagielski 	pEdit->GrabFocus();
457*b1cdbd2cSJim Jagielski }
458*b1cdbd2cSJim Jagielski 
459*b1cdbd2cSJim Jagielski //------------------------------------------------------------------
460*b1cdbd2cSJim Jagielski 
CursorMoved()461*b1cdbd2cSJim Jagielski void Browser::CursorMoved()
462*b1cdbd2cSJim Jagielski {
463*b1cdbd2cSJim Jagielski 	String aEvent( String( "Cursor: ", RTL_TEXTENCODING_IBM_850 ) );
464*b1cdbd2cSJim Jagielski 	aEvent += String( GetCurRow() );
465*b1cdbd2cSJim Jagielski 	aEvent += String( ":", RTL_TEXTENCODING_IBM_850 );
466*b1cdbd2cSJim Jagielski 	aEvent += String( GetCurColumnId() );
467*b1cdbd2cSJim Jagielski 	( (AppWindow*) GetParent() )->Event( aEvent );
468*b1cdbd2cSJim Jagielski 	if ( IsFieldVisible( GetCurRow(), GetCurColumnId(), sal_True ) )
469*b1cdbd2cSJim Jagielski 		( (AppWindow*) GetParent() )->Event( String( "completely visible", RTL_TEXTENCODING_IBM_850 ) );
470*b1cdbd2cSJim Jagielski 	else if ( IsFieldVisible( 1, GetCurColumnId(), sal_False) )
471*b1cdbd2cSJim Jagielski 		( (AppWindow*) GetParent() )->Event( String( "partly visible", RTL_TEXTENCODING_IBM_850 ) );
472*b1cdbd2cSJim Jagielski 	else
473*b1cdbd2cSJim Jagielski 		( (AppWindow*) GetParent() )->Event( String( "not visible", RTL_TEXTENCODING_IBM_850 ) );
474*b1cdbd2cSJim Jagielski 
475*b1cdbd2cSJim Jagielski 	DELETEZ(pEdit);
476*b1cdbd2cSJim Jagielski }
477*b1cdbd2cSJim Jagielski 
478*b1cdbd2cSJim Jagielski //------------------------------------------------------------------
479*b1cdbd2cSJim Jagielski 
GetRowCount() const480*b1cdbd2cSJim Jagielski long Browser::GetRowCount() const
481*b1cdbd2cSJim Jagielski {
482*b1cdbd2cSJim Jagielski 	return aRows.Count();
483*b1cdbd2cSJim Jagielski }
484*b1cdbd2cSJim Jagielski 
485*b1cdbd2cSJim Jagielski //------------------------------------------------------------------
486*b1cdbd2cSJim Jagielski 
SeekRow(long nRow)487*b1cdbd2cSJim Jagielski sal_Bool Browser::SeekRow( long nRow )
488*b1cdbd2cSJim Jagielski {
489*b1cdbd2cSJim Jagielski 	if ( nRow >= 0 && nRow < (long) aRows.Count() )
490*b1cdbd2cSJim Jagielski 	{
491*b1cdbd2cSJim Jagielski 		aRows.Seek(nRow);
492*b1cdbd2cSJim Jagielski 		return sal_True;
493*b1cdbd2cSJim Jagielski 	}
494*b1cdbd2cSJim Jagielski 	return sal_False;
495*b1cdbd2cSJim Jagielski }
496*b1cdbd2cSJim Jagielski 
497*b1cdbd2cSJim Jagielski //------------------------------------------------------------------
498*b1cdbd2cSJim Jagielski 
PaintField(OutputDevice & rDev,const Rectangle & rRect,sal_uInt16 nColumnId) const499*b1cdbd2cSJim Jagielski void Browser::PaintField( OutputDevice& rDev, const Rectangle& rRect,
500*b1cdbd2cSJim Jagielski 						  sal_uInt16 nColumnId ) const
501*b1cdbd2cSJim Jagielski {
502*b1cdbd2cSJim Jagielski 	rDev.SetClipRegion( rRect );
503*b1cdbd2cSJim Jagielski 	String aText( aRows.GetCurObject() );
504*b1cdbd2cSJim Jagielski 	aText += String( ".", RTL_TEXTENCODING_IBM_850 );
505*b1cdbd2cSJim Jagielski 	aText += String( nColumnId );
506*b1cdbd2cSJim Jagielski 	rDev.DrawText( rRect.TopLeft(), aText );
507*b1cdbd2cSJim Jagielski }
508*b1cdbd2cSJim Jagielski 
509*b1cdbd2cSJim Jagielski //==================================================================
510*b1cdbd2cSJim Jagielski 
AppWindow()511*b1cdbd2cSJim Jagielski AppWindow::AppWindow():
512*b1cdbd2cSJim Jagielski 	WorkWindow( 0, WinBits(WB_APP|WB_STDWORK) ),
513*b1cdbd2cSJim Jagielski 	aEdit( this, WinBits( WB_BORDER ) ),
514*b1cdbd2cSJim Jagielski 	aBrowser( this, 0 ),
515*b1cdbd2cSJim Jagielski 	eCurMode( 0 ),
516*b1cdbd2cSJim Jagielski 	pEventView( 0 ),
517*b1cdbd2cSJim Jagielski 	nNewRowNo( 2000L )
518*b1cdbd2cSJim Jagielski {
519*b1cdbd2cSJim Jagielski 	SetText( String( "BrowseBox Testframe", RTL_TEXTENCODING_IBM_850 ) );
520*b1cdbd2cSJim Jagielski 
521*b1cdbd2cSJim Jagielski 	aMenu.InsertItem( MID_BROWSER, String( "~Browser", RTL_TEXTENCODING_IBM_850 ) );
522*b1cdbd2cSJim Jagielski 	 aMenu.SetPopupMenu( MID_BROWSER, &aBrwMenu );
523*b1cdbd2cSJim Jagielski 	 aBrwMenu.InsertItem( MID_MODE, String( "~Mode...", RTL_TEXTENCODING_IBM_850 ) );
524*b1cdbd2cSJim Jagielski 	 aBrwMenu.InsertItem( MID_EVENTVIEW, String( "~Event-Viewer", RTL_TEXTENCODING_IBM_850 ) );
525*b1cdbd2cSJim Jagielski 	 aBrwMenu.InsertSeparator();
526*b1cdbd2cSJim Jagielski 	 aBrwMenu.InsertItem( MID_INVALIDATE, String( "~Invalidate", RTL_TEXTENCODING_IBM_850 ) );
527*b1cdbd2cSJim Jagielski 	 aBrwMenu.InsertItem( MID_CLEAR, String( "~Clear", RTL_TEXTENCODING_IBM_850 ) );
528*b1cdbd2cSJim Jagielski 	aMenu.InsertItem( MID_ROW, String( "~Row", RTL_TEXTENCODING_IBM_850 ) );
529*b1cdbd2cSJim Jagielski 	 aMenu.SetPopupMenu( MID_ROW, &aRowMenu );
530*b1cdbd2cSJim Jagielski 	 aRowMenu.InsertItem( MID_INSERTROW_BEFORE, String( "Insert before current", RTL_TEXTENCODING_IBM_850 ) );
531*b1cdbd2cSJim Jagielski 	 aRowMenu.InsertItem( MID_INSERTROW_AT, String( "~Insert at current", RTL_TEXTENCODING_IBM_850 ) );
532*b1cdbd2cSJim Jagielski 	 aRowMenu.InsertItem( MID_INSERTROW_BEHIND, String( "~Insert behind current", RTL_TEXTENCODING_IBM_850 ) );
533*b1cdbd2cSJim Jagielski 	 aRowMenu.InsertSeparator();
534*b1cdbd2cSJim Jagielski 	 aRowMenu.InsertItem( MID_REMOVEROW_BEFORE, String( "Remove before current", RTL_TEXTENCODING_IBM_850 ) );
535*b1cdbd2cSJim Jagielski 	 aRowMenu.InsertItem( MID_REMOVEROW_AT, String( "~Remove at current", RTL_TEXTENCODING_IBM_850 ) );
536*b1cdbd2cSJim Jagielski 	 aRowMenu.InsertItem( MID_REMOVEROW_BEHIND, String( "~Remove behind current", RTL_TEXTENCODING_IBM_850 ) );
537*b1cdbd2cSJim Jagielski 	 aRowMenu.InsertSeparator();
538*b1cdbd2cSJim Jagielski 	 aRowMenu.InsertItem( MID_MODIFYROW_BEFORE, String( "Modify before current", RTL_TEXTENCODING_IBM_850 ) );
539*b1cdbd2cSJim Jagielski 	 aRowMenu.InsertItem( MID_MODIFYROW_AT, String( "~Modify at current", RTL_TEXTENCODING_IBM_850 ) );
540*b1cdbd2cSJim Jagielski 	 aRowMenu.InsertItem( MID_MODIFYROW_BEHIND, String( "~Modify behind current", RTL_TEXTENCODING_IBM_850 ) );
541*b1cdbd2cSJim Jagielski 	aMenu.InsertItem( MID_COL, String( "~Column", RTL_TEXTENCODING_IBM_850 ) );
542*b1cdbd2cSJim Jagielski 	 aMenu.SetPopupMenu( MID_COL, &aColMenu );
543*b1cdbd2cSJim Jagielski 	 aColMenu.InsertItem( MID_INSERTCOL, String( "~Insert", RTL_TEXTENCODING_IBM_850 ) );
544*b1cdbd2cSJim Jagielski 	 aColMenu.InsertItem( MID_REMOVECOL, String( "Re~move", RTL_TEXTENCODING_IBM_850 ) );
545*b1cdbd2cSJim Jagielski 	 aColMenu.InsertItem( MID_MOVECOLLEFT, String( "Move ~Left", RTL_TEXTENCODING_IBM_850 ) );
546*b1cdbd2cSJim Jagielski 	 aColMenu.InsertItem( MID_MOVECOLRIGHT, String( "Move ~Right", RTL_TEXTENCODING_IBM_850 ) );
547*b1cdbd2cSJim Jagielski 	aMenu.InsertItem( MID_SELECTIONS, String( "Selections", RTL_TEXTENCODING_IBM_850 ) );
548*b1cdbd2cSJim Jagielski 	 aMenu.SetPopupMenu( MID_SELECTIONS, &aSelMenu );
549*b1cdbd2cSJim Jagielski 	 aSelMenu.InsertItem( MID_SELECTROW, String( "Row", RTL_TEXTENCODING_IBM_850 ) );
550*b1cdbd2cSJim Jagielski 	 aSelMenu.InsertItem( MID_SELECTALL, String( "All", RTL_TEXTENCODING_IBM_850 ) );
551*b1cdbd2cSJim Jagielski 	 aSelMenu.InsertItem( MID_SELECTNONE, String( "None", RTL_TEXTENCODING_IBM_850 ) );
552*b1cdbd2cSJim Jagielski 	 aSelMenu.InsertItem( MID_INVERSE, String( "Inverse", RTL_TEXTENCODING_IBM_850 ), MENU_APPEND, MIB_CHECKABLE );
553*b1cdbd2cSJim Jagielski 	aMenu.InsertItem( MID_EXTRAS, String( "Extras", RTL_TEXTENCODING_IBM_850 ) );
554*b1cdbd2cSJim Jagielski 	 aMenu.SetPopupMenu( MID_EXTRAS, &aExtMenu );
555*b1cdbd2cSJim Jagielski 	 aExtMenu.InsertItem( MID_STARMONEY_1, String( "StarMoney: SelectRow(+1)+DeleteRow", RTL_TEXTENCODING_IBM_850 ) );
556*b1cdbd2cSJim Jagielski 	aMenu.PushSelectHdl( LINK(this, AppWindow, MenuSelect) );
557*b1cdbd2cSJim Jagielski 
558*b1cdbd2cSJim Jagielski 	aEdit.SetModifyHdl( LINK(this,AppWindow,Modify) );
559*b1cdbd2cSJim Jagielski 
560*b1cdbd2cSJim Jagielski 	aEdit.Show();
561*b1cdbd2cSJim Jagielski 	aBrowser.Show();
562*b1cdbd2cSJim Jagielski 	Show();
563*b1cdbd2cSJim Jagielski }
564*b1cdbd2cSJim Jagielski 
565*b1cdbd2cSJim Jagielski //------------------------------------------------------------------
566*b1cdbd2cSJim Jagielski 
~AppWindow()567*b1cdbd2cSJim Jagielski AppWindow::~AppWindow()
568*b1cdbd2cSJim Jagielski {
569*b1cdbd2cSJim Jagielski 	GetpApp()->SetAppMenu( 0 );
570*b1cdbd2cSJim Jagielski 	if ( pEventView )
571*b1cdbd2cSJim Jagielski 		delete pEventView;
572*b1cdbd2cSJim Jagielski }
573*b1cdbd2cSJim Jagielski 
574*b1cdbd2cSJim Jagielski //------------------------------------------------------------------
575*b1cdbd2cSJim Jagielski 
IMPL_LINK_INLINE_START(AppWindow,Modify,void *,pCaller)576*b1cdbd2cSJim Jagielski IMPL_LINK_INLINE_START( AppWindow, Modify, void *, pCaller )
577*b1cdbd2cSJim Jagielski {
578*b1cdbd2cSJim Jagielski 	Edit *pEdit = (Edit*) pCaller;
579*b1cdbd2cSJim Jagielski 	aBrowser.GoToRow( pEdit->GetText().ToInt32() );
580*b1cdbd2cSJim Jagielski 	aBrowser.GrabFocus();
581*b1cdbd2cSJim Jagielski 
582*b1cdbd2cSJim Jagielski 	return sal_True;
583*b1cdbd2cSJim Jagielski }
IMPL_LINK_INLINE_END(AppWindow,Modify,void *,pCaller)584*b1cdbd2cSJim Jagielski IMPL_LINK_INLINE_END( AppWindow, Modify, void *, pCaller )
585*b1cdbd2cSJim Jagielski 
586*b1cdbd2cSJim Jagielski //------------------------------------------------------------------
587*b1cdbd2cSJim Jagielski 
588*b1cdbd2cSJim Jagielski IMPL_LINK( AppWindow, MenuSelect, Menu *, pMenu )
589*b1cdbd2cSJim Jagielski {
590*b1cdbd2cSJim Jagielski 	sal_uLong nPos;
591*b1cdbd2cSJim Jagielski 
592*b1cdbd2cSJim Jagielski 	switch ( pMenu->GetCurItemId() )
593*b1cdbd2cSJim Jagielski 	{
594*b1cdbd2cSJim Jagielski 		case MID_MODE:
595*b1cdbd2cSJim Jagielski 		{
596*b1cdbd2cSJim Jagielski 			BrowseModeDialog *pDlg = new BrowseModeDialog( this );
597*b1cdbd2cSJim Jagielski 			pDlg->SetMode( eCurMode );
598*b1cdbd2cSJim Jagielski 			if ( pDlg->Execute() == RET_OK )
599*b1cdbd2cSJim Jagielski 			{
600*b1cdbd2cSJim Jagielski 				eCurMode = pDlg->GetMode();
601*b1cdbd2cSJim Jagielski 				aBrowser.SetMode( eCurMode | BROWSER_AUTOSIZE_LASTCOL );
602*b1cdbd2cSJim Jagielski 			}
603*b1cdbd2cSJim Jagielski 			delete pDlg;
604*b1cdbd2cSJim Jagielski 			break;
605*b1cdbd2cSJim Jagielski 		}
606*b1cdbd2cSJim Jagielski 
607*b1cdbd2cSJim Jagielski 		case MID_INVALIDATE:
608*b1cdbd2cSJim Jagielski 			aBrowser.Invalidate();
609*b1cdbd2cSJim Jagielski 			break;
610*b1cdbd2cSJim Jagielski 
611*b1cdbd2cSJim Jagielski 		case MID_INSERTROW_BEFORE:
612*b1cdbd2cSJim Jagielski 			if ( aBrowser.GetCurRow() == 0 )
613*b1cdbd2cSJim Jagielski 			{
614*b1cdbd2cSJim Jagielski 				Sound::Beep();
615*b1cdbd2cSJim Jagielski 				break;
616*b1cdbd2cSJim Jagielski 			}
617*b1cdbd2cSJim Jagielski 			nPos = aBrowser.GetCurRow() - 1;
618*b1cdbd2cSJim Jagielski 			aBrowser.aRows.Insert( nNewRowNo++, nPos );
619*b1cdbd2cSJim Jagielski 			aBrowser.RowInserted( aBrowser.GetCurRow()-1 );
620*b1cdbd2cSJim Jagielski 			break;
621*b1cdbd2cSJim Jagielski 
622*b1cdbd2cSJim Jagielski 		case MID_INSERTROW_AT:
623*b1cdbd2cSJim Jagielski 			nPos = aBrowser.GetCurRow();
624*b1cdbd2cSJim Jagielski 			if ( nPos == BROWSER_ENDOFSELECTION )
625*b1cdbd2cSJim Jagielski 				nPos = 0;
626*b1cdbd2cSJim Jagielski 			aBrowser.aRows.Insert( nNewRowNo++, nPos );
627*b1cdbd2cSJim Jagielski 			aBrowser.RowInserted( nPos );
628*b1cdbd2cSJim Jagielski 			break;
629*b1cdbd2cSJim Jagielski 
630*b1cdbd2cSJim Jagielski 		case MID_INSERTROW_BEHIND:
631*b1cdbd2cSJim Jagielski 			nPos = aBrowser.GetCurRow() + 1;
632*b1cdbd2cSJim Jagielski 			aBrowser.aRows.Insert( nNewRowNo++, nPos );
633*b1cdbd2cSJim Jagielski 			aBrowser.RowInserted( nPos );
634*b1cdbd2cSJim Jagielski 			break;
635*b1cdbd2cSJim Jagielski 
636*b1cdbd2cSJim Jagielski 		case MID_REMOVEROW_BEFORE:
637*b1cdbd2cSJim Jagielski 			if ( aBrowser.GetCurRow() == 0 )
638*b1cdbd2cSJim Jagielski 			{
639*b1cdbd2cSJim Jagielski 				Sound::Beep();
640*b1cdbd2cSJim Jagielski 				break;
641*b1cdbd2cSJim Jagielski 			}
642*b1cdbd2cSJim Jagielski 			nPos = aBrowser.GetCurRow() - 1;
643*b1cdbd2cSJim Jagielski 			aBrowser.aRows.Remove( nPos );
644*b1cdbd2cSJim Jagielski 			aBrowser.RowRemoved( nPos );
645*b1cdbd2cSJim Jagielski 			break;
646*b1cdbd2cSJim Jagielski 
647*b1cdbd2cSJim Jagielski 		case MID_REMOVEROW_AT:
648*b1cdbd2cSJim Jagielski 			nPos = aBrowser.GetCurRow();
649*b1cdbd2cSJim Jagielski 			aBrowser.aRows.Remove( nPos );
650*b1cdbd2cSJim Jagielski 			aBrowser.RowRemoved( nPos );
651*b1cdbd2cSJim Jagielski 			break;
652*b1cdbd2cSJim Jagielski 
653*b1cdbd2cSJim Jagielski 		case MID_REMOVEROW_BEHIND:
654*b1cdbd2cSJim Jagielski 			if ( (aBrowser.GetCurRow()+1) >= aBrowser.GetRowCount() )
655*b1cdbd2cSJim Jagielski 			{
656*b1cdbd2cSJim Jagielski 				Sound::Beep();
657*b1cdbd2cSJim Jagielski 				break;
658*b1cdbd2cSJim Jagielski 			}
659*b1cdbd2cSJim Jagielski 			nPos = aBrowser.GetCurRow() + 1;
660*b1cdbd2cSJim Jagielski 			aBrowser.aRows.Remove( nPos );
661*b1cdbd2cSJim Jagielski 			aBrowser.RowRemoved( nPos );
662*b1cdbd2cSJim Jagielski 			break;
663*b1cdbd2cSJim Jagielski 
664*b1cdbd2cSJim Jagielski 		case MID_MODIFYROW_BEFORE:
665*b1cdbd2cSJim Jagielski 			if ( aBrowser.GetCurRow() == 0 )
666*b1cdbd2cSJim Jagielski 			{
667*b1cdbd2cSJim Jagielski 				Sound::Beep();
668*b1cdbd2cSJim Jagielski 				break;
669*b1cdbd2cSJim Jagielski 			}
670*b1cdbd2cSJim Jagielski 			nPos = aBrowser.GetCurRow() - 1;
671*b1cdbd2cSJim Jagielski 			aBrowser.aRows.Replace( nNewRowNo++, nPos );
672*b1cdbd2cSJim Jagielski 			aBrowser.RowModified( nPos );
673*b1cdbd2cSJim Jagielski 			break;
674*b1cdbd2cSJim Jagielski 
675*b1cdbd2cSJim Jagielski 		case MID_MODIFYROW_AT:
676*b1cdbd2cSJim Jagielski 			nPos = aBrowser.GetCurRow();
677*b1cdbd2cSJim Jagielski 			aBrowser.aRows.Replace( nNewRowNo++, nPos );
678*b1cdbd2cSJim Jagielski 			aBrowser.RowModified( nPos );
679*b1cdbd2cSJim Jagielski 			break;
680*b1cdbd2cSJim Jagielski 
681*b1cdbd2cSJim Jagielski 		case MID_MODIFYROW_BEHIND:
682*b1cdbd2cSJim Jagielski 			if ( (aBrowser.GetCurRow()+1) >= aBrowser.GetRowCount() )
683*b1cdbd2cSJim Jagielski 			{
684*b1cdbd2cSJim Jagielski 				Sound::Beep();
685*b1cdbd2cSJim Jagielski 				break;
686*b1cdbd2cSJim Jagielski 			}
687*b1cdbd2cSJim Jagielski 			nPos = aBrowser.GetCurRow() + 1;
688*b1cdbd2cSJim Jagielski 			aBrowser.aRows.Replace( nNewRowNo++, nPos );
689*b1cdbd2cSJim Jagielski 			aBrowser.RowModified( nPos );
690*b1cdbd2cSJim Jagielski 			break;
691*b1cdbd2cSJim Jagielski 
692*b1cdbd2cSJim Jagielski 		case MID_EVENTVIEW:
693*b1cdbd2cSJim Jagielski 			if ( pEventView )
694*b1cdbd2cSJim Jagielski 			{
695*b1cdbd2cSJim Jagielski 				delete pEventView;
696*b1cdbd2cSJim Jagielski 				pEventView = 0;
697*b1cdbd2cSJim Jagielski 			}
698*b1cdbd2cSJim Jagielski 			else
699*b1cdbd2cSJim Jagielski 			{
700*b1cdbd2cSJim Jagielski 				pEventView = new FloatingWindow( this );
701*b1cdbd2cSJim Jagielski 				pEventView->SetPosPixel( Point( 100, 100 ) );
702*b1cdbd2cSJim Jagielski 				pEventView->SetOutputSizePixel(
703*b1cdbd2cSJim Jagielski 					Size( 320, 8*GetTextHeight() ) );
704*b1cdbd2cSJim Jagielski 				pEventView->Show();
705*b1cdbd2cSJim Jagielski 				aBrowser.CursorMoved();
706*b1cdbd2cSJim Jagielski 				aBrowser.Select();
707*b1cdbd2cSJim Jagielski 			}
708*b1cdbd2cSJim Jagielski 			break;
709*b1cdbd2cSJim Jagielski 
710*b1cdbd2cSJim Jagielski 		case MID_SELECTROW:
711*b1cdbd2cSJim Jagielski 			aBrowser.SelectRow( aBrowser.GetCurRow(),
712*b1cdbd2cSJim Jagielski 				!aBrowser.IsRowSelected( aBrowser.GetCurRow() ) );
713*b1cdbd2cSJim Jagielski 			break;
714*b1cdbd2cSJim Jagielski 
715*b1cdbd2cSJim Jagielski 		case MID_SELECTALL:
716*b1cdbd2cSJim Jagielski 			aBrowser.SelectAll();
717*b1cdbd2cSJim Jagielski 			break;
718*b1cdbd2cSJim Jagielski 
719*b1cdbd2cSJim Jagielski 		case MID_SELECTNONE:
720*b1cdbd2cSJim Jagielski 			aBrowser.SetNoSelection();
721*b1cdbd2cSJim Jagielski 			break;
722*b1cdbd2cSJim Jagielski 
723*b1cdbd2cSJim Jagielski 		case MID_INVERSE:
724*b1cdbd2cSJim Jagielski 		{
725*b1cdbd2cSJim Jagielski 			sal_Bool bChecked = pMenu->IsItemChecked( MID_INVERSE );
726*b1cdbd2cSJim Jagielski 			pMenu->CheckItem( MID_INVERSE, !bChecked );
727*b1cdbd2cSJim Jagielski 			aBrowser.SetInverseSelection( !bChecked );
728*b1cdbd2cSJim Jagielski 			break;
729*b1cdbd2cSJim Jagielski 		}
730*b1cdbd2cSJim Jagielski 
731*b1cdbd2cSJim Jagielski 		case MID_CLEAR:
732*b1cdbd2cSJim Jagielski 			aBrowser.Clear();
733*b1cdbd2cSJim Jagielski 			break;
734*b1cdbd2cSJim Jagielski 
735*b1cdbd2cSJim Jagielski 		case MID_STARMONEY_1:
736*b1cdbd2cSJim Jagielski 		{
737*b1cdbd2cSJim Jagielski 			nPos = aBrowser.GetCurRow();
738*b1cdbd2cSJim Jagielski 			aBrowser.SelectRow( nPos + 1, sal_True );
739*b1cdbd2cSJim Jagielski 			aBrowser.aRows.Remove( nPos );
740*b1cdbd2cSJim Jagielski 			aBrowser.RowRemoved( nPos );
741*b1cdbd2cSJim Jagielski 			break;
742*b1cdbd2cSJim Jagielski 		}
743*b1cdbd2cSJim Jagielski 	}
744*b1cdbd2cSJim Jagielski 
745*b1cdbd2cSJim Jagielski 	return sal_True;
746*b1cdbd2cSJim Jagielski }
747*b1cdbd2cSJim Jagielski 
748*b1cdbd2cSJim Jagielski //------------------------------------------------------------------
749*b1cdbd2cSJim Jagielski 
Resize()750*b1cdbd2cSJim Jagielski void AppWindow::Resize()
751*b1cdbd2cSJim Jagielski {
752*b1cdbd2cSJim Jagielski 	Size aOutSz( GetOutputSizePixel() );
753*b1cdbd2cSJim Jagielski 
754*b1cdbd2cSJim Jagielski 	aEdit.SetPosSizePixel(
755*b1cdbd2cSJim Jagielski 		Point( 0, 0 ),
756*b1cdbd2cSJim Jagielski 		Size( aOutSz.Width(), 24 ) );
757*b1cdbd2cSJim Jagielski 
758*b1cdbd2cSJim Jagielski 	aBrowser.SetPosSizePixel(
759*b1cdbd2cSJim Jagielski 		Point( 0, aEdit.GetSizePixel().Height() ),
760*b1cdbd2cSJim Jagielski 		Size( aOutSz.Width(), aOutSz.Height() - 24 ) );
761*b1cdbd2cSJim Jagielski }
762*b1cdbd2cSJim Jagielski 
763*b1cdbd2cSJim Jagielski //------------------------------------------------------------------
764*b1cdbd2cSJim Jagielski 
Activate()765*b1cdbd2cSJim Jagielski void AppWindow::Activate()
766*b1cdbd2cSJim Jagielski {
767*b1cdbd2cSJim Jagielski 	GetpApp()->SetAppMenu( &aMenu );
768*b1cdbd2cSJim Jagielski 	aBrowser.GrabFocus();
769*b1cdbd2cSJim Jagielski }
770*b1cdbd2cSJim Jagielski 
771*b1cdbd2cSJim Jagielski //------------------------------------------------------------------
772*b1cdbd2cSJim Jagielski 
Event(const String & rEvent)773*b1cdbd2cSJim Jagielski void AppWindow::Event( const String &rEvent )
774*b1cdbd2cSJim Jagielski {
775*b1cdbd2cSJim Jagielski 	if ( pEventView )
776*b1cdbd2cSJim Jagielski 	{
777*b1cdbd2cSJim Jagielski 		pEventView->Scroll( 0, -GetTextHeight() );
778*b1cdbd2cSJim Jagielski 		pEventView->Update();
779*b1cdbd2cSJim Jagielski 		pEventView->DrawText( Point(0, 7*GetTextHeight() ), rEvent );
780*b1cdbd2cSJim Jagielski 	}
781*b1cdbd2cSJim Jagielski }
782*b1cdbd2cSJim Jagielski 
783*b1cdbd2cSJim Jagielski //==================================================================
784*b1cdbd2cSJim Jagielski 
App()785*b1cdbd2cSJim Jagielski App::App()
786*b1cdbd2cSJim Jagielski {
787*b1cdbd2cSJim Jagielski }
788*b1cdbd2cSJim Jagielski 
789*b1cdbd2cSJim Jagielski //------------------------------------------------------------------
790*b1cdbd2cSJim Jagielski 
~App()791*b1cdbd2cSJim Jagielski App::~App()
792*b1cdbd2cSJim Jagielski {
793*b1cdbd2cSJim Jagielski }
794*b1cdbd2cSJim Jagielski 
795*b1cdbd2cSJim Jagielski //------------------------------------------------------------------
796*b1cdbd2cSJim Jagielski 
Main()797*b1cdbd2cSJim Jagielski void App::Main( )
798*b1cdbd2cSJim Jagielski {
799*b1cdbd2cSJim Jagielski 	EnableSVLook();
800*b1cdbd2cSJim Jagielski 
801*b1cdbd2cSJim Jagielski 	AppWindow aAppWin;
802*b1cdbd2cSJim Jagielski 
803*b1cdbd2cSJim Jagielski 
804*b1cdbd2cSJim Jagielski 	Execute();
805*b1cdbd2cSJim Jagielski }
806*b1cdbd2cSJim Jagielski 
807