summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan Holesovsky <kendy@suse.cz>2010-09-14 11:49:46 +0200
committerJan Holesovsky <kendy@suse.cz>2010-09-14 13:34:35 +0200
commit41e00d403cbcea258168bf1a7650db28fd15c6a9 (patch)
treed0b20b95ba944885ca18a1f75bc59fa329a1248d
parent46ea2f6cb38536aa1b1a259af2145a581e19f6e8 (diff)
toolbar-decorations-svx-tables-columns.diff: "New table" widget rework.
And a small update of the "Columns" widget.
-rw-r--r--svx/source/tbxctrls/layctrl.cxx488
1 files changed, 218 insertions, 270 deletions
diff --git a/svx/source/tbxctrls/layctrl.cxx b/svx/source/tbxctrls/layctrl.cxx
index 0ffa7de0f3..2f2c1c9e03 100644
--- a/svx/source/tbxctrls/layctrl.cxx
+++ b/svx/source/tbxctrls/layctrl.cxx
@@ -32,9 +32,7 @@
#include <string> // HACK: prevent conflict between STLPORT and Workshop headers
#include <vcl/toolbox.hxx>
-#ifndef _SV_BUTTON_HXX //autogen
#include <vcl/button.hxx>
-#endif
#include <svl/intitem.hxx>
#include <sfx2/dispatch.hxx>
#include <sfx2/app.hxx>
@@ -56,51 +54,72 @@ SFX_IMPL_TOOLBOX_CONTROL(SvxColumnsToolBoxControl,SfxUInt16Item);
// class TableWindow -----------------------------------------------------
+const long TABLE_CELL_WIDTH = 15;
+const long TABLE_CELL_HEIGHT = 15;
+
+const long TABLE_CELLS_HORIZ = 10;
+const long TABLE_CELLS_VERT = 15;
+
+const long TABLE_POS_X = 2;
+const long TABLE_POS_Y = 2;
+
+const long TABLE_WIDTH = TABLE_POS_X + TABLE_CELLS_HORIZ*TABLE_CELL_WIDTH;
+const long TABLE_HEIGHT = TABLE_POS_Y + TABLE_CELLS_VERT*TABLE_CELL_HEIGHT;
+
class TableWindow : public SfxPopupWindow
{
private:
+ PushButton aTableButton;
::Color aLineColor;
- ::Color aHighlightLineColor;
::Color aFillColor;
::Color aHighlightFillColor;
+ ::Color aBackgroundColor;
long nCol;
long nLine;
- long nWidth;
- long nHeight;
- long nMX;
- long nMY;
- long nTextHeight;
BOOL bInitialKeyInput;
BOOL m_bMod1;
ToolBox& rTbx;
Reference< XFrame > mxFrame;
rtl::OUString maCommand;
- void UpdateSize_Impl( long nNewCol, long nNewLine);
+ DECL_LINK( SelectHdl, void * );
public:
TableWindow( USHORT nSlotId,
const rtl::OUString& rCmd,
+ const String& rText,
ToolBox& rParentTbx,
const Reference< XFrame >& rFrame );
~TableWindow();
void KeyInput( const KeyEvent& rKEvt );
virtual void MouseMove( const MouseEvent& rMEvt );
- virtual void MouseButtonDown( const MouseEvent& rMEvt );
virtual void MouseButtonUp( const MouseEvent& rMEvt );
virtual void Paint( const Rectangle& );
virtual void PopupModeEnd();
virtual SfxPopupWindow* Clone() const;
- USHORT GetColCount() const { return (USHORT)nCol; }
- USHORT GetLineCount() const { return (USHORT)nLine; }
+private:
+ void Update( long nNewCol, long nNewLine );
+ void TableDialog( const Sequence< PropertyValue >& rArgs );
+ void CloseAndShowTableDialog();
};
// -----------------------------------------------------------------------
-TableWindow::TableWindow( USHORT nSlotId, const rtl::OUString& rCmd, ToolBox& rParentTbx, const Reference< XFrame >& rFrame ) :
- SfxPopupWindow( nSlotId, rFrame, WB_SYSTEMWINDOW ),
+IMPL_LINK( TableWindow, SelectHdl, void *, EMPTYARG )
+{
+ CloseAndShowTableDialog();
+ return NULL;
+}
+
+// -----------------------------------------------------------------------
+
+TableWindow::TableWindow( USHORT nSlotId, const rtl::OUString& rCmd, const String& rText, ToolBox& rParentTbx, const Reference< XFrame >& rFrame ) :
+ SfxPopupWindow( nSlotId, rFrame, WinBits( WB_STDPOPUP ) ),
+ aTableButton( this ),
+ nCol( 0 ),
+ nLine( 0 ),
bInitialKeyInput(TRUE),
m_bMod1(FALSE),
rTbx(rParentTbx),
@@ -109,38 +128,41 @@ TableWindow::TableWindow( USHORT nSlotId, const rtl::OUString& rCmd, ToolBox& rP
{
const StyleSettings& rStyles = Application::GetSettings().GetStyleSettings();
svtools::ColorConfig aColorConfig;
- aLineColor = ::Color( aColorConfig.GetColorValue( svtools::FONTCOLOR ).nColor );
- aHighlightLineColor = rStyles.GetHighlightTextColor();
+
+ aLineColor = rStyles.GetShadowColor();
aFillColor = rStyles.GetWindowColor();
aHighlightFillColor = rStyles.GetHighlightColor();
+ aBackgroundColor = GetSettings().GetStyleSettings().GetFaceColor();
- nTextHeight = GetTextHeight()+1;
- SetBackground();
+ SetBackground( aBackgroundColor );
Font aFont = GetFont();
- aFont.SetColor( aLineColor );
- aFont.SetFillColor( aFillColor );
+ aFont.SetColor( ::Color( aColorConfig.GetColorValue( svtools::FONTCOLOR ).nColor ) );
+ aFont.SetFillColor( aBackgroundColor );
aFont.SetTransparent( FALSE );
SetFont( aFont );
- nCol = 0;
- nLine = 0;
- nWidth = 5;
- nHeight = 5;
+ SetText( rText );
- Size aLogicSize = LogicToPixel( Size( 55, 35 ), MapMode( MAP_10TH_MM ) );
- nMX = aLogicSize.Width();
- nMY = aLogicSize.Height();
- SetOutputSizePixel( Size( nMX*nWidth-1, nMY*nHeight-1+nTextHeight ) );
+ aTableButton.SetPosSizePixel( Point( TABLE_POS_X + TABLE_CELL_WIDTH, TABLE_HEIGHT + 5 ),
+ Size( TABLE_WIDTH - TABLE_POS_X - 2*TABLE_CELL_WIDTH, 24 ) );
+ aTableButton.SetText( String( SVX_RESSTR( RID_SVXSTR_MORE ) ) );
+ aTableButton.SetClickHdl( LINK( this, TableWindow, SelectHdl ) );
+ aTableButton.Show();
+
+ SetOutputSizePixel( Size( TABLE_WIDTH + 3, TABLE_HEIGHT + 33 ) );
}
+
// -----------------------------------------------------------------------
+
TableWindow::~TableWindow()
{
}
+
// -----------------------------------------------------------------------
SfxPopupWindow* TableWindow::Clone() const
{
- return new TableWindow( GetId(), maCommand, rTbx, mxFrame );
+ return new TableWindow( GetId(), maCommand, GetText(), rTbx, mxFrame );
}
// -----------------------------------------------------------------------
@@ -151,164 +173,64 @@ void TableWindow::MouseMove( const MouseEvent& rMEvt )
Point aPos = rMEvt.GetPosPixel();
Point aMousePos( aPos );
- if ( rMEvt.IsEnterWindow() )
- CaptureMouse();
- else if ( aMousePos.X() < 0 || aMousePos.Y() < 0 )
- {
- nCol = 0;
- nLine = 0;
- ReleaseMouse();
- Invalidate();
- return;
- }
-
- long nNewCol = 0;
- long nNewLine = 0;
-
- if ( aPos.X() > 0 )
- nNewCol = aPos.X() / nMX + 1;
- if ( aPos.Y() > 0 )
- nNewLine = aPos.Y() / nMY + 1;
-
- if ( nNewCol > 500 )
- nNewCol = 500;
- if ( nNewLine > 1000 )
- nNewLine = 1000;
-
- UpdateSize_Impl( nNewCol, nNewLine);
+ long nNewCol = ( aMousePos.X() - TABLE_POS_X + TABLE_CELL_WIDTH ) / TABLE_CELL_WIDTH;
+ long nNewLine = ( aMousePos.Y() - TABLE_POS_Y + TABLE_CELL_HEIGHT ) / TABLE_CELL_HEIGHT;
+ Update( nNewCol, nNewLine );
}
-/* -----------------------------15.05.2002 17:14------------------------------
- ---------------------------------------------------------------------------*/
-void TableWindow::UpdateSize_Impl( long nNewCol, long nNewLine)
-{
- Size aWinSize = GetOutputSizePixel();
- Point aWinPos = GetPosPixel();
- Point aMaxPos = OutputToScreenPixel( GetDesktopRectPixel().BottomRight() );
- if ( (nWidth <= nNewCol) || (nHeight < nNewLine) )
- {
- long nOff = 0;
-
- if ( nWidth <= nNewCol )
- {
- nWidth = nNewCol;
- nWidth++;
- }
- if ( nHeight <= nNewLine )
- {
- nHeight = nNewLine;
- nOff = 1;
- }
- while ( nWidth > 0 &&
- (short)(aWinPos.X()+(nMX*nWidth-1)) >= aMaxPos.X()-3 )
- nWidth--;
-
- while ( nHeight > 0 &&
- (short)(aWinPos.Y()+(nMY*nHeight-1+nTextHeight)) >=
- aMaxPos.Y()-3 )
- nHeight--;
-
- if ( nNewCol > nWidth )
- nNewCol = nWidth;
-
- if ( nNewLine > nHeight )
- nNewLine = nHeight;
-
- Size _aWinSize = GetOutputSizePixel();
- Invalidate( Rectangle( 0, _aWinSize.Height()-nTextHeight+2-nOff,
- _aWinSize.Width(), _aWinSize.Height() ) );
- SetOutputSizePixel( Size( nMX*nWidth-1, nMY*nHeight-1+nTextHeight ) );
- }
- long nMinCol = 0;
- long nMaxCol = 0;
- long nMinLine = 0;
- long nMaxLine = 0;
- if ( nNewCol < nCol )
- {
- nMinCol = nNewCol;
- nMaxCol = nCol;
- }
- else
- {
- nMinCol = nCol;
- nMaxCol = nNewCol;
- }
- if ( nNewLine < nLine )
- {
- nMinLine = nNewLine;
- nMaxLine = nLine;
- }
- else
- {
- nMinLine = nLine;
- nMaxLine = nNewLine;
- }
-
- if ( (nNewCol != nCol) || (nNewLine != nLine) )
- {
- Invalidate( Rectangle( 0, aWinSize.Height()-nTextHeight+2,
- aWinSize.Width(), aWinSize.Height() ) );
-
- if ( nNewCol != nCol )
- {
- Invalidate( Rectangle( nMinCol*nMX-1, 0, nMaxCol*nMX+1, nMaxLine*nMY ) );
- nCol = nNewCol;
- }
- if ( nNewLine != nLine )
- {
- Invalidate( Rectangle( 0, nMinLine*nMY-2, nMaxCol*nMX, nMaxLine*nMY+1 ) );
- nLine = nNewLine;
- }
- }
- Update();
-}
-/* -----------------------------15.05.2002 14:22------------------------------
+// -----------------------------------------------------------------------
- ---------------------------------------------------------------------------*/
void TableWindow::KeyInput( const KeyEvent& rKEvt )
{
- BOOL bHandled = FALSE;
+ bool bHandled = false;
USHORT nModifier = rKEvt.GetKeyCode().GetModifier();
USHORT nKey = rKEvt.GetKeyCode().GetCode();
- if(!nModifier)
+ if ( !nModifier )
{
- if( KEY_UP == nKey || KEY_DOWN == nKey ||
- KEY_LEFT == nKey || KEY_RIGHT == nKey ||
- KEY_ESCAPE == nKey ||KEY_RETURN == nKey )
+ bHandled = true;
+ long nNewCol = nCol;
+ long nNewLine = nLine;
+ switch(nKey)
{
- bHandled = TRUE;
- long nNewCol = nCol;
- long nNewLine = nLine;
- switch(nKey)
- {
- case KEY_UP :
- if(nNewLine > 1)
- {
- nNewLine--;
- break;
- }
- //no break;
- case KEY_ESCAPE:
- EndPopupMode( FLOATWIN_POPUPMODEEND_CANCEL);
+ case KEY_UP:
+ if ( nNewLine > 1 )
+ nNewLine--;
+ else
+ EndPopupMode( FLOATWIN_POPUPMODEEND_CANCEL );
break;
- case KEY_DOWN :
+ case KEY_DOWN:
+ if ( nNewLine < TABLE_CELLS_VERT )
nNewLine++;
+ else
+ CloseAndShowTableDialog();
break;
- case KEY_LEFT :
-
- if(nNewCol)
- nNewCol--;
+ case KEY_LEFT:
+ if ( nNewCol > 1 )
+ nNewCol--;
+ else
+ EndPopupMode( FLOATWIN_POPUPMODEEND_CANCEL );
break;
- case KEY_RIGHT :
+ case KEY_RIGHT:
+ if ( nNewCol < TABLE_CELLS_HORIZ )
nNewCol++;
+ else
+ CloseAndShowTableDialog();
break;
- case KEY_RETURN :
- if(IsMouseCaptured())
- ReleaseMouse();
- EndPopupMode(FLOATWIN_POPUPMODEEND_CLOSEALL );
+ case KEY_ESCAPE:
+ EndPopupMode( FLOATWIN_POPUPMODEEND_CANCEL );
break;
- }
+ case KEY_RETURN:
+ EndPopupMode( FLOATWIN_POPUPMODEEND_CLOSEALL );
+ break;
+ case KEY_TAB:
+ CloseAndShowTableDialog();
+ break;
+ default:
+ bHandled = false;
+ }
+ if ( bHandled )
+ {
//make sure that a table can initially be created
if(bInitialKeyInput)
{
@@ -318,27 +240,17 @@ void TableWindow::KeyInput( const KeyEvent& rKEvt )
if(!nNewCol)
nNewCol = 1;
}
- UpdateSize_Impl( nNewCol, nNewLine);
+ Update( nNewCol, nNewLine );
}
}
else if(KEY_MOD1 == nModifier && KEY_RETURN == nKey)
{
m_bMod1 = TRUE;
- if(IsMouseCaptured())
- ReleaseMouse();
- EndPopupMode(FLOATWIN_POPUPMODEEND_CLOSEALL );
+ EndPopupMode( FLOATWIN_POPUPMODEEND_CLOSEALL );
}
if(!bHandled)
SfxPopupWindow::KeyInput(rKEvt);
-
-}
-// -----------------------------------------------------------------------
-
-void TableWindow::MouseButtonDown( const MouseEvent& rMEvt )
-{
- SfxPopupWindow::MouseButtonDown( rMEvt );
- CaptureMouse();
}
// -----------------------------------------------------------------------
@@ -346,56 +258,45 @@ void TableWindow::MouseButtonDown( const MouseEvent& rMEvt )
void TableWindow::MouseButtonUp( const MouseEvent& rMEvt )
{
SfxPopupWindow::MouseButtonUp( rMEvt );
- ReleaseMouse();
-
- if ( IsInPopupMode() )
- EndPopupMode( FLOATWIN_POPUPMODEEND_CLOSEALL );
+ EndPopupMode( FLOATWIN_POPUPMODEEND_CLOSEALL );
}
// -----------------------------------------------------------------------
void TableWindow::Paint( const Rectangle& )
{
- long i;
- long nStart;
- Size aSize = GetOutputSizePixel();
+ const long nSelectionWidth = TABLE_POS_X + nCol*TABLE_CELL_WIDTH;
+ const long nSelectionHeight = TABLE_POS_Y + nLine*TABLE_CELL_HEIGHT;
- SetLineColor();
- SetFillColor( aHighlightFillColor );
- DrawRect( Rectangle( 0, 0, nCol*nMX-1, nLine*nMY-1 ) );
- SetFillColor( aFillColor );
- DrawRect( Rectangle( nCol*nMX-1, 0,
- aSize.Width(), aSize.Height()-nTextHeight+1 ) );
- DrawRect( Rectangle( 0, nLine*nMY-1,
- aSize.Width(), aSize.Height()-nTextHeight+1 ) );
-
- SetLineColor( aHighlightLineColor );
- for ( i = 1; i < nCol; i++ )
- DrawLine( Point( i*nMX-1, 0 ), Point( i*nMX-1, nLine*nMY-1 ) );
- for ( i = 1; i < nLine; i++ )
- DrawLine( Point( 0, i*nMY-1 ), Point( nCol*nMX-1, i*nMY-1 ) );
+ // the non-selected parts of the table
SetLineColor( aLineColor );
- for ( i = 1; i <= nWidth; i++ )
- {
- if ( i < nCol )
- nStart = nLine*nMY-1;
- else
- nStart = 0;
- DrawLine( Point( i*nMX-1, nStart ), Point( i*nMX-1, nHeight*nMY-1 ) );
- }
- for ( i = 1; i <= nHeight; i++ )
+ SetFillColor( aFillColor );
+ DrawRect( Rectangle( nSelectionWidth, TABLE_POS_Y, TABLE_WIDTH, nSelectionHeight ) );
+ DrawRect( Rectangle( TABLE_POS_X, nSelectionHeight, nSelectionWidth, TABLE_HEIGHT ) );
+ DrawRect( Rectangle( nSelectionWidth, nSelectionHeight, TABLE_WIDTH, TABLE_HEIGHT ) );
+
+ // the selection
+ if ( nCol > 0 && nLine > 0 )
{
- if ( i < nLine )
- nStart = nCol*nMX-1;
- else
- nStart = 0;
- DrawLine( Point( nStart, i*nMY-1 ), Point( nWidth*nMX-1, i*nMY-1 ) );
+ SetFillColor( aHighlightFillColor );
+ DrawRect( Rectangle( TABLE_POS_X, TABLE_POS_Y,
+ nSelectionWidth, nSelectionHeight ) );
}
- SetLineColor();
- String aText;
+ // lines inside of the table
+ SetLineColor( aLineColor );
+ for ( long i = 1; i < TABLE_CELLS_VERT; ++i )
+ DrawLine( Point( TABLE_POS_X, TABLE_POS_Y + i*TABLE_CELL_HEIGHT ),
+ Point( TABLE_WIDTH, TABLE_POS_Y + i*TABLE_CELL_HEIGHT ) );
+
+ for ( long i = 1; i < TABLE_CELLS_HORIZ; ++i )
+ DrawLine( Point( TABLE_POS_X + i*TABLE_CELL_WIDTH, TABLE_POS_Y ),
+ Point( TABLE_POS_X + i*TABLE_CELL_WIDTH, TABLE_HEIGHT ) );
+
+ // the text near the mouse cursor telling the table dimensions
if ( nCol && nLine )
{
+ String aText;
aText += String::CreateFromInt32( nCol );
aText.AppendAscii( " x " );
aText += String::CreateFromInt32( nLine );
@@ -405,22 +306,30 @@ void TableWindow::Paint( const Rectangle& )
aText += String(SVX_RESSTR(RID_SVXSTR_PAGES));
}
- }
- else
- aText = Button::GetStandardText( BUTTON_CANCEL );
- Size aTextSize( GetTextWidth( aText ), GetTextHeight() );
+ Size aSize = GetOutputSizePixel();
+ Size aTextSize( GetTextWidth( aText ), GetTextHeight() );
- Rectangle aClearRect( 0, aSize.Height()-nTextHeight+2, (aSize.Width()), aSize.Height() );
- DrawRect( aClearRect );
+ long nTextX = nSelectionWidth + TABLE_CELL_WIDTH;
+ long nTextY = nSelectionHeight + TABLE_CELL_HEIGHT;
+ const long nTipBorder = 2;
- // #i95350# force RTL output
- if( IsRTLEnabled() && nCol && nLine )
- aText.Insert(0x202D, 0);
- DrawText( Point( (aSize.Width() - aTextSize.Width()) / 2, aSize.Height() - nTextHeight + 2 ), aText );
+ if ( aTextSize.Width() + TABLE_POS_X + TABLE_CELL_WIDTH + 2*nTipBorder < nSelectionWidth )
+ nTextX = nSelectionWidth - TABLE_CELL_WIDTH - aTextSize.Width();
- SetLineColor( aLineColor );
- SetFillColor();
- DrawRect( Rectangle( Point(0,0), aSize ) );
+ if ( aTextSize.Height() + TABLE_POS_Y + TABLE_CELL_HEIGHT + 2*nTipBorder < nSelectionHeight )
+ nTextY = nSelectionHeight - TABLE_CELL_HEIGHT - aTextSize.Height();
+
+ SetLineColor( aLineColor );
+ SetFillColor( aBackgroundColor );
+ DrawRect( Rectangle ( nTextX - 2*nTipBorder, nTextY - 2*nTipBorder,
+ nTextX + aTextSize.Width() + nTipBorder, nTextY + aTextSize.Height() + nTipBorder ) );
+
+ // #i95350# force RTL output
+ if ( IsRTLEnabled() )
+ aText.Insert( 0x202D, 0 );
+
+ DrawText( Point( nTextX, nTextY ), aText );
+ }
}
// -----------------------------------------------------------------------
@@ -429,37 +338,71 @@ void TableWindow::PopupModeEnd()
{
if ( !IsPopupModeCanceled() && nCol && nLine )
{
- Window* pParent = rTbx.GetParent();
- USHORT nId = GetId();
- pParent->UserEvent(SVX_EVENT_COLUM_WINDOW_EXECUTE, reinterpret_cast<void*>(nId));
-
- Reference< XDispatchProvider > xDispatchProvider( mxFrame, UNO_QUERY );
- if ( xDispatchProvider.is() )
- {
- com::sun::star::util::URL aTargetURL;
- Reference < XURLTransformer > xTrans( ::comphelper::getProcessServiceFactory()->createInstance(
- rtl::OUString::createFromAscii("com.sun.star.util.URLTransformer" )),
- UNO_QUERY );
- aTargetURL.Complete = maCommand;
- xTrans->parseStrict( aTargetURL );
- Reference< XDispatch > xDispatch = xDispatchProvider->queryDispatch( aTargetURL, rtl::OUString(), 0 );
- if ( xDispatch.is() )
- {
- Sequence< PropertyValue > aArgs( 2 );
- aArgs[0].Name = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "Columns" ));
- aArgs[0].Value = makeAny( sal_Int16( nCol ));
- aArgs[1].Name = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "Rows" ));
- aArgs[1].Value = makeAny( sal_Int16( nLine ));
+ Sequence< PropertyValue > aArgs( 2 );
+ aArgs[0].Name = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "Columns" ));
+ aArgs[0].Value = makeAny( sal_Int16( nCol ));
+ aArgs[1].Name = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "Rows" ));
+ aArgs[1].Value = makeAny( sal_Int16( nLine ));
- xDispatch->dispatch( aTargetURL, aArgs );
- }
- }
+ TableDialog( aArgs );
}
- else if ( IsPopupModeCanceled() )
- ReleaseMouse();
+
SfxPopupWindow::PopupModeEnd();
}
+// -----------------------------------------------------------------------
+
+void TableWindow::Update( long nNewCol, long nNewLine )
+{
+ if ( nNewCol < 0 || nNewCol > TABLE_CELLS_HORIZ )
+ nNewCol = 0;
+
+ if ( nNewLine < 0 || nNewLine > TABLE_CELLS_VERT )
+ nNewLine = 0;
+
+ if ( nNewCol != nCol || nNewLine != nLine )
+ {
+ nCol = nNewCol;
+ nLine = nNewLine;
+ Invalidate( Rectangle( TABLE_POS_X, TABLE_POS_Y, TABLE_WIDTH, TABLE_HEIGHT ) );
+ }
+}
+
+// -----------------------------------------------------------------------
+
+void TableWindow::TableDialog( const Sequence< PropertyValue >& rArgs )
+{
+ Window* pParent = rTbx.GetParent();
+ USHORT nId = GetId();
+ pParent->UserEvent(SVX_EVENT_COLUM_WINDOW_EXECUTE, reinterpret_cast<void*>(nId));
+
+ Reference< XDispatchProvider > xDispatchProvider( mxFrame, UNO_QUERY );
+ if ( xDispatchProvider.is() )
+ {
+ com::sun::star::util::URL aTargetURL;
+ Reference < XURLTransformer > xTrans( ::comphelper::getProcessServiceFactory()->createInstance(
+ rtl::OUString::createFromAscii("com.sun.star.util.URLTransformer" )),
+ UNO_QUERY );
+ aTargetURL.Complete = maCommand;
+ xTrans->parseStrict( aTargetURL );
+
+ Reference< XDispatch > xDispatch = xDispatchProvider->queryDispatch( aTargetURL, rtl::OUString(), 0 );
+ if ( xDispatch.is() )
+ xDispatch->dispatch( aTargetURL, rArgs );
+ }
+}
+
+// -----------------------------------------------------------------------
+
+void TableWindow::CloseAndShowTableDialog()
+{
+ // close the toolbar tool
+ EndPopupMode( FLOATWIN_POPUPMODEEND_CANCEL );
+
+ // and open the table dialog instead
+ TableDialog( Sequence< PropertyValue >() );
+}
+
// class ColumnsWindow ---------------------------------------------------
class ColumnsWindow : public SfxPopupWindow
@@ -469,6 +412,7 @@ private:
::Color aHighlightLineColor;
::Color aFillColor;
::Color aHighlightFillColor;
+ ::Color aFaceColor;
long nCol;
long nWidth;
long nMX;
@@ -481,7 +425,7 @@ private:
void UpdateSize_Impl( long nNewCol );
public:
- ColumnsWindow( USHORT nId, const ::rtl::OUString& rCmd, ToolBox& rParentTbx, const Reference< XFrame >& rFrame );
+ ColumnsWindow( USHORT nId, const ::rtl::OUString& rCmd, const String& rText, ToolBox& rParentTbx, const Reference< XFrame >& rFrame );
void KeyInput( const KeyEvent& rKEvt );
virtual void MouseMove( const MouseEvent& rMEvt );
@@ -496,8 +440,8 @@ public:
// -----------------------------------------------------------------------
-ColumnsWindow::ColumnsWindow( USHORT nId, const ::rtl::OUString& rCmd, ToolBox& rParentTbx, const Reference< XFrame >& rFrame ) :
- SfxPopupWindow( nId, rFrame, WB_SYSTEMWINDOW ),
+ColumnsWindow::ColumnsWindow( USHORT nId, const ::rtl::OUString& rCmd, const String& rText, ToolBox& rParentTbx, const Reference< XFrame >& rFrame ) :
+ SfxPopupWindow( nId, rFrame, WB_STDPOPUP ),
bInitialKeyInput(TRUE),
m_bMod1(FALSE),
rTbx(rParentTbx),
@@ -510,18 +454,21 @@ ColumnsWindow::ColumnsWindow( USHORT nId, const ::rtl::OUString& rCmd, ToolBox&
aHighlightLineColor = rStyles.GetHighlightTextColor();
aFillColor = rStyles.GetWindowColor();
aHighlightFillColor = rStyles.GetHighlightColor();
+ aFaceColor = rStyles.GetFaceColor();
nTextHeight = GetTextHeight()+1;
SetBackground();
Font aFont( GetFont() );
aFont.SetColor( aLineColor );
- aFont.SetFillColor( aFillColor );
+ aFont.SetFillColor( aFaceColor );
aFont.SetTransparent( FALSE );
SetFont( aFont );
nCol = 0;
nWidth = 4;
+ SetText( rText );
+
Size aLogicSize = LogicToPixel( Size( 95, 155 ), MapMode( MAP_10TH_MM ) );
nMX = aLogicSize.Width();
SetOutputSizePixel( Size( nMX*nWidth-1, aLogicSize.Height()+nTextHeight ) );
@@ -532,7 +479,7 @@ ColumnsWindow::ColumnsWindow( USHORT nId, const ::rtl::OUString& rCmd, ToolBox&
SfxPopupWindow* ColumnsWindow::Clone() const
{
- return new ColumnsWindow( GetId(), maCommand, rTbx, mxFrame );
+ return new ColumnsWindow( GetId(), maCommand, GetText(), rTbx, mxFrame );
}
// -----------------------------------------------------------------------
@@ -730,12 +677,13 @@ void ColumnsWindow::Paint( const Rectangle& )
}
SetLineColor();
- SetFillColor( aFillColor );
+ SetFillColor( aFaceColor );
String aText;
if ( nCol )
aText = String( String::CreateFromInt32(nCol) );
else
- aText = Button::GetStandardText( BUTTON_CANCEL );
+ aText = Button::GetStandardText( BUTTON_CANCEL ).EraseAllChars( '~' );
+
Size aTextSize(GetTextWidth( aText ), GetTextHeight());
DrawText( Point( ( aSize.Width() - aTextSize.Width() ) / 2, aSize.Height() - nTextHeight + 2 ), aText );
@@ -744,7 +692,7 @@ void ColumnsWindow::Paint( const Rectangle& )
SetLineColor( aLineColor );
SetFillColor();
- DrawRect( Rectangle( Point(0,0), aSize ) );
+ DrawRect( Rectangle( 0, 0, aSize.Width() - 1, aSize.Height() - nTextHeight + 1 ) );
}
// -----------------------------------------------------------------------
@@ -802,7 +750,7 @@ SfxPopupWindow* SvxTableToolBoxControl::CreatePopupWindow()
if ( bEnabled )
{
ToolBox& rTbx = GetToolBox();
- TableWindow* pWin = new TableWindow( GetSlotId(), m_aCommandURL, rTbx, m_xFrame );
+ TableWindow* pWin = new TableWindow( GetSlotId(), m_aCommandURL, GetToolBox().GetItemText( GetId() ), rTbx, m_xFrame );
pWin->StartPopupMode( &rTbx, FLOATWIN_POPUPMODE_GRABFOCUS|FLOATWIN_POPUPMODE_NOKEYCLOSE );
SetPopupWindow( pWin );
return pWin;
@@ -815,7 +763,7 @@ SfxPopupWindow* SvxTableToolBoxControl::CreatePopupWindow()
SfxPopupWindow* SvxTableToolBoxControl::CreatePopupWindowCascading()
{
if ( bEnabled )
- return new TableWindow( GetSlotId(), m_aCommandURL, GetToolBox(), m_xFrame );
+ return new TableWindow( GetSlotId(), m_aCommandURL, GetToolBox().GetItemText( GetId() ), GetToolBox(), m_xFrame );
return 0;
}
@@ -868,7 +816,7 @@ SfxPopupWindow* SvxColumnsToolBoxControl::CreatePopupWindow()
ColumnsWindow* pWin = 0;
if(bEnabled)
{
- pWin = new ColumnsWindow( GetSlotId(), m_aCommandURL, GetToolBox(), m_xFrame );
+ pWin = new ColumnsWindow( GetSlotId(), m_aCommandURL, GetToolBox().GetItemText( GetId() ), GetToolBox(), m_xFrame );
pWin->StartPopupMode( &GetToolBox(),
FLOATWIN_POPUPMODE_GRABFOCUS|FLOATWIN_POPUPMODE_NOKEYCLOSE );
SetPopupWindow( pWin );
@@ -883,7 +831,7 @@ SfxPopupWindow* SvxColumnsToolBoxControl::CreatePopupWindowCascading()
ColumnsWindow* pWin = 0;
if(bEnabled)
{
- pWin = new ColumnsWindow( GetSlotId(), m_aCommandURL, GetToolBox(), m_xFrame );
+ pWin = new ColumnsWindow( GetSlotId(), m_aCommandURL, GetToolBox().GetItemText( GetId() ), GetToolBox(), m_xFrame );
}
return pWin;
}