blob: bdb69f8845ef38763af78f74ee0d56bfa1bcca3a [file] [log] [blame]
/**************************************************************
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*
*************************************************************/
// MARKER(update_precomp.py): autogen include statement, do not remove
#include "precompiled_basctl.hxx"
#include "dlgedfac.hxx"
#include "dlgedobj.hxx"
#include <dlgeddef.hxx>
#include <com/sun/star/container/XNameContainer.hpp>
#include <com/sun/star/beans/PropertyValue.hpp>
#include <com/sun/star/beans/XPropertySet.hpp>
#include <com/sun/star/awt/ScrollBarOrientation.hpp>
using namespace ::com::sun::star;
//----------------------------------------------------------------------------
DlgEdFactory::DlgEdFactory()
{
SdrObjFactory::InsertMakeObjectHdl( LINK(this, DlgEdFactory, MakeObject) );
}
//----------------------------------------------------------------------------
DlgEdFactory::~DlgEdFactory()
{
SdrObjFactory::RemoveMakeObjectHdl( LINK(this, DlgEdFactory, MakeObject) );
}
//----------------------------------------------------------------------------
IMPL_LINK( DlgEdFactory, MakeObject, SdrObjFactory *, pObjFactory )
{
static sal_Bool bNeedsInit = sal_True;
static uno::Reference< lang::XMultiServiceFactory > xDialogSFact;
if( bNeedsInit )
{
uno::Reference< lang::XMultiServiceFactory > xMSF = ::comphelper::getProcessServiceFactory();
uno::Reference< container::XNameContainer > xC( xMSF->createInstance( ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.awt.UnoControlDialogModel" ) ) ), uno::UNO_QUERY );
if( xC.is() )
{
uno::Reference< lang::XMultiServiceFactory > xModFact( xC, uno::UNO_QUERY );
xDialogSFact = xModFact;
}
bNeedsInit = sal_False;
}
if( (pObjFactory->nInventor == DlgInventor) &&
(pObjFactory->nIdentifier >= OBJ_DLG_PUSHBUTTON) &&
(pObjFactory->nIdentifier <= OBJ_DLG_TREECONTROL) )
{
switch( pObjFactory->nIdentifier )
{
case OBJ_DLG_PUSHBUTTON:
pObjFactory->pNewObj = new DlgEdObj( ::rtl::OUString::createFromAscii("com.sun.star.awt.UnoControlButtonModel") , xDialogSFact );
break;
case OBJ_DLG_RADIOBUTTON:
pObjFactory->pNewObj = new DlgEdObj( ::rtl::OUString::createFromAscii("com.sun.star.awt.UnoControlRadioButtonModel") , xDialogSFact );
break;
case OBJ_DLG_CHECKBOX:
pObjFactory->pNewObj = new DlgEdObj( ::rtl::OUString::createFromAscii("com.sun.star.awt.UnoControlCheckBoxModel") , xDialogSFact );
break;
case OBJ_DLG_LISTBOX:
pObjFactory->pNewObj = new DlgEdObj( ::rtl::OUString::createFromAscii("com.sun.star.awt.UnoControlListBoxModel") , xDialogSFact );
break;
case OBJ_DLG_COMBOBOX:
{
DlgEdObj* pNew = new DlgEdObj( ::rtl::OUString::createFromAscii("com.sun.star.awt.UnoControlComboBoxModel") , xDialogSFact );
pObjFactory->pNewObj = pNew;
try
{
uno::Reference< beans::XPropertySet > xPSet(pNew->GetUnoControlModel(), uno::UNO_QUERY);
if (xPSet.is())
{
sal_Bool bB = sal_True;
xPSet->setPropertyValue( DLGED_PROP_DROPDOWN, uno::Any(&bB,::getBooleanCppuType()));
}
}
catch(...)
{
}
} break;
case OBJ_DLG_GROUPBOX:
pObjFactory->pNewObj = new DlgEdObj( ::rtl::OUString::createFromAscii("com.sun.star.awt.UnoControlGroupBoxModel") , xDialogSFact );
break;
case OBJ_DLG_EDIT:
pObjFactory->pNewObj = new DlgEdObj( ::rtl::OUString::createFromAscii("com.sun.star.awt.UnoControlEditModel") , xDialogSFact );
break;
case OBJ_DLG_FIXEDTEXT:
pObjFactory->pNewObj = new DlgEdObj( ::rtl::OUString::createFromAscii("com.sun.star.awt.UnoControlFixedTextModel") , xDialogSFact );
break;
case OBJ_DLG_IMAGECONTROL:
pObjFactory->pNewObj = new DlgEdObj( ::rtl::OUString::createFromAscii("com.sun.star.awt.UnoControlImageControlModel") , xDialogSFact );
break;
case OBJ_DLG_PROGRESSBAR:
pObjFactory->pNewObj = new DlgEdObj( ::rtl::OUString::createFromAscii("com.sun.star.awt.UnoControlProgressBarModel") , xDialogSFact );
break;
case OBJ_DLG_HSCROLLBAR:
pObjFactory->pNewObj = new DlgEdObj( ::rtl::OUString::createFromAscii("com.sun.star.awt.UnoControlScrollBarModel") , xDialogSFact );
break;
case OBJ_DLG_VSCROLLBAR:
{
DlgEdObj* pNew = new DlgEdObj( ::rtl::OUString::createFromAscii("com.sun.star.awt.UnoControlScrollBarModel") , xDialogSFact );
pObjFactory->pNewObj = pNew;
// set vertical orientation
try
{
uno::Reference< beans::XPropertySet > xPSet(pNew->GetUnoControlModel(), uno::UNO_QUERY);
if (xPSet.is())
{
uno::Any aValue;
aValue <<= (sal_Int32) ::com::sun::star::awt::ScrollBarOrientation::VERTICAL;
xPSet->setPropertyValue( DLGED_PROP_ORIENTATION, aValue );
}
}
catch(...)
{
}
} break;
case OBJ_DLG_HFIXEDLINE:
pObjFactory->pNewObj = new DlgEdObj( ::rtl::OUString::createFromAscii("com.sun.star.awt.UnoControlFixedLineModel") , xDialogSFact );
break;
case OBJ_DLG_VFIXEDLINE:
{
DlgEdObj* pNew = new DlgEdObj( ::rtl::OUString::createFromAscii("com.sun.star.awt.UnoControlFixedLineModel") , xDialogSFact );
pObjFactory->pNewObj = pNew;
// set vertical orientation
try
{
uno::Reference< beans::XPropertySet > xPSet(pNew->GetUnoControlModel(), uno::UNO_QUERY);
if (xPSet.is())
{
uno::Any aValue;
aValue <<= (sal_Int32) 1;
xPSet->setPropertyValue( DLGED_PROP_ORIENTATION, aValue );
}
}
catch(...)
{
}
} break;
case OBJ_DLG_DATEFIELD:
pObjFactory->pNewObj = new DlgEdObj( ::rtl::OUString::createFromAscii("com.sun.star.awt.UnoControlDateFieldModel") , xDialogSFact );
break;
case OBJ_DLG_TIMEFIELD:
pObjFactory->pNewObj = new DlgEdObj( ::rtl::OUString::createFromAscii("com.sun.star.awt.UnoControlTimeFieldModel") , xDialogSFact );
break;
case OBJ_DLG_NUMERICFIELD:
pObjFactory->pNewObj = new DlgEdObj( ::rtl::OUString::createFromAscii("com.sun.star.awt.UnoControlNumericFieldModel") , xDialogSFact );
break;
case OBJ_DLG_CURRENCYFIELD:
pObjFactory->pNewObj = new DlgEdObj( ::rtl::OUString::createFromAscii("com.sun.star.awt.UnoControlCurrencyFieldModel") , xDialogSFact );
break;
case OBJ_DLG_FORMATTEDFIELD:
pObjFactory->pNewObj = new DlgEdObj( ::rtl::OUString::createFromAscii("com.sun.star.awt.UnoControlFormattedFieldModel") , xDialogSFact );
break;
case OBJ_DLG_PATTERNFIELD:
pObjFactory->pNewObj = new DlgEdObj( ::rtl::OUString::createFromAscii("com.sun.star.awt.UnoControlPatternFieldModel") , xDialogSFact );
break;
case OBJ_DLG_FILECONTROL:
pObjFactory->pNewObj = new DlgEdObj( ::rtl::OUString::createFromAscii("com.sun.star.awt.UnoControlFileControlModel") , xDialogSFact );
break;
case OBJ_DLG_TREECONTROL:
DlgEdObj* pNew = new DlgEdObj( ::rtl::OUString::createFromAscii("com.sun.star.awt.tree.TreeControlModel") , xDialogSFact );
pObjFactory->pNewObj = pNew;
/*
try
{
uno::Reference< beans::XPropertySet > xPSet(pNew->GetUnoControlModel(), uno::UNO_QUERY);
if (xPSet.is())
{
// first create a data model for our tree control
Reference< XComponentContext > xComponentContext;
Reference< XPropertySet > xPropSet( xInterface, UNO_QUERY );
xPropSet->getPropertyValue( OUString::createFromAscii("DefaultContext") ) >>= xComponentContext;
// gets the service manager from the office
Reference< XMultiComponentFactory > xMultiComponentFactoryServer( xComponentContext->getServiceManager() );
// gets the TreeDataModel
Reference< XMutableTreeDataModel > xTreeDataModel;
xTreeDataModel = Reference< XMutableTreeDataModel >(
xMultiComponentFactoryServer->createInstanceWithContext(
OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.awt.tree.MutableTreeDataModel" ) ), xComponentContext ), UNO_QUERY_THROW );
// now fill it with some sample data
const OUString sRoot( RTL_CONSTASCII_USTRINGPARAM( "Root" ) );
Reference< XMutableTreeNode > xNode( mxTreeDataModel->createNode( sRoot, false ), UNO_QUERY_THROW );
xNode->setDataValue( sRoot );
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" ) ) );
const OUString sNode_1( RTL_CONSTASCII_USTRINGPARAM( "Node_1" ) );
Reference< XMutableTreeNode > xChildNode_1( mxTreeDataModel->createNode( sNode_1, true ), UNO_QUERY_THROW );
xChildNode_1->setDataValue( sNode_1 );
xChildNode_1->setExpandedGraphicURL( OUString( RTL_CONSTASCII_USTRINGPARAM( "private:graphicrepository/sd/res/triangle_down.png" ) ) );
xChildNode_1->setCollapsedGraphicURL( OUString( RTL_CONSTASCII_USTRINGPARAM( "private:graphicrepository/sd/res/triangle_right.png" ) ) );
xNode->appendChild( xChildNode_1 );
const OUString sNode_1_1( RTL_CONSTASCII_USTRINGPARAM( "Node_1_1" ) );
Reference< XMutableTreeNode > xChildNode_1_1( mxTreeDataModel->createNode( sNode_1_1, false ), UNO_QUERY_THROW );
xChildNode_1_1->setDataValue( sNode_1_1 );
xChildNode_1_1->setExpandedGraphicURL( OUString( RTL_CONSTASCII_USTRINGPARAM( "private:graphicrepository/sd/res/triangle_down.png" ) ) );
xChildNode_1_1->setCollapsedGraphicURL( OUString( RTL_CONSTASCII_USTRINGPARAM( "private:graphicrepository/sd/res/triangle_right.png" ) ) );
xChildNode_1->appendChild( xChildNode_1_1 );
const OUString sNode_1_1( RTL_CONSTASCII_USTRINGPARAM( "Node_2" ) );
Reference< XMutableTreeNode > xChildNode_2( mxTreeDataModel->createNode( sNode_2, false ), UNO_QUERY_THROW );
xChildNode_2->setDataValue( sNode_2 );
xChildNode_2->setNodeGraphicURL( OUString( RTL_CONSTASCII_USTRINGPARAM("private:graphicrepository/sw/imglst/nc20010.png") ) );
xNode->appendChild( xChildNode_2 );
xTreeDataModel->setRoot( xNode );
const OUString sDataModel( RTL_CONSTASCII_USTRINGPARAM( "DataModel" ) );
xPSet->setPropertyValue( sDataModel, xTreeDataModel );
}
}
catch(...)
{
}*/
break;
}
}
return 0;
}
//----------------------------------------------------------------------------