package dailyBot.analysis.view;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JCheckBox;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import dailyBot.analysis.Utils;
import dailyBot.model.MultiFilter;
import dailyBot.model.Pair;
import dailyBot.model.SignalProvider.SignalProviderId;
import dailyBot.model.Strategy.StrategyId;
public class AnalysisFormat extends JFrame
{
private static final long serialVersionUID = 7082375872262280863L;
private static void load(JComboBox <StrategyId> comboBoxStrategy, JComboBox <Pair> comboBoxPair, JComboBox <Boolean> comboBoxBuy, SignalProviderId id, JCheckBox[] filterCheckBoxes, JCheckBox andCheckBox)
{
MultiFilter filter = Utils.getFilterSignalProvider(id.ordinal(), true);
filter.setActive(true);
for(StrategyId strategyId : StrategyId.values())
for(Pair pair : Pair.values())
for(boolean isBuy : new boolean[]{true, false})
filter.changeActive(strategyId, pair, isBuy, false);
filter.changeActive((StrategyId) comboBoxStrategy.getSelectedItem(), (Pair) comboBoxPair.getSelectedItem(), ((Boolean) comboBoxBuy.getSelectedItem()).booleanValue(), true);
int i = Utils.getFilterSignalProvider(id.ordinal()).getActiveFilters()[((StrategyId) comboBoxStrategy.getSelectedItem()).ordinal()][((Pair) comboBoxPair.getSelectedItem()).ordinal()][((Boolean) comboBoxBuy.getSelectedItem()).booleanValue() ? 1 : 0];
filter.changeActiveFilter((StrategyId) comboBoxStrategy.getSelectedItem(), (Pair) comboBoxPair.getSelectedItem(), ((Boolean) comboBoxBuy.getSelectedItem()).booleanValue(), i);
if((i & 1) == 1)
andCheckBox.setSelected(false);
else
andCheckBox.setSelected(true);
i >>= 1;
for(int j = 0; j < filterCheckBoxes.length; j++, i >>= 1)
if((i & 1) == 1)
filterCheckBoxes[j].setSelected(true);
else
filterCheckBoxes[j].setSelected(false);
int count = 0;
for(JCheckBox jCheckBox : filterCheckBoxes)
if(jCheckBox.isSelected())
count++;
if(count <= 1)
{
andCheckBox.setSelected(false);
andCheckBox.setEnabled(false);
}
else
andCheckBox.setEnabled(true);
HistoricChart.currentUpdate.get().run();
}
private static void save(JComboBox <StrategyId> comboBoxStrategy, JComboBox <Pair> comboBoxPair, JComboBox <Boolean> comboBoxBuy, SignalProviderId id, JCheckBox[] filterCheckBoxes, JCheckBox andCheckBox)
{
MultiFilter filter = Utils.getFilterSignalProvider(id.ordinal(), true);
filter.setActive(true);
for(StrategyId strategyId : StrategyId.values())
for(Pair pair : Pair.values())
for(boolean isBuy : new boolean[]{true, false})
filter.changeActive(strategyId, pair, isBuy, false);
filter.changeActive((StrategyId) comboBoxStrategy.getSelectedItem(), (Pair) comboBoxPair.getSelectedItem(), ((Boolean) comboBoxBuy.getSelectedItem()).booleanValue(), true);
int i = 0;
if(!andCheckBox.isSelected())
i |= 1 << 0;
for(int j = 0; j < filterCheckBoxes.length; j++)
if(filterCheckBoxes[j].isSelected())
i |= 1 << (j + 1);
Utils.getFilterSignalProvider(id.ordinal()).changeActiveFilter((StrategyId) comboBoxStrategy.getSelectedItem(), (Pair) comboBoxPair.getSelectedItem(), ((Boolean) comboBoxBuy.getSelectedItem()).booleanValue(), i);
filter.changeActiveFilter((StrategyId) comboBoxStrategy.getSelectedItem(), (Pair) comboBoxPair.getSelectedItem(), ((Boolean) comboBoxBuy.getSelectedItem()).booleanValue(), i);
int count = 0;
for(JCheckBox jCheckBox : filterCheckBoxes)
if(jCheckBox.isSelected())
count++;
if(count <= 1)
{
andCheckBox.setSelected(false);
andCheckBox.setEnabled(false);
}
else
andCheckBox.setEnabled(true);
HistoricChart.currentUpdate.get().run();
}
public AnalysisFormat(final SignalProviderId id)
{
new HistoricChart(id.toString() + "", new ProgressChart(), id, true);
final MultiFilter filter = Utils.getFilterSignalProvider(id.ordinal(), true);
final JComboBox <StrategyId> comboBoxStrategy = new JComboBox <StrategyId> (StrategyId.values());
final JComboBox <Pair> comboBoxPair = new JComboBox <Pair> (Pair.values());
final JComboBox <Boolean> comboBoxBuy = new JComboBox <Boolean> (new Boolean[]{Boolean.TRUE, Boolean.FALSE});
int size = filter.filters().length + 1;
setLayout(new GridLayout(1, 3 + size));
add(comboBoxStrategy);
add(comboBoxPair);
add(comboBoxBuy);
final JCheckBox[] filterCheckBoxes = new JCheckBox[filter.filters().length];
for(int i = 0; i < filter.filters().length; i++)
{
filterCheckBoxes[i] = new JCheckBox(Utils.getFilterNameSignalProvider(id, i));
add(filterCheckBoxes[i]);
}
final JCheckBox andCheckBox = new JCheckBox("and");
add(andCheckBox);
ActionListener listenerSave = new ActionListener()
{
@Override
public void actionPerformed(ActionEvent e)
{
save(comboBoxStrategy, comboBoxPair, comboBoxBuy, id, filterCheckBoxes, andCheckBox);
}
};
ActionListener listenerLoad = new ActionListener()
{
@Override
public void actionPerformed(ActionEvent e)
{
load(comboBoxStrategy, comboBoxPair, comboBoxBuy, id, filterCheckBoxes, andCheckBox);
}
};
comboBoxStrategy.addActionListener(listenerLoad);
comboBoxPair.addActionListener(listenerLoad);
comboBoxBuy.addActionListener(listenerLoad);
for(JCheckBox checkBox : filterCheckBoxes)
checkBox.addActionListener(listenerSave);
andCheckBox.addActionListener(listenerSave);
listenerLoad.actionPerformed(null);
setSize(300, 300);
pack();
setVisible(true);
}
}