diff options
Diffstat (limited to 'sd/source/ui/inc/ShellFactory.hxx')
-rw-r--r-- | sd/source/ui/inc/ShellFactory.hxx | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/sd/source/ui/inc/ShellFactory.hxx b/sd/source/ui/inc/ShellFactory.hxx new file mode 100644 index 000000000000..2da34539891f --- /dev/null +++ b/sd/source/ui/inc/ShellFactory.hxx @@ -0,0 +1,73 @@ +/************************************************************************* + * + * 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 SD_VIEW_SHELL_FACTORY_HXX +#define SD_VIEW_SHELL_FACTORY_HXX + +#include <sal/types.h> +#include <memory> + +class Window; + +namespace sd { + +class FrameView; +class ViewShell; + +typedef sal_Int32 ShellId; +// This shell id is a reserved value and does not specify any valid shell. +static const sal_Int32 snInvalidShellId = -1; + +template<class ShellType> +class ShellFactory +{ +public: + /** This abstract virtual class needs a destructor so that the + destructors of derived classes are called. + */ + virtual ~ShellFactory (void) {}; + + /** Create a new instance of a view shell for the given id that will + be stacked onto the given view shell base. + @return + Return the new view shell or NULL when a creation is not + possible. + */ + virtual ShellType* CreateShell ( + ShellId nId, + ::Window* pParentWindow, + FrameView* pFrameView = NULL) = 0; + + /** Tell the factory that a shell is no longer in use. It may destroy + it or put it for future use in a cache. + */ + virtual void ReleaseShell (ShellType* pShell) = 0; +}; + +} // end of namespace sd + +#endif |