/* * SK's Minecraft Launcher * Copyright (C) 2010-2014 Albert Pham <http://www.sk89q.com> and contributors * Please see LICENSE.txt for license information. */ package com.skcraft.launcher.swing; import com.skcraft.launcher.Instance; import com.skcraft.launcher.InstanceList; import com.skcraft.launcher.Launcher; import com.skcraft.launcher.util.SharedLocale; import javax.swing.*; import javax.swing.table.AbstractTableModel; public class InstanceTableModel extends AbstractTableModel { private final InstanceList instances; private final Icon instanceIcon; private final Icon customInstanceIcon; private final Icon downloadIcon; public InstanceTableModel(InstanceList instances) { this.instances = instances; instanceIcon = SwingHelper.createIcon(Launcher.class, "instance_icon.png", 16, 16); customInstanceIcon = SwingHelper.createIcon(Launcher.class, "custom_instance_icon.png", 16, 16); downloadIcon = SwingHelper.createIcon(Launcher.class, "download_icon.png", 14, 14); } public void update() { instances.sort(); fireTableDataChanged(); } @Override public String getColumnName(int columnIndex) { switch (columnIndex) { case 0: return ""; case 1: return SharedLocale.tr("launcher.modpackColumn"); default: return null; } } @Override public Class<?> getColumnClass(int columnIndex) { switch (columnIndex) { case 0: return ImageIcon.class; case 1: return String.class; default: return null; } } @Override public void setValueAt(Object value, int rowIndex, int columnIndex) { switch (columnIndex) { case 0: instances.get(rowIndex).setSelected((boolean) (Boolean) value); break; case 1: default: break; } } @Override public boolean isCellEditable(int rowIndex, int columnIndex) { switch (columnIndex) { case 0: return false; case 1: return false; default: return false; } } @Override public int getRowCount() { return instances.size(); } @Override public int getColumnCount() { return 2; } @Override public Object getValueAt(int rowIndex, int columnIndex) { Instance instance; switch (columnIndex) { case 0: instance = instances.get(rowIndex); if (!instance.isLocal()) { return downloadIcon; } else if (instance.getManifestURL() != null) { return instanceIcon; } else { return customInstanceIcon; } case 1: instance = instances.get(rowIndex); return instance.getTitle(); default: return null; } } }