summaryrefslogtreecommitdiff
path: root/fpicker/source/win32/filepicker/controlcommand.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'fpicker/source/win32/filepicker/controlcommand.cxx')
-rw-r--r--fpicker/source/win32/filepicker/controlcommand.cxx282
1 files changed, 282 insertions, 0 deletions
diff --git a/fpicker/source/win32/filepicker/controlcommand.cxx b/fpicker/source/win32/filepicker/controlcommand.cxx
new file mode 100644
index 000000000000..c66c76549f9d
--- /dev/null
+++ b/fpicker/source/win32/filepicker/controlcommand.cxx
@@ -0,0 +1,282 @@
+/*************************************************************************
+ *
+ * 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_fpicker.hxx"
+
+//------------------------------------------------------------------------
+// includes
+//------------------------------------------------------------------------
+#include "controlcommand.hxx"
+#include "controlcommandrequest.hxx"
+#include "controlcommandresult.hxx"
+#include "filepickerstate.hxx"
+
+//---------------------------------------------
+//
+//---------------------------------------------
+
+CControlCommand::CControlCommand( sal_Int16 aControlId ) :
+ m_NextCommand( NULL ),
+ m_aControlId( aControlId )
+{
+}
+
+//---------------------------------------------
+//
+//---------------------------------------------
+
+CControlCommand::~CControlCommand( )
+{
+}
+
+//---------------------------------------------
+//
+//---------------------------------------------
+
+CControlCommandResult* SAL_CALL CControlCommand::handleRequest( CControlCommandRequest* pRequest )
+{
+ // if the command does not support handleRequest, it should at least
+ // redirect the request to the next element
+ // so the base class implementation has to do it
+
+ OSL_ENSURE( pRequest, "inavlid parameter" );
+
+ CControlCommandResult* result;
+ CControlCommand* nextCommand;
+
+ nextCommand = getNextCommand( );
+ if ( nextCommand )
+ {
+ result = nextCommand->handleRequest( pRequest );
+ }
+ else
+ {
+ result = new CControlCommandResult();
+ }
+
+ return result;
+}
+
+//---------------------------------------------
+//
+//---------------------------------------------
+
+CControlCommand* SAL_CALL CControlCommand::getNextCommand( ) const
+{
+ return m_NextCommand;
+}
+
+//---------------------------------------------
+//
+//---------------------------------------------
+
+void SAL_CALL CControlCommand::setNextCommand( CControlCommand* nextCommand )
+{
+ m_NextCommand = nextCommand;
+}
+
+//---------------------------------------------
+//
+//---------------------------------------------
+
+sal_Int16 SAL_CALL CControlCommand::getControlId( ) const
+{
+ return m_aControlId;
+}
+
+
+//---------------------------------------------
+//
+//---------------------------------------------
+
+CValueControlCommand::CValueControlCommand(
+ sal_Int16 aControlId,
+ sal_Int16 aControlAction,
+ const ::com::sun::star::uno::Any& aValue ) :
+ CControlCommand( aControlId ),
+ m_aControlAction( aControlAction ),
+ m_aValue( aValue )
+{
+}
+
+//---------------------------------------------
+//
+//---------------------------------------------
+
+void SAL_CALL CValueControlCommand::exec( CFilePickerState* aFilePickerState )
+{
+ OSL_ENSURE( aFilePickerState, "empty reference" );
+
+ aFilePickerState->setValue(
+ getControlId( ),
+ m_aControlAction,
+ m_aValue );
+}
+
+//---------------------------------------------
+//
+//---------------------------------------------
+
+CControlCommandResult* SAL_CALL CValueControlCommand::handleRequest( CControlCommandRequest* aRequest )
+{
+ CValueControlCommandRequest* value_request =
+ dynamic_cast< CValueControlCommandRequest* >( aRequest );
+
+ CControlCommandResult* result;
+ CControlCommand* nextCommand;
+
+ if ( value_request &&
+ (value_request->getControlId( ) == getControlId( )) &&
+ (value_request->getControlAction( ) == m_aControlAction) )
+ {
+ result = new CValueCommandResult( sal_True, m_aValue );
+ }
+ else
+ {
+ nextCommand = getNextCommand( );
+ if ( nextCommand )
+ {
+ result = nextCommand->handleRequest( aRequest );
+ }
+ else
+ {
+ result = new CControlCommandResult( );
+ }
+ }
+
+ return result;
+}
+
+//---------------------------------------------
+//
+//---------------------------------------------
+
+sal_Int16 SAL_CALL CValueControlCommand::getControlAction( ) const
+{
+ return m_aControlAction;
+}
+
+//---------------------------------------------
+//
+//---------------------------------------------
+
+::com::sun::star::uno::Any SAL_CALL CValueControlCommand::getValue( ) const
+{
+ return m_aValue;
+}
+
+
+//---------------------------------------------
+//
+//---------------------------------------------
+
+CLabelControlCommand::CLabelControlCommand(
+ sal_Int16 aControlId,
+ const rtl::OUString& aLabel ) :
+ CControlCommand( aControlId ),
+ m_aLabel( aLabel )
+{
+}
+
+//---------------------------------------------
+//
+//---------------------------------------------
+
+void SAL_CALL CLabelControlCommand::exec( CFilePickerState* aFilePickerState )
+{
+ OSL_ENSURE( aFilePickerState, "empty reference" );
+
+ aFilePickerState->setLabel( getControlId( ), m_aLabel );
+}
+
+//---------------------------------------------
+//
+//---------------------------------------------
+
+CControlCommandResult* SAL_CALL CLabelControlCommand::handleRequest( CControlCommandRequest* aRequest )
+{
+ OSL_ENSURE( aRequest, "inavlid parameter" );
+
+ CControlCommandResult* result;
+ CControlCommand* nextCommand;
+
+ CValueControlCommandRequest* value_request =
+ dynamic_cast< CValueControlCommandRequest* >( aRequest );
+
+ if ( !value_request &&
+ (aRequest->getControlId( ) == getControlId( )) )
+ {
+ result = new CLabelCommandResult( sal_True, m_aLabel );
+ }
+ else
+ {
+ nextCommand = getNextCommand( );
+ if ( nextCommand )
+ {
+ result = nextCommand->handleRequest( aRequest );
+ }
+ else
+ {
+ result = new CControlCommandResult( );
+ }
+ }
+
+ return result;
+}
+
+//---------------------------------------------
+//
+//---------------------------------------------
+
+rtl::OUString SAL_CALL CLabelControlCommand::getLabel( ) const
+{
+ return m_aLabel;
+}
+
+//---------------------------------------------
+//
+//---------------------------------------------
+
+CEnableControlCommand::CEnableControlCommand(
+ sal_Int16 aControlId,
+ sal_Bool bEnable ) :
+ CControlCommand( aControlId ),
+ m_bEnable( bEnable )
+{
+}
+
+//---------------------------------------------
+//
+//---------------------------------------------
+
+void SAL_CALL CEnableControlCommand::exec( CFilePickerState* aFilePickerState )
+{
+ OSL_ENSURE( aFilePickerState, "empty reference" );
+
+ aFilePickerState->enableControl( getControlId( ), m_bEnable );
+}