package dailyBot.analysis.view; import java.awt.Component; import java.awt.Dimension; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.AbstractButton; import javax.swing.JCheckBox; import javax.swing.JPanel; import javax.swing.SwingUtilities; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; import dailyBot.analysis.Utils; import dailyBot.model.Pair; import dailyBot.model.SignalProvider.SignalProviderId; import dailyBot.model.Strategy.StrategyId; public class PairFormat extends JPanel { private static final long serialVersionUID = 1L; private SignalProviderId signalProviderId; private StrategyId strategyId; private ProgressChart graficaProgreso; private HistoricChart graficaHistorial; private JCheckBox botonActivo; public PairFormat(SignalProviderId i, StrategyId ii, ProgressChart gP, HistoricChart gH, JCheckBox bA) { super(); signalProviderId = i; strategyId = ii; graficaProgreso = gP; graficaHistorial = gH; botonActivo = bA; initialize(); SwingUtilities.invokeLater(new Runnable() { public void run() { graficaProgreso.changeRecords(SignalProviderFormat.getCurrentRecords(signalProviderId, false), SignalProviderFormat.getCurrentRecordsSize(signalProviderId, false)); } }); SwingUtilities.invokeLater(new Runnable() { public void run() { graficaHistorial.changeRecords(SignalProviderFormat.getCurrentRecords(signalProviderId, false)); } }); } private void initialize() { GridLayout gridLayout = new GridLayout(); int filas = Pair.values().length; gridLayout.setRows(filas); gridLayout.setColumns(2); this.setLayout(gridLayout); for(Pair p : Pair.values()) { if(p == Pair.ALL) continue; this.add(darBoton(p, true)); this.add(darBoton(p, false)); } this.add(darBotonActivo()); this.setVisible(true); } public Component darBotonActivo() { if(botonActivo != null && strategyId.equals(StrategyId.values()[0])) return botonActivo; final JCheckBox nuevo = new JCheckBox(); nuevo.setText("Activo"); nuevo.setSize(new Dimension(30, 30)); nuevo.setSelected(Utils.getFilterSignalProvider(signalProviderId.ordinal()).isActive()); botonActivo = botonActivo == null ? nuevo : botonActivo; if(botonActivo != nuevo) nuevo.setEnabled(false); if(botonActivo.getChangeListeners().length == 1) botonActivo.addChangeListener(new ChangeListener() { @Override public void stateChanged(ChangeEvent e) { boolean activar = ((AbstractButton) e.getSource()).isSelected(); Utils.getFilterSignalProvider(signalProviderId.ordinal()).setActive(activar); HistoricChart.currentUpdate.get().run(); } }); return nuevo; } private JCheckBox darBoton(Pair p, boolean b) { JCheckBox nuevo = new JCheckBox(); nuevo.setText(p.toString() + (b ? "_T" : "_F")); nuevo.setSize(new Dimension(30, 30)); nuevo.setSelected(Utils.getFilterSignalProvider(signalProviderId.ordinal()).hasActive(strategyId, p, b)); configurar(p, b, nuevo); return nuevo; } private void configurar(final Pair par, final boolean b, JCheckBox box) { box.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { boolean activar = ((AbstractButton) e.getSource()).isSelected(); Utils.getFilterSignalProvider(signalProviderId.ordinal()).changeActive(strategyId, par, b, activar); HistoricChart.currentUpdate.get().run(); } }); } }