/******************************************************************************* * Copyright (c) MOBAC developers * * 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 mobac.gui.actions; import java.awt.Dimension; import java.awt.Toolkit; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.File; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.List; import javax.swing.JFrame; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.table.AbstractTableModel; import mobac.gui.MainGUI; import mobac.mapsources.MapSourcesManager; import mobac.program.interfaces.MapSource; import mobac.program.model.MapSourceLoaderInfo; import mobac.utilities.I18nUtils; public class DebugShowMapSourceNames implements ActionListener { public void actionPerformed(ActionEvent e) { ArrayList<MapSource> mapSources = new ArrayList<MapSource>(MapSourcesManager.getInstance() .getAllAvailableMapSources()); Collections.sort(mapSources, new Comparator<MapSource>() { public int compare(MapSource o1, MapSource o2) { return o1.getName().compareTo(o2.getName()); } }); JFrame dialog = new JFrame(I18nUtils.localizedStringForKey("dlg_show_source_title")); dialog.setLocationRelativeTo(MainGUI.getMainGUI()); dialog.setLocation(100, 40); Dimension dScreen = Toolkit.getDefaultToolkit().getScreenSize(); dScreen.height -= 200; dScreen.width = Math.min(dScreen.width - 100, 700); dialog.setSize(dScreen); dialog.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); JTable mapSourcesTable = new JTable(new MapSourcesTableModel(mapSources)); JScrollPane scroller = new JScrollPane(mapSourcesTable); mapSourcesTable.getColumnModel().getColumn(2).setMaxWidth(100); dialog.add(scroller); dialog.setVisible(true); } static class MapSourcesTableModel extends AbstractTableModel { List<MapSource> mapSources; public MapSourcesTableModel(List<MapSource> mapSources) { super(); this.mapSources = mapSources; } public int getRowCount() { return mapSources.size(); } public int getColumnCount() { return 4; } @Override public String getColumnName(int column) { switch (column) { case 0: return I18nUtils.localizedStringForKey("dlg_show_source_column_name"); case 1: return I18nUtils.localizedStringForKey("dlg_show_source_column_display_text"); case 2: return I18nUtils.localizedStringForKey("dlg_show_source_column_rev"); case 3: return I18nUtils.localizedStringForKey("dlg_show_source_column_type"); default: return null; } } public Object getValueAt(int rowIndex, int columnIndex) { MapSource ms = mapSources.get(rowIndex); MapSourceLoaderInfo li; switch (columnIndex) { case 0: return ms.getName(); case 1: return ms.toString(); case 2: li = ms.getLoaderInfo(); if (li == null) return null; return li.getRevision(); case 3: li = ms.getLoaderInfo(); if (li == null) return null; String s = ""; File f = li.getSourceFile(); if (f != null) s += f.getName() + " / "; return s + li.getLoaderType(); default: return null; } } } }