private String getParentFormID(PresentationObject obj) { String returnString = ""; UIComponent parent = obj.getParent(); if (parent != null) { if (parent instanceof PresentationObject) { if (!(parent instanceof Form)) { returnString = getParentFormID((PresentationObject) parent); } else { returnString = ((PresentationObject) parent).getID(); } } } return (returnString); }
public PresentationObject getChooser(IWContext iwc, IWBundle bundle) { if (useOldLogic) { // Old chooser Table table = new Table(2, 1); table.setCellpadding(0); table.setCellspacing(0); Parameter value = new Parameter(getChooserParameter(), ""); if (this._stringValue != null) { value.setValue(this._stringValue); } table.add(value); PresentationObject object = getPresentationObject(iwc); table.add(new Parameter(VALUE_PARAMETER_NAME, value.getName())); // GenericButton button = new // GenericButton("chooserbutton",bundle.getResourceBundle(iwc).getLocalizedString(chooserText,"Choose")); if (this._addForm) { SubmitButton button = new SubmitButton(this._iwrb.getLocalizedString("choose", "Choose")); table.add(button, 2, 1); this._form.addParameter(CHOOSER_SELECTION_PARAMETER, getChooserParameter()); this._form.addParameter( FORM_ID_PARAMETER, "window.opener.document.getElementById(\"" + this._form.getID() + "\")."); this._form.addParameter(SCRIPT_SUFFIX_PARAMETER, "value"); if (this.filter != null) { if (this.filter.length() > 0) { this._form.addParameter(FILTER_PARAMETER, this.filter); } } addParametersToForm(this._form); } else { getLink(this._iwrb); if (getUsePublicWindowOpener()) { this.link.setPublicWindowToOpen(getChooserWindowClass()); } else { this.link.setWindowToOpen(getChooserWindowClass()); } this.link.addParameter(CHOOSER_SELECTION_PARAMETER, getChooserParameter()); this.link.addParameter(FORM_ID_PARAMETER, getParentFormID()); // TODO Make the javascript work for other objects than form elements, // e.g. a Link /* * if(object instanceof Layer){ * link.addParameter(SCRIPT_SUFFIX_PARAMETER,"title"); } */ this.link.addParameter(SCRIPT_SUFFIX_PARAMETER, "value"); // } // this was object.getID() but the id could change if this object was kept in session but // the form changed // by using getName() the reference is not lost, however we might need to add extra steps // for handling more than one // chooser of the same type in the same form. this.link.addParameter(DISPLAYSTRING_PARAMETER_NAME, object.getName()); this.link.addParameter(VALUE_PARAMETER_NAME, value.getName()); if (this._attributeName != null && this._attributeValue != null) { this.link.addParameter(this._attributeName, this._attributeValue); } if (this.filter != null) { if (this.filter.length() > 0) { this.link.addParameter(FILTER_PARAMETER, this.filter); } } addParametersToLink(this.link); table.add(this.link, 2, 1); } table.add(object, 1, 1); table.add(new Parameter(DISPLAYSTRING_PARAMETER_NAME, "151324213")); return (table); } else { // New chooser Layer container = new Layer(); String chooserObject = getChooserHelperVarName(); if (chooserObject == null) { chooserObject = AbstractChooserBlock.GLOBAL_HELPER_NAME; } else { add( PresentationUtil.getJavaScriptAction( PresentationUtil.getJavaScriptLinesLoadedLazily( CoreUtil.getResourcesForChooser(iwc), new StringBuilder("if (!") .append(chooserObject) .append(") var ") .append(chooserObject) .append(" = new ChooserHelper();") .toString()))); } PresentationObject object = getPresentationObject(iwc); container.add(object); Image chooser = getChooser(bundle); chooser.setStyleClass("chooserStyle"); chooser.setMarkupAttribute("choosername", chooserObject); // OnClick action StringBuffer action = new StringBuffer("addChooserObject('").append(chooser.getId()).append("', '"); action.append(getChooserWindowClass().getName()); if (getHiddenInputAttribute() == null) { action.append("', null, '"); } else { action.append("', '").append(getHiddenInputAttribute()).append("', '"); } action.append(ICBuilderConstants.CHOOSER_VALUE_VIEWER_ID_ATTRIBUTE).append("', '"); action .append(getResourceBundle().getLocalizedString("loading", "Loading...")) .append("', ") .append( _stringValue == null ? "null" : new StringBuilder("'").append(_stringValue).append("'").toString()) .append(", ") .append( _stringDisplay == null ? "null" : new StringBuilder("'").append(_stringDisplay).append("'").toString()) .append(");"); chooser.setOnClick(action.toString()); container.add(chooser); return container; } }