package com.jpexs.decompiler.flash.gui;

import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JLabel;
import javax.swing.JPanel;

/**
 *
 * @author JPEXS
 */
public class ExportDialog extends AppDialog {

    boolean cancelled = false;
    String options[][] = {
        {translate("shapes.svg")},
        {translate("texts.plain"), translate("texts.formatted")},
        {translate("images.pngjpeg")},
        {translate("movies.flv")},
        {translate("sounds.mp3wavflv"), translate("sounds.flv")},
        {translate("actionscript.as"), translate("actionscript.pcode")}
    };
    String optionNames[] = {
        translate("shapes"),
        translate("texts"),
        translate("images"),
        translate("movies"),
        translate("sounds"),
        translate("actionscript")
    };
    public static final int OPTION_SHAPES = 0;
    public static final int OPTION_TEXTS = 1;
    public static final int OPTION_IMAGES = 2;
    public static final int OPTION_MOVIES = 3;
    public static final int OPTION_SOUNDS = 4;
    public static final int OPTION_ACTIONSCRIPT = 5;
    private JComboBox combos[];

    public int getOption(int index) {
        return combos[index].getSelectedIndex();
    }

    public ExportDialog() {
        setTitle(translate("dialog.title"));
        addWindowListener(new WindowAdapter() {
            @Override
            public void windowClosing(WindowEvent e) {
                cancelled = true;
            }
        });

        Container cnt = getContentPane();
        cnt.setLayout(new BorderLayout());
        JPanel comboPanel = new JPanel(null);
        combos = new JComboBox[optionNames.length];
        JLabel labels[] = new JLabel[optionNames.length];
        int labWidth = 0;
        for (int i = 0; i < optionNames.length; i++) {
            labels[i] = new JLabel(optionNames[i]);
            if (labels[i].getPreferredSize().width > labWidth) {
                labWidth = labels[i].getPreferredSize().width;
            }
        }
        int comboWidth = 200;
        int top = 10;
        for (int i = 0; i < optionNames.length; i++) {
            JLabel lab = new JLabel(optionNames[i]);
            lab.setBounds(10, top, lab.getPreferredSize().width, lab.getPreferredSize().height);
            comboPanel.add(lab);
            combos[i] = new JComboBox<>(options[i]);
            combos[i].setBounds(10 + labWidth + 10, top, comboWidth, combos[i].getPreferredSize().height);
            comboPanel.add(combos[i]);
            top += combos[i].getHeight();
        }
        Dimension dim = new Dimension(10 + labWidth + 10 + comboWidth + 10, top + 10);
        comboPanel.setMinimumSize(dim);
        comboPanel.setPreferredSize(dim);
        cnt.add(comboPanel, BorderLayout.CENTER);

        JPanel buttonsPanel = new JPanel(new FlowLayout());
        JButton okButton = new JButton(translate("button.ok"));
        okButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                setVisible(false);
            }
        });

        JButton cancelButton = new JButton(translate("button.cancel"));
        cancelButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                cancelled = true;
                setVisible(false);
            }
        });

        buttonsPanel.add(okButton);
        buttonsPanel.add(cancelButton);

        cnt.add(buttonsPanel, BorderLayout.SOUTH);
        pack();
        //setSize(245, top + getInsets().top);
        View.centerScreen(this);
        View.setWindowIcon(this);
        getRootPane().setDefaultButton(okButton);
        setModal(true);
    }

    @Override
    public void setVisible(boolean b) {
        if (b) {
            cancelled = false;
        }
        super.setVisible(b);
    }
}
