package net.fe.balance;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.util.HashMap;
import javax.swing.*;
import javax.swing.event.*;
public class BalancerRow extends JPanel{
private BalanceData data;
private BalancerTab tab;
private HashMap<String, JLabel> values;
public BalancerRow(BalanceData d, BalancerTab tab){
this.data = d;
this.tab = tab;
values = new HashMap<String, JLabel>();
setVerticalAlignment(SwingConstants.TOP);
add(new JLabel(d.name){{
setPreferredSize(new Dimension(60,3*getPreferredSize().height));
setHorizontalAlignment(SwingConstants.RIGHT);
setVerticalAlignment(SwingConstants.TOP);
}});
JPanel allStats = new JPanel(new GridLayout(3, 8));
for(String stat: BalanceData.ORDER){
StatSpinner spinner = new StatSpinner(stat, d.bases.get(stat), 1);
spinner.addChangeListener(new ChangeListener(){
@Override
public void stateChanged(ChangeEvent e) {
StatSpinner source = (StatSpinner) e.getSource();
data.bases.put(source.name, (Integer)source.getValue());
refresh();
}
});
allStats.add(spinner);
}
for(String stat: BalanceData.ORDER){
StatSpinner spinner = new StatSpinner(stat, d.growths.get(stat), 5);
spinner.addChangeListener(new ChangeListener(){
@Override
public void stateChanged(ChangeEvent e) {
StatSpinner source = (StatSpinner) e.getSource();
data.growths.put(source.name, (Integer)source.getValue());
refresh();
}
});
allStats.add(spinner);
}
for(String stat: BalanceData.ORDER){
JLabel label = new JLabel();
label.setHorizontalAlignment(SwingConstants.CENTER);
values.put(stat, label);
allStats.add(label);
}
add(allStats);
refresh();
setMaximumSize(getPreferredSize());
}
private void setVerticalAlignment(int top) {
// TODO Auto-generated method stub
}
public void refresh(){
int lv = tab.getLevel();
for(String stat: BalanceData.ORDER){
int value = data.bases.get(stat) + (lv - 1) * data.growths.get(stat) / 100;
values.get(stat).setText(value + "");
}
}
public String exportString(){
return data.exportString();
}
}