/* * DrakkarKeel - An Enterprise Collaborative Search Platform * * The contents of this file are subject under the terms described in the * DRAKKARKEEL_LICENSE file included in this distribution; you may not use this * file except in compliance with the License. * * 2013-2014 DrakkarKeel Platform. */ package drakkar.cover.swing; import java.util.ArrayList; import java.util.List; import javax.swing.AbstractListModel; public class QueryFieldListModel extends AbstractListModel { private List<TermListItem> values; /** * Constructor por defecto de la clase */ public QueryFieldListModel() { this.values = new ArrayList<>(); } /** * Constructor de la clase * * @param values lista de usuarios */ public QueryFieldListModel(List<TermListItem> values) { this.values = values; } /** * Adiciona un nuevo objeto * * @param item objeto */ public void add(TermListItem item) { int index = values.size(); this.values.add(item); fireIntervalAdded(this, index, index); } /** * Adiciona un nuevo objeto * * @param index * @param item objeto */ public void add(int index, TermListItem item) { int size = values.size(); this.values.add(index, item); fireIntervalAdded(this, index, size); } /** * {@inheritDoc} */ public int getSize() { return this.values.size(); } /** * Devuelve el usuario en la posición especificada * * @param index índice del usuario * * @return usuario */ public TermListItem get(int index) { TermListItem obj = (this.values.get(index)); return obj; } /** * Modifica el valor del objeto del usuario especificado * * @param index * @param item usuario */ public void set(int index, TermListItem item) { if (index >= 0) { this.values.set(index, item); fireContentsChanged(this, index, index); } } /** * {@inheritDoc} */ public Object getElementAt(int index) { Object obj = this.values.get(index); return obj; } /** * Devuelve la lista de usuarios del modelo * * @return usuarios */ public List<TermListItem> getValues() { return this.values; } /** * Modifica los valores del modelo * * @param values nuevos valore */ public void setValues(List<TermListItem> values) { int index = this.values.size(); if (index >= 1) { fireIntervalRemoved(this, 0, (index - 1)); } this.values.clear(); int size = values.size(); if (size > 0) { int index1 = size - 1; this.values.addAll(values); fireIntervalAdded(this, 0, index1); fireContentsChanged(this, 0, index1); } } /** * Inserta los nuevos términos sugeridos al principio de la lista de término * * @param values nuevos términos */ public void insert(List<TermListItem> values) { this.values.addAll(0, values); int size = this.values.size(); int index = (size > 0) ? size - 1 : 0; fireIntervalAdded(this, 0, index); fireContentsChanged(this, 0, index); } /** * Elimina el usuario especificado del modelo * * @param item usuario * * @return true si se pudo eliminar el usuario, false en caso contrario */ public boolean remove(TermListItem item) { int index = this.values.indexOf(item); boolean flag = this.values.remove(item); if (index >= 0) { fireIntervalRemoved(this, index, index); } return flag; } /** * Elimina el usuario de la posición especificada * * @param index índice * * @return usuario eliminado */ public TermListItem remove(int index) { TermListItem memb = this.values.remove(index); fireIntervalRemoved(this, index, index); return memb; } /** * Elimina todos los elementos del modelo */ public void clear() { int index1 = values.size() - 1; this.values.clear(); if (index1 >= 0) { fireIntervalRemoved(this, 0, index1); fireContentsChanged(this, 0, index1); } } public int find(String term) { String termToFind = term.toLowerCase() ; String termItem; for (int i = 0; i < values.size(); i++) { termItem = values.get(i).getTermSuggest().getTerm(); if (termItem.equalsIgnoreCase(termToFind)) { return i; } } for (int i = 0; i < values.size(); i++) { termItem = values.get(i).getTermSuggest().getTerm().toLowerCase(); if (termItem.contains(termToFind)) { return i; } } return -1; } /** * * @param item * @return */ public boolean contains(TermListItem item) { return this.values.contains(item); } /** * * @param item * @return */ public boolean isEmpty() { return this.values.isEmpty(); } }