package uk.ac.cam.cstibhotel.otcanalyser.gui;
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.util.ArrayList;
import java.util.List;
import javax.swing.BorderFactory;
import javax.swing.BoxLayout;
import javax.swing.JTextPane;
import javax.swing.border.EmptyBorder;
public class AnalysisWindow extends CurrencyToolbarWindow {
private static final long serialVersionUID = 1L;
private List<ContentPanel> contentPanel = new ArrayList<>();
private ContentPanel currentPanel;
private ContentPanel pnl;
private class AnalysisPanel extends JTextPane {
private static final long serialVersionUID = 1L;
public AnalysisPanel(String text) {
super();
setEditable(false);
setText(text);
setBorder(BorderFactory.createCompoundBorder(new EmptyBorder(5,0,5,0),
BorderFactory.createEtchedBorder()));
}
public AnalysisPanel(String text, String title) {
super();
setEditable(false);
setText(text);
setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(), title));
setOpaque(false);
}
}
public AnalysisWindow() {
pnl = new ContentPanel();
pnl.setBorder(new EmptyBorder(0,0,0,0));
add(pnl, BorderLayout.CENTER);
}
public void addContentPanel(String currency) {
ContentPanel cPnl = new ContentPanel();
cPnl.setBorder(new EmptyBorder(5,5,5,5));
cPnl.setLayout(new BoxLayout(cPnl, BoxLayout.Y_AXIS));
contentPanel.add(cPnl);
cPnl.setBorder(BorderFactory.createEtchedBorder());
currencies.add(currency);
if (currencies.size() > 1) {
makeToolBar();
}
}
//add analysis without title
public void addAnalysis(String analysis, String currency) {
if (!currencies.contains(currency)) {
addContentPanel(currency);
}
int i = currencies.indexOf(currency);
contentPanel.get(i).add(new AnalysisPanel(analysis));
currentPanel = contentPanel.get(0);
pnl.add(currentPanel);
repaint();
}
//add analysis with title
public void addAnalysis(String analysis, String title, String currency) {
if (!currencies.contains(currency)) {
addContentPanel(currency);
}
int i = currencies.indexOf(currency);
contentPanel.get(i).add(new AnalysisPanel(analysis, title));
if (pnl.getComponentCount() == 0) {
currentPanel = contentPanel.get(0);
pnl.add(currentPanel);
repaint();
}
}
public void clear() {
contentPanel = new ArrayList<>();
currencies = new ArrayList<>();
pnl.removeAll();
if (showToolbar) {
remove(toolbar);
showToolbar = false;
};
}
@Override
public void actionPerformed(ActionEvent e){
if (currencies.contains(e.getActionCommand())) {
pnl.remove(currentPanel);
currentPanel = contentPanel.get(currencies.indexOf(e.getActionCommand()));
pnl.add(currentPanel);
pnl.repaint();
repaint();
}
}
}