summaryrefslogtreecommitdiff
path: root/svtools/workben
diff options
context:
space:
mode:
Diffstat (limited to 'svtools/workben')
-rw-r--r--svtools/workben/browser.cxx810
-rw-r--r--svtools/workben/cui/loadlib.cxx89
-rw-r--r--svtools/workben/cui/makefile.mk60
-rw-r--r--svtools/workben/makefile.mk69
-rw-r--r--svtools/workben/stest.cxx186
-rw-r--r--svtools/workben/svdem.cxx1125
-rw-r--r--svtools/workben/toolpanel/makefile.mk110
-rwxr-xr-xsvtools/workben/toolpanel/toolpaneltest.cxx880
-rw-r--r--svtools/workben/treecontrol/makefile.mk91
-rw-r--r--svtools/workben/treecontrol/treetest.cxx396
-rw-r--r--svtools/workben/unodialog/makefile.mk90
-rw-r--r--svtools/workben/unodialog/roadmapskeleton.cxx113
-rw-r--r--svtools/workben/unodialog/roadmapskeleton.hrc41
-rw-r--r--svtools/workben/unodialog/roadmapskeleton.hxx65
-rw-r--r--svtools/workben/unodialog/roadmapskeleton.src84
-rw-r--r--svtools/workben/unodialog/roadmapskeletonpages.cxx114
-rw-r--r--svtools/workben/unodialog/roadmapskeletonpages.hxx104
-rw-r--r--svtools/workben/unodialog/udlg_global.hrc54
-rw-r--r--svtools/workben/unodialog/udlg_module.cxx42
-rw-r--r--svtools/workben/unodialog/udlg_module.hxx45
-rw-r--r--svtools/workben/unodialog/udlg_services.cxx58
-rw-r--r--svtools/workben/unodialog/unodialogsample.cxx214
-rw-r--r--svtools/workben/urange.cxx220
23 files changed, 5060 insertions, 0 deletions
diff --git a/svtools/workben/browser.cxx b/svtools/workben/browser.cxx
new file mode 100644
index 000000000000..2f4f120a276b
--- /dev/null
+++ b/svtools/workben/browser.cxx
@@ -0,0 +1,810 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 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;
+ BOOL bInverse;
+ Edit* pEdit;
+
+protected:
+ virtual long GetRowCount() const;
+ virtual BOOL SeekRow( long nRow );
+ virtual void PaintField( OutputDevice& rDev, const Rectangle& rRect,
+ USHORT nColumnId ) const;
+
+ virtual void Select();
+ virtual void DoubleClick();
+ virtual void CursorMoved();
+ virtual void StartScroll();
+ virtual void EndScroll();
+ virtual void Command( const CommandEvent &eEvt );
+
+ virtual 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( BOOL bInverseSel )
+ { bInverse = bInverseSel; }
+};
+
+//------------------------------------------------------------------
+
+class AppWindow: public WorkWindow
+{
+ MenuBar aMenu;
+ PopupMenu aBrwMenu, aRowMenu, aColMenu, aSelMenu, aExtMenu;
+ Edit aEdit;
+ Browser aBrowser;
+ BrowserMode eCurMode;
+ FloatingWindow *pEventView;
+ 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(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;
+}
+
+//------------------------------------------------------------------
+
+BOOL Browser::StartDragging( Pointer& rMovePtr, Pointer& rCopyPtr )
+{
+ rMovePtr = Pointer( POINTER_MOVEDATA );
+ rCopyPtr = Pointer( POINTER_COPYDATA );
+ return 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(), TRUE ) )
+ ( (AppWindow*) GetParent() )->Event( String( "completely visible", RTL_TEXTENCODING_IBM_850 ) );
+ else if ( IsFieldVisible( 1, GetCurColumnId(), 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();
+}
+
+//------------------------------------------------------------------
+
+BOOL Browser::SeekRow( long nRow )
+{
+ if ( nRow >= 0 && nRow < (long) aRows.Count() )
+ {
+ aRows.Seek(nRow);
+ return TRUE;
+ }
+ return FALSE;
+}
+
+//------------------------------------------------------------------
+
+void Browser::PaintField( OutputDevice& rDev, const Rectangle& rRect,
+ USHORT 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 TRUE;
+}
+IMPL_LINK_INLINE_END( AppWindow, Modify, void *, pCaller )
+
+//------------------------------------------------------------------
+
+IMPL_LINK( AppWindow, MenuSelect, Menu *, pMenu )
+{
+ 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:
+ {
+ 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, TRUE );
+ aBrowser.aRows.Remove( nPos );
+ aBrowser.RowRemoved( nPos );
+ break;
+ }
+ }
+
+ return 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();
+}
+
diff --git a/svtools/workben/cui/loadlib.cxx b/svtools/workben/cui/loadlib.cxx
new file mode 100644
index 000000000000..85869e25cb97
--- /dev/null
+++ b/svtools/workben/cui/loadlib.cxx
@@ -0,0 +1,89 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_svtools.hxx"
+
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+
+#include <tools/string.hxx>
+#include <osl/module.h>
+#include <rtl/ustring.hxx>
+
+using namespace rtl;
+
+extern "C" {
+struct VersionInfo
+{
+ const char* pTime;
+ const char* pDate;
+ const char* pUpd;
+ const char* pMinor;
+ const char* pBuild;
+ const char* pInpath;
+};
+
+typedef VersionInfo*(__LOADONCALLAPI *GetVersionInfo)(void);
+}
+
+int __LOADONCALLAPI main( int argc, char **argv )
+{
+ VersionInfo *pInfo = NULL;
+
+ if ( argc != 2 )
+ {
+ fprintf( stderr, "USAGE: %s DllName \n", argv[0] );
+ exit(0);
+ }
+ OUString aLib = OUString::createFromAscii(argv[1]);
+ oslModule aLibrary = osl_loadModule( aLib.pData, SAL_LOADMODULE_DEFAULT );
+ if ( aLibrary )
+ {
+ void* pFunc = osl_getSymbol( aLibrary, OUString::createFromAscii( "GetVersionInfo" ).pData );
+ if ( pFunc )
+ pInfo = (*(GetVersionInfo)pFunc)();
+ }
+ if ( pInfo )
+ {
+ fprintf( stdout, "Date : %s\n", pInfo->pDate );
+ fprintf( stdout, "Time : %s\n", pInfo->pTime );
+ fprintf( stdout, "UPD : %s\n", pInfo->pUpd );
+ fprintf( stdout, "Minor : %s\n", pInfo->pMinor );
+ fprintf( stdout, "Build : %s\n", pInfo->pBuild );
+ fprintf( stdout, "Inpath : %s\n", pInfo->pInpath );
+ }
+ else
+ fprintf( stderr, "VersionInfo not Found !\n" );
+
+ if ( aLibrary )
+ osl_unloadModule( aLibrary );
+
+ return 0;
+}
+
diff --git a/svtools/workben/cui/makefile.mk b/svtools/workben/cui/makefile.mk
new file mode 100644
index 000000000000..2c7d06682c77
--- /dev/null
+++ b/svtools/workben/cui/makefile.mk
@@ -0,0 +1,60 @@
+#*************************************************************************
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# Copyright 2000, 2010 Oracle and/or its affiliates.
+#
+# OpenOffice.org - a multi-platform office productivity suite
+#
+# This file is part of OpenOffice.org.
+#
+# OpenOffice.org is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License version 3
+# only, as published by the Free Software Foundation.
+#
+# OpenOffice.org is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License version 3 for more details
+# (a copy is included in the LICENSE file that accompanied this code).
+#
+# You should have received a copy of the GNU Lesser General Public License
+# version 3 along with OpenOffice.org. If not, see
+# <http://www.openoffice.org/license.html>
+# for a copy of the LGPLv3 License.
+#
+#*************************************************************************
+
+PRJ=..$/..
+
+PRJNAME=svtools
+TARGET=cuidem
+LIBTARGET=NO
+
+TARGETTYPE=CUI
+
+# --- Settings -----------------------------------------------------
+
+.INCLUDE : settings.mk
+
+# --- Files --------------------------------------------------------
+
+OBJFILES= $(OBJ)$/loadlib.obj
+
+APP4TARGET= dllver
+APP4STDLIBS= \
+ $(SVTOOLLIB) \
+ $(SVLLIB) \
+ $(VCLLIB) \
+ $(TOOLSLIB) \
+ $(VOSLIB) \
+ $(SALLIB)
+.IF "$(GUI)"=="WNT" || "$(COM)"=="GCC"
+APP4STDLIBS+= $(CPPULIB)
+.ENDIF
+APP4OBJS= $(OBJ)$/loadlib.obj
+
+# --- Targets -------------------------------------------------------
+
+.INCLUDE : target.mk
+
diff --git a/svtools/workben/makefile.mk b/svtools/workben/makefile.mk
new file mode 100644
index 000000000000..9e50208b9ee9
--- /dev/null
+++ b/svtools/workben/makefile.mk
@@ -0,0 +1,69 @@
+#*************************************************************************
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# Copyright 2000, 2010 Oracle and/or its affiliates.
+#
+# OpenOffice.org - a multi-platform office productivity suite
+#
+# This file is part of OpenOffice.org.
+#
+# OpenOffice.org is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License version 3
+# only, as published by the Free Software Foundation.
+#
+# OpenOffice.org is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License version 3 for more details
+# (a copy is included in the LICENSE file that accompanied this code).
+#
+# You should have received a copy of the GNU Lesser General Public License
+# version 3 along with OpenOffice.org. If not, see
+# <http://www.openoffice.org/license.html>
+# for a copy of the LGPLv3 License.
+#
+#*************************************************************************
+
+PRJ=..
+
+PRJNAME=svtools
+TARGET=svdem
+LIBTARGET=NO
+TARGETTYPE=GUI
+ENABLE_EXCEPTIONS=TRUE
+
+# --- Settings -----------------------------------------------------
+
+.INCLUDE : settings.mk
+
+# --- Files --------------------------------------------------------
+
+OBJFILES= $(OBJ)$/svdem.obj
+
+APP1TARGET= $(TARGET)
+APP1STDLIBS= $(SVTOOLLIB) \
+ $(VCLLIB) \
+ $(UNOTOOLSLIB) \
+ $(COMPHELPERLIB) \
+ $(TOOLSLIB) \
+ $(SALLIB) \
+ $(VOSLIB) \
+ $(CPPUHELPERLIB) \
+ $(CPPULIB)
+
+APP1OBJS= $(OBJ)$/svdem.obj
+
+# --- Targets -------------------------------------------------------
+
+.INCLUDE : target.mk
+
+ALLTAR : $(BIN)$/applicat.rdb
+
+$(BIN)$/applicat.rdb : makefile.mk $(UNOUCRRDB)
+ rm -f $@
+ $(GNUCOPY) $(UNOUCRRDB) $@
+ cd $(BIN) && \
+ regcomp -register -r applicat.rdb \
+ -c i18nsearch.uno$(DLLPOST) \
+ -c i18npool.uno$(DLLPOST)
diff --git a/svtools/workben/stest.cxx b/svtools/workben/stest.cxx
new file mode 100644
index 000000000000..85b7013663da
--- /dev/null
+++ b/svtools/workben/stest.cxx
@@ -0,0 +1,186 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_svtools.hxx"
+#include <svtools/svmedit.hxx>
+#include <txtcmp.hxx>
+
+#ifndef _SV_BUTTON_HXX //autogen
+#include <vcl/button.hxx>
+#endif
+#include <vcl/wrkwin.hxx>
+#include <vcl/fixed.hxx>
+#include <vcl/svapp.hxx>
+
+class MyApp : public Application
+{
+public:
+ virtual void Main( );
+};
+
+class SearchWindow : public WorkWindow
+{
+ PushButton aPB;
+ FixedText aFT1, aFT2, aFT3;
+ MultiLineEdit aEText, aESrch;
+ RadioButton aModeN, aModeR, aModeL;
+ SearchParam aParam;
+
+public:
+ SearchWindow();
+
+ DECL_LINK( ClickHdl, Button * );
+};
+
+// --- SearchWindow::SearchWindow() ------------------------------------
+
+SearchWindow::SearchWindow() :
+ WorkWindow( NULL, WinBits( WB_APP | WB_STDWORK )),
+ aPB( this, WinBits( 0 )),
+ aFT1( this, WinBits( 0 )),
+ aFT2( this, WinBits( 0 )),
+ aFT3( this, WinBits( 0 )),
+ aEText( this, WinBits( WB_BORDER )),
+ aESrch( this, WinBits( WB_BORDER )),
+ aModeN( this, WinBits( 0 )),
+ aModeR( this, WinBits( 0 )),
+ aModeL( this, WinBits( 0 )),
+ aParam( "" )
+{
+ aPB.SetClickHdl( LINK( this, SearchWindow, ClickHdl ));
+ aModeN.SetClickHdl( LINK( this, SearchWindow, ClickHdl ));
+ aModeR.SetClickHdl( LINK( this, SearchWindow, ClickHdl ));
+ aModeL.SetClickHdl( LINK( this, SearchWindow, ClickHdl ));
+
+ SetMapMode( MapMode( MAP_APPFONT ));
+ SetSizePixel( LogicToPixel( Size( 300, 180 ) ) );
+
+ aEText.SetPosSizePixel( LogicToPixel( Point( 0, 22 )), LogicToPixel(Size( 270, 32 )) );
+ aFT1.SetPosSizePixel( LogicToPixel( Point( 0, 10 )), LogicToPixel(Size( 18, 11 )) );
+ aFT2.SetPosSizePixel( LogicToPixel( Point( 0, 60 )), LogicToPixel(Size( 24, 10 )) );
+ aESrch.SetPosSizePixel( LogicToPixel( Point( 0, 70 )), LogicToPixel(Size( 270, 24 )) );
+ aPB.SetPosSizePixel( LogicToPixel( Point( 223, 139 )), LogicToPixel(Size( 48, 12 )) );
+ aFT3.SetPosSizePixel( LogicToPixel( Point( 0, 104 )), LogicToPixel(Size( 270, 15 )) );
+ aModeN.SetPosSizePixel( LogicToPixel( Point( 5, 116 ) ), LogicToPixel( Size( 40, 12 ) ) );
+ aModeR.SetPosSizePixel( LogicToPixel( Point( 5, 126 ) ), LogicToPixel( Size( 40, 12 ) ) );
+ aModeL.SetPosSizePixel( LogicToPixel( Point( 5, 136 ) ), LogicToPixel( Size( 40, 12 ) ) );
+
+ aEText.Show();
+ aFT1.Show();
+ aFT2.Show();
+ aESrch.Show();
+ aPB.Show();
+ aFT3.Show();
+ aModeN.Show();
+ aModeR.Show();
+ aModeL.Show();
+
+ aFT3.SetText( "gefunden:" );
+ aFT1.SetText( "Text:" );
+ aFT2.SetText( "Suche:" );
+ aPB.SetText( "starte Suche" );
+ aModeN.SetText( "normal" );
+ aModeR.SetText( "RegExp" );
+ aModeL.SetText( "LevDis" );
+
+ SetText( "Such-Demo" );
+}
+
+
+// --- SearchWindow::SearchSelectHdl() ---------------------------------
+
+IMPL_LINK( SearchWindow, ClickHdl, Button *, pButton )
+{
+ if( pButton == &aPB )
+ {
+ String sText( aEText.GetText() );
+ String sSrch( aESrch.GetText() );
+
+/* InfoBox( this, String( "T: " ) + sText +
+ String( "\nS: " ) + sSrch ).Execute();
+*/
+ BOOL bRet = FALSE;
+ USHORT nStt = 0, nEnd = sText.Len();
+
+ {
+ aParam.SetSrchStr( sSrch );
+ SearchText aSrchText( aParam, GetpApp()->GetAppInternational() );
+ bRet = aSrchText.SearchFrwrd( sText, &nStt, &nEnd );
+
+// BOOL SearchBkwrd( const String &rStr, USHORT* pStart, USHORT* pEnde );
+ }
+
+ String sFound( "gefunden" );
+ if( !bRet )
+ sFound.Insert( "nicht ", 0 );
+
+ sFound += ": S<";
+ sFound += nStt;
+ sFound += "> E<";
+ sFound += nEnd;
+ sFound += '>';
+
+ if( bRet )
+ {
+ sFound += '<';
+ sFound += sText.Copy( nStt, nEnd - nStt +1 );
+ sFound += '>';
+ }
+
+ aFT3.SetText( sFound );
+ }
+ else if( pButton == &aModeN )
+ {
+ aParam.SetSrchType( SearchParam::SRCH_NORMAL );
+ }
+ else if( pButton == &aModeR )
+ {
+ aParam.SetSrchType( SearchParam::SRCH_REGEXP );
+ }
+ else if( pButton == &aModeL )
+ {
+ aParam.SetSrchType( SearchParam::SRCH_LEVDIST );
+ }
+ return 0;
+}
+
+
+// --- MyApp::Main() -----------------------------------------------
+
+void MyApp::Main( )
+{
+ SearchWindow* pSearchWindow = new SearchWindow;
+ pSearchWindow->Show();
+ Execute();
+ delete pSearchWindow;
+
+}
+
+// --- aMyApp ------------------------------------------------------
+
+MyApp aMyApp;
diff --git a/svtools/workben/svdem.cxx b/svtools/workben/svdem.cxx
new file mode 100644
index 000000000000..fd40d3d645fa
--- /dev/null
+++ b/svtools/workben/svdem.cxx
@@ -0,0 +1,1125 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_svtools.hxx"
+#include <stdio.h>
+#include <cppuhelper/servicefactory.hxx>
+#include <comphelper/processfactory.hxx>
+
+#include <unotools/calendarwrapper.hxx>
+#include <unotools/localedatawrapper.hxx>
+
+#include <vcl/wrkwin.hxx>
+#include <vcl/dialog.hxx>
+#include <vcl/msgbox.hxx>
+#include <vcl/print.hxx>
+#include <vcl/svapp.hxx>
+#include <vcl/help.hxx>
+#include <vcl/fixed.hxx>
+#include <vcl/button.hxx>
+#include <vcl/scrbar.hxx>
+#include <vcl/slider.hxx>
+#include <vcl/group.hxx>
+#include <vcl/toolbox.hxx>
+#include <vcl/status.hxx>
+#include <stdmenu.hxx>
+#include <ctrltool.hxx>
+#include <ctrlbox.hxx>
+#include <tabbar.hxx>
+#include <svtools/valueset.hxx>
+#include <svtools/headbar.hxx>
+#include <prgsbar.hxx>
+#include <calendar.hxx>
+#include <svtools/prnsetup.hxx>
+#include <svtools/printdlg.hxx>
+
+using namespace ::com::sun::star;
+
+// -----------------------------------------------------------------------
+
+class MyApp : public Application
+{
+public:
+ void Main();
+};
+
+// -----------------------------------------------------------------------
+
+class ShowBitmap : public WorkWindow
+{
+ Bitmap aBmp;
+
+public:
+ ShowBitmap( Window* pParent, const Bitmap& rBmp );
+
+ virtual void Paint( const Rectangle& );
+ virtual BOOL Close();
+};
+
+// -----------------------------------------------------------------------
+
+class ShowFont : public Control
+{
+public:
+ ShowFont( Window* pParent );
+
+ virtual void Paint( const Rectangle& );
+ void SetFont( const Font& rFont )
+ { Invalidate(); Control::SetFont( rFont ); }
+};
+
+// --- class OrientSlider ------------------------------------------------
+
+class OrientSlider : public Slider
+{
+public:
+ OrientSlider( Window* pParent );
+
+ short GetOrientation() const { return (short)GetThumbPos(); }
+};
+
+// -----------------------------------------------------------------------
+
+OrientSlider::OrientSlider( Window* pParent ) :
+ Slider( pParent, WB_HORZ | WB_DRAG )
+{
+ SetThumbPos( 0 );
+ SetLineSize( 10 );
+ SetPageSize( 100 );
+ SetRange( Range( 0, 3600 ) );
+}
+
+// -----------------------------------------------------------------------
+
+class MyFontDialog : public ModalDialog
+{
+private:
+ FontList* pList;
+ Font aCurFont;
+ Printer aPrinter;
+ FontNameBox aFontBox;
+ FontStyleBox aStyleBox;
+ FontSizeBox aSizeBox;
+ ListBox aUnderlineBox;
+ ListBox aStrikeoutBox;
+ CheckBox aWordLineBox;
+ CheckBox aShadowBox;
+ CheckBox aOutlineBox;
+ ColorListBox aColorBox;
+ GroupBox aEffectBox;
+ OrientSlider aLineOrientSlider;
+ ShowFont aShowFont;
+ GroupBox aSampleBox;
+ FixedText aMapText;
+ OKButton aOKBtn;
+ CancelButton aCancelBtn;
+
+public:
+ MyFontDialog( Window* pParent );
+
+ DECL_LINK( SelectFont, ComboBox* );
+ DECL_LINK( SelectStyle, ComboBox* );
+ DECL_LINK( AttrHdl, Window * );
+ void SetAttr();
+ short Execute();
+};
+
+// -----------------------------------------------------------------------
+
+class MyTabBar : public TabBar
+{
+public:
+ MyTabBar( Window* pParent,
+ WinBits nWinStyle = WB_STDTABBAR ) :
+ TabBar( pParent, nWinStyle ) {}
+
+ virtual long DeactivatePage();
+ virtual long AllowRenaming();
+ virtual void Split();
+};
+
+// -----------------------------------------------------------------------
+
+class MyCalendar : public WorkWindow
+{
+ MenuBar aMenuBar;
+ PopupMenu aWeekStartMenu;
+ PopupMenu aWeekCountMenu;
+ Calendar aCalendar;
+ Color aInfoColor;
+ Color aHolidayColor;
+ Color aFrameColor;
+
+public:
+ MyCalendar( Window* pParent );
+ ~MyCalendar();
+
+ DECL_LINK( RequestDateInfoHdl, Calendar* );
+ DECL_LINK( DoubleClickHdl, Calendar* );
+ DECL_LINK( MenuSelectHdl, Menu* );
+
+ void Resize();
+};
+
+// -----------------------------------------------------------------------
+
+class MyWin : public WorkWindow
+{
+private:
+ Printer aPrn;
+ ToolBox aBox;
+ StatusBar aBar;
+ HeaderBar aHeadBar;
+ ColorListBox aColorList;
+ LineListBox aLineList;
+ ValueSet aValueSet;
+ CalendarField aCalendarField;
+ CalendarField aCalendarField2;
+ MyTabBar aTabBar;
+ ProgressBar aPrgsBar;
+ PushButton aFontBtn;
+ PushButton aCalendarBtn;
+ PushButton aPrnSetupBtn;
+ PushButton aPrnDlgBtn;
+ Size aBoxSize;
+ MyCalendar* pCalendar;
+ PopupMenu* pMenu;
+ FontNameMenu* pNameMenu;
+ FontStyleMenu* pStyleMenu;
+ FontSizeMenu* pSizeMenu;
+
+public:
+ MyWin( Window* pParent, WinBits aWinStyle );
+ ~MyWin();
+
+ DECL_LINK( Test, PushButton* );
+ DECL_LINK( SelectHdl, Window* );
+ DECL_LINK( CalSelectHdl, CalendarField* );
+ void ContextMenu( const Point& rPos );
+
+ void Command( const CommandEvent& rCEvt );
+ void MouseButtonDown( const MouseEvent& rMEvt );
+ void KeyInput( const KeyEvent& rKEvt );
+ void Paint( const Rectangle& rRect );
+ void Resize();
+};
+
+// -----------------------------------------------------------------------
+
+void MyApp::Main()
+{
+ try
+ {
+ ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >
+ xMSF = cppu::createRegistryServiceFactory(
+ rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "applicat.rdb" ) ), sal_True );
+
+ ::comphelper::setProcessServiceFactory( xMSF );
+
+ Help aHelp;
+ SetHelp( &aHelp );
+ Help::EnableContextHelp();
+ Help::EnableExtHelp();
+ Help::EnableBalloonHelp();
+ Help::EnableQuickHelp();
+
+ MyWin aMainWin( NULL, WinBits( WB_APP | WB_STDWORK | WB_CLIPCHILDREN ) );
+ aMainWin.SetText( XubString( RTL_CONSTASCII_USTRINGPARAM( "SVTOOLS - Workbench" ) ) );
+ aMainWin.GrabFocus();
+ aMainWin.Show();
+
+ Execute();
+ }
+ catch ( com::sun::star::uno::Exception & e )
+ {
+ fprintf( stderr, "Error during bootstrapping servicemanager: %s\n" ,
+ rtl::OUStringToOString( e.Message, RTL_TEXTENCODING_ASCII_US ).getStr() );
+ }
+}
+
+// -----------------------------------------------------------------------
+
+ShowBitmap::ShowBitmap( Window* pParent, const Bitmap& rBmp ) :
+ WorkWindow( pParent, WB_STDWORK ),
+ aBmp( rBmp )
+{
+ SetOutputSizePixel( rBmp.GetSizePixel() );
+ SetText( XubString( RTL_CONSTASCII_USTRINGPARAM( "Bitmap-Viewer" ) ) );
+ Show();
+}
+
+// -----------------------------------------------------------------------
+
+void ShowBitmap::Paint( const Rectangle& )
+{
+ DrawBitmap( Point(), GetOutputSizePixel(), aBmp );
+}
+
+// -----------------------------------------------------------------------
+
+BOOL ShowBitmap::Close()
+{
+ Hide();
+ delete this;
+ return TRUE;
+}
+
+// -----------------------------------------------------------------------
+
+ShowFont::ShowFont( Window* pParent ) :
+ Control( pParent, WB_BORDER )
+{
+ SetMapMode( MapMode( MAP_POINT, Point(),
+ Fraction( 1, 10 ), Fraction( 1, 10 ) ) );
+ SetBackground( Wallpaper( Color( COL_WHITE ) ) );
+}
+
+// -----------------------------------------------------------------------
+
+void ShowFont::Paint( const Rectangle& )
+{
+ const Font& rFont = GetFont();
+ String aText;
+ Size aWindowSize( GetOutputSize() );
+ long x,y;
+
+ if ( rFont.GetOrientation() )
+ {
+ aText.Append( String::CreateFromInt32( rFont.GetOrientation()/10 ) );
+ aText.AppendAscii( " degree." );
+
+ x = aWindowSize.Width()/2;
+ y = aWindowSize.Height()/2;
+ }
+ else
+ {
+ aText = rFont.GetName();
+ if ( !aText.Len() )
+ aText.AssignAscii( "Sample" );
+
+ x = aWindowSize.Width()/2 - GetTextWidth( aText )/2;
+ y = aWindowSize.Height()/2 - GetTextHeight()/2;
+ }
+
+ DrawText( Point( x, y ), aText );
+}
+
+// -----------------------------------------------------------------------
+
+MyFontDialog::MyFontDialog( Window* pParent ) :
+ ModalDialog( pParent, WB_3DLOOK | WB_STDMODAL ),
+ aFontBox( this ),
+ aStyleBox( this ),
+ aSizeBox( this ),
+ aUnderlineBox( this, WB_DROPDOWN ),
+ aStrikeoutBox( this, WB_DROPDOWN ),
+ aWordLineBox( this ),
+ aShadowBox( this ),
+ aOutlineBox( this ),
+ aColorBox( this, WB_DROPDOWN ),
+ aEffectBox( this ),
+ aLineOrientSlider( this ),
+ aShowFont( this ),
+ aSampleBox( this ),
+ aMapText( this, WB_LEFT | WB_WORDBREAK ),
+ aOKBtn( this, WB_DEFBUTTON ),
+ aCancelBtn( this )
+{
+ pList = NULL;
+
+ aFontBox.EnableWYSIWYG( TRUE );
+ aFontBox.EnableSymbols( TRUE );
+ aFontBox.SetPosSizePixel( Point( 10, 10 ), Size( 140, 140 ) );
+ aFontBox.SetSelectHdl( LINK( this, MyFontDialog, SelectFont ) );
+ aFontBox.SetLoseFocusHdl( LINK( this, MyFontDialog, SelectFont ) );
+ aFontBox.Show();
+
+ aStyleBox.SetPosSizePixel( Point( 160, 10 ), Size( 100, 140 ) );
+ aStyleBox.SetSelectHdl( LINK( this, MyFontDialog, SelectStyle ) );
+ aStyleBox.SetLoseFocusHdl( LINK( this, MyFontDialog, SelectStyle ) );
+ aStyleBox.Show();
+
+ aSizeBox.SetPosSizePixel( Point( 270, 10 ), Size( 60, 140 ) );
+ aSizeBox.SetSelectHdl( LINK( this, MyFontDialog, AttrHdl ) );
+ aSizeBox.SetLoseFocusHdl( LINK( this, MyFontDialog, AttrHdl ) );
+ aSizeBox.Show();
+
+ aUnderlineBox.SetPosSizePixel( Point( 15, 180 ), Size( 130, 100 ) );
+ aUnderlineBox.InsertEntry( XubString( RTL_CONSTASCII_USTRINGPARAM( "UNDERLINE_NONE" ) ) );
+ aUnderlineBox.InsertEntry( XubString( RTL_CONSTASCII_USTRINGPARAM( "UNDERLINE_SINGLE" ) ) );
+ aUnderlineBox.InsertEntry( XubString( RTL_CONSTASCII_USTRINGPARAM( "UNDERLINE_DOUBLE" ) ) );
+ aUnderlineBox.InsertEntry( XubString( RTL_CONSTASCII_USTRINGPARAM( "UNDERLINE_DOTTED" ) ) );
+ aUnderlineBox.InsertEntry( XubString( RTL_CONSTASCII_USTRINGPARAM( "UNDERLINE_DONTKNOW" ) ) );
+ aUnderlineBox.InsertEntry( XubString( RTL_CONSTASCII_USTRINGPARAM( "UNDERLINE_DASH" ) ) );
+ aUnderlineBox.InsertEntry( XubString( RTL_CONSTASCII_USTRINGPARAM( "UNDERLINE_LONGDASH" ) ) );
+ aUnderlineBox.InsertEntry( XubString( RTL_CONSTASCII_USTRINGPARAM( "UNDERLINE_DASHDOT" ) ) );
+ aUnderlineBox.InsertEntry( XubString( RTL_CONSTASCII_USTRINGPARAM( "UNDERLINE_DASHDOTDOT" ) ) );
+ aUnderlineBox.InsertEntry( XubString( RTL_CONSTASCII_USTRINGPARAM( "UNDERLINE_SMALLWAVE" ) ) );
+ aUnderlineBox.InsertEntry( XubString( RTL_CONSTASCII_USTRINGPARAM( "UNDERLINE_WAVE" ) ) );
+ aUnderlineBox.InsertEntry( XubString( RTL_CONSTASCII_USTRINGPARAM( "UNDERLINE_DOUBLEWAVE" ) ) );
+ aUnderlineBox.InsertEntry( XubString( RTL_CONSTASCII_USTRINGPARAM( "UNDERLINE_BOLD" ) ) );
+ aUnderlineBox.InsertEntry( XubString( RTL_CONSTASCII_USTRINGPARAM( "UNDERLINE_BOLDDOTTED" ) ) );
+ aUnderlineBox.InsertEntry( XubString( RTL_CONSTASCII_USTRINGPARAM( "UNDERLINE_BOLDDASH" ) ) );
+ aUnderlineBox.InsertEntry( XubString( RTL_CONSTASCII_USTRINGPARAM( "UNDERLINE_BOLDLONGDASH" ) ) );
+ aUnderlineBox.InsertEntry( XubString( RTL_CONSTASCII_USTRINGPARAM( "UNDERLINE_BOLDDASHDOT" ) ) );
+ aUnderlineBox.InsertEntry( XubString( RTL_CONSTASCII_USTRINGPARAM( "UNDERLINE_BOLDDASHDOTDOT" ) ) );
+ aUnderlineBox.InsertEntry( XubString( RTL_CONSTASCII_USTRINGPARAM( "UNDERLINE_BOLDWAVE" ) ) );
+ aUnderlineBox.SetSelectHdl( LINK( this, MyFontDialog, AttrHdl ) );
+ aUnderlineBox.Show();
+
+ aStrikeoutBox.SetPosSizePixel( Point( 15, 210 ), Size( 130, 100 ) );
+ aStrikeoutBox.InsertEntry( XubString( RTL_CONSTASCII_USTRINGPARAM( "STRIKEOUT_NONE" ) ) );
+ aStrikeoutBox.InsertEntry( XubString( RTL_CONSTASCII_USTRINGPARAM( "STRIKEOUT_SINGLE" ) ) );
+ aStrikeoutBox.InsertEntry( XubString( RTL_CONSTASCII_USTRINGPARAM( "STRIKEOUT_DOUBLE" ) ) );
+ aStrikeoutBox.InsertEntry( XubString( RTL_CONSTASCII_USTRINGPARAM( "STRIKEOUT_DONTKNOW" ) ) );
+ aStrikeoutBox.InsertEntry( XubString( RTL_CONSTASCII_USTRINGPARAM( "STRIKEOUT_BOLD" ) ) );
+ aStrikeoutBox.InsertEntry( XubString( RTL_CONSTASCII_USTRINGPARAM( "STRIKEOUT_SLASH" ) ) );
+ aStrikeoutBox.InsertEntry( XubString( RTL_CONSTASCII_USTRINGPARAM( "STRIKEOUT_X" ) ) );
+ aStrikeoutBox.SetSelectHdl( LINK( this, MyFontDialog, AttrHdl ) );
+ aStrikeoutBox.Show();
+
+ aWordLineBox.SetPosSizePixel( Point( 15, 240 ), Size( 130, 19 ) );
+ aWordLineBox.SetText( XubString( RTL_CONSTASCII_USTRINGPARAM( "Only ~Words" ) ) );
+ aWordLineBox.SetClickHdl( LINK( this, MyFontDialog, AttrHdl ) );
+ aWordLineBox.Show();
+
+ aShadowBox.SetPosSizePixel( Point( 15, 260 ), Size( 130, 19 ) );
+ aShadowBox.SetText( XubString( RTL_CONSTASCII_USTRINGPARAM( "~Shadow" ) ) );
+ aShadowBox.SetClickHdl( LINK( this, MyFontDialog, AttrHdl ) );
+ aShadowBox.Show();
+
+ aOutlineBox.SetPosSizePixel( Point( 15, 280 ), Size( 130, 19 ) );
+ aOutlineBox.SetText( XubString( RTL_CONSTASCII_USTRINGPARAM( "~Outline" ) ) );
+ aOutlineBox.SetClickHdl( LINK( this, MyFontDialog, AttrHdl ) );
+ aOutlineBox.Show();
+
+ {
+ aColorBox.SetPosSizePixel( Point( 15, 305 ), Size( 130, 100 ) );
+ aColorBox.SetSelectHdl( LINK( this, MyFontDialog, AttrHdl ) );
+ aColorBox.SetUpdateMode( FALSE );
+ aColorBox.InsertEntry( Color( COL_BLACK ), XubString( RTL_CONSTASCII_USTRINGPARAM( "Black" ) ) );
+ aColorBox.InsertEntry( Color( COL_BLUE ), XubString( RTL_CONSTASCII_USTRINGPARAM( "Blue" ) ) );
+ aColorBox.InsertEntry( Color( COL_GREEN ), XubString( RTL_CONSTASCII_USTRINGPARAM( "Green" ) ) );
+ aColorBox.InsertEntry( Color( COL_CYAN ), XubString( RTL_CONSTASCII_USTRINGPARAM( "Cyan" ) ) );
+ aColorBox.InsertEntry( Color( COL_RED ), XubString( RTL_CONSTASCII_USTRINGPARAM( "Red" ) ) );
+ aColorBox.InsertEntry( Color( COL_MAGENTA ), XubString( RTL_CONSTASCII_USTRINGPARAM( "Magenta" ) ) );
+ aColorBox.InsertEntry( Color( COL_BROWN ), XubString( RTL_CONSTASCII_USTRINGPARAM( "Brown" ) ) );
+ aColorBox.InsertEntry( Color( COL_GRAY ), XubString( RTL_CONSTASCII_USTRINGPARAM( "Gray" ) ) );
+ aColorBox.InsertEntry( Color( COL_LIGHTGRAY ), XubString( RTL_CONSTASCII_USTRINGPARAM( "LightGray" ) ) );
+ aColorBox.InsertEntry( Color( COL_LIGHTBLUE ), XubString( RTL_CONSTASCII_USTRINGPARAM( "LightBlue" ) ) );
+ aColorBox.InsertEntry( Color( COL_LIGHTGREEN ), XubString( RTL_CONSTASCII_USTRINGPARAM( "LightGreen" ) ) );
+ aColorBox.InsertEntry( Color( COL_LIGHTCYAN ), XubString( RTL_CONSTASCII_USTRINGPARAM( "LightCyan" ) ) );
+ aColorBox.InsertEntry( Color( COL_LIGHTRED ), XubString( RTL_CONSTASCII_USTRINGPARAM( "LightRed" ) ) );
+ aColorBox.InsertEntry( Color( COL_LIGHTMAGENTA ), XubString( RTL_CONSTASCII_USTRINGPARAM( "LightMagenta" ) ) );
+ aColorBox.InsertEntry( Color( COL_YELLOW ), XubString( RTL_CONSTASCII_USTRINGPARAM( "Yellow" ) ) );
+ aColorBox.InsertEntry( Color( COL_WHITE ), XubString( RTL_CONSTASCII_USTRINGPARAM( "White" ) ) );
+ aColorBox.SetUpdateMode( TRUE );
+ aColorBox.Show();
+ }
+
+ aEffectBox.SetPosSizePixel( Point( 10, 160 ), Size( 140, 175 ) );
+ aEffectBox.SetText( XubString( RTL_CONSTASCII_USTRINGPARAM( "Effects" ) ) );
+ aEffectBox.Show();
+
+ Size aSliderSize = aLineOrientSlider.GetSizePixel();
+ aLineOrientSlider.SetPosSizePixel( Point( 160, 335-aSliderSize.Height() ),
+ Size( 250, aSliderSize.Height() ) );
+ aLineOrientSlider.SetSlideHdl( LINK( this, MyFontDialog, AttrHdl ) );
+ aLineOrientSlider.Show();
+
+ aShowFont.SetPosSizePixel( Point( 165, 180 ), Size( 240, 70 ) );
+ aShowFont.SetText( XubString( RTL_CONSTASCII_USTRINGPARAM( "Sample" ) ) );
+ aShowFont.Show();
+
+ aSampleBox.SetPosSizePixel( Point( 160, 160 ), Size( 250, 100 ) );
+ aSampleBox.SetText( XubString( RTL_CONSTASCII_USTRINGPARAM( "Sample" ) ) );
+ aSampleBox.Show();
+
+ aMapText.SetPosSizePixel( Point( 160, 270 ), Size( 250, 35 ) );
+ aMapText.Show();
+
+ aOKBtn.SetPosSizePixel( Point( 340, 10 ), Size( 70, 25 ) );
+ aOKBtn.Show();
+
+ aCancelBtn.SetPosSizePixel( Point( 340, 40 ), Size( 70, 25 ) );
+ aCancelBtn.Show();
+
+ SetText( XubString( RTL_CONSTASCII_USTRINGPARAM( "FontDialog" ) ) );
+ SetOutputSizePixel( Size( 420, 345 ) );
+}
+
+// -----------------------------------------------------------------------
+
+IMPL_LINK( MyFontDialog, SelectFont, ComboBox*, EMPTYARG )
+{
+ aStyleBox.Fill( aFontBox.GetText(), pList );
+ FontInfo aInfo = pList->Get( aFontBox.GetText(), aStyleBox.GetText() );
+ aSizeBox.Fill( &aInfo, pList );
+ SetAttr();
+ return 0;
+}
+
+// -----------------------------------------------------------------------
+
+IMPL_LINK( MyFontDialog, SelectStyle, ComboBox*, EMPTYARG )
+{
+ FontInfo aInfo = pList->Get( aFontBox.GetText(), aStyleBox.GetText() );
+ aSizeBox.Fill( &aInfo, pList );
+ SetAttr();
+ return 0;
+}
+
+// -----------------------------------------------------------------------
+
+IMPL_LINK( MyFontDialog, AttrHdl, Window*, EMPTYARG )
+{
+ SetAttr();
+ return 0;
+}
+
+// -----------------------------------------------------------------------
+
+void MyFontDialog::SetAttr()
+{
+ FontInfo aFont( pList->Get( aFontBox.GetText(), aStyleBox.GetText() ) );
+ aFont.SetSize( Size( 0, aSizeBox.GetValue() ) );
+ aFont.SetUnderline( (FontUnderline)aUnderlineBox.GetSelectEntryPos() );
+ aFont.SetStrikeout( (FontStrikeout)aStrikeoutBox.GetSelectEntryPos() );
+ aFont.SetColor( Color( (ColorData)aColorBox.GetSelectEntryPos() ) );
+ aFont.SetWordLineMode( aWordLineBox.IsChecked() );
+ aFont.SetShadow( aShadowBox.IsChecked() );
+ aFont.SetOutline( aOutlineBox.IsChecked() );
+ aFont.SetOrientation( aLineOrientSlider.GetOrientation() );
+ aFont.SetTransparent( TRUE );
+ aMapText.SetText( pList->GetFontMapText( aFont ) );
+ aShowFont.SetFont( aFont );
+}
+
+// -----------------------------------------------------------------------
+
+short MyFontDialog::Execute()
+{
+ pList = new FontList( &aPrinter, this );
+ aFontBox.Fill( pList );
+ aSizeBox.SetValue( 120 );
+ aUnderlineBox.SelectEntryPos( 0 );
+ aStrikeoutBox.SelectEntryPos( 0 );
+ aColorBox.SelectEntryPos( 0 );
+ SelectFont( &aFontBox );
+ short nRet = ModalDialog::Execute();
+ delete pList;
+ return nRet;
+}
+
+// -----------------------------------------------------------------------
+
+long MyTabBar::DeactivatePage()
+{
+ if ( GetCurPageId() == 6 )
+ {
+ QueryBox aQueryBox( this, WB_YES_NO | WB_DEF_YES,
+ XubString( RTL_CONSTASCII_USTRINGPARAM( "Deactivate" ) ) );
+ if ( aQueryBox.Execute() == RET_YES )
+ return TRUE;
+ else
+ return FALSE;
+ }
+ else
+ return TRUE;
+}
+
+// -----------------------------------------------------------------------
+
+long MyTabBar::AllowRenaming()
+{
+ XubString aStr( RTL_CONSTASCII_USTRINGPARAM( "Allow renaming: " ) );
+ aStr += GetEditText();
+ QueryBox aQueryBox( this, WB_YES_NO_CANCEL | WB_DEF_YES, aStr );
+ long nRet = aQueryBox.Execute();
+ if ( nRet == RET_YES )
+ return TAB_RENAMING_YES;
+ else if ( nRet == RET_NO )
+ return TAB_RENAMING_NO;
+ else // ( nRet == RET_CANCEL )
+ return TAB_RENAMING_CANCEL;
+}
+
+// -----------------------------------------------------------------------
+
+void MyTabBar::Split()
+{
+ Size aSize = GetSizePixel();
+ long nWidth = GetSplitSize();
+ long nMaxWidth = GetParent()->GetOutputSizePixel().Width()-50;
+ if ( nWidth < GetMinSize() )
+ nWidth = GetMinSize();
+ else if ( nWidth > nMaxWidth )
+ nWidth = nMaxWidth;
+ SetSizePixel( Size( nWidth, aSize.Height() ) );
+}
+
+// -----------------------------------------------------------------------
+
+MyCalendar::MyCalendar( Window* pParent ) :
+ WorkWindow( pParent, WB_STDWORK ),
+ aCalendar( this, WB_TABSTOP | WB_WEEKNUMBER | WB_BOLDTEXT | WB_FRAMEINFO | WB_MULTISELECT ),
+ aInfoColor( COL_LIGHTBLUE ),
+ aHolidayColor( COL_LIGHTRED ),
+ aFrameColor( COL_LIGHTRED )
+{
+ const CalendarWrapper& rCal = aCalendar.GetCalendarWrapper();
+ aMenuBar.InsertItem( 1, XubString( RTL_CONSTASCII_USTRINGPARAM( "Wochen~anfang" ) ) );
+ aMenuBar.InsertItem( 2, XubString( RTL_CONSTASCII_USTRINGPARAM( "~Erste Woche" ) ) );
+ aMenuBar.SetPopupMenu( 1, &aWeekStartMenu );
+ aMenuBar.SetPopupMenu( 2, &aWeekCountMenu );
+ sal_Int16 nDays = rCal.getNumberOfDaysInWeek();
+ uno::Sequence< i18n::CalendarItem> xItems = rCal.getDays();
+ const i18n::CalendarItem* pArr = xItems.getArray();
+ for ( sal_Int16 i = 0; i < nDays; i++ )
+ aWeekStartMenu.InsertItem( 10+(USHORT)i, pArr[i].FullName, MIB_AUTOCHECK | MIB_RADIOCHECK );
+ aWeekStartMenu.CheckItem( 10+(USHORT)rCal.getFirstDayOfWeek() );
+ aWeekCountMenu.InsertItem( 20, XubString( RTL_CONSTASCII_USTRINGPARAM( "~1. Januar" ) ), MIB_AUTOCHECK | MIB_RADIOCHECK );
+ aWeekCountMenu.InsertItem( 21, XubString( RTL_CONSTASCII_USTRINGPARAM( "~2 days" ) ), MIB_AUTOCHECK | MIB_RADIOCHECK );
+ aWeekCountMenu.InsertItem( 22, XubString( RTL_CONSTASCII_USTRINGPARAM( "~3 days" ) ), MIB_AUTOCHECK | MIB_RADIOCHECK );
+ aWeekCountMenu.InsertItem( 23, XubString( RTL_CONSTASCII_USTRINGPARAM( "Erste 4 ~Tage-Woche" ) ), MIB_AUTOCHECK | MIB_RADIOCHECK );
+ aWeekCountMenu.InsertItem( 24, XubString( RTL_CONSTASCII_USTRINGPARAM( "~5 days" ) ), MIB_AUTOCHECK | MIB_RADIOCHECK );
+ aWeekCountMenu.InsertItem( 25, XubString( RTL_CONSTASCII_USTRINGPARAM( "~6 days" ) ), MIB_AUTOCHECK | MIB_RADIOCHECK );
+ aWeekCountMenu.InsertItem( 26, XubString( RTL_CONSTASCII_USTRINGPARAM( "Erste ~volle Woche" ) ), MIB_AUTOCHECK | MIB_RADIOCHECK );
+ //was: one of 0, 1, 2; aWeekCountMenu.CheckItem( 20+(USHORT)rIntn.GetWeekCountStart() );
+ aWeekCountMenu.CheckItem( 20+(USHORT)rCal.getMinimumNumberOfDaysForFirstWeek() );
+ aMenuBar.SetSelectHdl( LINK( this, MyCalendar, MenuSelectHdl ) );
+ SetMenuBar( &aMenuBar );
+
+ Date aCurDate = aCalendar.GetCurDate();
+ aCalendar.SetRequestDateInfoHdl( LINK( this, MyCalendar, RequestDateInfoHdl ) );
+ aCalendar.SetDoubleClickHdl( LINK( this, MyCalendar, DoubleClickHdl ) );
+ aCalendar.SetSaturdayColor( Color( COL_LIGHTGREEN ) );
+ aCalendar.SetSundayColor( aHolidayColor );
+ aCalendar.AddDateInfo( Date( 1, 1, 0 ), XubString( RTL_CONSTASCII_USTRINGPARAM( "Neujahr" ) ), &aHolidayColor, NULL );
+ aCalendar.AddDateInfo( Date( 24, 12, 0 ), XubString( RTL_CONSTASCII_USTRINGPARAM( "Heiligabend" ) ), &aInfoColor, NULL );
+ aCalendar.AddDateInfo( Date( 25, 12, 0 ), XubString( RTL_CONSTASCII_USTRINGPARAM( "1. Weihnachttag" ) ), &aHolidayColor, NULL );
+ aCalendar.AddDateInfo( Date( 26, 12, 0 ), XubString( RTL_CONSTASCII_USTRINGPARAM( "2. Weihnachttag" ) ), &aHolidayColor, NULL );
+ aCalendar.AddDateInfo( Date( 31, 12, 0 ), XubString( RTL_CONSTASCII_USTRINGPARAM( "Silvester" ) ), &aInfoColor, NULL );
+ aCalendar.SetPosPixel( Point() );
+ aCalendar.SetFirstDate( Date( 1, 1, aCurDate.GetYear() ) );
+ aCalendar.Show();
+
+ SetText( XubString( RTL_CONSTASCII_USTRINGPARAM( "Calendar" ) ) );
+ SetOutputSizePixel( aCalendar.CalcWindowSizePixel( 3, 4 ) );
+}
+
+// -----------------------------------------------------------------------
+
+MyCalendar::~MyCalendar()
+{
+ SetMenuBar( NULL );
+ aMenuBar.SetPopupMenu( 1, NULL );
+ aMenuBar.SetPopupMenu( 2, NULL );
+}
+
+// -----------------------------------------------------------------------
+
+IMPL_LINK( MyCalendar, RequestDateInfoHdl, Calendar*, EMPTYARG )
+{
+ USHORT nRequestYear = aCalendar.GetRequestYear();
+ if ( (nRequestYear >= 1954) && (nRequestYear <= 1989) )
+ aCalendar.AddDateInfo( Date( 17, 6, nRequestYear ), XubString( RTL_CONSTASCII_USTRINGPARAM( "Tag der deutschen Einheit" ) ), &aHolidayColor, NULL );
+ else if ( nRequestYear >= 1990 )
+ aCalendar.AddDateInfo( Date( 3, 10, nRequestYear ), XubString( RTL_CONSTASCII_USTRINGPARAM( "Tag der deutschen Einheit" ) ), &aHolidayColor, NULL );
+ return 0;
+}
+
+// -----------------------------------------------------------------------
+
+IMPL_LINK( MyCalendar, DoubleClickHdl, Calendar*, EMPTYARG )
+{
+ Date aDate = aCalendar.GetCurDate();
+ String aStr( RTL_CONSTASCII_USTRINGPARAM( "Info: " ) );
+ aStr += Application::GetAppLocaleDataWrapper().getDate( aDate );
+ aCalendar.AddDateInfo( aDate, aStr, NULL, &aFrameColor, DIB_BOLD );
+ return 0;
+}
+
+// -----------------------------------------------------------------------
+
+IMPL_LINK( MyCalendar, MenuSelectHdl, Menu*, pMenu )
+{
+ USHORT nItemId = pMenu->GetCurItemId();
+
+ if ( (nItemId >= 10) && (nItemId <= 19) )
+ aCalendar.SetWeekStart( nItemId-10 );
+ else if ( (nItemId >= 20) && (nItemId <= 29) )
+ aCalendar.SetMinimumNumberOfDaysInWeek( nItemId-20 );
+
+ return 0;
+}
+
+// -----------------------------------------------------------------------
+
+void MyCalendar::Resize()
+{
+ aCalendar.SetSizePixel( GetOutputSizePixel() );
+}
+
+// -----------------------------------------------------------------------
+
+MyWin::MyWin( Window* pParent, WinBits aWinStyle ) :
+ WorkWindow(pParent, aWinStyle | WB_3DLOOK ),
+ aBox( this, WB_BORDER | WB_3DLOOK ),
+ aBar( this, WB_BORDER | WB_3DLOOK | WB_RIGHT ),
+ aHeadBar( this, WB_BORDER | WB_3DLOOK | WB_DRAG | WB_BUTTONSTYLE ),
+ aColorList( this ),
+ aLineList( this ),
+ aValueSet( this, WB_TABSTOP | WB_NAMEFIELD | WB_NONEFIELD | WB_BORDER | WB_ITEMBORDER | WB_VSCROLL /* | WB_FLATVALUESET */ ),
+ aCalendarField( this, WB_TABSTOP | WB_SPIN | WB_REPEAT | WB_DROPDOWN | WB_BORDER ),
+ aCalendarField2( this, WB_TABSTOP | WB_SPIN | WB_REPEAT | WB_DROPDOWN | WB_BORDER ),
+ aTabBar( this, WB_BORDER | WB_MULTISELECT | WB_SCROLL | WB_SIZEABLE | WB_DRAG ),
+ aPrgsBar( this ),
+ aFontBtn( this ),
+ aCalendarBtn( this ),
+ aPrnSetupBtn( this ),
+ aPrnDlgBtn( this )
+{
+ SetBackground( Wallpaper( GetSettings().GetStyleSettings().GetFaceColor() ) );
+
+ pCalendar = NULL;
+ pMenu = NULL;
+
+ Bitmap aBmp;
+ aBox.InsertItem( 1, aBmp );
+ aBox.InsertItem( 2, aBmp );
+ aBox.InsertItem( 3, aBmp );
+ aBox.InsertItem( 4, aBmp );
+ aBox.InsertSeparator();
+ aBox.InsertItem( 5, aBmp );
+ aBox.InsertItem( 6, aBmp );
+ aBox.InsertItem( 7, aBmp );
+ aBox.InsertItem( 8, aBmp );
+ aBox.InsertSpace();
+ aBox.InsertItem( 9, aBmp );
+ aBox.SetPosPixel( Point( 0, 0 ) );
+ aBoxSize = aBox.GetSizePixel();
+ aBox.Show();
+
+ aBar.SetText( XubString( RTL_CONSTASCII_USTRINGPARAM( "Ready" ) ) );
+ aBar.InsertItem( 1, 35 );
+ aBar.InsertItem( 2, 55 );
+ aBar.InsertItem( 3, 55 );
+ aBar.SetItemText( 1, XubString( RTL_CONSTASCII_USTRINGPARAM( "Text" ) ) );
+ aBar.SetItemText( 2, XubString( RTL_CONSTASCII_USTRINGPARAM( "21.01.93" ) ) );
+ aBar.SetItemText( 3, XubString( RTL_CONSTASCII_USTRINGPARAM( "12:00:00" ) ) );
+ aBar.Show();
+
+ long nY = aBox.GetSizePixel().Height()+10;
+ {
+ aHeadBar.SetPosPixel( Point( 0, nY ) );
+ aHeadBar.InsertItem( 1, XubString( RTL_CONSTASCII_USTRINGPARAM( "Sender" ) ), 150 );
+ aHeadBar.InsertItem( 2, XubString( RTL_CONSTASCII_USTRINGPARAM( "Subject" ) ), 150, HIB_CENTER | HIB_VCENTER | HIB_CLICKABLE );
+ aHeadBar.InsertItem( 3, XubString( RTL_CONSTASCII_USTRINGPARAM( "Date" ) ), 75 );
+ aHeadBar.InsertItem( 4, XubString( RTL_CONSTASCII_USTRINGPARAM( "Size" ) ), 60, HIB_RIGHT | HIB_VCENTER | HIB_CLICKABLE );
+ aHeadBar.InsertItem( 9999, String(), HEADERBAR_FULLSIZE, HIB_RIGHT | HIB_VCENTER | HIB_FIXEDPOS );
+ aHeadBar.SetSelectHdl( LINK( this, MyWin, SelectHdl ) );
+ aHeadBar.Show();
+ nY += aHeadBar.GetSizePixel().Height() += 10;
+ }
+
+ {
+ aColorList.SetPosSizePixel( Point( 10, nY ), Size( 130, 180 ) );
+ aColorList.SetUpdateMode( FALSE );
+ aColorList.InsertEntry( Color( COL_BLACK ), XubString( RTL_CONSTASCII_USTRINGPARAM( "Black" ) ) );
+ aColorList.InsertEntry( Color( COL_BLUE ), XubString( RTL_CONSTASCII_USTRINGPARAM( "Blue" ) ) );
+ aColorList.InsertEntry( Color( COL_GREEN ), XubString( RTL_CONSTASCII_USTRINGPARAM( "Green" ) ) );
+ aColorList.InsertEntry( Color( COL_CYAN ), XubString( RTL_CONSTASCII_USTRINGPARAM( "Cyan" ) ) );
+ aColorList.InsertEntry( Color( COL_RED ), XubString( RTL_CONSTASCII_USTRINGPARAM( "Red" ) ) );
+ aColorList.InsertEntry( Color( COL_MAGENTA ), XubString( RTL_CONSTASCII_USTRINGPARAM( "Magenta" ) ) );
+ aColorList.InsertEntry( Color( COL_BROWN ), XubString( RTL_CONSTASCII_USTRINGPARAM( "Brown" ) ) );
+ aColorList.InsertEntry( Color( COL_GRAY ), XubString( RTL_CONSTASCII_USTRINGPARAM( "Gray" ) ) );
+ aColorList.InsertEntry( Color( COL_LIGHTGRAY ), XubString( RTL_CONSTASCII_USTRINGPARAM( "LightGray" ) ) );
+ aColorList.InsertEntry( Color( COL_LIGHTBLUE ), XubString( RTL_CONSTASCII_USTRINGPARAM( "LightBlue" ) ) );
+ aColorList.InsertEntry( Color( COL_LIGHTGREEN ), XubString( RTL_CONSTASCII_USTRINGPARAM( "LightGreen" ) ) );
+ aColorList.InsertEntry( Color( COL_LIGHTCYAN ), XubString( RTL_CONSTASCII_USTRINGPARAM( "LightCyan" ) ) );
+ aColorList.InsertEntry( Color( COL_LIGHTRED ), XubString( RTL_CONSTASCII_USTRINGPARAM( "LightRed" ) ) );
+ aColorList.InsertEntry( Color( COL_LIGHTMAGENTA ), XubString( RTL_CONSTASCII_USTRINGPARAM( "LightMagenta" ) ) );
+ aColorList.InsertEntry( Color( COL_YELLOW ), XubString( RTL_CONSTASCII_USTRINGPARAM( "Yellow" ) ) );
+ aColorList.InsertEntry( Color( COL_WHITE ), XubString( RTL_CONSTASCII_USTRINGPARAM( "White" ) ) );
+ aColorList.SetUpdateMode( TRUE );
+ aColorList.SetSelectHdl( LINK( this, MyWin, SelectHdl ) );
+ aColorList.Show();
+ }
+
+ {
+ aLineList.SetPosSizePixel( Point( 150, nY ), Size( 130, 180 ) );
+ aLineList.SetUnit( FUNIT_POINT );
+ aLineList.SetSourceUnit( FUNIT_TWIP );
+ aLineList.InsertEntry( XubString( RTL_CONSTASCII_USTRINGPARAM( "Hairline" ) ) );
+ aLineList.InsertEntry( 1500 );
+ aLineList.InsertEntry( 3000 );
+ aLineList.InsertEntry( 4500 );
+ aLineList.InsertEntry( 6000 );
+ aLineList.InsertEntry( 7500 );
+ aLineList.InsertEntry( 9000 );
+ aLineList.InsertEntry( 1500, 1500, 1500 );
+ aLineList.InsertEntry( 3000, 1500, 1500 );
+ aLineList.InsertEntry( 4500, 1500, 1500 );
+ aLineList.InsertEntry( 3000, 3000, 1500 );
+ aLineList.InsertEntry( 4500, 3000, 1500 );
+ aLineList.InsertEntry( 4500, 4500, 1500 );
+ aLineList.Show();
+ }
+
+ {
+ aValueSet.SetPosSizePixel( Point( 290, nY ), Size( 130, 180 ) );
+ aValueSet.InsertItem( 9, Color( COL_BLACK ), XubString( RTL_CONSTASCII_USTRINGPARAM( "Black" ) ) );
+ aValueSet.InsertItem( 10, Color( COL_BLUE ), XubString( RTL_CONSTASCII_USTRINGPARAM( "Blue" ) ) );
+ aValueSet.InsertItem( 11, Color( COL_GREEN ), XubString( RTL_CONSTASCII_USTRINGPARAM( "Green" ) ) );
+ aValueSet.InsertItem( 12, Color( COL_CYAN ), XubString( RTL_CONSTASCII_USTRINGPARAM( "Cyan" ) ) );
+ aValueSet.InsertItem( 13, Color( COL_RED ), XubString( RTL_CONSTASCII_USTRINGPARAM( "Red" ) ) );
+ aValueSet.InsertItem( 14, Color( COL_MAGENTA ), XubString( RTL_CONSTASCII_USTRINGPARAM( "Magenta" ) ) );
+ aValueSet.InsertItem( 15, Color( COL_BROWN ), XubString( RTL_CONSTASCII_USTRINGPARAM( "Brown" ) ) );
+ aValueSet.InsertItem( 16, Color( COL_GRAY ), XubString( RTL_CONSTASCII_USTRINGPARAM( "Gray" ) ) );
+ aValueSet.InsertItem( 17, Color( COL_LIGHTGRAY ), XubString( RTL_CONSTASCII_USTRINGPARAM( "LightGray" ) ) );
+ aValueSet.InsertItem( 18, Color( COL_LIGHTBLUE ), XubString( RTL_CONSTASCII_USTRINGPARAM( "LightBlue" ) ) );
+ aValueSet.InsertItem( 19, Color( COL_LIGHTGREEN ), XubString( RTL_CONSTASCII_USTRINGPARAM( "LightGreen" ) ) );
+ aValueSet.InsertItem( 20, Color( COL_LIGHTCYAN ), XubString( RTL_CONSTASCII_USTRINGPARAM( "LightCyan" ) ) );
+ aValueSet.InsertItem( 21, Color( COL_LIGHTRED ), XubString( RTL_CONSTASCII_USTRINGPARAM( "LightRed" ) ) );
+ aValueSet.InsertItem( 22, Color( COL_LIGHTMAGENTA ), XubString( RTL_CONSTASCII_USTRINGPARAM( "LightMagenta" ) ) );
+ aValueSet.InsertItem( 23, Color( COL_YELLOW ), XubString( RTL_CONSTASCII_USTRINGPARAM( "Yellow" ) ) );
+ aValueSet.InsertItem( 24, Color( COL_WHITE ), XubString( RTL_CONSTASCII_USTRINGPARAM( "White" ) ) );
+ aValueSet.SetText( XubString( RTL_CONSTASCII_USTRINGPARAM( "None" ) ) );
+ aValueSet.SetColCount( 4 );
+ aValueSet.SetLineCount( 4 );
+ aValueSet.SetSelectHdl( LINK( this, MyWin, SelectHdl ) );
+ aValueSet.Show();
+ }
+
+ {
+ aCalendarField.EnableEmptyFieldValue( TRUE );
+ aCalendarField.SetCalendarStyle( aCalendarField.GetCalendarStyle() | WB_RANGESELECT );
+ aCalendarField.SetSelectHdl( LINK( this, MyWin, CalSelectHdl ) );
+// aCalendarField.SetDate( Date() );
+ aCalendarField.SetEmptyDate();
+ aCalendarField.EnableToday();
+ aCalendarField.EnableNone();
+ aCalendarField.SetPosSizePixel( Point( 430, nY ), Size( 130, 20 ) );
+ aCalendarField.Show();
+ }
+
+ {
+ aCalendarField2.SetDate( Date() );
+ aCalendarField2.SetPosSizePixel( Point( 570, nY ), Size( 130, 20 ) );
+ aCalendarField2.Show();
+ }
+
+ nY += 200;
+ {
+ aTabBar.SetPosSizePixel( Point( 10, nY ),
+ Size( 300, aTabBar.GetSizePixel().Height() ) );
+ aTabBar.InsertPage( 1, XubString( RTL_CONSTASCII_USTRINGPARAM( "Page 1" ) ) );
+ aTabBar.InsertPage( 2, XubString( RTL_CONSTASCII_USTRINGPARAM( "Page 2" ) ) );
+ aTabBar.InsertPage( 3, XubString( RTL_CONSTASCII_USTRINGPARAM( "Page 3" ) ) );
+ aTabBar.InsertPage( 4, XubString( RTL_CONSTASCII_USTRINGPARAM( "Page 4" ) ) );
+ aTabBar.InsertPage( 5, XubString( RTL_CONSTASCII_USTRINGPARAM( "Page 5" ) ) );
+ aTabBar.InsertPage( 6, XubString( RTL_CONSTASCII_USTRINGPARAM( "Page 6" ) ) );
+ aTabBar.InsertPage( 7, XubString( RTL_CONSTASCII_USTRINGPARAM( "Page 7" ) ) );
+ aTabBar.InsertPage( 8, XubString( RTL_CONSTASCII_USTRINGPARAM( "Page 8" ) ) );
+ aTabBar.InsertPage( 9, XubString( RTL_CONSTASCII_USTRINGPARAM( "Page 9" ) ) );
+ aTabBar.InsertPage( 10, XubString( RTL_CONSTASCII_USTRINGPARAM( "Page 10" ) ) );
+ aTabBar.InsertPage( 11, XubString( RTL_CONSTASCII_USTRINGPARAM( "Page 11" ) ) );
+ aTabBar.InsertPage( 12, XubString( RTL_CONSTASCII_USTRINGPARAM( "Page 12" ) ) );
+ aTabBar.InsertPage( 13, XubString( RTL_CONSTASCII_USTRINGPARAM( "Page 13" ) ) );
+ aTabBar.InsertPage( 14, XubString( RTL_CONSTASCII_USTRINGPARAM( "Page 14" ) ) );
+ aTabBar.InsertPage( 15, XubString( RTL_CONSTASCII_USTRINGPARAM( "Page 15" ) ) );
+ aTabBar.InsertPage( 16, XubString( RTL_CONSTASCII_USTRINGPARAM( "Page 16" ) ) );
+ aTabBar.InsertPage( 17, XubString( RTL_CONSTASCII_USTRINGPARAM( "Page 17" ) ) );
+ aTabBar.InsertPage( 18, XubString( RTL_CONSTASCII_USTRINGPARAM( "Page 18" ) ) );
+ aTabBar.InsertPage( 19, XubString( RTL_CONSTASCII_USTRINGPARAM( "Page 19" ) ) );
+ aTabBar.InsertPage( 20, XubString( RTL_CONSTASCII_USTRINGPARAM( "Page 20" ) ) );
+ aTabBar.InsertPage( 21, XubString( RTL_CONSTASCII_USTRINGPARAM( "This is a long Page Text" ) ) );
+ aTabBar.InsertPage( 22, XubString( RTL_CONSTASCII_USTRINGPARAM( "Short Text" ) ) );
+ aTabBar.InsertPage( 23, XubString( RTL_CONSTASCII_USTRINGPARAM( "And now a very very long Page Text" ) ) );
+ aTabBar.InsertPage( 24, XubString( RTL_CONSTASCII_USTRINGPARAM( "Page 24" ) ) );
+ aTabBar.InsertPage( 25, XubString( RTL_CONSTASCII_USTRINGPARAM( "Page 25" ) ) );
+ aTabBar.InsertPage( 26, XubString( RTL_CONSTASCII_USTRINGPARAM( "And now a very long Page Text" ) ) );
+ aTabBar.InsertPage( 27, XubString( RTL_CONSTASCII_USTRINGPARAM( "Page 27" ) ) );
+ aTabBar.InsertPage( 28, XubString( RTL_CONSTASCII_USTRINGPARAM( "Page 28" ) ) );
+ aTabBar.InsertPage( 29, XubString( RTL_CONSTASCII_USTRINGPARAM( "Page 29" ) ) );
+ aTabBar.InsertPage( 30, XubString( RTL_CONSTASCII_USTRINGPARAM( "Page 30" ) ) );
+ aTabBar.EnableEditMode();
+ aTabBar.Show();
+ }
+
+ nY += 35;
+ {
+ aPrgsBar.SetPosPixel( Point( 10, nY ) );
+ aPrgsBar.Show();
+ }
+
+ nY += 40;
+ {
+ aFontBtn.SetPosSizePixel( Point( 10, nY ), Size( 100, 30 ) );
+ aFontBtn.SetText( XubString( RTL_CONSTASCII_USTRINGPARAM( "Font..." ) ) );
+ aFontBtn.SetClickHdl( LINK( this, MyWin, Test ) );
+ aFontBtn.Show();
+
+ aCalendarBtn.SetPosSizePixel( Point( 120, nY ), Size( 100, 30 ) );
+ aCalendarBtn.SetText( XubString( RTL_CONSTASCII_USTRINGPARAM( "Calendar" ) ) );
+ aCalendarBtn.SetClickHdl( LINK( this, MyWin, Test ) );
+ aCalendarBtn.Show();
+
+ aPrnSetupBtn.SetPosSizePixel( Point( 230, nY ), Size( 100, 30 ) );
+ aPrnSetupBtn.SetText( XubString( RTL_CONSTASCII_USTRINGPARAM( "PrnSetup..." ) ) );
+ aPrnSetupBtn.SetClickHdl( LINK( this, MyWin, Test ) );
+ aPrnSetupBtn.Show();
+
+ aPrnDlgBtn.SetPosSizePixel( Point( 340, nY ), Size( 100, 30 ) );
+ aPrnDlgBtn.SetText( XubString( RTL_CONSTASCII_USTRINGPARAM( "Print...." ) ) );
+ aPrnDlgBtn.SetClickHdl( LINK( this, MyWin, Test ) );
+ aPrnDlgBtn.Show();
+ }
+}
+
+// -----------------------------------------------------------------------
+
+MyWin::~MyWin()
+{
+ if ( pCalendar )
+ delete pCalendar;
+
+ if ( pMenu )
+ {
+ delete pMenu;
+ delete pNameMenu;
+ delete pStyleMenu;
+ delete pSizeMenu;
+ }
+}
+
+// -----------------------------------------------------------------------
+
+IMPL_LINK( MyWin, Test, PushButton*, pBtn )
+{
+ if ( pBtn == &aFontBtn )
+ {
+ MyFontDialog* pDlg = new MyFontDialog( this );
+ pDlg->Execute();
+ delete pDlg;
+ }
+ else if ( pBtn == &aCalendarBtn )
+ {
+ if ( !pCalendar )
+ pCalendar = new MyCalendar( this );
+ pCalendar->ToTop();
+ pCalendar->Show();
+ }
+ else if ( pBtn == &aPrnSetupBtn )
+ {
+ PrinterSetupDialog* pDlg = new PrinterSetupDialog( this );
+ pDlg->SetPrinter( &aPrn );
+ pDlg->Execute();
+ delete pDlg;
+ }
+ else if ( pBtn == &aPrnDlgBtn )
+ {
+ PrintDialog* pDlg = new PrintDialog( this, false );
+ pDlg->SetPrinter( &aPrn );
+ pDlg->EnableRange( PRINTDIALOG_ALL );
+ pDlg->EnableRange( PRINTDIALOG_RANGE );
+ pDlg->Execute();
+ delete pDlg;
+ }
+
+ return 0;
+}
+
+// -----------------------------------------------------------------------
+
+IMPL_LINK( MyWin, SelectHdl, Window*, pCtrl )
+{
+ if ( pCtrl == &aColorList )
+ {
+ Color aColor = aColorList.GetSelectEntryColor();
+ aValueSet.SetColor( aColor );
+ aLineList.SetColor( aColor );
+ }
+ else if ( pCtrl == &aValueSet )
+ {
+ USHORT nId = aValueSet.GetSelectItemId();
+ if ( nId > 8 )
+ {
+ Color aColor = aValueSet.GetItemColor( nId );
+ aValueSet.SetFillColor( aColor );
+ }
+ }
+ else if ( pCtrl == &aHeadBar )
+ {
+ USHORT nCurItemId = aHeadBar.GetCurItemId();
+ for ( USHORT i = 0; i < aHeadBar.GetItemCount(); i++ )
+ {
+ USHORT nItemId = aHeadBar.GetItemId( i );
+ HeaderBarItemBits nBits = aHeadBar.GetItemBits( nItemId );
+ if ( nItemId == nCurItemId )
+ {
+ HeaderBarItemBits nOldBits = nBits;
+ nBits &= ~(HIB_DOWNARROW | HIB_UPARROW);
+ if ( nOldBits & HIB_DOWNARROW )
+ nBits |= HIB_UPARROW;
+ else
+ nBits |= HIB_DOWNARROW;
+ }
+ else
+ nBits &= ~(HIB_DOWNARROW | HIB_UPARROW);
+ aHeadBar.SetItemBits( nItemId, nBits );
+ }
+ }
+
+ return 0;
+}
+
+// -----------------------------------------------------------------------
+
+IMPL_LINK( MyWin, CalSelectHdl, CalendarField*, pCtrl )
+{
+ if ( pCtrl == &aCalendarField )
+ {
+ Calendar* l_pCalendar = pCtrl->GetCalendar();
+ aCalendarField2.SetDate( l_pCalendar->GetSelectDate( l_pCalendar->GetSelectDateCount()-1 ) );
+ }
+
+ return 0;
+}
+
+// -----------------------------------------------------------------------
+
+void MyWin::ContextMenu( const Point& rPos )
+{
+ FontList aList( this );
+
+ if ( !pMenu )
+ {
+ pMenu = new PopupMenu;
+ pNameMenu = new FontNameMenu;
+ pStyleMenu = new FontStyleMenu;
+ pSizeMenu = new FontSizeMenu;
+
+ pMenu->InsertItem( 1, XubString( RTL_CONSTASCII_USTRINGPARAM( "Font" ) ) );
+ pMenu->InsertItem( 2, XubString( RTL_CONSTASCII_USTRINGPARAM( "Attribute" ) ) );
+ pMenu->InsertItem( 3, XubString( RTL_CONSTASCII_USTRINGPARAM( "Height" ) ) );
+ pMenu->SetPopupMenu( 1, pNameMenu );
+ pMenu->SetPopupMenu( 2, pStyleMenu );
+ pMenu->SetPopupMenu( 3, pSizeMenu );
+
+ pNameMenu->Fill( &aList );
+ pNameMenu->SetCurName( aList.GetFontName( 0 ).GetName() );
+
+ pStyleMenu->InsertSeparator();
+ pStyleMenu->InsertItem( 1, XubString( RTL_CONSTASCII_USTRINGPARAM( "~Underline" ) ), MIB_CHECKABLE | MIB_AUTOCHECK );
+ pStyleMenu->InsertItem( 2, XubString( RTL_CONSTASCII_USTRINGPARAM( "Stri~keout" ) ), MIB_CHECKABLE | MIB_AUTOCHECK );
+ pStyleMenu->InsertItem( 3, XubString( RTL_CONSTASCII_USTRINGPARAM( "~Shadow" ) ), MIB_CHECKABLE | MIB_AUTOCHECK );
+ pStyleMenu->InsertItem( 4, XubString( RTL_CONSTASCII_USTRINGPARAM( "~Outline" ) ), MIB_CHECKABLE | MIB_AUTOCHECK );
+ }
+
+ pStyleMenu->Fill( pNameMenu->GetCurName(), &aList );
+ pSizeMenu->Fill( aList.Get( pNameMenu->GetCurName(),
+ pStyleMenu->GetCurStyle() ), &aList );
+
+ pMenu->Execute( this, rPos );
+}
+
+// -----------------------------------------------------------------------
+
+void MyWin::Command( const CommandEvent& rCEvt )
+{
+ if ( rCEvt.GetCommand() == COMMAND_CONTEXTMENU )
+ ContextMenu( OutputToScreenPixel( rCEvt.GetMousePosPixel() ) );
+}
+
+// -----------------------------------------------------------------------
+
+void MyWin::MouseButtonDown( const MouseEvent& rMEvt )
+{
+ aValueSet.StartSelection();
+ WorkWindow::MouseButtonDown( rMEvt );
+}
+
+// -----------------------------------------------------------------------
+
+void MyWin::KeyInput( const KeyEvent& rKEvt )
+{
+ if ( rKEvt.GetKeyCode().GetCode() == KEY_P )
+ {
+ for ( USHORT i = 0; i <= 130; i += 2 )
+ {
+ for ( USHORT j = 0; j < 6000; j++ )
+ {
+ aPrgsBar.SetValue( i );
+ Application::Reschedule();
+ }
+ }
+ }
+ else if ( rKEvt.GetCharCode() == '+' )
+ aHeadBar.SetOffset( aHeadBar.GetOffset()+1 );
+ else if ( rKEvt.GetCharCode() == '-' )
+ aHeadBar.SetOffset( aHeadBar.GetOffset()-1 );
+
+ WorkWindow::KeyInput( rKEvt );
+}
+
+// -----------------------------------------------------------------------
+
+void MyWin::Paint( const Rectangle& rRect )
+{
+ WorkWindow::Paint( rRect );
+}
+
+// -----------------------------------------------------------------------
+
+void MyWin::Resize()
+{
+ Size aWinSize = GetOutputSizePixel();
+
+ aBox.SetSizePixel( Size( aWinSize.Width(), aBoxSize.Height() ) );
+
+ Size aSize = aBar.GetSizePixel();
+ aBar.SetPosSizePixel( Point( 0, aWinSize.Height()-aSize.Height() ),
+ Size( aWinSize.Width(), aSize.Height() ) );
+
+ Size aBarSize = aSize;
+ Point aPos = aHeadBar.GetPosPixel();
+ aSize = aHeadBar.GetSizePixel();
+ aHeadBar.SetSizePixel( Size( aWinSize.Width(), aSize.Height() ) );
+ aHeadBar.SetDragSize( aWinSize.Height() - aSize.Height() - aPos.Y() - aBarSize.Height() );
+
+ aPos = aPrgsBar.GetPosPixel();
+ aSize = aPrgsBar.GetSizePixel();
+ if ( aPos.X() < aWinSize.Width()-10 )
+ aPrgsBar.SetSizePixel( Size( aWinSize.Width()-aPos.X()-10, aSize.Height() ) );
+}
+
+// -----------------------------------------------------------------------
+
+MyApp aMyApp;
diff --git a/svtools/workben/toolpanel/makefile.mk b/svtools/workben/toolpanel/makefile.mk
new file mode 100644
index 000000000000..e64e3cd8eccd
--- /dev/null
+++ b/svtools/workben/toolpanel/makefile.mk
@@ -0,0 +1,110 @@
+#*************************************************************************
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# Copyright 2008 by Sun Microsystems, Inc.
+#
+# OpenOffice.org - a multi-platform office productivity suite
+#
+# $RCSfile: makefile.mk,v $
+#
+# $Revision: 1.16 $
+#
+# This file is part of OpenOffice.org.
+#
+# OpenOffice.org is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License version 3
+# only, as published by the Free Software Foundation.
+#
+# OpenOffice.org is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License version 3 for more details
+# (a copy is included in the LICENSE file that accompanied this code).
+#
+# You should have received a copy of the GNU Lesser General Public License
+# version 3 along with OpenOffice.org. If not, see
+# <http://www.openoffice.org/license.html>
+# for a copy of the LGPLv3 License.
+#
+#*************************************************************************
+
+PRJ=..$/..
+
+PRJNAME=svtools
+TARGET=toolpaneltest
+TARGETTYPE=GUI
+LIBTARGET=NO
+
+ENABLE_EXCEPTIONS=TRUE
+
+# --- Settings -----------------------------------------------------
+
+.INCLUDE : settings.mk
+
+# --- Files --------------------------------------------------------
+
+CXXFILES= toolpaneltest.cxx
+
+OBJFILES= $(OBJ)$/toolpaneltest.obj
+
+APP1TARGET= $(TARGET)
+APP1OBJS= $(OBJFILES)
+APP1STDLIBS=\
+ $(VCLLIB) \
+ $(UCBHELPERLIB) \
+ $(SALLIB) \
+ $(TOOLSLIB) \
+ $(COMPHELPERLIB) \
+ $(CPPUHELPERLIB) \
+ $(CPPULIB) \
+ $(BASEGFXLIB) \
+ $(SVTOOLLIB) \
+
+APP1RAPTH=BRAND
+
+.IF "$(GUI)"!="UNX"
+APP1DEF= $(MISC)$/$(TARGET).def
+.ENDIF
+
+.IF "$(COM)"=="GCC"
+ADDOPTFILES=$(OBJ)$/toolpaneltest.obj
+add_cflagscxx="-frtti -fexceptions"
+.ENDIF
+
+
+# --- Targets ------------------------------------------------------
+
+.INCLUDE : target.mk
+
+
+# ------------------------------------------------------------------
+# MAC
+# ------------------------------------------------------------------
+
+.IF "$(GUI)" == "MAC"
+
+$(MISC)$/$(TARGET).def: makefile
+ echo Kein Def-File fuer Applikationen auf Mac
+.ENDIF
+
+
+# ------------------------------------------------------------------
+# Windows
+# ------------------------------------------------------------------
+
+.IF "$(GUI)" == "WIN"
+
+$(MISC)$/$(TARGET).def: makefile
+ echo NAME $(TARGET) >$@
+ echo DESCRIPTION 'ToolPanel - Testprogramm' >>$@
+ echo EXETYPE WINDOWS >>$@
+ echo STUB 'winSTUB.EXE' >>$@
+ echo PROTMODE >>$@
+ echo CODE PRELOAD MOVEABLE DISCARDABLE >>$@
+ echo DATA PRELOAD MOVEABLE MULTIPLE >>$@
+ echo HEAPSIZE 8192 >>$@
+ echo STACKSIZE 32768 >>$@
+
+.ENDIF
+
diff --git a/svtools/workben/toolpanel/toolpaneltest.cxx b/svtools/workben/toolpanel/toolpaneltest.cxx
new file mode 100755
index 000000000000..6d044cee7c93
--- /dev/null
+++ b/svtools/workben/toolpanel/toolpaneltest.cxx
@@ -0,0 +1,880 @@
+/*************************************************************************
+* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+*
+* Copyright 2009 by Sun Microsystems, Inc.
+*
+* OpenOffice.org - a multi-platform office productivity suite
+*
+* This file is part of OpenOffice.org.
+*
+* OpenOffice.org is free software: you can redistribute it and/or modify
+* it under the terms of the GNU Lesser General Public License version 3
+* only, as published by the Free Software Foundation.
+*
+* OpenOffice.org is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU Lesser General Public License version 3 for more details
+* (a copy is included in the LICENSE file that accompanied this code).
+*
+* You should have received a copy of the GNU Lesser General Public License
+* version 3 along with OpenOffice.org. If not, see
+* <http://www.openoffice.org/license.html>
+* for a copy of the LGPLv3 License.
+************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_svtools.hxx"
+
+#include "ctrlbox.hxx"
+#include "svtools/toolpanel/toolpaneldeck.hxx"
+#include "svtools/toolpanel/tablayouter.hxx"
+
+#include <com/sun/star/lang/XMultiServiceFactory.hpp>
+#include <com/sun/star/uno/XComponentContext.hpp>
+
+#include <comphelper/processfactory.hxx>
+#include <cppuhelper/bootstrap.hxx>
+#include <cppuhelper/servicefactory.hxx>
+#include <tools/diagnose_ex.h>
+#include <ucbhelper/contentbroker.hxx>
+#include <vcl/button.hxx>
+#include <vcl/edit.hxx>
+#include <vcl/fixed.hxx>
+#include <vcl/help.hxx>
+#include <vcl/lstbox.hxx>
+#include <vcl/svapp.hxx>
+#include <vcl/tabctrl.hxx>
+#include <vcl/taskpanelist.hxx>
+#include <vcl/wrkwin.hxx>
+
+namespace svt { namespace toolpanel
+{
+
+using ::com::sun::star::uno::Reference;
+using ::com::sun::star::uno::Sequence;
+using ::com::sun::star::uno::Any;
+using ::com::sun::star::lang::XMultiServiceFactory;
+using ::com::sun::star::uno::XComponentContext;
+using ::com::sun::star::accessibility::XAccessible;
+
+//=============================================================================
+//= PanelDemo
+//=============================================================================
+class PanelDemo : public Application
+{
+public:
+ virtual void Main();
+
+private:
+ static Reference< XMultiServiceFactory > createApplicationServiceManager();
+};
+
+//=============================================================================
+//= ColoredPanelWindow
+//=============================================================================
+class ColoredPanelWindow : public Window
+{
+public:
+ ColoredPanelWindow( Window& i_rParent, const Color& i_rColor, const String& i_rTitle )
+ :Window( &i_rParent )
+ ,m_aEdit( this, WB_BORDER )
+ ,m_aTabControl( this )
+ ,m_sTitle( i_rTitle )
+ {
+ SetLineColor();
+ SetFillColor( i_rColor );
+
+ m_aEdit.Show();
+ m_aTabControl.Show();
+
+ const sal_Char* pTabTitles[] =
+ {
+ "This", "is a", "Tab", "Control", "intended", "for", "comparison"
+ };
+ for ( size_t i=0; i < sizeof( pTabTitles ) / sizeof( pTabTitles[0] ); ++i )
+ {
+ String sText( String::CreateFromAscii( pTabTitles[i] ) );
+ m_aTabControl.InsertPage( i + 1, sText );
+ }
+ }
+
+ virtual void Paint( const Rectangle& /*i_rRect*/ )
+ {
+ const Size aOutputSize( GetOutputSizePixel() );
+ const Rectangle aTitleRect( Point( 10, 10 ), Size( aOutputSize.Width() - 20, 20 ) );
+ DrawRect( aTitleRect );
+ SetTextColor( GetFillColor().IsDark() ? COL_WHITE : COL_BLACK );
+ DrawText( aTitleRect, m_sTitle, TEXT_DRAW_CENTER | TEXT_DRAW_VCENTER );
+ }
+
+ virtual void GetFocus()
+ {
+ m_aEdit.GrabFocus();
+ }
+
+ virtual void Resize()
+ {
+ const Size aOutputSize( GetOutputSizePixel() );
+ m_aEdit.SetPosSizePixel(
+ Point( 20, 40 ),
+ Size( aOutputSize.Width() - 40, 20 )
+ );
+ m_aTabControl.SetPosSizePixel(
+ Point( 20, 70 ),
+ Size( aOutputSize.Width() - 40, 150 )
+ );
+ }
+
+private:
+ Edit m_aEdit;
+ TabControl m_aTabControl;
+ String m_sTitle;
+};
+
+//=============================================================================
+//= ColoredPanel
+//=============================================================================
+class ColoredPanel : public IToolPanel
+{
+public:
+ ColoredPanel( Window& i_rParent, const Color& i_rColor, const sal_Char* i_pAsciiPanelName );
+ ColoredPanel( Window& i_rParent, const Color& i_rColor, const String& i_rPanelName );
+ ~ColoredPanel();
+
+ // IToolPanel
+ virtual ::rtl::OUString GetDisplayName() const;
+ virtual Image GetImage() const;
+ virtual SmartId GetHelpID() const;
+ virtual void Activate( Window& i_rParentWindow );
+ virtual void Deactivate();
+ virtual void SetSizePixel( const Size& i_rPanelWindowSize );
+ virtual void GrabFocus();
+ virtual void Dispose();
+ virtual Reference< XAccessible > CreatePanelAccessible( const Reference< XAccessible >& i_rParentAccessible );
+
+ // IReference
+ virtual oslInterlockedCount SAL_CALL acquire();
+ virtual oslInterlockedCount SAL_CALL release();
+
+private:
+ oslInterlockedCount m_refCount;
+ ::std::auto_ptr< ColoredPanelWindow >
+ m_pWindow;
+ ::rtl::OUString m_aPanelName;
+ BitmapEx m_aPanelIcon;
+};
+
+//=============================================================================
+//= ColoredPanel
+//=============================================================================
+//-----------------------------------------------------------------------------
+ColoredPanel::ColoredPanel( Window& i_rParent, const Color& i_rColor, const sal_Char* i_pAsciiPanelName )
+ :m_refCount(0)
+ ,m_pWindow( new ColoredPanelWindow( i_rParent, i_rColor, ::rtl::OUString::createFromAscii( i_pAsciiPanelName ) ) )
+ ,m_aPanelName( ::rtl::OUString::createFromAscii( i_pAsciiPanelName ) )
+ ,m_aPanelIcon()
+{
+ Bitmap aBitmap( Size( 16, 16 ), 8 );
+ m_aPanelIcon = BitmapEx( aBitmap );
+ m_aPanelIcon.Erase( i_rColor );
+}
+
+//-----------------------------------------------------------------------------
+ColoredPanel::ColoredPanel( Window& i_rParent, const Color& i_rColor, const String& i_rPanelName )
+ :m_refCount(0)
+ ,m_pWindow( new ColoredPanelWindow( i_rParent, i_rColor, i_rPanelName ) )
+ ,m_aPanelName( i_rPanelName )
+ ,m_aPanelIcon()
+{
+ Bitmap aBitmap( Size( 16, 16 ), 8 );
+ m_aPanelIcon = BitmapEx( aBitmap );
+ m_aPanelIcon.Erase( i_rColor );
+}
+
+//-----------------------------------------------------------------------------
+ColoredPanel::~ColoredPanel()
+{
+}
+
+//-----------------------------------------------------------------------------
+oslInterlockedCount SAL_CALL ColoredPanel::acquire()
+{
+ return osl_incrementInterlockedCount( &m_refCount );
+}
+
+//-----------------------------------------------------------------------------
+oslInterlockedCount SAL_CALL ColoredPanel::release()
+{
+ oslInterlockedCount newCount = osl_decrementInterlockedCount( &m_refCount );
+ if ( 0 == newCount )
+ delete this;
+ return newCount;
+}
+
+//-----------------------------------------------------------------------------
+void ColoredPanel::Activate( Window& i_rParentWindow )
+{
+ ENSURE_OR_RETURN_VOID( m_pWindow.get(), "disposed!" );
+ OSL_ENSURE( &i_rParentWindow == m_pWindow->GetParent(), "ColoredPanel::Activate: unexpected new parent window!" );
+ // the documentation of IToolPanel::Activate says it is guaranteed that the parent window is
+ // always the same ...
+ m_pWindow->SetPosSizePixel( Point(), i_rParentWindow.GetSizePixel() );
+ m_pWindow->Show();
+}
+
+//-----------------------------------------------------------------------------
+void ColoredPanel::Deactivate()
+{
+ ENSURE_OR_RETURN_VOID( m_pWindow.get(), "disposed!" );
+ m_pWindow->Hide();
+}
+
+//-----------------------------------------------------------------------------
+void ColoredPanel::SetSizePixel( const Size& i_rPanelWindowSize )
+{
+ ENSURE_OR_RETURN_VOID( m_pWindow.get(), "disposed!" );
+ m_pWindow->SetSizePixel( i_rPanelWindowSize );
+}
+
+//-----------------------------------------------------------------------------
+void ColoredPanel::GrabFocus()
+{
+ ENSURE_OR_RETURN_VOID( m_pWindow.get(), "disposed!" );
+ m_pWindow->GrabFocus();
+}
+
+//-----------------------------------------------------------------------------
+void ColoredPanel::Dispose()
+{
+ ENSURE_OR_RETURN_VOID( m_pWindow.get(), "disposed!" );
+ m_pWindow.reset();
+}
+
+//-----------------------------------------------------------------------------
+Reference< XAccessible > ColoredPanel::CreatePanelAccessible( const Reference< XAccessible >& i_rParentAccessible )
+{
+ ENSURE_OR_RETURN( m_pWindow.get(), "disposed!", NULL );
+ (void)i_rParentAccessible;
+ return m_pWindow->GetAccessible();
+}
+
+//-----------------------------------------------------------------------------
+::rtl::OUString ColoredPanel::GetDisplayName() const
+{
+ return m_aPanelName;
+}
+
+//-----------------------------------------------------------------------------
+Image ColoredPanel::GetImage() const
+{
+ return Image( m_aPanelIcon );
+}
+
+//-----------------------------------------------------------------------------
+SmartId ColoredPanel::GetHelpID() const
+{
+ return SmartId();
+}
+
+//=============================================================================
+//= OptionsWindow
+//=============================================================================
+class PanelDemoMainWindow;
+class OptionsWindow :public Window
+ ,public ::svt::IToolPanelDeckListener
+{
+public:
+ OptionsWindow( PanelDemoMainWindow& i_rParent );
+ ~OptionsWindow();
+
+ // Window overridables
+ virtual void Resize();
+ virtual void GetFocus();
+ virtual void StateChanged( StateChangedType i_nStateChange );
+
+ // IToolPanelDeckListener
+ virtual void PanelInserted( const PToolPanel& i_pPanel, const size_t i_nPosition );
+ virtual void PanelRemoved( const size_t i_nPosition );
+ virtual void ActivePanelChanged( const ::boost::optional< size_t >& i_rOldActive, const ::boost::optional< size_t >& i_rNewActive );
+ virtual void LayouterChanged( const PDeckLayouter& i_rNewLayouter );
+ virtual void Dying();
+
+private:
+ DECL_LINK( OnRadioToggled, RadioButton* );
+ DECL_LINK( OnListEntrySelected, ListBox* );
+ DECL_LINK( OnListEntryDoubleClicked, ListBox* );
+ DECL_LINK( OnButtonClicked, PushButton* );
+ DECL_LINK( OnEditModified, Edit* );
+
+ void impl_initPanelList();
+ void impl_updateRemoveButton();
+ void impl_updateInsertButton();
+
+private:
+ FixedLine m_aAlignmentHeader;
+ RadioButton m_aAlignLeft;
+ RadioButton m_aAlignRight;
+ RadioButton m_aAlignTop;
+ RadioButton m_aAlignBottom;
+ FixedLine m_aTabItemContent;
+ RadioButton m_aImagesAndText;
+ RadioButton m_aImagesOnly;
+ RadioButton m_aTextOnly;
+ RadioButton m_aAutomaticContent;
+
+ FixedLine m_aPanelsHeader;
+ ListBox m_aPanelList;
+ PushButton m_aRemovePanel;
+ ColorListBox m_aColors;
+ Edit m_aNewPanelName;
+ PushButton m_aInsertPanel;
+};
+
+//=============================================================================
+//= PanelDemoMainWindow
+//=============================================================================
+class PanelDemoMainWindow : public WorkWindow
+{
+public:
+ PanelDemoMainWindow();
+ ~PanelDemoMainWindow();
+
+ // window overridables
+ virtual void Resize();
+
+public:
+ // operations
+ void AlignTabs( const ::svt::TabAlignment i_eAlignment );
+ void SetTabItemContent( const TabItemContent i_eItemContent );
+
+ // member access
+ IToolPanelDeck& GetToolPanelDeck();
+ PToolPanel CreateToolPanel( const Color& i_rColor, const String& i_rPanelName );
+
+protected:
+ virtual void GetFocus();
+
+private:
+ ToolPanelDeck m_aToolPanelDeck;
+ OptionsWindow m_aDemoOptions;
+};
+
+//=============================================================================
+//= PanelDemoMainWindow - implementation
+//=============================================================================
+//-----------------------------------------------------------------------------
+OptionsWindow::OptionsWindow( PanelDemoMainWindow& i_rParent )
+ :Window( &i_rParent, WB_BORDER | WB_DIALOGCONTROL )
+ ,m_aAlignmentHeader( this )
+ ,m_aAlignLeft( this, WB_GROUP )
+ ,m_aAlignRight( this, 0 )
+ ,m_aAlignTop( this, 0 )
+ ,m_aAlignBottom( this, 0 )
+ ,m_aTabItemContent( this )
+ ,m_aImagesAndText( this )
+ ,m_aImagesOnly( this )
+ ,m_aTextOnly( this )
+ ,m_aAutomaticContent( this )
+ ,m_aPanelsHeader( this )
+ ,m_aPanelList( this )
+ ,m_aRemovePanel( this )
+ ,m_aColors( this, WB_DROPDOWN )
+ ,m_aNewPanelName( this, WB_BORDER )
+ ,m_aInsertPanel( this )
+{
+ SetBorderStyle( WINDOW_BORDER_MONO );
+
+ m_aColors.InsertEntry( Color( COL_BLACK ), String( RTL_CONSTASCII_USTRINGPARAM( "Black" ) ) );
+ m_aColors.InsertEntry( Color( COL_BLUE ), String( RTL_CONSTASCII_USTRINGPARAM( "Blue" ) ) );
+ m_aColors.InsertEntry( Color( COL_GREEN ), String( RTL_CONSTASCII_USTRINGPARAM( "Green" ) ) );
+ m_aColors.InsertEntry( Color( COL_CYAN ), String( RTL_CONSTASCII_USTRINGPARAM( "Cyan" ) ) );
+ m_aColors.InsertEntry( Color( COL_RED ), String( RTL_CONSTASCII_USTRINGPARAM( "Red" ) ) );
+ m_aColors.InsertEntry( Color( COL_MAGENTA ), String( RTL_CONSTASCII_USTRINGPARAM( "Magenta" ) ) );
+ m_aColors.InsertEntry( Color( COL_BROWN ), String( RTL_CONSTASCII_USTRINGPARAM( "Brown" ) ) );
+ m_aColors.InsertEntry( Color( COL_GRAY ), String( RTL_CONSTASCII_USTRINGPARAM( "Gray" ) ) );
+ m_aColors.InsertEntry( Color( COL_LIGHTGRAY ), String( RTL_CONSTASCII_USTRINGPARAM( "Light Gray" ) ) );
+ m_aColors.InsertEntry( Color( COL_LIGHTBLUE ), String( RTL_CONSTASCII_USTRINGPARAM( "Light Blue" ) ) );
+ m_aColors.InsertEntry( Color( COL_LIGHTGREEN ), String( RTL_CONSTASCII_USTRINGPARAM( "Light Green" ) ) );
+ m_aColors.InsertEntry( Color( COL_LIGHTCYAN ), String( RTL_CONSTASCII_USTRINGPARAM( "Light Cyan" ) ) );
+ m_aColors.InsertEntry( Color( COL_LIGHTRED ), String( RTL_CONSTASCII_USTRINGPARAM( "Light Red" ) ) );
+ m_aColors.InsertEntry( Color( COL_LIGHTMAGENTA ), String( RTL_CONSTASCII_USTRINGPARAM( "Light Magenta" ) ) );
+ m_aColors.InsertEntry( Color( COL_YELLOW ), String( RTL_CONSTASCII_USTRINGPARAM( "Yellow" ) ) );
+ m_aColors.InsertEntry( Color( COL_WHITE ), String( RTL_CONSTASCII_USTRINGPARAM( "White" ) ) );
+ m_aColors.SetDropDownLineCount( 16 );
+
+ Window* pControls[] =
+ {
+ &m_aAlignmentHeader, &m_aAlignLeft, &m_aAlignRight, &m_aAlignTop, &m_aAlignBottom, &m_aTabItemContent,
+ &m_aImagesAndText, &m_aImagesOnly, &m_aTextOnly, &m_aAutomaticContent, &m_aPanelsHeader, &m_aPanelList,
+ &m_aRemovePanel, &m_aColors, &m_aNewPanelName, &m_aInsertPanel
+ };
+ const sal_Char* pTexts[] =
+ {
+ "Tab Bar Alignment", "Left", "Right", "Top", "Bottom", "Tab Items", "Images and Text", "Images only",
+ "Text only", "Automatic", "Panels", "", "Remove Panel", "", "", "Insert Panel"
+ };
+ for ( size_t i=0; i < sizeof( pControls ) / sizeof( pControls[0] ); ++i )
+ {
+ const WindowType eWindowType = pControls[i]->GetType();
+
+ pControls[i]->SetText( String::CreateFromAscii( pTexts[i] ) );
+ pControls[i]->Show();
+
+ if ( eWindowType == WINDOW_RADIOBUTTON )
+ static_cast< RadioButton* >( pControls[i] )->SetToggleHdl( LINK( this, OptionsWindow, OnRadioToggled ) );
+
+ if ( eWindowType == WINDOW_LISTBOX )
+ {
+ static_cast< ListBox* >( pControls[i] )->SetSelectHdl( LINK( this, OptionsWindow, OnListEntrySelected ) );
+ static_cast< ListBox* >( pControls[i] )->SetDoubleClickHdl( LINK( this, OptionsWindow, OnListEntryDoubleClicked ) );
+ }
+
+ if ( eWindowType == WINDOW_PUSHBUTTON )
+ {
+ static_cast< PushButton* >( pControls[i] )->SetClickHdl( LINK( this, OptionsWindow, OnButtonClicked ) );
+ }
+
+ if ( eWindowType == WINDOW_EDIT )
+ {
+ static_cast< Edit* >( pControls[i] )->SetModifyHdl( LINK( this, OptionsWindow, OnEditModified ) );
+ }
+ }
+
+ m_aAlignRight.Check();
+ m_aImagesAndText.Check();
+
+ Show();
+}
+
+//-----------------------------------------------------------------------------
+OptionsWindow::~OptionsWindow()
+{
+}
+
+//-----------------------------------------------------------------------------
+void OptionsWindow::impl_updateInsertButton()
+{
+ m_aInsertPanel.Enable( ( m_aColors.GetSelectEntryPos() != LISTBOX_ENTRY_NOTFOUND ) && ( m_aNewPanelName.GetText().Len() > 0 ) );
+}
+
+//-----------------------------------------------------------------------------
+void OptionsWindow::impl_updateRemoveButton()
+{
+ m_aRemovePanel.Enable( m_aPanelList.GetSelectEntryCount() > 0 );
+}
+
+//-----------------------------------------------------------------------------
+void OptionsWindow::impl_initPanelList()
+{
+ m_aPanelList.Clear();
+
+ PanelDemoMainWindow& rController( dynamic_cast< PanelDemoMainWindow& >( *GetParent() ) );
+ IToolPanelDeck& rPanelDeck( rController.GetToolPanelDeck() );
+
+ for ( size_t i=0; i<rPanelDeck.GetPanelCount(); ++i )
+ {
+ PToolPanel pPanel = rPanelDeck.GetPanel( i );
+ m_aPanelList.InsertEntry( pPanel->GetDisplayName(), pPanel->GetImage() );
+ }
+ ActivePanelChanged( ::boost::optional< size_t >(), rPanelDeck.GetActivePanel() );
+
+ impl_updateRemoveButton();
+ impl_updateInsertButton();
+
+ rPanelDeck.AddListener( *this );
+}
+
+//-----------------------------------------------------------------------------
+void OptionsWindow::StateChanged( StateChangedType i_nStateChange )
+{
+ Window::StateChanged( i_nStateChange );
+
+ if ( i_nStateChange == STATE_CHANGE_INITSHOW )
+ {
+ impl_initPanelList();
+ }
+}
+
+//-----------------------------------------------------------------------------
+void OptionsWindow::GetFocus()
+{
+ Window::GetFocus();
+ RadioButton* pRadios[] =
+ {
+ &m_aAlignLeft, &m_aAlignRight, &m_aAlignTop, &m_aAlignBottom
+ };
+ for ( size_t i=0; i < sizeof( pRadios ) / sizeof( pRadios[0] ); ++i )
+ {
+ if ( pRadios[i]->IsChecked() )
+ {
+ pRadios[i]->GrabFocus();
+ break;
+ }
+ }
+}
+
+//-----------------------------------------------------------------------------
+void OptionsWindow::Resize()
+{
+ Window::Resize();
+
+ const Size aOutputSize( GetOutputSizePixel() );
+
+ const Size aSpacing( LogicToPixel( Size( 3, 3 ), MAP_APPFONT ) );
+ const long nIndent( LogicToPixel( Size( 6, 9 ), MAP_APPFONT ).Width() );
+ const long nFixedLineHeight( LogicToPixel( Size( 0, 8 ), MAP_APPFONT ).Height() );
+ const long nEditLineHeight( LogicToPixel( Size( 0, 12 ), MAP_APPFONT ).Height() );
+ const long nButtonLineHeight( LogicToPixel( Size( 0, 14 ), MAP_APPFONT ).Height() );
+
+ const long nSuperordinateWidth = aOutputSize.Width() - 2 * aSpacing.Width();
+ const long nSuperordinateX = aSpacing.Width();
+
+ const long nSubordinateWidth = aOutputSize.Width() - 2 * aSpacing.Width() - nIndent;
+ const long nSubordinateX = aSpacing.Width() + nIndent;
+
+ Point aItemPos( nSuperordinateX, aSpacing.Height() );
+
+ struct ControlRow
+ {
+ Window* pWindow;
+ bool bSubordinate;
+ size_t nRows;
+
+ ControlRow( Window& i_rWindow, const bool i_bSubordinate, const size_t i_nRows = 1 )
+ :pWindow( &i_rWindow )
+ ,bSubordinate( i_bSubordinate )
+ ,nRows( i_nRows )
+ {
+ }
+ };
+ ControlRow aControlRows[] =
+ {
+ ControlRow( m_aAlignmentHeader, false ),
+ ControlRow( m_aAlignLeft, true ),
+ ControlRow( m_aAlignRight, true ),
+ ControlRow( m_aAlignTop, true ),
+ ControlRow( m_aAlignBottom, true ),
+ ControlRow( m_aTabItemContent, false ),
+ ControlRow( m_aImagesAndText, true ),
+ ControlRow( m_aImagesOnly, true ),
+ ControlRow( m_aTextOnly, true ),
+ ControlRow( m_aAutomaticContent, true ),
+ ControlRow( m_aPanelsHeader, false ),
+ ControlRow( m_aPanelList, true, 6 ),
+ ControlRow( m_aRemovePanel, true ),
+ ControlRow( m_aColors, true ),
+ ControlRow( m_aNewPanelName, true ),
+ ControlRow( m_aInsertPanel, true )
+ };
+ bool bPreviousWasSubordinate = false;
+ for ( size_t i=0; i < sizeof( aControlRows ) / sizeof( aControlRows[0] ); ++i )
+ {
+ aItemPos.X() = ( aControlRows[i].bSubordinate ) ? nSubordinateX : nSuperordinateX;
+
+ if ( bPreviousWasSubordinate && !aControlRows[i].bSubordinate )
+ aItemPos.Y() += aSpacing.Height();
+ bPreviousWasSubordinate = aControlRows[i].bSubordinate;
+
+ // height depends on the window type
+ const WindowType eWindowType = aControlRows[i].pWindow->GetType();
+ long nControlHeight( nFixedLineHeight );
+ if ( ( eWindowType == WINDOW_EDIT )
+ || ( eWindowType == WINDOW_LISTBOX )
+ )
+ {
+ nControlHeight = nEditLineHeight;
+ }
+ else
+ if ( ( eWindowType == WINDOW_PUSHBUTTON )
+ )
+ {
+ nControlHeight = nButtonLineHeight;
+ }
+
+ Size aControlSize(
+ aControlRows[i].bSubordinate ? nSubordinateWidth : nSuperordinateWidth,
+ nControlHeight * aControlRows[i].nRows
+ );
+ aControlRows[i].pWindow->SetPosSizePixel( aItemPos, aControlSize );
+
+ aItemPos.Move( 0, aControlSize.Height() + aSpacing.Height() );
+ }
+}
+
+//-----------------------------------------------------------------------------
+void OptionsWindow::PanelInserted( const PToolPanel& i_pPanel, const size_t i_nPosition )
+{
+ m_aPanelList.InsertEntry( i_pPanel->GetDisplayName(), i_pPanel->GetImage(), USHORT( i_nPosition ) );
+}
+
+//-----------------------------------------------------------------------------
+void OptionsWindow::PanelRemoved( const size_t i_nPosition )
+{
+ m_aPanelList.RemoveEntry( USHORT( i_nPosition ) );
+ impl_updateRemoveButton();
+}
+
+//-----------------------------------------------------------------------------
+void OptionsWindow::ActivePanelChanged( const ::boost::optional< size_t >& i_rOldActive, const ::boost::optional< size_t >& i_rNewActive )
+{
+ (void)i_rOldActive;
+
+ if ( !i_rNewActive )
+ m_aPanelList.SetNoSelection();
+ else
+ m_aPanelList.SelectEntryPos( USHORT( *i_rNewActive ) );
+}
+
+//-----------------------------------------------------------------------------
+void OptionsWindow::LayouterChanged( const PDeckLayouter& i_rNewLayouter )
+{
+ (void)i_rNewLayouter;
+ // not interested in
+}
+
+//-----------------------------------------------------------------------------
+void OptionsWindow::Dying()
+{
+ // not interested in
+}
+
+//-----------------------------------------------------------------------------
+IMPL_LINK( OptionsWindow, OnListEntrySelected, ListBox*, i_pListBox )
+{
+ if ( i_pListBox == &m_aColors )
+ {
+ m_aNewPanelName.SetText( m_aColors.GetEntry( m_aColors.GetSelectEntryPos() ) );
+ impl_updateInsertButton();
+ }
+ else if ( i_pListBox == &m_aPanelList )
+ {
+ impl_updateRemoveButton();
+ }
+ return 0L;
+}
+
+//-----------------------------------------------------------------------------
+IMPL_LINK( OptionsWindow, OnListEntryDoubleClicked, ListBox*, i_pListBox )
+{
+ PanelDemoMainWindow& rController( dynamic_cast< PanelDemoMainWindow& >( *GetParent() ) );
+
+ if ( i_pListBox == &m_aPanelList )
+ {
+ size_t nActivatePanel = size_t( m_aPanelList.GetSelectEntryPos() );
+ rController.GetToolPanelDeck().ActivatePanel( nActivatePanel );
+ }
+
+ return 0L;
+}
+
+//-----------------------------------------------------------------------------
+IMPL_LINK( OptionsWindow, OnEditModified, Edit*, i_pEdit )
+{
+ if ( i_pEdit && &m_aNewPanelName )
+ {
+ impl_updateInsertButton();
+ }
+
+ return 0L;
+}
+
+//-----------------------------------------------------------------------------
+IMPL_LINK( OptionsWindow, OnButtonClicked, PushButton*, i_pPushButton )
+{
+ PanelDemoMainWindow& rController( dynamic_cast< PanelDemoMainWindow& >( *GetParent() ) );
+
+ if ( i_pPushButton == &m_aRemovePanel )
+ {
+ rController.GetToolPanelDeck().RemovePanel( size_t( m_aPanelList.GetSelectEntryPos() ) );
+ }
+ else if ( i_pPushButton == &m_aInsertPanel )
+ {
+ PToolPanel pNewPanel( rController.CreateToolPanel( m_aColors.GetEntryColor( m_aColors.GetSelectEntryPos() ), m_aNewPanelName.GetText() ) );
+
+ ::boost::optional< size_t > aActivePanel( rController.GetToolPanelDeck().GetActivePanel() );
+ size_t nNewPanelPos = !aActivePanel ? rController.GetToolPanelDeck().GetPanelCount() : *aActivePanel + 1;
+
+ rController.GetToolPanelDeck().InsertPanel( pNewPanel, nNewPanelPos );
+ }
+ return 0L;
+}
+
+//-----------------------------------------------------------------------------
+IMPL_LINK( OptionsWindow, OnRadioToggled, RadioButton*, i_pRadioButton )
+{
+ PanelDemoMainWindow& rController( dynamic_cast< PanelDemoMainWindow& >( *GetParent() ) );
+
+ if ( i_pRadioButton->IsChecked() )
+ {
+ if ( i_pRadioButton == &m_aAlignLeft )
+ {
+ rController.AlignTabs( TABS_LEFT );
+ }
+ else if ( i_pRadioButton == &m_aAlignRight )
+ {
+ rController.AlignTabs( TABS_RIGHT );
+ }
+ else if ( i_pRadioButton == &m_aAlignTop )
+ {
+ rController.AlignTabs( TABS_TOP );
+ }
+ else if ( i_pRadioButton == &m_aAlignBottom )
+ {
+ rController.AlignTabs( TABS_BOTTOM );
+ }
+ else if ( i_pRadioButton == &m_aImagesAndText )
+ {
+ rController.SetTabItemContent( TABITEM_IMAGE_AND_TEXT );
+ }
+ else if ( i_pRadioButton == &m_aImagesOnly )
+ {
+ rController.SetTabItemContent( TABITEM_IMAGE_ONLY );
+ }
+ else if ( i_pRadioButton == &m_aTextOnly )
+ {
+ rController.SetTabItemContent( TABITEM_TEXT_ONLY );
+ }
+ else if ( i_pRadioButton == &m_aAutomaticContent )
+ {
+ rController.SetTabItemContent( TABITEM_AUTO );
+ }
+ }
+ return 0L;
+}
+//=============================================================================
+//= PanelDemoMainWindow - implementation
+//=============================================================================
+//-----------------------------------------------------------------------------
+PanelDemoMainWindow::PanelDemoMainWindow()
+ :WorkWindow( NULL, WB_APP | WB_STDWORK | WB_CLIPCHILDREN )
+ ,m_aToolPanelDeck( *this, WB_BORDER )
+ ,m_aDemoOptions( *this )
+{
+ m_aToolPanelDeck.SetPosSizePixel( Point( 20, 20 ), Size( 500, 300 ) );
+ m_aToolPanelDeck.SetBorderStyle( WINDOW_BORDER_MONO );
+
+ m_aToolPanelDeck.InsertPanel( PToolPanel( new ColoredPanel( m_aToolPanelDeck.GetPanelWindowAnchor(), Color( COL_RED ), "Red" ) ), m_aToolPanelDeck.GetPanelCount() );
+ m_aToolPanelDeck.InsertPanel( PToolPanel( new ColoredPanel( m_aToolPanelDeck.GetPanelWindowAnchor(), Color( COL_GREEN ), "Some flavor of Green" ) ), m_aToolPanelDeck.GetPanelCount() );
+ m_aToolPanelDeck.InsertPanel( PToolPanel( new ColoredPanel( m_aToolPanelDeck.GetPanelWindowAnchor(), RGB_COLORDATA( 255, 255, 0 ), "Yellow is ugly" ) ), m_aToolPanelDeck.GetPanelCount() );
+ m_aToolPanelDeck.InsertPanel( PToolPanel( new ColoredPanel( m_aToolPanelDeck.GetPanelWindowAnchor(), RGB_COLORDATA( 0, 0, 128 ), "Blue is the Color" ) ), m_aToolPanelDeck.GetPanelCount() );
+
+ m_aToolPanelDeck.ActivatePanel( size_t( 0 ) );
+ m_aToolPanelDeck.Show();
+
+ SetText( String::CreateFromAscii( "ToolPanelDeck Demo Application" ) );
+ Show();
+
+ Help::EnableQuickHelp();
+
+ GetSystemWindow()->GetTaskPaneList()->AddWindow( &m_aToolPanelDeck );
+ GetSystemWindow()->GetTaskPaneList()->AddWindow( &m_aDemoOptions );
+}
+
+//-----------------------------------------------------------------------------
+PanelDemoMainWindow::~PanelDemoMainWindow()
+{
+ GetSystemWindow()->GetTaskPaneList()->RemoveWindow( &m_aDemoOptions );
+ GetSystemWindow()->GetTaskPaneList()->RemoveWindow( &m_aToolPanelDeck );
+}
+
+//-----------------------------------------------------------------------------
+void PanelDemoMainWindow::GetFocus()
+{
+ WorkWindow::GetFocus();
+ m_aToolPanelDeck.GrabFocus();
+}
+
+//-----------------------------------------------------------------------------
+void PanelDemoMainWindow::Resize()
+{
+ WorkWindow::Resize();
+ Size aSize( GetOutputSizePixel() );
+ aSize.Width() -= 240;
+ aSize.Height() -= 40;
+ m_aToolPanelDeck.SetPosSizePixel( Point( 20, 20 ), aSize );
+
+ m_aDemoOptions.SetPosSizePixel(
+ Point( 20 + aSize.Width(), 20 ),
+ Size( 200, aSize.Height() )
+ );
+}
+
+//-----------------------------------------------------------------------------
+void PanelDemoMainWindow::AlignTabs( const ::svt::TabAlignment i_eAlignment )
+{
+ TabItemContent eCurrentItemContent( TABITEM_IMAGE_AND_TEXT );
+ TabDeckLayouter* pLayouter = dynamic_cast< TabDeckLayouter* >( m_aToolPanelDeck.GetLayouter().get() );
+ OSL_ENSURE( pLayouter, "PanelDemoMainWindow::AlignTabs: wrong layouter!" );
+ if ( pLayouter )
+ eCurrentItemContent = pLayouter->GetTabItemContent();
+
+ m_aToolPanelDeck.SetLayouter( PDeckLayouter( new TabDeckLayouter( m_aToolPanelDeck, m_aToolPanelDeck, i_eAlignment, eCurrentItemContent ) ) );
+}
+
+//-----------------------------------------------------------------------------
+void PanelDemoMainWindow::SetTabItemContent( const TabItemContent i_eItemContent )
+{
+ TabDeckLayouter* pLayouter = dynamic_cast< TabDeckLayouter* >( m_aToolPanelDeck.GetLayouter().get() );
+ OSL_ENSURE( pLayouter, "PanelDemoMainWindow::SetTabItemContent: wrong layouter!" );
+ // we currently use tab layouters only ...
+ if ( !pLayouter )
+ return;
+
+ pLayouter->SetTabItemContent( i_eItemContent );
+}
+
+//-----------------------------------------------------------------------------
+IToolPanelDeck& PanelDemoMainWindow::GetToolPanelDeck()
+{
+ return m_aToolPanelDeck;
+}
+
+//-----------------------------------------------------------------------------
+PToolPanel PanelDemoMainWindow::CreateToolPanel( const Color& i_rColor, const String& i_rPanelName )
+{
+ return PToolPanel( new ColoredPanel( m_aToolPanelDeck.GetPanelWindowAnchor(), i_rColor, i_rPanelName ) );
+}
+
+//=============================================================================
+//= PanelDemo
+//=============================================================================
+//-----------------------------------------------------------------------------
+Reference< XMultiServiceFactory > PanelDemo::createApplicationServiceManager()
+{
+ Reference< XMultiServiceFactory > xMS;
+ try
+ {
+ Reference< XComponentContext > xComponentContext = ::cppu::defaultBootstrap_InitialComponentContext();
+ if ( xComponentContext.is() )
+ xMS = xMS.query( xComponentContext->getServiceManager() );
+ }
+ catch( const ::com::sun::star::uno::Exception& )
+ {
+ DBG_UNHANDLED_EXCEPTION();
+ }
+
+ return xMS;
+}
+
+//-----------------------------------------------------------------------------
+void __EXPORT PanelDemo::Main()
+{
+ // create service factory
+ Reference< XMultiServiceFactory > xSMgr = createApplicationServiceManager();
+ ::comphelper::setProcessServiceFactory( xSMgr );
+
+ // initialize the UCB
+ Sequence< Any > aArgs(2);
+ aArgs[0] <<= rtl::OUString::createFromAscii( "Local" );
+ aArgs[1] <<= rtl::OUString::createFromAscii( "Office" );
+ ::ucbhelper::ContentBroker::initialize( xSMgr, aArgs );
+
+ // run the application
+ PanelDemoMainWindow aWindow;
+ Execute();
+}
+
+PanelDemo aTheApplication;
+
+} } // namespace ::svt::toolpanel
diff --git a/svtools/workben/treecontrol/makefile.mk b/svtools/workben/treecontrol/makefile.mk
new file mode 100644
index 000000000000..2558ed2c9a94
--- /dev/null
+++ b/svtools/workben/treecontrol/makefile.mk
@@ -0,0 +1,91 @@
+#*************************************************************************
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# Copyright 2000, 2010 Oracle and/or its affiliates.
+#
+# OpenOffice.org - a multi-platform office productivity suite
+#
+# This file is part of OpenOffice.org.
+#
+# OpenOffice.org is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License version 3
+# only, as published by the Free Software Foundation.
+#
+# OpenOffice.org is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License version 3 for more details
+# (a copy is included in the LICENSE file that accompanied this code).
+#
+# You should have received a copy of the GNU Lesser General Public License
+# version 3 along with OpenOffice.org. If not, see
+# <http://www.openoffice.org/license.html>
+# for a copy of the LGPLv3 License.
+#
+#*************************************************************************
+
+PRJ=..$/..
+
+PRJNAME=svtools
+TARGET=treetest
+LIBTARGET=NO
+ENABLE_EXCEPTIONS=TRUE
+
+# --- Settings -----------------------------------------------------
+
+.INCLUDE : settings.mk
+
+# --- Files --------------------------------------------------------
+
+APP1NOSAL= TRUE
+APP1TARGET= treetest
+APP1OBJS= $(OBJ)$/treetest.obj
+APP1STDLIBS=$(SOTLIB) \
+ $(COMPHELPERLIB) \
+ $(CPPULIB) \
+ $(CPPUHELPERLIB) \
+ $(SALLIB)
+
+# $(SVTOOLLIB) \
+
+APP2DEF= $(MISC)$/treetest.def
+
+# --- Targets ------------------------------------------------------
+
+.INCLUDE : target.mk
+
+
+# ------------------------------------------------------------------
+# Windows
+# ------------------------------------------------------------------
+
+.IF "$(GUI)" == "WIN"
+
+$(MISC)$/treetest.def: makefile.mk
+ echo NAME treetest >$@
+ echo DESCRIPTION 'StarView - Testprogramm' >>$@
+ echo EXETYPE WINDOWS >>$@
+ echo STUB 'winSTUB.EXE' >>$@
+ echo PROTMODE >>$@
+ echo CODE PRELOAD MOVEABLE DISCARDABLE >>$@
+ echo DATA PRELOAD MOVEABLE MULTIPLE >>$@
+ echo HEAPSIZE 8192 >>$@
+ echo STACKSIZE 32768 >>$@
+
+.ENDIF
+
+ALLTAR : $(BIN)$/treetest.rdb
+
+$(BIN)$/treetest.rdb : makefile.mk $(UNOUCRRDB)
+ rm -f $@
+ $(GNUCOPY) $(UNOUCRRDB) $@
+ +cd $(BIN) && \
+ regcomp -register -r treetest.rdb \
+ -c i18nsearch.uno$(DLLPOST) \
+ -c i18npool.uno$(DLLPOST) \
+ -c connector.uno$(DLLPOST) \
+ -c remotebridge.uno$(DLLPOST) \
+ -c bridgefac.uno$(DLLPOST) \
+ -c uuresolver.uno$(DLLPOST) \
+ -c $(DLLPRE)tk$(DLLPOSTFIX)$(DLLPOST)
diff --git a/svtools/workben/treecontrol/treetest.cxx b/svtools/workben/treecontrol/treetest.cxx
new file mode 100644
index 000000000000..f82c4ae388f5
--- /dev/null
+++ b/svtools/workben/treecontrol/treetest.cxx
@@ -0,0 +1,396 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#include <stdio.h>
+#include <wchar.h>
+
+#include <cppuhelper/bootstrap.hxx>
+
+#include <osl/file.hxx>
+#include <osl/process.h>
+
+#include <com/sun/star/bridge/XUnoUrlResolver.hpp>
+#include <com/sun/star/frame/XComponentLoader.hpp>
+#include <com/sun/star/beans/XPropertySet.hpp>
+#include <com/sun/star/awt/tree/XMutableTreeDataModel.hpp>
+#include <com/sun/star/awt/tree/XTreeControl.hpp>
+#include <com/sun/star/awt/tree/XTreeExpansionListener.hpp>
+#include <com/sun/star/awt/tree/XTreeEditListener.hpp>
+#include <com/sun/star/awt/XDialog.hpp>
+#include <com/sun/star/awt/XControlModel.hpp>
+#include <com/sun/star/container/XNameContainer.hpp>
+#include <com/sun/star/awt/XControl.hpp>
+#include <com/sun/star/awt/XControlContainer.hpp>
+#include <com/sun/star/view/SelectionType.hpp>
+
+#include <tools/urlobj.hxx>
+#include <vcl/image.hxx>
+#include <vcl/graph.hxx>
+
+#include <cppuhelper/implbase2.hxx>
+
+#include <string.h>
+#include <rtl/ref.hxx>
+
+#include "imagemgr.hxx"
+
+using rtl::OUString;
+using namespace com::sun::star::uno;
+using namespace com::sun::star::lang;
+using namespace com::sun::star::beans;
+using namespace com::sun::star::bridge;
+using namespace com::sun::star::frame;
+using namespace com::sun::star::registry;
+using namespace com::sun::star::awt;
+using namespace com::sun::star::awt::tree;
+using namespace com::sun::star::container;
+using namespace com::sun::star::view;
+using namespace com::sun::star::util;
+
+class DirectoryTree : public ::cppu::WeakImplHelper2< XTreeExpansionListener, XTreeEditListener >
+{
+public:
+ DirectoryTree( const Reference< XComponentContext >& xComponentContext );
+ virtual ~DirectoryTree();
+
+ void fillNode( const Reference< XMutableTreeNode >& xNode );
+ void display( const OUString& rURL );
+
+ // XTreeExpansionListener
+ virtual void SAL_CALL requestChildNodes( const TreeExpansionEvent& Event ) throw (RuntimeException);
+ virtual void SAL_CALL treeExpanding( const TreeExpansionEvent& Event ) throw (ExpandVetoException, RuntimeException);
+ virtual void SAL_CALL treeCollapsing( const TreeExpansionEvent& Event ) throw (ExpandVetoException, RuntimeException);
+ virtual void SAL_CALL treeExpanded( const TreeExpansionEvent& Event ) throw (RuntimeException);
+ virtual void SAL_CALL treeCollapsed( const TreeExpansionEvent& Event ) throw (RuntimeException);
+
+ // XTreeEditListener
+ virtual void SAL_CALL nodeEditing( const Reference< XTreeNode >& Node ) throw (VetoException, RuntimeException);
+ virtual void SAL_CALL nodeEdited( const Reference< XTreeNode >& Node, const OUString& NewText ) throw (RuntimeException);
+
+ // XEventListener
+ virtual void SAL_CALL disposing( const ::com::sun::star::lang::EventObject& Source ) throw (RuntimeException);
+
+ Reference< XMultiComponentFactory > mxMultiComponentFactoryServer;
+ Reference< XComponentContext > mxComponentContext;
+ Reference< XTreeControl > mxTreeControl;
+ Reference< XMutableTreeDataModel > mxTreeDataModel;
+};
+
+DirectoryTree::DirectoryTree( const Reference< XComponentContext >& xComponentContext )
+: mxComponentContext( xComponentContext )
+, mxMultiComponentFactoryServer( xComponentContext->getServiceManager() )
+{
+}
+
+DirectoryTree::~DirectoryTree()
+{
+}
+
+void DirectoryTree::display( const OUString& rURL )
+{
+ // some property names for later use
+ const OUString sPositionX( RTL_CONSTASCII_USTRINGPARAM( "PositionX" ) );
+ const OUString sPositionY( RTL_CONSTASCII_USTRINGPARAM( "PositionY" ) );
+ const OUString sWidth( RTL_CONSTASCII_USTRINGPARAM( "Width" ) );
+ const OUString sHeight( RTL_CONSTASCII_USTRINGPARAM( "Height" ) );
+ const OUString sDataModel( RTL_CONSTASCII_USTRINGPARAM( "DataModel" ) );
+ const OUString sSelectionType( RTL_CONSTASCII_USTRINGPARAM( "SelectionType" ) );
+ const OUString sShowsRootHandles( RTL_CONSTASCII_USTRINGPARAM( "ShowsRootHandles" ) );
+ const OUString sShowsHandles( RTL_CONSTASCII_USTRINGPARAM( "ShowsHandles" ) );
+ const OUString sRootDisplayed( RTL_CONSTASCII_USTRINGPARAM( "RootDisplayed" ) );
+ const OUString sEditable( RTL_CONSTASCII_USTRINGPARAM( "Editable" ) );
+ const OUString sTitle( RTL_CONSTASCII_USTRINGPARAM( "Title" ) );
+ const OUString sRowHeight( RTL_CONSTASCII_USTRINGPARAM( "RowHeight" ) );
+
+ // first create a data model for our tree control
+ mxTreeDataModel = Reference< XMutableTreeDataModel >(
+ mxMultiComponentFactoryServer->createInstanceWithContext(
+ OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.awt.tree.MutableTreeDataModel" ) ),
+ mxComponentContext ), UNO_QUERY_THROW );
+
+ // now fill it with some sample data
+ Reference< XMutableTreeNode > xNode( mxTreeDataModel->createNode( Any( rURL ), false ), UNO_QUERY_THROW );
+ xNode->setDataValue( Any( rURL ) );
+ xNode->setExpandedGraphicURL( OUString( RTL_CONSTASCII_USTRINGPARAM( "private:graphicrepository/sd/res/triangle_down.png" ) ) );
+ xNode->setCollapsedGraphicURL( OUString( RTL_CONSTASCII_USTRINGPARAM( "private:graphicrepository/sd/res/triangle_right.png" ) ) );
+
+ fillNode( xNode );
+ mxTreeDataModel->setRoot( xNode );
+
+ // now create the dialog
+ Reference< XControlModel > xDialogModel(
+ mxMultiComponentFactoryServer->createInstanceWithContext(
+ OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.awt.UnoControlDialogModel" ) ),
+ mxComponentContext ), UNO_QUERY_THROW );
+
+ Reference< XPropertySet > xDialogPropertySet( xDialogModel, UNO_QUERY_THROW );
+ xDialogPropertySet->setPropertyValue( sPositionX, Any( sal_Int32(50) ) );
+ xDialogPropertySet->setPropertyValue( sPositionY, Any( sal_Int32(50) ) );
+ xDialogPropertySet->setPropertyValue( sWidth, Any( sal_Int32(256) ) );
+ xDialogPropertySet->setPropertyValue( sHeight, Any( sal_Int32(256) ) );
+ xDialogPropertySet->setPropertyValue( sTitle, Any( OUString( RTL_CONSTASCII_USTRINGPARAM( "Tree Control Test" ) ) ) );
+
+ Reference< XMultiServiceFactory > xDialogMSF( xDialogModel, UNO_QUERY_THROW );
+
+ // now create our tree control
+ Reference< XControlModel > xTreeControlModel(
+ xDialogMSF->createInstance(
+ OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.awt.tree.TreeControlModel" ) ) ),
+ UNO_QUERY_THROW );
+
+ Reference< XPropertySet > XTreeControlModelSet( xTreeControlModel, UNO_QUERY_THROW );
+
+ XTreeControlModelSet->setPropertyValue( sSelectionType, Any( SelectionType_NONE ) );
+ XTreeControlModelSet->setPropertyValue( sPositionX, Any( sal_Int32(3) ) );
+ XTreeControlModelSet->setPropertyValue( sPositionY, Any( sal_Int32(3) ) );
+ XTreeControlModelSet->setPropertyValue( sWidth, Any( sal_Int32(253) ) );
+ XTreeControlModelSet->setPropertyValue( sHeight, Any( sal_Int32(253) ) );
+ XTreeControlModelSet->setPropertyValue( sDataModel, Any( mxTreeDataModel ) );
+ XTreeControlModelSet->setPropertyValue( sShowsRootHandles,Any( sal_False ) );
+ XTreeControlModelSet->setPropertyValue( sShowsHandles, Any( sal_False ) );
+ XTreeControlModelSet->setPropertyValue( sRootDisplayed, Any( sal_True ) );
+ XTreeControlModelSet->setPropertyValue( sEditable, Any( sal_True ) );
+// XTreeControlModelSet->setPropertyValue( sRowHeight, Any( sal_Int32( 12 ) ) );
+
+ Reference< XNameContainer > xDialogModelContainer( xDialogModel, UNO_QUERY_THROW );
+
+ const OUString sTreeControlName( RTL_CONSTASCII_USTRINGPARAM( "tree" ) );
+
+ xDialogModelContainer->insertByName( sTreeControlName, Any( xTreeControlModel ) );
+
+ // now create the peers
+ Reference< XControl > xDialogControl(
+ mxMultiComponentFactoryServer->createInstanceWithContext(
+ OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.awt.UnoControlDialog" ) ),
+ mxComponentContext ), UNO_QUERY_THROW );
+
+ xDialogControl->setModel( xDialogModel );
+
+ Reference< XToolkit > xToolkit(
+ mxMultiComponentFactoryServer->createInstanceWithContext(
+ OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.awt.Toolkit" ) ),
+ mxComponentContext ), UNO_QUERY_THROW );
+ xDialogControl->createPeer( xToolkit, 0 );
+
+ // get the peers of the sub controls from the dialog peer container
+ Reference< XControlContainer > xDialogContainer( xDialogControl, UNO_QUERY_THROW );
+ mxTreeControl = Reference< XTreeControl >( xDialogContainer->getControl( sTreeControlName ), UNO_QUERY_THROW );
+
+ Reference< XTreeExpansionListener > xListener( static_cast<XWeak*>(this), UNO_QUERY_THROW );
+ mxTreeControl->addTreeExpansionListener( xListener );
+ Reference< XDialog > xDialog( xDialogControl, UNO_QUERY_THROW );
+ xDialog->execute();
+}
+
+void DirectoryTree::fillNode( const Reference< XMutableTreeNode >& xNode )
+{
+ if( xNode->getChildCount() == 0 )
+ {
+ OUString sParentPath;
+ xNode->getDataValue() >>= sParentPath;
+
+ osl::Directory aDirectory( sParentPath );
+ if( aDirectory.open() == osl::Directory::E_None )
+ {
+ osl::DirectoryItem aItem;
+ osl::FileStatus fs( FileStatusMask_Type | FileStatusMask_FileURL);
+ while( aDirectory.getNextItem( aItem, 0xffffffff ) == osl::Directory::E_None )
+ {
+ if (aItem.getFileStatus(fs) == osl::FileBase::E_None)
+ {
+ bool bDirectory = fs.getFileType() == osl::FileStatus::Directory;
+ Reference< XMutableTreeNode > xChildNode( mxTreeDataModel->createNode( Any( fs.getFileName() ), bDirectory ), UNO_QUERY_THROW );
+ xChildNode->setDataValue( Any( fs.getFileURL() ) );
+ if( bDirectory )
+ {
+ xChildNode->setExpandedGraphicURL( OUString( RTL_CONSTASCII_USTRINGPARAM( "private:graphicrepository/sd/res/triangle_down.png" ) ) );
+ xChildNode->setCollapsedGraphicURL( OUString( RTL_CONSTASCII_USTRINGPARAM( "private:graphicrepository/sd/res/triangle_right.png" ) ) );
+ }
+ else
+ {
+ xChildNode->setNodeGraphicURL( OUString( RTL_CONSTASCII_USTRINGPARAM("private:graphicrepository/sw/imglst/nc20010.png") ) );
+ }
+ xNode->appendChild( xChildNode );
+ }
+ }
+ }
+ }
+}
+
+// XTreeExpansionListener
+void SAL_CALL DirectoryTree::requestChildNodes( const TreeExpansionEvent& rEvent ) throw (RuntimeException)
+{
+ if( rEvent.Node.is() && rEvent.Node->hasChildsOnDemand() )
+ {
+ Reference< XMutableTreeNode > xNode( rEvent.Node, UNO_QUERY );
+ if( xNode.is() )
+ {
+ fillNode( xNode );
+ xNode->setHasChildsOnDemand( sal_False );
+ }
+ }
+}
+
+void SAL_CALL DirectoryTree::treeExpanding( const TreeExpansionEvent& /*rEvent*/ ) throw (ExpandVetoException, RuntimeException)
+{
+}
+
+void SAL_CALL DirectoryTree::treeCollapsing( const TreeExpansionEvent& ) throw (ExpandVetoException, RuntimeException)
+{
+}
+
+void SAL_CALL DirectoryTree::treeExpanded( const TreeExpansionEvent& ) throw (RuntimeException)
+{
+}
+
+void SAL_CALL DirectoryTree::treeCollapsed( const TreeExpansionEvent& /*rEvent*/ ) throw (RuntimeException)
+{
+/*
+ if( rEvent.Node != mxTreeDataModel->getRoot() )
+ {
+ Reference< XMutableTreeNode > xNode( rEvent.Node, UNO_QUERY );
+ if( xNode.is() )
+ {
+ while( xNode->getChildCount() )
+ xNode->removeChildByIndex(0);
+ xNode->setHasChildsOnDemand( sal_True );
+ }
+ }
+*/
+}
+
+// XTreeEditListener
+void SAL_CALL DirectoryTree::nodeEditing( const Reference< XTreeNode >& ) throw (VetoException, RuntimeException)
+{
+}
+
+void SAL_CALL DirectoryTree::nodeEdited( const Reference< XTreeNode >& , const OUString& ) throw (RuntimeException)
+{
+}
+
+// XEventListener
+void SAL_CALL DirectoryTree::disposing( const ::com::sun::star::lang::EventObject& ) throw (RuntimeException)
+{
+}
+
+//============================================================================
+int SAL_CALL main( int argc, char **argv )
+{
+ OUString sConnectionString(RTL_CONSTASCII_USTRINGPARAM("uno:socket,host=localhost,port=5678;urp;StarOffice.ServiceManager"));
+
+ if (argc < 2)
+ {
+ printf("using: treetest <directory> [<uno_connection_url>]\n\n"
+#ifdef WNT
+ "example: treetest \"c:\" \"uno:socket,host=localhost,port=5678;urp;StarOffice.ServiceManager\"\n");
+#else
+ "example: treetest \"/etc\" \"uno:socket,host=localhost,port=5678;urp;StarOffice.ServiceManager\"\n");
+#endif
+ exit(1);
+ }
+ if (argc == 3)
+ {
+ sConnectionString = OUString::createFromAscii(argv[2]);
+ }
+
+ // Creates a simple registry service instance.
+ Reference< XSimpleRegistry > xSimpleRegistry(::cppu::createSimpleRegistry() );
+
+ // Connects the registry to a persistent data source represented by an URL.
+ xSimpleRegistry->open(
+ OUString( RTL_CONSTASCII_USTRINGPARAM("treetest.rdb") ), sal_True, sal_False );
+
+ /* Bootstraps an initial component context with service manager upon a given
+ registry. This includes insertion of initial services:
+ - (registry) service manager, shared lib loader,
+ - simple registry, nested registry,
+ - implementation registration
+ - registry typedescription provider, typedescription manager (also
+ installs it into cppu core)
+ */
+ Reference< XComponentContext > xComponentContext(
+ ::cppu::bootstrap_InitialComponentContext( xSimpleRegistry ) );
+
+ /* Gets the service manager instance to be used (or null). This method has
+ been added for convenience, because the service manager is a often used
+ object.
+ */
+ Reference< XMultiComponentFactory > xMultiComponentFactoryClient(
+ xComponentContext->getServiceManager() );
+
+ /* Creates an instance of a component which supports the services specified
+ by the factory.
+ */
+ Reference< XInterface > xInterface =
+ xMultiComponentFactoryClient->createInstanceWithContext(
+ OUString::createFromAscii( "com.sun.star.bridge.UnoUrlResolver" ),
+ xComponentContext );
+
+ Reference< XUnoUrlResolver > resolver( xInterface, UNO_QUERY );
+
+ // Resolves the component context from the office, on the uno URL given by argv[1].
+ try
+ {
+ xInterface = Reference< XInterface >(
+ resolver->resolve( sConnectionString ), UNO_QUERY );
+ }
+ catch ( Exception& e )
+ {
+ printf("Error: cannot establish a connection using '%s':\n %s\n",
+ OUStringToOString(sConnectionString, RTL_TEXTENCODING_ASCII_US).getStr(),
+ OUStringToOString(e.Message, RTL_TEXTENCODING_ASCII_US).getStr());
+ exit(1);
+ }
+
+ // gets the server component context as property of the office component factory
+ Reference< XPropertySet > xPropSet( xInterface, UNO_QUERY );
+ xPropSet->getPropertyValue( OUString::createFromAscii("DefaultContext") ) >>= xComponentContext;
+
+ // gets the service manager from the office
+ Reference< XMultiComponentFactory > xMultiComponentFactoryServer(
+ xComponentContext->getServiceManager() );
+
+ try
+ {
+ OUString ustrFileURL;
+ osl::FileBase::getFileURLFromSystemPath( OUString::createFromAscii(argv[1]), ustrFileURL );
+
+ rtl::Reference< DirectoryTree >(
+ new DirectoryTree( xComponentContext ) )->display(ustrFileURL);
+ }
+ catch( Exception& e )
+ {
+ printf("Error: exception caught during test:\n %s\n",
+ OUStringToOString(e.Message, RTL_TEXTENCODING_ASCII_US).getStr());
+ exit(1);
+ }
+
+ // dispose the local service manager
+ Reference< XComponent >::query( xMultiComponentFactoryClient )->dispose();
+
+ return 0;
+}
diff --git a/svtools/workben/unodialog/makefile.mk b/svtools/workben/unodialog/makefile.mk
new file mode 100644
index 000000000000..f18feffce5c3
--- /dev/null
+++ b/svtools/workben/unodialog/makefile.mk
@@ -0,0 +1,90 @@
+#*************************************************************************
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# Copyright 2000, 2010 Oracle and/or its affiliates.
+#
+# OpenOffice.org - a multi-platform office productivity suite
+#
+# This file is part of OpenOffice.org.
+#
+# OpenOffice.org is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License version 3
+# only, as published by the Free Software Foundation.
+#
+# OpenOffice.org is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License version 3 for more details
+# (a copy is included in the LICENSE file that accompanied this code).
+#
+# You should have received a copy of the GNU Lesser General Public License
+# version 3 along with OpenOffice.org. If not, see
+# <http://www.openoffice.org/license.html>
+# for a copy of the LGPLv3 License.
+#
+#*************************************************************************
+
+PRJ=..$/..
+PRJINC=$(PRJ)/inc
+PRJNAME=svtools
+TARGET=udlg
+USE_DEFFILE=TRUE
+
+ENABLE_EXCEPTIONS=TRUE
+VISIBILITY_HIDDEN=TRUE
+
+# --- Settings ----------------------------------
+
+.INCLUDE : settings.mk
+
+# --- Files -------------------------------------
+
+# ... resource files ............................
+
+SRS1NAME=$(TARGET)
+SRC1FILES = \
+ roadmapskeleton.src
+
+# ... object files ............................
+SLOFILES= $(SLO)$/unodialogsample.obj \
+ $(SLO)$/roadmapskeleton.obj \
+ $(SLO)$/roadmapskeletonpages.obj \
+ $(SLO)$/udlg_module.obj \
+ $(SLO)$/udlg_services.obj \
+
+# --- library -----------------------------------
+
+SHL1TARGET=$(TARGET)$(DLLPOSTFIX)
+SHL1VERSIONMAP=$(SOLARENV)/src/component.map
+
+SHL1STDLIBS= \
+ $(CPPULIB) \
+ $(CPPUHELPERLIB) \
+ $(COMPHELPERLIB) \
+ $(UNOTOOLSLIB) \
+ $(TOOLSLIB) \
+ $(SALLIB) \
+ $(SVTOOLLIB) \
+ $(VCLLIB)
+
+SHL1LIBS= $(SLB)$/$(TARGET).lib
+SHL1IMPLIB= i$(TARGET)
+SHL1DEPN= $(SHL1LIBS)
+SHL1DEF= $(MISC)$/$(SHL1TARGET).def
+
+DEF1NAME= $(SHL1TARGET)
+
+# --- .res files -------------------------------
+
+RES1FILELIST=\
+ $(SRS)$/$(TARGET).srs
+
+RESLIB1NAME=$(TARGET)
+RESLIB1IMAGES=$(PRJ)$/res
+RESLIB1SRSFILES=$(RES1FILELIST)
+
+# --- Targets ----------------------------------
+
+.INCLUDE : target.mk
+
diff --git a/svtools/workben/unodialog/roadmapskeleton.cxx b/svtools/workben/unodialog/roadmapskeleton.cxx
new file mode 100644
index 000000000000..e3ed06707f14
--- /dev/null
+++ b/svtools/workben/unodialog/roadmapskeleton.cxx
@@ -0,0 +1,113 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#include "udlg_module.hxx"
+#include "udlg_global.hrc"
+#include "roadmapskeleton.hrc"
+#include "roadmapskeleton.hxx"
+#include "roadmapskeletonpages.hxx"
+
+//........................................................................
+namespace udlg
+{
+//........................................................................
+
+#define STATE_WELCOME 0
+#define STATE_PREPARE 1
+#define STATE_SETUP 2
+#define STATE_FINISH 3
+
+#define PATH_DEFAULT 1
+
+ //====================================================================
+ //= RoadmapSkeletonDialog
+ //====================================================================
+ //--------------------------------------------------------------------
+ RoadmapSkeletonDialog::RoadmapSkeletonDialog( const ::comphelper::ComponentContext& _rContext, Window* _pParent )
+ :RoadmapSkeletonDialog_Base( _pParent, UdlgResId( DLG_ROADMAP_SKELETON ) )
+ ,m_aContext( _rContext )
+ {
+ String sTitlePrepare( UdlgResId( STR_STATE_WELCOME ) );
+ String sTitleStoreAs( UdlgResId( STR_STATE_PREPARE ) );
+ String sTitleMigrate( UdlgResId( STR_STATE_SETUP ) );
+ String sTitleSummary( UdlgResId( STR_STATE_FINISH ) );
+ FreeResource();
+
+ describeState( STATE_WELCOME, sTitlePrepare, &WelcomePage::Create );
+ describeState( STATE_PREPARE, sTitleStoreAs, &PreparationPage::Create );
+ describeState( STATE_SETUP, sTitleMigrate, &SetupPage::Create );
+ describeState( STATE_FINISH, sTitleSummary, &FinishPage::Create );
+
+ declarePath( PATH_DEFAULT, STATE_WELCOME, STATE_PREPARE, STATE_SETUP, STATE_FINISH, WZS_INVALID_STATE );
+
+ SetPageSizePixel( LogicToPixel( ::Size( TAB_PAGE_WIDTH, TAB_PAGE_HEIGHT ), MAP_APPFONT ) );
+ ShowButtonFixedLine( true );
+ SetRoadmapInteractive( true );
+ enableAutomaticNextButtonState();
+ defaultButton( WZB_NEXT );
+ enableButtons( WZB_FINISH, true );
+ ActivatePage();
+ }
+
+ //--------------------------------------------------------------------
+ RoadmapSkeletonDialog::~RoadmapSkeletonDialog()
+ {
+ }
+
+ //--------------------------------------------------------------------
+ void RoadmapSkeletonDialog::enterState( WizardState _nState )
+ {
+ RoadmapSkeletonDialog_Base::enterState( _nState );
+ }
+
+ //--------------------------------------------------------------------
+ sal_Bool RoadmapSkeletonDialog::prepareLeaveCurrentState( CommitPageReason _eReason )
+ {
+ return RoadmapSkeletonDialog_Base::prepareLeaveCurrentState( _eReason );
+ }
+
+ //--------------------------------------------------------------------
+ sal_Bool RoadmapSkeletonDialog::leaveState( WizardState _nState )
+ {
+ return RoadmapSkeletonDialog_Base::leaveState( _nState );
+ }
+
+ //--------------------------------------------------------------------
+ RoadmapSkeletonDialog::WizardState RoadmapSkeletonDialog::determineNextState( WizardState _nCurrentState ) const
+ {
+ return RoadmapSkeletonDialog_Base::determineNextState( _nCurrentState );
+ }
+
+ //--------------------------------------------------------------------
+ sal_Bool RoadmapSkeletonDialog::onFinish()
+ {
+ return RoadmapSkeletonDialog_Base::onFinish();
+ }
+
+//........................................................................
+} // namespace udlg
+//........................................................................
diff --git a/svtools/workben/unodialog/roadmapskeleton.hrc b/svtools/workben/unodialog/roadmapskeleton.hrc
new file mode 100644
index 000000000000..9b704e4a8f11
--- /dev/null
+++ b/svtools/workben/unodialog/roadmapskeleton.hrc
@@ -0,0 +1,41 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef SVTOOLS_ROADMAPSKELETON_HRC
+#define SVTOOLS_ROADMAPSKELETON_HRC
+
+#define TAB_PAGE_WIDTH 280
+#define TAB_PAGE_HEIGHT 185
+
+//... strings ............................................................
+
+#define STR_STATE_WELCOME 1
+#define STR_STATE_PREPARE 2
+#define STR_STATE_SETUP 3
+#define STR_STATE_FINISH 4
+
+#endif // SVTOOLS_ROADMAPSKELETON_HRC
diff --git a/svtools/workben/unodialog/roadmapskeleton.hxx b/svtools/workben/unodialog/roadmapskeleton.hxx
new file mode 100644
index 000000000000..8859390c4b58
--- /dev/null
+++ b/svtools/workben/unodialog/roadmapskeleton.hxx
@@ -0,0 +1,65 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef SVTOOLS_ROADMAPSKELETONDIALOG_HXX
+#define SVTOOLS_ROADMAPSKELETONDIALOG_HXX
+
+#include <comphelper/componentcontext.hxx>
+#include <svtools/roadmapwizard.hxx>
+
+//........................................................................
+namespace udlg
+{
+//........................................................................
+
+ //====================================================================
+ //= RoadmapSkeletonDialog
+ //====================================================================
+ typedef ::svt::RoadmapWizard RoadmapSkeletonDialog_Base;
+ class RoadmapSkeletonDialog : public RoadmapSkeletonDialog_Base
+ {
+ public:
+ RoadmapSkeletonDialog( const ::comphelper::ComponentContext& _rContext, Window* _pParent );
+ virtual ~RoadmapSkeletonDialog();
+
+ protected:
+ // OWizardMachine overridables
+ virtual void enterState( WizardState _nState );
+ virtual sal_Bool prepareLeaveCurrentState( CommitPageReason _eReason );
+ virtual sal_Bool leaveState( WizardState _nState );
+ virtual WizardState determineNextState( WizardState _nCurrentState ) const;
+ virtual sal_Bool onFinish();
+
+ private:
+ ::comphelper::ComponentContext m_aContext;
+ };
+
+//........................................................................
+} // namespace udlg
+//........................................................................
+
+#endif // SVTOOLS_ROADMAPSKELETONDIALOG_HXX
diff --git a/svtools/workben/unodialog/roadmapskeleton.src b/svtools/workben/unodialog/roadmapskeleton.src
new file mode 100644
index 000000000000..797490273b5f
--- /dev/null
+++ b/svtools/workben/unodialog/roadmapskeleton.src
@@ -0,0 +1,84 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#include "udlg_global.hrc"
+#include "roadmapskeleton.hrc"
+
+// -----------------------------------------------------------------------------
+ModalDialog DLG_ROADMAP_SKELETON
+{
+ OutputSize = TRUE ;
+ Moveable = TRUE;
+ Closeable = TRUE ;
+ Hide = TRUE;
+
+ Text[ en-US ] = "Roadmap Skeleton Demo" ;
+
+ String STR_STATE_WELCOME
+ {
+ Text [ en-US ] = "Welcome";
+ };
+
+ String STR_STATE_PREPARE
+ {
+ Text [ en-US ] = "Prepare";
+ };
+
+ String STR_STATE_SETUP
+ {
+ Text [ en-US ] = "Setup";
+ };
+
+ String STR_STATE_FINISH
+ {
+ Text [ en-US ] = "Finish";
+ };
+};
+
+TabPage TP_WELCOME
+{
+ Size = MAP_APPFONT( TAB_PAGE_WIDTH, TAB_PAGE_HEIGHT );
+ Hide = TRUE;
+};
+
+TabPage TP_PREPARE
+{
+ Size = MAP_APPFONT( TAB_PAGE_WIDTH, TAB_PAGE_HEIGHT );
+ Hide = TRUE;
+};
+
+TabPage TP_SETUP
+{
+ Size = MAP_APPFONT( TAB_PAGE_WIDTH, TAB_PAGE_HEIGHT );
+ Hide = TRUE;
+};
+
+TabPage TP_FINISH
+{
+ Size = MAP_APPFONT( TAB_PAGE_WIDTH, TAB_PAGE_HEIGHT );
+ Hide = TRUE;
+};
diff --git a/svtools/workben/unodialog/roadmapskeletonpages.cxx b/svtools/workben/unodialog/roadmapskeletonpages.cxx
new file mode 100644
index 000000000000..9d9291f92da5
--- /dev/null
+++ b/svtools/workben/unodialog/roadmapskeletonpages.cxx
@@ -0,0 +1,114 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#include "udlg_module.hxx"
+#include "udlg_global.hrc"
+#include "roadmapskeletonpages.hxx"
+#include "roadmapskeleton.hxx"
+
+//........................................................................
+namespace udlg
+{
+//........................................................................
+
+ //====================================================================
+ //= RoadmapSkeletonPage
+ //====================================================================
+ //--------------------------------------------------------------------
+ RoadmapSkeletonPage::RoadmapSkeletonPage( RoadmapSkeletonDialog& _rParentDialog, const ResId& _rRes )
+ :RoadmapSkeletonPage_Base( &_rParentDialog, _rRes )
+ {
+ }
+
+ //--------------------------------------------------------------------
+ RoadmapSkeletonPage::~RoadmapSkeletonPage()
+ {
+ }
+
+ //====================================================================
+ //= WelcomePage
+ //====================================================================
+ //--------------------------------------------------------------------
+ WelcomePage::WelcomePage( RoadmapSkeletonDialog& _rParentDialog )
+ :RoadmapSkeletonPage( _rParentDialog, UdlgResId( TP_WELCOME ) )
+ {
+ }
+
+ //--------------------------------------------------------------------
+ TabPage* WelcomePage::Create( ::svt::RoadmapWizard& _rParentDialog )
+ {
+ return new WelcomePage( dynamic_cast< RoadmapSkeletonDialog& >( _rParentDialog ) );
+ }
+
+ //====================================================================
+ //= PreparationPage
+ //====================================================================
+ //--------------------------------------------------------------------
+ PreparationPage::PreparationPage( RoadmapSkeletonDialog& _rParentDialog )
+ :RoadmapSkeletonPage( _rParentDialog, UdlgResId( TP_PREPARE ) )
+ {
+ }
+
+ //--------------------------------------------------------------------
+ TabPage* PreparationPage::Create( ::svt::RoadmapWizard& _rParentDialog )
+ {
+ return new PreparationPage( dynamic_cast< RoadmapSkeletonDialog& >( _rParentDialog ) );
+ }
+
+ //====================================================================
+ //= SetupPage
+ //====================================================================
+ //--------------------------------------------------------------------
+ SetupPage::SetupPage( RoadmapSkeletonDialog& _rParentDialog )
+ :RoadmapSkeletonPage( _rParentDialog, UdlgResId( TP_SETUP ) )
+ {
+ }
+
+ //--------------------------------------------------------------------
+ TabPage* SetupPage::Create( ::svt::RoadmapWizard& _rParentDialog )
+ {
+ return new SetupPage( dynamic_cast< RoadmapSkeletonDialog& >( _rParentDialog ) );
+ }
+
+ //====================================================================
+ //= FinishPage
+ //====================================================================
+ //--------------------------------------------------------------------
+ FinishPage::FinishPage( RoadmapSkeletonDialog& _rParentDialog )
+ :RoadmapSkeletonPage( _rParentDialog, UdlgResId( TP_FINISH ) )
+ {
+ }
+
+ //--------------------------------------------------------------------
+ TabPage* FinishPage::Create( ::svt::RoadmapWizard& _rParentDialog )
+ {
+ return new FinishPage( dynamic_cast< RoadmapSkeletonDialog& >( _rParentDialog ) );
+ }
+
+//........................................................................
+} // namespace udlg
+//........................................................................
diff --git a/svtools/workben/unodialog/roadmapskeletonpages.hxx b/svtools/workben/unodialog/roadmapskeletonpages.hxx
new file mode 100644
index 000000000000..6b1d9b01710d
--- /dev/null
+++ b/svtools/workben/unodialog/roadmapskeletonpages.hxx
@@ -0,0 +1,104 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef SVTOOLS_ROADMAPSKELETONPAGES_HXX
+#define SVTOOLS_ROADMAPSKELETONPAGES_HXX
+
+#include <svtools/wizardmachine.hxx>
+
+namespace svt
+{
+ class RoadmapWizard;
+}
+
+//........................................................................
+namespace udlg
+{
+//........................................................................
+
+ class RoadmapSkeletonDialog;
+
+ //====================================================================
+ //= RoadmapSkeletonPage
+ //====================================================================
+ typedef ::svt::OWizardPage RoadmapSkeletonPage_Base;
+ class RoadmapSkeletonPage : public RoadmapSkeletonPage_Base
+ {
+ public:
+ RoadmapSkeletonPage( RoadmapSkeletonDialog& _rParentDialog, const ResId& _rRes );
+ ~RoadmapSkeletonPage();
+ };
+
+ //====================================================================
+ //= WelcomePage
+ //====================================================================
+ class WelcomePage : public RoadmapSkeletonPage
+ {
+ public:
+ WelcomePage( RoadmapSkeletonDialog& _rParentDialog );
+
+ static TabPage* Create( ::svt::RoadmapWizard& _rParentDialog );
+ };
+
+ //====================================================================
+ //= PreparationPage
+ //====================================================================
+ class PreparationPage : public RoadmapSkeletonPage
+ {
+ public:
+ PreparationPage( RoadmapSkeletonDialog& _rParentDialog );
+
+ static TabPage* Create( ::svt::RoadmapWizard& _rParentDialog );
+ };
+
+ //====================================================================
+ //= SetupPage
+ //====================================================================
+ class SetupPage : public RoadmapSkeletonPage
+ {
+ public:
+ SetupPage( RoadmapSkeletonDialog& _rParentDialog );
+
+ static TabPage* Create( ::svt::RoadmapWizard& _rParentDialog );
+ };
+
+ //====================================================================
+ //= FinishPage
+ //====================================================================
+ class FinishPage : public RoadmapSkeletonPage
+ {
+ public:
+ FinishPage( RoadmapSkeletonDialog& _rParentDialog );
+
+ static TabPage* Create( ::svt::RoadmapWizard& _rParentDialog );
+ };
+
+//........................................................................
+} // namespace udlg
+//........................................................................
+
+#endif // SVTOOLS_ROADMAPSKELETONPAGES_HXX
diff --git a/svtools/workben/unodialog/udlg_global.hrc b/svtools/workben/unodialog/udlg_global.hrc
new file mode 100644
index 000000000000..572de306f0df
--- /dev/null
+++ b/svtools/workben/unodialog/udlg_global.hrc
@@ -0,0 +1,54 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef SVTOOLS_UDLG_GLOBAL_HRC
+#define SVTOOLS_UDLG_GLOBAL_HRC
+
+#include <svl/solar.hrc>
+
+//=====================================================================
+//= bases
+//=====================================================================
+#define RID_UDLG_DIALOG_START RID_SVTOOLS_START + 0
+#define RID_UDLG_TAPPAGE_START RID_SVTOOLS_START + 0
+
+//=====================================================================
+//= dialogs
+//=====================================================================
+
+#define DLG_ROADMAP_SKELETON RID_UDLG_DIALOG_START + 0
+
+//=====================================================================
+//= tab pages
+//=====================================================================
+
+#define TP_WELCOME ( RID_UDLG_TAPPAGE_START + 0 )
+#define TP_PREPARE ( RID_UDLG_TAPPAGE_START + 1 )
+#define TP_SETUP ( RID_UDLG_TAPPAGE_START + 2 )
+#define TP_FINISH ( RID_UDLG_TAPPAGE_START + 3 )
+
+#endif // SVTOOLS_UDLG_GLOBAL_HRC
diff --git a/svtools/workben/unodialog/udlg_module.cxx b/svtools/workben/unodialog/udlg_module.cxx
new file mode 100644
index 000000000000..da16bc5657ab
--- /dev/null
+++ b/svtools/workben/unodialog/udlg_module.cxx
@@ -0,0 +1,42 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#include "udlg_module.hxx"
+
+#include <rtl/instance.hxx>
+
+//........................................................................
+namespace udlg
+{
+//........................................................................
+
+ IMPLEMENT_MODULE( UdlgModule, "udlg" );
+
+//........................................................................
+} // namespace udlg
+//........................................................................
+
diff --git a/svtools/workben/unodialog/udlg_module.hxx b/svtools/workben/unodialog/udlg_module.hxx
new file mode 100644
index 000000000000..2f1b30d9afed
--- /dev/null
+++ b/svtools/workben/unodialog/udlg_module.hxx
@@ -0,0 +1,45 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef SVTOOLS_WORKBEN_UNODIALOG_MODULE_HXX
+#define SVTOOLS_WORKBEN_UNODIALOG_MODULE_HXX
+
+#include <unotools/componentresmodule.hxx>
+
+//........................................................................
+namespace udlg
+{
+//........................................................................
+
+ DEFINE_MODULE( UdlgModule, UdlgClient, UdlgResId )
+
+//........................................................................
+} // namespace udlg
+//........................................................................
+
+#endif // SVTOOLS_WORKBEN_UNODIALOG_MODULE_HXX
+
diff --git a/svtools/workben/unodialog/udlg_services.cxx b/svtools/workben/unodialog/udlg_services.cxx
new file mode 100644
index 000000000000..b71dceed5eba
--- /dev/null
+++ b/svtools/workben/unodialog/udlg_services.cxx
@@ -0,0 +1,58 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+/** === begin UNO includes === **/
+/** === end UNO includes === **/
+
+#include "udlg_module.hxx"
+
+//........................................................................
+namespace udlg
+{
+//........................................................................
+
+ //--------------------------------------------------------------------
+ extern void createRegistryInfo_UnoDialogSkeleton();
+
+ static void initializeModule()
+ {
+ static bool bInitialized( false );
+ if ( !bInitialized )
+ {
+ ::osl::MutexGuard aGuard( ::osl::Mutex::getGlobalMutex() );
+ if ( !bInitialized )
+ {
+ createRegistryInfo_UnoDialogSkeleton();
+ }
+ }
+ }
+
+//........................................................................
+} // namespace udlg
+//........................................................................
+
+IMPLEMENT_COMPONENT_LIBRARY_API( ::udlg::UdlgModule, ::udlg::initializeModule )
diff --git a/svtools/workben/unodialog/unodialogsample.cxx b/svtools/workben/unodialog/unodialogsample.cxx
new file mode 100644
index 000000000000..4eadc646fef5
--- /dev/null
+++ b/svtools/workben/unodialog/unodialogsample.cxx
@@ -0,0 +1,214 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#include "udlg_module.hxx"
+#include "roadmapskeleton.hxx"
+
+/** === begin UNO includes === **/
+/** === end UNO includes === **/
+
+#include <comphelper/componentcontext.hxx>
+#include "svtools/genericunodialog.hxx"
+
+//........................................................................
+namespace udlg
+{
+//........................................................................
+
+ /** === begin UNO using === **/
+ using ::com::sun::star::uno::Reference;
+ using ::com::sun::star::uno::XInterface;
+ using ::com::sun::star::uno::UNO_QUERY;
+ using ::com::sun::star::uno::UNO_QUERY_THROW;
+ using ::com::sun::star::uno::UNO_SET_THROW;
+ using ::com::sun::star::uno::Exception;
+ using ::com::sun::star::uno::RuntimeException;
+ using ::com::sun::star::uno::Any;
+ using ::com::sun::star::uno::makeAny;
+ using ::com::sun::star::uno::XComponentContext;
+ using ::com::sun::star::uno::Sequence;
+ using ::com::sun::star::beans::XPropertySetInfo;
+ using ::com::sun::star::beans::Property;
+ /** === end UNO using === **/
+
+ //====================================================================
+ //= UnoDialogSkeleton
+ //====================================================================
+ class UnoDialogSkeleton;
+ typedef ::svt::OGenericUnoDialog UnoDialogSkeleton_Base;
+ typedef ::comphelper::OPropertyArrayUsageHelper< UnoDialogSkeleton > UnoDialogSkeleton_PBase;
+
+ class UnoDialogSkeleton
+ :public UnoDialogSkeleton_Base
+ ,public UnoDialogSkeleton_PBase
+ ,public UdlgClient
+ {
+ public:
+ UnoDialogSkeleton( const Reference< XComponentContext >& _rxContext );
+
+ // XTypeProvider
+ virtual Sequence< sal_Int8 > SAL_CALL getImplementationId() throw(RuntimeException);
+
+ // XServiceInfo
+ virtual ::rtl::OUString SAL_CALL getImplementationName() throw(RuntimeException);
+ virtual Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames() throw(RuntimeException);
+
+ // XPropertySet
+ virtual Reference< XPropertySetInfo > SAL_CALL getPropertySetInfo() throw(RuntimeException);
+ virtual ::cppu::IPropertyArrayHelper& SAL_CALL getInfoHelper();
+
+ // OPropertyArrayUsageHelper
+ virtual ::cppu::IPropertyArrayHelper* createArrayHelper( ) const;
+
+ // helper for factories
+ static Reference< XInterface > SAL_CALL Create( const Reference< XComponentContext >& _rxContext );
+ static ::rtl::OUString SAL_CALL getImplementationName_static() throw(RuntimeException);
+ static Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames_static() throw(RuntimeException);
+
+ protected:
+ ~UnoDialogSkeleton();
+
+ protected:
+ virtual Dialog* createDialog( Window* _pParent );
+ virtual void destroyDialog();
+
+ private:
+ ::comphelper::ComponentContext m_aContext;
+ };
+
+ //====================================================================
+ //= UnoDialogSkeleton
+ //====================================================================
+ //--------------------------------------------------------------------
+ UnoDialogSkeleton::UnoDialogSkeleton( const Reference< XComponentContext >& _rxContext )
+ :UnoDialogSkeleton_Base( _rxContext )
+ ,m_aContext( _rxContext )
+ {
+ }
+
+ //--------------------------------------------------------------------
+ UnoDialogSkeleton::~UnoDialogSkeleton()
+ {
+ // we do this here cause the base class' call to destroyDialog won't reach us anymore : we're within an dtor,
+ // so this virtual-method-call the base class does does not work, we're already dead then ...
+ if ( m_pDialog )
+ {
+ ::osl::MutexGuard aGuard( m_aMutex );
+ if ( m_pDialog )
+ destroyDialog();
+ }
+ }
+
+ //--------------------------------------------------------------------
+ Reference< XInterface > SAL_CALL UnoDialogSkeleton::Create( const Reference< XComponentContext >& _rxContext )
+ {
+ return *(new UnoDialogSkeleton( _rxContext ) );
+ }
+
+ //--------------------------------------------------------------------
+ Dialog* UnoDialogSkeleton::createDialog( Window* _pParent )
+ {
+ return new RoadmapSkeletonDialog( m_aContext, _pParent );
+ }
+
+ //--------------------------------------------------------------------
+ void UnoDialogSkeleton::destroyDialog()
+ {
+ UnoDialogSkeleton_Base::destroyDialog();
+ }
+
+ //--------------------------------------------------------------------
+ Sequence< sal_Int8 > SAL_CALL UnoDialogSkeleton::getImplementationId() throw(RuntimeException)
+ {
+ static ::cppu::OImplementationId* pId = NULL;
+ if ( !pId )
+ {
+ ::osl::MutexGuard aGuard( ::osl::Mutex::getGlobalMutex() );
+ if ( !pId )
+ {
+ static ::cppu::OImplementationId aId;
+ pId = &aId;
+ }
+ }
+ return pId->getImplementationId();
+ }
+
+ //--------------------------------------------------------------------
+ ::rtl::OUString SAL_CALL UnoDialogSkeleton::getImplementationName_static() throw(RuntimeException)
+ {
+ return ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.comp.svtools.workben.UnoDialogSkeleton" ) );
+ }
+
+ //--------------------------------------------------------------------
+ Sequence< ::rtl::OUString > SAL_CALL UnoDialogSkeleton::getSupportedServiceNames_static() throw(RuntimeException)
+ {
+ Sequence< ::rtl::OUString > aServices(1);
+ aServices[0] = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.ui.example.UnoDialogSample" ) );
+ return aServices;
+ }
+
+ //--------------------------------------------------------------------
+ ::rtl::OUString SAL_CALL UnoDialogSkeleton::getImplementationName() throw(RuntimeException)
+ {
+ return getImplementationName_static();
+ }
+
+ //--------------------------------------------------------------------
+ Sequence< ::rtl::OUString > SAL_CALL UnoDialogSkeleton::getSupportedServiceNames() throw(RuntimeException)
+ {
+ return getSupportedServiceNames_static();
+ }
+
+ //--------------------------------------------------------------------
+ Reference< XPropertySetInfo > SAL_CALL UnoDialogSkeleton::getPropertySetInfo() throw(RuntimeException)
+ {
+ return createPropertySetInfo( getInfoHelper() );
+ }
+
+ //--------------------------------------------------------------------
+ ::cppu::IPropertyArrayHelper& SAL_CALL UnoDialogSkeleton::getInfoHelper()
+ {
+ return *const_cast< UnoDialogSkeleton* >( this )->getArrayHelper();
+ }
+
+ //--------------------------------------------------------------------
+ ::cppu::IPropertyArrayHelper* UnoDialogSkeleton::createArrayHelper( ) const
+ {
+ Sequence< Property > aProps;
+ describeProperties( aProps );
+ return new ::cppu::OPropertyArrayHelper( aProps );
+ }
+
+ //--------------------------------------------------------------------
+ void createRegistryInfo_UnoDialogSkeleton()
+ {
+ static OAutoRegistration< UnoDialogSkeleton > aAutoRegistration;
+ }
+
+//........................................................................
+} // namespace udlg
+//........................................................................
diff --git a/svtools/workben/urange.cxx b/svtools/workben/urange.cxx
new file mode 100644
index 000000000000..aa5eba3d5543
--- /dev/null
+++ b/svtools/workben/urange.cxx
@@ -0,0 +1,220 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_svtools.hxx"
+
+/* Test the SfxUShortRanges class */
+
+#ifndef _SFXITEMS_HXX
+#include <sfxitems.hxx>
+#endif
+
+USHORT nValues1[] = {340,472,482,4288,4374,4890,5026,5356,5724,6130,6186,6666,9222,9764,9908,
+ 10110,11302,11748,11946,12298,12344,12642,12958,13076,13410,13496,14462,
+ 14480,14592,16292,16788,17102,17792,17844,18182,18396,18522,18974,19292,
+ 19630,20336,21808,21972,22382,23568,25156,26978,27158,27730,28014,28280,
+ 28774,29258,30920,30938,31356,31582,32194,32734,32893,33757,33911,34013,
+ 34565,35283,38895,40273,41281,42157,44429,44553,45825,46367,48163,48417,
+ 49501,50499,52105,53035,53715,53899,54015,54131,54865,55155,55507,56325,
+ 57045,59243,59833,59859,59951,60361,61387,62453,62703,63155,63517,63621,
+ 63895,0};
+
+USHORT nValues2[] = {2362,3100,3286,3548,4056,4224,5058,5198,5398,5990,6910,7034,7046,8574,8762,
+ 9360,9494,9720,11432,12900,12946,13626,13844,14344,15028,16306,16494,16972,
+ 17340,17504,17610,18270,18506,19832,19962,20356,20792,21146,21270,21722,
+ 22486,22752,23554,24148,24210,24910,25006,25500,26464,26952,27216,28394,
+ 28398,29602,31130,31642,31894,33343,34191,34593,34931,36221,36637,37287,
+ 37765,39853,41231,41711,41799,44213,44863,46491,47459,48707,48911,49353,
+ 49923,49997,50117,51357,51519,52043,52563,52727,53781,54065,54249,55333,
+ 56549,57361,57777,58165,58507,59229,59719,60379,60845,62697,63123,65169,0};
+
+#include <sv.hxx>
+
+SfxUShortRanges aRanges1a( nValues1 );
+SfxUShortRanges aRanges1b( nValues1 );
+SfxUShortRanges aRanges1c( nValues1 );
+SfxUShortRanges aRanges2( nValues2 );
+
+
+String aStr1;
+String aStr2;
+String aStr3;
+
+
+static String MakeString_Impl( SfxUShortRanges& aRanges )
+{
+ String aStr;
+
+ USHORT nPos = 0;
+ const USHORT* pRanges = ( const USHORT*)aRanges;
+
+ while( pRanges[ nPos ] != 0 )
+ {
+ aStr += pRanges[ nPos ];
+ aStr += " - ";
+ aStr += pRanges[ nPos+1 ];
+ aStr += ", ";
+ nPos += 2;
+ }
+
+
+ return aStr;
+}
+
+
+// -------------------------------------------------------------------------
+
+class MyApp : public Application
+{
+public:
+ void Main( int, char* [] );
+};
+
+// -------------------------------------------------------------------------
+
+class MyDialog : public ModalDialog
+{
+private:
+ GroupBox aGroup1;
+ MultiLineEdit aEdit1;
+ GroupBox aGroup2;
+ MultiLineEdit aEdit2;
+ GroupBox aGroup3;
+ MultiLineEdit aEdit3;
+ OKButton aBtn1;
+ CancelButton aBtn2;
+
+public:
+ MyDialog( Window* pParent );
+
+ void MouseButtonDown( const MouseEvent& rMEvt );
+};
+
+// -------------------------------------------------------------------------
+
+MyDialog::MyDialog( Window* pParent ) :
+ ModalDialog( pParent, WB_STDMODAL | WB_3DLOOK ),
+ aGroup1( this ),
+ aEdit1( this, WB_BORDER | WB_READONLY ),
+ aGroup2( this ),
+ aEdit2( this, WB_BORDER | WB_READONLY ),
+ aGroup3( this ),
+ aEdit3( this, WB_BORDER | WB_READONLY ),
+ aBtn1( this, WB_DEFBUTTON ),
+ aBtn2( this )
+{
+ aGroup1.SetText( "Union" );
+ aGroup1.SetPosSizePixel( Point( 5, 5 ), Size( 330, 80 ) );
+ aGroup1.Show();
+
+ aEdit1.SetPosSizePixel( Point ( 10, 20 ), Size( 320, 60 ) );
+ aEdit1.SetText( aStr1 );
+ aEdit1.Show();
+
+ aGroup2.SetText( "Difference" );
+ aGroup2.SetPosSizePixel( Point( 5, 90 ), Size( 330, 80 ) );
+ aGroup2.Show();
+
+ aEdit2.SetPosSizePixel( Point( 10, 105 ), Size( 320, 60 ) );
+ aEdit2.SetText( aStr2 );
+ aEdit2.Show();
+
+ aGroup3.SetText( "Intersection" );
+ aGroup3.SetPosSizePixel( Point( 5, 175 ), Size( 330, 80 ) );
+ aGroup3.Show();
+
+ aEdit3.SetPosSizePixel( Point( 10, 190 ), Size( 320, 60 ) );
+ aEdit3.SetText( aStr3 );
+ aEdit3.Show();
+
+ aBtn1.SetPosSizePixel( Point( 10, 310 ), Size( 100, 25 ) );
+ aBtn1.Show();
+
+ aBtn2.SetPosSizePixel( Point( 120, 310 ), Size( 100, 25 ) );
+ aBtn2.Show();
+
+ SetOutputSizePixel( Size( 340, 345 ) );
+ SetText( "SfxUShortRanges Test" );
+}
+
+// -------------------------------------------------------------------------
+
+void MyDialog::MouseButtonDown( const MouseEvent& rMEvt )
+{
+}
+
+
+// -------------------------------------------------------------------------
+
+class MyWin : public WorkWindow
+{
+public:
+ MyWin( Window* pParent, WinBits aWinStyle ) :
+ WorkWindow( pParent, aWinStyle )
+ {}
+
+ void MouseButtonDown( const MouseEvent& );
+};
+
+
+// -------------------------------------------------------------------------
+
+MyApp aMyApp;
+
+void MyApp::Main( int, char* [] )
+{
+ EnableSVLook();
+ SetAppFont( System::GetStandardFont( STDFONT_APP ) );
+
+ MyWin aMainWin( NULL, WB_APP | WB_STDWORK );
+ aMainWin.SetText( "SfxUShortRanges - Test" );
+ aMainWin.Show();
+
+ aRanges1a += aRanges2;
+ aRanges1b -= aRanges2;
+ aRanges1c /= aRanges2;
+
+ aStr1 = MakeString_Impl( aRanges1a );
+ aStr2 = MakeString_Impl( aRanges1b );
+ aStr3 = MakeString_Impl( aRanges1c );
+
+ Execute();
+}
+
+// -------------------------------------------------------------------------
+
+void MyWin::MouseButtonDown( const MouseEvent& rMEvt )
+{
+ if( rMEvt.IsLeft() )
+ {
+ MyDialog* pDialog = new MyDialog( this );
+ pDialog->Execute();
+ delete pDialog;
+ }
+}
+