summaryrefslogtreecommitdiff
path: root/framework/inc/classes/fwktabwindow.hxx
diff options
context:
space:
mode:
Diffstat (limited to 'framework/inc/classes/fwktabwindow.hxx')
-rw-r--r--framework/inc/classes/fwktabwindow.hxx135
1 files changed, 135 insertions, 0 deletions
diff --git a/framework/inc/classes/fwktabwindow.hxx b/framework/inc/classes/fwktabwindow.hxx
new file mode 100644
index 000000000000..7d01b3c6f9d8
--- /dev/null
+++ b/framework/inc/classes/fwktabwindow.hxx
@@ -0,0 +1,135 @@
+/*************************************************************************
+ *
+ * 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 FRAMEWORK_TABWINDOW_HXX
+#define FRAMEWORK_TABWINDOW_HXX
+
+#include <general.h>
+
+#include <vector>
+
+#include <com/sun/star/uno/Reference.h>
+#include <vcl/tabctrl.hxx>
+#include <vcl/tabdlg.hxx>
+#include <vcl/tabpage.hxx>
+#include <vcl/button.hxx>
+
+namespace com { namespace sun { namespace star {
+ namespace awt {
+ class XWindow;
+ class XContainerWindowProvider;
+ class XContainerWindowEventHandler; }
+ namespace beans {
+ struct NamedValue; }
+} } }
+
+namespace framework
+{
+
+class FwkTabControl : public TabControl
+{
+public:
+ FwkTabControl( Window* pParent, const ResId& rResId );
+
+ void BroadcastEvent( sal_uLong nEvent );
+};
+
+class FwkTabPage : public TabPage
+{
+private:
+ rtl::OUString m_sPageURL;
+ rtl::OUString m_sEventHdl;
+ css::uno::Reference< css::awt::XWindow > m_xPage;
+ css::uno::Reference< css::awt::XContainerWindowEventHandler > m_xEventHdl;
+ css::uno::Reference< css::awt::XContainerWindowProvider > m_xWinProvider;
+
+ void CreateDialog();
+ sal_Bool CallMethod( const rtl::OUString& rMethod );
+
+public:
+ FwkTabPage(
+ Window* pParent,
+ const rtl::OUString& rPageURL,
+ const css::uno::Reference< css::awt::XContainerWindowEventHandler >& rEventHdl,
+ const css::uno::Reference< css::awt::XContainerWindowProvider >& rProvider );
+
+ virtual ~FwkTabPage();
+
+ virtual void ActivatePage();
+ virtual void DeactivatePage();
+ virtual void Resize();
+};
+
+struct TabEntry
+{
+ sal_Int32 m_nIndex;
+ FwkTabPage* m_pPage;
+ ::rtl::OUString m_sPageURL;
+ css::uno::Reference< css::awt::XContainerWindowEventHandler > m_xEventHdl;
+
+ TabEntry() :
+ m_nIndex( -1 ), m_pPage( NULL ) {}
+
+ TabEntry( sal_Int32 nIndex, ::rtl::OUString sURL, const css::uno::Reference< css::awt::XContainerWindowEventHandler > & rEventHdl ) :
+ m_nIndex( nIndex ), m_pPage( NULL ), m_sPageURL( sURL ), m_xEventHdl( rEventHdl ) {}
+
+ ~TabEntry() { delete m_pPage; }
+};
+
+typedef std::vector< TabEntry* > TabEntryList;
+
+class FwkTabWindow : public Window
+{
+private:
+ FwkTabControl m_aTabCtrl;
+ TabEntryList m_TabList;
+
+ css::uno::Reference< css::awt::XContainerWindowProvider > m_xWinProvider;
+
+ void ClearEntryList();
+ TabEntry* FindEntry( sal_Int32 nIndex ) const;
+ bool RemoveEntry( sal_Int32 nIndex );
+
+ DECL_DLLPRIVATE_LINK( ActivatePageHdl, TabControl * );
+ DECL_DLLPRIVATE_LINK( DeactivatePageHdl, TabControl * );
+ DECL_DLLPRIVATE_LINK( CloseHdl, PushButton * );
+
+public:
+ FwkTabWindow( Window* pParent );
+ ~FwkTabWindow();
+
+ void AddEventListener( const Link& rEventListener );
+ void RemoveEventListener( const Link& rEventListener );
+ FwkTabPage* AddTabPage( sal_Int32 nIndex, const css::uno::Sequence< css::beans::NamedValue >& rProperties );
+ void ActivatePage( sal_Int32 nIndex );
+ void RemovePage( sal_Int32 nIndex );
+ virtual void Resize();
+};
+
+} // namespace framework
+
+#endif
+