Package com.kokakiwi.mclauncher.ui.simple

Source Code of com.kokakiwi.mclauncher.ui.simple.ModsDialog

package com.kokakiwi.mclauncher.ui.simple;

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

import javax.swing.DefaultListModel;
import javax.swing.JDialog;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextField;
import javax.swing.ListSelectionModel;
import javax.swing.border.EmptyBorder;

import com.kokakiwi.mclauncher.api.LauncherAPI;
import com.kokakiwi.mclauncher.core.launcher.ModsManager;
import com.kokakiwi.mclauncher.core.launcher.ModsManager.Mod;
import com.kokakiwi.mclauncher.utils.lang.Translater;
import javax.swing.JLabel;
import javax.swing.BoxLayout;
import java.awt.GridLayout;
import java.net.URL;

import javax.swing.JList;
import javax.swing.JButton;

public class ModsDialog extends JDialog
{
    private static final long                 serialVersionUID = 292853342724397034L;
   
    private final LauncherAPI                 api;
   
    private JPanel                            actionPanel;
   
    private JList<Mod>                        modsList;
   
    private DefaultListModel<ModsManager.Mod> model;
   
    public ModsDialog(OptionsDialog parent)
    {
        super(parent);
        api = parent.getApi();
        addWindowListener(new WindowAdapter() {
           
            public void windowClosing(WindowEvent event)
            {
                setVisible(false);
            }
        });
       
        setTitle(Translater.getString("options.mods.title"));
        setModalityType(ModalityType.TOOLKIT_MODAL);
        setMinimumSize(new Dimension(420, 250));
       
        JPanel panel = new JPanel(new BorderLayout());
       
        panel.setBorder(new EmptyBorder(16, 24, 24, 24));
        getContentPane().add(panel);
       
        JLabel label = new JLabel(Translater.getString("options.mods.title"));
        label.setBorder(new EmptyBorder(0, 0, 16, 0));
        label.setFont(new Font("Default", 1, 16));
        panel.add(label, BorderLayout.NORTH);
       
        JPanel modsPanel = new JPanel();
        panel.add(modsPanel, BorderLayout.CENTER);
        modsPanel.setLayout(new BoxLayout(modsPanel, BoxLayout.X_AXIS));
       
        JPanel modsListPanel = new JPanel();
        modsListPanel.setBorder(new EmptyBorder(0, 0, 0, 10));
        modsPanel.add(modsListPanel);
        modsListPanel.setLayout(new BorderLayout(0, 0));
       
        actionPanel = new JPanel();
        panel.add(actionPanel, BorderLayout.SOUTH);
       
        final ModsManager mods = parent.getApi().getLauncher().getMods();
        model = new DefaultListModel<ModsManager.Mod>();
        for (ModsManager.Mod mod : mods.getMods())
        {
            model.addElement(mod);
        }
       
        modsList = new JList<ModsManager.Mod>(model);
        modsList.setAutoscrolls(true);
        modsList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
       
        JScrollPane scrollPane = new JScrollPane(modsList);
        modsListPanel.add(scrollPane, BorderLayout.CENTER);
       
        JPanel actionsPanel = new JPanel();
        modsPanel.add(actionsPanel);
        actionsPanel.setLayout(new GridLayout(0, 1, 5, 5));
       
        JButton addModButton = new JButton("Add mod");
        addModButton.addActionListener(new ActionListener() {
           
            public void actionPerformed(ActionEvent e)
            {
                actionPanel.removeAll();
                fillAddMod(actionPanel);
               
                validate();
            }
        });
        actionsPanel.add(addModButton);
       
        JButton editModButton = new JButton("Edit mod");
        editModButton.addActionListener(new ActionListener() {
           
            public void actionPerformed(ActionEvent e)
            {
                actionPanel.removeAll();
                fillEditMod(actionPanel);
               
                validate();
            }
        });
        actionsPanel.add(editModButton);
       
        JButton removeModButton = new JButton("Remove mod");
        removeModButton.addActionListener(new ActionListener() {
           
            public void actionPerformed(ActionEvent e)
            {
                actionPanel.removeAll();
               
                if (modsList.getSelectedValue() != null)
                {
                    ModsManager.Mod selected = modsList.getSelectedValue();
                    model.removeElement(selected);
                    mods.getMods().remove(selected);
                }
               
                validate();
            }
        });
        actionsPanel.add(removeModButton);
       
        pack();
        setLocationRelativeTo(parent);
    }
   
    private void fillAddMod(JPanel panel)
    {
        panel.setBorder(new EmptyBorder(5, 5, 5, 5));
        panel.setLayout(new BorderLayout(5, 5));
       
        JPanel left = new JPanel();
        left.setLayout(new GridLayout(0, 1, 5, 5));
        JPanel right = new JPanel();
        right.setLayout(new GridLayout(0, 1, 5, 5));
       
        ModsManager.Mod mod = new ModsManager.Mod();
        api.getLauncher().getMods().addMod(mod);
        fillEditModForm(left, right, mod);
       
        panel.add(left, BorderLayout.WEST);
        panel.add(right, BorderLayout.CENTER);
    }
   
    private void fillEditMod(JPanel panel)
    {
        panel.setBorder(new EmptyBorder(5, 5, 5, 5));
        panel.setLayout(new BorderLayout(5, 5));
       
        JPanel left = new JPanel();
        left.setLayout(new GridLayout(0, 1, 5, 5));
        JPanel right = new JPanel();
        right.setLayout(new GridLayout(0, 1, 5, 5));
       
        ModsManager.Mod mod = modsList.getSelectedValue();
        if (mod != null)
        {
            fillEditModForm(left, right, mod);
        }
       
        panel.add(left, BorderLayout.WEST);
        panel.add(right, BorderLayout.CENTER);
    }
   
    private void fillEditModForm(JPanel left, JPanel right,
            final ModsManager.Mod mod)
    {
        left.add(new JLabel("Name :"));
        left.add(new JLabel("URL :"));
        left.add(new JLabel(""));
       
        final JTextField nameField = new JTextField(mod.getName());
        right.add(nameField);
       
        final JTextField urlField = new JTextField(mod.getUrl() == null ? ""
                : mod.getUrl().toString());
        right.add(urlField);
       
        JButton valid = new JButton("Save");
        valid.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent event)
            {
                try
                {
                    mod.setName(nameField.getText());
                    mod.setUrl(new URL(urlField.getText()));
                    actionPanel.removeAll();
                   
                    if (!model.contains(mod))
                    {
                        model.addElement(mod);
                    }
                   
                    modsList.revalidate();
                    modsList.repaint();
                   
                    validate();
                }
                catch (Exception e)
                {
                    e.printStackTrace();
                }
            }
        });
        right.add(valid);
    }
}
TOP

Related Classes of com.kokakiwi.mclauncher.ui.simple.ModsDialog

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.