001/* 002 * (C) Copyright 2010 Nuxeo SA (http://nuxeo.com/) and contributors. 003 * 004 * All rights reserved. This program and the accompanying materials 005 * are made available under the terms of the GNU Lesser General Public License 006 * (LGPL) version 2.1 which accompanies this distribution, and is available at 007 * http://www.gnu.org/licenses/lgpl.html 008 * 009 * This library is distributed in the hope that it will be useful, 010 * but WITHOUT ANY WARRANTY; without even the implied warranty of 011 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 012 * Lesser General Public License for more details. 013 * 014 * Contributors: 015 * Anahide Tchertchian 016 */ 017package org.nuxeo.ecm.platform.forms.layout.api.impl; 018 019import java.io.Serializable; 020import java.util.HashMap; 021import java.util.Map; 022 023import org.nuxeo.ecm.platform.forms.layout.api.WidgetSelectOption; 024 025/** 026 * @author Anahide Tchertchian 027 * @since 5.4.2 028 */ 029public class WidgetSelectOptionImpl implements WidgetSelectOption { 030 031 private static final long serialVersionUID = 1L; 032 033 protected Serializable value; 034 035 protected String var; 036 037 protected String itemLabel; 038 039 protected Map<String, String> labels; 040 041 protected String itemValue; 042 043 protected Serializable itemDisabled; 044 045 protected Serializable itemRendered; 046 047 // needed by GWT serialization 048 protected WidgetSelectOptionImpl() { 049 super(); 050 } 051 052 public WidgetSelectOptionImpl(String itemLabel, String itemValue) { 053 this(null, null, itemLabel, itemValue); 054 } 055 056 public WidgetSelectOptionImpl(Serializable value, String var, String itemLabel, String itemValue) { 057 this(value, var, itemLabel, itemValue, null, null); 058 } 059 060 public WidgetSelectOptionImpl(Serializable value, String var, String itemLabel, String itemValue, 061 Serializable itemDisabled, Serializable itemRendered) { 062 super(); 063 this.value = value; 064 this.var = var; 065 this.itemLabel = itemLabel; 066 this.itemValue = itemValue; 067 this.itemDisabled = itemDisabled; 068 this.itemRendered = itemRendered; 069 } 070 071 public Serializable getValue() { 072 return value; 073 } 074 075 public String getVar() { 076 return var; 077 } 078 079 public String getItemLabel() { 080 return itemLabel; 081 } 082 083 @Override 084 public String getItemLabel(String locale) { 085 return labels.get(locale); 086 } 087 088 @Override 089 public Map<String, String> getItemLabels() { 090 return labels; 091 } 092 093 public void setItemLabels(Map<String, String> labels) { 094 this.labels = labels; 095 } 096 097 public String getItemValue() { 098 return itemValue; 099 } 100 101 public Serializable getItemDisabled() { 102 return itemDisabled; 103 } 104 105 public Serializable getItemRendered() { 106 return itemRendered; 107 } 108 109 @Override 110 public String getTagConfigId() { 111 StringBuilder builder = new StringBuilder(); 112 builder.append(value).append(";"); 113 builder.append(var).append(";"); 114 builder.append(itemLabel).append(";"); 115 if (labels != null) { 116 builder.append(labels.toString()); 117 } 118 builder.append(";"); 119 builder.append(itemValue).append(";"); 120 if (itemDisabled != null) { 121 builder.append(itemDisabled.toString()); 122 } 123 builder.append(";"); 124 if (itemRendered != null) { 125 builder.append(itemRendered.toString()); 126 } 127 builder.append(";"); 128 129 Integer intValue = new Integer(builder.toString().hashCode()); 130 return intValue.toString(); 131 } 132 133 @Override 134 public WidgetSelectOption clone() { 135 WidgetSelectOptionImpl clone = new WidgetSelectOptionImpl(value, var, itemLabel, itemValue, itemDisabled, 136 itemRendered); 137 if (labels != null) { 138 clone.setItemLabels(new HashMap<String, String>(labels)); 139 } 140 return clone; 141 } 142 143 /** 144 * @since 7.2 145 */ 146 @Override 147 public boolean equals(Object obj) { 148 if (!(obj instanceof WidgetSelectOptionImpl)) { 149 return false; 150 } 151 if (obj == this) { 152 return true; 153 } 154 WidgetSelectOptionImpl w = (WidgetSelectOptionImpl) obj; 155 return new EqualsBuilder().append(value, w.value).append(var, w.var).append(itemLabel, w.itemLabel).append( 156 labels, w.labels).append(itemValue, w.itemValue).append(itemDisabled, w.itemDisabled).append( 157 itemRendered, w.itemRendered).isEquals(); 158 } 159 160}