undoapi: outsourced locking functionality into a dedicated interface

This commit is contained in:
Frank Schoenheit [fs] 2010-10-27 12:23:53 +02:00
parent d4be10b3fa
commit b8ae0aaaf1
5 changed files with 92 additions and 38 deletions

View file

@ -28,10 +28,10 @@
#define __com_sun_star_document_XUndoManager_idl__
#include <com/sun/star/document/EmptyUndoStackException.idl>
#include <com/sun/star/document/NotLockedException.idl>
#include <com/sun/star/document/UndoContextNotClosedException.idl>
#include <com/sun/star/document/UndoFailedException.idl>
#include <com/sun/star/util/InvalidStateException.idl>
#include <com/sun/star/util/XLockable.idl>
#include <com/sun/star/lang/IllegalArgumentException.idl>
#include <com/sun/star/lang/WrappedTargetException.idl>
@ -71,12 +71,16 @@ interface XUndoManagerListener;
<a name="locking"></a>
<h3>Locking</h3>
<p>An Undo manager can be locked and unlocked, using the <member>lock</member> and <member>unlock</member> methods.
When it is locked, then every attempt to add an undo action, or to enter or leave an Undo context, will be silently
ignored.</p>
<p>An Undo manager can be locked and unlocked, using the <member>XLockable::lock</member> and
<member>XLockable::unlock</member> methods. When it is locked, then every attempt to add an undo action, or to
enter or leave an Undo context, will be silently ignored.</p>
*/
interface XUndoManager
{
/** allows <a href="#locking">locking</a> the undo manager.
*/
interface ::com::sun::star::util::XLockable;
/** enters a new undo context.
<p>A new undo action will be added to the undo stack, with the title given as <code>i_title</code>. As long
@ -303,36 +307,6 @@ interface XUndoManager
*/
void reset();
/** locks</a> the Undo manager
<p><code>lock</code> and <code>unlock</code> calls can be nested. However, they must be in
pairs. As long as there has been one more call to <code>lock</code> than to <code>unlock</code>, the
Undo manager is considered <a href="#locking">locked</a>.</p>
@see unlock
@see isLocked
*/
void lock();
/** unlocks the Undo manager
@throws ::com::sun::star::document::NotLockedException
if the Undo manager is not currently locked.
@see lock
@see isLocked
*/
void unlock()
raises ( ::com::sun::star::document::NotLockedException
);
/** determines whether the Undo manager is currently locked.
@see lock
@see unlock
*/
boolean isLocked();
/** adds a listener to be notified of changes in the Undo/Redo stacks.
*/
void addUndoManagerListener(

View file

@ -120,7 +120,6 @@ IDLFILES=\
XUndoManagerListener.idl \
XUndoManagerSupplier.idl \
UndoManagerEvent.idl \
NotLockedException.idl \
EmptyUndoStackException.idl \
UndoContextNotClosedException.idl \
UndoFailedException.idl \

View file

@ -24,14 +24,14 @@
*
************************************************************************/
#ifndef __com_sun_star_document_NotLockedException_idl__
#define __com_sun_star_document_NotLockedException_idl__
#ifndef __com_sun_star_util_NotLockedException_idl__
#define __com_sun_star_util_NotLockedException_idl__
#include <com/sun/star/util/InvalidStateException.idl>
//==================================================================================================================
module com { module sun { module star { module document {
module com { module sun { module star { module util {
//==================================================================================================================

View file

@ -0,0 +1,79 @@
/*************************************************************************
* 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 __com_sun_star_util_XLockable_idl__
#define __com_sun_star_util_XLockable_idl__
#include <com/sun/star/util/NotLockedException.idl>
//==================================================================================================================
module com { module sun { module star { module util {
//==================================================================================================================
/** allows locking a component
<p><code>lock</code> and <code>unlock</code> calls can be nested. However, they must be in
pairs. As long as there has been one more call to <code>lock</code> than to <code>unlock</code>, the
component is considered locked, which is reflected by <member>isLocked</member> returning <TRUE/>.</p>
*/
interface XLockable
{
/** locks</a> the component
@see unlock
@see isLocked
*/
void lock();
/** unlocks the component
@throws NotLockedException
if the component is not currently locked.
@see lock
@see isLocked
*/
void unlock()
raises ( NotLockedException
);
/** determines whether the component is currently locked.
@see lock
@see unlock
*/
boolean isLocked();
};
//==================================================================================================================
}; }; }; };
//==================================================================================================================
#endif

View file

@ -145,6 +145,8 @@ IDLFILES=\
UriAbbreviation.idl\
XJobManager.idl\
JobManager.idl\
XLockable.idl\
NotLockedException.idl\
# ------------------------------------------------------------------