From: Jonathan O. <os...@us...> - 2007-10-25 23:37:56
|
Update of /cvsroot/dlsciences/dlese-tools-project/src/org/dlese/dpc/schemedit/autoform In directory sc8-pr-cvs12.sourceforge.net:/tmp/cvs-serv30101/autoform Modified Files: EditorRenderer.java RendererImpl.java Log Message: render non-singleton multiSelect input as collapsible in metadata editor. Index: RendererImpl.java =================================================================== RCS file: /cvsroot/dlsciences/dlese-tools-project/src/org/dlese/dpc/schemedit/autoform/RendererImpl.java,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** RendererImpl.java 1 Oct 2007 20:48:06 -0000 1.3 --- RendererImpl.java 25 Oct 2007 23:37:39 -0000 1.4 *************** *** 396,402 **** if (inputElement.getName().equals("table")) ! inputElement.addAttribute("id", "${id}_input"); else ! inputElement.addAttribute("styleId", "${id}_input"); if (schemaNode.isDerivedModel() && !this.sh.isRequiredBranch(schemaNode)) { --- 396,402 ---- if (inputElement.getName().equals("table")) ! inputElement.addAttribute("id", "${id}"); else ! inputElement.addAttribute("styleId", "${id}"); if (schemaNode.isDerivedModel() && !this.sh.isRequiredBranch(schemaNode)) { *************** *** 500,505 **** Element multiSelectTable = df.createElement("table") - // .addAttribute ("border", "2") .addAttribute("width", "100%"); Element row = multiSelectTable.addElement("tr") .addAttribute("valign", "top"); --- 500,512 ---- Element multiSelectTable = df.createElement("table") .addAttribute("width", "100%"); + + if (!this.sh.isSingleton(xpath)) { + multiSelectTable.addAttribute ("info", "multiSelectTable: id=${id}"); + String style = "display__${"+formBeanName+".collapseBean.displayState};"; + // style += "border__red thin dotted;"; + multiSelectTable.addAttribute ("style", style); + } + Element row = multiSelectTable.addElement("tr") .addAttribute("valign", "top"); *************** *** 540,544 **** // String labelId = CollapseUtils.pathToId (xpath) + "_label"; ! String labelId = "${item.value}_label"; Element multiSelect = labelFormat.addElement("html__multibox") --- 547,552 ---- // String labelId = CollapseUtils.pathToId (xpath) + "_label"; ! // String labelId = "${item.value}_label"; ! String labelId = CollapseUtils.pathToId (xpath) + "_${item.value}_label"; Element multiSelect = labelFormat.addElement("html__multibox") *************** *** 614,617 **** --- 622,631 ---- } + public Label getMultiBoxLabel (String xpath) { + Label labelObj = getSimpleTypeLabel (xpath); + labelObj.setText(labelObj.getText() + " (simple)"); + return labelObj; + } + // only show delete controller in edit mode public Element getDeleteController(String itemPath, String elementName) { Index: EditorRenderer.java =================================================================== RCS file: /cvsroot/dlsciences/dlese-tools-project/src/org/dlese/dpc/schemedit/autoform/EditorRenderer.java,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** EditorRenderer.java 26 Jun 2007 21:44:24 -0000 1.2 --- EditorRenderer.java 25 Oct 2007 23:37:39 -0000 1.3 *************** *** 1,19 **** /** ! * Copyright 2002, 2003 DLESE Program Center/University Corporation for Atmospheric Research (UCAR), P.O. Box ! * 3000, Boulder, CO 80307, su...@dl....<p> * * This file is part of the DLESE Tools Project.<p> * ! * The DLESE Tools Project is free software; you can redistribute it and/or modify it under the terms of the ! * GNU General Public License as published by the Free Software Foundation; either version 2 of the License, ! * or (at your option) any later version.<p> * ! * The DLESE Tools Project is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; ! * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ! * General Public License for more details.<p> * ! * You should have received a copy of the GNU General Public License along with The DLESE System; if not, ! * write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ --- 1,23 ---- /** ! * Copyright 2002, 2003 DLESE Program Center/University Corporation for ! * Atmospheric Research (UCAR), P.O. Box 3000, Boulder, CO 80307, ! * su...@dl....<p> * * This file is part of the DLESE Tools Project.<p> * ! * The DLESE Tools Project is free software; you can redistribute it and/or ! * modify it under the terms of the GNU General Public License as published by ! * the Free Software Foundation; either version 2 of the License, or (at your ! * option) any later version.<p> * ! * The DLESE Tools Project is distributed in the hope that it will be useful, ! * but WITHOUT ANY WARRANTY; without even the implied warranty of ! * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General ! * Public License for more details.<p> * ! * You should have received a copy of the GNU General Public License along with ! * The DLESE System; if not, write to the Free Software Foundation, Inc., 59 ! * Temple Place, Suite 330, Boston, MA 02111-1307 USA */ *************** *** 47,53 **** /** ! * Renders JSP for metadata editing but is "Simple" in the sense that it provides no control for adding new ! * elements or deleting optional elements. Used as a superClass for other JSP-based renderers, such as {@link ! * org.dlese.dpc.schemedit.autoform.DleseEditorRenderer}. * * @author ostwald<p> --- 51,56 ---- /** ! * Renders JSP for metadata editing with controls for adding new elements or ! * deleting optional elements as well as for collapsible elements. * * @author ostwald<p> *************** *** 60,104 **** private static boolean debug = true; ! // --------- labels ----------- ! public SimpleTypeLabel getSimpleTypeLabel(String xpath, String siblingPath, String indexId) { ! prtln ("getSimpleTypeLabel()"); SimpleTypeLabel labelObj = super.getSimpleTypeLabel(xpath, siblingPath, indexId); ! String normalizedXPath = RendererHelper.normalizeXPath(xpath); SchemaNode schemaNode = this.sh.getSchemaNode(normalizedXPath); // optional, non-repeating derivedTextOnlyModels get a optionalItemContol ! if (schemaNode.isDerivedModel() && !this.sh.isRequiredBranch(schemaNode) && !this.sh.isRepeatingElement(schemaNode)) { ! // prtln ("adding simpleType control for " + xpath); ! labelObj.control = getOptionalItemControl(xpath); } ! return labelObj; } public ComplexTypeLabel getComplexTypeLabel(String xpath, String siblingPath, String indexId) { ComplexTypeLabel labelObj = super.getComplexTypeLabel(xpath, siblingPath, indexId); ! // make expand widget if (getLevel(xpath) > 0) { // node is expandable clause Element nodeIsExpandable = df.createElement("logic__equal") ! .addAttribute("name", formBeanName) ! .addAttribute("property", "nodeIsExpandable(" + xpath + ")") ! .addAttribute("value", "true"); ! // the clickable version Element labelLink = nodeIsExpandable.addElement("a") ! .addAttribute("href", "javascript__toggleDisplayState (" + RendererHelper.jspQuotedString("${id}") + ");"); ! Element nodeNotExpandable = df.createElement("logic__notEqual") ! .addAttribute("name", formBeanName) ! .addAttribute("property", "nodeIsExpandable(" + xpath + ")") ! .addAttribute("value", "true"); ! // load labelObj with the components it needs to render collapsible node labelObj.isExpandableTest = nodeIsExpandable.createCopy(); --- 63,156 ---- private static boolean debug = true; ! // --------- labels ----------- ! ! /** ! * Gets the simpleTypeLabel attribute of the EditorRenderer object ! * ! * @param xpath NOT YET DOCUMENTED ! * @param siblingPath NOT YET DOCUMENTED ! * @param indexId NOT YET DOCUMENTED ! * @return The simpleTypeLabel value ! */ public SimpleTypeLabel getSimpleTypeLabel(String xpath, String siblingPath, String indexId) { ! prtln("getSimpleTypeLabel()"); SimpleTypeLabel labelObj = super.getSimpleTypeLabel(xpath, siblingPath, indexId); ! String normalizedXPath = RendererHelper.normalizeXPath(xpath); SchemaNode schemaNode = this.sh.getSchemaNode(normalizedXPath); // optional, non-repeating derivedTextOnlyModels get a optionalItemContol ! if (schemaNode.isDerivedModel() && !this.sh.isRequiredBranch(schemaNode) && !this.sh.isRepeatingElement(schemaNode)) { ! // prtln ("adding simpleType control for " + xpath); ! labelObj.control = getOptionalItemControl(xpath); } ! ! return labelObj; ! } ! ! ! /** ! * Create label for a mulitBoxLabel element that will collapse the mulitBox ! * input.<P> ! * ! * Based on getComplexTypeLabel, but will always display collapse widget, ! * rather than first testing for nodeIsExpandable as getComplexTypeLabel does. ! * <P> ! * ! * Depends on the multibox input having an id and display style initialized to ! * value of collapseBean.displayState. ! * ! * @param xpath NOT YET DOCUMENTED ! * @return The multiBoxLabel value ! */ ! public Label getMultiBoxLabel(String xpath) { ! ComplexTypeLabel labelObj = getComplexTypeLabel(xpath); ! Element alwaysExpandable = df.createElement("c__if") ! .addAttribute("test", "${true}"); ! Element labelLink = alwaysExpandable.addElement("a") ! .addAttribute("href", "javascript__toggleDisplayState (" + RendererHelper.jspQuotedString("${id}") + ");"); ! ! Element notExpandableTest = df.createElement("c__if") ! .addAttribute("test", "${false}"); ! ! labelObj.isExpandableTest = alwaysExpandable.createCopy(); ! labelObj.notExpandableTest = notExpandableTest.createCopy(); ! labelObj.collapseWidget = getCollapseWidget().createCopy(); return labelObj; } + + /** + * Create a label with collapse widget (if this nodeIsExpandable is true for + * this node. + * + * @param xpath NOT YET DOCUMENTED + * @param siblingPath NOT YET DOCUMENTED + * @param indexId NOT YET DOCUMENTED + * @return The complexTypeLabel value + */ public ComplexTypeLabel getComplexTypeLabel(String xpath, String siblingPath, String indexId) { ComplexTypeLabel labelObj = super.getComplexTypeLabel(xpath, siblingPath, indexId); ! // make expand widget if (getLevel(xpath) > 0) { // node is expandable clause Element nodeIsExpandable = df.createElement("logic__equal") ! .addAttribute("name", formBeanName) ! .addAttribute("property", "nodeIsExpandable(" + xpath + ")") ! .addAttribute("value", "true"); ! // the clickable version Element labelLink = nodeIsExpandable.addElement("a") ! .addAttribute("href", "javascript__toggleDisplayState (" + RendererHelper.jspQuotedString("${id}") + ");"); ! Element nodeNotExpandable = df.createElement("logic__notEqual") ! .addAttribute("name", formBeanName) ! .addAttribute("property", "nodeIsExpandable(" + xpath + ")") ! .addAttribute("value", "true"); ! // load labelObj with the components it needs to render collapsible node labelObj.isExpandableTest = nodeIsExpandable.createCopy(); *************** *** 106,128 **** labelObj.collapseWidget = getCollapseWidget().createCopy(); } ! return labelObj; } ! // ---------------------------------- ! protected Element getCollapseWidget() { Element img_template = df.createElement("img") ! .addAttribute("id", "${id}_img") ! .addAttribute("border", "0") ! .addAttribute("hspace", "3") ! .addAttribute("height", "12") ! .addAttribute("width", "12"); Element choose = df.createElement("c__choose"); Element isOpen = choose.addElement("c__when") ! .addAttribute("test", "${"+formBeanName+".collapseBean.isOpen}"); ! // .addAttribute("test", "${"+formBeanName+".collapseBean.displayState == " + RendererHelper.jspQuotedString("block") + "}"); Element openedImg = img_template.createCopy(); --- 158,184 ---- labelObj.collapseWidget = getCollapseWidget().createCopy(); } ! return labelObj; } ! // ---------------------------------- ! /** ! * Render open/close widget for this element. ! * ! * @return The collapseWidget value ! */ protected Element getCollapseWidget() { Element img_template = df.createElement("img") ! .addAttribute("id", "${id}_img") ! .addAttribute("border", "0") ! .addAttribute("hspace", "3") ! .addAttribute("height", "12") ! .addAttribute("width", "12"); Element choose = df.createElement("c__choose"); Element isOpen = choose.addElement("c__when") ! .addAttribute("test", "${" + formBeanName + ".collapseBean.isOpen}"); ! // .addAttribute("test", "${"+formBeanName+".collapseBean.displayState == " + RendererHelper.jspQuotedString("block") + "}"); Element openedImg = img_template.createCopy(); *************** *** 137,144 **** return choose; } ! public Element bestPracticesLink(String xpath) { Element bpLink = df.createElement("span") ! .addAttribute("class", "action-button"); String format = rhelper.getFramework().getXmlFormat(); --- 193,207 ---- return choose; } ! ! ! /** ! * Render a link to bestPractices information for current element. ! * ! * @param xpath NOT YET DOCUMENTED ! * @return NOT YET DOCUMENTED ! */ public Element bestPracticesLink(String xpath) { Element bpLink = df.createElement("span") ! .addAttribute("class", "action-button"); String format = rhelper.getFramework().getXmlFormat(); *************** *** 149,155 **** String href = "javascript:doBestPractices(" + RendererHelper.jspQuotedString(bpArg) + ")"; Element bpHref = bpLink.addElement("a") ! .addAttribute("href", href); rhelper.attachToolHelp(bpHref, "see best practices for the " + fieldName + " field"); ! Element bpText = bpHref.addElement("span") .addAttribute("class", "action-button"); --- 212,218 ---- String href = "javascript:doBestPractices(" + RendererHelper.jspQuotedString(bpArg) + ")"; Element bpHref = bpLink.addElement("a") ! .addAttribute("href", href); rhelper.attachToolHelp(bpHref, "see best practices for the " + fieldName + " field"); ! Element bpText = bpHref.addElement("span") .addAttribute("class", "action-button"); *************** *** 158,166 **** return bpLink; } ! ! public static void setDebug(boolean bool) { debug = bool; } /** * Description of the Method --- 221,236 ---- return bpLink; } ! ! ! /** ! * Sets the debug attribute of the EditorRenderer class ! * ! * @param bool The new debug value ! */ ! public static void setDebug(boolean bool) { debug = bool; } + /** * Description of the Method *************** *** 171,175 **** if (debug) { while (s.length() > 0 && s.charAt(0) == '\n') { ! System.out.println (""); s = s.substring(1); } --- 241,245 ---- if (debug) { while (s.length() > 0 && s.charAt(0) == '\n') { ! System.out.println(""); s = s.substring(1); } |