package uk.ac.cam.cstibhotel.otcanalyser.gui; import uk.ac.cam.cstibhotel.otcanalyser.dataanalysis.AnalysisItem; import uk.ac.cam.cstibhotel.otcanalyser.dataanalysis.PriceTimePair; import uk.ac.cam.cstibhotel.otcanalyser.trade.Trade; import java.awt.Dimension; import java.text.DecimalFormat; import java.util.List; import javax.swing.JScrollPane; import javax.swing.JTabbedPane; public class DataViewer extends JTabbedPane { private static final long serialVersionUID = 1L; private DataWindow data; private GraphWindow graph; private AnalysisWindow analysis; public static DataViewer dataViewer = new DataViewer(); private DataViewer() { data = new DataWindow(); graph = new GraphWindow(); analysis = new AnalysisWindow(); JScrollPane graphPane = new JScrollPane(graph); graphPane.setOpaque(false); graphPane.getViewport().setOpaque(false); JScrollPane analysisPane = new JScrollPane(analysis); analysisPane.setOpaque(false); analysisPane.getViewport().setOpaque(false); addTab("Graph", graphPane); addTab("Data", data); addTab("Extended Analysis", new JScrollPane(analysisPane)); this.setMinimumSize(new Dimension(750, 500)); } //add trades to the DataViewer table public static void addTrades(List<Trade> trades) { for (Trade t : trades) { dataViewer.data.getTable().addRow(t); } } public static void addGraphPoints(List<PriceTimePair> maxes, List<PriceTimePair> mins, List<PriceTimePair> avgs,List<PriceTimePair> trendLine, String currency, boolean byMonth) { dataViewer.graph.addTradesToDatasets(maxes, mins, avgs,trendLine, currency, byMonth); } //adds trendline points to graphs public static void addTrendlinePoints(List<List<PriceTimePair>> ptp) { dataViewer.graph.addTrendlinePoints(ptp); } //clear trades - call before adding new trades public static void clearTrades() { dataViewer.data.clear(); dataViewer.graph.clear(); dataViewer.analysis.clear(); dataViewer.repaint(); } //add analysis public static void addAnalysis (List<AnalysisItem> maxes, List<AnalysisItem> mins, List<AnalysisItem> avgs) { if (!avgs.isEmpty() && maxes.size() == avgs.size() && avgs.size() == mins.size()) { for (int i = 0; i < maxes.size(); i++) { String analysis = ""; String curr = maxes.get(i).getCurrency(); if (curr.isEmpty()) { curr = "Unknown Currency"; } DecimalFormat format = new DecimalFormat("#.00"); curr += "\n"; analysis += "Largest Trade Price: " + format.format(maxes.get(i).getPrice()) + " " + curr; analysis += "Smallest Trade Price: " + format.format(mins.get(i).getPrice()) + " " + curr; analysis += "Average Trade Price: " + format.format(avgs.get(i).getPrice()) + " " + curr; addAnalysis(analysis, "Basic Information", curr); } } } //add titled analysis public static void addAnalysis (String analysis, String title, String currency) { dataViewer.analysis.addAnalysis(analysis, title, currency); } }