package net.fe.balance;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.util.ArrayList;
import java.util.List;
import javax.swing.*;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
public class BalancerTab extends JPanel {
private List<BalancerRow> rows;
private int lv;
public BalancerTab(List<BalanceData> data){
setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));
lv = 1;
rows = new ArrayList<BalancerRow>();
JComponent labels = new JPanel(new FlowLayout(FlowLayout.LEFT, 0, 0));
labels.add(Box.createRigidArea(new Dimension(65,0)));
for(String stat: BalanceData.ORDER){
labels.add(new JLabel(stat){{
this.setHorizontalAlignment(CENTER);
setPreferredSize(new Dimension(53,getPreferredSize().height));
}});
}
labels.setMaximumSize(labels.getPreferredSize());
add(labels);
for(BalanceData d: data){
BalancerRow row = new BalancerRow(d, this);
rows.add(row);
this.add(row);
}
add(Box.createVerticalGlue());
Box lev = Box.createHorizontalBox();
lev.add(Box.createHorizontalGlue());
lev.add(new JLabel("Level: "));
JSpinner spin = new JSpinner(new SpinnerNumberModel(1,1,20,1));
spin.addChangeListener(new ChangeListener(){
@Override
public void stateChanged(ChangeEvent e) {
lv = (Integer)((JSpinner) e.getSource()).getValue();
refresh();
}
});
spin.setMaximumSize(spin.getPreferredSize());
lev.add(spin);
add(lev);
}
public void refresh(){
for(BalancerRow row: rows){
row.refresh();
}
repaint();
}
public int getLevel(){
return lv;
}
public String exportString(){
StringBuilder ans = new StringBuilder();
for(BalancerRow row: rows){
ans.append(row.exportString());
}
return ans.toString();
}
}