package uk.ac.cam.cstibhotel.otcanalyser.gui; import java.awt.BorderLayout; import java.awt.Component; import javax.swing.BoxLayout; import javax.swing.JButton; import javax.swing.JComboBox; import javax.swing.JLabel; import javax.swing.JList; import javax.swing.JPanel; import javax.swing.JSpinner; import javax.swing.JTextField; import javax.swing.SpinnerNumberModel; import javax.swing.border.EmptyBorder; import org.jdesktop.swingx.autocomplete.*; public class SearchWindow extends JPanel { private static final long serialVersionUID = 1L; JList<String> myList = new JList<String>(TextStrings.Currencies); private JLabel TaxonomySelectorDescriptor; public TaxonomySelector tax; private JLabel UnderLyingAssetDescriptor; public JTextField UnderLyingAsset; private JLabel StartDateDescriptor; public DateSelector StartDate; private JLabel EndDateDescriptor; public DateSelector EndDate; private JLabel TradeTypeDescriptor; public JComboBox<String> TradeType; private JLabel minValueDescriptor; public JSpinner minValue; private JLabel maxValueDescriptor; public JSpinner maxValue; private JLabel currencyDescriptor; public JComboBox<String> currency; public JButton SearchButton; public JComboBox<String> colorScheme = new JComboBox<String>(TextStrings.colors); public SaveWindow saveWindow; private static SearchWindow instance; public static SearchWindow getInstance() { if (instance==null) instance = new SearchWindow(); return instance; } private SearchWindow() { setLayout(new BorderLayout()); JPanel top = new JPanel(); JPanel bottom = new JPanel(); top.setLayout(new BoxLayout(top, BoxLayout.Y_AXIS)); top.setBorder(new EmptyBorder(5,5,5,5)); bottom.setLayout(new BoxLayout(bottom, BoxLayout.Y_AXIS)); bottom.setBorder(new EmptyBorder(5,5,10,5)); TaxonomySelectorDescriptor = new CenteredJLabel("Select a taxonomy"); top.add(TaxonomySelectorDescriptor); TaxonomySelectorDescriptor.setVisible(true); tax = TaxonomySelector.getInstance(); top.add(tax); tax.setVisible(true); UnderLyingAssetDescriptor = new CenteredJLabel("Underlying Asset (optional)"); top.add(UnderLyingAssetDescriptor); UnderLyingAssetDescriptor.setVisible(true); UnderLyingAsset = new JTextField(); top.add(UnderLyingAsset); UnderLyingAsset.setVisible(true); TradeTypeDescriptor = new CenteredJLabel("Select trade type"); top.add(TradeTypeDescriptor); TradeTypeDescriptor.setVisible(true); TradeType = new JComboBox<String>(TextStrings.TradeType); top.add(TradeType); TradeType.setVisible(true); StartDateDescriptor = new CenteredJLabel("Select start date"); top.add(StartDateDescriptor); StartDateDescriptor.setVisible(true); StartDate = new DateSelector(); top.add(StartDate); StartDate.Year.setSelectedIndex(2); StartDate.setVisible(true); EndDateDescriptor = new CenteredJLabel("Select end date"); top.add(EndDateDescriptor); EndDateDescriptor.setVisible(true); EndDate = new DateSelector(); top.add(EndDate); EndDate.setVisible(true); minValueDescriptor = new CenteredJLabel("Select minimum price (optional)"); top.add(minValueDescriptor); minValueDescriptor.setToolTipText("Note: if the min and max are equal," + "\n" + " then their values will be ignored"); minValueDescriptor.setVisible(true); /* * jSpinner bug fix */ Long val = 0L; Long min = 0L; Long max = Long.MAX_VALUE; Long step = 1L; //Negative values not allowed SpinnerNumberModel minSpinner = new SpinnerNumberModel(val, min, max ,step); minValue = new JSpinner(minSpinner); top.add(minValue); minValue.setToolTipText("This is bad"); minValue.setVisible(true); maxValueDescriptor = new CenteredJLabel("Select maximum price (optional)"); top.add(maxValueDescriptor); maxValueDescriptor.setVisible(true); //Negative values not allowed SpinnerNumberModel maxSpinner = new SpinnerNumberModel(val, min, max , step); maxValue = new JSpinner(maxSpinner); top.add(maxValue); maxValue.setVisible(true); currencyDescriptor = new CenteredJLabel("Select a currency (optional)"); top.add(currencyDescriptor); currencyDescriptor.setVisible(true); currency = new JComboBox<String>(TextStrings.Currencies); currency.setEditable(true); Configurator.enableAutoCompletion(currency); top.add(currency); currency.setVisible(true); SearchButton = new JButton("Search"); SearchButton.setAlignmentX(Component.CENTER_ALIGNMENT); top.add(SearchButton); SearchButton.setVisible(true); SearchButton.addActionListener(new SearchButtonListener()); colorScheme.setVisible(true); top.add(colorScheme); ColorChangeListener colListener = new ColorChangeListener(colorScheme); colorScheme.addActionListener(colListener); saveWindow = SaveWindow.getInstance(); bottom.add(saveWindow); saveWindow.setVisible(true); add(top, BorderLayout.NORTH); add(bottom, BorderLayout.SOUTH); } }