package gui;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.List;
import javax.swing.DefaultListModel;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
import utility.FileUtility;
import utility.GuiUtility;
public class VariantMenuPanel extends ChessPanel
{
public VariantMenuPanel()
{
mNoCustomPiecesLabel = GuiUtility.createJLabel(Messages.getString("VariantMenuPanel.noVariants")); //$NON-NLS-1$
mNoCustomLabelConstraints = new GridBagConstraints(0, 1, 1, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.CENTER,
new Insets(50, 20, 50, 20), 5, 5);
mEditPanelConstraints = new GridBagConstraints();
mEditPanelConstraints.insets = new Insets(0, 0, 0, 0);
mEditPanelConstraints.gridheight = 3;
mEditPanelConstraints.ipadx = 7;
mEditPanelConstraints.gridy = 1;
mEditDeletePanel = new JPanel();
mVariantListModel = new DefaultListModel();
initGuiComponents();
}
private void initGuiComponents()
{
setLayout(new GridBagLayout());
GridBagConstraints constraints = new GridBagConstraints();
constraints.gridy = 0;
constraints.ipadx = 0;
constraints.insets = new Insets(5, 5, 0, 5);
constraints.anchor = GridBagConstraints.CENTER;
JButton createNewVariantButton = new JButton(Messages.getString("VariantMenuPanel.createNew")); //$NON-NLS-1$
createNewVariantButton.addActionListener(new ActionListener()
{
@Override
public void actionPerformed(ActionEvent event)
{
Driver.getInstance().pushPanel(new VariantCreationPanel(null));
}
});
add(createNewVariantButton, constraints);
mEditDeletePanel.setLayout(new GridBagLayout());
mEditDeletePanel.setOpaque(false);
constraints.gridy = 1;
constraints.ipadx = 7;
constraints.insets = new Insets(5, 5, 0, 5);
constraints.fill = GridBagConstraints.HORIZONTAL;
final JList variantList = new JList();
JScrollPane scrollPane = new JScrollPane();
variantList.setModel(mVariantListModel);
scrollPane.setViewportView(variantList);
mEditDeletePanel.add(scrollPane, constraints);
JPanel buttonPanel = new JPanel();
buttonPanel.setLayout(new GridBagLayout());
buttonPanel.setOpaque(false);
constraints.gridy = 2;
constraints.ipadx = 7;
constraints.fill = GridBagConstraints.NONE;
final JButton editButton = new JButton(Messages.getString("VariantMenuPanel.edit")); //$NON-NLS-1$
editButton.setEnabled(false);
editButton.addActionListener(new ActionListener()
{
@Override
public void actionPerformed(ActionEvent event)
{
Driver.getInstance().pushPanel(
new VariantCreationPanel(((DefaultListModel) variantList.getModel()).get(variantList.getSelectedIndex())
.toString()));
}
});
buttonPanel.add(editButton, constraints);
final JButton deleteButton = new JButton(Messages.getString("VariantMenuPanel.delete")); //$NON-NLS-1$
deleteButton.setEnabled(false);
deleteButton.addActionListener(new ActionListener()
{
@Override
public void actionPerformed(ActionEvent event)
{
if (variantList.getSelectedIndices().length > 0)
{
int[] selectedIndices = variantList.getSelectedIndices();
for (int i = selectedIndices.length - 1; i >= 0; i--)
{
FileUtility.deleteVariant(mVariantListModel.get(selectedIndices[i]).toString());
mVariantListModel.removeElementAt(selectedIndices[i]);
}
}
refreshList();
}
});
constraints.ipadx = 8;
buttonPanel.add(deleteButton, constraints);
mEditDeletePanel.add(buttonPanel, constraints);
variantList.addListSelectionListener(new ListSelectionListener()
{
@Override
public void valueChanged(ListSelectionEvent arg0)
{
deleteButton.setEnabled(true);
editButton.setEnabled(true);
}
});
JButton backButton = new JButton(Messages.getString("VariantMenuPanel.return")); //$NON-NLS-1$
backButton.setToolTipText(Messages.getString("VariantMenuPanel.return")); //$NON-NLS-1$
backButton.addActionListener(new ActionListener()
{
@Override
public void actionPerformed(ActionEvent event)
{
Driver.getInstance().revertToMainPanel();
}
});
constraints.gridx = 0;
constraints.gridy = 4;
constraints.insets = new Insets(10, 5, 10, 5);
constraints.fill = GridBagConstraints.HORIZONTAL;
add(backButton, constraints);
refreshList();
}
private void refreshList()
{
mVariantListModel.clear();
List<String> variants = FileUtility.getVariantsFileArrayNoClassic();
for (String variant: variants)
{
mVariantListModel.addElement(variant);
}
if (mVariantListModel.size() == 0)
{
remove(mEditDeletePanel);
add(mNoCustomPiecesLabel, mNoCustomLabelConstraints);
}
else
{
remove(mNoCustomPiecesLabel);
add(mEditDeletePanel, mEditPanelConstraints);
}
Driver.getInstance().pack();
Driver.centerFrame(Driver.getInstance());
}
private static final long serialVersionUID = -6371389704966320508L;
private DefaultListModel mVariantListModel;
private final JPanel mEditDeletePanel;
private final JLabel mNoCustomPiecesLabel;
private final GridBagConstraints mNoCustomLabelConstraints;
private final GridBagConstraints mEditPanelConstraints;
}