/******************************************************************************* * Copyright 2015 xWic group (http://www.xwic.de) * * Licensed under the Apache License, Version 2.0 (the "License"). * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * *******************************************************************************/ package de.jwic.controls.combo; import java.io.Serializable; /** * This class defines the behavior specification for the combo control. It is * used by the subclasses to specify the combo for their needs. * @author lippisch */ public class ComboBehavior implements Serializable { private static final long serialVersionUID = 1L; protected boolean openContentOnTextboxFocus = false; protected boolean selectTextOnFocus = false; protected boolean textEditable = true; protected String dataLoaderJSClass = "JWic.controls.Combo.BeanLoader"; protected String contentRendererJSClass = "JWic.controls.Combo.ComboElementListRenderer"; protected String labelProviderJSClass = "JWic.controls.Combo.ComboElementLabelProvider"; protected int maxFetchRows = -1; // -1 = all protected int keyDelayTime = 100; protected int minSearchKeyLength = 0; protected boolean showOpenBoxIcon = true; protected boolean cacheData = true; protected boolean clientSideFilter = true; protected boolean autoPickFirstHit = true; protected boolean transferFullObject = false; protected String dataFilter = "JWic.controls.Combo.StringDataFilter"; /** * @return the openContentOnTextboxFocus */ public boolean isOpenContentOnTextboxFocus() { return openContentOnTextboxFocus; } /** * Set to true if the content box should get opened when the input-field * gets the focus. * @param openContentOnTextboxFocus the openContentOnTextboxFocus to set */ public void setOpenContentOnTextboxFocus(boolean openContentOnTextboxFocus) { this.openContentOnTextboxFocus = openContentOnTextboxFocus; } /** * The javascript class that handles the data load. * @return the dataLoaderJSClass */ public String getDataLoaderJSClass() { return dataLoaderJSClass; } /** * The javascript class that handles the data load. * @param dataLoaderJSClass the dataLoaderJSClass to set */ public void setDataLoaderJSClass(String dataLoaderJSClass) { this.dataLoaderJSClass = dataLoaderJSClass; } /** * The javascript class that renderes the data into the content box. * @return the contentRendererJSClass */ public String getContentRendererJSClass() { return contentRendererJSClass; } /** * The javascript class that renderes the data into the content box. * @param contentRendererJSClass the contentRendererJSClass to set */ public void setContentRendererJSClass(String contentRendererJSClass) { this.contentRendererJSClass = contentRendererJSClass; } /** * True if the text in the control should be selected on focus. * @return the selectTextOnFocus */ public boolean isSelectTextOnFocus() { return selectTextOnFocus; } /** * True if the text in the control should be selected on focus. * @param selectTextOnFocus the selectTextOnFocus to set */ public void setSelectTextOnFocus(boolean selectTextOnFocus) { this.selectTextOnFocus = selectTextOnFocus; } /** * @return the textEditable */ public boolean isTextEditable() { return textEditable; } /** * @param textEditable the textEditable to set */ public void setTextEditable(boolean textEditable) { this.textEditable = textEditable; } /** * @return the maxFetchRows */ public int getMaxFetchRows() { return maxFetchRows; } /** * @param maxFetchRows the maxFetchRows to set */ public void setMaxFetchRows(int maxFetchRows) { this.maxFetchRows = maxFetchRows; } /** * @return the keyDelayTime */ public int getKeyDelayTime() { return keyDelayTime; } /** * Number of milliseconds after keyboard input before the search starts. * @param keyDelayTime the keyDelayTime to set */ public void setKeyDelayTime(int keyDelayTime) { this.keyDelayTime = keyDelayTime; } /** * @return the minSearchKeyLength */ public int getMinSearchKeyLength() { return minSearchKeyLength; } /** * Sets the minium text-length before the combo is starting a data-load/refresh. * @param minSearchKeyLength the minSearchKeyLength to set */ public void setMinSearchKeyLength(int minSearchKeyLength) { this.minSearchKeyLength = minSearchKeyLength; } /** * @return the showOpenBoxIcon */ public boolean isShowOpenBoxIcon() { return showOpenBoxIcon; } /** * If true, the icon that opens the content box is displayed. * @param showOpenBoxIcon the showOpenBoxIcon to set */ public void setShowOpenBoxIcon(boolean showOpenBoxIcon) { this.showOpenBoxIcon = showOpenBoxIcon; } /** * @return the cacheData */ public boolean isCacheData() { return cacheData; } /** * If true, the first response from the server is cached. * @param cacheData the cacheData to set */ public void setCacheData(boolean cacheData) { this.cacheData = cacheData; } /** * @return the clientSideFilter */ public boolean isClientSideFilter() { return clientSideFilter; } /** * Filters the result on the client side, if enabled. * @param clientSideFilter the clientSideFilter to set */ public void setClientSideFilter(boolean clientSideFilter) { this.clientSideFilter = clientSideFilter; } /** * @return the autoPickFirstHit */ public boolean isAutoPickFirstHit() { return autoPickFirstHit; } /** * @param autoPickFirstHit the autoPickFirstHit to set */ public void setAutoPickFirstHit(boolean autoPickFirstHit) { this.autoPickFirstHit = autoPickFirstHit; } /* (non-Javadoc) * @see java.lang.Object#toString() */ @Override public String toString() { StringBuilder sb = new StringBuilder(); sb.append("autoPickFirstHit=").append(autoPickFirstHit).append("; "); sb.append("cacheData=").append(cacheData).append("; "); sb.append("clientSideFilter=").append(clientSideFilter).append("; "); sb.append("dataLoaderJSClass=").append(dataLoaderJSClass).append("; "); sb.append("keyDelayTime=").append(keyDelayTime).append("; "); sb.append("contentRendererJSClass=").append(contentRendererJSClass).append("; "); sb.append("showOpenBoxIcon=").append(showOpenBoxIcon).append("; "); sb.append("minSearchKeyLength=").append(minSearchKeyLength).append("; "); sb.append("maxFetchRows=").append(maxFetchRows).append("; "); sb.append("textEditable=").append(textEditable).append("; "); sb.append("selectTextOnFocus=").append(selectTextOnFocus).append("; "); sb.append("openContentOnTextboxFocus=").append(openContentOnTextboxFocus).append("; "); return sb.toString(); } /** * @return the labelProviderJSClass */ public String getLabelProviderJSClass() { return labelProviderJSClass; } /** * @param labelProviderJSClass the labelProviderJSClass to set */ public void setLabelProviderJSClass(String labelProviderJSClass) { this.labelProviderJSClass = labelProviderJSClass; } /** * @return the transferFullObject */ public boolean isTransferFullObject() { return transferFullObject; } /** * Set to true to send the objects via the ObjectToJSON serializer to the client * control. This is often useful if custom label providers are used. Default * is false. * @param transferFullObject the transferFullObject to set */ public void setTransferFullObject(boolean transferFullObject) { this.transferFullObject = transferFullObject; } /** */ public void setDataFilter(String dataFilter){ this.dataFilter = dataFilter; } /** * @return dataFilter */ public String getDataFilter(){ return this.dataFilter; } }