From 49f79f31c728cc9a39b695a559404faa9a15f9b3 Mon Sep 17 00:00:00 2001 From: Niki Roo Date: Wed, 8 Mar 2017 20:26:23 +0100 Subject: [PATCH] Version 1.4.0: new Bundle configuration controls --- changelog | 5 +++- src/be/nikiroo/utils/ui/ConfigEditor.java | 36 ++++++++++++++++------- src/be/nikiroo/utils/ui/ConfigItem.java | 8 ++++- 3 files changed, 36 insertions(+), 13 deletions(-) diff --git a/changelog b/changelog index 56a8fab0..4a8514d7 100644 --- a/changelog +++ b/changelog @@ -1,9 +1,12 @@ Version 1.4.0 ------------- -RW Bundles +R/W Bundles Bundle is now Read/Write +Bundle Configuration + New UI controls to configure the Bundles graphically + Version 1.3.6 ------------- diff --git a/src/be/nikiroo/utils/ui/ConfigEditor.java b/src/be/nikiroo/utils/ui/ConfigEditor.java index 6b820bb1..fb98eba0 100644 --- a/src/be/nikiroo/utils/ui/ConfigEditor.java +++ b/src/be/nikiroo/utils/ui/ConfigEditor.java @@ -8,7 +8,10 @@ import java.util.List; import javax.swing.BoxLayout; import javax.swing.JButton; +import javax.swing.JComponent; +import javax.swing.JLabel; import javax.swing.JPanel; +import javax.swing.JScrollPane; import javax.swing.border.EmptyBorder; import be.nikiroo.utils.resources.Bundle; @@ -36,24 +39,35 @@ public class ConfigEditor> extends JPanel { * a class instance of the item type to work on * @param bundle * the {@link Bundle} to sort through + * @param title + * the title to display before the options */ - public ConfigEditor(Class type, final Bundle bundle) { - this.setLayout(new BoxLayout(this, BoxLayout.PAGE_AXIS)); + public ConfigEditor(Class type, final Bundle bundle, String title) { + this.setLayout(new BorderLayout()); + JPanel main = new JPanel(); + + JScrollPane scroll = new JScrollPane(main); + scroll.getVerticalScrollBar().setUnitIncrement(16); + this.add(scroll, BorderLayout.CENTER); + + main.setLayout(new BoxLayout(main, BoxLayout.PAGE_AXIS)); + + main.add(new JLabel(title)); items = ConfigItem.getItems(type, bundle); for (ConfigItem item : items) { - this.add(item); + main.add(item); } - addButton("Reset", new ActionListener() { + main.add(createButton("Reset", new ActionListener() { public void actionPerformed(ActionEvent e) { for (ConfigItem item : items) { item.reload(); } } - }); + })); - addButton("Default", new ActionListener() { + main.add(createButton("Default", new ActionListener() { public void actionPerformed(ActionEvent e) { Object snap = bundle.takeSnapshot(); bundle.reload(true); @@ -63,9 +77,9 @@ public class ConfigEditor> extends JPanel { bundle.reload(false); bundle.restoreSnapshot(snap); } - }); + })); - addButton("Save", new ActionListener() { + main.add(createButton("Save", new ActionListener() { public void actionPerformed(ActionEvent e) { for (ConfigItem item : items) { item.save(); @@ -77,7 +91,7 @@ public class ConfigEditor> extends JPanel { e1.printStackTrace(); } } - }); + })); } /** @@ -88,7 +102,7 @@ public class ConfigEditor> extends JPanel { * @param listener * the action */ - private void addButton(String title, ActionListener listener) { + private JComponent createButton(String title, ActionListener listener) { JButton button = new JButton(title); button.addActionListener(listener); @@ -97,6 +111,6 @@ public class ConfigEditor> extends JPanel { panel.setBorder(new EmptyBorder(2, 10, 2, 10)); panel.add(button, BorderLayout.CENTER); - this.add(panel); + return panel; } } diff --git a/src/be/nikiroo/utils/ui/ConfigItem.java b/src/be/nikiroo/utils/ui/ConfigItem.java index 3593d7ce..2cec4cab 100644 --- a/src/be/nikiroo/utils/ui/ConfigItem.java +++ b/src/be/nikiroo/utils/ui/ConfigItem.java @@ -36,7 +36,13 @@ public class ConfigItem> extends JPanel { this.setLayout(new BorderLayout()); this.setBorder(new EmptyBorder(2, 10, 2, 10)); - JLabel nameLabel = new JLabel(id.toString()); + String name = id.toString(); + if (name.length() > 1) { + name = name.substring(0, 1) + name.substring(1).toLowerCase(); + name = name.replace("_", " "); + } + + JLabel nameLabel = new JLabel(name); nameLabel.setPreferredSize(new Dimension(400, 0)); this.add(nameLabel, BorderLayout.WEST); -- 2.27.0