X-Git-Url: http://git.nikiroo.be/?a=blobdiff_plain;f=src%2Fbe%2Fnikiroo%2Futils%2Fui%2FConfigEditor.java;fp=src%2Fbe%2Fnikiroo%2Futils%2Fui%2FConfigEditor.java;h=0000000000000000000000000000000000000000;hb=ad207feb2815e429ae32484bc6930990099f8ea4;hp=c687c98fee5637dfb8e10b7bad32f6be102ef9d5;hpb=1b5197ed4ceec2025a9a40c417b37c646b756138;p=nikiroo-utils.git diff --git a/src/be/nikiroo/utils/ui/ConfigEditor.java b/src/be/nikiroo/utils/ui/ConfigEditor.java deleted file mode 100644 index c687c98..0000000 --- a/src/be/nikiroo/utils/ui/ConfigEditor.java +++ /dev/null @@ -1,165 +0,0 @@ -package be.nikiroo.utils.ui; - -import java.awt.BorderLayout; -import java.awt.Color; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; -import java.io.IOException; -import java.util.ArrayList; -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.JTextArea; -import javax.swing.border.EmptyBorder; -import javax.swing.border.TitledBorder; - -import be.nikiroo.utils.StringUtils; -import be.nikiroo.utils.resources.Bundle; -import be.nikiroo.utils.resources.MetaInfo; - -/** - * A configuration panel for a {@link Bundle}. - *

- * All the items in the given {@link Bundle} will be displayed in editable - * controls, with options to Save, Reset and/or Reset to the application default - * values. - * - * @author niki - * - * @param - * the type of {@link Bundle} to edit - */ -public class ConfigEditor> extends JPanel { - private static final long serialVersionUID = 1L; - private List> items; - - /** - * Create a new {@link ConfigEditor} for this {@link Bundle}. - * - * @param type - * 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, String title) { - this.setLayout(new BorderLayout()); - - JPanel main = new JPanel(); - main.setLayout(new BoxLayout(main, BoxLayout.PAGE_AXIS)); - main.setBorder(new EmptyBorder(5, 5, 5, 5)); - - main.add(new JLabel(title)); - - items = new ArrayList>(); - List> groupedItems = MetaInfo.getItems(type, bundle); - for (MetaInfo item : groupedItems) { - // will init this.items - addItem(main, item, 0); - } - - JPanel buttons = new JPanel(); - buttons.setLayout(new BoxLayout(buttons, BoxLayout.PAGE_AXIS)); - buttons.setBorder(new EmptyBorder(5, 5, 5, 5)); - - buttons.add(createButton("Reset", new ActionListener() { - @Override - public void actionPerformed(ActionEvent e) { - for (MetaInfo item : items) { - item.reload(); - } - } - })); - - buttons.add(createButton("Default", new ActionListener() { - @Override - public void actionPerformed(ActionEvent e) { - Object snap = bundle.takeSnapshot(); - bundle.reload(true); - for (MetaInfo item : items) { - item.reload(); - } - bundle.reload(false); - bundle.restoreSnapshot(snap); - } - })); - - buttons.add(createButton("Save", new ActionListener() { - @Override - public void actionPerformed(ActionEvent e) { - for (MetaInfo item : items) { - item.save(true); - } - - try { - bundle.updateFile(); - } catch (IOException e1) { - e1.printStackTrace(); - } - } - })); - - JScrollPane scroll = new JScrollPane(main); - scroll.getVerticalScrollBar().setUnitIncrement(16); - - this.add(scroll, BorderLayout.CENTER); - this.add(buttons, BorderLayout.SOUTH); - } - - private void addItem(JPanel main, MetaInfo item, int nhgap) { - if (item.isGroup()) { - JPanel bpane = new JPanel(new BorderLayout()); - bpane.setBorder(new TitledBorder(item.getName())); - JPanel pane = new JPanel(); - pane.setBorder(new EmptyBorder(5, 5, 5, 5)); - pane.setLayout(new BoxLayout(pane, BoxLayout.Y_AXIS)); - - String info = item.getDescription(); - info = StringUtils.justifyTexts(info, 100); - if (!info.isEmpty()) { - info = info + "\n"; - JTextArea text = new JTextArea(info); - text.setWrapStyleWord(true); - text.setOpaque(false); - text.setForeground(new Color(100, 100, 180)); - text.setEditable(false); - pane.add(text); - } - - for (MetaInfo subitem : item) { - addItem(pane, subitem, nhgap + 11); - } - bpane.add(pane, BorderLayout.CENTER); - main.add(bpane); - } else { - items.add(item); - main.add(ConfigItem.createItem(item, nhgap)); - } - } - - /** - * Add an action button for this action. - * - * @param title - * the action title - * @param listener - * the action - */ - private JComponent createButton(String title, ActionListener listener) { - JButton button = new JButton(title); - button.addActionListener(listener); - - JPanel panel = new JPanel(); - panel.setLayout(new BorderLayout()); - panel.setBorder(new EmptyBorder(2, 10, 2, 10)); - panel.add(button, BorderLayout.CENTER); - - return panel; - } -}