make MenuPanel load categories and channels from database

This commit is contained in:
mykola2312 2024-04-23 17:53:22 +03:00
parent af6f9d5db6
commit 4802550b1b
3 changed files with 49 additions and 26 deletions

View file

@ -8,4 +8,9 @@ public class Category {
@Column(name = "TITLE") @Column(name = "TITLE")
public String title; public String title;
@Override()
public String toString() {
return title;
}
} }

View file

@ -17,4 +17,9 @@ public class Channel {
@Column(name = "LOGO") @Column(name = "LOGO")
public String logo; public String logo;
@Override
public String toString() {
return title;
}
} }

View file

@ -1,18 +1,27 @@
package com.mykola2312.mptv.ui; package com.mykola2312.mptv.ui;
import javax.swing.*; import javax.swing.*;
import java.util.List;
import org.apache.log4j.Logger; import org.apache.log4j.Logger;
import org.jooq.impl.DSL;
import com.mykola2312.mptv.db.DB;
import com.mykola2312.mptv.db.pojo.Category;
import com.mykola2312.mptv.db.pojo.Channel;
import static com.mykola2312.mptv.tables.Category.*;
import static com.mykola2312.mptv.tables.Channel.*;
import java.awt.*; import java.awt.*;
import java.awt.event.ActionEvent; import java.awt.event.ActionEvent;
public class MenuPanel extends JPanel { public class MenuPanel extends JPanel {
private String[] categoryData; private List<Category> categoryData;
private JList<String> categoryList; private JList<Category> categoryList;
private String[] channelData; private List<Channel> channelData;
private JList<String> channelList; private JList<Channel> channelList;
enum MenuPosition { enum MenuPosition {
MENU_CATEGORIES, MENU_CATEGORIES,
@ -45,26 +54,21 @@ public class MenuPanel extends JPanel {
} }
} }
public void setCategories(String[] categories) { private void loadCategories() {
categoryIndex = 0; categoryData = DSL.using(DB.CONFIG)
categoryData = categories; .select(CATEGORY.ID, CATEGORY.TITLE)
if (categoryList == null) { .from(CATEGORY)
categoryList = new JList<>(categoryData); .fetchInto(Category.class);
categoryList.setFont(getFont()); categoryList.setListData(categoryData.toArray(new Category[0]));
} else {
categoryList.setListData(categoryData);
}
} }
public void setChannels(String[] channels) { private void loadChannels(Integer categoryId) {
channelIndex = 0; channelData = DSL.using(DB.CONFIG)
channelData = channels; .select(CHANNEL.ID, CHANNEL.TITLE)
if (channelList == null) { .from(CHANNEL)
channelList = new JList<>(channelData); .where(CHANNEL.CATEGORY.eq(categoryId))
channelList.setFont(getFont()); .fetchInto(Channel.class);
} else { channelList.setListData(channelData.toArray(new Channel[0]));
channelList.setListData(channelData);
}
} }
public void handleMenuAction(MenuAction action) { public void handleMenuAction(MenuAction action) {
@ -86,11 +90,14 @@ public class MenuPanel extends JPanel {
} }
if (categoryIndex < 0) categoryIndex = 0; if (categoryIndex < 0) categoryIndex = 0;
if (channelIndex < 0) channelIndex = 0; if (channelIndex < 0) channelIndex = 0;
categoryIndex = categoryIndex % categoryData.length;
channelIndex = channelIndex % channelData.length; if (categoryData != null) categoryIndex = categoryIndex % categoryData.size();
if (channelData != null) channelIndex = channelIndex % channelData.size();
switch (menuPosition) { switch (menuPosition) {
case MENU_CATEGORIES -> { case MENU_CATEGORIES -> {
loadCategories();
categoryList.setEnabled(true); categoryList.setEnabled(true);
channelList.setEnabled(false); channelList.setEnabled(false);
@ -98,6 +105,8 @@ public class MenuPanel extends JPanel {
categoryList.ensureIndexIsVisible(categoryIndex); categoryList.ensureIndexIsVisible(categoryIndex);
} }
case MENU_CHANNELS -> { case MENU_CHANNELS -> {
loadChannels(categoryData.get(categoryIndex).id);
categoryList.setEnabled(false); categoryList.setEnabled(false);
channelList.setEnabled(true); channelList.setEnabled(true);
@ -129,14 +138,16 @@ public class MenuPanel extends JPanel {
items[i] = "item" + i; items[i] = "item" + i;
} }
setCategories(items); categoryList = new JList<Category>();
categoryList.setFont(getFont());
final JScrollPane categoryListScroll = new JScrollPane(categoryList); final JScrollPane categoryListScroll = new JScrollPane(categoryList);
categoryListScroll.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_NEVER); categoryListScroll.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_NEVER);
categoryListScroll.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER); categoryListScroll.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
categoryPanel.add(categoryListScroll, BorderLayout.CENTER); categoryPanel.add(categoryListScroll, BorderLayout.CENTER);
setChannels(items); channelList = new JList<Channel>();
channelList.setFont(getFont());
final JScrollPane channelListScroll = new JScrollPane(channelList); final JScrollPane channelListScroll = new JScrollPane(channelList);
channelListScroll.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_NEVER); channelListScroll.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_NEVER);
@ -158,5 +169,7 @@ public class MenuPanel extends JPanel {
menuPosition = MenuPosition.MENU_CATEGORIES; menuPosition = MenuPosition.MENU_CATEGORIES;
categoryList.setEnabled(true); categoryList.setEnabled(true);
channelList.setEnabled(false); channelList.setEnabled(false);
loadCategories();
} }
} }