summaryrefslogtreecommitdiff
path: root/dbaccess/source/ui/relationdesign/RTableConnection.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'dbaccess/source/ui/relationdesign/RTableConnection.cxx')
-rw-r--r--dbaccess/source/ui/relationdesign/RTableConnection.cxx157
1 files changed, 157 insertions, 0 deletions
diff --git a/dbaccess/source/ui/relationdesign/RTableConnection.cxx b/dbaccess/source/ui/relationdesign/RTableConnection.cxx
new file mode 100644
index 000000000000..da6495e91333
--- /dev/null
+++ b/dbaccess/source/ui/relationdesign/RTableConnection.cxx
@@ -0,0 +1,157 @@
+/*************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_dbaccess.hxx"
+#ifndef DBAUI_RTABLECONNECTION_HXX
+#include "RTableConnection.hxx"
+#endif
+#ifndef _TOOLS_DEBUG_HXX
+#include <tools/debug.hxx>
+#endif
+#ifndef DBAUI_RELATION_TABLEVIEW_HXX
+#include "RelationTableView.hxx"
+#endif
+#ifndef _SV_SVAPP_HXX
+#include <vcl/svapp.hxx>
+#endif
+#ifndef DBAUI_CONNECTIONLINE_HXX
+#include "ConnectionLine.hxx"
+#endif
+
+using namespace dbaui;
+//========================================================================
+// class ORelationTableConnection
+//========================================================================
+DBG_NAME(ORelationTableConnection)
+//------------------------------------------------------------------------
+ORelationTableConnection::ORelationTableConnection( ORelationTableView* pContainer,
+ const TTableConnectionData::value_type& pTabConnData )
+ :OTableConnection( pContainer, pTabConnData )
+{
+ DBG_CTOR(ORelationTableConnection,NULL);
+}
+
+//------------------------------------------------------------------------
+ORelationTableConnection::ORelationTableConnection( const ORelationTableConnection& rConn )
+ : OTableConnection( rConn )
+{
+ DBG_CTOR(ORelationTableConnection,NULL);
+ // keine eigenen Members, also reicht die Basisklassenfunktionalitaet
+}
+
+//------------------------------------------------------------------------
+ORelationTableConnection::~ORelationTableConnection()
+{
+ DBG_DTOR(ORelationTableConnection,NULL);
+}
+
+//------------------------------------------------------------------------
+ORelationTableConnection& ORelationTableConnection::operator=( const ORelationTableConnection& rConn )
+{
+ DBG_CHKTHIS(ORelationTableConnection,NULL);
+ // nicht dass es was aendern wuerde, da die Basisklasse das auch testet und ich keine eigenen Members zu kopieren habe
+ if (&rConn == this)
+ return *this;
+
+ OTableConnection::operator=( rConn );
+ return *this;
+}
+
+
+//------------------------------------------------------------------------
+void ORelationTableConnection::Draw( const Rectangle& rRect )
+{
+ DBG_CHKTHIS(ORelationTableConnection,NULL);
+ OTableConnection::Draw( rRect );
+ ORelationTableConnectionData* pData = static_cast< ORelationTableConnectionData* >(GetData().get());
+ if ( pData && (pData->GetCardinality() == CARDINAL_UNDEFINED) )
+ return;
+
+ //////////////////////////////////////////////////////////////////////
+ // Linien nach oberster Linie durchsuchen
+ Rectangle aBoundingRect;
+ long nTop = GetBoundingRect().Bottom();
+ long nTemp;
+
+ const OConnectionLine* pTopLine = NULL;
+ const ::std::vector<OConnectionLine*>* pConnLineList = GetConnLineList();
+ ::std::vector<OConnectionLine*>::const_iterator aIter = pConnLineList->begin();
+ ::std::vector<OConnectionLine*>::const_iterator aEnd = pConnLineList->end();
+ for(;aIter != aEnd;++aIter)
+ {
+ if( (*aIter)->IsValid() )
+ {
+ aBoundingRect = (*aIter)->GetBoundingRect();
+ nTemp = aBoundingRect.Top();
+ if( nTemp<nTop )
+ {
+ nTop = nTemp;
+ pTopLine = (*aIter);
+ }
+ }
+ }
+
+ //////////////////////////////////////////////////////////////////////
+ // Kardinalitaet antragen
+ if( !pTopLine )
+ return;
+
+ Rectangle aSourcePos = pTopLine->GetSourceTextPos();
+ Rectangle aDestPos = pTopLine->GetDestTextPos();
+
+ String aSourceText;
+ String aDestText;
+
+ switch( pData->GetCardinality() )
+ {
+ case CARDINAL_ONE_MANY:
+ aSourceText ='1';
+ aDestText ='n';
+ break;
+
+ case CARDINAL_MANY_ONE:
+ aSourceText ='n';
+ aDestText ='1';
+ break;
+
+ case CARDINAL_ONE_ONE:
+ aSourceText ='1';
+ aDestText ='1';
+ break;
+ }
+
+ if (IsSelected())
+ GetParent()->SetTextColor(Application::GetSettings().GetStyleSettings().GetHighlightColor());
+ else
+ GetParent()->SetTextColor(Application::GetSettings().GetStyleSettings().GetWindowTextColor());
+
+
+ GetParent()->DrawText( aSourcePos, aSourceText, TEXT_DRAW_CLIP | TEXT_DRAW_CENTER | TEXT_DRAW_BOTTOM);
+ GetParent()->DrawText( aDestPos, aDestText, TEXT_DRAW_CLIP | TEXT_DRAW_CENTER | TEXT_DRAW_BOTTOM);
+}
+// -----------------------------------------------------------------------------