/* * Created on Nov 12, 2003 */ package com.idega.presentation.ui; import java.util.ArrayList; import java.util.Collection; import com.idega.idegaweb.presentation.StyledIWAdminWindow; import com.idega.presentation.IWContext; import com.idega.presentation.Page; import com.idega.presentation.Script; /** * Description: <br> * Copyright: Idega Software 2003 <br> * Company: Idega Software <br> * @author <a href="mailto:birna@idega.is">Birna Iris Jonsdottir</a> */ public abstract class StyledAbstractChooserWindow extends StyledIWAdminWindow{ String chooserSelectionParameter=AbstractChooser.VALUE_PARAMETER_NAME; public static String SELECT_FUNCTION_NAME = "chooserSelect"; public static String PERFORM_AFTER_SELECT_FUNCTION_NAME = "performAfterSelect"; protected static final String DISPLAYSTRING_PARAMETER_NAME = AbstractChooser.DISPLAYSTRING_PARAMETER_NAME; protected static final String VALUE_PARAMETER_NAME = AbstractChooser.VALUE_PARAMETER_NAME; protected static final String SCRIPT_PREFIX_PARAMETER = AbstractChooser.FORM_ID_PARAMETER; protected static final String SCRIPT_SUFFIX_PARAMETER = AbstractChooser.SCRIPT_SUFFIX_PARAMETER; protected static final String SCRIPT_PREFIX_IN_A_FRAME = "top."; private boolean isInAFrame = false; private boolean onlyScript = false; private boolean noScript = false; public StyledAbstractChooserWindow(){ } public StyledAbstractChooserWindow(boolean isInAFrame){ this.isInAFrame(isInAFrame); } public void main(IWContext iwc){ if( (!this.noScript) && (getSelectionParameter(iwc)!=null) ){ Page parent = this.getParentPage(); parent = (parent!=null) ? parent : this; Script script = parent.getAssociatedScript(); String prefix = iwc.getParameter(SCRIPT_PREFIX_PARAMETER); String suffix = iwc.getParameter(SCRIPT_SUFFIX_PARAMETER); String displayString = iwc.getParameter(DISPLAYSTRING_PARAMETER_NAME); String valueString = iwc.getParameter(VALUE_PARAMETER_NAME); if( prefix == null ) { prefix = ""; } if( suffix == null ) { suffix = ""; } if( displayString == null ) { displayString = ""; } if( valueString == null ) { valueString = ""; } if( !this.onlyScript ){ HiddenInput hPrefix = new HiddenInput(SCRIPT_PREFIX_PARAMETER,prefix); HiddenInput hSuffix = new HiddenInput(SCRIPT_SUFFIX_PARAMETER,suffix); HiddenInput hDisplayString = new HiddenInput(DISPLAYSTRING_PARAMETER_NAME,displayString); HiddenInput hValueString = new HiddenInput(VALUE_PARAMETER_NAME,valueString); add(hPrefix); add(hSuffix); add(hDisplayString); add(hValueString); } //closes the window and can be overridden script.addFunction(PERFORM_AFTER_SELECT_FUNCTION_NAME, "function "+PERFORM_AFTER_SELECT_FUNCTION_NAME+"()"+"{"+getPerformAfterSelectScriptString(iwc)+"}"); if( this.isInAFrame ){ script.addFunction(SELECT_FUNCTION_NAME,"function "+SELECT_FUNCTION_NAME+"(displaystring,value){ "+SCRIPT_PREFIX_IN_A_FRAME+"window.opener.document.getElementById(\""+prefix+"\")."+displayString+"."+suffix+"=displaystring; "+SCRIPT_PREFIX_IN_A_FRAME+"window.opener.document.getElementById(\""+prefix+"\")."+valueString+".value=value;window.close();return false;}"); } else{ script.addFunction(SELECT_FUNCTION_NAME,"function "+SELECT_FUNCTION_NAME+"(displaystring,value){ window.opener.document.getElementById(\""+prefix+"\")."+displayString+"."+suffix+"=displaystring;window.opener.document.getElementById(\""+prefix+"\")."+valueString+".value=value;window.close();return false;}"); } } displaySelection(iwc); } /** * Override this method to do something in javascript after the chooser value has been set. * The default behaviour is to close the window and return false * @param iwc * @return */ protected String getPerformAfterSelectScriptString(IWContext iwc) { return "window.close();return false;"; } public abstract void displaySelection(IWContext iwc); public String getOnSelectionCode(String displayString){ return getOnSelectionCode(displayString,displayString); } public String getOnSelectionCode(String displayString,String value){ return SELECT_FUNCTION_NAME+"("+displayString+","+value+")"; } public String getSelectionParameter(IWContext iwc){ return iwc.getParameter(this.chooserSelectionParameter); } public void isInAFrame(boolean isInAFrame){ this.isInAFrame = isInAFrame; } public void setOnlyScript(boolean onlyScript){ this.onlyScript = onlyScript; } public void setNoScript(boolean noScript){ this.noScript = noScript; } public Collection getHiddenParameters(IWContext iwc) { String prefix = iwc.getParameter(SCRIPT_PREFIX_PARAMETER); String suffix = iwc.getParameter(SCRIPT_SUFFIX_PARAMETER); String displayString = iwc.getParameter(DISPLAYSTRING_PARAMETER_NAME); String valueString = iwc.getParameter(VALUE_PARAMETER_NAME); Collection coll = new ArrayList(); coll.add(new Parameter(SCRIPT_PREFIX_PARAMETER,prefix)); coll.add(new Parameter(SCRIPT_SUFFIX_PARAMETER,suffix)); coll.add(new Parameter(DISPLAYSTRING_PARAMETER_NAME,displayString)); coll.add(new Parameter(VALUE_PARAMETER_NAME,valueString)); return coll; } }