/************************************************************************** OmegaT - Computer Assisted Translation (CAT) tool with fuzzy matching, translation memory, keyword search, glossaries, and translation leveraging into updated projects. Copyright (C) 2000-2006 Keith Godfrey and Maxym Mykhalchuk 2015 Yu Tang Home page: http://www.omegat.org/ Support center: http://groups.yahoo.com/group/OmegaT/ This file is part of OmegaT. OmegaT is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. OmegaT 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 General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>. **************************************************************************/ package org.omegat.filters2.master; import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.TreeMap; import javax.swing.table.AbstractTableModel; import org.omegat.filters2.IFilter; import org.omegat.util.OStrings; import gen.core.filters.Filter; import gen.core.filters.Filters; /** * Wrapper around all the file filter classes. Is a JavaBean, so that it's easy * to write/read it to/from XML file and provides a table model. * * @author Maxym Mykhalchuk * @author Yu Tang */ @SuppressWarnings("serial") public class FiltersTableModel extends AbstractTableModel { private final List<Filter> filters; private final Map<String, String> filterNames = new TreeMap<String, String>(); public FiltersTableModel(final Filters config) { filters = new ArrayList<Filter>(); // add only exist filters for (Filter f : config.getFilters()) { IFilter fi = FilterMaster.getFilterInstance(f.getClassName()); if (fi != null) { // filter exist filters.add(f); filterNames.put(f.getClassName(), fi.getFileFormatName()); } } } @Override public int getColumnCount() { return 2; } @Override public String getColumnName(int columnIndex) { switch (columnIndex) { case 0: return OStrings.getString("FILTERS_FILE_FORMAT"); case 1: return OStrings.getString("FILTERS_ON"); } return null; } @Override public Class<?> getColumnClass(int columnIndex) { switch (columnIndex) { case 0: return String.class; case 1: return Boolean.class; } return null; } @Override public int getRowCount() { return filters.size(); } @Override public Object getValueAt(int rowIndex, int columnIndex) { Filter filter = filters.get(rowIndex); switch (columnIndex) { case 0: return filterNames.get(filter.getClassName()); case 1: return filter.isEnabled(); } return null; } @Override public void setValueAt(Object aValue, int rowIndex, int columnIndex) { Filter filter = filters.get(rowIndex); switch (columnIndex) { case 1: filter.setEnabled(((Boolean) aValue).booleanValue()); break; default: throw new IllegalArgumentException(OStrings.getString("FILTERS_ERROR_COLUMN_INDEX_NOT_1")); } } @Override public boolean isCellEditable(int rowIndex, int columnIndex) { switch (columnIndex) { case 0: return false; case 1: return true; } return false; } public Filter getFilterAtRow(int row) { return filters.get(row); } }