Package com.tulskiy.musique.gui.dialogs

Source Code of com.tulskiy.musique.gui.dialogs.TracksInfoAddFieldDialog$FieldKeyModel

/*
* Copyright (c) 2008, 2009, 2010 Denis Tulskiy
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* version 3 along with this work.  If not, see <http://www.gnu.org/licenses/>.
*/

package com.tulskiy.musique.gui.dialogs;

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

import javax.swing.BorderFactory;
import javax.swing.Box;
import javax.swing.BoxLayout;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JDialog;
import javax.swing.JTextField;
import javax.swing.SwingUtilities;

import org.jaudiotagger.tag.FieldKey;

import com.tulskiy.musique.gui.components.GroupTable;
import com.tulskiy.musique.gui.model.MultiTagFieldModel;
import com.tulskiy.musique.gui.model.TrackInfoItem;
import com.tulskiy.musique.gui.playlist.PlaylistTable;
import com.tulskiy.musique.util.FieldKeyMetaHelper;
import com.tulskiy.musique.util.FieldKeyMetaHelper.FieldKeyMeta;

/**
* Author: Maksim Liauchuk
* Date: 08.05.2011
*/
public class TracksInfoAddFieldDialog extends JDialog {

  private JButton cancel;

    public TracksInfoAddFieldDialog(final GroupTable properties, final MultiTagFieldModel tagFieldsModel) {
        setTitle("Add field");
        setModal(false);

        final JComboBox key = new JComboBox(new FieldKeyModel(getAvailableFieldKeys(tagFieldsModel)));
        add(key, BorderLayout.NORTH);

        final JTextField value = new JTextField();
        add(value, BorderLayout.CENTER);

        Box b1 = new Box(BoxLayout.X_AXIS);
        b1.add(Box.createHorizontalGlue());
        JButton add = new JButton("Add");
        b1.add(add);
        add.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
              FieldKeyMeta keyMeta = (FieldKeyMeta) key.getSelectedItem();
              TrackInfoItem trackInfoItem = new TrackInfoItem(keyMeta.getKey(),
                  tagFieldsModel.getTrackInfoItems().get(0).getTracks());
              trackInfoItem.getState().setValue(value.getText());
              trackInfoItem.approveState(false);
             
              tagFieldsModel.addTrackInfoItem(trackInfoItem);
              tagFieldsModel.sort();

              properties.revalidate();
              properties.repaint();
                setVisible(false);
                dispose();
                properties.requestFocus();
            }
        });
        cancel = new JButton("Cancel");
        cancel.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                setVisible(false);
                dispose();
                properties.requestFocus();
            }
        });

        b1.add(Box.createHorizontalStrut(5));
        b1.add(cancel);
        b1.setBorder(BorderFactory.createEmptyBorder(5, 0, 5, 10));

        add(b1, BorderLayout.SOUTH);

        setSize(300, 115);
        setLocationRelativeTo(SwingUtilities.windowForComponent(properties));
    }
   
    private List<FieldKey> getAvailableFieldKeys(final MultiTagFieldModel tagFieldsModel) {
      List<FieldKey> result = new ArrayList<FieldKey>(Arrays.asList(FieldKey.values()));

      // remove already used fields
      result.removeAll(tagFieldsModel.getAllUsedFieldKeys());
      // remove technical fields
      result.remove(FieldKey.ENCODER);
      result.remove(FieldKey.CUESHEET);

      return result;
    }
   
    private class FieldKeyModel extends DefaultComboBoxModel {
     
      private List<FieldKey> keys;
     
      public FieldKeyModel(List<FieldKey> keys) {
        this.keys = keys;
      }

    @Override
    public Object getElementAt(int arg0) {
      return FieldKeyMetaHelper.getFieldKeyMeta(keys.get(arg0));
    }

    @Override
    public int getSize() {
      return keys.size();
    }
     
    }

}
TOP

Related Classes of com.tulskiy.musique.gui.dialogs.TracksInfoAddFieldDialog$FieldKeyModel

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.