summaryrefslogtreecommitdiff
path: root/sd/source/ui/inc/ShellFactory.hxx
diff options
context:
space:
mode:
Diffstat (limited to 'sd/source/ui/inc/ShellFactory.hxx')
-rw-r--r--sd/source/ui/inc/ShellFactory.hxx73
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