Bug 312956 â Expose XForms node state directly on instance data nodes, r=aaronr, smaug
git-svn-id: svn://10.0.0.236/trunk@253837 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
parent
661f05e39b
commit
df423f363b
@ -48,7 +48,7 @@ interface nsISVSchemaBuiltinType;
|
|||||||
* Private interface implemented by the model element for other
|
* Private interface implemented by the model element for other
|
||||||
* elements to use.
|
* elements to use.
|
||||||
*/
|
*/
|
||||||
[uuid(bbc19255-4341-45fb-a9dc-23f4add8a7c3)]
|
[uuid(64599272-49a8-463c-8937-b69165541f4f)]
|
||||||
interface nsIModelElementPrivate : nsIXFormsModelElement
|
interface nsIModelElementPrivate : nsIXFormsModelElement
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
@ -122,6 +122,12 @@ interface nsIModelElementPrivate : nsIXFormsModelElement
|
|||||||
*/
|
*/
|
||||||
unsigned short handleInstanceDataNode(in nsIDOMNode aInstanceDataNode);
|
unsigned short handleInstanceDataNode(in nsIDOMNode aInstanceDataNode);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return states for bound node in terms of NS_EVENT_STATE constants
|
||||||
|
* @param aBoundNode The instance node
|
||||||
|
*/
|
||||||
|
long getStates(in nsIDOMNode aBoundNode);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set MIP states for given control bound to the given bound node.
|
* Set MIP states for given control bound to the given bound node.
|
||||||
* @param aControl The control
|
* @param aControl The control
|
||||||
|
|||||||
@ -37,6 +37,7 @@
|
|||||||
* ***** END LICENSE BLOCK ***** */
|
* ***** END LICENSE BLOCK ***** */
|
||||||
|
|
||||||
#include "nsIXFormsContextControl.idl"
|
#include "nsIXFormsContextControl.idl"
|
||||||
|
#include "nsIModelElementPrivate.idl"
|
||||||
|
|
||||||
interface nsIDOMNode;
|
interface nsIDOMNode;
|
||||||
interface nsIDOMElement;
|
interface nsIDOMElement;
|
||||||
@ -49,7 +50,7 @@ interface nsIDOMElement;
|
|||||||
/**
|
/**
|
||||||
* Interface implemented by all XForms form control classes.
|
* Interface implemented by all XForms form control classes.
|
||||||
*/
|
*/
|
||||||
[uuid(6fb46b32-9aa1-4d81-aa54-d57a414948c3)]
|
[uuid(2dd97021-e7bd-46cb-b439-2affb8bbd482)]
|
||||||
interface nsIXFormsControl : nsIXFormsContextControl
|
interface nsIXFormsControl : nsIXFormsContextControl
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
@ -57,6 +58,11 @@ interface nsIXFormsControl : nsIXFormsContextControl
|
|||||||
*/
|
*/
|
||||||
boolean tryFocus();
|
boolean tryFocus();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The model that the control is bound to.
|
||||||
|
*/
|
||||||
|
readonly attribute nsIModelElementPrivate model;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The instance node that the control is bound to.
|
* The instance node that the control is bound to.
|
||||||
*/
|
*/
|
||||||
|
|||||||
@ -21,6 +21,7 @@
|
|||||||
*
|
*
|
||||||
* Contributor(s):
|
* Contributor(s):
|
||||||
* Allan Beaufour <allan@beaufour.dk>
|
* Allan Beaufour <allan@beaufour.dk>
|
||||||
|
* Alexander Surkov <surkov.alexander@gmail.com>
|
||||||
*
|
*
|
||||||
* Alternatively, the contents of this file may be used under the terms of
|
* Alternatively, the contents of this file may be used under the terms of
|
||||||
* either of the GNU General Public License Version 2 or later (the "GPL"),
|
* either of the GNU General Public License Version 2 or later (the "GPL"),
|
||||||
@ -39,12 +40,32 @@
|
|||||||
#include "domstubs.idl"
|
#include "domstubs.idl"
|
||||||
|
|
||||||
interface nsIDOMNodeList;
|
interface nsIDOMNodeList;
|
||||||
|
interface nsIXFormsAccessors;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Defines additional post-spec. functions for the \<model\> element.
|
* Defines additional post-spec. functions for the \<model\> element.
|
||||||
*/
|
*/
|
||||||
[scriptable, uuid(85fd60c7-1db7-40c0-ae8d-f723fdd1eea8)]
|
[scriptable, uuid(b1638cdd-db01-4082-a3e9-dc629c469a01)]
|
||||||
interface nsIXFormsNSModelElement : nsISupports
|
interface nsIXFormsNSModelElement : nsISupports
|
||||||
{
|
{
|
||||||
|
/*
|
||||||
|
* Returns a list of the instance documents for the model.
|
||||||
|
*/
|
||||||
nsIDOMNodeList getInstanceDocuments();
|
nsIDOMNodeList getInstanceDocuments();
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Returns an accessor interface to the given instance node.
|
||||||
|
*/
|
||||||
|
nsIXFormsAccessors getAccessorsByNode(in nsIDOMNode node);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Evaluates the XPath expression as if it was an XForms single node binding
|
||||||
|
* expression for an outer-most control and returns an accessor interface to
|
||||||
|
* the resulting node. If XPath expression is invalid then method dispatches
|
||||||
|
* "xforms-compute-exception" event to the model and rises an exception. If
|
||||||
|
* XPath doesn't point to a node then method rises an exception.
|
||||||
|
*
|
||||||
|
* @note The expression is only evaluated once.
|
||||||
|
*/
|
||||||
|
nsIXFormsAccessors getAccessorsByExpr(in DOMString xpath);
|
||||||
};
|
};
|
||||||
|
|||||||
@ -22,6 +22,7 @@
|
|||||||
* Contributor(s):
|
* Contributor(s):
|
||||||
* Allan Beaufour <abeaufour@novell.com>
|
* Allan Beaufour <abeaufour@novell.com>
|
||||||
* Olli Pettay <Olli.Pettay@helsinki.fi>
|
* Olli Pettay <Olli.Pettay@helsinki.fi>
|
||||||
|
* Alexander Surkov <surkov.alexander@gmail.com>
|
||||||
*
|
*
|
||||||
* Alternatively, the contents of this file may be used under the terms of
|
* Alternatively, the contents of this file may be used under the terms of
|
||||||
* either the GNU General Public License Version 2 or later (the "GPL"), or
|
* either the GNU General Public License Version 2 or later (the "GPL"), or
|
||||||
@ -46,100 +47,113 @@
|
|||||||
#include "nsIXFormsControl.h"
|
#include "nsIXFormsControl.h"
|
||||||
#include "nsIProgrammingLanguage.h"
|
#include "nsIProgrammingLanguage.h"
|
||||||
|
|
||||||
NS_IMPL_ISUPPORTS2(nsXFormsAccessors, nsIXFormsAccessors, nsIClassInfo)
|
// nsXFormsAccessors object implementation
|
||||||
|
|
||||||
void
|
NS_IMPL_ISUPPORTS2(nsXFormsAccessorsBase, nsIXFormsAccessors, nsIClassInfo)
|
||||||
nsXFormsAccessors::Destroy()
|
|
||||||
{
|
|
||||||
mElement = nsnull;
|
|
||||||
mDelegate = nsnull;
|
|
||||||
}
|
|
||||||
|
|
||||||
nsresult
|
nsresult
|
||||||
nsXFormsAccessors::GetState(PRInt32 aState, PRBool *aStateVal)
|
nsXFormsAccessorsBase::GetState(PRInt32 aState, PRBool *aStateVal)
|
||||||
{
|
{
|
||||||
NS_ENSURE_ARG_POINTER(aStateVal);
|
NS_ENSURE_ARG_POINTER(aStateVal);
|
||||||
nsCOMPtr<nsIContent> content(do_QueryInterface(mElement));
|
|
||||||
*aStateVal = (content && (content->IntrinsicState() & aState));
|
nsCOMPtr<nsIModelElementPrivate> model;
|
||||||
|
GetModel(getter_AddRefs(model));
|
||||||
|
NS_ENSURE_STATE(model);
|
||||||
|
|
||||||
|
nsCOMPtr<nsIDOMNode> instNode;
|
||||||
|
GetInstanceNode(getter_AddRefs(instNode));
|
||||||
|
NS_ENSURE_STATE(instNode);
|
||||||
|
|
||||||
|
PRInt32 states;
|
||||||
|
model->GetStates(instNode, &states);
|
||||||
|
*aStateVal = states & aState;
|
||||||
|
|
||||||
return NS_OK;
|
return NS_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
NS_IMETHODIMP
|
NS_IMETHODIMP
|
||||||
nsXFormsAccessors::GetValue(nsAString &aValue)
|
nsXFormsAccessorsBase::GetValue(nsAString &aValue)
|
||||||
{
|
{
|
||||||
if (mDelegate) {
|
nsCOMPtr<nsIDOMNode> instNode;
|
||||||
mDelegate->GetValue(aValue);
|
GetInstanceNode(getter_AddRefs(instNode));
|
||||||
} else {
|
NS_ENSURE_STATE(instNode);
|
||||||
aValue.SetIsVoid(PR_TRUE);
|
|
||||||
}
|
nsXFormsUtils::GetNodeValue(instNode, aValue);
|
||||||
|
|
||||||
return NS_OK;
|
return NS_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
NS_IMETHODIMP
|
NS_IMETHODIMP
|
||||||
nsXFormsAccessors::SetValue(const nsAString & aValue)
|
nsXFormsAccessorsBase::SetValue(const nsAString &aValue)
|
||||||
{
|
{
|
||||||
return mDelegate ? mDelegate->SetValue(aValue) : NS_OK;
|
nsCOMPtr<nsIModelElementPrivate> model;
|
||||||
|
GetModel(getter_AddRefs(model));
|
||||||
|
NS_ENSURE_STATE(model);
|
||||||
|
|
||||||
|
nsCOMPtr<nsIDOMNode> instNode;
|
||||||
|
GetInstanceNode(getter_AddRefs(instNode));
|
||||||
|
NS_ENSURE_STATE(instNode);
|
||||||
|
|
||||||
|
PRBool nodeChanged;
|
||||||
|
return model->SetNodeValue(instNode, aValue, PR_TRUE, &nodeChanged);
|
||||||
}
|
}
|
||||||
|
|
||||||
NS_IMETHODIMP
|
NS_IMETHODIMP
|
||||||
nsXFormsAccessors::HasBoundNode(PRBool *aHasBoundNode)
|
nsXFormsAccessorsBase::HasBoundNode(PRBool *aHasBoundNode)
|
||||||
{
|
{
|
||||||
NS_ENSURE_ARG_POINTER(aHasBoundNode);
|
NS_ENSURE_ARG_POINTER(aHasBoundNode);
|
||||||
*aHasBoundNode = PR_FALSE;
|
|
||||||
return mDelegate ? mDelegate->GetHasBoundNode(aHasBoundNode) : NS_OK;
|
nsCOMPtr<nsIDOMNode> instNode;
|
||||||
|
GetInstanceNode(getter_AddRefs(instNode));
|
||||||
|
*aHasBoundNode = instNode ? PR_TRUE : PR_FALSE;
|
||||||
|
|
||||||
|
return NS_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
NS_IMETHODIMP
|
NS_IMETHODIMP
|
||||||
nsXFormsAccessors::IsReadonly(PRBool *aStateVal)
|
nsXFormsAccessorsBase::IsReadonly(PRBool *aStateVal)
|
||||||
{
|
{
|
||||||
return GetState(NS_EVENT_STATE_MOZ_READONLY, aStateVal);
|
return GetState(NS_EVENT_STATE_MOZ_READONLY, aStateVal);
|
||||||
}
|
}
|
||||||
|
|
||||||
NS_IMETHODIMP
|
NS_IMETHODIMP
|
||||||
nsXFormsAccessors::IsRelevant(PRBool *aStateVal)
|
nsXFormsAccessorsBase::IsRelevant(PRBool *aStateVal)
|
||||||
{
|
{
|
||||||
return GetState(NS_EVENT_STATE_ENABLED, aStateVal);
|
return GetState(NS_EVENT_STATE_ENABLED, aStateVal);
|
||||||
}
|
}
|
||||||
|
|
||||||
NS_IMETHODIMP
|
NS_IMETHODIMP
|
||||||
nsXFormsAccessors::IsRequired(PRBool *aStateVal)
|
nsXFormsAccessorsBase::IsRequired(PRBool *aStateVal)
|
||||||
{
|
{
|
||||||
return GetState(NS_EVENT_STATE_REQUIRED, aStateVal);
|
return GetState(NS_EVENT_STATE_REQUIRED, aStateVal);
|
||||||
}
|
}
|
||||||
|
|
||||||
NS_IMETHODIMP
|
NS_IMETHODIMP
|
||||||
nsXFormsAccessors::IsValid(PRBool *aStateVal)
|
nsXFormsAccessorsBase::IsValid(PRBool *aStateVal)
|
||||||
{
|
{
|
||||||
return GetState(NS_EVENT_STATE_VALID, aStateVal);
|
return GetState(NS_EVENT_STATE_VALID, aStateVal);
|
||||||
}
|
}
|
||||||
|
|
||||||
NS_IMETHODIMP
|
NS_IMETHODIMP
|
||||||
nsXFormsAccessors::SetContent(nsIDOMNode *aNode, PRBool aForceUpdate)
|
nsXFormsAccessorsBase::SetContent(nsIDOMNode *aNode, PRBool aForceUpdate)
|
||||||
{
|
{
|
||||||
NS_ENSURE_STATE(mElement);
|
|
||||||
NS_ENSURE_ARG(aNode);
|
NS_ENSURE_ARG(aNode);
|
||||||
|
|
||||||
nsCOMPtr<nsIDOMNode> boundNode;
|
nsCOMPtr<nsIModelElementPrivate> model;
|
||||||
nsresult rv = GetBoundNode(getter_AddRefs(boundNode));
|
GetModel(getter_AddRefs(model));
|
||||||
NS_ENSURE_SUCCESS(rv, rv);
|
NS_ENSURE_STATE(model);
|
||||||
NS_ENSURE_STATE(boundNode);
|
|
||||||
|
|
||||||
nsCOMPtr<nsIModelElementPrivate> modelPriv = nsXFormsUtils::GetModel(mElement);
|
nsCOMPtr<nsIDOMNode> instNode;
|
||||||
NS_ENSURE_STATE(modelPriv);
|
GetInstanceNode(getter_AddRefs(instNode));
|
||||||
|
NS_ENSURE_STATE(instNode);
|
||||||
|
|
||||||
return modelPriv->SetNodeContent(boundNode, aNode, aForceUpdate);
|
return model->SetNodeContent(instNode, aNode, aForceUpdate);
|
||||||
}
|
}
|
||||||
|
|
||||||
NS_IMETHODIMP
|
NS_IMETHODIMP
|
||||||
nsXFormsAccessors::GetBoundNode(nsIDOMNode **aBoundNode)
|
nsXFormsAccessorsBase::GetBoundNode(nsIDOMNode **aBoundNode)
|
||||||
{
|
{
|
||||||
NS_ENSURE_ARG_POINTER(aBoundNode);
|
return GetInstanceNode(aBoundNode);
|
||||||
if (mDelegate) {
|
|
||||||
nsCOMPtr<nsIXFormsControl> control = do_QueryInterface(mDelegate);
|
|
||||||
return control->GetBoundNode(aBoundNode);
|
|
||||||
}
|
|
||||||
return NS_OK;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// nsIClassInfo implementation
|
// nsIClassInfo implementation
|
||||||
@ -149,7 +163,7 @@ static const nsIID sScriptingIIDs[] = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
NS_IMETHODIMP
|
NS_IMETHODIMP
|
||||||
nsXFormsAccessors::GetInterfaces(PRUint32 *aCount, nsIID * **aArray)
|
nsXFormsAccessorsBase::GetInterfaces(PRUint32 *aCount, nsIID * **aArray)
|
||||||
{
|
{
|
||||||
return nsXFormsUtils::CloneScriptingInterfaces(sScriptingIIDs,
|
return nsXFormsUtils::CloneScriptingInterfaces(sScriptingIIDs,
|
||||||
NS_ARRAY_LENGTH(sScriptingIIDs),
|
NS_ARRAY_LENGTH(sScriptingIIDs),
|
||||||
@ -157,7 +171,7 @@ nsXFormsAccessors::GetInterfaces(PRUint32 *aCount, nsIID * **aArray)
|
|||||||
}
|
}
|
||||||
|
|
||||||
NS_IMETHODIMP
|
NS_IMETHODIMP
|
||||||
nsXFormsAccessors::GetHelperForLanguage(PRUint32 language,
|
nsXFormsAccessorsBase::GetHelperForLanguage(PRUint32 language,
|
||||||
nsISupports **_retval)
|
nsISupports **_retval)
|
||||||
{
|
{
|
||||||
*_retval = nsnull;
|
*_retval = nsnull;
|
||||||
@ -165,42 +179,133 @@ nsXFormsAccessors::GetHelperForLanguage(PRUint32 language,
|
|||||||
}
|
}
|
||||||
|
|
||||||
NS_IMETHODIMP
|
NS_IMETHODIMP
|
||||||
nsXFormsAccessors::GetContractID(char * *aContractID)
|
nsXFormsAccessorsBase::GetContractID(char * *aContractID)
|
||||||
{
|
{
|
||||||
*aContractID = nsnull;
|
*aContractID = nsnull;
|
||||||
return NS_OK;
|
return NS_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
NS_IMETHODIMP
|
NS_IMETHODIMP
|
||||||
nsXFormsAccessors::GetClassDescription(char * *aClassDescription)
|
nsXFormsAccessorsBase::GetClassDescription(char * *aClassDescription)
|
||||||
{
|
{
|
||||||
*aClassDescription = nsnull;
|
*aClassDescription = nsnull;
|
||||||
return NS_OK;
|
return NS_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
NS_IMETHODIMP
|
NS_IMETHODIMP
|
||||||
nsXFormsAccessors::GetClassID(nsCID * *aClassID)
|
nsXFormsAccessorsBase::GetClassID(nsCID * *aClassID)
|
||||||
{
|
{
|
||||||
*aClassID = nsnull;
|
*aClassID = nsnull;
|
||||||
return NS_OK;
|
return NS_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
NS_IMETHODIMP
|
NS_IMETHODIMP
|
||||||
nsXFormsAccessors::GetImplementationLanguage(PRUint32 *aImplementationLanguage)
|
nsXFormsAccessorsBase::GetImplementationLanguage(PRUint32 *aImplementationLanguage)
|
||||||
{
|
{
|
||||||
*aImplementationLanguage = nsIProgrammingLanguage::CPLUSPLUS;
|
*aImplementationLanguage = nsIProgrammingLanguage::CPLUSPLUS;
|
||||||
return NS_OK;
|
return NS_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
NS_IMETHODIMP
|
NS_IMETHODIMP
|
||||||
nsXFormsAccessors::GetFlags(PRUint32 *aFlags)
|
nsXFormsAccessorsBase::GetFlags(PRUint32 *aFlags)
|
||||||
{
|
{
|
||||||
*aFlags = nsIClassInfo::DOM_OBJECT;
|
*aFlags = nsIClassInfo::DOM_OBJECT;
|
||||||
return NS_OK;
|
return NS_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
NS_IMETHODIMP
|
NS_IMETHODIMP
|
||||||
nsXFormsAccessors::GetClassIDNoAlloc(nsCID *aClassIDNoAlloc)
|
nsXFormsAccessorsBase::GetClassIDNoAlloc(nsCID *aClassIDNoAlloc)
|
||||||
{
|
{
|
||||||
return NS_ERROR_NOT_AVAILABLE;
|
return NS_ERROR_NOT_AVAILABLE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// nsXFormsAccessors implementation
|
||||||
|
|
||||||
|
nsXFormsAccessors::nsXFormsAccessors(nsIModelElementPrivate *aModel,
|
||||||
|
nsIDOMNode *aInstanceNode)
|
||||||
|
: mModel(aModel), mInstanceNode(aInstanceNode)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
nsresult
|
||||||
|
nsXFormsAccessors::GetModel(nsIModelElementPrivate **aModel)
|
||||||
|
{
|
||||||
|
NS_ENSURE_ARG_POINTER(aModel);
|
||||||
|
|
||||||
|
NS_IF_ADDREF(*aModel = mModel);
|
||||||
|
return NS_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
nsresult
|
||||||
|
nsXFormsAccessors::GetInstanceNode(nsIDOMNode **aInstanceNode)
|
||||||
|
{
|
||||||
|
NS_ENSURE_ARG_POINTER(aInstanceNode);
|
||||||
|
|
||||||
|
NS_IF_ADDREF(*aInstanceNode = mInstanceNode);
|
||||||
|
return NS_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
// nsXFormsControlAccessors implementation
|
||||||
|
nsXFormsControlAccessors::nsXFormsControlAccessors(nsIDelegateInternal *aControl,
|
||||||
|
nsIDOMElement *aElement)
|
||||||
|
: mDelegate(aControl), mElement(aElement)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
nsresult
|
||||||
|
nsXFormsControlAccessors::GetModel(nsIModelElementPrivate **aModel)
|
||||||
|
{
|
||||||
|
NS_ENSURE_ARG_POINTER(aModel);
|
||||||
|
NS_ENSURE_STATE(mDelegate);
|
||||||
|
|
||||||
|
nsCOMPtr<nsIXFormsControl> control = do_QueryInterface(mDelegate);
|
||||||
|
return control->GetModel(aModel);
|
||||||
|
}
|
||||||
|
|
||||||
|
nsresult
|
||||||
|
nsXFormsControlAccessors::GetInstanceNode(nsIDOMNode **aInstanceNode)
|
||||||
|
{
|
||||||
|
NS_ENSURE_ARG_POINTER(aInstanceNode);
|
||||||
|
NS_ENSURE_STATE(mDelegate);
|
||||||
|
|
||||||
|
nsCOMPtr<nsIXFormsControl> control = do_QueryInterface(mDelegate);
|
||||||
|
return control->GetBoundNode(aInstanceNode);
|
||||||
|
}
|
||||||
|
|
||||||
|
nsresult
|
||||||
|
nsXFormsControlAccessors::GetState(PRInt32 aState, PRBool *aStateVal)
|
||||||
|
{
|
||||||
|
NS_ENSURE_ARG_POINTER(aStateVal);
|
||||||
|
|
||||||
|
if (mDelegate) {
|
||||||
|
NS_ENSURE_STATE(mElement);
|
||||||
|
|
||||||
|
nsCOMPtr<nsIContent> content(do_QueryInterface(mElement));
|
||||||
|
*aStateVal = (content && (content->IntrinsicState() & aState));
|
||||||
|
}
|
||||||
|
|
||||||
|
return NS_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
NS_IMETHODIMP
|
||||||
|
nsXFormsControlAccessors::GetValue(nsAString &aValue)
|
||||||
|
{
|
||||||
|
if (mDelegate)
|
||||||
|
return mDelegate->GetValue(aValue);
|
||||||
|
|
||||||
|
aValue.SetIsVoid(PR_TRUE);
|
||||||
|
return NS_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
NS_IMETHODIMP
|
||||||
|
nsXFormsControlAccessors::SetValue(const nsAString &aValue)
|
||||||
|
{
|
||||||
|
return mDelegate ? mDelegate->SetValue(aValue) : NS_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
nsXFormsControlAccessors::Destroy()
|
||||||
|
{
|
||||||
|
mElement = nsnull;
|
||||||
|
mDelegate = nsnull;
|
||||||
|
}
|
||||||
|
|||||||
@ -21,6 +21,7 @@
|
|||||||
*
|
*
|
||||||
* Contributor(s):
|
* Contributor(s):
|
||||||
* Allan Beaufour <abeaufour@novell.com>
|
* Allan Beaufour <abeaufour@novell.com>
|
||||||
|
* Alexander Surkov <surkov.alexander@gmail.com>
|
||||||
*
|
*
|
||||||
* Alternatively, the contents of this file may be used under the terms of
|
* Alternatively, the contents of this file may be used under the terms of
|
||||||
* either the GNU General Public License Version 2 or later (the "GPL"), or
|
* either the GNU General Public License Version 2 or later (the "GPL"), or
|
||||||
@ -39,47 +40,101 @@
|
|||||||
#ifndef __NSXFORMSACCESSORS_H__
|
#ifndef __NSXFORMSACCESSORS_H__
|
||||||
#define __NSXFORMSACCESSORS_H__
|
#define __NSXFORMSACCESSORS_H__
|
||||||
|
|
||||||
|
#include "nsCOMPtr.h"
|
||||||
|
|
||||||
#include "nsIClassInfo.h"
|
#include "nsIClassInfo.h"
|
||||||
#include "nsIXFormsAccessors.h"
|
#include "nsIXFormsAccessors.h"
|
||||||
#include "nsIDelegateInternal.h"
|
#include "nsIDelegateInternal.h"
|
||||||
|
#include "nsIModelElementPrivate.h"
|
||||||
class nsIDOMElement;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Implementation of the nsIXFormsAccessors object. It is always owned by a
|
* Abstract class for nsIXFormsAccessors objects. nsXFormsAccessorsBase isn't
|
||||||
* nsIXFormsDelegate.
|
* meant to be instantiated, but instead a user should instantiate
|
||||||
|
* nsXFormsAccessors or nsXFormsControlAccessors.
|
||||||
*/
|
*/
|
||||||
class nsXFormsAccessors : public nsIXFormsAccessors,
|
class nsXFormsAccessorsBase : public nsIXFormsAccessors,
|
||||||
public nsIClassInfo
|
public nsIClassInfo
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
NS_DECL_ISUPPORTS
|
NS_DECL_ISUPPORTS
|
||||||
|
|
||||||
NS_DECL_NSICLASSINFO
|
NS_DECL_NSICLASSINFO
|
||||||
NS_DECL_NSIXFORMSACCESSORS
|
NS_DECL_NSIXFORMSACCESSORS
|
||||||
|
|
||||||
/** Constructor */
|
|
||||||
nsXFormsAccessors(nsIDelegateInternal* aDelegate, nsIDOMElement* aElement)
|
|
||||||
: mDelegate(aDelegate), mElement(aElement)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
/** Called by the owning delegate when it itself is destroyed */
|
|
||||||
void Destroy();
|
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
// The next methods should be implemented by successors. Methods are used
|
||||||
|
// to get xforms model and instance node that are both needed to make possible
|
||||||
|
// implementation of nsIXFormsAccessors interface by this class.
|
||||||
|
virtual nsresult GetModel(nsIModelElementPrivate **aModel) = 0;
|
||||||
|
virtual nsresult GetInstanceNode(nsIDOMNode **aInstanceNode) = 0;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Checks the status of the model item properties
|
* Checks the status of the model item properties
|
||||||
*
|
*
|
||||||
* @param aState The state to check
|
* @param aState The state to check
|
||||||
* @para aStateVal The returned state
|
* @para aStateVal The returned state
|
||||||
*/
|
*/
|
||||||
nsresult GetState(PRInt32 aState, PRBool *aStateVal);
|
virtual nsresult GetState(PRInt32 aState, PRBool *aStateVal);
|
||||||
|
};
|
||||||
|
|
||||||
/** The delegate owning us */
|
|
||||||
nsIDelegateInternal* mDelegate;
|
|
||||||
|
|
||||||
/** The control DOM element */
|
/**
|
||||||
nsIDOMElement* mElement;
|
* Implementation of the nsIXFormsAccessors object for instance node.
|
||||||
|
*/
|
||||||
|
|
||||||
|
class nsXFormsAccessors : public nsXFormsAccessorsBase
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
nsXFormsAccessors(nsIModelElementPrivate *aModel, nsIDOMNode *aInstanceNode);
|
||||||
|
|
||||||
|
protected:
|
||||||
|
virtual nsresult GetModel(nsIModelElementPrivate **aModel);
|
||||||
|
virtual nsresult GetInstanceNode(nsIDOMNode **aInstanceNode);
|
||||||
|
|
||||||
|
private:
|
||||||
|
/* The model */
|
||||||
|
nsCOMPtr<nsIModelElementPrivate> mModel;
|
||||||
|
|
||||||
|
/* The instance node */
|
||||||
|
nsCOMPtr<nsIDOMNode> mInstanceNode;
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Implementation of the nsIXFormsAccessors object for nsIXFormsDelegate
|
||||||
|
* controls.
|
||||||
|
*
|
||||||
|
* Some nsIXFormsDelegate controls have a value even if they are not bound to
|
||||||
|
* instance node (like xforms:label and xforms:output). nsXFormsControlAccessors
|
||||||
|
* object redirects getValue()/setValue() calls to nsIXFormsDelegate control.
|
||||||
|
*/
|
||||||
|
|
||||||
|
class nsXFormsControlAccessors : public nsXFormsAccessorsBase
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
nsXFormsControlAccessors(nsIDelegateInternal *aControl,
|
||||||
|
nsIDOMElement *aElement);
|
||||||
|
|
||||||
|
// nsIXFormsAccessors
|
||||||
|
NS_IMETHOD GetValue(nsAString &aValue);
|
||||||
|
NS_IMETHOD SetValue(const nsAString &aValue);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Called by the owning delegate when it itself is destroyed.
|
||||||
|
*/
|
||||||
|
void Destroy();
|
||||||
|
|
||||||
|
protected:
|
||||||
|
virtual nsresult GetModel(nsIModelElementPrivate **aModel);
|
||||||
|
virtual nsresult GetInstanceNode(nsIDOMNode **aInstanceNode);
|
||||||
|
virtual nsresult GetState(PRInt32 aState, PRBool *aStateVal);
|
||||||
|
|
||||||
|
/* The DOM element for xforms control the accessor is bound to. */
|
||||||
|
nsIDOMElement *mElement;
|
||||||
|
|
||||||
|
private:
|
||||||
|
/* The XTF element for xforms control the accessor is bound to. */
|
||||||
|
nsIDelegateInternal *mDelegate;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|||||||
@ -104,9 +104,20 @@ nsXFormsHintHelpListener::HandleEvent(nsIDOMEvent* aEvent)
|
|||||||
return NS_OK;
|
return NS_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
NS_IMETHODIMP
|
||||||
|
nsXFormsControlStub::GetModel(nsIModelElementPrivate **aModel)
|
||||||
|
{
|
||||||
|
NS_ENSURE_ARG_POINTER(aModel);
|
||||||
|
|
||||||
|
NS_IF_ADDREF(*aModel = mModel);
|
||||||
|
return NS_OK;
|
||||||
|
}
|
||||||
|
|
||||||
NS_IMETHODIMP
|
NS_IMETHODIMP
|
||||||
nsXFormsControlStub::GetBoundNode(nsIDOMNode **aBoundNode)
|
nsXFormsControlStub::GetBoundNode(nsIDOMNode **aBoundNode)
|
||||||
{
|
{
|
||||||
|
NS_ENSURE_ARG_POINTER(aBoundNode);
|
||||||
|
|
||||||
NS_IF_ADDREF(*aBoundNode = mBoundNode);
|
NS_IF_ADDREF(*aBoundNode = mBoundNode);
|
||||||
return NS_OK;
|
return NS_OK;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -81,6 +81,7 @@ public:
|
|||||||
NS_DECL_ISUPPORTS_INHERITED
|
NS_DECL_ISUPPORTS_INHERITED
|
||||||
|
|
||||||
// nsIXFormsControl
|
// nsIXFormsControl
|
||||||
|
NS_IMETHOD GetModel(nsIModelElementPrivate **aModel);
|
||||||
NS_IMETHOD GetBoundNode(nsIDOMNode **aBoundNode);
|
NS_IMETHOD GetBoundNode(nsIDOMNode **aBoundNode);
|
||||||
NS_IMETHOD BindToModel(PRBool aSetBoundNode = PR_FALSE);
|
NS_IMETHOD BindToModel(PRBool aSetBoundNode = PR_FALSE);
|
||||||
NS_IMETHOD GetDependencies(nsCOMArray<nsIDOMNode> **aDependencies);
|
NS_IMETHOD GetDependencies(nsCOMArray<nsIDOMNode> **aDependencies);
|
||||||
|
|||||||
@ -94,6 +94,7 @@ nsXFormsDelegateStub::OnDestroyed()
|
|||||||
nsXFormsModelElement::CancelPostRefresh(this);
|
nsXFormsModelElement::CancelPostRefresh(this);
|
||||||
if (mAccessor) {
|
if (mAccessor) {
|
||||||
mAccessor->Destroy();
|
mAccessor->Destroy();
|
||||||
|
mAccessor = nsnull;
|
||||||
}
|
}
|
||||||
return nsXFormsControlStub::OnDestroyed();
|
return nsXFormsControlStub::OnDestroyed();
|
||||||
}
|
}
|
||||||
@ -310,7 +311,7 @@ NS_IMETHODIMP
|
|||||||
nsXFormsDelegateStub::GetXFormsAccessors(nsIXFormsAccessors **aAccessor)
|
nsXFormsDelegateStub::GetXFormsAccessors(nsIXFormsAccessors **aAccessor)
|
||||||
{
|
{
|
||||||
if (!mAccessor) {
|
if (!mAccessor) {
|
||||||
mAccessor = new nsXFormsAccessors(this, mElement);
|
mAccessor = new nsXFormsControlAccessors(this, mElement);
|
||||||
if (!mAccessor) {
|
if (!mAccessor) {
|
||||||
return NS_ERROR_OUT_OF_MEMORY;
|
return NS_ERROR_OUT_OF_MEMORY;
|
||||||
}
|
}
|
||||||
@ -318,3 +319,4 @@ nsXFormsDelegateStub::GetXFormsAccessors(nsIXFormsAccessors **aAccessor)
|
|||||||
NS_ADDREF(*aAccessor = mAccessor);
|
NS_ADDREF(*aAccessor = mAccessor);
|
||||||
return NS_OK;
|
return NS_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -119,7 +119,7 @@ protected:
|
|||||||
|
|
||||||
nsString mControlType;
|
nsString mControlType;
|
||||||
/** The accessors object for this delegate */
|
/** The accessors object for this delegate */
|
||||||
nsRefPtr<nsXFormsAccessors> mAccessor;
|
nsRefPtr<nsXFormsControlAccessors> mAccessor;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@ -65,6 +65,7 @@
|
|||||||
#include "nsIURL.h"
|
#include "nsIURL.h"
|
||||||
#include "nsNetUtil.h"
|
#include "nsNetUtil.h"
|
||||||
#include "nsIXFormsControl.h"
|
#include "nsIXFormsControl.h"
|
||||||
|
#include "nsXFormsAccessors.h"
|
||||||
#include "nsXFormsTypes.h"
|
#include "nsXFormsTypes.h"
|
||||||
#include "nsXFormsXPathParser.h"
|
#include "nsXFormsXPathParser.h"
|
||||||
#include "nsXFormsXPathAnalyzer.h"
|
#include "nsXFormsXPathAnalyzer.h"
|
||||||
@ -1037,7 +1038,7 @@ nsXFormsModelElement::OnCreated(nsIXTFElementWrapper *aWrapper)
|
|||||||
return NS_OK;
|
return NS_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
// nsIXFormsModelElement
|
// nsIXFormsNSModelElement
|
||||||
|
|
||||||
NS_IMETHODIMP
|
NS_IMETHODIMP
|
||||||
nsXFormsModelElement::GetInstanceDocuments(nsIDOMNodeList **aDocuments)
|
nsXFormsModelElement::GetInstanceDocuments(nsIDOMNodeList **aDocuments)
|
||||||
@ -1048,6 +1049,69 @@ nsXFormsModelElement::GetInstanceDocuments(nsIDOMNodeList **aDocuments)
|
|||||||
return NS_OK;
|
return NS_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
NS_IMETHODIMP
|
||||||
|
nsXFormsModelElement::GetAccessorsByNode(nsIDOMNode *aInstanceNode,
|
||||||
|
nsIXFormsAccessors **aAccessors)
|
||||||
|
{
|
||||||
|
NS_ENSURE_ARG(aInstanceNode);
|
||||||
|
NS_ENSURE_ARG_POINTER(aAccessors);
|
||||||
|
*aAccessors = nsnull;
|
||||||
|
|
||||||
|
nsCOMPtr<nsIDOMNode> instanceDocNode;
|
||||||
|
nsresult rv =
|
||||||
|
nsXFormsUtils::GetInstanceNodeForData(aInstanceNode,
|
||||||
|
getter_AddRefs(instanceDocNode));
|
||||||
|
NS_ENSURE_SUCCESS(rv, rv);
|
||||||
|
|
||||||
|
nsCOMPtr<nsIDOMNode> modelNode;
|
||||||
|
instanceDocNode->GetParentNode(getter_AddRefs(modelNode));
|
||||||
|
NS_ENSURE_STATE(modelNode);
|
||||||
|
|
||||||
|
nsCOMPtr<nsIDOM3Node> theModelNode(do_QueryInterface(mElement));
|
||||||
|
PRBool isSameNode = PR_FALSE;
|
||||||
|
theModelNode->IsSameNode(modelNode, &isSameNode);
|
||||||
|
NS_ENSURE_TRUE(isSameNode, NS_ERROR_UNEXPECTED);
|
||||||
|
|
||||||
|
*aAccessors = new nsXFormsAccessors(this, aInstanceNode);
|
||||||
|
NS_ENSURE_TRUE(*aAccessors, NS_ERROR_OUT_OF_MEMORY);
|
||||||
|
|
||||||
|
NS_ADDREF(*aAccessors);
|
||||||
|
return NS_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
NS_IMETHODIMP
|
||||||
|
nsXFormsModelElement::GetAccessorsByExpr(const nsAString& aXPathExpr,
|
||||||
|
nsIXFormsAccessors **aAccessors)
|
||||||
|
{
|
||||||
|
NS_ENSURE_ARG_POINTER(aAccessors);
|
||||||
|
*aAccessors = nsnull;
|
||||||
|
|
||||||
|
nsCOMPtr<nsIDOMDocument> firstInstanceDoc =
|
||||||
|
FindInstanceDocument(EmptyString());
|
||||||
|
NS_ENSURE_STATE(firstInstanceDoc);
|
||||||
|
|
||||||
|
nsCOMPtr<nsIDOMElement> defaultContextNode;
|
||||||
|
firstInstanceDoc->GetDocumentElement(getter_AddRefs(defaultContextNode));
|
||||||
|
|
||||||
|
nsCOMPtr<nsIDOMXPathResult> xpRes;
|
||||||
|
nsXFormsUtils::EvaluateXPath(aXPathExpr, defaultContextNode, mElement,
|
||||||
|
nsIDOMXPathResult::FIRST_ORDERED_NODE_TYPE,
|
||||||
|
getter_AddRefs(xpRes));
|
||||||
|
NS_ENSURE_STATE(xpRes);
|
||||||
|
|
||||||
|
nsCOMPtr<nsIDOMNode> instanceNode;
|
||||||
|
xpRes->GetSingleNodeValue(getter_AddRefs(instanceNode));
|
||||||
|
NS_ENSURE_STATE(instanceNode);
|
||||||
|
|
||||||
|
*aAccessors = new nsXFormsAccessors(this, instanceNode);
|
||||||
|
NS_ENSURE_TRUE(*aAccessors, NS_ERROR_OUT_OF_MEMORY);
|
||||||
|
|
||||||
|
NS_ADDREF(*aAccessors);
|
||||||
|
return NS_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
// nsIXFormsModelElement
|
||||||
|
|
||||||
NS_IMETHODIMP
|
NS_IMETHODIMP
|
||||||
nsXFormsModelElement::GetInstanceDocument(const nsAString& aInstanceID,
|
nsXFormsModelElement::GetInstanceDocument(const nsAString& aInstanceID,
|
||||||
nsIDOMDocument **aDocument)
|
nsIDOMDocument **aDocument)
|
||||||
@ -1180,6 +1244,18 @@ nsXFormsModelElement::SetStates(nsIXFormsControl *aControl,
|
|||||||
return NS_OK;
|
return NS_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
NS_IMETHODIMP
|
||||||
|
nsXFormsModelElement::GetStates(nsIDOMNode *aBoundNode, PRInt32 *aStates)
|
||||||
|
{
|
||||||
|
NS_ENSURE_ARG_POINTER(aStates);
|
||||||
|
|
||||||
|
const nsXFormsNodeState *ns = mMDG.GetNodeState(aBoundNode);
|
||||||
|
NS_ENSURE_STATE(ns);
|
||||||
|
|
||||||
|
*aStates = ns->GetIntrinsicState();
|
||||||
|
return NS_OK;
|
||||||
|
}
|
||||||
|
|
||||||
NS_IMETHODIMP
|
NS_IMETHODIMP
|
||||||
nsXFormsModelElement::Revalidate()
|
nsXFormsModelElement::Revalidate()
|
||||||
{
|
{
|
||||||
|
|||||||
@ -51,11 +51,10 @@ public:
|
|||||||
NS_DECL_ISUPPORTS_INHERITED
|
NS_DECL_ISUPPORTS_INHERITED
|
||||||
NS_DECL_NSIXFORMSRANGEACCESSORS
|
NS_DECL_NSIXFORMSRANGEACCESSORS
|
||||||
NS_FORWARD_NSIXFORMSRANGECONDITIONACCESSORS(nsXFormsRangeConditionAccessors::)
|
NS_FORWARD_NSIXFORMSRANGECONDITIONACCESSORS(nsXFormsRangeConditionAccessors::)
|
||||||
NS_FORWARD_NSIXFORMSACCESSORS(nsXFormsAccessors::)
|
NS_FORWARD_NSIXFORMSACCESSORS(nsXFormsControlAccessors::)
|
||||||
|
|
||||||
// Constructor
|
// Constructor
|
||||||
nsXFormsRangeAccessors(nsIDelegateInternal* aDelegate,
|
nsXFormsRangeAccessors(nsIDelegateInternal* aDelegate, nsIDOMElement *aElement)
|
||||||
nsIDOMElement* aElement)
|
|
||||||
: nsXFormsRangeConditionAccessors(aDelegate, aElement)
|
: nsXFormsRangeConditionAccessors(aDelegate, aElement)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|||||||
@ -45,10 +45,17 @@
|
|||||||
#include "nsXFormsUtils.h"
|
#include "nsXFormsUtils.h"
|
||||||
|
|
||||||
NS_IMPL_ISUPPORTS_INHERITED2(nsXFormsRangeConditionAccessors,
|
NS_IMPL_ISUPPORTS_INHERITED2(nsXFormsRangeConditionAccessors,
|
||||||
nsXFormsAccessors,
|
nsXFormsControlAccessors,
|
||||||
nsIXFormsRangeConditionAccessors,
|
nsIXFormsRangeConditionAccessors,
|
||||||
nsIClassInfo)
|
nsIClassInfo)
|
||||||
|
|
||||||
|
// Constructor
|
||||||
|
nsXFormsRangeConditionAccessors::nsXFormsRangeConditionAccessors(nsIDelegateInternal *aDelegate,
|
||||||
|
nsIDOMElement *aElement)
|
||||||
|
: nsXFormsControlAccessors(aDelegate, aElement)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
// nsXFormsRangeConditionAccessors
|
// nsXFormsRangeConditionAccessors
|
||||||
|
|
||||||
NS_IMETHODIMP
|
NS_IMETHODIMP
|
||||||
@ -71,14 +78,9 @@ nsXFormsRangeConditionAccessors::SetInRange(PRBool aInRange)
|
|||||||
* then we need to set the state to the new value and dispatch
|
* then we need to set the state to the new value and dispatch
|
||||||
* xforms-in-range or xforms-out-of-range
|
* xforms-in-range or xforms-out-of-range
|
||||||
*/
|
*/
|
||||||
nsCOMPtr<nsIXFormsControl> control(do_QueryInterface(mDelegate));
|
nsCOMPtr<nsIXTFElementWrapper> xtfWrap(do_QueryInterface(mElement));
|
||||||
NS_ENSURE_STATE(control);
|
|
||||||
|
|
||||||
nsCOMPtr<nsIDOMElement> element;
|
|
||||||
control->GetElement(getter_AddRefs(element));
|
|
||||||
nsCOMPtr<nsIXTFElementWrapper> xtfWrap(do_QueryInterface(element));
|
|
||||||
NS_ENSURE_STATE(xtfWrap);
|
NS_ENSURE_STATE(xtfWrap);
|
||||||
nsCOMPtr<nsIContent> content(do_QueryInterface(element));
|
nsCOMPtr<nsIContent> content(do_QueryInterface(mElement));
|
||||||
NS_ENSURE_STATE(content);
|
NS_ENSURE_STATE(content);
|
||||||
|
|
||||||
PRInt32 state = content->IntrinsicState();
|
PRInt32 state = content->IntrinsicState();
|
||||||
@ -93,7 +95,7 @@ nsXFormsRangeConditionAccessors::SetInRange(PRBool aInRange)
|
|||||||
rv = xtfWrap->SetIntrinsicState(state);
|
rv = xtfWrap->SetIntrinsicState(state);
|
||||||
NS_ENSURE_SUCCESS(rv, rv);
|
NS_ENSURE_SUCCESS(rv, rv);
|
||||||
|
|
||||||
nsXFormsUtils::DispatchEvent(element,
|
nsXFormsUtils::DispatchEvent(mElement,
|
||||||
aInRange ? eEvent_InRange : eEvent_OutOfRange);
|
aInRange ? eEvent_InRange : eEvent_OutOfRange);
|
||||||
|
|
||||||
return NS_OK;
|
return NS_OK;
|
||||||
|
|||||||
@ -45,21 +45,19 @@
|
|||||||
* nsIXFormsRangeConditionAccessors.
|
* nsIXFormsRangeConditionAccessors.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
class nsXFormsRangeConditionAccessors : public nsXFormsAccessors,
|
class nsXFormsRangeConditionAccessors : public nsXFormsControlAccessors,
|
||||||
public nsIXFormsRangeConditionAccessors
|
public nsIXFormsRangeConditionAccessors
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
NS_DECL_ISUPPORTS_INHERITED
|
NS_DECL_ISUPPORTS_INHERITED
|
||||||
NS_DECL_NSIXFORMSRANGECONDITIONACCESSORS
|
NS_DECL_NSIXFORMSRANGECONDITIONACCESSORS
|
||||||
NS_FORWARD_NSIXFORMSACCESSORS(nsXFormsAccessors::)
|
NS_FORWARD_NSIXFORMSACCESSORS(nsXFormsControlAccessors::)
|
||||||
|
|
||||||
// Constructor
|
// Constructor
|
||||||
nsXFormsRangeConditionAccessors(nsIDelegateInternal *aDelegate,
|
nsXFormsRangeConditionAccessors(nsIDelegateInternal *aDelegate,
|
||||||
nsIDOMElement *aElement)
|
nsIDOMElement *aElement);
|
||||||
: nsXFormsAccessors(aDelegate, aElement)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
// nsIClassInfo overrides
|
// nsIClassInfo overrides
|
||||||
NS_IMETHOD GetInterfaces(PRUint32 *aCount, nsIID * **aArray);
|
NS_IMETHOD GetInterfaces(PRUint32 *aCount, nsIID * **aArray);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user