/*
This file belongs to the Servoy development and deployment environment, Copyright (C) 1997-2010 Servoy BV
This program is free software; you can redistribute it and/or modify it under
the terms of the GNU Affero General Public License as published by the Free
Software Foundation; either version 3 of the License, or (at your option) any
later version.
This program 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 Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License along
with this program; if not, see http://www.gnu.org/licenses or write to the Free
Software Foundation,Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
*/
package com.servoy.j2db.server.headlessclient.dataui;
import com.servoy.j2db.dataprocessing.IValueList;
import com.servoy.j2db.util.model.ComboModelListModelWrapper;
/**
* ComboModelListModelWrapper to be used in WebClient (ComboModelListModelWrapper is implements List based on display values, web components expects List based
* on real values)
*
* @author rgansevles
*
*/
public class WebComboModelListModelWrapper extends ComboModelListModelWrapper
{
public WebComboModelListModelWrapper(IValueList listModel, boolean shouldHideEmptyValueIfPresent, boolean isSeparatorAware)
{
super(listModel, shouldHideEmptyValueIfPresent, isSeparatorAware);
}
@Override
public int indexOf(Object o)
{
int index = listModel.realValueIndexOf(o);
if (hideFirstValue) index--;
return index;
}
@Override
public Object get(int index)
{
return getRealElementAt(index);
}
@Override
public boolean contains(Object o)
{
return listModel.realValueIndexOf(o) != -1;
}
@Override
public Object[] toArray()
{
int s = size();
Object[] a = new Object[s];
for (int i = 0; i < s; i++)
a[i] = get(i);
return a;
}
public boolean compareTo(Object[] list)
{
int currentListSize = size();
if (list != null && currentListSize == list.length)
{
for (int i = 0; i < currentListSize; i++)
{
if (get(i) == null)
{
if (list[i] != null) return false;
}
else
{
if (list[i] == null || !get(i).equals(list[i])) return false;
}
}
return true;
}
return false;
}
}