/* * Copyright (C) 2010-2016 JPEXS * * 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 3 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 com.jpexs.decompiler.flash.gui; import com.jpexs.decompiler.flash.configuration.Configuration; import com.jpexs.decompiler.flash.tags.TagInfo; import java.awt.BorderLayout; import java.awt.Color; import java.util.List; import java.util.MissingResourceException; import java.util.logging.Level; import java.util.logging.Logger; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.event.TableModelListener; import javax.swing.table.TableModel; /** * * @author JPEXS */ public class TagInfoPanel extends JPanel { private final MainPanel mainPanel; private final JTable infoTable = new JTable(); private TagInfo tagInfo = new TagInfo(); public TagInfoPanel(MainPanel mainPanel) { this.mainPanel = mainPanel; infoTable.setModel(new InfoTableModel("general")); setLayout(new BorderLayout()); infoTable.setAutoCreateRowSorter(true); JLabel topLabel = new JLabel(AppStrings.translate("taginfo.header"), JLabel.CENTER); add(topLabel, BorderLayout.NORTH); add(new JScrollPane(infoTable), BorderLayout.CENTER); } public void setTagInfos(TagInfo tagInfo) { this.tagInfo = tagInfo; infoTable.setBackground(Color.WHITE); infoTable.setModel(new InfoTableModel("general")); } private class InfoTableModel implements TableModel { private final String categoryName; public InfoTableModel(String categoryName) { this.categoryName = categoryName; } @Override public int getRowCount() { List<TagInfo.TagInfoItem> category = tagInfo.getInfos().get(categoryName); if (category != null) { return category.size(); } return 0; } @Override public int getColumnCount() { return 2; } @Override public String getColumnName(int columnIndex) { switch (columnIndex) { case 0: return mainPanel.translate("tagInfo.header.name"); case 1: return mainPanel.translate("tagInfo.header.value"); } return null; } @Override public Class<?> getColumnClass(int columnIndex) { return String.class; } @Override public boolean isCellEditable(int rowIndex, int columnIndex) { return false; } @Override public Object getValueAt(int rowIndex, int columnIndex) { List<TagInfo.TagInfoItem> category = tagInfo.getInfos().get(categoryName); if (category != null) { TagInfo.TagInfoItem item = category.get(rowIndex); switch (columnIndex) { case 0: String name = item.getName(); String key = "tagInfo." + name; try { name = mainPanel.translate(key); } catch (MissingResourceException mes) { if (Configuration._debugMode.get()) { Logger.getLogger(TagInfoPanel.class.getName()).log(Level.WARNING, "Resource not found: {0}", key); } } return name; case 1: Object value = item.getValue(); if (value instanceof Boolean) { boolean boolValue = (boolean) value; return boolValue ? AppStrings.translate("yes") : AppStrings.translate("no"); } return "" + value; } } return null; } @Override public void setValueAt(Object aValue, int rowIndex, int columnIndex) { } @Override public void addTableModelListener(TableModelListener l) { } @Override public void removeTableModelListener(TableModelListener l) { } } }