1*b1cdbd2cSJim Jagielski /************************************************************** 2*b1cdbd2cSJim Jagielski * 3*b1cdbd2cSJim Jagielski * Licensed to the Apache Software Foundation (ASF) under one 4*b1cdbd2cSJim Jagielski * or more contributor license agreements. See the NOTICE file 5*b1cdbd2cSJim Jagielski * distributed with this work for additional information 6*b1cdbd2cSJim Jagielski * regarding copyright ownership. The ASF licenses this file 7*b1cdbd2cSJim Jagielski * to you under the Apache License, Version 2.0 (the 8*b1cdbd2cSJim Jagielski * "License"); you may not use this file except in compliance 9*b1cdbd2cSJim Jagielski * with the License. You may obtain a copy of the License at 10*b1cdbd2cSJim Jagielski * 11*b1cdbd2cSJim Jagielski * http://www.apache.org/licenses/LICENSE-2.0 12*b1cdbd2cSJim Jagielski * 13*b1cdbd2cSJim Jagielski * Unless required by applicable law or agreed to in writing, 14*b1cdbd2cSJim Jagielski * software distributed under the License is distributed on an 15*b1cdbd2cSJim Jagielski * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*b1cdbd2cSJim Jagielski * KIND, either express or implied. See the License for the 17*b1cdbd2cSJim Jagielski * specific language governing permissions and limitations 18*b1cdbd2cSJim Jagielski * under the License. 19*b1cdbd2cSJim Jagielski * 20*b1cdbd2cSJim Jagielski *************************************************************/ 21*b1cdbd2cSJim Jagielski 22*b1cdbd2cSJim Jagielski 23*b1cdbd2cSJim Jagielski #ifndef DBAUI_JOINTABLEVIEW_HXX 24*b1cdbd2cSJim Jagielski #define DBAUI_JOINTABLEVIEW_HXX 25*b1cdbd2cSJim Jagielski 26*b1cdbd2cSJim Jagielski #ifndef _SV_WINDOW_HXX 27*b1cdbd2cSJim Jagielski #include <vcl/window.hxx> 28*b1cdbd2cSJim Jagielski #endif 29*b1cdbd2cSJim Jagielski #ifndef _SV_TIMER_HXX 30*b1cdbd2cSJim Jagielski #include <vcl/timer.hxx> 31*b1cdbd2cSJim Jagielski #endif 32*b1cdbd2cSJim Jagielski #ifndef _SV_SCRBAR_HXX 33*b1cdbd2cSJim Jagielski #include <vcl/scrbar.hxx> 34*b1cdbd2cSJim Jagielski #endif 35*b1cdbd2cSJim Jagielski #ifndef _RTTI_HXX 36*b1cdbd2cSJim Jagielski #include <tools/rtti.hxx> 37*b1cdbd2cSJim Jagielski #endif 38*b1cdbd2cSJim Jagielski #ifndef _TRANSFER_HXX 39*b1cdbd2cSJim Jagielski #include <svtools/transfer.hxx> 40*b1cdbd2cSJim Jagielski #endif 41*b1cdbd2cSJim Jagielski 42*b1cdbd2cSJim Jagielski #ifndef _COMPHELPER_STLTYPES_HXX_ 43*b1cdbd2cSJim Jagielski #include <comphelper/stl_types.hxx> 44*b1cdbd2cSJim Jagielski #endif 45*b1cdbd2cSJim Jagielski #ifndef _DBACCESS_UI_CALLBACKS_HXX_ 46*b1cdbd2cSJim Jagielski #include "callbacks.hxx" 47*b1cdbd2cSJim Jagielski #endif 48*b1cdbd2cSJim Jagielski #include "TableConnectionData.hxx" 49*b1cdbd2cSJim Jagielski #include "TableWindowData.hxx" 50*b1cdbd2cSJim Jagielski #include <memory> 51*b1cdbd2cSJim Jagielski #include <vector> 52*b1cdbd2cSJim Jagielski 53*b1cdbd2cSJim Jagielski struct AcceptDropEvent; 54*b1cdbd2cSJim Jagielski struct ExecuteDropEvent; 55*b1cdbd2cSJim Jagielski class SfxUndoAction; 56*b1cdbd2cSJim Jagielski namespace dbaui 57*b1cdbd2cSJim Jagielski { 58*b1cdbd2cSJim Jagielski class OTableConnection; 59*b1cdbd2cSJim Jagielski class OTableWindow; 60*b1cdbd2cSJim Jagielski struct OJoinExchangeData; 61*b1cdbd2cSJim Jagielski class OJoinDesignView; 62*b1cdbd2cSJim Jagielski class OTableWindowData; 63*b1cdbd2cSJim Jagielski class OJoinDesignViewAccess; 64*b1cdbd2cSJim Jagielski 65*b1cdbd2cSJim Jagielski // this class conatins only the scrollbars to avoid that the tablewindows clip the scrollbars 66*b1cdbd2cSJim Jagielski class OJoinTableView; 67*b1cdbd2cSJim Jagielski class OScrollWindowHelper : public Window 68*b1cdbd2cSJim Jagielski { 69*b1cdbd2cSJim Jagielski ScrollBar m_aHScrollBar; 70*b1cdbd2cSJim Jagielski ScrollBar m_aVScrollBar; 71*b1cdbd2cSJim Jagielski Window* m_pCornerWindow; 72*b1cdbd2cSJim Jagielski OJoinTableView* m_pTableView; 73*b1cdbd2cSJim Jagielski 74*b1cdbd2cSJim Jagielski protected: 75*b1cdbd2cSJim Jagielski virtual void Resize(); 76*b1cdbd2cSJim Jagielski public: 77*b1cdbd2cSJim Jagielski OScrollWindowHelper( Window* pParent); 78*b1cdbd2cSJim Jagielski ~OScrollWindowHelper(); 79*b1cdbd2cSJim Jagielski 80*b1cdbd2cSJim Jagielski void setTableView(OJoinTableView* _pTableView); 81*b1cdbd2cSJim Jagielski 82*b1cdbd2cSJim Jagielski void resetRange(const Point& _aSize); 83*b1cdbd2cSJim Jagielski 84*b1cdbd2cSJim Jagielski // own methods GetHScrollBar()85*b1cdbd2cSJim Jagielski ScrollBar* GetHScrollBar() { return &m_aHScrollBar; } GetVScrollBar()86*b1cdbd2cSJim Jagielski ScrollBar* GetVScrollBar() { return &m_aVScrollBar; } 87*b1cdbd2cSJim Jagielski }; 88*b1cdbd2cSJim Jagielski 89*b1cdbd2cSJim Jagielski 90*b1cdbd2cSJim Jagielski class OJoinTableView : public Window 91*b1cdbd2cSJim Jagielski ,public IDragTransferableListener 92*b1cdbd2cSJim Jagielski ,public DropTargetHelper 93*b1cdbd2cSJim Jagielski { 94*b1cdbd2cSJim Jagielski friend class OJoinMoveTabWinUndoAct; 95*b1cdbd2cSJim Jagielski public: 96*b1cdbd2cSJim Jagielski DECLARE_STL_USTRINGACCESS_MAP(OTableWindow*,OTableWindowMap); 97*b1cdbd2cSJim Jagielski private: 98*b1cdbd2cSJim Jagielski OTableWindowMap m_aTableMap; 99*b1cdbd2cSJim Jagielski ::std::vector<OTableConnection*> m_vTableConnection; 100*b1cdbd2cSJim Jagielski 101*b1cdbd2cSJim Jagielski Timer m_aDragScrollTimer; 102*b1cdbd2cSJim Jagielski Rectangle m_aDragRect; 103*b1cdbd2cSJim Jagielski Rectangle m_aSizingRect; 104*b1cdbd2cSJim Jagielski Point m_aDragOffset; 105*b1cdbd2cSJim Jagielski Point m_aScrollOffset; 106*b1cdbd2cSJim Jagielski Point m_ptPrevDraggingPos; 107*b1cdbd2cSJim Jagielski Size m_aOutputSize; 108*b1cdbd2cSJim Jagielski 109*b1cdbd2cSJim Jagielski 110*b1cdbd2cSJim Jagielski OTableWindow* m_pDragWin; 111*b1cdbd2cSJim Jagielski OTableWindow* m_pSizingWin; 112*b1cdbd2cSJim Jagielski OTableConnection* m_pSelectedConn; 113*b1cdbd2cSJim Jagielski 114*b1cdbd2cSJim Jagielski 115*b1cdbd2cSJim Jagielski sal_Bool m_bTrackingInitiallyMoved; 116*b1cdbd2cSJim Jagielski 117*b1cdbd2cSJim Jagielski DECL_LINK(OnDragScrollTimer, void*); 118*b1cdbd2cSJim Jagielski 119*b1cdbd2cSJim Jagielski protected: 120*b1cdbd2cSJim Jagielski OTableWindow* m_pLastFocusTabWin; 121*b1cdbd2cSJim Jagielski OJoinDesignView* m_pView; 122*b1cdbd2cSJim Jagielski OJoinDesignViewAccess* m_pAccessible; 123*b1cdbd2cSJim Jagielski 124*b1cdbd2cSJim Jagielski public: 125*b1cdbd2cSJim Jagielski OJoinTableView( Window* pParent, OJoinDesignView* pView ); 126*b1cdbd2cSJim Jagielski virtual ~OJoinTableView(); 127*b1cdbd2cSJim Jagielski 128*b1cdbd2cSJim Jagielski // window override 129*b1cdbd2cSJim Jagielski virtual void StateChanged( StateChangedType nStateChange ); 130*b1cdbd2cSJim Jagielski virtual void GetFocus(); 131*b1cdbd2cSJim Jagielski virtual void LoseFocus(); 132*b1cdbd2cSJim Jagielski virtual void KeyInput( const KeyEvent& rEvt ); 133*b1cdbd2cSJim Jagielski // Accessibility 134*b1cdbd2cSJim Jagielski virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > CreateAccessible(); 135*b1cdbd2cSJim Jagielski 136*b1cdbd2cSJim Jagielski // own methods GetHScrollBar()137*b1cdbd2cSJim Jagielski ScrollBar* GetHScrollBar() { return static_cast<OScrollWindowHelper*>(GetParent())->GetHScrollBar(); } GetVScrollBar()138*b1cdbd2cSJim Jagielski ScrollBar* GetVScrollBar() { return static_cast<OScrollWindowHelper*>(GetParent())->GetVScrollBar(); } 139*b1cdbd2cSJim Jagielski DECL_LINK( ScrollHdl, ScrollBar* ); 140*b1cdbd2cSJim Jagielski 141*b1cdbd2cSJim Jagielski void DrawConnections( const Rectangle& rRect ); 142*b1cdbd2cSJim Jagielski void InvalidateConnections(); 143*b1cdbd2cSJim Jagielski 144*b1cdbd2cSJim Jagielski void BeginChildMove( OTableWindow* pTabWin, const Point& rMousePos ); 145*b1cdbd2cSJim Jagielski void BeginChildSizing( OTableWindow* pTabWin, const Pointer& rPointer ); 146*b1cdbd2cSJim Jagielski 147*b1cdbd2cSJim Jagielski void NotifyTitleClicked( OTableWindow* pTabWin, const Point rMousePos ); 148*b1cdbd2cSJim Jagielski 149*b1cdbd2cSJim Jagielski virtual void AddTabWin(const ::rtl::OUString& _rComposedName, const ::rtl::OUString& rWinName, sal_Bool bNewTable = sal_False); 150*b1cdbd2cSJim Jagielski virtual void RemoveTabWin( OTableWindow* pTabWin ); 151*b1cdbd2cSJim Jagielski 152*b1cdbd2cSJim Jagielski // alle TabWins verstecken (NICHT loeschen, sie werden in eine Undo-Action gepackt) 153*b1cdbd2cSJim Jagielski virtual void HideTabWins(); 154*b1cdbd2cSJim Jagielski 155*b1cdbd2cSJim Jagielski virtual void AddConnection(const OJoinExchangeData& jxdSource, const OJoinExchangeData& jxdDest) = 0; 156*b1cdbd2cSJim Jagielski 157*b1cdbd2cSJim Jagielski /** RemoveConnection allows to remove connections from join table view, it implies that the same as addConnection 158*b1cdbd2cSJim Jagielski 159*b1cdbd2cSJim Jagielski @param _pConnection 160*b1cdbd2cSJim Jagielski the connection which should be removed 161*b1cdbd2cSJim Jagielski @param _bDelete 162*b1cdbd2cSJim Jagielski when truie then the connection will be deleted 163*b1cdbd2cSJim Jagielski 164*b1cdbd2cSJim Jagielski @return an iterator to next valid connection, so it can be used in any loop 165*b1cdbd2cSJim Jagielski */ 166*b1cdbd2cSJim Jagielski virtual bool RemoveConnection(OTableConnection* _pConnection,sal_Bool _bDelete); 167*b1cdbd2cSJim Jagielski 168*b1cdbd2cSJim Jagielski /** allows to add new connections to join table view, it implies an invalidation of the features 169*b1cdbd2cSJim Jagielski ID_BROWSER_ADDTABLE and SID_RELATION_ADD_RELATION also the modified flag will be set to true 170*b1cdbd2cSJim Jagielski @param _pConnection 171*b1cdbd2cSJim Jagielski the connection which should be added 172*b1cdbd2cSJim Jagielski @param _bAddData 173*b1cdbd2cSJim Jagielski <TRUE/> when the data should also be appended 174*b1cdbd2cSJim Jagielski */ 175*b1cdbd2cSJim Jagielski void addConnection(OTableConnection* _pConnection,sal_Bool _bAddData = sal_True); 176*b1cdbd2cSJim Jagielski 177*b1cdbd2cSJim Jagielski sal_Bool ScrollPane( long nDelta, sal_Bool bHoriz, sal_Bool bPaintScrollBars ); 178*b1cdbd2cSJim Jagielski sal_uLong GetTabWinCount(); GetScrollOffset() const179*b1cdbd2cSJim Jagielski Point GetScrollOffset() const { return m_aScrollOffset; } 180*b1cdbd2cSJim Jagielski getDesignView() const181*b1cdbd2cSJim Jagielski OJoinDesignView* getDesignView() const { return m_pView; } 182*b1cdbd2cSJim Jagielski OTableWindow* GetTabWindow( const String& rName ); 183*b1cdbd2cSJim Jagielski GetSelectedConn()184*b1cdbd2cSJim Jagielski OTableConnection* GetSelectedConn() { return m_pSelectedConn; } 185*b1cdbd2cSJim Jagielski void DeselectConn(OTableConnection* pConn); // NULL ist ausdruecklich zugelassen, dann passiert nichts 186*b1cdbd2cSJim Jagielski void SelectConn(OTableConnection* pConn); 187*b1cdbd2cSJim Jagielski GetTabWinMap()188*b1cdbd2cSJim Jagielski OTableWindowMap* GetTabWinMap() { return &m_aTableMap; } GetTabWinMap() const189*b1cdbd2cSJim Jagielski const OTableWindowMap* GetTabWinMap() const { return &m_aTableMap; } 190*b1cdbd2cSJim Jagielski 191*b1cdbd2cSJim Jagielski /** gives a read only access to the connection vector 192*b1cdbd2cSJim Jagielski */ getTableConnections() const193*b1cdbd2cSJim Jagielski const ::std::vector<OTableConnection*>* getTableConnections() const { return &m_vTableConnection; } 194*b1cdbd2cSJim Jagielski 195*b1cdbd2cSJim Jagielski 196*b1cdbd2cSJim Jagielski sal_Bool ExistsAConn(const OTableWindow* pFromWin) const; 197*b1cdbd2cSJim Jagielski 198*b1cdbd2cSJim Jagielski /** getTableConnections searchs for all connections of a table 199*b1cdbd2cSJim Jagielski @param _pFromWin the table for which connections should be found 200*b1cdbd2cSJim Jagielski 201*b1cdbd2cSJim Jagielski @return an iterator which can be used to travel all connections of the table 202*b1cdbd2cSJim Jagielski */ 203*b1cdbd2cSJim Jagielski ::std::vector<OTableConnection*>::const_iterator getTableConnections(const OTableWindow* _pFromWin) const; 204*b1cdbd2cSJim Jagielski 205*b1cdbd2cSJim Jagielski /** getConnectionCount returns how many connection belongs to single table 206*b1cdbd2cSJim Jagielski @param _pFromWin the table for which connections should be found 207*b1cdbd2cSJim Jagielski 208*b1cdbd2cSJim Jagielski @return the count of connections wich belongs to this table 209*b1cdbd2cSJim Jagielski */ 210*b1cdbd2cSJim Jagielski sal_Int32 getConnectionCount(const OTableWindow* _pFromWin) const; 211*b1cdbd2cSJim Jagielski 212*b1cdbd2cSJim Jagielski OTableConnection* GetTabConn(const OTableWindow* pLhs,const OTableWindow* pRhs,bool _bSupressCrossOrNaturalJoin = false,const OTableConnection* _rpFirstAfter = NULL) const; 213*b1cdbd2cSJim Jagielski 214*b1cdbd2cSJim Jagielski // clears the window map and connection vector without destroying it 215*b1cdbd2cSJim Jagielski // that means teh data of the windows and connection will be untouched 216*b1cdbd2cSJim Jagielski void clearLayoutInformation(); 217*b1cdbd2cSJim Jagielski 218*b1cdbd2cSJim Jagielski // set the focus to that tab win which most recently had it (or to the first available one) 219*b1cdbd2cSJim Jagielski void GrabTabWinFocus(); 220*b1cdbd2cSJim Jagielski 221*b1cdbd2cSJim Jagielski // ReSync ist dazu gedacht, aus dem Dokument alle WinData und ConnData zu holen und entsprechend Wins und Conns anzulegen ReSync()222*b1cdbd2cSJim Jagielski virtual void ReSync() { } 223*b1cdbd2cSJim Jagielski // ClearAll implementiert ein hartes Loeschen, es werden alle Conns und alle Wins aus ihren jeweiligen Listen geloescht 224*b1cdbd2cSJim Jagielski // sowie die entsprechenden Datas aus dem Dokument ausgetragen 225*b1cdbd2cSJim Jagielski virtual void ClearAll(); 226*b1cdbd2cSJim Jagielski 227*b1cdbd2cSJim Jagielski // wird vom AddTabDlg benutzt, um festzustellen, ob noch Tabellen hinzugefuegt werden duerfen 228*b1cdbd2cSJim Jagielski virtual sal_Bool IsAddAllowed(); 229*b1cdbd2cSJim Jagielski virtual long PreNotify(NotifyEvent& rNEvt); 230*b1cdbd2cSJim Jagielski 231*b1cdbd2cSJim Jagielski // DnD stuff 232*b1cdbd2cSJim Jagielski virtual void StartDrag( sal_Int8 nAction, const Point& rPosPixel ); 233*b1cdbd2cSJim Jagielski virtual sal_Int8 AcceptDrop( const AcceptDropEvent& rEvt ); 234*b1cdbd2cSJim Jagielski virtual sal_Int8 ExecuteDrop( const ExecuteDropEvent& rEvt ); 235*b1cdbd2cSJim Jagielski 236*b1cdbd2cSJim Jagielski /** 237*b1cdbd2cSJim Jagielski can be used in derevied classes to make some special ui handling 238*b1cdbd2cSJim Jagielski after d&d 239*b1cdbd2cSJim Jagielski */ 240*b1cdbd2cSJim Jagielski virtual void lookForUiActivities(); 241*b1cdbd2cSJim Jagielski 242*b1cdbd2cSJim Jagielski // wird nach Verschieben/Groessenaenderung der TabWins aufgerufen (die Standardimplementation reicht die neuen Daten einfach 243*b1cdbd2cSJim Jagielski // an die Daten des Wins weiter) 244*b1cdbd2cSJim Jagielski virtual void TabWinMoved(OTableWindow* ptWhich, const Point& ptOldPosition); 245*b1cdbd2cSJim Jagielski // die Position ist "virtuell" : der Container hat sozusagen eine virtuelle Flaeche, von der immer nur ein bestimmter Bereich 246*b1cdbd2cSJim Jagielski // - der mittels der Scrollbar veraendert werden kann - zu sehen ist. Insbesondere hat ptOldPosition immer positive Koordinaten, 247*b1cdbd2cSJim Jagielski // auch wenn er einen Punkt oberhalb des aktuell sichtbaren Bereichs bezeichnet, dessen physische Ordinate eigentlich 248*b1cdbd2cSJim Jagielski // negativ ist. 249*b1cdbd2cSJim Jagielski virtual void TabWinSized(OTableWindow* ptWhich, const Point& ptOldPosition, const Size& szOldSize); 250*b1cdbd2cSJim Jagielski 251*b1cdbd2cSJim Jagielski void modified(); 252*b1cdbd2cSJim Jagielski 253*b1cdbd2cSJim Jagielski /** returns if teh given window is visible. 254*b1cdbd2cSJim Jagielski @param _rPoint 255*b1cdbd2cSJim Jagielski The Point to check 256*b1cdbd2cSJim Jagielski @param _rSize 257*b1cdbd2cSJim Jagielski The Size to be check as well 258*b1cdbd2cSJim Jagielski @return 259*b1cdbd2cSJim Jagielski <TRUE/> if the area is visible otherwise <FALSE/> 260*b1cdbd2cSJim Jagielski 261*b1cdbd2cSJim Jagielski */ 262*b1cdbd2cSJim Jagielski sal_Bool isMovementAllowed(const Point& _rPoint,const Size& _rSize); 263*b1cdbd2cSJim Jagielski getRealOutputSize() const264*b1cdbd2cSJim Jagielski Size getRealOutputSize() const { return m_aOutputSize; } 265*b1cdbd2cSJim Jagielski 266*b1cdbd2cSJim Jagielski 267*b1cdbd2cSJim Jagielski 268*b1cdbd2cSJim Jagielski virtual void EnsureVisible(const OTableWindow* _pWin); 269*b1cdbd2cSJim Jagielski virtual void EnsureVisible(const Point& _rPoint,const Size& _rSize); 270*b1cdbd2cSJim Jagielski 271*b1cdbd2cSJim Jagielski TTableWindowData::value_type createTableWindowData(const ::rtl::OUString& _rComposedName 272*b1cdbd2cSJim Jagielski ,const ::rtl::OUString& _sTableName 273*b1cdbd2cSJim Jagielski ,const ::rtl::OUString& _rWinName); 274*b1cdbd2cSJim Jagielski 275*b1cdbd2cSJim Jagielski protected: 276*b1cdbd2cSJim Jagielski virtual void MouseButtonUp( const MouseEvent& rEvt ); 277*b1cdbd2cSJim Jagielski virtual void MouseButtonDown( const MouseEvent& rEvt ); 278*b1cdbd2cSJim Jagielski virtual void Tracking( const TrackingEvent& rTEvt ); 279*b1cdbd2cSJim Jagielski virtual void Paint( const Rectangle& rRect ); 280*b1cdbd2cSJim Jagielski virtual void ConnDoubleClicked( OTableConnection* pConnection ); 281*b1cdbd2cSJim Jagielski virtual void SetDefaultTabWinPosSize( OTableWindow* pTabWin ); 282*b1cdbd2cSJim Jagielski virtual void DataChanged( const DataChangedEvent& rDCEvt ); 283*b1cdbd2cSJim Jagielski 284*b1cdbd2cSJim Jagielski virtual void Resize(); 285*b1cdbd2cSJim Jagielski 286*b1cdbd2cSJim Jagielski virtual void dragFinished( ); 287*b1cdbd2cSJim Jagielski // hier ist die Position (die sich waehrend des Sizings aendern kann) physisch, da waehrend des Sizens nicht gescrollt wird 288*b1cdbd2cSJim Jagielski virtual void Command(const CommandEvent& rEvt); 289*b1cdbd2cSJim Jagielski 290*b1cdbd2cSJim Jagielski virtual OTableWindowData* CreateImpl(const ::rtl::OUString& _rComposedName 291*b1cdbd2cSJim Jagielski ,const ::rtl::OUString& _sTableName 292*b1cdbd2cSJim Jagielski ,const ::rtl::OUString& _rWinName); 293*b1cdbd2cSJim Jagielski 294*b1cdbd2cSJim Jagielski /** factory method to create table windows 295*b1cdbd2cSJim Jagielski @param _pData 296*b1cdbd2cSJim Jagielski The data corresponding to the window. 297*b1cdbd2cSJim Jagielski @return 298*b1cdbd2cSJim Jagielski The new TableWindow 299*b1cdbd2cSJim Jagielski */ 300*b1cdbd2cSJim Jagielski virtual OTableWindow* createWindow(const TTableWindowData::value_type& _pData) = 0; 301*b1cdbd2cSJim Jagielski 302*b1cdbd2cSJim Jagielski /** determines whether the classes Init method should accept a query name, or only table names 303*b1cdbd2cSJim Jagielski */ 304*b1cdbd2cSJim Jagielski virtual bool allowQueries() const; 305*b1cdbd2cSJim Jagielski 306*b1cdbd2cSJim Jagielski /** called when init fails at the tablewindowdata because the m_xTable object could not provide columns, but no 307*b1cdbd2cSJim Jagielski exception was thrown. Expected to throw. 308*b1cdbd2cSJim Jagielski */ 309*b1cdbd2cSJim Jagielski virtual void onNoColumns_throw(); 310*b1cdbd2cSJim Jagielski 311*b1cdbd2cSJim Jagielski virtual bool supressCrossNaturalJoin(const TTableConnectionData::value_type& _pData) const; 312*b1cdbd2cSJim Jagielski 313*b1cdbd2cSJim Jagielski private: 314*b1cdbd2cSJim Jagielski void InitColors(); 315*b1cdbd2cSJim Jagielski sal_Bool ScrollWhileDragging(); 316*b1cdbd2cSJim Jagielski 317*b1cdbd2cSJim Jagielski /** executePopup opens the context menu to delate a connection 318*b1cdbd2cSJim Jagielski @param _aPos the position where the popup menu should appear 319*b1cdbd2cSJim Jagielski @param _pSelConnection the connection which should be deleted 320*b1cdbd2cSJim Jagielski */ 321*b1cdbd2cSJim Jagielski void executePopup(const Point& _aPos,OTableConnection* _pSelConnection); 322*b1cdbd2cSJim Jagielski 323*b1cdbd2cSJim Jagielski /** invalidateAndModify invalidates this window without children and 324*b1cdbd2cSJim Jagielski set the controller modified 325*b1cdbd2cSJim Jagielski @param _pAction a possible undo action to add at the controller 326*b1cdbd2cSJim Jagielski */ 327*b1cdbd2cSJim Jagielski void invalidateAndModify(SfxUndoAction *_pAction=NULL); 328*b1cdbd2cSJim Jagielski 329*b1cdbd2cSJim Jagielski private: 330*b1cdbd2cSJim Jagielski using Window::Scroll; 331*b1cdbd2cSJim Jagielski }; 332*b1cdbd2cSJim Jagielski } 333*b1cdbd2cSJim Jagielski #endif // DBAUI_JOINTABLEVIEW_HXX 334