Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * Copyright (c) 2009-2011, EzWare
   * All rights reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   *
   * Redistributions of source code must retain the above copyright notice,
  * this list of conditions and the following disclaimer.Redistributions
  * in binary form must reproduce the above copyright notice, this list of
  * conditions and the following disclaimer in the documentation and/or
  * other materials provided with the distribution.Neither the name of the
  * EzWare nor the names of its contributors may be used to endorse or
  * promote products derived from this software without specific prior
  * written permission.
  *
  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
  * POSSIBILITY OF SUCH DAMAGE.
  *
  */
 
 package org.oxbow.swingbits.table.filter;
 
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
 
 
 import static org.oxbow.swingbits.util.CollectionUtils.*;

Partial implementation of table filter Created on Feb 10, 2011

Parameters:
<T>
Author(s):
Eugene Ryzhikov
 
 @SuppressWarnings("serial")
 public abstract class AbstractTableFilter<T extends JTableimplements ITableFilter<T> {
 
 	private final Set<IFilterChangeListenerlisteners = Collections.synchronizedSetnew HashSet<IFilterChangeListener>());
 
 
 	private final T table;
 	private final TableFilterState filterState = new TableFilterState();
 
 	public AbstractTableFilter( T table ) {
 		this. = table;
 	}
 
 	private void setupDistinctItemCacheRefresh() {
 			public void propertyChange(PropertyChangeEvent e) {
 				TableModel model = (TableModele.getNewValue();
 				if ( model != null ) {
 
 						public void tableChanged(TableModelEvent e) {
 						}
 					});
 				}
 			}
 		});
 	}
 
 
 	private void clearDistinctItemCache() {
 	}
	public T getTable() {
		return ;
	}
	protected abstract boolean execute(int colCollection<DistinctColumnItemitems);
	public boolean apply(int colCollection<DistinctColumnItemitems) {
		setFilterState(colitems);
		boolean result = false;
		if ( result = executecolitems ) ) fireFilterChange();
		return result;
	}
	public final void addChangeListenerIFilterChangeListener listener ) {
		if ( listener != null ) .add(listener);
	}
	public final void removeChnageListenerIFilterChangeListener listener ) {
		if ( listener != null ) .remove(listener);
	}
	public final void fireFilterChange() {
		}
	}
		if ( result == null ) {
			result = collectDistinctColumnItemscolumn );
			.put(columnresult);
		}
		return result;
	}
		Set<DistinctColumnItemset = new HashSet<DistinctColumnItem>(); // to collect unique items
		int nullIndex = -1;
		forint row=0; row<.getModel().getRowCount(); row++) {
			Object value = .getModel().getValueAtrowcolumn);
			// adding null to TreeSet will produce NPE, just remember we had it
			if ( value == null ) {
				nullIndex = row;
else {
				set.addnew DistinctColumnItem(valuerow ));
			}
		}
		if ( nullIndex >= 0 ) result.add(0, new DistinctColumnItem(nullnullIndex)); // add null to resulting collection if we had it
		return trySort(result);
	}
	public Collection<DistinctColumnItemgetFilterStateint column ) {
		return .getValues(column);
	}
	public boolean isFilteredint column ) {
		return !isEmpty(checks) && getDistinctColumnItemscolumn ).size() != checks.size();
	}
	public boolean includeRowITableFilter.Row row ) {
		return .include(row);
	}
	public void setFilterState(int columnCollection<DistinctColumnItemvalues ) {
		.setValues(columnvalues);
	}
	public void clear() {
		Collection<DistinctColumnItemitems = Collections.emptyList();
		forint column=0; column<.getModel().getColumnCount(); column++) {
			execute(columnitems);
		}
	}
New to GrepCode? Check out our FAQ X