Java tutorial
/** * Copyright Vclav Brodec 2014. * * This file is part of Botn?ek. * * Botn?ek 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. * * Botn?ek 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 Botn?ek. If not, see <http://www.gnu.org/licenses/>. */ package cz.cuni.mff.ms.brodecva.botnicek.ide.project.views; import java.net.URI; import java.util.Map; import java.util.TreeMap; import com.google.common.base.Preconditions; import com.google.common.collect.ImmutableMap; import cz.cuni.mff.ms.brodecva.botnicek.ide.utils.resources.UiLocalizer; import cz.cuni.mff.ms.brodecva.botnicek.ide.utils.swing.models.AbstractNameValueTableModel; import cz.cuni.mff.ms.brodecva.botnicek.library.platform.AIML; import cz.cuni.mff.ms.brodecva.botnicek.library.platform.XML; /** * <p> * Model tabulky, kter obsahuje v prvnm sloupci URI prostoru jmen XML a v * druhm pak vchoz prefix, kter mu budou piazeny v dalm zpracovn. * </p> * <p> * Je vdy zajitno, e tabulka obsahuje njak prefix pro prostor jmen AIML a * njak prefix pro jeho schma. * </p> * <p> * Model nekontroluje uniktnost prefix. V takov situaci je lep ut prefixu * explicitn ve zdrojovm kdu. T se nelze spolehnout na validitu samotnch * etzc prefix podle pravidel XML. * </p> * * @author Vclav Brodec * @version 1.0 */ final class DefaultPrefixesSettingsTableModel extends AbstractNameValueTableModel<URI, String> implements PrefixesSettingsTableModel { private static final long serialVersionUID = 1L; /** * Vytvo przdn model (a na vchoz hodnoty). * * @return model s vchozmi hodnotami */ public static DefaultPrefixesSettingsTableModel create() { final TreeMap<URI, String> namespacesToPrefixes = new TreeMap<>(); namespacesToPrefixes.put(URI.create(AIML.NAMESPACE_URI.getValue()), AIML.DEFAULT_PREFIX.getValue()); namespacesToPrefixes.put(URI.create(XML.SCHEMA_NAMESPACE_URI.getValue()), XML.DEFAULT_SCHEMA_PREFIX.getValue()); return create(namespacesToPrefixes); } /** * Vytvo model, kter nastavuje pro dan prostory jmen dodan prefixy. * * @param namespacesToPrefixes * zobrazen URI prostor jmen na prefixy * @return model * @throws IllegalArgumentException * pokud zobrazen neobsahuje poloky pro povinn prostory jmen */ public static DefaultPrefixesSettingsTableModel create( final Map<? extends URI, ? extends String> namespacesToPrefixes) { final ImmutableMap<URI, String> copy = ImmutableMap.copyOf(namespacesToPrefixes); Preconditions.checkArgument(copy.containsKey(URI.create(AIML.NAMESPACE_URI.getValue()))); Preconditions.checkArgument(copy.containsKey(URI.create(XML.SCHEMA_NAMESPACE_URI.getValue()))); return new DefaultPrefixesSettingsTableModel(namespacesToPrefixes); } private DefaultPrefixesSettingsTableModel(final Map<? extends URI, ? extends String> namespacesToPrefixes) { super(namespacesToPrefixes, UiLocalizer.print("NAMESPACE_COLUMN_NAME"), UiLocalizer.print("PREFIX_COLUMN_NAME")); } /* * (non-Javadoc) * * @see * cz.cuni.mff.ms.brodecva.botnicek.ide.utils.swing.NameValueTableModel# * emptyValue() */ @Override protected String defaultValue() { return ""; } /* * (non-Javadoc) * * @see javax.swing.table.TableModel#isCellEditable(int, int) */ @Override public boolean isCellEditable(final int rowIndex, final int columnIndex) { if (columnIndex == 0) { final Object value = getValueAt(rowIndex, 0); if (value.equals(AIML.NAMESPACE_URI.getValue()) || value.equals(XML.SCHEMA_NAMESPACE_URI.getValue())) { return false; } } return super.isCellEditable(rowIndex, columnIndex); } /* * (non-Javadoc) * * @see * cz.cuni.mff.ms.brodecva.botnicek.ide.utils.swing.NameValueTableModel# * nameOf(java.lang.String) */ @Override protected URI nameOf(final String nameString) { return URI.create(nameString); } /* * (non-Javadoc) * * @see cz.cuni.mff.ms.brodecva.botnicek.ide.utils.swing.models. * AbstractNameValueTableModel#update(java.util.Map) */ @Override public void update(final Map<URI, String> namespacesToPrefixes) { final ImmutableMap<URI, String> copy = ImmutableMap.copyOf(namespacesToPrefixes); Preconditions.checkArgument(copy.containsKey(URI.create(AIML.NAMESPACE_URI.getValue()))); Preconditions.checkArgument(copy.containsKey(URI.create(XML.SCHEMA_NAMESPACE_URI.getValue()))); super.update(copy); } /* * (non-Javadoc) * * @see * cz.cuni.mff.ms.brodecva.botnicek.ide.utils.swing.NameValueTableModel# * valueOf(java.lang.String) */ @Override protected String valueOf(final String valueString) { return valueString; } }