Package com.tulskiy.musique.playlist

Examples of com.tulskiy.musique.playlist.PlaybackOrder


public class PlaybackQueueDialog extends JDialog {

    public PlaybackQueueDialog(final JComponent owner) {
        super(SwingUtilities.windowForComponent(owner), "Playback Queue", ModalityType.MODELESS);
        Application app = Application.getInstance();
        final PlaybackOrder playbackOrder = app.getPlayer().getPlaybackOrder();
        final List<PlaybackOrder.QueueTuple> queue = playbackOrder.getQueue();
        final JList list = new JList(new DefaultListModel() {
            @Override
            public int getSize() {
                return queue.size();
            }

            @Override
            public Object getElementAt(int index) {
                return (index + 1) + ". " + queue.get(index);
            }
        });
        list.setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTION);

        setLayout(new BorderLayout());
        JScrollPane scrollPane = new JScrollPane(list);
        scrollPane.setBorder(BorderFactory.createEtchedBorder());
        add(scrollPane, BorderLayout.CENTER);

        JPanel buttons = new JPanel(new GridLayout(0, 1));
        JButton up = new JButton("Up");
        JButton down = new JButton("Down");
        JButton remove = new JButton("  Remove  ");
        JButton clear = new JButton("Clear");
        up.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                int index = list.getSelectedIndex();
                if (index > 0) {
                    List<PlaybackOrder.QueueTuple> toAdd = new ArrayList<PlaybackOrder.QueueTuple>();
                    int[] selectedValues = list.getSelectedIndices();
                    for (int i : selectedValues) {
                        toAdd.add(queue.get(i));
                    }
                    queue.removeAll(toAdd);
                    index--;
                    queue.addAll(index, toAdd);
                    list.getSelectionModel().setSelectionInterval(index, index + selectedValues.length - 1);
                    playbackOrder.updateQueuePositions();
                    list.repaint();
                    owner.repaint();
                }
            }
        });
        down.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                int[] indices = list.getSelectedIndices();
                if (indices.length > 0) {
                    int index = indices[0] + 1;
                    if (index <= queue.size() - indices.length) {
                        List<PlaybackOrder.QueueTuple> toAdd = new ArrayList<PlaybackOrder.QueueTuple>();
                        int[] selectedValues = list.getSelectedIndices();
                        for (int i : selectedValues) {
                            toAdd.add(queue.get(i));
                        }
                        queue.removeAll(toAdd);
                        queue.addAll(index, toAdd);
                        list.getSelectionModel().setSelectionInterval(index, index + selectedValues.length - 1);
                        playbackOrder.updateQueuePositions();
                        list.repaint();
                        owner.repaint();
                    }
                }
            }
        });
        remove.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                int index = list.getSelectedIndex() - 1;
                if (queue.size() > 0) {
                    for (int i : list.getSelectedIndices()) {
                        PlaybackOrder.QueueTuple tuple = queue.get(i);
                        tuple.track.setQueuePosition(-1);
                        queue.remove(tuple);
                    }
                }
                list.clearSelection();
                playbackOrder.updateQueuePositions();
                list.repaint();
                owner.repaint();
            }
        });
        clear.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                playbackOrder.flushQueue();
                list.repaint();
                owner.repaint();
            }
        });
View Full Code Here


        final Playlist playlist = playlistManager.getActivePlaylist();

        tabs.setSelectedIndex(-1);
        tabs.setSelectedIndex(playlists.indexOf(playlist));

        PlaybackOrder order = app.getPlayer().getPlaybackOrder();
        Track lastPlayed = order.getLastPlayed();

        if (lastPlayed != null) {
            PlaylistTable table = tabs.getSelectedTable();
            if (table != null) {
                int index = table.getPlaylist().indexOf(lastPlayed);
View Full Code Here

        final Player player = Application.getInstance().getPlayer();
        table.getActionMap().put("enqueue", new AbstractAction("Add to Queue  ") {
            @Override
            public void actionPerformed(ActionEvent e) {
                for (Track track : table.getSelectedSongs()) {
                    PlaybackOrder order = player.getPlaybackOrder();
                    order.enqueue(track, playlist);
                }
                table.update();
                playlistTable.update();
            }
        });
View Full Code Here

            @Override
            public void actionPerformed(ActionEvent e) {
                ArrayList<Track> tracks = getSelectedSongs();
                if (!tracks.isEmpty()) {
                    player.open(tracks.get(0));
                    PlaybackOrder order = player.getPlaybackOrder();
                    order.setLastPlayed(null);
                    app.getPlaylistManager().setActivePlaylist(playlist);
                }
            }
        });
        aMap.put("showProperties", new AbstractAction("Properties") {
            @Override
            public void actionPerformed(ActionEvent e) {
                ArrayList<Track> tracks = getSelectedSongs();
                if (tracks.isEmpty())
                    return;
                showProperties(tracks);
            }
        });
        aMap.put("showNowPlaying", new AbstractAction("Scroll to Now Playing") {
            @Override
            public void actionPerformed(ActionEvent e) {
                scrollToSong(player.getTrack());
            }
        });
        aMap.put("removeSelected", new AbstractAction("Remove") {
            @Override
            public void actionPerformed(ActionEvent e) {
                ArrayList<Track> songs = getSelectedSongs();
                playlist.removeAll(songs);

                adjustLastSongAfterDelete(songs);
                clearSelection();
                playlist.firePlaylistChanged();
                model.fireTableDataChanged();
            }
        });
        aMap.put("enqueue", new AbstractAction("Add to Queue  ") {
            @Override
            public void actionPerformed(ActionEvent e) {
                for (Track track : getSelectedSongs()) {
                    PlaybackOrder order = player.getPlaybackOrder();
                    order.enqueue(track, playlist);
                    update();
                }
            }
        });
        aMap.put("clearQueue", new AbstractAction("Clear Playback Queue") {
            @Override
            public void actionPerformed(ActionEvent e) {
                PlaybackOrder order = player.getPlaybackOrder();
                order.flushQueue();
                update();
            }
        });


        iMap.put(KeyStroke.getKeyStroke("B"), "next");
        iMap.put(KeyStroke.getKeyStroke("V"), "stop");
        iMap.put(KeyStroke.getKeyStroke("C"), "pause");
        iMap.put(KeyStroke.getKeyStroke("X"), "play");
        iMap.put(KeyStroke.getKeyStroke("Z"), "prev");

        iMap.put(KeyStroke.getKeyStroke("ENTER"), "playSelected");
        iMap.put(KeyStroke.getKeyStroke("alt ENTER"), "showProperties");
        iMap.put(KeyStroke.getKeyStroke("SPACE"), "showNowPlaying");
        iMap.put(KeyStroke.getKeyStroke("DELETE"), "removeSelected");
        iMap.put(KeyStroke.getKeyStroke("Q"), "enqueue");

        addMouseListener(new MouseAdapter() {
            @Override
            public void mouseClicked(MouseEvent e) {
                if (e.getButton() == MouseEvent.BUTTON1 && e.getClickCount() == 2) {
                    runAction("playSelected");
                }
            }
        });
        playerListener = new PlayerListener() {
            public void onEvent(PlayerEvent e) {
                update();
                switch (e.getEventCode()) {
                    case FILE_OPENED:
                        if (config.getBoolean("playlists.cursorFollowsPlayback", true)) {
                            SwingUtilities.invokeLater(new Runnable() {
                                @Override
                                public void run() {
                                    runAction("showNowPlaying");
                                }
                            });
                        }

                        if (config.getBoolean("playlists.playbackFollowsCursor", false)) {
                            PlaybackOrder order = player.getPlaybackOrder();
                            order.setLastPlayed(null);
                        }
                        break;
                    case STOPPED:
                        int index = playlist.indexOf(player.getTrack());
                        if (index != -1)
                            setRowSelectionInterval(index, index);
                        break;
                }
            }
        };
        player.addListener(playerListener);

        getTableHeader().addMouseListener(new MouseAdapter() {
            @Override
            public void mouseClicked(MouseEvent e) {
                if (e.getButton() == MouseEvent.BUTTON1) {
                    TableColumnModel model = getTableHeader().getColumnModel();
                    int index = model.getColumnIndexAtX(e.getX());
                    if (index != -1) {
                        final int col = model.getColumn(index).getModelIndex();
                        final PlaylistColumn pc = columns.get(col);
                        playlist.sort(pc.getExpression(), true);
                        playlist.firePlaylistChanged();
                    }
                }
            }
        });

        getSelectionModel().addListSelectionListener(new ListSelectionListener() {
            @Override
            public void valueChanged(ListSelectionEvent e) {
                ArrayList<Track> tracks = getSelectedSongs();
                if (tracks.isEmpty())
                    return;
                Track track = tracks.get(0);
                config.put("playlist.selectedTrack", track);
                if (config.getBoolean("playlists.playbackFollowsCursor", false)) {
                    PlaybackOrder order = player.getPlaybackOrder();
                    order.setLastPlayed(track);
                }
            }
        });

        autoResizeChangeListener = new PropertyChangeListener() {
View Full Code Here

TOP

Related Classes of com.tulskiy.musique.playlist.PlaybackOrder

Copyright © 2018 www.massapicom. 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.