package uk.ac.cam.cstibhotel.otcanalyser.gui; import java.awt.Dimension; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.util.List; import javax.swing.JFrame; import uk.ac.cam.cstibhotel.otcanalyser.communicationlayer.SearchListener; import uk.ac.cam.cstibhotel.otcanalyser.communicationlayer.SearchResult; import uk.ac.cam.cstibhotel.otcanalyser.dataanalysis.AnalysisItem; public class GUI extends JFrame implements SearchListener { private static final long serialVersionUID = 1L; public static GUI gui; SearchWindow searchWindow = SearchWindow.getInstance(); DataViewer dataViewer = DataViewer.dataViewer; StatusBar statusBar = StatusBar.getInstance(); AnalysisSummary analysis = AnalysisSummary.getInstance(); HelpPane help = HelpPane.getInstance(); public static GUI getInstance() { if (gui==null) { gui = new GUI(); } return gui; } public GUI() { setTitle("OTC Analyser"); setMinimumSize(new Dimension(1250,760)); setLayout(new GridBagLayout()); setDefaultCloseOperation(DO_NOTHING_ON_CLOSE); addWindowListener(new WindowCloseListener()); GridBagConstraints helpPaneConstraints = new GridBagConstraints(); helpPaneConstraints.fill = GridBagConstraints.HORIZONTAL; //add(help,helpPaneConstraints); GridBagConstraints searchWindowConstraints = new GridBagConstraints(); searchWindowConstraints.gridx = 0; searchWindowConstraints.gridy = 1; searchWindowConstraints.gridheight = 1; searchWindowConstraints.anchor = GridBagConstraints.FIRST_LINE_START; searchWindowConstraints.fill = GridBagConstraints.VERTICAL; add(searchWindow,searchWindowConstraints); GridBagConstraints statusBarConstraints = new GridBagConstraints(); statusBarConstraints.gridx = 0; statusBarConstraints.gridy = 3; statusBarConstraints.gridwidth = 0; add(statusBar,statusBarConstraints); GridBagConstraints analysisSummaryConstraints = new GridBagConstraints(); analysisSummaryConstraints.gridx = 0; analysisSummaryConstraints.gridy = 2; analysisSummaryConstraints.gridwidth = 0; analysisSummaryConstraints.fill = GridBagConstraints.HORIZONTAL; analysisSummaryConstraints.anchor = GridBagConstraints.FIRST_LINE_START; add(analysis,analysisSummaryConstraints); GridBagConstraints dataViewerConstraints = new GridBagConstraints(); dataViewerConstraints.gridx = 1; dataViewerConstraints.gridy = 0; dataViewerConstraints.fill = GridBagConstraints.BOTH; dataViewerConstraints.weightx = 1; dataViewerConstraints.weighty = 1; dataViewerConstraints.gridheight = 2; add(dataViewer,dataViewerConstraints); setVisible(true); } @Override public void getSearchResult(SearchResult s) { DataViewer.clearTrades(); DataViewer.addTrades(s.getResultData()); } public void addAnalyses( String mostTraded, int numResults, List<AnalysisItem> maxWithCurrency, List<AnalysisItem> minWithCurrency, List<AnalysisItem> avgWithCurrency) { AnalysisSummary.getInstance().UpdateWindow(mostTraded, numResults); DataViewer.addAnalysis(maxWithCurrency, minWithCurrency, avgWithCurrency); } }