package forkk.multimc.gui;
import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.ListSelectionModel;
import javax.swing.border.EmptyBorder;
import javax.swing.table.DefaultTableModel;
import forkk.multimc.data.Instance;
public class EditModsDialog extends JDialog
{
private static final long serialVersionUID = 3322383503698078689L;
private final JPanel contentPanel = new JPanel();
private Instance instance;
private DefaultTableModel modFileList;
private JTable modFileTable;
/**
* Create the dialog.
*/
public EditModsDialog(Instance inst)
{
instance = inst;
setTitle("Select mod files to remove");
setBounds(100, 100, 700, 450);
getContentPane().setLayout(new BorderLayout());
contentPanel.setBorder(new EmptyBorder(5, 5, 5, 5));
getContentPane().add(contentPanel, BorderLayout.CENTER);
contentPanel.setLayout(new BorderLayout(0, 0));
{
JScrollPane scrollPane = new JScrollPane();
contentPanel.add(scrollPane);
{
modFileList = new DefaultTableModel(
new Object[][] {},
new String[] {"Filename", "Install time", "Delete"})
{
private static final long serialVersionUID = 7159868994511577836L;
Class<?>[] columnTypes = new Class[]
{ String.class, Object.class, Boolean.class };
public Class<?> getColumnClass(int columnIndex)
{
return columnTypes[columnIndex];
}
@Override
public boolean isCellEditable(int row, int column)
{
return column == 2;
}
};
modFileTable = new JTable();
modFileTable.setFillsViewportHeight(true);
modFileTable.setModel(modFileList);
modFileTable.getColumnModel().getColumn(0).setPreferredWidth(350);
modFileTable.getColumnModel().getColumn(1).setPreferredWidth(175);
modFileTable.getColumnModel().getColumn(1).setCellRenderer(new DateCellRenderer());
modFileTable.getColumnModel().getColumn(2).setResizable(false);
modFileTable.setShowHorizontalLines(true);
modFileTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
scrollPane.setViewportView(modFileTable);
}
}
{
JPanel buttonPane = new JPanel();
buttonPane.setLayout(new FlowLayout(FlowLayout.RIGHT));
getContentPane().add(buttonPane, BorderLayout.SOUTH);
{
JButton okButton = new JButton("OK");
okButton.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
for (int i = 0; i < modFileList.getRowCount(); i++)
{
if (modFileList.getValueAt(i, 2) != null &&
modFileList.getValueAt(i, 2).equals(true))
{
File selFile = new File(
modFileList.getValueAt(i, 0).toString());
rebuild = true;
selFile.delete();
}
}
setVisible(false);
}
});
okButton.setActionCommand("OK");
buttonPane.add(okButton);
getRootPane().setDefaultButton(okButton);
}
{
JButton cancelButton = new JButton("Cancel");
cancelButton.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
setVisible(false);
}
});
cancelButton.setActionCommand("Cancel");
buttonPane.add(cancelButton);
}
}
for (File f : instance.getInstMods().listFiles())
{
recursiveAddToList(f);
}
}
private void recursiveAddToList(File file)
{
if (!file.exists()) return;
if (file.isDirectory())
{
for (File f : file.listFiles())
{
recursiveAddToList(f);
}
}
else if (file.isFile())
{
modFileList.addRow(new Object[] { file, instance.getInstallTime(file), false });
}
}
private boolean rebuild;
public boolean shouldRebuild()
{
return rebuild;
}
}