package gui; import java.awt.BorderLayout; import java.awt.Dimension; import javax.swing.BorderFactory; import javax.swing.JComboBox; import javax.swing.JPanel; import javax.swing.JScrollPane; import filter.base.FilterLoader; import filter.base.ImageFilter; public class FilterPanel extends JPanel { private static final long serialVersionUID = -8746574196794838966L; private boolean channel; private SettingsPanel setP; private JComboBox<ImageFilter> filterBox; private FieldControlsPanel fcp; private JScrollPane settingsPane; public FilterPanel(SettingsPanel setP, boolean channel) { this.setP = setP; this.channel = channel; initializeComponents(); addActionListeners(); setOpaque(false); setLayout(new BorderLayout()); add(filterBox, BorderLayout.NORTH); add(settingsPane, BorderLayout.CENTER); } private void initializeComponents() { filterBox = FilterLoader.getFilterBox(); fcp = getFilter().getSettingsPanel(setP.getRefreshable(), channel); settingsPane= new JScrollPane(fcp); settingsPane.setMinimumSize(new Dimension(fcp.getPreferredSize().width, Math.min(100, fcp.getMinimumSize().height))); settingsPane.getViewport().setOpaque(false); settingsPane.setBorder(BorderFactory.createEmptyBorder()); settingsPane.setOpaque(false); } private void addActionListeners() { filterBox.addActionListener(ae -> { fcp = getFilter().getSettingsPanel(setP.getRefreshable(), channel); settingsPane.setViewportView(fcp); // animationControlP.setFCP(fcp); fcp.setAnimationMode(setP.isAnimationMode()); setP.refreshImageFilters(); }); } public ImageFilter getFilter() { return (ImageFilter) filterBox.getSelectedItem(); } public FieldControlsPanel getFCP() { return fcp; } public void setAnimationMode(boolean animated) { fcp.setAnimationMode(animated); } }