summaryrefslogtreecommitdiff
path: root/forms/source/component/Grid.cxx
diff options
context:
space:
mode:
authorFrank Schönheit <fs@openoffice.org>2001-05-18 06:22:41 +0000
committerFrank Schönheit <fs@openoffice.org>2001-05-18 06:22:41 +0000
commit10d78ec7c8c4b27ec0b5cfc0bd09b366efcf41de (patch)
treeb8a7a084237383a7a9452b52f1207f823b478e73 /forms/source/component/Grid.cxx
parent033a4d7e7ec8f00c0d5e95ed806f8f1e3b820c66 (diff)
#86558# when inserting a column while the form is already loaded, call the XLoadListener::loaded on the column
Diffstat (limited to 'forms/source/component/Grid.cxx')
-rw-r--r--forms/source/component/Grid.cxx58
1 files changed, 36 insertions, 22 deletions
diff --git a/forms/source/component/Grid.cxx b/forms/source/component/Grid.cxx
index e15c9165e6ff..6fc1db540340 100644
--- a/forms/source/component/Grid.cxx
+++ b/forms/source/component/Grid.cxx
@@ -2,9 +2,9 @@
*
* $RCSfile: Grid.cxx,v $
*
- * $Revision: 1.13 $
+ * $Revision: 1.14 $
*
- * last change: $Author: fs $ $Date: 2001-05-14 07:06:59 $
+ * last change: $Author: fs $ $Date: 2001-05-18 07:22:41 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -237,17 +237,15 @@ Any SAL_CALL OGridControlModel::queryAggregation( const Type& _rType ) throw (Ru
//------------------------------------------------------------------------------
void SAL_CALL OGridControlModel::setParent(const InterfaceRef& Parent) throw(NoSupportException, RuntimeException)
{
- Reference<XForm> xForm(m_xParent, UNO_QUERY);
- Reference<XLoadable> xLoadable(xForm, UNO_QUERY);
- if (xLoadable.is())
- xLoadable->removeLoadListener(this);
+ if (m_xParentFormLoadable.is())
+ m_xParentFormLoadable->removeLoadListener(this);
OControlModel::setParent(Parent);
- xForm = Reference<XForm> (m_xParent, UNO_QUERY);
- xLoadable = Reference<XLoadable> (xForm, UNO_QUERY);
- if (xLoadable.is())
- xLoadable->addLoadListener(this);
+ Reference< XForm > xForm(m_xParent, UNO_QUERY);
+ m_xParentFormLoadable = Reference< XLoadable > (xForm, UNO_QUERY);
+ if (m_xParentFormLoadable.is())
+ m_xParentFormLoadable->addLoadListener(this);
}
//------------------------------------------------------------------------------
Sequence< Type > SAL_CALL OGridControlModel::getTypes( ) throw(RuntimeException)
@@ -1036,11 +1034,26 @@ OGridColumn* OGridControlModel::getColumnImplementation(const InterfaceRef& _rxI
}
//------------------------------------------------------------------------------
-void OGridControlModel::implRemoved(const InterfaceRef& _rxObject)
+void OGridControlModel::gotColumn(const Reference< XInterface >& _rxColumn)
{
- OInterfaceContainer::implRemoved(_rxObject);
+ // if our form is already loaded, tell the column
+ // 18.05.2001 - 86558 - frank.schoenheit@germany.sun.com
+ if (m_xParentFormLoadable.is() && m_xParentFormLoadable->isLoaded())
+ {
+ Reference< XLoadListener > xColumnLoadListener(_rxColumn, UNO_QUERY);
+ if (xColumnLoadListener.is())
+ { // it's kind of a fake ...
+ EventObject aFakedLoadEvent;
+ aFakedLoadEvent.Source = m_xParentFormLoadable;
+ xColumnLoadListener->loaded(aFakedLoadEvent);
+ }
+ }
+}
- if (Reference<XInterface>(m_xSelection, UNO_QUERY).get() == Reference<XInterface>(_rxObject, UNO_QUERY).get())
+//------------------------------------------------------------------------------
+void OGridControlModel::lostColumn(const Reference< XInterface >& _rxColumn)
+{
+ if (Reference<XInterface>(m_xSelection, UNO_QUERY).get() == Reference<XInterface>(_rxColumn, UNO_QUERY).get())
{ // the currently selected element was replaced
m_xSelection.clear();
EventObject aEvt(static_cast<XWeak*>(this));
@@ -1049,22 +1062,25 @@ void OGridControlModel::implRemoved(const InterfaceRef& _rxObject)
}
//------------------------------------------------------------------------------
+void OGridControlModel::implRemoved(const InterfaceRef& _rxObject)
+{
+ OInterfaceContainer::implRemoved(_rxObject);
+ lostColumn(_rxObject);
+}
+
+//------------------------------------------------------------------------------
void OGridControlModel::implInserted(const InterfaceRef& _rxObject)
{
OInterfaceContainer::implInserted(_rxObject);
+ gotColumn(_rxObject);
}
//------------------------------------------------------------------------------
void OGridControlModel::implReplaced(const InterfaceRef& _rxReplacedObject, const InterfaceRef& _rxNewObject)
{
OInterfaceContainer::implReplaced(_rxReplacedObject, _rxNewObject);
-
- if (Reference<XInterface>(m_xSelection, UNO_QUERY).get() == Reference<XInterface>(_rxReplacedObject, UNO_QUERY).get())
- { // the currently selected element was replaced
- m_xSelection.clear();
- EventObject aEvt(static_cast<XWeak*>(this));
- NOTIFY_LISTENERS(m_aSelectListeners, XSelectionChangeListener, selectionChanged, aEvt);
- }
+ lostColumn(_rxReplacedObject);
+ gotColumn(_rxNewObject);
}
//------------------------------------------------------------------------------
@@ -1072,9 +1088,7 @@ void OGridControlModel::insert(sal_Int32 _nIndex, const InterfaceRef& xElement,
{
OGridColumn* pCol = getColumnImplementation(xElement);
if (!pCol)
- {
throw IllegalArgumentException();
- }
OInterfaceContainer::insert(_nIndex, xElement, bEvents);
}