| /******************************************************************************* |
| * Copyright (c) 2010 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.html.core.internal.contentmodel; |
| |
| |
| |
| import java.lang.reflect.Field; |
| import java.util.Arrays; |
| import java.util.Collection; |
| import java.util.Vector; |
| |
| import org.eclipse.wst.html.core.internal.provisional.HTML50Namespace; |
| import org.eclipse.wst.xml.core.internal.contentmodel.CMNode; |
| |
| /** |
| * Factory for element declarations. |
| */ |
| class HTML5ElementCollection extends ElementCollection implements org.eclipse.wst.html.core.internal.provisional.HTML50Namespace.ElementName { |
| |
| |
| // Element IDs |
| private static class Ids50 extends Ids { |
| // <<D205513 |
| |
| public static final int ID_ARTICLE =106; |
| public static final int ID_ASIDE =107; |
| public static final int ID_AUDIO =108; |
| public static final int ID_CANVAS =109; |
| public static final int ID_COMMAND =110; |
| public static final int ID_DATALIST =111; |
| public static final int ID_DETAILS = 112; |
| public static final int ID_FIGURE =113; |
| public static final int ID_FIGCAPTION = 114; |
| public static final int ID_FOOTER =115; |
| public static final int ID_HEADER = 116; |
| public static final int ID_HGROUP =117; |
| public static final int ID_KEYGEN =118; |
| public static final int ID_MARK =119; |
| public static final int ID_MATH =120; |
| public static final int ID_METER =121; |
| public static final int ID_NAV =122; |
| public static final int ID_OUTPUT =123; |
| public static final int ID_PROGRESS =124; |
| public static final int ID_RP = 125; |
| public static final int ID_RT = 126; |
| public static final int ID_RUBY =127; |
| public static final int ID_SECTION =128; |
| public static final int ID_SOURCE = 129; |
| public static final int ID_SUMMARY = 130; |
| public static final int ID_SVG =131; |
| public static final int ID_TIME =132; |
| public static final int ID_VIDEO =133; |
| |
| // D205513 |
| |
| public static int getNumOfIds() { |
| if (numofids != -1) |
| return numofids; |
| |
| // NOTE: If the reflection is too slow, this method should |
| // just return the literal value, like 105. |
| // -- 5/25/2001 |
| Class clazz = Ids50.class; |
| Field[] fields = clazz.getFields(); |
| numofids = 0; |
| for (int i = 0; i < fields.length; i++) { |
| String name = fields[i].getName(); |
| if (name.startsWith("ID_"))//$NON-NLS-1$ |
| numofids++; |
| } |
| return numofids; |
| } |
| |
| // chache the result of the reflection. |
| private static int numofids = -1; |
| } |
| |
| /** %fontstyle;. TT | I | B | U | S | STRIKE | BIG | SMALL | BLINK */ |
| private static final String[] FONTSTYLE = {TT, I, B, U, S, STRIKE, BIG, SMALL, BLINK}; |
| /** %formctl;. INPUT | SELECT | TEXTAREA | LABEL | BUTTON */ |
| private static final String[] FORMCTL = {INPUT, SELECT, TEXTAREA, LABEL, BUTTON, DATALIST}; |
| /** %phrase;. |
| * EM | STRONG | DFN | CODE | SAMP | KBD | VAR | CITE | ABBR | ACRONYM | MARK |
| */ private static final String[] PHRASE = {KEYGEN, EM, STRONG, DFN, CODE, SAMP, KBD, VAR, CITE, ABBR, ACRONYM, MARK}; |
| /** %special;. |
| * A | IMG | APPLET | OBJECT | FONT | BASEFONT | BR | SCRIPT | |
| * MAP | Q | SUB | SUP | SPAN | BDO | IFRAME | EMBED | MARQUEE | |
| * D2W | SUBMIT |
| * WBR | NOBR | BGSOUND |
| */ |
| private static final String[] SPECIAL = {A, IMG, APPLET, OBJECT, FONT, BASEFONT, BR, WBR, // D205513 |
| SCRIPT, MAP, Q, SUB, SUP, SPAN, BDO, IFRAME, EMBED, BGSOUND, // D205513 |
| MARQUEE, NOBR, // D205513 |
| OUTPUT, TIME, METER, PROGRESS, |
| COMMAND |
| }; |
| /** %heading;. H[1-6] */ |
| private static final String[] HEADING = {H1, H2, H3, H4, H5, H6}; |
| /** %list;. UL | OL | DIR | MENU */ |
| private static final String[] LIST = {UL, OL, DIR, MENU}; |
| /** %preformatted;. PRE */ |
| private static final String[] PREFORMATTED = {PRE}; |
| /** %sectioning;. ARTICLE | ASIDE | NAV | SECTION */ |
| private static final String[] SECTIONING = { ARTICLE, ASIDE, NAV, SECTION }; |
| |
| /** %embedded;. AUDIO|CANVAS|EMBED|IFRAME|IMG|MATH|OBJECT|SVG|VIDEO */ |
| private static final String[] EMBEDDED = { AUDIO, CANVAS, EMBED, IFRAME, IMG, MATH, OBJECT, SVG, VIDEO}; |
| |
| private static String[] fNames = null; |
| |
| /** |
| */ |
| public HTML5ElementCollection(AttributeCollection collection) { |
| super(getNames(), collection); |
| attributeCollection = collection; |
| } |
| |
| /** |
| * Actually creates HTMLElementDeclaration instance. |
| * @return HTMLElementDeclaration |
| */ |
| protected CMNode create(String elementName) { |
| CMNode edec = null; |
| |
| if (elementName.equalsIgnoreCase(ACRONYM)) { |
| edec = new HedPhrase(ACRONYM, this); |
| ((HTMLElemDeclImpl) edec).obsolete(true); |
| } |
| else if (elementName.equalsIgnoreCase(APPLET)) { |
| edec = new HedAPPLET(this); |
| ((HTMLElemDeclImpl) edec).obsolete(true); |
| } |
| else if (elementName.equalsIgnoreCase(ARTICLE)) { |
| edec = new HedSectioning(ARTICLE, this); |
| |
| } |
| else if (elementName.equalsIgnoreCase(ASIDE)) { |
| edec = new HedSectioning(ASIDE, this); |
| |
| } |
| else if (elementName.equalsIgnoreCase(AUDIO)) { |
| edec = new HedMediaElement(AUDIO, this); |
| |
| } |
| else if (elementName.equalsIgnoreCase(BASEFONT)) { |
| edec = new HedBASEFONT(this); |
| ((HTMLElemDeclImpl) edec).obsolete(true); |
| } |
| else if (elementName.equalsIgnoreCase(BIG)) { |
| edec = new HedFontStyle(BIG, this); |
| ((HTMLElemDeclImpl) edec).obsolete(true); |
| } |
| else if (elementName.equalsIgnoreCase(CANVAS)) { |
| edec = new HedCANVAS(this); |
| |
| } |
| else if (elementName.equalsIgnoreCase(CENTER)) { |
| edec = new HedCENTER(this); |
| ((HTMLElemDeclImpl) edec).obsolete(true); |
| } |
| else if (elementName.equalsIgnoreCase(COMMAND)) { |
| edec = new HedCOMMAND(this); |
| |
| } |
| else if (elementName.equalsIgnoreCase(DATALIST)) { |
| edec = new HedDATALIST(this); |
| |
| } |
| else if (elementName.equalsIgnoreCase(DETAILS)) { |
| edec = new HedDETAILS(this); |
| |
| } |
| else if (elementName.equalsIgnoreCase(DIR)) { |
| edec = new HedMENU(DIR, this); |
| ((HTMLElemDeclImpl) edec).obsolete(true); |
| } |
| else if (elementName.equalsIgnoreCase(FIGCAPTION)) { |
| edec = new HedFIGCAPTION(this); |
| |
| } |
| else if (elementName.equalsIgnoreCase(FIGURE)) { |
| edec = new HedFIGURE(this); |
| |
| } |
| else if (elementName.equalsIgnoreCase(FOOTER)) { |
| edec = new HedHEADER(HTML50Namespace.ElementName.FOOTER ,this); |
| |
| } |
| else if (elementName.equalsIgnoreCase(FRAME)) { |
| edec = new HedFRAME(this); |
| ((HTMLElemDeclImpl) edec).obsolete(true); |
| } |
| else if (elementName.equalsIgnoreCase(FRAMESET)) { |
| edec = new HedFRAMESET(this); |
| ((HTMLElemDeclImpl) edec).obsolete(true); |
| } |
| else if (elementName.equalsIgnoreCase(HEADER)) { |
| edec = new HedHEADER(HTML50Namespace.ElementName.HEADER ,this); |
| } |
| else if (elementName.equalsIgnoreCase(HGROUP)) { |
| edec = new HedHGROUP(this); |
| |
| } |
| else if (elementName.equalsIgnoreCase(ISINDEX)) { |
| edec = new HedISINDEX(this); |
| ((HTMLElemDeclImpl) edec).obsolete(true); |
| } |
| else if (elementName.equalsIgnoreCase(KEYGEN)) { |
| edec = new HedKEYGEN(this); |
| |
| } |
| else if (elementName.equalsIgnoreCase(MARK)) { |
| edec = new HedPhrase(HTML50Namespace.ElementName.MARK,this); |
| |
| } |
| else if (elementName.equalsIgnoreCase(MATH)) { |
| edec = new HedMath(this); |
| |
| } |
| else if (elementName.equalsIgnoreCase(METER)) { |
| edec = new HedMETER(this); |
| } |
| else if (elementName.equalsIgnoreCase(NAV)) { |
| edec = new HedSectioning(NAV, this); |
| } |
| else if (elementName.equalsIgnoreCase(NOFRAMES)) { |
| edec = new HedNOFRAMES(this); |
| ((HTMLElemDeclImpl) edec).obsolete(true); |
| } |
| else if (elementName.equalsIgnoreCase(OUTPUT)) { |
| edec = new HedOUTPUT(this); |
| |
| } |
| else if (elementName.equalsIgnoreCase(PROGRESS)) { |
| edec = new HedPROGRESS(this); |
| |
| } |
| else if (elementName.equalsIgnoreCase(RP)) { |
| edec = new HedRP(this); |
| |
| } |
| else if (elementName.equalsIgnoreCase(RT)) { |
| edec = new HedRT(this); |
| |
| } |
| else if (elementName.equalsIgnoreCase(RUBY)) { |
| edec = new HedRUBY(this); |
| |
| } |
| else if (elementName.equalsIgnoreCase(S)) { |
| edec = new HedFontStyle(S, this); |
| ((HTMLElemDeclImpl) edec).obsolete(true); |
| } |
| else if (elementName.equalsIgnoreCase(SECTION)) { |
| edec = new HedSectioning(SECTION, this); |
| |
| } |
| else if (elementName.equalsIgnoreCase(SOURCE)) { |
| edec = new HedSOURCE(this); |
| |
| } |
| else if (elementName.equalsIgnoreCase(STRIKE)) { |
| edec = new HedFontStyle(STRIKE, this); |
| ((HTMLElemDeclImpl) edec).obsolete(true); |
| } |
| else if (elementName.equalsIgnoreCase(SUMMARY)) { |
| edec = new HedSUMMARY(this); |
| } |
| else if (elementName.equalsIgnoreCase(SVG)) { |
| edec = new HedSVG(this); |
| } |
| else if (elementName.equalsIgnoreCase(TIME)) { |
| edec = new HedTIME(this); |
| } |
| else if (elementName.equalsIgnoreCase(TT)) { |
| edec = new HedFontStyle(TT, this); |
| ((HTMLElemDeclImpl) edec).obsolete(true); |
| } |
| else if (elementName.equalsIgnoreCase(U)) { |
| edec = new HedFontStyle(U, this); |
| ((HTMLElemDeclImpl) edec).obsolete(true); |
| } |
| else if (elementName.equalsIgnoreCase(VIDEO)) { |
| edec = new HedVIDEO(this); |
| |
| } |
| // unknown |
| else { |
| // NOTE: We don't define the UNKNOWN element declaration. |
| // <code>null</code> for a declaration is a sign of |
| // the target element is unknown. |
| // -- 3/9/2001 |
| edec = super.create(elementName); |
| } |
| return edec; |
| } |
| |
| public AttributeCollection getAttributeCollection() { |
| return attributeCollection; |
| } |
| |
| public final Collection getNamesOfBlock() { |
| // P, DL, DIV, CENTER, NOSCRIPT, NOFRAMES, BLOCKQUOTE, FORM, ISINDEX, HR, |
| // TABLE, FIELDSET, ADDRESS, RUBY, FIGURE |
| String[] blockMisc = {HEADER, FOOTER, HGROUP, P, DL, DIV, CENTER, NOSCRIPT, NOFRAMES, BLOCKQUOTE, FORM, ISINDEX, HR, TABLE, FIELDSET, ADDRESS, RUBY, FIGURE}; |
| Vector names = new Vector(Arrays.asList(blockMisc)); |
| // %heading; |
| names.addAll(Arrays.asList(HEADING)); |
| // %list; |
| names.addAll(Arrays.asList(LIST)); |
| // %preformatted; |
| names.addAll(Arrays.asList(PREFORMATTED)); |
| |
| |
| return names; |
| } |
| |
| |
| public final void getSectioning(CMGroupImpl group) { |
| if (group == null) |
| return; |
| getDeclarations(group, Arrays.asList(SECTIONING).iterator()); |
| } |
| |
| public void getEmbedded(CMGroupImpl group) { |
| if (group == null) |
| return; |
| getDeclarations(group, Arrays.asList(EMBEDDED).iterator()); |
| } |
| |
| public void getFlow(CMGroupImpl group) { |
| if (group == null) |
| return; |
| super.getFlow(group); |
| getSectioning(group); |
| CMNode node = getNamedItem(DETAILS); |
| if (node != null) { |
| group.appendChild(node); |
| } |
| } |
| |
| public void getInline(CMGroupImpl group) { |
| if (group == null) |
| return; |
| super.getInline(group); |
| getEmbedded(group); |
| } |
| |
| /** |
| * Create element declarations and store them into a <code>CMGroupImpl</code> |
| * instance.<br> |
| * @param group CMGroupImpl Return values. |
| */ |
| public final void getFontstyle(CMGroupImpl group) { |
| if (group == null) |
| return; |
| getDeclarations(group, Arrays.asList(FONTSTYLE).iterator()); |
| } |
| |
| /** |
| * Create element declarations and store them into a <code>CMGroupImpl</code> |
| * instance.<br> |
| * @param group CMGroupImpl Return values. |
| */ |
| public final void getFormctrl(CMGroupImpl group) { |
| if (group == null) |
| return; |
| getDeclarations(group, Arrays.asList(FORMCTL).iterator()); |
| } |
| |
| /** |
| * %heading;. |
| * @param group CMGroupImpl Return values. |
| */ |
| public final void getHeading(CMGroupImpl group) { |
| if (group == null) |
| return; |
| |
| getDeclarations(group, Arrays.asList(HEADING).iterator()); |
| } |
| |
| |
| |
| /** |
| * %list;. |
| * @param group CMGroupImpl Return values. |
| */ |
| public final void getList(CMGroupImpl group) { |
| if (group == null) |
| return; |
| |
| getDeclarations(group, Arrays.asList(LIST).iterator()); |
| } |
| |
| /** |
| * Create element declarations and store them into a <code>CMGroupImpl</code> |
| * instance.<br> |
| * @param group CMGroupImpl Return values. |
| */ |
| public final void getPhrase(CMGroupImpl group) { |
| if (group == null) |
| return; |
| getDeclarations(group, Arrays.asList(PHRASE).iterator()); |
| } |
| |
| /** |
| * %preformatted; |
| * @param group CMGroupImpl Return values. |
| */ |
| public final void getPreformatted(CMGroupImpl group) { |
| if (group == null) |
| return; |
| |
| getDeclarations(group, Arrays.asList(PREFORMATTED).iterator()); |
| } |
| |
| /** |
| * Create element declarations and store them into a <code>CMGroupImpl</code> |
| * instance.<br> |
| * @param group CMGroupImpl Return values. |
| */ |
| public final void getSpecial(CMGroupImpl group) { |
| if (group == null) |
| return; |
| getDeclarations(group, Arrays.asList(SPECIAL).iterator()); |
| } |
| |
| private static String[] getNames() { |
| if (fNames == null) { |
| fNames = new String[Ids50.getNumOfIds()]; |
| fNames[Ids.ID_A] = A; |
| fNames[Ids.ID_ABBR] = ABBR; |
| fNames[Ids.ID_ACRONYM] = ACRONYM; |
| fNames[Ids.ID_ADDRESS] = ADDRESS; |
| fNames[Ids.ID_APPLET] = APPLET; |
| fNames[Ids.ID_AREA] = AREA; |
| fNames[Ids50.ID_ARTICLE] = ARTICLE; |
| fNames[Ids50.ID_ASIDE] = ASIDE; |
| fNames[Ids50.ID_AUDIO] = AUDIO; |
| fNames[Ids.ID_B] = B; |
| fNames[Ids.ID_BASE] = BASE; |
| fNames[Ids.ID_BASEFONT] = BASEFONT; |
| fNames[Ids.ID_BDO] = BDO; |
| fNames[Ids.ID_BIG] = BIG; |
| fNames[Ids.ID_BLINK] = BLINK; |
| fNames[Ids.ID_BLOCKQUOTE] = BLOCKQUOTE; |
| fNames[Ids.ID_BODY] = BODY; |
| fNames[Ids.ID_BR] = BR; |
| fNames[Ids.ID_BUTTON] = BUTTON; |
| fNames[Ids.ID_CAPTION] = CAPTION; |
| fNames[Ids50.ID_CANVAS] = CANVAS; |
| fNames[Ids.ID_CENTER] = CENTER; |
| fNames[Ids.ID_CITE] = CITE; |
| fNames[Ids.ID_CODE] = CODE; |
| fNames[Ids.ID_COL] = COL; |
| fNames[Ids.ID_COLGROUP] = COLGROUP; |
| fNames[Ids50.ID_COMMAND] = COMMAND; |
| fNames[Ids50.ID_DATALIST] = DATALIST; |
| fNames[Ids50.ID_DETAILS] = DETAILS; |
| fNames[Ids.ID_DD] = DD; |
| fNames[Ids.ID_DEL] = DEL; |
| fNames[Ids.ID_DFN] = DFN; |
| fNames[Ids.ID_DIR] = DIR; |
| fNames[Ids.ID_DIV] = DIV; |
| fNames[Ids.ID_DL] = DL; |
| fNames[Ids.ID_DT] = DT; |
| fNames[Ids.ID_EM] = EM; |
| fNames[Ids.ID_EMBED] = EMBED; |
| fNames[Ids.ID_FIELDSET] = FIELDSET; |
| fNames[Ids50.ID_FIGURE] = FIGURE; |
| fNames[Ids50.ID_FIGCAPTION] = FIGCAPTION; |
| fNames[Ids.ID_FONT] = FONT; |
| fNames[Ids.ID_FORM] = FORM; |
| fNames[Ids50.ID_FOOTER] = FOOTER; |
| fNames[Ids.ID_FRAME] = FRAME; |
| fNames[Ids.ID_FRAMESET] = FRAMESET; |
| fNames[Ids.ID_H1] = H1; |
| fNames[Ids.ID_H2] = H2; |
| fNames[Ids.ID_H3] = H3; |
| fNames[Ids.ID_H4] = H4; |
| fNames[Ids.ID_H5] = H5; |
| fNames[Ids.ID_H6] = H6; |
| fNames[Ids.ID_HEAD] = HEAD; |
| fNames[Ids50.ID_HEADER] = HEADER; |
| fNames[Ids50.ID_HGROUP] = HGROUP; |
| fNames[Ids.ID_HR] = HR; |
| fNames[Ids.ID_HTML] = HTML; |
| fNames[Ids.ID_I] = I; |
| fNames[Ids.ID_IFRAME] = IFRAME; |
| fNames[Ids.ID_IMG] = IMG; |
| fNames[Ids.ID_INPUT] = INPUT; |
| fNames[Ids.ID_INS] = INS; |
| fNames[Ids.ID_ISINDEX] = ISINDEX; |
| fNames[Ids.ID_KBD] = KBD; |
| fNames[Ids50.ID_KEYGEN] = KEYGEN; |
| fNames[Ids.ID_LABEL] = LABEL; |
| fNames[Ids.ID_LEGEND] = LEGEND; |
| fNames[Ids.ID_LI] = LI; |
| fNames[Ids.ID_LINK] = LINK; |
| fNames[Ids.ID_MAP] = MAP; |
| fNames[Ids50.ID_MARK] = MARK; |
| fNames[Ids.ID_MARQUEE] = MARQUEE; |
| fNames[Ids50.ID_MATH] = MATH; |
| fNames[Ids.ID_MENU] = MENU; |
| fNames[Ids.ID_META] = META; |
| fNames[Ids50.ID_METER] = METER; |
| fNames[Ids50.ID_NAV] = NAV; |
| fNames[Ids.ID_NOEMBED] = NOEMBED; |
| fNames[Ids.ID_NOFRAMES] = NOFRAMES; |
| fNames[Ids.ID_NOSCRIPT] = NOSCRIPT; |
| fNames[Ids.ID_OBJECT] = OBJECT; |
| fNames[Ids.ID_OL] = OL; |
| fNames[Ids.ID_OPTGROUP] = OPTGROUP; |
| fNames[Ids.ID_OPTION] = OPTION; |
| fNames[Ids50.ID_OUTPUT] = OUTPUT; |
| fNames[Ids.ID_P] = P; |
| fNames[Ids.ID_PARAM] = PARAM; |
| fNames[Ids.ID_PRE] = PRE; |
| fNames[Ids50.ID_PROGRESS] = PROGRESS; |
| fNames[Ids.ID_Q] = Q; |
| fNames[Ids50.ID_RP] = RP; |
| fNames[Ids50.ID_RT] = RT; |
| fNames[Ids50.ID_RUBY] = RUBY; |
| fNames[Ids.ID_S] = S; |
| fNames[Ids.ID_SAMP] = SAMP; |
| fNames[Ids.ID_SCRIPT] = SCRIPT; |
| fNames[Ids50.ID_SECTION] = SECTION; |
| fNames[Ids.ID_SELECT] = SELECT; |
| fNames[Ids.ID_SMALL] = SMALL; |
| fNames[Ids50.ID_SOURCE] = SOURCE; |
| fNames[Ids.ID_SPAN] = SPAN; |
| fNames[Ids.ID_STRIKE] = STRIKE; |
| fNames[Ids.ID_STRONG] = STRONG; |
| fNames[Ids.ID_STYLE] = STYLE; |
| fNames[Ids50.ID_SUMMARY] = SUMMARY; |
| fNames[Ids.ID_SUB] = SUB; |
| fNames[Ids.ID_SUP] = SUP; |
| fNames[Ids50.ID_SVG] = SVG; |
| fNames[Ids.ID_TABLE] = TABLE; |
| fNames[Ids.ID_TBODY] = TBODY; |
| fNames[Ids.ID_TD] = TD; |
| fNames[Ids.ID_TEXTAREA] = TEXTAREA; |
| fNames[Ids.ID_TFOOT] = TFOOT; |
| fNames[Ids.ID_TH] = TH; |
| fNames[Ids.ID_THEAD] = THEAD; |
| fNames[Ids50.ID_TIME] = TIME; |
| fNames[Ids.ID_TITLE] = TITLE; |
| fNames[Ids.ID_TR] = TR; |
| fNames[Ids.ID_TT] = TT; |
| fNames[Ids.ID_U] = U; |
| fNames[Ids.ID_UL] = UL; |
| fNames[Ids.ID_VAR] = VAR; |
| fNames[Ids50.ID_VIDEO] = VIDEO; |
| fNames[Ids.ID_WBR] = WBR; |
| fNames[Ids.ID_SSI_CONFIG] = SSI_CONFIG; |
| fNames[Ids.ID_SSI_ECHO] = SSI_ECHO; |
| fNames[Ids.ID_SSI_EXEC] = SSI_EXEC; |
| fNames[Ids.ID_SSI_FSIZE] = SSI_FSIZE; |
| fNames[Ids.ID_SSI_FLASTMOD] = SSI_FLASTMOD; |
| fNames[Ids.ID_SSI_INCLUDE] = SSI_INCLUDE; |
| fNames[Ids.ID_SSI_PRINTENV] = SSI_PRINTENV; |
| fNames[Ids.ID_SSI_SET] = SSI_SET; |
| fNames[Ids.ID_BGSOUND] = BGSOUND; |
| fNames[Ids.ID_NOBR] = NOBR; |
| fNames[Ids.ID_WBR] = WBR; |
| } |
| return fNames; |
| } |
| } |