diff options
| author | Pinapelz <yukais@pinapelz.com> | 2025-10-15 14:31:33 -0700 |
|---|---|---|
| committer | Pinapelz <yukais@pinapelz.com> | 2025-10-15 14:31:33 -0700 |
| commit | 30f4a1cea54e95d60967fc4cfdabada4251d7272 (patch) | |
| tree | cba2955d1b03028a43099e660f4921a66fbbdeea /src/main | |
| parent | 866a8b7d1bc47999e5846c6402e45473bdd1114f (diff) | |
add initialization of DownloadConfigPane and TagEditorScreen
Diffstat (limited to 'src/main')
| -rw-r--r-- | src/main/java/DownloadConfigPane.java | 93 | ||||
| -rw-r--r-- | src/main/java/TagEditorScreen.java | 106 |
2 files changed, 197 insertions, 2 deletions
diff --git a/src/main/java/DownloadConfigPane.java b/src/main/java/DownloadConfigPane.java index 1e9abb2..4f36052 100644 --- a/src/main/java/DownloadConfigPane.java +++ b/src/main/java/DownloadConfigPane.java @@ -1,8 +1,7 @@ import javax.swing.*; import javax.swing.table.DefaultTableCellRenderer; import javax.swing.table.DefaultTableModel; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; +import java.awt.*; import java.io.File; import java.io.FileWriter; import java.io.IOException; @@ -27,10 +26,26 @@ public class DownloadConfigPane extends JFrame{ private String loadedPath; public DownloadConfigPane() { + // Initialize all components + mainPanel = new JPanel(); + mainPanel.setLayout(new GridBagLayout()); + urlField = new JTextField(); + fromField = new JTextField("HH:MM:SS"); + toField = new JTextField("HH:MM:SS"); + loadFromFileButton = new JButton("Load From File"); + fromLabel = new JLabel("From:"); + toLabel = new JLabel("To:"); + urlLabel = new JLabel("URL"); + addButton = new JButton("Add"); + saveButton = new JButton("Save"); + removeButton = new JButton("Remove"); + fullVideoCheckBox = new JCheckBox("Full Video"); + this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); this.setLocationRelativeTo(null); this.setSize(900, 500); initializeTable(); + setupLayout(); this.add(mainPanel); this.setVisible(true); loadFromFileButton.addActionListener(e -> loadConfigFromFile()); @@ -92,11 +107,85 @@ public class DownloadConfigPane extends JFrame{ }); } + private void setupLayout() { + GridBagConstraints gbc = new GridBagConstraints(); + gbc.insets = new Insets(5, 5, 5, 5); + + // First row - URL + gbc.gridx = 0; + gbc.gridy = 0; + gbc.anchor = GridBagConstraints.WEST; + mainPanel.add(urlLabel, gbc); + + gbc.gridx = 1; + gbc.gridwidth = 4; + gbc.fill = GridBagConstraints.HORIZONTAL; + gbc.weightx = 1.0; + mainPanel.add(urlField, gbc); + + // Second row - From/To fields + gbc.gridx = 0; + gbc.gridy = 1; + gbc.gridwidth = 1; + gbc.weightx = 0; + gbc.fill = GridBagConstraints.NONE; + mainPanel.add(fromLabel, gbc); + + gbc.gridx = 1; + gbc.fill = GridBagConstraints.HORIZONTAL; + gbc.weightx = 0.3; + mainPanel.add(fromField, gbc); + + gbc.gridx = 2; + gbc.fill = GridBagConstraints.NONE; + gbc.weightx = 0; + mainPanel.add(fullVideoCheckBox, gbc); + + gbc.gridx = 3; + mainPanel.add(toLabel, gbc); + + gbc.gridx = 4; + gbc.fill = GridBagConstraints.HORIZONTAL; + gbc.weightx = 0.3; + mainPanel.add(toField, gbc); + + // Third row - Add button + gbc.gridx = 0; + gbc.gridy = 2; + gbc.gridwidth = 5; + gbc.fill = GridBagConstraints.HORIZONTAL; + gbc.weightx = 1.0; + mainPanel.add(addButton, gbc); + + // Fourth row - Remove button + gbc.gridy = 3; + mainPanel.add(removeButton, gbc); + + // Fifth row - Table + gbc.gridy = 4; + gbc.weighty = 1.0; + gbc.fill = GridBagConstraints.BOTH; + tableScrollPane = new JScrollPane(outputTable); + mainPanel.add(tableScrollPane, gbc); + + // Sixth row - Load and Save buttons + gbc.gridy = 5; + gbc.gridwidth = 2; + gbc.weighty = 0; + gbc.fill = GridBagConstraints.HORIZONTAL; + mainPanel.add(loadFromFileButton, gbc); + + gbc.gridx = 2; + gbc.gridwidth = 3; + mainPanel.add(saveButton, gbc); + } + private void initializeTable() { DefaultTableModel model = new DefaultTableModel(); // center align the text in the table DefaultTableCellRenderer centerRenderer = new DefaultTableCellRenderer(); centerRenderer.setHorizontalAlignment( JLabel.CENTER ); + outputTable = new JTable(); outputTable.setDefaultRenderer(String.class, centerRenderer); model.addColumn("URL"); model.addColumn("From"); diff --git a/src/main/java/TagEditorScreen.java b/src/main/java/TagEditorScreen.java index 5fe6fd0..39d1542 100644 --- a/src/main/java/TagEditorScreen.java +++ b/src/main/java/TagEditorScreen.java @@ -35,11 +35,28 @@ public class TagEditorScreen extends JFrame { private Boolean imageSelected = false; public TagEditorScreen() { + // Initialize all components + mainPanel = new JPanel(); + mainPanel.setLayout(new GridBagLayout()); + titleField = new JTextField(); + titleLabel = new JLabel("Title:"); + uploaderField = new JTextField(); + uploaderLabel = new JLabel("Uploader:"); + imagePathField = new JTextField(); + imageChooseButton = new JButton("Choose Image"); + songTable = new JTable(); + chooseAudioDirectoryButton = new JButton("Choose Audio Directory"); + applyChangesButton = new JButton("Apply Changes"); + artIconLabel = new JLabel(); + searchField = new JTextField(); + listenButton = new JButton("Listen"); + this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); this.setLocationRelativeTo(null); this.setSize(700, 550); initalizeListeners(); initializeTable(); + setupLayout(); listenButton.setEnabled(false); this.add(mainPanel); this.setVisible(true); @@ -61,6 +78,9 @@ public class TagEditorScreen extends JFrame { } private void initializeTable() { + if (songTable == null) { + songTable = new JTable(); + } songTable.setDefaultEditor(Object.class, null); songTable.setModel(new DefaultTableModel(null, new String[]{"Title", "Artist", "Filepath"})); songTable.getTableHeader().setReorderingAllowed(false); @@ -124,6 +144,92 @@ public class TagEditorScreen extends JFrame { } + private void setupLayout() { + GridBagConstraints gbc = new GridBagConstraints(); + gbc.insets = new Insets(5, 5, 5, 5); + + // Title row + gbc.gridx = 0; + gbc.gridy = 0; + gbc.anchor = GridBagConstraints.WEST; + mainPanel.add(titleLabel, gbc); + + gbc.gridx = 1; + gbc.gridwidth = 2; + gbc.fill = GridBagConstraints.HORIZONTAL; + gbc.weightx = 1.0; + mainPanel.add(titleField, gbc); + + // Uploader row + gbc.gridx = 0; + gbc.gridy = 1; + gbc.gridwidth = 1; + gbc.weightx = 0; + gbc.fill = GridBagConstraints.NONE; + mainPanel.add(uploaderLabel, gbc); + + gbc.gridx = 1; + gbc.gridwidth = 2; + gbc.fill = GridBagConstraints.HORIZONTAL; + gbc.weightx = 1.0; + mainPanel.add(uploaderField, gbc); + + // Image path row + gbc.gridx = 0; + gbc.gridy = 2; + gbc.gridwidth = 1; + gbc.weightx = 0; + gbc.fill = GridBagConstraints.NONE; + mainPanel.add(new JLabel("Album Art:"), gbc); + + gbc.gridx = 1; + gbc.fill = GridBagConstraints.HORIZONTAL; + gbc.weightx = 1.0; + mainPanel.add(imagePathField, gbc); + + gbc.gridx = 2; + gbc.fill = GridBagConstraints.NONE; + gbc.weightx = 0; + mainPanel.add(imageChooseButton, gbc); + + // Art icon + gbc.gridx = 3; + gbc.gridy = 0; + gbc.gridheight = 3; + mainPanel.add(artIconLabel, gbc); + + // Search field + gbc.gridx = 0; + gbc.gridy = 3; + gbc.gridheight = 1; + gbc.gridwidth = 3; + gbc.fill = GridBagConstraints.HORIZONTAL; + mainPanel.add(searchField, gbc); + + // Song table + gbc.gridx = 0; + gbc.gridy = 4; + gbc.gridwidth = 4; + gbc.weighty = 1.0; + gbc.fill = GridBagConstraints.BOTH; + JScrollPane scrollPane = new JScrollPane(songTable); + mainPanel.add(scrollPane, gbc); + + // Bottom buttons + gbc.gridy = 5; + gbc.gridwidth = 1; + gbc.weighty = 0; + gbc.fill = GridBagConstraints.HORIZONTAL; + mainPanel.add(chooseAudioDirectoryButton, gbc); + + gbc.gridx = 1; + mainPanel.add(listenButton, gbc); + + gbc.gridx = 2; + gbc.gridwidth = 2; + mainPanel.add(applyChangesButton, gbc); + } + private void initalizeListeners() { chooseAudioDirectoryButton.addActionListener(e -> { clearSongTable(); |
