summaryrefslogtreecommitdiff
path: root/sd/source/ui/inc/framework/Pane.hxx
diff options
context:
space:
mode:
Diffstat (limited to 'sd/source/ui/inc/framework/Pane.hxx')
-rw-r--r--sd/source/ui/inc/framework/Pane.hxx175
1 files changed, 175 insertions, 0 deletions
diff --git a/sd/source/ui/inc/framework/Pane.hxx b/sd/source/ui/inc/framework/Pane.hxx
new file mode 100644
index 000000000000..f12f0ca118f0
--- /dev/null
+++ b/sd/source/ui/inc/framework/Pane.hxx
@@ -0,0 +1,175 @@
+/*************************************************************************
+ *
+ * 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_FRAMEWORK_PANE_HXX
+#define SD_FRAMEWORK_PANE_HXX
+
+#include "MutexOwner.hxx"
+
+#include <com/sun/star/drawing/framework/XPane.hpp>
+#include <com/sun/star/drawing/framework/XPane2.hpp>
+#include <com/sun/star/drawing/framework/TabBarButton.hpp>
+#include <com/sun/star/lang/XUnoTunnel.hpp>
+#include <cppuhelper/compbase3.hxx>
+#include <tools/link.hxx>
+#include <boost/shared_ptr.hpp>
+#include <boost/weak_ptr.hpp>
+
+class Window;
+
+namespace css = ::com::sun::star;
+namespace cssu = ::com::sun::star::uno;
+
+namespace {
+
+typedef ::cppu::WeakComponentImplHelper3 <
+ ::com::sun::star::drawing::framework::XPane,
+ ::com::sun::star::drawing::framework::XPane2,
+ ::com::sun::star::lang::XUnoTunnel
+ > PaneInterfaceBase;
+
+} // end of anonymous namespace.
+
+namespace sd { namespace framework {
+
+/** A pane is a wrapper for a window and possibly for a tab bar (for view
+ switching). Panes are unique resources.
+
+ This class has two responsibilities:
+ 1. It implements the XPane interface. This is the most important
+ interface of this class for API based views (of which there not that
+ many yet) because it gives access to the XWindow.
+ 2. It gives access to the underlying VCL Window by implementing the
+ XUnoTunnel interface. This is necessary at the moment and in the
+ foreseeable future because many parts of the Draw and Impress views rely
+ on direct access on the Window class.
+*/
+class Pane
+ : protected MutexOwner,
+ public PaneInterfaceBase
+{
+public:
+ /** Create a new Pane object that wrapps the given window.
+ @param rsPaneURL
+ The URL that is used by the configuration to identify the pane.
+ The given URL has to be valid.
+ @param pWindow
+ The VCL Window (usually this really is an sd::Window) that is
+ wrapped by the new Pane object. The given pointer must not be
+ NULL.
+ */
+ Pane (
+ const ::com::sun::star::uno::Reference<
+ com::sun::star::drawing::framework::XResourceId>& rxPaneId,
+ ::Window* pWindow)
+ throw ();
+ virtual ~Pane (void) throw();
+
+ virtual void SAL_CALL disposing (void);
+
+ static const ::com::sun::star::uno::Sequence<sal_Int8>& getUnoTunnelId (void);
+
+ /** This method is typically used together with the XUnoTunnel to obtain
+ a Window pointer from an XPane object.
+ */
+ virtual ::Window* GetWindow (void);
+
+
+ //----- XPane -------------------------------------------------------------
+
+ /** For a UNO API based implementation of a view this may the most
+ important method of this class because the view is only interested
+ in the window of the pane.
+ */
+ virtual cssu::Reference<css::awt::XWindow>
+ SAL_CALL getWindow (void)
+ throw (cssu::RuntimeException);
+
+ virtual cssu::Reference<css::rendering::XCanvas>
+ SAL_CALL getCanvas (void)
+ throw (cssu::RuntimeException);
+
+
+ //----- XPane2 -------------------------------------------------------------
+
+ virtual sal_Bool SAL_CALL isVisible (void)
+ throw (cssu::RuntimeException);
+
+ virtual void SAL_CALL setVisible (sal_Bool bIsVisible)
+ throw (cssu::RuntimeException);
+
+ virtual cssu::Reference<css::accessibility::XAccessible> SAL_CALL getAccessible (void)
+ throw (cssu::RuntimeException);
+
+ virtual void SAL_CALL setAccessible (
+ const cssu::Reference<css::accessibility::XAccessible>& rxAccessible)
+ throw (cssu::RuntimeException);
+
+
+ //----- XResource ---------------------------------------------------------
+
+ virtual ::com::sun::star::uno::Reference<com::sun::star::drawing::framework::XResourceId>
+ SAL_CALL getResourceId (void)
+ throw (::com::sun::star::uno::RuntimeException);
+
+ /** For the typical pane it makes no sense to be dislayed without a
+ view. Therefore this default implementation returns always <TRUE/>.
+ */
+ virtual sal_Bool SAL_CALL isAnchorOnly (void)
+ throw (com::sun::star::uno::RuntimeException);
+
+
+ //----- XUnoTunnel --------------------------------------------------------
+
+ virtual sal_Int64 SAL_CALL getSomething (const com::sun::star::uno::Sequence<sal_Int8>& rId)
+ throw (com::sun::star::uno::RuntimeException);
+
+
+protected:
+ ::com::sun::star::uno::Reference<com::sun::star::drawing::framework::XResourceId> mxPaneId;
+ ::Window* mpWindow;
+ ::com::sun::star::uno::Reference<com::sun::star::awt::XWindow> mxWindow;
+ ::com::sun::star::uno::Reference<com::sun::star::rendering::XCanvas> mxCanvas;
+
+ /** Overload this method, not getCanvas(), when you want to provide a
+ different canvas.
+ */
+ virtual ::com::sun::star::uno::Reference<com::sun::star::rendering::XCanvas>
+ CreateCanvas (void)
+ throw (::com::sun::star::uno::RuntimeException);
+
+ /** Throw DisposedException when the object has already been disposed or
+ is currently being disposed. Otherwise this method returns
+ normally.
+ */
+ void ThrowIfDisposed (void) const
+ throw (::com::sun::star::lang::DisposedException);
+};
+
+} } // end of namespace sd::framework
+
+#endif