blob: ec1dd022e7158b4bbcb467229ce0c248759adbbe [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.
*
*************************************************************/
// MARKER(update_precomp.py): autogen include statement, do not remove
#include "precompiled_svtools.hxx"
#include <vcl/svapp.hxx>
#include <vcl/sound.hxx>
#include <vcl/msgbox.hxx>
#include <vcl/floatwin.hxx>
#include <vcl/menu.hxx>
#include <vcl/wrkwin.hxx>
#include <vcl/edit.hxx>
#include <svtools/brwbox.hxx>
#include <vcl/group.hxx>
#ifndef _SV_BUTTON_HXX //autogen
#include <vcl/button.hxx>
#endif
#include <vcl/dialog.hxx>
#define MID_BROWSER 10
#define MID_MODE 11
#define MID_EVENTVIEW 12
#define MID_INVALIDATE 13
#define MID_CLEAR 14
#define MID_ROW 20
#define MID_INSERTROW_BEFORE 21
#define MID_INSERTROW_AT 22
#define MID_INSERTROW_BEHIND 23
#define MID_REMOVEROW_BEFORE 24
#define MID_REMOVEROW_AT 25
#define MID_REMOVEROW_BEHIND 26
#define MID_MODIFYROW_BEFORE 27
#define MID_MODIFYROW_AT 28
#define MID_MODIFYROW_BEHIND 29
#define MID_COL 30
#define MID_INSERTCOL 31
#define MID_REMOVECOL 32
#define MID_MOVECOLLEFT 33
#define MID_MOVECOLRIGHT 34
#define MID_SELECTIONS 60
#define MID_SELECTROW 61
#define MID_SELECTALL 62
#define MID_SELECTNONE 63
#define MID_INVERSE 64
#define MID_EXTRAS 70
#define MID_STARMONEY_1 71
//==================================================================
class BrowseModeDialog: public ModalDialog
{
RadioButton aSingleSel;
RadioButton aMultiSel;
GroupBox aSelGroup;
CheckBox aKeepHighlight;
CheckBox aColumnCursor;
CheckBox aThumbDragging;
GroupBox aOptGroup;
RadioButton aNoHLines;
RadioButton aDottedHLines;
RadioButton aFullHLines;
GroupBox aHLinGroup;
RadioButton aNoVLines;
RadioButton aDottedVLines;
RadioButton aFullVLines;
GroupBox aVLinGroup;
OKButton aOKButton;
CancelButton aCancelButton;
public:
BrowseModeDialog( Window *pParent );
void SetMode( BrowserMode eMode );
BrowserMode GetMode() const;
};
//==================================================================
DECLARE_LIST(DataList,long);
class Browser: public BrowseBox
{
friend class AppWindow;
DataList aRows;
sal_Bool bInverse;
Edit* pEdit;
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 Select();
virtual void DoubleClick();
virtual void CursorMoved();
virtual void StartScroll();
virtual void EndScroll();
virtual void Command( const CommandEvent &eEvt );
virtual sal_Bool StartDragging( Pointer& rMovePtr,
Pointer& rCopyPtr );
virtual void EndDragging( const DropAction &rAction );
virtual void MouseButtonDown( const BrowserMouseEvent &rEvt );
public:
Browser( AppWindow* pParent, BrowserMode eMode );
~Browser();
void SetInverseSelection( sal_Bool bInverseSel )
{ bInverse = bInverseSel; }
};
//------------------------------------------------------------------
class AppWindow: public WorkWindow
{
MenuBar aMenu;
PopupMenu aBrwMenu, aRowMenu, aColMenu, aSelMenu, aExtMenu;
Edit aEdit;
Browser aBrowser;
BrowserMode eCurMode;
FloatingWindow *pEventView;
sal_uLong nNewRowNo;
private:
DECL_LINK( Modify, void * );
DECL_LINK( MenuSelect, Menu * );
protected:
void Resize();
void Activate();
public:
AppWindow();
~AppWindow();
void Event( const String &rEvent );
};
//------------------------------------------------------------------
class App: public Application
{
protected:
void Main();
public:
App();
~App();
};
//==================================================================
App aApp;
//==================================================================
BrowseModeDialog::BrowseModeDialog( Window *pParent ):
ModalDialog( pParent, WinBits( WB_MOVEABLE | WB_CLOSEABLE | WB_3DLOOK ) ),
aSingleSel( this ),
aMultiSel( this ),
aSelGroup( this ),
aKeepHighlight( this ),
aColumnCursor( this ),
aThumbDragging( this ),
aOptGroup( this ),
aNoHLines( this ),
aDottedHLines( this ),
aFullHLines( this ),
aHLinGroup( this ),
aNoVLines( this, WinBits( WB_GROUP ) ),
aDottedVLines( this ),
aFullVLines( this ),
aVLinGroup( this ),
aOKButton( this ),
aCancelButton( this )
{
SetOutputSizePixel( Size( 290, 220 ) );
SetText( String( "Browse Mode", RTL_TEXTENCODING_IBM_850 ) );
aSingleSel.SetText( String( "single", RTL_TEXTENCODING_IBM_850 ) );
aMultiSel.SetText( String( "multi", RTL_TEXTENCODING_IBM_850 ) );
aSelGroup.SetText( String( " Selection ", RTL_TEXTENCODING_IBM_850 ) );
aKeepHighlight.SetText( String( "keep highlight", RTL_TEXTENCODING_IBM_850 ) );
aColumnCursor.SetText( String( "column cursor", RTL_TEXTENCODING_IBM_850 ) );
aThumbDragging.SetText( String( "thumb dragging", RTL_TEXTENCODING_IBM_850 ) );
aOptGroup.SetText( String( " Options ", RTL_TEXTENCODING_IBM_850 ) );
aNoHLines.SetText( String( "none", RTL_TEXTENCODING_IBM_850 ) );
aDottedHLines.SetText( String( "dotted", RTL_TEXTENCODING_IBM_850 ) );
aFullHLines.SetText( String( "full", RTL_TEXTENCODING_IBM_850 ) );
aHLinGroup.SetText( String( " Horizontal ", RTL_TEXTENCODING_IBM_850 ) );
aNoVLines.SetText( String( "none", RTL_TEXTENCODING_IBM_850 ) );
aDottedVLines.SetText( String( "dotted", RTL_TEXTENCODING_IBM_850 ) );
aFullVLines.SetText( String( "full", RTL_TEXTENCODING_IBM_850 ) );
aVLinGroup.SetText( String( " Vertical ", RTL_TEXTENCODING_IBM_850 ) );
aSingleSel.SetPosSizePixel( Point( 20, 30 ), Size( 80, 14 ) );
aMultiSel.SetPosSizePixel( Point( 20, 70 ), Size( 80, 14 ) );
aSelGroup.SetPosSizePixel( Point( 10, 10 ), Size( 100, 80 ) );
aSelGroup.SetText( String( " Selection ", RTL_TEXTENCODING_IBM_850 ) );
aKeepHighlight.SetPosSizePixel( Point( 130, 30 ), Size( 140, 14 ) );
aColumnCursor.SetPosSizePixel( Point( 130, 50 ), Size( 140, 14 ) );
aThumbDragging.SetPosSizePixel( Point( 130, 70 ), Size( 140, 14 ) );
aOptGroup.SetPosSizePixel( Point( 120, 10 ), Size( 160, 80 ) );
aOptGroup.SetText( String( " Options ", RTL_TEXTENCODING_IBM_850 ) );
aNoHLines.SetPosSizePixel( Point( 20, 120 ), Size( 80, 14 ) );
aDottedHLines.SetPosSizePixel( Point( 20, 140 ), Size( 80, 14 ) );
aFullHLines.SetPosSizePixel( Point( 20, 160 ), Size( 80, 14 ) );
aHLinGroup.SetPosSizePixel( Point( 10, 100 ), Size( 100, 80 ) );
aHLinGroup.SetText( String( " horizontal ", RTL_TEXTENCODING_IBM_850 ) );
aNoVLines.SetPosSizePixel( Point( 130, 120 ), Size( 80, 14 ) );
aDottedVLines.SetPosSizePixel( Point( 130, 140 ), Size( 80, 14 ) );
aFullVLines.SetPosSizePixel( Point( 130, 160 ), Size( 80, 14 ) );
aVLinGroup.SetPosSizePixel( Point( 120, 100 ), Size( 100, 80 ) );
aVLinGroup.SetText( String( " vertical ", RTL_TEXTENCODING_IBM_850 ) );
aOKButton.SetPosSizePixel( Point( 10, 190 ), Size( 100, 22 ) );
aCancelButton.SetPosSizePixel( Point( 120, 190 ), Size( 100, 22 ) );
aSingleSel.Check();
aNoHLines.Check();
aNoVLines.Check();
aSingleSel.Show();
aMultiSel.Show();
aSelGroup.Show();
aKeepHighlight.Show();
aColumnCursor.Show();
aThumbDragging.Show();
aOptGroup.Show();
aNoHLines.Show();
aDottedHLines.Show();
aFullHLines.Show();
aHLinGroup.Show();
aNoVLines.Show();
aDottedVLines.Show();
aFullVLines.Show();
aVLinGroup.Show();
aOKButton.Show();
aCancelButton.Show();
}
//------------------------------------------------------------------
void BrowseModeDialog::SetMode( BrowserMode eMode )
{
if ( ( eMode & BROWSER_COLUMNSELECTION ) == BROWSER_COLUMNSELECTION )
aColumnCursor.Check();
if ( ( eMode & BROWSER_MULTISELECTION ) == BROWSER_MULTISELECTION )
aMultiSel.Check();
if ( ( eMode & BROWSER_THUMBDRAGGING ) == BROWSER_THUMBDRAGGING )
aThumbDragging.Check();
if ( ( eMode & BROWSER_KEEPHIGHLIGHT ) == BROWSER_KEEPHIGHLIGHT )
aKeepHighlight.Check();
if ( ( eMode & BROWSER_HLINESFULL ) == BROWSER_HLINESFULL )
aFullHLines.Check();
if ( ( eMode & BROWSER_VLINESFULL ) == BROWSER_VLINESFULL )
aFullVLines.Check();
if ( ( eMode & BROWSER_HLINESDOTS ) == BROWSER_HLINESDOTS )
aDottedHLines.Check();
if ( ( eMode & BROWSER_VLINESDOTS ) == BROWSER_VLINESDOTS )
aDottedVLines.Check();
}
//------------------------------------------------------------------
BrowserMode BrowseModeDialog::GetMode() const
{
BrowserMode eMode = 0;
if ( aColumnCursor.IsChecked() )
eMode |= BROWSER_COLUMNSELECTION;
if ( aMultiSel.IsChecked() )
eMode |= BROWSER_MULTISELECTION;
if ( aKeepHighlight.IsChecked() )
eMode |= BROWSER_KEEPHIGHLIGHT;
if ( aThumbDragging.IsChecked() )
eMode |= BROWSER_THUMBDRAGGING;
if ( aDottedHLines.IsChecked() )
eMode |= BROWSER_HLINESDOTS;
if ( aFullHLines.IsChecked() )
eMode |= BROWSER_HLINESFULL;
if ( aDottedVLines.IsChecked() )
eMode |= BROWSER_VLINESDOTS;
if ( aFullVLines.IsChecked() )
eMode |= BROWSER_VLINESFULL;
return eMode;
}
//==================================================================
Browser::Browser( AppWindow* pParent, BrowserMode eMode ):
BrowseBox( pParent, WinBits(WB_DRAG), eMode ),
bInverse(sal_False),
pEdit( 0 )
{
for ( long n = 0; n < 100; ++n )
aRows.Insert( n, LIST_APPEND );
//InsertHandleColumn( 30 );
InsertDataColumn( 1, String( "eins", RTL_TEXTENCODING_IBM_850 ), 85 ); // FreezeColumn( 1 );
InsertDataColumn( 2, String( "zwei", RTL_TEXTENCODING_IBM_850 ), 85 ); // FreezeColumn( 2 );
InsertDataColumn( 3, String( "drei", RTL_TEXTENCODING_IBM_850 ), 85 );
InsertDataColumn( 4, String( "vier", RTL_TEXTENCODING_IBM_850 ), 85 );
InsertDataColumn( 5, String( "fuenf", RTL_TEXTENCODING_IBM_850 ), 85 );
InsertDataColumn( 6, String( "sechs", RTL_TEXTENCODING_IBM_850 ), 85 );
InsertDataColumn( 7, String( "sieben", RTL_TEXTENCODING_IBM_850 ), 85 );
InsertDataColumn( 8, String( "acht", RTL_TEXTENCODING_IBM_850 ), 85 );
InsertDataColumn( 9, String( "neun", RTL_TEXTENCODING_IBM_850 ), 85 );
InsertDataColumn(10, String( "zehn", RTL_TEXTENCODING_IBM_850 ), 85 );
}
//------------------------------------------------------------------
Browser::~Browser()
{
delete pEdit;
}
//------------------------------------------------------------------
sal_Bool Browser::StartDragging( Pointer& rMovePtr, Pointer& rCopyPtr )
{
rMovePtr = Pointer( POINTER_MOVEDATA );
rCopyPtr = Pointer( POINTER_COPYDATA );
return sal_True;
}
//------------------------------------------------------------------
void Browser::MouseButtonDown( const BrowserMouseEvent &rEvt )
{
if ( 3 == rEvt.GetClicks() )
InfoBox( 0, String( GetColumnAtXPosPixel(rEvt.GetPosPixel().X() ) ) ).Execute();
else
BrowseBox::MouseButtonDown( rEvt );
}
//------------------------------------------------------------------
void Browser::EndDragging( const DropAction &rAction )
{
}
//------------------------------------------------------------------
void Browser::StartScroll()
{
( (AppWindow*) GetParent() )->Event( String( "StartScroll", RTL_TEXTENCODING_IBM_850 ) );
if ( pEdit )
pEdit->Hide();
BrowseBox::StartScroll();
}
//------------------------------------------------------------------
void Browser::EndScroll()
{
BrowseBox::EndScroll();
( (AppWindow*) GetParent() )->Event( String( "EndScroll", RTL_TEXTENCODING_IBM_850 ) );
if ( pEdit )
pEdit->Show();
}
//------------------------------------------------------------------
void Browser::Command( const CommandEvent &rEvt )
{
String aEvent( String( "Command at ", RTL_TEXTENCODING_IBM_850 ) );
aEvent += rEvt.GetMousePosPixel().X();
aEvent += String( ":", RTL_TEXTENCODING_IBM_850 );
aEvent += rEvt.GetMousePosPixel().Y();
( (AppWindow*) GetParent() )->Event( aEvent );
BrowseBox::Command(rEvt);
}
//------------------------------------------------------------------
void Browser::Select()
{
String aEvent( String( "Select: ", RTL_TEXTENCODING_IBM_850 ) );
DELETEZ(pEdit);
for ( long nRow = FirstSelectedRow(bInverse); nRow >= 0; nRow = NextSelectedRow() )
{
if ( bInverse )
aEvent += String( String( "~", RTL_TEXTENCODING_IBM_850 ) );
aEvent += String( nRow );
aEvent += String( ", ", RTL_TEXTENCODING_IBM_850 );
}
aEvent.Erase( aEvent.Len() - 2 );
( (AppWindow*) GetParent() )->Event( aEvent );
}
//------------------------------------------------------------------
void Browser::DoubleClick()
{
String aEvent( String( "DoubleClick: ", RTL_TEXTENCODING_IBM_850 ) );
aEvent += String( GetCurRow() );
aEvent += String( String( ", ", RTL_TEXTENCODING_IBM_850 ) );
aEvent += String( FirstSelectedRow() );
( (AppWindow*) GetParent() )->Event( aEvent );
SetNoSelection();
if ( !pEdit )
pEdit = new Edit( &GetDataWindow() );
Rectangle aRect( GetFieldRect( GetCurColumnId() ) );
pEdit->SetPosSizePixel( aRect.TopLeft(), aRect.GetSize() );
pEdit->Show();
pEdit->GrabFocus();
}
//------------------------------------------------------------------
void Browser::CursorMoved()
{
String aEvent( String( "Cursor: ", RTL_TEXTENCODING_IBM_850 ) );
aEvent += String( GetCurRow() );
aEvent += String( ":", RTL_TEXTENCODING_IBM_850 );
aEvent += String( GetCurColumnId() );
( (AppWindow*) GetParent() )->Event( aEvent );
if ( IsFieldVisible( GetCurRow(), GetCurColumnId(), sal_True ) )
( (AppWindow*) GetParent() )->Event( String( "completely visible", RTL_TEXTENCODING_IBM_850 ) );
else if ( IsFieldVisible( 1, GetCurColumnId(), sal_False) )
( (AppWindow*) GetParent() )->Event( String( "partly visible", RTL_TEXTENCODING_IBM_850 ) );
else
( (AppWindow*) GetParent() )->Event( String( "not visible", RTL_TEXTENCODING_IBM_850 ) );
DELETEZ(pEdit);
}
//------------------------------------------------------------------
long Browser::GetRowCount() const
{
return aRows.Count();
}
//------------------------------------------------------------------
sal_Bool Browser::SeekRow( long nRow )
{
if ( nRow >= 0 && nRow < (long) aRows.Count() )
{
aRows.Seek(nRow);
return sal_True;
}
return sal_False;
}
//------------------------------------------------------------------
void Browser::PaintField( OutputDevice& rDev, const Rectangle& rRect,
sal_uInt16 nColumnId ) const
{
rDev.SetClipRegion( rRect );
String aText( aRows.GetCurObject() );
aText += String( ".", RTL_TEXTENCODING_IBM_850 );
aText += String( nColumnId );
rDev.DrawText( rRect.TopLeft(), aText );
}
//==================================================================
AppWindow::AppWindow():
WorkWindow( 0, WinBits(WB_APP|WB_STDWORK) ),
aEdit( this, WinBits( WB_BORDER ) ),
aBrowser( this, 0 ),
eCurMode( 0 ),
pEventView( 0 ),
nNewRowNo( 2000L )
{
SetText( String( "BrowseBox Testframe", RTL_TEXTENCODING_IBM_850 ) );
aMenu.InsertItem( MID_BROWSER, String( "~Browser", RTL_TEXTENCODING_IBM_850 ) );
aMenu.SetPopupMenu( MID_BROWSER, &aBrwMenu );
aBrwMenu.InsertItem( MID_MODE, String( "~Mode...", RTL_TEXTENCODING_IBM_850 ) );
aBrwMenu.InsertItem( MID_EVENTVIEW, String( "~Event-Viewer", RTL_TEXTENCODING_IBM_850 ) );
aBrwMenu.InsertSeparator();
aBrwMenu.InsertItem( MID_INVALIDATE, String( "~Invalidate", RTL_TEXTENCODING_IBM_850 ) );
aBrwMenu.InsertItem( MID_CLEAR, String( "~Clear", RTL_TEXTENCODING_IBM_850 ) );
aMenu.InsertItem( MID_ROW, String( "~Row", RTL_TEXTENCODING_IBM_850 ) );
aMenu.SetPopupMenu( MID_ROW, &aRowMenu );
aRowMenu.InsertItem( MID_INSERTROW_BEFORE, String( "Insert before current", RTL_TEXTENCODING_IBM_850 ) );
aRowMenu.InsertItem( MID_INSERTROW_AT, String( "~Insert at current", RTL_TEXTENCODING_IBM_850 ) );
aRowMenu.InsertItem( MID_INSERTROW_BEHIND, String( "~Insert behind current", RTL_TEXTENCODING_IBM_850 ) );
aRowMenu.InsertSeparator();
aRowMenu.InsertItem( MID_REMOVEROW_BEFORE, String( "Remove before current", RTL_TEXTENCODING_IBM_850 ) );
aRowMenu.InsertItem( MID_REMOVEROW_AT, String( "~Remove at current", RTL_TEXTENCODING_IBM_850 ) );
aRowMenu.InsertItem( MID_REMOVEROW_BEHIND, String( "~Remove behind current", RTL_TEXTENCODING_IBM_850 ) );
aRowMenu.InsertSeparator();
aRowMenu.InsertItem( MID_MODIFYROW_BEFORE, String( "Modify before current", RTL_TEXTENCODING_IBM_850 ) );
aRowMenu.InsertItem( MID_MODIFYROW_AT, String( "~Modify at current", RTL_TEXTENCODING_IBM_850 ) );
aRowMenu.InsertItem( MID_MODIFYROW_BEHIND, String( "~Modify behind current", RTL_TEXTENCODING_IBM_850 ) );
aMenu.InsertItem( MID_COL, String( "~Column", RTL_TEXTENCODING_IBM_850 ) );
aMenu.SetPopupMenu( MID_COL, &aColMenu );
aColMenu.InsertItem( MID_INSERTCOL, String( "~Insert", RTL_TEXTENCODING_IBM_850 ) );
aColMenu.InsertItem( MID_REMOVECOL, String( "Re~move", RTL_TEXTENCODING_IBM_850 ) );
aColMenu.InsertItem( MID_MOVECOLLEFT, String( "Move ~Left", RTL_TEXTENCODING_IBM_850 ) );
aColMenu.InsertItem( MID_MOVECOLRIGHT, String( "Move ~Right", RTL_TEXTENCODING_IBM_850 ) );
aMenu.InsertItem( MID_SELECTIONS, String( "Selections", RTL_TEXTENCODING_IBM_850 ) );
aMenu.SetPopupMenu( MID_SELECTIONS, &aSelMenu );
aSelMenu.InsertItem( MID_SELECTROW, String( "Row", RTL_TEXTENCODING_IBM_850 ) );
aSelMenu.InsertItem( MID_SELECTALL, String( "All", RTL_TEXTENCODING_IBM_850 ) );
aSelMenu.InsertItem( MID_SELECTNONE, String( "None", RTL_TEXTENCODING_IBM_850 ) );
aSelMenu.InsertItem( MID_INVERSE, String( "Inverse", RTL_TEXTENCODING_IBM_850 ), MENU_APPEND, MIB_CHECKABLE );
aMenu.InsertItem( MID_EXTRAS, String( "Extras", RTL_TEXTENCODING_IBM_850 ) );
aMenu.SetPopupMenu( MID_EXTRAS, &aExtMenu );
aExtMenu.InsertItem( MID_STARMONEY_1, String( "StarMoney: SelectRow(+1)+DeleteRow", RTL_TEXTENCODING_IBM_850 ) );
aMenu.PushSelectHdl( LINK(this, AppWindow, MenuSelect) );
aEdit.SetModifyHdl( LINK(this,AppWindow,Modify) );
aEdit.Show();
aBrowser.Show();
Show();
}
//------------------------------------------------------------------
AppWindow::~AppWindow()
{
GetpApp()->SetAppMenu( 0 );
if ( pEventView )
delete pEventView;
}
//------------------------------------------------------------------
IMPL_LINK_INLINE_START( AppWindow, Modify, void *, pCaller )
{
Edit *pEdit = (Edit*) pCaller;
aBrowser.GoToRow( pEdit->GetText().ToInt32() );
aBrowser.GrabFocus();
return sal_True;
}
IMPL_LINK_INLINE_END( AppWindow, Modify, void *, pCaller )
//------------------------------------------------------------------
IMPL_LINK( AppWindow, MenuSelect, Menu *, pMenu )
{
sal_uLong nPos;
switch ( pMenu->GetCurItemId() )
{
case MID_MODE:
{
BrowseModeDialog *pDlg = new BrowseModeDialog( this );
pDlg->SetMode( eCurMode );
if ( pDlg->Execute() == RET_OK )
{
eCurMode = pDlg->GetMode();
aBrowser.SetMode( eCurMode | BROWSER_AUTOSIZE_LASTCOL );
}
delete pDlg;
break;
}
case MID_INVALIDATE:
aBrowser.Invalidate();
break;
case MID_INSERTROW_BEFORE:
if ( aBrowser.GetCurRow() == 0 )
{
Sound::Beep();
break;
}
nPos = aBrowser.GetCurRow() - 1;
aBrowser.aRows.Insert( nNewRowNo++, nPos );
aBrowser.RowInserted( aBrowser.GetCurRow()-1 );
break;
case MID_INSERTROW_AT:
nPos = aBrowser.GetCurRow();
if ( nPos == BROWSER_ENDOFSELECTION )
nPos = 0;
aBrowser.aRows.Insert( nNewRowNo++, nPos );
aBrowser.RowInserted( nPos );
break;
case MID_INSERTROW_BEHIND:
nPos = aBrowser.GetCurRow() + 1;
aBrowser.aRows.Insert( nNewRowNo++, nPos );
aBrowser.RowInserted( nPos );
break;
case MID_REMOVEROW_BEFORE:
if ( aBrowser.GetCurRow() == 0 )
{
Sound::Beep();
break;
}
nPos = aBrowser.GetCurRow() - 1;
aBrowser.aRows.Remove( nPos );
aBrowser.RowRemoved( nPos );
break;
case MID_REMOVEROW_AT:
nPos = aBrowser.GetCurRow();
aBrowser.aRows.Remove( nPos );
aBrowser.RowRemoved( nPos );
break;
case MID_REMOVEROW_BEHIND:
if ( (aBrowser.GetCurRow()+1) >= aBrowser.GetRowCount() )
{
Sound::Beep();
break;
}
nPos = aBrowser.GetCurRow() + 1;
aBrowser.aRows.Remove( nPos );
aBrowser.RowRemoved( nPos );
break;
case MID_MODIFYROW_BEFORE:
if ( aBrowser.GetCurRow() == 0 )
{
Sound::Beep();
break;
}
nPos = aBrowser.GetCurRow() - 1;
aBrowser.aRows.Replace( nNewRowNo++, nPos );
aBrowser.RowModified( nPos );
break;
case MID_MODIFYROW_AT:
nPos = aBrowser.GetCurRow();
aBrowser.aRows.Replace( nNewRowNo++, nPos );
aBrowser.RowModified( nPos );
break;
case MID_MODIFYROW_BEHIND:
if ( (aBrowser.GetCurRow()+1) >= aBrowser.GetRowCount() )
{
Sound::Beep();
break;
}
nPos = aBrowser.GetCurRow() + 1;
aBrowser.aRows.Replace( nNewRowNo++, nPos );
aBrowser.RowModified( nPos );
break;
case MID_EVENTVIEW:
if ( pEventView )
{
delete pEventView;
pEventView = 0;
}
else
{
pEventView = new FloatingWindow( this );
pEventView->SetPosPixel( Point( 100, 100 ) );
pEventView->SetOutputSizePixel(
Size( 320, 8*GetTextHeight() ) );
pEventView->Show();
aBrowser.CursorMoved();
aBrowser.Select();
}
break;
case MID_SELECTROW:
aBrowser.SelectRow( aBrowser.GetCurRow(),
!aBrowser.IsRowSelected( aBrowser.GetCurRow() ) );
break;
case MID_SELECTALL:
aBrowser.SelectAll();
break;
case MID_SELECTNONE:
aBrowser.SetNoSelection();
break;
case MID_INVERSE:
{
sal_Bool bChecked = pMenu->IsItemChecked( MID_INVERSE );
pMenu->CheckItem( MID_INVERSE, !bChecked );
aBrowser.SetInverseSelection( !bChecked );
break;
}
case MID_CLEAR:
aBrowser.Clear();
break;
case MID_STARMONEY_1:
{
nPos = aBrowser.GetCurRow();
aBrowser.SelectRow( nPos + 1, sal_True );
aBrowser.aRows.Remove( nPos );
aBrowser.RowRemoved( nPos );
break;
}
}
return sal_True;
}
//------------------------------------------------------------------
void AppWindow::Resize()
{
Size aOutSz( GetOutputSizePixel() );
aEdit.SetPosSizePixel(
Point( 0, 0 ),
Size( aOutSz.Width(), 24 ) );
aBrowser.SetPosSizePixel(
Point( 0, aEdit.GetSizePixel().Height() ),
Size( aOutSz.Width(), aOutSz.Height() - 24 ) );
}
//------------------------------------------------------------------
void AppWindow::Activate()
{
GetpApp()->SetAppMenu( &aMenu );
aBrowser.GrabFocus();
}
//------------------------------------------------------------------
void AppWindow::Event( const String &rEvent )
{
if ( pEventView )
{
pEventView->Scroll( 0, -GetTextHeight() );
pEventView->Update();
pEventView->DrawText( Point(0, 7*GetTextHeight() ), rEvent );
}
}
//==================================================================
App::App()
{
}
//------------------------------------------------------------------
App::~App()
{
}
//------------------------------------------------------------------
void App::Main( )
{
EnableSVLook();
AppWindow aAppWin;
Execute();
}