[XForms] Revise custom control interface. Bug 306764, r=aaronr+smaug

git-svn-id: svn://10.0.0.236/trunk@184188 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
allan%beaufour.dk
2005-11-05 16:11:42 +00:00
parent 5ef80436ca
commit 2a1f8b727f
13 changed files with 494 additions and 112 deletions

View File

@@ -54,11 +54,10 @@
#include "nsXFormsUtils.h"
#include "nsIServiceManager.h"
#include "nsXFormsModelElement.h"
#include "nsIContent.h"
#include "nsIEventStateManager.h"
NS_IMPL_ISUPPORTS_INHERITED1(nsXFormsDelegateStub,
NS_IMPL_ISUPPORTS_INHERITED2(nsXFormsDelegateStub,
nsXFormsBindableControlStub,
nsIDelegateInternal,
nsIXFormsDelegate)
@@ -91,6 +90,9 @@ NS_IMETHODIMP
nsXFormsDelegateStub::OnDestroyed()
{
nsXFormsModelElement::CancelPostRefresh(this);
if (mAccessor) {
mAccessor->Destroy();
}
return nsXFormsBindableControlStub::OnDestroyed();
}
@@ -169,47 +171,10 @@ nsXFormsDelegateStub::SetValue(const nsAString& aValue)
return NS_OK;
}
nsresult
nsXFormsDelegateStub::GetState(PRInt32 aState, PRBool *aStateVal)
{
NS_ENSURE_ARG_POINTER(aStateVal);
*aStateVal = PR_FALSE;
nsCOMPtr<nsIContent> content(do_QueryInterface(mElement));
if (content && (content->IntrinsicState() & aState)) {
*aStateVal = PR_TRUE;
}
return NS_OK;
}
// XXXbeaufour search for "enabled", "disabled", HasAttribute() and SetAttribute()
NS_IMETHODIMP
nsXFormsDelegateStub::GetIsReadonly(PRBool *aStateVal)
{
return GetState(NS_EVENT_STATE_MOZ_READONLY, aStateVal);
}
NS_IMETHODIMP
nsXFormsDelegateStub::GetIsEnabled(PRBool *aStateVal)
{
return GetState(NS_EVENT_STATE_ENABLED, aStateVal);
}
NS_IMETHODIMP
nsXFormsDelegateStub::GetIsRequired(PRBool *aStateVal)
{
return GetState(NS_EVENT_STATE_REQUIRED, aStateVal);
}
NS_IMETHODIMP
nsXFormsDelegateStub::GetIsValid(PRBool *aStateVal)
{
return GetState(NS_EVENT_STATE_VALID, aStateVal);
}
NS_IMETHODIMP
nsXFormsDelegateStub::GetHasBoundNode(PRBool *aHasBoundNode)
{
NS_ENSURE_ARG_POINTER(aHasBoundNode);
*aHasBoundNode = mBoundNode ? PR_TRUE : PR_FALSE;
return NS_OK;
}
@@ -223,6 +188,8 @@ nsXFormsDelegateStub::WidgetAttached()
return NS_OK;
}
// nsXFormsDelegateStub
nsRepeatState
nsXFormsDelegateStub::UpdateRepeatState()
{
@@ -265,3 +232,16 @@ nsXFormsDelegateStub::SetMozTypeAttribute()
mElement->RemoveAttributeNS(mozTypeNs, mozType);
}
}
NS_IMETHODIMP
nsXFormsDelegateStub::GetXFormsAccessors(nsIXFormsAccessors **aAccessor)
{
if (!mAccessor) {
mAccessor = new nsXFormsAccessors(this, mElement);
if (!mAccessor) {
return NS_ERROR_OUT_OF_MEMORY;
}
}
NS_ADDREF(*aAccessor = mAccessor);
return NS_OK;
}