Skip to content

Commit 0692147

Browse files
Merge pull request #58 from EatSleepProgramRepeat/56-highlight-clicksearch-able-columns-light-blue
fixed bug in release lookup, highlighted columns blue, updated ver
2 parents 48b42bc + 3ab321e commit 0692147

3 files changed

Lines changed: 32 additions & 4 deletions

File tree

src/main/java/com/CDPrintable/MusicBrainzResources/MusicBrainzJSONReader.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -262,6 +262,10 @@ public MusicBrainzTrack[] getReleaseTracks() {
262262
List<MusicBrainzTrack> trackList = new ArrayList<>();
263263

264264
JsonArray mediaArray = json.getAsJsonArray("media");
265+
if (mediaArray == null) {
266+
JOptionPane.showMessageDialog(null, "No media found in JSON.", "Error", JOptionPane.ERROR_MESSAGE);
267+
return new MusicBrainzTrack[0];
268+
}
265269
for (JsonElement mediaElement : mediaArray) {
266270
JsonObject mediaObject = mediaElement.getAsJsonObject(); // Cast each element to JsonObject
267271
JsonArray trackArray = mediaObject.getAsJsonArray("tracks");

src/main/java/com/CDPrintable/ProgramWindow.java

Lines changed: 27 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
import javax.swing.*;
1616
import javax.swing.event.DocumentEvent;
1717
import javax.swing.event.DocumentListener;
18+
import javax.swing.table.DefaultTableCellRenderer;
1819
import javax.swing.table.DefaultTableModel;
1920
import javax.swing.table.TableColumn;
2021
import java.awt.*;
@@ -132,9 +133,11 @@ public void mouseClicked(MouseEvent e) {
132133
clearIdList();
133134
String finalSelectedItem = selectedItem;
134135
Constants.THREAD_MANAGER.submit(() -> {
136+
int[] columnsToHighlight = null;
135137
MusicBrainzJSONReader reader = new MusicBrainzJSONReader(sendRequest(finalSelectedItem.toLowerCase(Locale.ROOT), searchField.getText(), false));
136138
switch (finalSelectedItem) {
137139
case "CDStub" -> {
140+
columnsToHighlight = new int[]{0, 1};
138141
// Get CDStubs and set the table model
139142
MusicBrainzCDStub[] cdStubs = reader.getCDStubs();
140143
for (MusicBrainzCDStub cdStub : cdStubs) {
@@ -153,6 +156,7 @@ public void mouseClicked(MouseEvent e) {
153156
searchTable.setModel(reader.getArtistsAsTableModel(artists));
154157
}
155158
case "Release" -> {
159+
columnsToHighlight = new int[]{0, 1};
156160
// Get Releases and set the table model
157161
MusicBrainzRelease[] releases = reader.getReleases();
158162
for (MusicBrainzRelease release : releases) {
@@ -163,8 +167,12 @@ public void mouseClicked(MouseEvent e) {
163167
}
164168
default -> JOptionPane.showMessageDialog(panel, "Please select a search type.");
165169
}
170+
if (columnsToHighlight != null) {
171+
for (int column : columnsToHighlight) {
172+
searchTable.getColumnModel().getColumn(column).setCellRenderer(new LightBlueColumnRenderer());
173+
}
174+
}
166175
});
167-
168176
resizeColumnWidths(searchTable);
169177
});
170178

@@ -176,6 +184,9 @@ public void mouseClicked(MouseEvent e) {
176184
// Add the CD Search panel to the main panel
177185
panel.add(cdSearchPanel, BorderLayout.SOUTH);
178186

187+
// Add a label that informs the user about ClickSearch.
188+
panel.add(new JLabel("Click a row in a column that is highlighted in light blue to search or add something to the final label."), BorderLayout.NORTH);
189+
179190
return panel;
180191
}
181192

@@ -402,7 +413,7 @@ private void clickSearch(int row, int col, JTable table) {
402413

403414
try {
404415
if (col == 0) {
405-
response = sendRequest(typeOfTable.equals("Disc Name") ? "tracks" : "release", idList.get(row), typeOfTable.equals("Disc Name"));
416+
response = sendRequest(typeOfTable.equals("Disc Name") ? "tracks" : "release", idList.get(row), true);
406417
MusicBrainzJSONReader reader = new MusicBrainzJSONReader(response);
407418
model = reader.getTracksAsTableModel(typeOfTable.equals("Disc Name") ? reader.getTracks() : reader.getReleaseTracks());
408419
String date = typeOfTable.equals("Release Name") ? table.getValueAt(row, 3).toString() : null;
@@ -415,7 +426,7 @@ private void clickSearch(int row, int col, JTable table) {
415426
createArtistDialog(model);
416427
}
417428
} catch (Exception e) {
418-
JOptionPane.showMessageDialog(null, "An error occurred while processing the request.", "Error", JOptionPane.ERROR_MESSAGE);
429+
JOptionPane.showMessageDialog(null, "An error occurred while processing the request. More info: " + e, "Error", JOptionPane.ERROR_MESSAGE);
419430
setSearchStatus("Error", "red");
420431
}
421432
});
@@ -480,4 +491,17 @@ private void createArtistDialog(DefaultTableModel model) {
480491
dialog.pack();
481492
dialog.setVisible(true);
482493
}
494+
495+
/**
496+
* A custom table cell renderer that sets the background color of the cell to light blue.
497+
* Used for columns that support ClickSearch.
498+
*/
499+
static class LightBlueColumnRenderer extends DefaultTableCellRenderer {
500+
@Override
501+
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
502+
Component cell = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
503+
cell.setBackground(new Color(173, 216, 230)); // Light blue color
504+
return cell;
505+
}
506+
}
483507
}
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
# Application version.
22

33
# MAJOR MINOR PATCH
4-
version=1.10.6
4+
version=1.10.7

0 commit comments

Comments
 (0)