io.github.jeremgamer.editor.panels.Others.java Source code

Java tutorial

Introduction

Here is the source code for io.github.jeremgamer.editor.panels.Others.java

Source

/**
 *   Copyright 2014/2015 JeremGamer
 *
 *  Licensed under the Apache License, Version 2.0 (the "License");
 *  you may not use this file except in compliance with the License.
 *  You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 *  Unless required by applicable law or agreed to in writing, software
 *  distributed under the License is distributed on an "AS IS" BASIS,
 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *  See the License for the specific language governing permissions and
 *  limitations under the License. * 
 */

package io.github.jeremgamer.editor.panels;

import io.github.jeremgamer.editor.Editor;
import io.github.jeremgamer.editor.files.OtherSave;
import io.github.jeremgamer.editor.files.PanelSave;
import io.github.jeremgamer.editor.panels.components.ActionPanel;
import io.github.jeremgamer.editor.panels.components.OtherPanel;
import io.github.jeremgamer.editor.panels.components.PanelsPanel;
import io.github.jeremgamer.resources.images.ImageGetter;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;

import javax.imageio.ImageIO;
import javax.swing.BorderFactory;
import javax.swing.BoxLayout;
import javax.swing.DefaultListModel;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.SwingUtilities;

import org.apache.commons.io.FileUtils;
import org.apache.commons.io.filefilter.TrueFileFilter;

public class Others extends JPanel {

    /**
     * 
     */
    private static final long serialVersionUID = 977674064141686270L;

    static JList<String> otherList = new JList<String>();
    DefaultListModel<String> data = new DefaultListModel<String>();
    boolean isOpen = false;
    @SuppressWarnings("unused")
    private JFrame frame;
    private String previousSelection;

    public Others(final JFrame frame, final OtherPanel op, final PanelSave ps) {
        this.frame = frame;

        this.setBorder(BorderFactory.createTitledBorder(""));
        JButton add = null;
        try {
            add = new JButton(new ImageIcon(ImageIO.read(ImageGetter.class.getResource("add.png"))));
        } catch (IOException e) {
            e.printStackTrace();
        }
        add.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent event) {
                try {
                    JOptionPane jop = new JOptionPane();
                    @SuppressWarnings("static-access")
                    String name = jop.showInputDialog((JFrame) SwingUtilities.windowForComponent(otherList),
                            "Nommez le composant :", "Crer un composant", JOptionPane.QUESTION_MESSAGE);

                    if (name != null) {
                        for (int i = 0; i < data.getSize(); i++) {
                            if (data.get(i).equals(name)) {
                                name += "1";
                            }
                        }
                        data.addElement(name);
                        new OtherSave(name);
                        ActionPanel.updateLists();
                        PanelsPanel.updateLists();
                    }
                } catch (IOException e) {
                    e.printStackTrace();
                }

            }

        });

        JButton remove = null;
        try {
            remove = new JButton(new ImageIcon(ImageIO.read(ImageGetter.class.getResource("remove.png"))));
        } catch (IOException e) {
            e.printStackTrace();
        }
        remove.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent event) {
                try {
                    if (otherList.getSelectedValue() != null) {
                        File file = new File("projects/" + Editor.getProjectName() + "/others/"
                                + otherList.getSelectedValue() + ".rbd");
                        JOptionPane jop = new JOptionPane();
                        @SuppressWarnings("static-access")
                        int option = jop.showConfirmDialog((JFrame) SwingUtilities.windowForComponent(otherList),
                                "tes-vous sr de vouloir supprimer ce composant?", "Avertissement",
                                JOptionPane.YES_NO_OPTION, JOptionPane.WARNING_MESSAGE);

                        if (option == JOptionPane.OK_OPTION) {
                            File dir = new File("projects/" + Editor.getProjectName() + "/panels");
                            for (File f : FileUtils.listFilesAndDirs(dir, TrueFileFilter.INSTANCE,
                                    TrueFileFilter.INSTANCE)) {
                                if (!f.isDirectory()) {
                                    try {
                                        ps.load(f);
                                    } catch (IOException e) {
                                        e.printStackTrace();
                                    }

                                    OtherSave os = new OtherSave();
                                    try {
                                        os.load(file);
                                    } catch (IOException e1) {
                                        e1.printStackTrace();
                                    }
                                    String type = null;
                                    switch (os.getInt("type")) {
                                    case 0:
                                        type = "Zone de saisie";
                                        break;
                                    case 1:
                                        type = "Zone de saisie de mot de passe";
                                        break;
                                    case 2:
                                        type = "Zone de saisie (Grande)";
                                        break;
                                    case 3:
                                        type = "Case  cocher";
                                        break;
                                    case 4:
                                        type = "Menu droulant";
                                        break;
                                    case 5:
                                        type = "Barre de progression";
                                        break;
                                    case 6:
                                        type = "Slider";
                                        break;
                                    case 7:
                                        type = "Spinner";
                                        break;
                                    }
                                    for (String section : ps.getSectionsContaining(
                                            otherList.getSelectedValue() + " (" + type + ")")) {
                                        ps.removeSection(section);
                                        try {
                                            ps.save(f);
                                        } catch (IOException e) {
                                            e.printStackTrace();
                                        }
                                    }
                                }
                            }
                            if (otherList.getSelectedValue().equals(op.getFileName())) {
                                op.setFileName("");
                            }
                            op.hide();
                            file.delete();
                            data.remove(otherList.getSelectedIndex());
                            ActionPanel.updateLists();
                            OtherPanel.updateLists();
                            PanelsPanel.updateLists();
                        }
                    }
                } catch (NullPointerException npe) {
                    npe.printStackTrace();
                }

            }

        });

        JPanel buttons = new JPanel();
        buttons.setLayout(new BoxLayout(buttons, BoxLayout.LINE_AXIS));
        buttons.add(add);
        buttons.add(remove);

        updateList();
        otherList.addMouseListener(new MouseAdapter() {
            @SuppressWarnings("unchecked")
            public void mouseClicked(MouseEvent evt) {
                JList<String> list = (JList<String>) evt.getSource();
                if (evt.getClickCount() == 2) {
                    int index = list.locationToIndex(evt.getPoint());
                    if (isOpen == false) {
                        op.show();
                        op.load(new File("projects/" + Editor.getProjectName() + "/others/"
                                + list.getModel().getElementAt(index) + ".rbd"));
                        previousSelection = list.getSelectedValue();
                        isOpen = true;
                    } else {
                        try {
                            if (previousSelection.equals(list.getModel().getElementAt(index))) {
                                op.hide();
                                previousSelection = list.getSelectedValue();
                                list.clearSelection();
                                isOpen = false;
                            } else {
                                op.hideThenShow();
                                previousSelection = list.getSelectedValue();
                                op.load(new File("projects/" + Editor.getProjectName() + "/others/"
                                        + list.getModel().getElementAt(index) + ".rbd"));
                            }
                        } catch (NullPointerException npe) {
                            op.hide();
                            list.clearSelection();
                        }
                    }
                } else if (evt.getClickCount() == 3) {
                    int index = list.locationToIndex(evt.getPoint());
                    if (isOpen == false) {
                        op.show();
                        op.load(new File("projects/" + Editor.getProjectName() + "/others/"
                                + list.getModel().getElementAt(index) + ".rbd"));
                        previousSelection = list.getSelectedValue();
                        isOpen = true;
                    } else {
                        try {
                            if (previousSelection.equals(list.getModel().getElementAt(index))) {
                                op.hide();
                                previousSelection = list.getSelectedValue();
                                list.clearSelection();
                                isOpen = false;
                            } else {
                                op.hideThenShow();
                                previousSelection = list.getSelectedValue();
                                op.load(new File("projects/" + Editor.getProjectName() + "/others/"
                                        + list.getModel().getElementAt(index) + ".rbd"));
                            }
                        } catch (NullPointerException npe) {
                            op.hide();
                            list.clearSelection();
                        }
                    }
                }
            }
        });
        JScrollPane listPane = new JScrollPane(otherList);
        listPane.getVerticalScrollBar().setUnitIncrement(Editor.SCROLL_SPEED);
        this.setLayout(new BoxLayout(this, BoxLayout.PAGE_AXIS));
        this.add(buttons);
        this.add(listPane);
        OtherPanel.updateLists();
    }

    public void clearSelection() {
        otherList.clearSelection();
    }

    protected void updateList() {
        data.clear();
        File dir = new File("projects/" + Editor.getProjectName() + "/others");
        if (!dir.exists()) {
            dir.mkdirs();
        }
        for (File file : FileUtils.listFiles(dir, TrueFileFilter.INSTANCE, TrueFileFilter.INSTANCE)) {
            data.addElement(file.getName().replace(".rbd", ""));
        }
        otherList = new JList<String>(data);
    }

    public static String[] getTextFields() {
        ArrayList<String> list = new ArrayList<String>();
        try {
            for (int i = 0; i < otherList.getModel().getSize(); i++) {
                OtherSave os = new OtherSave();
                try {
                    os.load(new File("projects/" + Editor.getProjectName() + "/others/"
                            + otherList.getModel().getElementAt(i) + ".rbd"));
                } catch (IOException e) {
                    e.printStackTrace();
                }
                if (os.getInt("type") == 0) {
                    list.add(otherList.getModel().getElementAt(i));
                }
            }
        } catch (NullPointerException npe) {
        }
        return list.toArray(new String[0]);
    }

    public static String[] getPasswordFields() {
        ArrayList<String> list = new ArrayList<String>();
        try {
            for (int i = 0; i < otherList.getModel().getSize(); i++) {
                OtherSave os = new OtherSave();
                try {
                    os.load(new File("projects/" + Editor.getProjectName() + "/others/"
                            + otherList.getModel().getElementAt(i) + ".rbd"));
                } catch (IOException e) {
                    e.printStackTrace();
                }
                if (os.getInt("type") == 1) {
                    list.add(otherList.getModel().getElementAt(i));
                }
            }
        } catch (NullPointerException npe) {
        }
        return list.toArray(new String[0]);
    }

    public static String[] getComponentsArray() {
        ArrayList<String> list = new ArrayList<String>();
        if (otherList.getModel().getSize() > 0) {
            for (int i = 0; i < otherList.getModel().getSize(); i++) {
                OtherSave os = new OtherSave();
                try {
                    os.load(new File("projects/" + Editor.getProjectName() + "/others/"
                            + otherList.getModel().getElementAt(i) + ".rbd"));
                } catch (IOException e) {
                    e.printStackTrace();
                }
                String type = null;
                switch (os.getInt("type")) {
                case 0:
                    type = "Zone de saisie";
                    break;
                case 1:
                    type = "Zone de saisie de mot de passe";
                    break;
                case 2:
                    type = "Zone de saisie (Grande)";
                    break;
                case 3:
                    type = "Case  cocher";
                    break;
                case 4:
                    type = "Menu droulant";
                    break;
                case 5:
                    type = "Barre de progression";
                    break;
                case 6:
                    type = "Slider";
                    break;
                case 7:
                    type = "Spinner";
                    break;
                }
                list.add(otherList.getModel().getElementAt(i) + " (" + type + ")");
            }
        }
        return list.toArray(new String[0]);
    }

}