2008/07/30 11:16:57 rt 1.2.6.4: Update license header. 2008/03/27 13:08:19 jcn 1.2.6.3: Substitute TAB by 4 spaces. 2008/03/26 13:42:01 cl 1.2.6.2: fixing warnings 2008/03/20 11:56:29 jcn 1.2.6.1: Update from http://lilypond.org/~janneke/vc/toolkit.git/.git 2008-03-20 Jan Nieuwenhuizen <janneke@gnu.org> * source/awt/vclxwindow.cxx: Fix compile warning. 2008-03-20 Jan Nieuwenhuizen <janneke@gnu.org> * util/makefile.mk: Revert obsolete VERSION addition. 2008-03-20 Jan Nieuwenhuizen <janneke@gnu.org> * source/controls/dialogcontrol.cxx, source/controls/unocontrol.cxx, source/helper/tkresmgr.cxx, util/defs/wntmsci11: Revert weird initial patch. 2008-03-20 Jan Nieuwenhuizen <janneke@gnu.org> * doc/layout/TODO: Doc update. 2008-03-20 Jan Nieuwenhuizen <janneke@gnu.org> * inc/layout/layout-post.hxx, inc/layout/layout-pre.hxx, inc/layout/layout.hxx, source/awt/vclxbutton.cxx, source/vclcompat/wbutton.cxx, workben/layout/recover.xml: Implement MoreButton. TODO: images. 2008-03-19 Jan Nieuwenhuizen <janneke@gnu.org> * source/vclcompat/wbutton.cxx: Remove redraw cruft, rename redrawAlready to redraw. 2008-03-19 Jan Nieuwenhuizen <janneke@gnu.org> * inc/layout/layout-post.hxx, source/vclcompat/wbutton.cxx: Step towards cleaner redraw. 2008-03-19 Jan Nieuwenhuizen <janneke@gnu.org> * inc/layout/layout-post.hxx, inc/layout/layout-pre.hxx, inc/layout/layout.hxx, source/awt/vclxbutton.cxx, source/awt/vclxbutton.hxx, source/layout/helper.cxx, source/vclcompat/wbutton.cxx, workben/layout/recover.cxx, workben/layout/recover.hxx: Extract AdvancedButton implementation from recover.cxx into new widget. 2008-03-19 Jan Nieuwenhuizen <janneke@gnu.org> * workben/layout/recover.cxx, workben/layout/recover.hxx, workben/layout/recover.xml: Update recover dialog, make advanced/simple switching work. 2008-03-14 Jan Nieuwenhuizen <janneke@gnu.org> * workben/layout/zoom.cxx: In test mode, enable everything. 2008-03-14 Jan Nieuwenhuizen <janneke@gnu.org> * workben/layout/localize.sdf: Manually add new translatable strings and translations for de, nl. 2008-03-14 Jan Nieuwenhuizen <janneke@gnu.org> * workben/layout/zoom.xml: Update zoom to have hbox of Zoom factor and View layout alongside each other. 2008-03-14 Jan Nieuwenhuizen <janneke@gnu.org> * workben/layout/zoom.cxx, workben/layout/zoom.hxx, workben/layout/zoom.xml: Merge upstream's zoom. 2008-03-14 Jan Nieuwenhuizen <janneke@gnu.org> * source/vclcompat/wbutton.cxx, source/vclcompat/wrapper.hxx: Nitpick, debugging aid. 2008-03-14 Jan Nieuwenhuizen <janneke@gnu.org> * inc/layout/layout.hxx, source/vclcompat/wrapper.cxx: Implement FixedLine.IsEnabled(). 2008-03-14 Jan Nieuwenhuizen <janneke@gnu.org> * util/makefile.mk: Build lib name fix. 2008-03-14 Jan Nieuwenhuizen <janneke@gnu.org> * inc/layout/layout-post.hxx, inc/layout/layout-pre.hxx, inc/layout/layout.hxx, source/vclcompat/wcontainer.cxx, workben/layout/recover.cxx, workben/layout/recover.hxx, workben/layout/recover.xml: Complete VBox/HBox wrappers. Not use them in recover, spacing still wrong. 2008-03-13 Jan Nieuwenhuizen <janneke@gnu.org> * doc/layout/TODO, workben/layout/recover.cxx, workben/layout/recover.hxx, workben/layout/recover.xml: More recovery dialog mockuping. 2008-03-13 Jan Nieuwenhuizen <janneke@gnu.org> * source/layout/box-base.cxx: Implement visibility of elements/containers better. 2008-03-13 Jan Nieuwenhuizen <janneke@gnu.org> * inc/layout/layout-post.hxx, inc/layout/layout-pre.hxx, inc/layout/layout.hxx, source/layout/helper.cxx, source/layout/import.cxx, source/layout/proplist.cxx, source/vclcompat/wbutton.cxx, source/vclcompat/wfield.cxx, source/vclcompat/wrapper.cxx, source/vclcompat/wrapper.hxx: Implement FixedImage. Needed for recovery dialog. 2008-02-28 Jan Nieuwenhuizen <janneke@gnu.org> * source/layout/box-base.hxx, workben/layout/editor.cxx: Give ChildData virtual distructor. 2008-02-28 Jan Nieuwenhuizen <janneke@gnu.org> * inc/layout/layout-post.hxx, inc/layout/layout-pre.hxx, inc/layout/layout.hxx, source/layout/helper.cxx, source/vclcompat/makefile.mk, source/vclcompat/wrapper.cxx, util/makefile.mk, workben/layout/makefile.mk, workben/layout/recover.cxx, workben/layout/recover.hxx, workben/layout/recover.xml, workben/layout/test.cxx: Stab at new recover dialog. 2008-02-28 Jan Nieuwenhuizen <janneke@gnu.org> * workben/layout/editor.cxx: Do not clear fresh container. Disable debug printing. 2008-02-27 Jan Nieuwenhuizen <janneke@gnu.org> * doc/layout/TODO, workben/layout/localize.sdf: Fix localize.sdf for wordcount. 2008-02-27 Jan Nieuwenhuizen <janneke@gnu.org> * inc/layout/layout-pre.hxx, source/layout/dialogbuttonhbox.cxx: Fix ID for displaying dialogs. 2008-02-27 Jan Nieuwenhuizen <janneke@gnu.org> * doc/layout/TODO, workben/layout/localize.sdf, workben/layout/wordcount.xml, workben/layout/zoom.xml: Add strings for all languages. 2008-02-27 Jan Nieuwenhuizen <janneke@gnu.org> * doc/layout/TODO, source/awt/vclxsplitter.cxx, source/awt/vclxsplitter.hxx, source/awt/vclxtabcontrol.cxx, source/awt/vclxtabcontrol.hxx, source/layout/box-base.cxx, source/layout/box-base.hxx, source/layout/box.cxx, source/layout/box.hxx, source/layout/container.cxx, source/layout/dialogbuttonhbox.cxx, source/layout/dialogbuttonhbox.hxx, source/layout/factory.cxx, source/layout/flow.cxx, source/layout/helper.cxx, source/layout/import.hxx, source/layout/makefile.mk, source/layout/proplist.cxx, source/layout/root.cxx, source/layout/table.cxx, source/layout/table.hxx, source/layout/timer.cxx, source/vclcompat/wcontainer.cxx, source/vclcompat/wfield.cxx, source/vclcompat/wrapper.cxx: Clean-up code duplication from layout: new Box_Base class implements addChild, removeChild, getChildren, getChildProperties for Box, Table, VCLXSplitter, VCLXTabControl. 2008-02-26 Jan Nieuwenhuizen <janneke@gnu.org> * doc/layout/TODO, source/layout/root.cxx: Document more fixmes. 2008-02-26 Jan Nieuwenhuizen <janneke@gnu.org> * doc/layout/TODO, source/layout/proplist.cxx: Remove m237 workaround. 2008-02-26 Jan Nieuwenhuizen <janneke@gnu.org> * source/layout/helper.cxx: More comment cleanups. 2008-02-26 Jan Nieuwenhuizen <janneke@gnu.org> * source/awt/vclxtabcontrol.cxx, source/layout/box.cxx, source/layout/container.cxx, source/vclcompat/wrapper.cxx: Commented-out code cleanups. 2008-02-26 Jan Nieuwenhuizen <janneke@gnu.org> * inc/layout/layout-post.hxx, inc/layout/layout-pre.hxx, inc/layout/layout.hxx, inc/layout/layoutcore.hxx, source/awt/forward.hxx, source/awt/vclxbutton.cxx, source/awt/vclxbutton.hxx, source/awt/vclxdialog.cxx, source/awt/vclxdialog.hxx, source/awt/vclxfixedline.cxx, source/awt/vclxfixedline.hxx, source/awt/vclxscroller.cxx, source/awt/vclxscroller.hxx, source/awt/vclxsplitter.cxx, source/awt/vclxsplitter.hxx, source/awt/vclxtabcontrol.cxx, source/awt/vclxtabcontrol.hxx, source/layout/bin.cxx, source/layout/bin.hxx, source/layout/box.cxx, source/layout/box.hxx, source/layout/container.cxx, source/layout/container.hxx, source/layout/dialogbuttonhbox.cxx, source/layout/dialogbuttonhbox.hxx, source/layout/factory.cxx, source/layout/factory.hxx, source/layout/flow.cxx, source/layout/flow.hxx, source/layout/helper.cxx, source/layout/helper.hxx, source/layout/import.cxx, source/layout/import.hxx, source/layout/makefile.mk, source/layout/precompiled_xmlscript.hxx, source/layout/proplist.cxx, source/layout/proplist.hxx, source/layout/root.cxx, source/layout/root.hxx, source/layout/table.cxx, source/layout/table.hxx, source/layout/timer.cxx, source/layout/timer.hxx, source/layout/translate.cxx, source/layout/translate.hxx, source/vclcompat/makefile.mk, source/vclcompat/wbutton.cxx, source/vclcompat/wcontainer.cxx, source/vclcompat/wfield.cxx, source/vclcompat/wrapper.cxx, source/vclcompat/wrapper.hxx, workben/layout/editor.cxx, workben/layout/editor.hxx, workben/layout/makefile.mk, workben/layout/simple-paragraph.cxx, workben/layout/simple-paragraph.hxx, workben/layout/test.cxx, workben/layout/uno.hxx, workben/layout/zoom_def.hxx: Add licence headers. 2008-02-26 Jan Nieuwenhuizen <janneke@gnu.org> * workben/layout/meekfile.mk: Junk meekfile.mk 2008-02-26 Jan Nieuwenhuizen <janneke@gnu.org> * doc/layout/TODO: Update TODO. 2008-02-26 Jan Nieuwenhuizen <janneke@gnu.org> * inc/toolkit/awt/vclxwindows.hxx, source/awt/vclxwindow.cxx, source/awt/vclxwindows.cxx: Move VCLXScrollBar's getMinimumSize() from VCLXWindow's switch to method. 2008-02-26 Jan Nieuwenhuizen <janneke@gnu.org> * inc/toolkit/awt/vclxwindows.hxx, source/awt/vclxwindow.cxx, source/awt/vclxwindows.cxx: Move VCLXMessageBox's getMinimumSize() from VCLXWindow's switch to method. 2008-02-26 Jan Nieuwenhuizen <janneke@gnu.org> * doc/layout/TODO, inc/toolkit/awt/vclxtopwindow.hxx, source/awt/vclxdialog.cxx, source/awt/vclxdialog.hxx, source/awt/vclxtopwindow.cxx: Remove code duplication from VCLXDialog. 2008-02-26 Jan Nieuwenhuizen <janneke@gnu.org> * source/awt/vclxdialog.cxx, source/vclcompat/wbutton.cxx, source/vclcompat/wcontainer.cxx, source/vclcompat/wrapper.hxx: Comment cleanup. 2008-02-21 Jan Nieuwenhuizen <janneke@gnu.org> * doc/layout/TODO, source/layout/helper.hxx, workben/layout/editor.cxx, workben/layout/wordcountdialog.cxx: Fix remaining SUN warnings. 2008-02-21 Jan Nieuwenhuizen <janneke@gnu.org> * inc/layout/layout.hxx, source/awt/vclxfixedline.hxx, source/layout/byteseq.cxx, source/layout/helper.hxx, source/layout/import.cxx, source/layout/makefile.mk, source/layout/proplist.cxx, source/layout/translate.hxx, source/vclcompat/wbutton.cxx, source/vclcompat/wcontainer.cxx, source/vclcompat/wfield.cxx, source/vclcompat/wrapper.cxx, source/vclcompat/wrapper.hxx, workben/layout/editor.cxx: Fix some sunstudio12 warnings. 2008-02-20 Jan Nieuwenhuizen <janneke@gnu.org> * doc/layout/TODO, source/awt/makefile.mk, source/awt/vclxbutton.cxx, source/awt/vclxbutton.hxx, source/awt/vclxproxy.cxx, source/awt/vclxproxy.hxx, source/layout/helper.cxx: Junk VCLXProxy. 2008-02-20 Jan Nieuwenhuizen <janneke@gnu.org> * inc/toolkit/awt/vclxwindows.hxx, inc/toolkit/helper/listenermultiplexer.hxx, source/awt/vclxbutton.cxx, source/awt/vclxbutton.hxx, source/awt/vclxtabcontrol.cxx, source/awt/vclxtabcontrol.hxx, source/layout/helper.cxx: Hello world on AWTVCLXCancelButton() label and images. 2008-02-20 Jan Nieuwenhuizen <janneke@gnu.org> * .gitignore, source/awt/forward.hxx, source/awt/makefile.mk, source/awt/vclxdialog.cxx, source/awt/vclxdialog.hxx, source/awt/vclxfixedline.cxx, source/awt/vclxfixedline.hxx, source/awt/vclxscroller.cxx, source/awt/vclxscroller.hxx, source/awt/vclxsplitter.cxx, source/awt/vclxsplitter.hxx, source/awt/vclxtabcontrol.cxx, source/awt/vclxtabcontrol.hxx, source/layout/makefile.mk, workben/layout/localize-de.sdf, workben/layout/localize-nl.sdf: Cleanup of includes, namespace in headers in awt.
628 lines
16 KiB
C++
628 lines
16 KiB
C++
/*************************************************************************
|
|
*
|
|
* 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: wfield.cxx,v $
|
|
*
|
|
* $Revision: 1.3 $
|
|
*
|
|
* 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 "wrapper.hxx"
|
|
|
|
#include <comphelper/processfactory.hxx>
|
|
#include <com/sun/star/awt/XMetricField.hpp>
|
|
#include <com/sun/star/awt/XCurrencyField.hpp>
|
|
#include <com/sun/star/awt/XTextComponent.hpp>
|
|
#include <com/sun/star/awt/XListBox.hpp>
|
|
#include <com/sun/star/awt/XComboBox.hpp>
|
|
#include <cppuhelper/implbase1.hxx>
|
|
#include <com/sun/star/awt/XActionListener.hpp>
|
|
#include <com/sun/star/awt/XItemListener.hpp>
|
|
|
|
using namespace ::com::sun::star;
|
|
|
|
namespace layout
|
|
{
|
|
|
|
class EditImpl : public ControlImpl,
|
|
public ::cppu::WeakImplHelper1< awt::XTextListener >
|
|
{
|
|
Link maModifyHdl;
|
|
public:
|
|
uno::Reference< awt::XTextComponent > mxEdit;
|
|
EditImpl( Context *pCtx, const PeerHandle &xPeer, Window *pWindow )
|
|
: ControlImpl( pCtx, xPeer, pWindow )
|
|
, mxEdit( xPeer, uno::UNO_QUERY )
|
|
{
|
|
}
|
|
|
|
virtual void SAL_CALL disposing( const css::lang::EventObject& /* Source */ )
|
|
throw (css::uno::RuntimeException)
|
|
{
|
|
SetModifyHdl( Link() );
|
|
mxEdit.clear();
|
|
}
|
|
|
|
void SetModifyHdl( const Link& rLink )
|
|
{
|
|
if ( !mxEdit.is() )
|
|
return;
|
|
maModifyHdl = rLink;
|
|
if ( !rLink )
|
|
mxEdit->removeTextListener( this );
|
|
else
|
|
mxEdit->addTextListener( this );
|
|
}
|
|
|
|
void SAL_CALL textChanged( const css::awt::TextEvent& /* rEvent */ )
|
|
throw (css::uno::RuntimeException)
|
|
{
|
|
maModifyHdl.Call( mpWindow );
|
|
}
|
|
};
|
|
|
|
void Edit::SetText( const XubString& rStr ) const
|
|
{
|
|
if ( !getImpl().mxEdit.is() )
|
|
return;
|
|
getImpl().mxEdit->setText( rStr );
|
|
}
|
|
|
|
XubString Edit::GetText() const
|
|
{
|
|
if ( !getImpl().mxEdit.is() )
|
|
return XubString();
|
|
return XubString( getImpl().mxEdit->getText());
|
|
}
|
|
|
|
void Edit::SetModifyHdl( const Link& rLink )
|
|
{
|
|
getImpl().SetModifyHdl( rLink );
|
|
}
|
|
|
|
DECL_CONSTRUCTOR_IMPLS( Edit, Control, "edit" );
|
|
DECL_GET_IMPL_IMPL( Edit );
|
|
|
|
// Window/Control/Edit/MultiLineEdit
|
|
class MultiLineEditImpl : public EditImpl
|
|
{
|
|
public:
|
|
MultiLineEditImpl( Context *pCtx, const PeerHandle &xPeer, Window *pWindow )
|
|
: EditImpl( pCtx, xPeer, pWindow )
|
|
{
|
|
}
|
|
};
|
|
|
|
DECL_CONSTRUCTOR_IMPLS( MultiLineEdit, Edit, "multilineedit" );
|
|
DECL_GET_IMPL_IMPL( MultiLineEdit );
|
|
|
|
// Window/Control/Edit/SpinField
|
|
class SpinFieldImpl : public EditImpl
|
|
{
|
|
public:
|
|
SpinFieldImpl( Context *pCtx, const PeerHandle &xPeer, Window *pWindow )
|
|
: EditImpl( pCtx, xPeer, pWindow )
|
|
{
|
|
}
|
|
};
|
|
|
|
DECL_CONSTRUCTOR_IMPLS( SpinField, Edit, "spinfield" );
|
|
|
|
// Window/Control/Edit/SpinField/NumericField
|
|
class NumericFieldImpl : public SpinFieldImpl
|
|
{
|
|
public:
|
|
NumericFieldImpl( Context *pCtx, const PeerHandle &xPeer, Window *pWindow )
|
|
: SpinFieldImpl( pCtx, xPeer, pWindow )
|
|
{
|
|
}
|
|
};
|
|
|
|
// Window/Control/Edit/SpinField/MetricField
|
|
class MetricFieldImpl : public SpinFieldImpl
|
|
{
|
|
public:
|
|
MetricFieldImpl( Context *pCtx, const PeerHandle &xPeer, Window *pWindow )
|
|
: SpinFieldImpl( pCtx, xPeer, pWindow )
|
|
{
|
|
}
|
|
};
|
|
|
|
DECL_GET_IMPL_IMPL( SpinField );
|
|
DECL_GET_IMPL_IMPL( NumericField );
|
|
DECL_GET_IMPL_IMPL( MetricField );
|
|
|
|
// FormatterBase
|
|
class FormatterBaseImpl
|
|
{
|
|
protected:
|
|
PeerHandle mxPeer;
|
|
public:
|
|
explicit FormatterBaseImpl( const PeerHandle &xPeer )
|
|
: mxPeer( xPeer )
|
|
{
|
|
};
|
|
};
|
|
|
|
class NumericFormatterImpl : public FormatterBaseImpl
|
|
{
|
|
public:
|
|
uno::Reference< awt::XCurrencyField > mxField;
|
|
explicit NumericFormatterImpl( const PeerHandle &xPeer )
|
|
: FormatterBaseImpl( xPeer )
|
|
, mxField( xPeer, uno::UNO_QUERY )
|
|
{
|
|
}
|
|
|
|
// FIXME: burn that CPU ! cut/paste from vclxwindows.cxx
|
|
double valueToDouble( sal_Int64 nValue )
|
|
{
|
|
sal_Int16 nDigits = mxField->getDecimalDigits();
|
|
double n = (double)nValue;
|
|
for ( sal_uInt16 d = 0; d < nDigits; d++ )
|
|
n /= 10;
|
|
return n;
|
|
} // FIXME: burn that CPU ! cut/paste from vclxwindows.cxx
|
|
sal_Int64 doubleToValue( double nValue )
|
|
{
|
|
sal_Int16 nDigits = mxField->getDecimalDigits();
|
|
double n = nValue;
|
|
for ( sal_uInt16 d = 0; d < nDigits; d++ )
|
|
n *= 10;
|
|
return (sal_Int64) n;
|
|
}
|
|
};
|
|
|
|
class MetricFormatterImpl : public FormatterBaseImpl
|
|
{
|
|
public:
|
|
uno::Reference< awt::XMetricField > mxField;
|
|
explicit MetricFormatterImpl( const PeerHandle &xPeer )
|
|
: FormatterBaseImpl( xPeer )
|
|
, mxField( xPeer, uno::UNO_QUERY )
|
|
{
|
|
}
|
|
};
|
|
|
|
// NumericFormatter
|
|
|
|
NumericFormatter::NumericFormatter( FormatterBaseImpl *pImpl )
|
|
: FormatterBase( pImpl )
|
|
{
|
|
}
|
|
|
|
NumericFormatterImpl& NumericFormatter::getFormatImpl() const
|
|
{
|
|
return *( static_cast<NumericFormatterImpl *>( mpFormatImpl ) );
|
|
}
|
|
|
|
#define SET_IMPL(vclmethod, idlmethod) \
|
|
void NumericFormatter::vclmethod( sal_Int64 nValue ) \
|
|
{ \
|
|
if ( !getFormatImpl().mxField.is() ) \
|
|
return; \
|
|
getFormatImpl().mxField->idlmethod( getFormatImpl().valueToDouble( nValue ) ); \
|
|
}
|
|
|
|
SET_IMPL( SetMin, setMin )
|
|
SET_IMPL( SetMax, setMax )
|
|
SET_IMPL( SetLast, setLast )
|
|
SET_IMPL( SetFirst, setFirst )
|
|
SET_IMPL( SetValue, setValue )
|
|
SET_IMPL( SetSpinSize, setSpinSize )
|
|
|
|
sal_Int64 NumericFormatter::GetValue() const
|
|
{
|
|
if ( !getFormatImpl().mxField.is() )
|
|
return 0;
|
|
return getFormatImpl().doubleToValue( getFormatImpl().mxField->getValue() );
|
|
}
|
|
|
|
#undef SET_IMPL
|
|
|
|
DECL_CONSTRUCTOR_IMPLS_2( NumericField, SpinField, NumericFormatter, "numericfield" );
|
|
|
|
// MetricFormatter
|
|
|
|
MetricFormatter::MetricFormatter( FormatterBaseImpl *pImpl )
|
|
: FormatterBase( pImpl )
|
|
{
|
|
}
|
|
MetricFormatterImpl& MetricFormatter::getFormatImpl() const
|
|
{ return *( static_cast<MetricFormatterImpl *>( mpFormatImpl ) ); }
|
|
|
|
#define MetricUnitVclToUno(a) ((sal_uInt16)(a))
|
|
|
|
#define SET_IMPL(vclmethod, idlmethod) \
|
|
void MetricFormatter::vclmethod( sal_Int64 nValue, FieldUnit nUnit ) \
|
|
{ \
|
|
if ( !getFormatImpl().mxField.is() ) \
|
|
return; \
|
|
getFormatImpl().mxField->idlmethod( nValue, MetricUnitVclToUno( nUnit ) ); \
|
|
}
|
|
|
|
SET_IMPL( SetMin, setMin )
|
|
SET_IMPL( SetMax, setMax )
|
|
SET_IMPL( SetLast, setLast )
|
|
SET_IMPL( SetFirst, setFirst )
|
|
SET_IMPL( SetValue, setValue )
|
|
|
|
#undef SET_IMPL
|
|
|
|
void MetricFormatter::SetSpinSize( sal_Int64 nValue )
|
|
{
|
|
if ( !getFormatImpl().mxField.is() )
|
|
return;
|
|
getFormatImpl().mxField->setSpinSize( nValue );
|
|
}
|
|
|
|
sal_Int64 MetricFormatter::GetValue( FieldUnit nUnit ) const
|
|
{
|
|
if ( !getFormatImpl().mxField.is() )
|
|
return 0;
|
|
return getFormatImpl().mxField->getValue( MetricUnitVclToUno( nUnit ) );
|
|
}
|
|
|
|
DECL_CONSTRUCTOR_IMPLS_2( MetricField, SpinField, MetricFormatter, "metricfield" );
|
|
|
|
// Window/Control/Edit/ComboBox
|
|
class ComboBoxImpl : public EditImpl,
|
|
public ::cppu::WeakImplHelper1< awt::XActionListener >,
|
|
public ::cppu::WeakImplHelper1< awt::XItemListener >
|
|
{
|
|
Link maClickHdl, maSelectHdl;
|
|
public:
|
|
uno::Reference< awt::XComboBox > mxComboBox;
|
|
ComboBoxImpl( Context *pCtx, const PeerHandle &xPeer, Window *pWindow )
|
|
: EditImpl( pCtx, xPeer, pWindow ),
|
|
mxComboBox( xPeer, uno::UNO_QUERY )
|
|
{
|
|
}
|
|
|
|
USHORT InsertEntry(const XubString& rStr, USHORT nPos)
|
|
{
|
|
if ( nPos == COMBOBOX_APPEND )
|
|
nPos = GetEntryCount();
|
|
mxComboBox->addItem( rtl::OUString( rStr ), nPos );
|
|
return nPos;
|
|
}
|
|
|
|
void RemoveEntry( USHORT nPos )
|
|
{
|
|
mxComboBox->removeItems( nPos, 1 );
|
|
}
|
|
|
|
USHORT GetEntryPos( const XubString& rStr ) const
|
|
{
|
|
uno::Sequence< rtl::OUString> aItems( mxComboBox->getItems() );
|
|
rtl::OUString rKey( rStr );
|
|
for ( unsigned int i = 0; aItems.getLength(); i++ )
|
|
{
|
|
if ( aItems[ i ] == rKey )
|
|
return sal::static_int_cast< USHORT >( i );
|
|
}
|
|
return COMBOBOX_ENTRY_NOTFOUND;
|
|
}
|
|
|
|
XubString GetEntry( USHORT nPos ) const
|
|
{
|
|
return XubString( mxComboBox->getItem( nPos ) );
|
|
}
|
|
|
|
USHORT GetEntryCount() const
|
|
{
|
|
return mxComboBox->getItemCount();
|
|
}
|
|
|
|
void SetClickHdl( const Link& rLink )
|
|
{
|
|
maClickHdl = rLink;
|
|
if ( !rLink )
|
|
mxComboBox->removeActionListener( this );
|
|
else
|
|
mxComboBox->addActionListener( this );
|
|
}
|
|
|
|
void SetSelectHdl( const Link& rLink )
|
|
{
|
|
maSelectHdl = rLink;
|
|
if ( !rLink )
|
|
mxComboBox->removeItemListener( this );
|
|
else
|
|
mxComboBox->addItemListener( this );
|
|
}
|
|
|
|
virtual void SAL_CALL disposing( const css::lang::EventObject& /* Source */ )
|
|
throw (css::uno::RuntimeException)
|
|
{
|
|
mxComboBox.clear();
|
|
}
|
|
|
|
virtual void SAL_CALL actionPerformed( const css::awt::ActionEvent& /* rEvent */ )
|
|
throw (css::uno::RuntimeException)
|
|
{
|
|
ComboBox* pComboBox = static_cast<ComboBox*>( mpWindow );
|
|
if ( !pComboBox )
|
|
return;
|
|
maClickHdl.Call( pComboBox );
|
|
}
|
|
|
|
virtual void SAL_CALL itemStateChanged( const css::awt::ItemEvent& /* rEvent */ )
|
|
throw (css::uno::RuntimeException)
|
|
{
|
|
ComboBox* pComboBox = static_cast<ComboBox*>( mpWindow );
|
|
if ( !pComboBox )
|
|
return;
|
|
maSelectHdl.Call( pComboBox );
|
|
}
|
|
};
|
|
|
|
USHORT ComboBox::InsertEntry( const XubString &rStr, USHORT nPos )
|
|
{
|
|
return getImpl().InsertEntry( rStr, nPos );
|
|
}
|
|
|
|
void ComboBox::RemoveEntry( const XubString& rStr )
|
|
{
|
|
getImpl().RemoveEntry( GetEntryPos( rStr ) );
|
|
}
|
|
|
|
void ComboBox::RemoveEntry( USHORT nPos )
|
|
{
|
|
getImpl().RemoveEntry( nPos );
|
|
}
|
|
|
|
void ComboBox::Clear()
|
|
{
|
|
uno::Sequence< rtl::OUString> aNoItems;
|
|
getImpl().setProperty( "StringItemList", uno::Any( aNoItems ) );
|
|
}
|
|
|
|
USHORT ComboBox::GetEntryPos( const XubString& rStr ) const
|
|
{
|
|
return getImpl().GetEntryPos( rStr );
|
|
}
|
|
|
|
XubString ComboBox::GetEntry( USHORT nPos ) const
|
|
{
|
|
rtl::OUString rItem = getImpl().mxComboBox->getItem( nPos );
|
|
return XubString( rItem );
|
|
}
|
|
|
|
USHORT ComboBox::GetEntryCount() const
|
|
{
|
|
return getImpl().GetEntryCount();
|
|
}
|
|
|
|
void ComboBox::SetClickHdl( const Link& rLink )
|
|
{
|
|
getImpl().SetClickHdl( rLink );
|
|
}
|
|
|
|
void ComboBox::SetSelectHdl( const Link& rLink )
|
|
{
|
|
getImpl().SetSelectHdl( rLink );
|
|
}
|
|
|
|
DECL_CONSTRUCTOR_IMPLS( ComboBox, Edit, "combobox" );
|
|
DECL_GET_IMPL_IMPL( ComboBox );
|
|
|
|
// Window/Control/ListBox
|
|
class ListBoxImpl : public ControlImpl,
|
|
public ::cppu::WeakImplHelper1< awt::XActionListener >,
|
|
public ::cppu::WeakImplHelper1< awt::XItemListener >
|
|
{
|
|
Link maClickHdl, maSelectHdl;
|
|
public:
|
|
uno::Reference< awt::XListBox > mxListBox;
|
|
ListBoxImpl( Context *pCtx, const PeerHandle &xPeer, Window *pWindow )
|
|
: ControlImpl( pCtx, xPeer, pWindow ),
|
|
mxListBox( xPeer, uno::UNO_QUERY )
|
|
{
|
|
}
|
|
|
|
USHORT InsertEntry(const XubString& rStr, USHORT nPos)
|
|
{
|
|
if ( nPos == LISTBOX_APPEND )
|
|
nPos = mxListBox->getItemCount();
|
|
mxListBox->addItem( rtl::OUString( rStr ), nPos );
|
|
return nPos;
|
|
}
|
|
|
|
void RemoveEntry( USHORT nPos )
|
|
{
|
|
mxListBox->removeItems( nPos, 1 );
|
|
}
|
|
|
|
USHORT RemoveEntry(const XubString& rStr, USHORT nPos)
|
|
{
|
|
if ( nPos == LISTBOX_APPEND )
|
|
nPos = mxListBox->getItemCount();
|
|
mxListBox->addItem( rtl::OUString( rStr ), nPos );
|
|
return nPos;
|
|
}
|
|
|
|
USHORT GetEntryPos( const XubString& rStr ) const
|
|
{
|
|
uno::Sequence< rtl::OUString> aItems( mxListBox->getItems() );
|
|
rtl::OUString rKey( rStr );
|
|
for ( unsigned int i = 0; aItems.getLength(); i++ )
|
|
{
|
|
if ( aItems[ i ] == rKey )
|
|
return sal::static_int_cast< USHORT >( i );
|
|
}
|
|
return LISTBOX_ENTRY_NOTFOUND;
|
|
}
|
|
|
|
XubString GetEntry( USHORT nPos ) const
|
|
{
|
|
return mxListBox->getItem( nPos );
|
|
}
|
|
|
|
USHORT GetEntryCount() const
|
|
{
|
|
return mxListBox->getItemCount();
|
|
}
|
|
|
|
void SelectEntryPos( USHORT nPos, BOOL bSelect )
|
|
{
|
|
mxListBox->selectItemPos( nPos, bSelect );
|
|
}
|
|
|
|
USHORT GetSelectEntryCount() const
|
|
{
|
|
return sal::static_int_cast< USHORT >( mxListBox->getSelectedItems().getLength() );
|
|
}
|
|
|
|
USHORT GetSelectEntryPos( USHORT nSelIndex ) const
|
|
{
|
|
USHORT nSelected = 0;
|
|
if ( mxListBox->isMutipleMode() )
|
|
{
|
|
uno::Sequence< short > aItems( mxListBox->getSelectedItemsPos() );
|
|
if ( nSelIndex < aItems.getLength() )
|
|
nSelected = aItems[ nSelIndex ];
|
|
}
|
|
else
|
|
nSelected = mxListBox->getSelectedItemPos();
|
|
return nSelected;
|
|
}
|
|
|
|
void SetClickHdl( const Link& rLink )
|
|
{
|
|
maClickHdl = rLink;
|
|
if ( !rLink )
|
|
mxListBox->removeActionListener( this );
|
|
else
|
|
mxListBox->addActionListener( this );
|
|
}
|
|
|
|
void SetSelectHdl( const Link& rLink )
|
|
{
|
|
maSelectHdl = rLink;
|
|
if ( !rLink )
|
|
mxListBox->removeItemListener( this );
|
|
else
|
|
mxListBox->addItemListener( this );
|
|
}
|
|
|
|
virtual void SAL_CALL disposing( const css::lang::EventObject& /* Source */ )
|
|
throw (css::uno::RuntimeException)
|
|
{
|
|
mxListBox.clear();
|
|
}
|
|
|
|
void SAL_CALL actionPerformed( const css::awt::ActionEvent& /* rEvent */ )
|
|
throw (css::uno::RuntimeException)
|
|
{
|
|
maClickHdl.Call( mpWindow );
|
|
}
|
|
|
|
void SAL_CALL itemStateChanged( const css::awt::ItemEvent& /* rEvent */ )
|
|
throw (css::uno::RuntimeException)
|
|
{
|
|
ListBox* pListBox = static_cast<ListBox*>( mpWindow );
|
|
if ( !pListBox )
|
|
return;
|
|
maSelectHdl.Call( pListBox );
|
|
}
|
|
};
|
|
|
|
USHORT ListBox::InsertEntry(const XubString& rStr, USHORT nPos)
|
|
{
|
|
return getImpl().InsertEntry(rStr, nPos);
|
|
}
|
|
|
|
void ListBox::RemoveEntry( USHORT nPos )
|
|
{
|
|
return getImpl().RemoveEntry( nPos );
|
|
}
|
|
|
|
void ListBox::RemoveEntry( const XubString& rStr )
|
|
{
|
|
return getImpl().RemoveEntry( GetEntryPos( rStr ) );
|
|
}
|
|
|
|
void ListBox::Clear()
|
|
{
|
|
uno::Sequence< rtl::OUString> aNoItems;
|
|
getImpl().setProperty( "StringItemList", uno::Any( aNoItems ) );
|
|
}
|
|
|
|
USHORT ListBox::GetEntryPos( const XubString& rStr ) const
|
|
{
|
|
return getImpl().GetEntryPos( rStr );
|
|
}
|
|
|
|
XubString ListBox::GetEntry( USHORT nPos ) const
|
|
{
|
|
return getImpl().GetEntry( nPos );
|
|
}
|
|
|
|
USHORT ListBox::GetEntryCount() const
|
|
{
|
|
return getImpl().GetEntryCount();
|
|
}
|
|
|
|
void ListBox::SelectEntryPos( USHORT nPos, BOOL bSelect )
|
|
{
|
|
getImpl().SelectEntryPos( nPos, bSelect );
|
|
}
|
|
|
|
void ListBox::SelectEntry( const XubString& rStr, BOOL bSelect )
|
|
{
|
|
SelectEntryPos( GetEntryPos( rStr ), bSelect );
|
|
}
|
|
|
|
USHORT ListBox::GetSelectEntryCount() const
|
|
{
|
|
return getImpl().GetSelectEntryCount();
|
|
}
|
|
|
|
USHORT ListBox::GetSelectEntryPos( USHORT nSelIndex ) const
|
|
{
|
|
return getImpl().GetSelectEntryPos( nSelIndex );
|
|
}
|
|
|
|
XubString ListBox::GetSelectEntry( USHORT nSelIndex ) const
|
|
{
|
|
return GetEntry( GetSelectEntryPos( nSelIndex ) );
|
|
}
|
|
|
|
void ListBox::SetSelectHdl( const Link& rLink )
|
|
{
|
|
getImpl().SetSelectHdl( rLink );
|
|
}
|
|
|
|
void ListBox::SetClickHdl( const Link& rLink )
|
|
{
|
|
getImpl().SetClickHdl( rLink );
|
|
}
|
|
|
|
DECL_CONSTRUCTOR_IMPLS( ListBox, Control, "listbox" );
|
|
DECL_GET_IMPL_IMPL( ListBox );
|
|
|
|
} // namespace layout
|