blob: c08b6dc845127440083fab0a792b0e7778ba5de6 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2005 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.wst.xml.ui.internal.validation;
public class XMLMessageInfoHelper
{
public XMLMessageInfoHelper()
{
super();
}
/**
* returns an array containing information about what should be underlined with the red "squiggles"
* using the errorKey, and the messageArguments
* <br>Position 0 of the array returned contains the selection Strategy,or what DOM Element to underline.
* For example "ATTRIBUTE_NAME"
* <br>Position 1 contains the name or value to squiggle.
* <p>For example, if we wanted to squiggle the attribute name of an attribute name
* foo this method would return {"ATTRIBUTE_NAME", "foo"}
* </p>
* @param errorKey the error key given by the Xerces parser
* @param messageArguments the arguments used by Xerces to "fill in the blanks" of their messages
* @return an array containing the squiggle information
* @see org.eclipse.wst.xml.ui.internal.validation.DelegatingSourceValidator
*
*/
public String[] createMessageInfo(String errorKey, Object[] messageArguments)
{
String selectionStrategy = null;
String nameOrValue = null;
if (errorKey.equals("cvc-complex-type.2.4.a") || errorKey.equals("cvc-complex-type.2.4.d") || errorKey.equals("cvc-complex-type.2.4.b") || errorKey.equals("MSG_CONTENT_INVALID") //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
| errorKey.equals("MSG_CONTENT_INCOMPLETE") || errorKey.equals("MSG_REQUIRED_ATTRIBUTE_NOT_SPECIFIED") || errorKey.equals("cvc-complex-type.4")) //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
{
selectionStrategy = "START_TAG"; //$NON-NLS-1$
}
else if (errorKey.equals("cvc-type.3.1.3")) //$NON-NLS-1$
{
selectionStrategy = "TEXT"; //$NON-NLS-1$
}
else if (errorKey.equals("cvc-complex-type.2.3")) //$NON-NLS-1$
{
selectionStrategy = "FIRST_NON_WHITESPACE_TEXT"; //$NON-NLS-1$
}
else if (errorKey.equals("cvc-type.3.1.1")) //$NON-NLS-1$
{
selectionStrategy = "ALL_ATTRIBUTES"; //$NON-NLS-1$
}
else if (errorKey.equals("cvc-complex-type.3.2.2") || errorKey.equals("MSG_ATTRIBUTE_NOT_DECLARED")) //$NON-NLS-1$ //$NON-NLS-2$
{
selectionStrategy = "ATTRIBUTE_NAME"; //$NON-NLS-1$
//in this case we need nameOrValue to be the name of the attribute to underline
nameOrValue = (String)messageArguments[1];
}
else if (errorKey.equals("cvc-attribute.3") || errorKey.equals("MSG_ATTRIBUTE_VALUE_NOT_IN_LIST") || errorKey.equals("cvc-complex-type.3.1")) //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
{
selectionStrategy = "ATTRIBUTE_VALUE"; //$NON-NLS-1$
//in this case we need nameOrValue to be the name of the Attribute
if (errorKey.equals("cvc-attribute.3") || errorKey.equals("cvc-complex-type.3.1")) //$NON-NLS-1$ //$NON-NLS-2$
{ nameOrValue = (String)messageArguments[1];
}
else if (errorKey.equals("MSG_ATTRIBUTE_VALUE_NOT_IN_LIST")) //$NON-NLS-1$
{ nameOrValue = (String)messageArguments[0];
}
}
else if (errorKey.equals("cvc-elt.4.2")) //$NON-NLS-1$
{ selectionStrategy="VALUE_OF_ATTRIBUTE_WITH_GIVEN_VALUE"; //$NON-NLS-1$
//in this case we need nameOrValue to be the value of the attribute we want to unerline
nameOrValue = (String)messageArguments[1];
}
else if (errorKey.equals("EntityNotDeclared")) //$NON-NLS-1$
{ selectionStrategy="TEXT_ENTITY_REFERENCE"; //$NON-NLS-1$
nameOrValue = (String)messageArguments[0];
}
else if (errorKey.equals("ElementUnterminated")) //$NON-NLS-1$
{
selectionStrategy = "ENTIRE_ELEMENT"; //$NON-NLS-1$
}
String messageInfo[] = new String[2];
messageInfo[0] = selectionStrategy != null? selectionStrategy: ""; //$NON-NLS-1$
messageInfo[1] = nameOrValue;
return messageInfo;
}
}