/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /************************************************************************* * * 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 * * for a copy of the LGPLv3 License. * ************************************************************************/ #ifndef SD_VIEW_SHELL_FACTORY_HXX #define SD_VIEW_SHELL_FACTORY_HXX #include #include 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 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 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */