summaryrefslogtreecommitdiff
path: root/dbaccess/source/ui/inc/QueryTableView.hxx
diff options
context:
space:
mode:
Diffstat (limited to 'dbaccess/source/ui/inc/QueryTableView.hxx')
-rw-r--r--dbaccess/source/ui/inc/QueryTableView.hxx149
1 files changed, 149 insertions, 0 deletions
diff --git a/dbaccess/source/ui/inc/QueryTableView.hxx b/dbaccess/source/ui/inc/QueryTableView.hxx
new file mode 100644
index 000000000000..ac122501f4fb
--- /dev/null
+++ b/dbaccess/source/ui/inc/QueryTableView.hxx
@@ -0,0 +1,149 @@
+/*************************************************************************
+ *
+ * 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 DBAUI_QUERYTABLEVIEW_HXX
+#define DBAUI_QUERYTABLEVIEW_HXX
+
+#ifndef DBAUI_JOINTABLEVIEW_HXX
+#include "JoinTableView.hxx"
+#endif
+#ifndef _COM_SUN_STAR_CONTAINER_XNAMEACCESS_HPP_
+#include <com/sun/star/container/XNameAccess.hpp>
+#endif
+#ifndef DBAUI_QUERYCONTROLLER_HXX
+#include "querycontroller.hxx"
+#endif
+
+namespace dbaui
+{
+
+ struct TabWinsChangeNotification
+ {
+ enum ACTION_TYPE { AT_ADDED_WIN, AT_REMOVED_WIN };
+ ACTION_TYPE atActionPerformed;
+ String strAffectedTable;
+
+ TabWinsChangeNotification(ACTION_TYPE at, const String& str) : atActionPerformed(at), strAffectedTable(str) { }
+ };
+
+ //========================================================================
+ class OQueryTabWinUndoAct;
+ class OQueryTabConnUndoAction;
+ class OQueryTableConnection;
+ class OQueryTableWindow;
+ class OQueryDesignView;
+ class OQueryTableView : public OJoinTableView
+ {
+ Link m_lnkTabWinsChangeHandler;
+
+ protected:
+ virtual void ConnDoubleClicked(OTableConnection* pConnection);
+ virtual void KeyInput(const KeyEvent& rEvt);
+
+ virtual OTableWindow* createWindow(const TTableWindowData::value_type& _pData);
+
+ /** called when init fails at the tablewindowdata because the m_xTable object could not provide columns, but no
+ exception was thrown. Expected to throw.
+ */
+ virtual void onNoColumns_throw();
+
+ virtual bool supressCrossNaturalJoin(const TTableConnectionData::value_type& _pData) const;
+ public:
+ OQueryTableView(Window* pParent,OQueryDesignView* pView);
+ virtual ~OQueryTableView();
+
+ // Basisklasse ueberschrieben : Fenster kreieren und loeschen
+ // (eigentlich nicht wirklich LOESCHEN, es geht in die Verantwortung einer UNDO-Action ueber)
+ virtual void AddTabWin( const ::rtl::OUString& _rTableName, const ::rtl::OUString& _rAliasName, BOOL bNewTable = FALSE );
+ virtual void RemoveTabWin(OTableWindow* pTabWin);
+
+ // und ein AddTabWin, das einen Alias vorgibt
+ void AddTabWin(const ::rtl::OUString& strDatabase, const ::rtl::OUString& strTableName, const ::rtl::OUString& strAlias, BOOL bNewTable = FALSE);
+ // TabWin suchen
+ OQueryTableWindow* FindTable(const String& rAliasName);
+ BOOL FindTableFromField(const String& rFieldName, OTableFieldDescRef& rInfo, USHORT& rCnt);
+
+ // Basisklasse ueberschrieben : Connections kreieren und loeschen
+ virtual void AddConnection(const OJoinExchangeData& jxdSource, const OJoinExchangeData& jxdDest);
+
+ virtual bool RemoveConnection( OTableConnection* _pConn ,sal_Bool _bDelete);
+
+ // Transfer von Connections von/zu einer UndoAction
+ void GetConnection(OQueryTableConnection* pConn);
+ // Einfuegen einer Connection in meine Struktur
+ void DropConnection(OQueryTableConnection* pConn);
+ // Entfernen einer Connection aus meiner Struktur
+
+ // das resultiert effektiv in einem voelligen Leeren des Abfrageentwurfs, da alle Fenster versteckt werden, und dabei
+ // natuerlich alle Connections an diesen Fenstern und alle Abfrage-Spalten, die auf diesen Tabellen basierten.
+
+ // TabWin anzeigen oder verstecken (NICHT kreieren oder loeschen)
+ BOOL ShowTabWin(OQueryTableWindow* pTabWin, OQueryTabWinUndoAct* pUndoAction,sal_Bool _bAppend);
+ void HideTabWin(OQueryTableWindow* pTabWin, OQueryTabWinUndoAct* pUndoAction);
+
+ // Sichbarkeit eines TabWins sicherstellen (+ Invalidieren der Connections)
+ virtual void EnsureVisible(const OTableWindow* _pWin);
+
+ // wieviel Tabellen mit einem bestimmten Namen habe ich schon ?
+ sal_Int32 CountTableAlias(const String& rName, sal_Int32& rMax);
+
+ // ein Feld einfuegen (wird einfach an das Elter weitergereicht
+ void InsertField(const OTableFieldDescRef& rInfo);
+
+ // alles (TabWins, Connections) neu aufbauen (PRECONDITION : vorher wurde ClearAll gerufen)
+ virtual void ReSync();
+ // alles (TabWins, Connections) loeschen, und zwar hart, es erfolgen also keinerlei Notifications
+ virtual void ClearAll();
+
+ // wird vom AddTabDlg benutzt, um festzustellen, ob noch Tabellen hinzugefuegt werden duerfen
+ //virtual BOOL IsAddAllowed();
+
+ // eine neu Connection bekanntgeben und einfuegen lassen, wenn nicht schon existent
+ void NotifyTabConnection(const OQueryTableConnection& rNewConn, BOOL _bCreateUndoAction = TRUE);
+
+ Link SetTabWinsChangeHandler(const Link& lnk) { Link lnkRet = m_lnkTabWinsChangeHandler; m_lnkTabWinsChangeHandler = lnk; return lnkRet; }
+ // der Handler bekommt einen Zeiger auf eine TabWinsChangeNotification-Struktur
+
+ BOOL ExistsAVisitedConn(const OQueryTableWindow* pFrom) const;
+
+ virtual OTableWindowData* CreateImpl(const ::rtl::OUString& _rComposedName
+ ,const ::rtl::OUString& _sTableName
+ ,const ::rtl::OUString& _rWinName);
+
+ /** createNewConnection opens the join dialog and allows to create a new join connection
+ */
+ void createNewConnection();
+
+ private:
+ using OJoinTableView::EnsureVisible;
+ };
+}
+#endif // DBAUI_QUERYTABLEVIEW_HXX
+
+
+
+
+