Package com.playlist

Source Code of com.playlist.JPlayList

package com.playlist;

import com.config.Configuracoes;
import com.copiador.JCopiador;
import com.fila.JFilaReproducao;
import com.main.Carregador;
import com.main.gui.JMP3Propriedades;
import com.main.gui.JPrincipal;
import com.musica.MusicaGerencia;
import com.musica.MusicaS;
import com.playlist.listainteligente.condicao.JListaInteligenteEditor;
import com.serial.PortaCDs;
import com.utils.file.FileUtils;
import com.utils.file.FiltroArquivoGenerico;
import com.utils.model.tablemodel.ObjectTableModel;
import com.utils.model.tablemodel.ObjectTransferable;
import com.utils.transferivel.TipoTransferenciaMusica;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.Point;
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.Transferable;
import java.awt.datatransfer.UnsupportedFlavorException;
import java.awt.dnd.DnDConstants;
import java.awt.dnd.DropTarget;
import java.awt.dnd.DropTargetAdapter;
import java.awt.dnd.DropTargetDragEvent;
import java.awt.dnd.DropTargetDropEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Reader;
import java.net.URI;
import java.net.URISyntaxException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JComponent;
import javax.swing.JFileChooser;
import javax.swing.JOptionPane;
import javax.swing.ListSelectionModel;
import javax.swing.TransferHandler;
import javax.swing.event.ChangeListener;
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;


/*
* JPlayList.java
*
* Created on 04/06/2010, 19:19:01
*/
/**
*
* @author manchini
*/
public class JPlayList extends javax.swing.JDialog implements ActionListener, ListSelectionListener, KeyListener, MouseListener, ChangeListener {

    public static final SimpleDateFormat formatoPadraoData;
    /**
     * Creates new form JPlayList
     */
    private JPrincipal principal;
    private final Carregador carregador;
    private int contaErro = 0;
    private PlaylistI playlist;
    private DropTarget dropTargetPlayList;
    private JCopiador jCopiador;
    private ObjectTableModel<MusicaS> objectTableModel;

    static {
        formatoPadraoData = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss");
    }

    public JPlayList(Carregador carregador) {
        initComponents();
        this.carregador = carregador;
        initTabelaLista();

        jPanelOpcoesLista.setVisible(false);
        setIconImage(carregador.getIcones().getCrepzIcon().getImage());
        carregarIcones();
        jTextField_Pesquisa.getDocument().addDocumentListener(new DocumentListener() {

            @Override
            public void insertUpdate(DocumentEvent e) {
                objectTableModel.setFiltro(jTextField_Pesquisa.getText());
            }

            @Override
            public void removeUpdate(DocumentEvent e) {
                objectTableModel.setFiltro(jTextField_Pesquisa.getText());
            }

            @Override
            public void changedUpdate(DocumentEvent e) {
                objectTableModel.setFiltro(jTextField_Pesquisa.getText());
            }
        });
       
    }

    public void setPlayListAberta(String nome) {
        if (nome == null) {
            playlist = null;
            return;
        }
        try {
            playlist = PortaCDs.getPlaylist(nome, true, PlaylistS.class);
            abrir(playlist);
        } catch (Exception ex) {
            Logger.getLogger(JPlayList.class.getName()).log(Level.SEVERE, null, ex);
        }

    }

    public PlaylistI getPlaylistAberta() {
        return playlist;
    }

    public void importarMusicasParaPlayList(String[] nomes) {
        File[] files = new File[nomes.length];
        for (int i = 0; i < nomes.length; i++) {
            files[i] = new File(nomes[i]);
        }
        importarMusicasParaPlayList(files);
    }

 

    public void importarMusicasParaPlayList(File[] files) {
        try {
            for (File s : files) {
                MusicaS musica = MusicaGerencia.addOneFile(s);
                if (musica == null) {
                    continue;
                }
                addMusica(musica);
            }
        } catch (Exception ex) {
            Logger.getLogger(getClass().getName()).log(Level.ALL, "Erro ao adicionar música.", ex);
        }
    }

    private void carregarIcones() {
        jMenuItem_Editar.setIcon(carregador.getIcones().getEdit());
        jMenuItem_Tocar.setIcon(carregador.getIcones().getPlayIcon16());
        jMenuItem_ExcluirLista.setIcon(carregador.getIcones().getXis());
    }

    private void tocarSelecionada() {
        try {
            MusicaS m = (MusicaS) jTable.getModel().getValueAt(jTable.getSelectedRow(), 0);
            carregador.abrir(m, 0, false);
        } catch (Exception ex) {
            Logger.getLogger(JPlayList.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    public void lookAndFeelChanged() {
        jTable.setDefaultRenderer(Object.class, new PlayListRenderer());
    }

    /**
     * Método que inicializa a tela.
     */
    private void initTabelaLista() {

        objectTableModel = new ObjectTableModel<MusicaS>(MusicaS.class, false);
        jTable.setModel(objectTableModel);
      
        jTable.setAutoCreateRowSorter(false);
        jTable.setShowVerticalLines(true);
        jTable.setEditingColumn(-1);
        jTable.setEditingRow(-1);

        jTable.setDefaultRenderer(MusicaS.class, new PlayListRenderer());
        jTable.setIntercellSpacing(new Dimension(1, 2));
        jTable.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
        jTable.setShowHorizontalLines(false);
        jTable.setRowSelectionAllowed(true);
        jTable.setColumnSelectionAllowed(false);
        jTable.setRowHeight(40);
        jTable.setDragEnabled(true);
        jTable.getSelectionModel().addListSelectionListener(this);
        jTable.setTransferHandler(new TransferHandler(null) {
            @Override
            public int getSourceActions(JComponent c) {
                return COPY_OR_MOVE;
            }

            @Override
            protected Transferable createTransferable(JComponent c) {
                int[] rows = jTable.getSelectedRows();
                ArrayList<MusicaS> musicas = new ArrayList<MusicaS>(rows.length);
                for (int i = 0; i < rows.length; i++) {
                    musicas.add((MusicaS) jTable.getModel().getValueAt(rows[i], 0));
                }
                return new ObjectTransferable(musicas, TipoTransferenciaMusica.JPLAY_LIST);

            }
        });

        dropTargetPlayList = new DropTarget(jScrollPane, new DropTargetAdapter() {
            @Override
            public void drop(DropTargetDropEvent dtde) {
                try {
                    Point location = dtde.getLocation();
                    int posicaoDestino = -1;
                    if (jTable.getSelectedRows().length > 0) {
                        Point visibleLocation = jTable.getVisibleRect().getLocation();
                        visibleLocation.x += location.x;
                        visibleLocation.y += location.y;
                        posicaoDestino = jTable.rowAtPoint(visibleLocation);

                        if ((dtde.getSourceActions() == TransferHandler.MOVE
                                || location.y < jTable.getHeight())) {

                            if (TipoTransferenciaMusica.forDataFlavor(dtde.getCurrentDataFlavors()) == TipoTransferenciaMusica.JPLAY_LIST) {
                                alterarPosicaoMusicasPlayList(jTable.getSelectedRows(), posicaoDestino);
                                return;
                            }
                        }
                    }
                    Transferable transferable = dtde.getTransferable();
                    DataFlavor[] flavors = transferable.getTransferDataFlavors();
                    Object data = null;
                    try {
                        data = transferable.getTransferData(transferable.getTransferDataFlavors()[0]);
                    } catch (Exception ex) {
                        // irá cair no drop do linux e la encontrará alguns arquivos :D
                        Logger.getLogger(JFilaReproducao.class.getName()).log(Level.SEVERE, "Crepz tratavel...", ex);
                    }
                    if (data != null && data.getClass() == MusicaS.class) {
                        if (posicaoDestino != -1) {
                            ((ObjectTableModel<MusicaS>) jTable.getModel()).insertItem((MusicaS)data, posicaoDestino);
                        } else {
                            ((ObjectTableModel<MusicaS>)jTable.getModel()).addItem((MusicaS) data);
                        }
                    } else if (data != null && data.getClass() == ArrayList.class) {
                        addMusicas((ArrayList) data, posicaoDestino);
                    } else {
                        //Windows
                        if (transferable.isDataFlavorSupported(DataFlavor.javaFileListFlavor)) {
                            ArrayList<File> arquivos = (ArrayList) transferable.getTransferData(java.awt.datatransfer.DataFlavor.javaFileListFlavor);
                            importarMusicasParaPlayList((File[]) arquivos.toArray());
                        } else {
                            // Linux
                            loop_flavor:
                            for (DataFlavor flavor : flavors) {
                                if (flavor.isRepresentationClassReader()) {
                                    dtde.acceptDrop(java.awt.dnd.DnDConstants.ACTION_COPY);
                                    Reader reader = flavor.getReaderForText(transferable);
                                    BufferedReader br = new BufferedReader(reader);
                                    ArrayList<File> arquivos = new ArrayList<File>(10);
                                    String linhaLida;
                                    while ((linhaLida = br.readLine()) != null) {
                                        if (!linhaLida.isEmpty()) {
                                            try {
                                                arquivos.add(new File(new URI(linhaLida)));
                                            } catch (URISyntaxException ex) {
                                                Logger.getLogger(JFilaReproducao.class.getName()).log(Level.SEVERE, null, ex);
                                            }
                                        }
                                    }
                                    importarMusicasParaPlayList((File[]) arquivos.toArray());
                                    break;
                                }
                            }
                        }
                    }
                } catch (UnsupportedFlavorException ex) {
                    Logger.getLogger(JFilaReproducao.class.getName()).log(Level.SEVERE, null, ex);
                } catch (IOException ex) {
                    Logger.getLogger(JFilaReproducao.class.getName()).log(Level.SEVERE, null, ex);
                }
            }

            @Override
            public void dragEnter(DropTargetDragEvent evt) {
                evt.acceptDrag(DnDConstants.ACTION_COPY);
            }
        });
        jTable.setDropTarget(dropTargetPlayList);
        jScrollPane.setDropTarget(dropTargetPlayList);
    }

    /**
     * Método que atualiza a consulta atual.
     */
    public void atualizarTabelaLista() {
        if (jTextField_NomePlayList.getText().isEmpty()) {
            return;
        }
        try {
            ObjectTableModel<MusicaS> model = (ObjectTableModel<MusicaS>) jTable.getModel();
            model.clear();
            if (playlist == null) {
                return;
            }
            // Filtro...
            if (playlist instanceof PlaylistC) {
                ((PlaylistC) playlist).updateMusicas();
            }
            objectTableModel.setItens(playlist.getMusicas());

            jTable.requestFocus();
            if (jTable.getRowCount() > 0) {
                jTable.changeSelection(0, 0, false, false);
            }
            setTitle(jTextField_NomePlayList.getText()
                    + (playlist instanceof PlaylistC ? " (Lista Automática)" : ""));

        } catch (Exception ex) {
            ex.printStackTrace(System.err);
        }
    }

    public void atualizarTabelaLista(ArrayList novaLista) {
        try {

         objectTableModel.setItens(playlist.getMusicas());
        
            jTable.requestFocus();
            if (jTable.getRowCount() > 0) {
                jTable.changeSelection(0, 0, false, false);
            }
            setTitle(jTextField_NomePlayList.getText());

        } catch (Exception ex) {
            //  JOptionPane.showMessageDialog(this, "Erro ao Filtrar! OO");
            ex.printStackTrace(System.err);
        }
    }

    @SuppressWarnings("AssignmentToMethodParameter")
    private void alterarPosicaoMusicasPlayList(int[] indices, int novaPosicao) {
        int inicio = -1;
        int fim;
        int ultimoLido = -1;
        HashMap<Integer, Integer> intervalos = new HashMap<Integer, Integer>(5);
        for (int i = 0; i < indices.length; i++) {
            int indice = indices[i];
            if (inicio == -1) {
                inicio = indice;
            }
            fim = indice;
            if (indice - 1 != ultimoLido) {
                inicio = indice;
            }
            intervalos.put(inicio, fim);
            ultimoLido = indice;
        }
        for (Integer start : intervalos.keySet()) {
            int end = intervalos.get(start);
            ((ObjectTableModel) jTable.getModel()).moveRow(start.intValue(), end, novaPosicao);
            novaPosicao += (end - start + 1);
        }
        jTable.clearSelection();
    }

    public void setVisible(boolean visivel, boolean sempreNoTopo) {
        super.setVisible(visivel);
        super.setAlwaysOnTop(sempreNoTopo);
    }

    public MusicaS getAleatorio(MusicaS atual) {
//        if (Configuracoes.REPEAT_ATIVO.getValor()) {
//            return getAleatorio(atual);
//        } else {
//                return null;
//        }

        int random = (int) (Math.random() * objectTableModel.getRowCount());
        MusicaS m = objectTableModel.getItem(random);
        jTable.setRowSelectionInterval(random, random);
        return m;

    }

    public MusicaS getProxima() {
        return getProxima(false);
    }

    private MusicaS getProxima(boolean erro) {
        if (objectTableModel.getRowCount() == 0) {
            return null;
        }
        if (!erro) {
            contaErro = 0;
        } else {
            contaErro++;
        }
     
        if (contaErro > objectTableModel.getRowCount()) {
            JOptionPane.showMessageDialog(this, "Nenhum arquivo foi encontrado... Você montou sua unidades?");
            contaErro = 0;
            return null;
        }
        try {
            MusicaS atual = carregador.getMusica();
            int mAtual = -1;
            if (!Configuracoes.RANDOM_ATIVO.getValor()) {
                if (atual != null) {
                    mAtual = atual.getNumero();
                }

                if (mAtual < 0) {
                    jTable.setRowSelectionInterval(0, 0);
                    return (MusicaS) jTable.getModel().getValueAt(0, 0);
                }

                if (mAtual + 1 >= jTable.getRowCount()) {
                    jTable.setRowSelectionInterval(0, 0);
                    return (MusicaS) jTable.getModel().getValueAt(0, 0);

                } else {
                    jTable.setRowSelectionInterval(mAtual + 1, mAtual + 1);
                    return (MusicaS) jTable.getModel().getValueAt(mAtual + 1, 0);

                }
            } else {
                return getAleatorio(atual);
            }

        } catch (Exception ex) {
            Logger.getLogger(JPlayList.class.getName()).log(Level.SEVERE, null, ex);
            return null;
        }

    }

    public MusicaS getAnterior() {
        try {
            MusicaS atual = carregador.getMusica();
            int mAtual;
            if (!Configuracoes.RANDOM_ATIVO.getValor()) {
                mAtual = atual.getNumero();
                if (mAtual > -1) {
                    if (mAtual - 1 < 0) {
                        jTable.setRowSelectionInterval(mAtual - 1, mAtual - 1);
                        return (MusicaS) jTable.getModel().getValueAt(jTable.getRowCount() - 1, 0);
                    } else {
                        jTable.setRowSelectionInterval(mAtual - 1, mAtual - 1);
                        return (MusicaS) jTable.getModel().getValueAt(mAtual - 1, 0);
                    }
                }
                System.out.println("Não tem mais musicas, retornando null.");
                return null;
            } else {
                if (objectTableModel.indexOf(carregador.getMusica()) > 0) {
                    MusicaS musica = objectTableModel.getItem(objectTableModel.indexOf(carregador.getMusica()) - 1);
                    selecionarMusica(musica);
                    return musica;
                }
                return null;
            }
        } catch (Exception ex) {
            Logger.getLogger(JPlayList.class.getName()).log(Level.SEVERE, null, ex);
            return null;
        }

    }

    public void selecionarMusica(MusicaS musica) {
        if (musica.getNumero() >= 0 && musica.getNumero() < jTable.getRowCount()
                && jTable.getValueAt(musica.getNumero(), 0).equals(musica)) {
            jTable.setRowSelectionInterval(musica.getNumero(), musica.getNumero());
        } else {
            for (int i = 0; i < jTable.getRowCount(); i++) {
                if (jTable.getValueAt(i, 0).equals(musica)) {
                    jTable.setRowSelectionInterval(i, i);
                }
            }
        }
    }

    private void exportarPlayList() {
        JFileChooser jf = new JFileChooser();
        int foi = jf.showSaveDialog(this);
        if (foi == JFileChooser.APPROVE_OPTION) {
            File f;
            String fs = jf.getSelectedFile().toString();
            if (fs.toLowerCase().indexOf(".m3u") == -1) {
                f = new File(fs + ".m3u");
            } else {
                f = new File(fs);
            }
            if (f.exists()) {
                f.delete();
            }
            try {
                f.createNewFile();
                FileWriter fw = new FileWriter(f);
                BufferedWriter bfw = new BufferedWriter(fw);
                for (int i = 0; i < objectTableModel.getRowCount(); i++) {
                    MusicaS m = objectTableModel.getItem(i);
                    String aux = m.getCaminho();
                    aux = aux.replace('/', File.separatorChar);
                    bfw.write(aux);
                    bfw.newLine();
                }
                bfw.close();
                fw.close();
            } catch (IOException ex) {
                ex.printStackTrace(System.err);
            }

        }

    }

    private void salvarPlaylist() {
        try {
            playlist = PortaCDs.getPlaylist(jTextField_NomePlayList.getText(), true, PlaylistS.class);
            playlist.getMusicas().clear();
            playlist.getMusicas().addAll(objectTableModel.getItens());

            setTitle(jTextField_NomePlayList.getText());
        } catch (Exception ex) {
            ex.printStackTrace(System.err);
        }

    }

    private void deletar() {
        try {
            PortaCDs.removerPlaylist(playlist);
            limpar();
        } catch (Exception ex) {
            ex.printStackTrace(System.err);
        }
    }

    public void limpar() {
        this.playlist = null;
        jTextField_NomePlayList.setText("");
        setTitle("Lista de Reprodução - Vazia");
//        initTabelaLista(false);
        ((ObjectTableModel) jTable.getModel()).clear();
    }

    public void abrir(PlaylistI playlist) {
        this.playlist = playlist;
        boolean listaNormal = playlist instanceof PlaylistS;
        jMenuItem_ExcluirLista.setEnabled(listaNormal);
        jMenuItemSalvar.setEnabled(listaNormal);
        jButtonAdicionar.setEnabled(listaNormal);
        jButtonRemover.setEnabled(listaNormal);
        jButtonSalvar.setEnabled(listaNormal);


        jTextField_NomePlayList.setText(playlist.getNome());
        setTitle(playlist.getNome());
        atualizarTabelaLista();

    }

    public void tocar(PlaylistI playlist) {
        try {
            abrir(playlist);
            carregador.abrir(getProxima(false), 0, false);
        } catch (Exception ex) {
            Logger.getLogger(JPlayList.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    public void adicionarMusica() {
        try {
            File in = principal.telaAbrirArquivo();


            MusicaS m = MusicaGerencia.addOneFile(in);
            addMusica(m);


        } catch (Exception ex) {
            Logger.getLogger(JPlayList.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    private void removerMusica() {
        if (playlist instanceof PlaylistC) {
            JOptionPane.showMessageDialog(this, "Essa lista é automática!"
                    + "\nAltere as condições para remover ou adicionar músicas.");
            return;
        }
       
        int selecteds[] = jTable.getSelectedRows();
        objectTableModel.removeItem(selecteds);
    }

    private void openM3u() {
        JFileChooser jf = new JFileChooser();
        jf.setDialogType(JFileChooser.OPEN_DIALOG);
        jf.setFileSelectionMode(JFileChooser.FILES_ONLY);
        jf.setFileFilter(FiltroArquivoGenerico.FILTRO_PLAYLIST);
        if (jf.showOpenDialog(this) == JFileChooser.APPROVE_OPTION) {
            File f = jf.getSelectedFile();
            try {

                importarMusicasParaPlayList(FileUtils.lerM3u(f));
            } catch (Exception ex) {

                Logger.getLogger(JPlayList.class.getName()).log(Level.SEVERE, null, ex);
            }
        }

    }

    private void salvarPlaylistAtual() {
        if (jTextField_NomePlayList.getText() == null || jTextField_NomePlayList.getText().isEmpty()) {
            jTextField_NomePlayList.setText("Execução " + formatoPadraoData.format(new Date()));
        }
        salvarPlaylist();

    }

    private void consultarPlayList() {
        JSelectPlaylists jPlayLists = new JSelectPlaylists(principal, true, this);
        jPlayLists.setVisible(true);
    }

    private void salvarPlayList() {
        jToggleButtonOpcoesLista.setSelected(true);
        if (jTextField_NomePlayList.getText() == null || jTextField_NomePlayList.getText().isEmpty() || jTextField_NomePlayList.getText().equals("Coloque um nome!")) {
            jTextField_NomePlayList.setText("Coloque um nome!");
            jTextField_NomePlayList.selectAll();

            transferFocus();
        } else {
            PlaylistI novaPlaylist = PortaCDs.getPlaylist(jTextField_NomePlayList.getText(), false, PlaylistS.class);
            if (novaPlaylist != null && novaPlaylist != playlist) {
                JOptionPane.showMessageDialog(this, "Já existe uma lista de reprodução com esse nome.\nColoque um nome diferente.");
                return ;
            }
            if (playlist != null) {
                playlist.setNome(jTextField_NomePlayList.getText());
            }
            salvarPlaylist();
            jToggleButtonOpcoesLista.setSelected(false);

        }
    }

    private void onTableKeyPressed(KeyEvent evt) {
        switch (evt.getKeyCode()) {
            case KeyEvent.VK_DELETE:
                removerMusica();
                return;
            case KeyEvent.VK_PAGE_DOWN:
            case KeyEvent.VK_PAGE_UP:
            case KeyEvent.VK_END:
            case KeyEvent.VK_HOME:
            case KeyEvent.VK_SHIFT:
            case KeyEvent.VK_CONTROL:
                return;
            case KeyEvent.VK_ENTER:
                evt.consume();
                tocarSelecionada();
                break;
            case KeyEvent.VK_DOWN:
            case KeyEvent.VK_UP:
                break;
        }
        char keyChar = evt.getKeyChar();
        if ((keyChar >= 'a' && keyChar <= 'z')
                || (keyChar >= 'A' && keyChar <= 'Z')
                || (keyChar >= '0' && keyChar <= '9')) {
            jTextField_Pesquisa.setText(jTextField_Pesquisa.getText() + keyChar);
            jTextField_Pesquisa.requestFocus();
        }
    }

    @Override
    public void valueChanged(ListSelectionEvent e) {
        if (jTable.getSelectedRow() == -1) {
            return;
        }
        try {
            jTable.scrollRectToVisible(jTable.getCellRect(jTable.getSelectedRow(), 0, false));
        } catch (Exception ex) {
            ex.printStackTrace(System.err);
        }
    }

    private void novaListaAutomatica() {
        limpar();
        JListaInteligenteEditor editor = new JListaInteligenteEditor(principal, true);
        editor.setPlaylist(null);
        editor.setVisible(true);
        if (editor.getPlaylist() != null) {
            abrir(editor.getPlaylist());
        }
    }

    private void editarListaAutomatica() {
        JListaInteligenteEditor editor = new JListaInteligenteEditor(principal, true);
        editor.setPlaylist((PlaylistC) playlist);
        editor.setVisible(true);
        if (editor.getPlaylist() != null) {
            abrir(editor.getPlaylist());
        }
    }

    private void abrirPropriedades() {
        int linha = jTable.getSelectedRow();
        MusicaS musica = (MusicaS) jTable.getValueAt(linha, 0);
        try {
            new JMP3Propriedades(principal, true, musica).setVisible(true);
            jTable.setValueAt(musica, linha, 0);
        } catch (Exception ex) {
            Logger.getLogger(JPlayList.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    /**
     * This method is called from within the constructor to initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is always
     * regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        jPopupMenu_Playlist = new javax.swing.JPopupMenu();
        jMenuItem_Tocar = new javax.swing.JMenuItem();
        jMenuItem_Editar = new javax.swing.JMenuItem();
        jMenuItem_ExcluirLista = new javax.swing.JMenuItem();
        jPanelOpcoesLista = new javax.swing.JPanel();
        jPanel8 = new javax.swing.JPanel();
        jPanel4 = new javax.swing.JPanel();
        jLabel1 = new javax.swing.JLabel();
        jTextField_NomePlayList = new javax.swing.JTextField();
        jButtonSalvar = new javax.swing.JButton();
        jButtonExportar = new javax.swing.JButton();
        jPanel5 = new javax.swing.JPanel();
        jButtonAbrir = new javax.swing.JButton();
        jButtonConsultar = new javax.swing.JButton();
        jButtonDeletar = new javax.swing.JButton();
        jButtonLimpar = new javax.swing.JButton();
        jPanel2 = new javax.swing.JPanel();
        jScrollPane = new javax.swing.JScrollPane();
        jTable = new javax.swing.JTable();
        jPanel3 = new javax.swing.JPanel();
        jPanel6 = new javax.swing.JPanel();
        jButtonAdicionar = new javax.swing.JButton();
        jButtonRemover = new javax.swing.JButton();
        jToggleButtonOpcoesLista = new javax.swing.JToggleButton();
        jTextField_Pesquisa = new javax.swing.JTextField();
        jMenuBar1 = new javax.swing.JMenuBar();
        jMenuFuncoes = new javax.swing.JMenu();
        jMenuItemAbrirPlayList = new javax.swing.JMenuItem();
        jMenuItemCopiarTudoPara = new javax.swing.JMenuItem();
        jMenuItemSalvar = new javax.swing.JMenuItem();
        jMenuItemLimparLista = new javax.swing.JMenuItem();
        jMenuItemConsultar = new javax.swing.JMenuItem();
        jMenuItemExcluirLista = new javax.swing.JMenuItem();
        jMenuItemFechar = new javax.swing.JMenuItem();
        jMenuListaAutomatica = new javax.swing.JMenu();
        jMenuItem_NovaListaAutomatica = new javax.swing.JMenuItem();
        jMenuItem_EditarListaAutomatica = new javax.swing.JMenuItem();

        jMenuItem_Tocar.setText("Reproduzir");
        jMenuItem_Tocar.addActionListener(this);
        jPopupMenu_Playlist.add(jMenuItem_Tocar);

        jMenuItem_Editar.setText("Propriedades");
        jMenuItem_Editar.addActionListener(this);
        jPopupMenu_Playlist.add(jMenuItem_Editar);

        jMenuItem_ExcluirLista.setText("Remover da Lista");
        jMenuItem_ExcluirLista.addActionListener(this);
        jPopupMenu_Playlist.add(jMenuItem_ExcluirLista);

        setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);

        jPanelOpcoesLista.setPreferredSize(new java.awt.Dimension(323, 70));
        jPanelOpcoesLista.setLayout(new java.awt.BorderLayout());

        jPanel8.setLayout(new java.awt.GridLayout(2, 0));

        jPanel4.setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.LEFT, 1, 4));

        jLabel1.setText("Nome:");
        jPanel4.add(jLabel1);

        jTextField_NomePlayList.setPreferredSize(new java.awt.Dimension(200, 25));
        jPanel4.add(jTextField_NomePlayList);

        jButtonSalvar.setMnemonic('S');
        jButtonSalvar.setText("Salvar");
        jButtonSalvar.setToolTipText("Salva a lista internamente.");
        jButtonSalvar.addActionListener(this);
        jPanel4.add(jButtonSalvar);

        jButtonExportar.setMnemonic('E');
        jButtonExportar.setText("Expotar M3u");
        jButtonExportar.setToolTipText("Exporta lista como um arquivo M3U");
        jButtonExportar.addActionListener(this);
        jPanel4.add(jButtonExportar);

        jPanel8.add(jPanel4);

        jPanel5.setLayout(new java.awt.GridLayout(1, 0));

        jButtonAbrir.setText("Abrir M3U");
        jButtonAbrir.setToolTipText("Abre um arquivo m3u");
        jButtonAbrir.addActionListener(this);
        jPanel5.add(jButtonAbrir);

        jButtonConsultar.setText("Consultar Lista");
        jButtonConsultar.setToolTipText("Consulta na lista salva internamente.");
        jButtonConsultar.addActionListener(this);
        jPanel5.add(jButtonConsultar);

        jButtonDeletar.setText("Deletar");
        jButtonDeletar.setToolTipText("Excluir lista salva internamente.");
        jButtonDeletar.addActionListener(this);
        jPanel5.add(jButtonDeletar);

        jButtonLimpar.setText("Limpar");
        jButtonLimpar.setToolTipText("Limpa a lista...");
        jButtonLimpar.addActionListener(this);
        jPanel5.add(jButtonLimpar);

        jPanel8.add(jPanel5);

        jPanelOpcoesLista.add(jPanel8, java.awt.BorderLayout.CENTER);

        getContentPane().add(jPanelOpcoesLista, java.awt.BorderLayout.PAGE_START);

        jPanel2.setPreferredSize(new java.awt.Dimension(323, 150));
        jPanel2.setLayout(new java.awt.BorderLayout());

        jScrollPane.setAutoscrolls(true);
        jScrollPane.setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));
        jScrollPane.setRequestFocusEnabled(false);

        jTable.setAutoCreateRowSorter(true);
        jTable.setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));
        jTable.setFocusCycleRoot(true);
        jTable.setFocusTraversalPolicyProvider(true);
        jTable.setRowSelectionAllowed(false);
        jTable.setSurrendersFocusOnKeystroke(true);
        jTable.addMouseListener(this);
        jTable.addKeyListener(this);
        jScrollPane.setViewportView(jTable);

        jPanel2.add(jScrollPane, java.awt.BorderLayout.CENTER);

        getContentPane().add(jPanel2, java.awt.BorderLayout.CENTER);

        jPanel3.setPreferredSize(new java.awt.Dimension(323, 30));
        jPanel3.setLayout(new javax.swing.BoxLayout(jPanel3, javax.swing.BoxLayout.X_AXIS));

        jPanel6.setPreferredSize(new java.awt.Dimension(323, 25));
        jPanel6.setLayout(new javax.swing.BoxLayout(jPanel6, javax.swing.BoxLayout.LINE_AXIS));

        jButtonAdicionar.setText("+");
        jButtonAdicionar.setPreferredSize(new java.awt.Dimension(31, 31));
        jButtonAdicionar.addActionListener(this);
        jPanel6.add(jButtonAdicionar);

        jButtonRemover.setText("-");
        jButtonRemover.setPreferredSize(new java.awt.Dimension(31, 31));
        jButtonRemover.addActionListener(this);
        jPanel6.add(jButtonRemover);

        jToggleButtonOpcoesLista.setMnemonic('o');
        jToggleButtonOpcoesLista.setText("Opções da lista");
        jToggleButtonOpcoesLista.addChangeListener(this);
        jPanel6.add(jToggleButtonOpcoesLista);

        jTextField_Pesquisa.addKeyListener(this);
        jPanel6.add(jTextField_Pesquisa);

        jPanel3.add(jPanel6);

        getContentPane().add(jPanel3, java.awt.BorderLayout.PAGE_END);

        jMenuFuncoes.setMnemonic('F');
        jMenuFuncoes.setText("Funções");

        jMenuItemAbrirPlayList.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_A, java.awt.event.InputEvent.ALT_MASK));
        jMenuItemAbrirPlayList.setText("Abrir PlayList *.m3u");
        jMenuItemAbrirPlayList.addActionListener(this);
        jMenuFuncoes.add(jMenuItemAbrirPlayList);

        jMenuItemCopiarTudoPara.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_C, java.awt.event.InputEvent.SHIFT_MASK | java.awt.event.InputEvent.CTRL_MASK));
        jMenuItemCopiarTudoPara.setText("Copiar Tudo Para...");
        jMenuItemCopiarTudoPara.addActionListener(this);
        jMenuFuncoes.add(jMenuItemCopiarTudoPara);

        jMenuItemSalvar.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_S, java.awt.event.InputEvent.CTRL_MASK));
        jMenuItemSalvar.setText("Salvar");
        jMenuItemSalvar.addActionListener(this);
        jMenuFuncoes.add(jMenuItemSalvar);

        jMenuItemLimparLista.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_L, java.awt.event.InputEvent.CTRL_MASK));
        jMenuItemLimparLista.setText("Limpar");
        jMenuItemLimparLista.addActionListener(this);
        jMenuFuncoes.add(jMenuItemLimparLista);

        jMenuItemConsultar.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_P, java.awt.event.InputEvent.CTRL_MASK));
        jMenuItemConsultar.setText("Consultar Lista");
        jMenuItemConsultar.addActionListener(this);
        jMenuFuncoes.add(jMenuItemConsultar);

        jMenuItemExcluirLista.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_DELETE, java.awt.event.InputEvent.CTRL_MASK));
        jMenuItemExcluirLista.setText("Excluir Lista");
        jMenuItemExcluirLista.addActionListener(this);
        jMenuFuncoes.add(jMenuItemExcluirLista);

        jMenuItemFechar.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_ESCAPE, 0));
        jMenuItemFechar.setText("Fechar");
        jMenuItemFechar.addActionListener(this);
        jMenuFuncoes.add(jMenuItemFechar);

        jMenuBar1.add(jMenuFuncoes);

        jMenuListaAutomatica.setText("Lista Automática");

        jMenuItem_NovaListaAutomatica.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_N, java.awt.event.InputEvent.CTRL_MASK));
        jMenuItem_NovaListaAutomatica.setText("Nova Lista Automática");
        jMenuItem_NovaListaAutomatica.addActionListener(this);
        jMenuListaAutomatica.add(jMenuItem_NovaListaAutomatica);

        jMenuItem_EditarListaAutomatica.setText("Editar Lista Automática");
        jMenuItem_EditarListaAutomatica.addActionListener(this);
        jMenuListaAutomatica.add(jMenuItem_EditarListaAutomatica);

        jMenuBar1.add(jMenuListaAutomatica);

        setJMenuBar(jMenuBar1);

        setSize(new java.awt.Dimension(494, 495));
        setLocationRelativeTo(null);
    }

    // Code for dispatching events from components to event handlers.

    public void actionPerformed(java.awt.event.ActionEvent evt) {
        if (evt.getSource() == jButtonSalvar) {
            JPlayList.this.jButtonSalvarActionPerformed(evt);
        }
        else if (evt.getSource() == jButtonExportar) {
            JPlayList.this.jButtonExportarActionPerformed(evt);
        }
        else if (evt.getSource() == jButtonAbrir) {
            JPlayList.this.jButtonAbrirActionPerformed(evt);
        }
        else if (evt.getSource() == jButtonConsultar) {
            JPlayList.this.jButtonConsultarActionPerformed(evt);
        }
        else if (evt.getSource() == jButtonDeletar) {
            JPlayList.this.jButtonDeletarActionPerformed(evt);
        }
        else if (evt.getSource() == jButtonLimpar) {
            JPlayList.this.jButtonLimparActionPerformed(evt);
        }
        else if (evt.getSource() == jButtonAdicionar) {
            JPlayList.this.jButtonAdicionarActionPerformed(evt);
        }
        else if (evt.getSource() == jButtonRemover) {
            JPlayList.this.jButtonRemoverActionPerformed(evt);
        }
        else if (evt.getSource() == jMenuItem_Tocar) {
            JPlayList.this.jMenuItem_TocarActionPerformed(evt);
        }
        else if (evt.getSource() == jMenuItem_Editar) {
            JPlayList.this.jMenuItem_EditarActionPerformed(evt);
        }
        else if (evt.getSource() == jMenuItem_ExcluirLista) {
            JPlayList.this.jMenuItem_ExcluirListaActionPerformed(evt);
        }
        else if (evt.getSource() == jMenuItemAbrirPlayList) {
            JPlayList.this.jMenuItemAbrirPlayListActionPerformed(evt);
        }
        else if (evt.getSource() == jMenuItemCopiarTudoPara) {
            JPlayList.this.jMenuItemCopiarTudoParaActionPerformed(evt);
        }
        else if (evt.getSource() == jMenuItemSalvar) {
            JPlayList.this.jMenuItemSalvarActionPerformed(evt);
        }
        else if (evt.getSource() == jMenuItemLimparLista) {
            JPlayList.this.jMenuItemLimparListaActionPerformed(evt);
        }
        else if (evt.getSource() == jMenuItemConsultar) {
            JPlayList.this.jMenuItemConsultarActionPerformed(evt);
        }
        else if (evt.getSource() == jMenuItemExcluirLista) {
            JPlayList.this.jMenuItemExcluirListaActionPerformed(evt);
        }
        else if (evt.getSource() == jMenuItemFechar) {
            JPlayList.this.jMenuItemFecharActionPerformed(evt);
        }
        else if (evt.getSource() == jMenuItem_NovaListaAutomatica) {
            JPlayList.this.jMenuItem_NovaListaAutomaticaActionPerformed(evt);
        }
        else if (evt.getSource() == jMenuItem_EditarListaAutomatica) {
            JPlayList.this.jMenuItem_EditarListaAutomaticaActionPerformed(evt);
        }
    }

    public void keyPressed(java.awt.event.KeyEvent evt) {
        if (evt.getSource() == jTable) {
            JPlayList.this.jTableKeyPressed(evt);
        }
        else if (evt.getSource() == jTextField_Pesquisa) {
            JPlayList.this.jTextField_PesquisaKeyPressed(evt);
        }
    }

    public void keyReleased(java.awt.event.KeyEvent evt) {
    }

    public void keyTyped(java.awt.event.KeyEvent evt) {
    }

    public void mouseClicked(java.awt.event.MouseEvent evt) {
        if (evt.getSource() == jTable) {
            JPlayList.this.jTableMouseClicked(evt);
        }
    }

    public void mouseEntered(java.awt.event.MouseEvent evt) {
    }

    public void mouseExited(java.awt.event.MouseEvent evt) {
    }

    public void mousePressed(java.awt.event.MouseEvent evt) {
        if (evt.getSource() == jTable) {
            JPlayList.this.jTableMousePressed(evt);
        }
    }

    public void mouseReleased(java.awt.event.MouseEvent evt) {
    }

    public void stateChanged(javax.swing.event.ChangeEvent evt) {
        if (evt.getSource() == jToggleButtonOpcoesLista) {
            JPlayList.this.jToggleButtonOpcoesListaStateChanged(evt);
        }
    }// </editor-fold>//GEN-END:initComponents

    private void jTableMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jTableMouseClicked
        switch (evt.getButton()) {
            case MouseEvent.BUTTON1:
                if (evt.getClickCount() == 2) {
                    tocarSelecionada();
                }
                break;
            case MouseEvent.BUTTON2:
                abrirPropriedades();
                break;
            case MouseEvent.BUTTON3:
                jPopupMenu_Playlist.show((Component) evt.getSource(), evt.getX(), evt.getY());
                break;
        }
}//GEN-LAST:event_jTableMouseClicked

    private void jTableKeyPressed(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_jTableKeyPressed
        onTableKeyPressed(evt);
}//GEN-LAST:event_jTableKeyPressed

    private void jToggleButtonOpcoesListaStateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_jToggleButtonOpcoesListaStateChanged
        jPanelOpcoesLista.setVisible(jToggleButtonOpcoesLista.isSelected());
    }//GEN-LAST:event_jToggleButtonOpcoesListaStateChanged

    private void jTextField_PesquisaKeyPressed(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_jTextField_PesquisaKeyPressed
        int rowSelct = jTable.getSelectedRow();
        switch (evt.getKeyCode()) {
            case KeyEvent.VK_ESCAPE:
                jTextField_Pesquisa.setText("");
                break;
            case KeyEvent.VK_ENTER:
                MusicaS m = ((ObjectTableModel<MusicaS>)jTable.getModel()).getItem(rowSelct);
                try {
                    carregador.abrir(m, 0, false);
                    //  tocarPausar(null);
                } catch (Exception ex) {
                    Logger.getLogger(JPlayList.class.getName()).log(Level.SEVERE, null, ex);
                }
                break;
            case KeyEvent.VK_DOWN:
                if (jTable.getSelectedRow() == jTable.getRowCount() - 1) {
                    jTable.getSelectionModel().setSelectionInterval(0, 0);
                } else {
                    jTable.getSelectionModel().setSelectionInterval(rowSelct + 1, rowSelct + 1);
                }
                break;
            case KeyEvent.VK_UP:
                if (jTable.getSelectedRow() == 0) {
                    jTable.getSelectionModel().setSelectionInterval(jTable.getRowCount() - 1, jTable.getRowCount() - 1);
                } else {
                    jTable.getSelectionModel().setSelectionInterval(rowSelct - 1, rowSelct - 1);
                }

                break;
            case KeyEvent.VK_SHIFT:
                jTable.requestFocus();
                break;
        }

    }//GEN-LAST:event_jTextField_PesquisaKeyPressed

    private void jMenuItemCopiarTudoParaActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItemCopiarTudoParaActionPerformed
        if (jCopiador == null) {
            jCopiador = new JCopiador(this, false);
        }
        jCopiador.setMusicas(objectTableModel.getItens());
        jCopiador.setNomePLayList(playlist.getNome());
        jCopiador.setVisible(true);
    }//GEN-LAST:event_jMenuItemCopiarTudoParaActionPerformed

    private void jMenuItem_EditarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem_EditarActionPerformed
        abrirPropriedades();
    }//GEN-LAST:event_jMenuItem_EditarActionPerformed

    private void jMenuItem_TocarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem_TocarActionPerformed
        tocarSelecionada();
    }//GEN-LAST:event_jMenuItem_TocarActionPerformed

    private void jMenuItem_ExcluirListaActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem_ExcluirListaActionPerformed
        removerMusica();
    }//GEN-LAST:event_jMenuItem_ExcluirListaActionPerformed

    private void jTableMousePressed(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jTableMousePressed
        if (evt.getButton() == MouseEvent.BUTTON3) {
            int linha = jTable.rowAtPoint(evt.getPoint());
            if (linha != -1) {
                jTable.setRowSelectionInterval(linha, linha);
            }
        }
    }//GEN-LAST:event_jTableMousePressed

    private void jButtonAbrirActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonAbrirActionPerformed
        openM3u();
    }//GEN-LAST:event_jButtonAbrirActionPerformed

    private void jButtonConsultarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonConsultarActionPerformed
        consultarPlayList();
    }//GEN-LAST:event_jButtonConsultarActionPerformed

    private void jButtonDeletarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonDeletarActionPerformed
        deletar();
    }//GEN-LAST:event_jButtonDeletarActionPerformed

    private void jButtonLimparActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonLimparActionPerformed
        limpar();
    }//GEN-LAST:event_jButtonLimparActionPerformed

    private void jButtonSalvarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonSalvarActionPerformed
        salvarPlayList();
    }//GEN-LAST:event_jButtonSalvarActionPerformed

    private void jButtonExportarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonExportarActionPerformed
        exportarPlayList();
    }//GEN-LAST:event_jButtonExportarActionPerformed

    private void jButtonAdicionarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonAdicionarActionPerformed
        adicionarMusica();
    }//GEN-LAST:event_jButtonAdicionarActionPerformed

    private void jButtonRemoverActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonRemoverActionPerformed
        removerMusica();
    }//GEN-LAST:event_jButtonRemoverActionPerformed

    private void jMenuItemAbrirPlayListActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItemAbrirPlayListActionPerformed
        openM3u();
    }//GEN-LAST:event_jMenuItemAbrirPlayListActionPerformed

    private void jMenuItemSalvarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItemSalvarActionPerformed
        salvarPlayList();
    }//GEN-LAST:event_jMenuItemSalvarActionPerformed

    private void jMenuItemLimparListaActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItemLimparListaActionPerformed
        limpar();
    }//GEN-LAST:event_jMenuItemLimparListaActionPerformed

    private void jMenuItemConsultarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItemConsultarActionPerformed
        consultarPlayList();
    }//GEN-LAST:event_jMenuItemConsultarActionPerformed

    private void jMenuItemExcluirListaActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItemExcluirListaActionPerformed
        deletar();
    }//GEN-LAST:event_jMenuItemExcluirListaActionPerformed

    private void jMenuItemFecharActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItemFecharActionPerformed
        setVisible(false);
    }//GEN-LAST:event_jMenuItemFecharActionPerformed

    private void jMenuItem_NovaListaAutomaticaActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem_NovaListaAutomaticaActionPerformed
        novaListaAutomatica();
    }//GEN-LAST:event_jMenuItem_NovaListaAutomaticaActionPerformed

    private void jMenuItem_EditarListaAutomaticaActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem_EditarListaAutomaticaActionPerformed
        editarListaAutomatica();
    }//GEN-LAST:event_jMenuItem_EditarListaAutomaticaActionPerformed

    public void addMusica(MusicaS m) {
       objectTableModel.addItem(m);
        if (playlist == null) {
            salvarPlaylistAtual();
        }else{
            playlist.getMusicas().add(m);
        }
      
    }

    public void addMusicas(ArrayList<MusicaS> musicas) {
        addMusicas(musicas, jTable.getRowCount());
    }

    public void addMusicas(ArrayList<MusicaS> musicas, int posicaoInicial) {
        if (playlist == null) {
            salvarPlaylistAtual();
        }
       
        try {
            if (posicaoInicial == -1) {
                playlist.getMusicas().addAll(musicas);
            }else{
                playlist.getMusicas().addAll(posicaoInicial, musicas);
            }
            objectTableModel.setItens(playlist.getMusicas());
        } catch (Exception ex) {
            Logger.getLogger(JPlayList.class.getName()).log(Level.SEVERE, null, ex);
        }

    }
  
    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton jButtonAbrir;
    private javax.swing.JButton jButtonAdicionar;
    private javax.swing.JButton jButtonConsultar;
    private javax.swing.JButton jButtonDeletar;
    private javax.swing.JButton jButtonExportar;
    private javax.swing.JButton jButtonLimpar;
    private javax.swing.JButton jButtonRemover;
    private javax.swing.JButton jButtonSalvar;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JMenuBar jMenuBar1;
    private javax.swing.JMenu jMenuFuncoes;
    private javax.swing.JMenuItem jMenuItemAbrirPlayList;
    private javax.swing.JMenuItem jMenuItemConsultar;
    private javax.swing.JMenuItem jMenuItemCopiarTudoPara;
    private javax.swing.JMenuItem jMenuItemExcluirLista;
    private javax.swing.JMenuItem jMenuItemFechar;
    private javax.swing.JMenuItem jMenuItemLimparLista;
    private javax.swing.JMenuItem jMenuItemSalvar;
    private javax.swing.JMenuItem jMenuItem_Editar;
    private javax.swing.JMenuItem jMenuItem_EditarListaAutomatica;
    private javax.swing.JMenuItem jMenuItem_ExcluirLista;
    private javax.swing.JMenuItem jMenuItem_NovaListaAutomatica;
    private javax.swing.JMenuItem jMenuItem_Tocar;
    private javax.swing.JMenu jMenuListaAutomatica;
    private javax.swing.JPanel jPanel2;
    private javax.swing.JPanel jPanel3;
    private javax.swing.JPanel jPanel4;
    private javax.swing.JPanel jPanel5;
    private javax.swing.JPanel jPanel6;
    private javax.swing.JPanel jPanel8;
    private javax.swing.JPanel jPanelOpcoesLista;
    private javax.swing.JPopupMenu jPopupMenu_Playlist;
    private javax.swing.JScrollPane jScrollPane;
    private javax.swing.JTable jTable;
    private javax.swing.JTextField jTextField_NomePlayList;
    private javax.swing.JTextField jTextField_Pesquisa;
    private javax.swing.JToggleButton jToggleButtonOpcoesLista;
    // End of variables declaration//GEN-END:variables
}
TOP

Related Classes of com.playlist.JPlayList

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.