/* * Freeplane - mind map editor * Copyright (C) 2008 Dimitry Polivaev * * This file author is Dimitry Polivaev * * This program 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 2 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 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.freeplane.features.attribute; import javax.swing.table.AbstractTableModel; import org.freeplane.core.util.TextUtils; import org.freeplane.core.util.collection.IListModel; /** * @author Dimitry Polivaev */ public class AttributeRegistryTableModel extends AbstractTableModel { static private String attributeColumnName = null; static private String editorColumnName = null; static private String restrictionColumnName = null; /** * */ private static final long serialVersionUID = 1L; static private String visibilityColumnName = null; final private String allAttributes = TextUtils.getText("attributes_all"); final private AttributeRegistry attributeRegistry; AttributeRegistryTableModel(final AttributeRegistry registry) { attributeRegistry = registry; } /** */ public void fireRestrictionsUpdated(final int row) { fireTableRowsUpdated(row + 1, row + 1); } @Override public void fireTableCellUpdated(final int row, final int column) { super.fireTableCellUpdated(row + 1, column); } public void fireTableRowsDeleted() { if (getRowCount() > 1) { fireTableRowsDeleted(1, getRowCount() - 1); } } @Override public void fireTableRowsDeleted(final int firstRow, final int lastRow) { super.fireTableRowsDeleted(firstRow + 1, lastRow + 1); } @Override public void fireTableRowsInserted(final int firstRow, final int lastRow) { super.fireTableRowsInserted(firstRow + 1, lastRow + 1); } @Override public void fireTableRowsUpdated(final int firstRow, final int lastRow) { super.fireTableRowsUpdated(firstRow + 1, lastRow + 1); } /** */ public void fireVisibilityUpdated(final int row) { fireTableCellUpdated(row + 1, 1); } @Override public Class<?> getColumnClass(final int c) { switch (c) { case 0: return String.class; case 1: return Boolean.class; case 2: return Boolean.class; case 3: return IListModel.class; } return Object.class; } /* * (non-Javadoc) * @see javax.swing.table.TableModel#getColumnCount() */ public int getColumnCount() { return 4; } @Override public String getColumnName(final int column) { switch (column) { case 0: if (AttributeRegistryTableModel.attributeColumnName == null) { AttributeRegistryTableModel.attributeColumnName = TextUtils.getText("attributes_attribute"); } return AttributeRegistryTableModel.attributeColumnName; case 1: if (AttributeRegistryTableModel.visibilityColumnName == null) { AttributeRegistryTableModel.visibilityColumnName = TextUtils.getText("attributes_visible"); } return AttributeRegistryTableModel.visibilityColumnName; case 2: if (AttributeRegistryTableModel.restrictionColumnName == null) { AttributeRegistryTableModel.restrictionColumnName = TextUtils.getText("attributes_restriction"); } return AttributeRegistryTableModel.restrictionColumnName; case 3: if (AttributeRegistryTableModel.editorColumnName == null) { AttributeRegistryTableModel.editorColumnName = TextUtils.getText("attributes_edit"); } return AttributeRegistryTableModel.editorColumnName; } return null; } /* * (non-Javadoc) * @see javax.swing.table.TableModel#getRowCount() */ public int getRowCount() { return attributeRegistry.size() + 1; } /* * (non-Javadoc) * @see javax.swing.table.TableModel#getValueAt(int, int) */ public Object getValueAt(int row, final int col) { if (row == 0 && col < 2) { if (col == 0) { return allAttributes; } return null; } row--; switch (col) { case 0: return attributeRegistry.getKey(row); case 1: return attributeRegistry.getElement(row).getVisibilityModel(); case 2: return attributeRegistry.getRestriction(row); case 3: return attributeRegistry.getValues(row); } return null; } @Override public boolean isCellEditable(final int row, final int col) { return col >= 1; } @Override public void setValueAt(final Object o, final int row, final int col) { if (row == 0 && col != 2) { return; } if (col == 3) { return; } final Boolean value = (Boolean) o; switch (col) { case 1: attributeRegistry.setVisibilityModel(row - 1, value); break; case 2: attributeRegistry.setRestrictionModel(row - 1, value); break; } } }