/*
This file is part of JFLICKS.
JFLICKS is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
JFLICKS 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 General Public License for more details.
You should have received a copy of the GNU General Public License
along with JFLICKS. If not, see <http://www.gnu.org/licenses/>.
*/
package org.jflicks.metadata.themoviedb;
import java.awt.BorderLayout;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import javax.swing.BorderFactory;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
/**
* This panel displays info about a movie.
*
* @author Doug Barnum
* @version 1.0 - 27 Dec 09
*/
public class MovieInfo extends JPanel {
private JTextField nameTextField;
private JTextArea overviewTextArea;
private JTextField scoreTextField;
private JTextField popularityTextField;
private JTextField releasedTextField;
private Movie movie;
/**
* Simple empty constructor.
*/
public MovieInfo() {
JTextField tf = new JTextField(16);
tf.setEditable(false);
tf.setBorder(null);
setNameTextField(tf);
JPanel namePanel = new JPanel(new BorderLayout());
namePanel.setBorder(BorderFactory.createTitledBorder("Name"));
namePanel.add(tf, BorderLayout.CENTER);
JTextArea ta = new JTextArea(22, 16);
ta.setEditable(false);
ta.setLineWrap(true);
ta.setWrapStyleWord(true);
setOverviewTextArea(ta);
JScrollPane listScroller = new JScrollPane(getOverviewTextArea(),
JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
JPanel overviewPanel = new JPanel(new BorderLayout());
overviewPanel.setBorder(BorderFactory.createTitledBorder("Overview"));
overviewPanel.add(listScroller, BorderLayout.CENTER);
tf = new JTextField(16);
tf.setEditable(false);
tf.setBorder(null);
setScoreTextField(tf);
JPanel scorePanel = new JPanel(new BorderLayout());
scorePanel.setBorder(BorderFactory.createTitledBorder("Score"));
scorePanel.add(tf, BorderLayout.CENTER);
tf = new JTextField(16);
tf.setEditable(false);
tf.setBorder(null);
setPopularityTextField(tf);
JPanel popPanel = new JPanel(new BorderLayout());
popPanel.setBorder(BorderFactory.createTitledBorder("Popularity"));
popPanel.add(tf, BorderLayout.CENTER);
tf = new JTextField(16);
tf.setEditable(false);
tf.setBorder(null);
setReleasedTextField(tf);
JPanel relPanel = new JPanel(new BorderLayout());
relPanel.setBorder(BorderFactory.createTitledBorder("Released"));
relPanel.add(tf, BorderLayout.CENTER);
setLayout(new GridBagLayout());
GridBagConstraints gbc = new GridBagConstraints();
gbc.gridx = 0;
gbc.gridy = 0;
gbc.gridwidth = 1;
gbc.gridheight = 1;
gbc.fill = GridBagConstraints.BOTH;
gbc.anchor = GridBagConstraints.CENTER;
gbc.weightx = 1.0;
gbc.weighty = 0.0;
gbc.insets = new Insets(4, 4, 4, 4);
add(namePanel, gbc);
gbc = new GridBagConstraints();
gbc.gridx = 0;
gbc.gridy = 1;
gbc.gridwidth = 1;
gbc.gridheight = 1;
gbc.fill = GridBagConstraints.BOTH;
gbc.anchor = GridBagConstraints.CENTER;
gbc.weightx = 1.0;
gbc.weighty = 1.0;
gbc.insets = new Insets(4, 4, 4, 4);
add(overviewPanel, gbc);
gbc = new GridBagConstraints();
gbc.gridx = 0;
gbc.gridy = 2;
gbc.gridwidth = 1;
gbc.gridheight = 1;
gbc.fill = GridBagConstraints.BOTH;
gbc.anchor = GridBagConstraints.CENTER;
gbc.weightx = 1.0;
gbc.weighty = 0.0;
gbc.insets = new Insets(4, 4, 4, 4);
add(scorePanel, gbc);
gbc = new GridBagConstraints();
gbc.gridx = 0;
gbc.gridy = 3;
gbc.gridwidth = 1;
gbc.gridheight = 1;
gbc.fill = GridBagConstraints.BOTH;
gbc.anchor = GridBagConstraints.CENTER;
gbc.weightx = 1.0;
gbc.weighty = 0.0;
gbc.insets = new Insets(4, 4, 4, 4);
add(popPanel, gbc);
gbc = new GridBagConstraints();
gbc.gridx = 0;
gbc.gridy = 4;
gbc.gridwidth = 1;
gbc.gridheight = 1;
gbc.fill = GridBagConstraints.BOTH;
gbc.anchor = GridBagConstraints.CENTER;
gbc.weightx = 1.0;
gbc.weighty = 0.0;
gbc.insets = new Insets(4, 4, 4, 4);
add(relPanel, gbc);
}
private JTextField getNameTextField() {
return (nameTextField);
}
private void setNameTextField(JTextField tf) {
nameTextField = tf;
}
private JTextArea getOverviewTextArea() {
return (overviewTextArea);
}
private void setOverviewTextArea(JTextArea ta) {
overviewTextArea = ta;
}
private JTextField getScoreTextField() {
return (scoreTextField);
}
private void setScoreTextField(JTextField tf) {
scoreTextField = tf;
}
private JTextField getPopularityTextField() {
return (popularityTextField);
}
private void setPopularityTextField(JTextField tf) {
popularityTextField = tf;
}
private JTextField getReleasedTextField() {
return (releasedTextField);
}
private void setReleasedTextField(JTextField tf) {
releasedTextField = tf;
}
/**
* The currently displayed information is contained in a Movie instance.
*
* @return A Movie instance.
*/
public Movie getMovie() {
return (movie);
}
/**
* The currently displayed information is contained in a Movie instance.
*
* @param m A Movie instance.
*/
public void setMovie(Movie m) {
movie = m;
if (movie != null) {
getNameTextField().setText(movie.getTitle());
getOverviewTextArea().setText(movie.getOverview());
getOverviewTextArea().setCaretPosition(0);
getScoreTextField().setText("" + movie.getVoteAverage());
getPopularityTextField().setText("" + movie.getPopularity());
getReleasedTextField().setText(movie.getReleaseDate());
} else {
getNameTextField().setText("");
getOverviewTextArea().setText("");
getScoreTextField().setText("");
getPopularityTextField().setText("");
getReleasedTextField().setText("");
}
}
}