NS_IMETHODIMP nsTreeBoxObject::GetView(nsITreeView * *aView) { if (!mTreeBody) { if (!GetTreeBody()) { // Don't return an uninitialised view *aView = nsnull; return NS_OK; } if (mView) // Our new frame needs to initialise itself return mTreeBody->GetView(aView); } if (!mView) { nsCOMPtr<nsIDOMXULElement> xulele = do_QueryInterface(mContent); if (xulele) { // See if there is a XUL tree builder associated with the element nsCOMPtr<nsIXULTemplateBuilder> builder; xulele->GetBuilder(getter_AddRefs(builder)); mView = do_QueryInterface(builder); if (!mView) { // No tree builder, create a tree content view. nsresult rv = NS_NewTreeContentView(getter_AddRefs(mView)); NS_ENSURE_SUCCESS(rv, rv); } // Initialise the frame and view mTreeBody->SetView(mView); } } NS_IF_ADDREF(*aView = mView); return NS_OK; }
NS_IMETHODIMP nsTreeBoxObject::RowCountChanged(int32_t aIndex, int32_t aDelta) { nsTreeBodyFrame* body = GetTreeBody(); if (body) return body->RowCountChanged(aIndex, aDelta); return NS_OK; }
NS_IMETHODIMP nsTreeBoxObject::InvalidateColumnRange(PRInt32 aStart, PRInt32 aEnd, nsITreeColumn* aCol) { nsTreeBodyFrame* body = GetTreeBody(); if (body) return body->InvalidateColumnRange(aStart, aEnd, aCol); return NS_OK; }
NS_IMETHODIMP nsTreeBoxObject::InvalidateRange(int32_t aStart, int32_t aEnd) { nsTreeBodyFrame* body = GetTreeBody(); if (body) return body->InvalidateRange(aStart, aEnd); return NS_OK; }
NS_IMETHODIMP nsTreeBoxObject::GetPageLength(PRInt32 *_retval) { nsITreeBoxObject* body = GetTreeBody(); if (body) return body->GetPageLength(_retval); return NS_OK; }
NS_IMETHODIMP nsTreeBoxObject::ClearStyleAndImageCaches() { nsITreeBoxObject* body = GetTreeBody(); if (body) return body->ClearStyleAndImageCaches(); return NS_OK; }
NS_IMETHODIMP nsTreeBoxObject::GetRowHeight(PRInt32* _retval) { nsITreeBoxObject* body = GetTreeBody(); if (body) return body->GetRowHeight(_retval); return NS_OK; }
NS_IMETHODIMP nsTreeBoxObject::GetLastVisibleRow(PRInt32 *_retval) { nsITreeBoxObject* body = GetTreeBody(); if (body) return body->GetLastVisibleRow(_retval); return NS_OK; }
NS_IMETHODIMP nsTreeBoxObject::GetTreeBody(nsIDOMElement** aElement) { nsITreeBoxObject* body = GetTreeBody(); if (body) return body->GetTreeBody(aElement); return NS_OK; }
NS_IMETHODIMP nsTreeBoxObject::GetColumns(nsITreeColumns** aColumns) { nsITreeBoxObject* body = GetTreeBody(); if (body) return body->GetColumns(aColumns); return NS_OK; }
NS_IMETHODIMP nsTreeBoxObject::SetFocused(PRBool aFocused) { nsITreeBoxObject* body = GetTreeBody(); if (body) return body->SetFocused(aFocused); return NS_OK; }
NS_IMETHODIMP nsTreeBoxObject::SetView(nsITreeView * aView) { if (!CanTrustView(aView)) return NS_ERROR_DOM_SECURITY_ERR; nsITreeBoxObject* body = GetTreeBody(); if (body) { body->SetView(aView); // only return if the body frame was able to store the view, // else we need to cache the property below nsCOMPtr<nsITreeView> view; body->GetView(getter_AddRefs(view)); if (view) return NS_OK; } nsCOMPtr<nsISupports> suppView(do_QueryInterface(aView)); if (suppView) SetPropertyAsSupports(NS_LITERAL_STRING("view").get(), suppView); else RemoveProperty(NS_LITERAL_STRING("view").get()); return NS_OK; }
NS_IMETHODIMP nsTreeBoxObject::GetView(nsITreeView * *aView) { nsITreeBoxObject* body = GetTreeBody(); if (body) return body->GetView(aView); return NS_OK; }
NS_IMETHODIMP nsTreeBoxObject::InvalidateRow(int32_t aIndex) { nsTreeBodyFrame* body = GetTreeBody(); if (body) return body->InvalidateRow(aIndex); return NS_OK; }
NS_IMETHODIMP nsTreeBoxObject::RowCountChanged(PRInt32 aIndex, PRInt32 aDelta) { nsITreeBoxObject* body = GetTreeBody(); if (body) return body->RowCountChanged(aIndex, aDelta); return NS_OK; }
NS_IMETHODIMP nsTreeContentView::SetTree(nsITreeBoxObject* aTree) { ClearRows(); mBoxObject = aTree; if (aTree && !mRoot) { // Get our root element nsCOMPtr<nsIBoxObject> boxObject = do_QueryInterface(mBoxObject); nsCOMPtr<nsIDOMElement> element; boxObject->GetElement(getter_AddRefs(element)); mRoot = do_QueryInterface(element); NS_ENSURE_STATE(mRoot); // Add ourselves to document's observers. nsIDocument* document = mRoot->GetDocument(); if (document) { document->AddObserver(this); mDocument = document; } nsCOMPtr<nsIDOMElement> bodyElement; mBoxObject->GetTreeBody(getter_AddRefs(bodyElement)); if (bodyElement) { mBody = do_QueryInterface(bodyElement); int32_t index = 0; Serialize(mBody, -1, &index, mRows); } } return NS_OK; }
NS_IMETHODIMP nsTreeBoxObject::InvalidateRange(PRInt32 aStart, PRInt32 aEnd) { nsITreeBoxObject* body = GetTreeBody(); if (body) return body->InvalidateRange(aStart, aEnd); return NS_OK; }
NS_IMETHODIMP nsTreeBoxObject::GetRowAt(PRInt32 x, PRInt32 y, PRInt32 *_retval) { nsITreeBoxObject* body = GetTreeBody(); if (body) return body->GetRowAt(x, y, _retval); return NS_OK; }
NS_IMETHODIMP nsTreeBoxObject::InvalidateRow(PRInt32 aIndex) { nsITreeBoxObject* body = GetTreeBody(); if (body) return body->InvalidateRow(aIndex); return NS_OK; }
NS_IMETHODIMP nsTreeBoxObject::InvalidateCell(PRInt32 aRow, nsITreeColumn* aCol) { nsITreeBoxObject* body = GetTreeBody(); if (body) return body->InvalidateCell(aRow, aCol); return NS_OK; }
NS_IMETHODIMP nsTreeBoxObject::InvalidateColumn(nsITreeColumn* aCol) { nsITreeBoxObject* body = GetTreeBody(); if (body) return body->InvalidateColumn(aCol); return NS_OK; }
NS_IMETHODIMP nsTreeBoxObject::Invalidate() { nsITreeBoxObject* body = GetTreeBody(); if (body) return body->Invalidate(); return NS_OK; }
NS_IMETHODIMP nsTreeBoxObject::BeginUpdateBatch() { nsTreeBodyFrame* body = GetTreeBody(); if (body) return body->BeginUpdateBatch(); return NS_OK; }
NS_IMETHODIMP nsTreeBoxObject::EndUpdateBatch() { nsITreeBoxObject* body = GetTreeBody(); if (body) return body->EndUpdateBatch(); return NS_OK; }
NS_IMETHODIMP nsTreeBoxObject::ScrollToRow(PRInt32 aRow) { nsITreeBoxObject* body = GetTreeBody(); if (body) return body->ScrollToRow(aRow); return NS_OK; }
NS_IMETHODIMP nsTreeBoxObject::IsCellCropped(PRInt32 aRow, nsITreeColumn* aCol, PRBool *_retval) { nsITreeBoxObject* body = GetTreeBody(); if (body) return body->IsCellCropped(aRow, aCol, _retval); return NS_OK; }
NS_IMETHODIMP nsTreeBoxObject::GetCellAt(PRInt32 x, PRInt32 y, PRInt32 *row, nsITreeColumn** col, nsACString& childElt) { nsITreeBoxObject* body = GetTreeBody(); if (body) return body->GetCellAt(x, y, row, col, childElt); return NS_OK; }
NS_IMETHODIMP nsTreeBoxObject::EnsureRowIsVisible(PRInt32 aRow) { nsITreeBoxObject* body = GetTreeBody(); if (body) return body->EnsureRowIsVisible(aRow); return NS_OK; }
NS_IMETHODIMP nsTreeBoxObject::ScrollByPages(PRInt32 aNumPages) { nsITreeBoxObject* body = GetTreeBody(); if (body) return body->ScrollByPages(aNumPages); return NS_OK; }
NS_IMETHODIMP nsTreeBoxObject::GetRowAt(PRInt32 x, PRInt32 y, PRInt32 *aRow) { *aRow = 0; nsTreeBodyFrame* body = GetTreeBody(); if (body) return body->GetRowAt(x, y, aRow); return NS_OK; }