33import javax .swing .*;
44import javax .swing .event .DocumentEvent ;
55import javax .swing .event .DocumentListener ;
6+ import javax .swing .table .DefaultTableModel ;
67import java .awt .*;
78
89public class ProgramWindow {
910 private final UserAgent userAgent ;
1011 private JLabel fullUserAgentLabel = new JLabel ();
1112
12- ProgramWindow () {
13+ public ProgramWindow () {
1314 userAgent = new UserAgent ("CDPrintable/" + Constants .VERSION , "example@example.com" );
1415
15- JFrame frame = new JFrame ("CD Printable" );
16+ JFrame frame = new JFrame ("CD Printable v" + Constants . VERSION );
1617 frame .setDefaultCloseOperation (JFrame .EXIT_ON_CLOSE );
17- frame .setSize (800 , 600 );
18+ frame .setSize (1000 , 600 );
1819 frame .setLayout (new BorderLayout ());
1920
2021 JTabbedPane tabbedPane = new JTabbedPane ();
2122 JPanel tablePanel = tablePanel ();
22- JPanel findCDPanel = findCDPanel ();
23+ JPanel findCDPanel = searchPanel ();
2324 JPanel settingsPanel = settingsPanel ();
2425
26+ tabbedPane .addTab ("Search" , findCDPanel );
2527 tabbedPane .addTab ("Table" , tablePanel );
26- tabbedPane .addTab ("Find CD" , findCDPanel );
2728 tabbedPane .addTab ("Settings" , settingsPanel );
2829
2930 frame .add (tabbedPane , BorderLayout .CENTER );
3031
3132 // Set the frame to be visible
3233 frame .setVisible (true );
3334 }
34- public JPanel tablePanel () {
35+ private JPanel tablePanel () {
3536 JPanel panel = new JPanel (new BorderLayout ());
3637
3738 // Set up all the tables for the cd
@@ -44,29 +45,44 @@ public JPanel tablePanel() {
4445
4546 return panel ;
4647 }
47- public JPanel findCDPanel () {
48+ private JPanel searchPanel () {
4849 JPanel panel = new JPanel ();
4950 panel .setLayout (new BorderLayout ());
5051
5152 // Track List panel set up
5253 JPanel trackListPanel = new JPanel (new BorderLayout ());
53- trackListPanel .setBorder (BorderFactory .createTitledBorder ("Track List " ));
54+ trackListPanel .setBorder (BorderFactory .createTitledBorder ("Search Results " ));
5455
55- // Track List table set up
56- String [] columnNames = {"Track Number" , "Track Name" , "Track Length" };
57- JTable trackListTable = new JTable (new String [][] {new String [] {"None" , "" , "" }}, columnNames );
58- JScrollPane trackListScrollPane = new JScrollPane (trackListTable );
56+ // Search table set up
57+ JTable searchTable = new JTable (getCDStubModel ());
58+ JScrollPane trackListScrollPane = new JScrollPane (searchTable );
5959 trackListPanel .add (trackListScrollPane , BorderLayout .CENTER );
6060
6161 // Add the Track List panel to the main panel
6262 panel .add (trackListPanel , BorderLayout .NORTH );
6363
6464 // CD Search Panel set up
6565 JPanel cdSearchPanel = new JPanel ();
66- cdSearchPanel .setBorder (BorderFactory .createTitledBorder ("Search for CD " ));
66+ cdSearchPanel .setBorder (BorderFactory .createTitledBorder ("Search" ));
6767 JTextField searchField = new JTextField (15 );
68+ JComboBox <String > searchTypeComboBox = new JComboBox <>(new String [] {"CDStub" , "Artist" , "Release" });
6869 JButton searchButton = new JButton ("Search" );
70+ searchButton .addActionListener (e -> {
71+ if (searchTypeComboBox .getSelectedItem () == null ) {
72+ return ;
73+ }
74+ if (searchTypeComboBox .getSelectedItem ().equals ("CDStub" )) {
75+ searchTable .setModel (getCDStubModel ());
76+ } else if (searchTypeComboBox .getSelectedItem ().equals ("Artist" )) {
77+ searchTable .setModel (getArtistModel ());
78+ } else if (searchTypeComboBox .getSelectedItem ().equals ("Release" )) {
79+ searchTable .setModel (getReleaseModel ());
80+ } else {
81+ JOptionPane .showMessageDialog (panel , "Please select a search type." );
82+ }
83+ });
6984 cdSearchPanel .setLayout (new FlowLayout ());
85+ cdSearchPanel .add (searchTypeComboBox );
7086 cdSearchPanel .add (searchField );
7187 cdSearchPanel .add (searchButton );
7288
@@ -75,7 +91,26 @@ public JPanel findCDPanel() {
7591
7692 return panel ;
7793 }
78- public JPanel settingsPanel () {
94+
95+ private DefaultTableModel getCDStubModel () {
96+ String [] columnNames = {"Disc Name" , "Artist" , "Track Count" , "" };
97+ String [][] data = {{"" , "" , "" , "" }};
98+ return new javax .swing .table .DefaultTableModel (data , columnNames );
99+ }
100+
101+ private DefaultTableModel getArtistModel () {
102+ String [] columnNames = {"Artist Name" , "Date Organised" , "" };
103+ String [][] data = {{"" , "" , "" }};
104+ return new javax .swing .table .DefaultTableModel (data , columnNames );
105+ }
106+
107+ private DefaultTableModel getReleaseModel () {
108+ String [] columnNames = {"Release Name" , "Artist" , "Track Count" , "" };
109+ String [][] data = {{"" , "" , "" , "" }};
110+ return new javax .swing .table .DefaultTableModel (data , columnNames );
111+ }
112+
113+ private JPanel settingsPanel () {
79114 JPanel panel = new JPanel (new GridLayout (1 , 2 ));
80115 GridBagConstraints gbc = new GridBagConstraints ();
81116 gbc .insets = new Insets (5 , 5 , 5 , 5 );
0 commit comments