package kiyut.ekspos.pycasa;
import com.google.gdata.data.PlainTextConstruct;
import com.google.gdata.data.photos.AlbumEntry;
import java.awt.CardLayout;
import java.awt.Component;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.util.List;
import java.util.ResourceBundle;
import javax.swing.DefaultComboBoxModel;
import javax.swing.DefaultListCellRenderer;
import javax.swing.JList;
import javax.swing.ListCellRenderer;
/**
* PycasaAddPhotoPane
*
*/
public class PycasaAddPhotoPane extends javax.swing.JPanel {
private ResourceBundle bundle = ResourceBundle.getBundle("kiyut.ekspos.pycasa.PycasaAddPhotoPane");
private List<AlbumEntry> albums;
private boolean updateAlbumList = false;
/** Creates new form PycasaAddPhotoPane */
public PycasaAddPhotoPane() {
initComponents();
initCustomComponents();
}
/** 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.
*/
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
private void initComponents() {
java.awt.GridBagConstraints gridBagConstraints;
webAlbumButtonGroup = new javax.swing.ButtonGroup();
jPanel1 = new javax.swing.JPanel();
newAlbumRadio = new javax.swing.JRadioButton();
existingAlbumRadio = new javax.swing.JRadioButton();
jPanel2 = new javax.swing.JPanel();
jLabel1 = new javax.swing.JLabel();
albumTitlePane = new javax.swing.JPanel();
albumTitleField = new javax.swing.JTextField();
albumTitleCombo = new javax.swing.JComboBox();
jLabel2 = new javax.swing.JLabel();
jScrollPane1 = new javax.swing.JScrollPane();
albumDescArea = new javax.swing.JTextArea();
jLabel3 = new javax.swing.JLabel();
albumPlaceField = new javax.swing.JTextField();
jPanel3 = new javax.swing.JPanel();
setLayout(new java.awt.GridBagLayout());
jPanel1.setBorder(javax.swing.BorderFactory.createTitledBorder(bundle.getString("CTL_Album.Text"))); // NOI18N
jPanel1.setLayout(new java.awt.GridLayout(2, 0));
webAlbumButtonGroup.add(newAlbumRadio);
newAlbumRadio.setSelected(true);
newAlbumRadio.setText(bundle.getString("CTL_AddToNewAlbum.Text")); // NOI18N
jPanel1.add(newAlbumRadio);
webAlbumButtonGroup.add(existingAlbumRadio);
existingAlbumRadio.setText(bundle.getString("CTL_AddToExistingAlbum.Text")); // NOI18N
jPanel1.add(existingAlbumRadio);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 0;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.weightx = 1.0;
add(jPanel1, gridBagConstraints);
jPanel2.setLayout(new java.awt.GridBagLayout());
jLabel1.setText(bundle.getString("CTL_AlbumTitle.Text")); // NOI18N
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 0;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
jPanel2.add(jLabel1, gridBagConstraints);
albumTitlePane.setLayout(new java.awt.CardLayout());
albumTitleField.setColumns(30);
albumTitlePane.add(albumTitleField, "newAlbum");
albumTitlePane.add(albumTitleCombo, "existingAlbum");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 1;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.weightx = 1.0;
jPanel2.add(albumTitlePane, gridBagConstraints);
jLabel2.setText(bundle.getString("CTL_AlbumDescription.Text")); // NOI18N
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 2;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.insets = new java.awt.Insets(6, 0, 0, 0);
jPanel2.add(jLabel2, gridBagConstraints);
albumDescArea.setRows(5);
jScrollPane1.setViewportView(albumDescArea);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 3;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
jPanel2.add(jScrollPane1, gridBagConstraints);
jLabel3.setText(bundle.getString("CTL_AlbumPlaceTaken.Text")); // NOI18N
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 4;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.insets = new java.awt.Insets(6, 0, 0, 0);
jPanel2.add(jLabel3, gridBagConstraints);
albumPlaceField.setText(" ");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 5;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
jPanel2.add(albumPlaceField, gridBagConstraints);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 1;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.insets = new java.awt.Insets(12, 0, 0, 0);
add(jPanel2, gridBagConstraints);
org.jdesktop.layout.GroupLayout jPanel3Layout = new org.jdesktop.layout.GroupLayout(jPanel3);
jPanel3.setLayout(jPanel3Layout);
jPanel3Layout.setHorizontalGroup(
jPanel3Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
.add(0, 0, Short.MAX_VALUE)
);
jPanel3Layout.setVerticalGroup(
jPanel3Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
.add(0, 0, Short.MAX_VALUE)
);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 2;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
add(jPanel3, gridBagConstraints);
}// </editor-fold>//GEN-END:initComponents
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JTextArea albumDescArea;
private javax.swing.JTextField albumPlaceField;
private javax.swing.JComboBox albumTitleCombo;
private javax.swing.JTextField albumTitleField;
private javax.swing.JPanel albumTitlePane;
private javax.swing.JRadioButton existingAlbumRadio;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel3;
private javax.swing.JPanel jPanel1;
private javax.swing.JPanel jPanel2;
private javax.swing.JPanel jPanel3;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JRadioButton newAlbumRadio;
private javax.swing.ButtonGroup webAlbumButtonGroup;
// End of variables declaration//GEN-END:variables
private void initCustomComponents() {
albumTitleCombo.setModel(new DefaultComboBoxModel());
albumTitleCombo.setRenderer(createAlbumTitleRenderer());
ItemListener albumItemListener = new ItemListener() {
public void itemStateChanged(ItemEvent evt) {
if (evt.getStateChange() == ItemEvent.DESELECTED) {
return;
}
CardLayout cl = (CardLayout)(albumTitlePane.getLayout());
if (newAlbumRadio.isSelected()) {
cl.show(albumTitlePane, "newAlbum");
albumDescArea.setText("");
albumPlaceField.setText("");
albumDescArea.setEditable(true);
albumPlaceField.setEditable(true);
} else {
cl.show(albumTitlePane,"existingAlbum");
albumDescArea.setEditable(false);
albumPlaceField.setEditable(false);
// forcing to update
int index = albumTitleCombo.getSelectedIndex();
albumTitleCombo.setSelectedIndex(-1);
albumTitleCombo.setSelectedIndex(index);
}
}
};
newAlbumRadio.addItemListener(albumItemListener);
existingAlbumRadio.addItemListener(albumItemListener);
ItemListener albumTitleItemListener = new ItemListener() {
public void itemStateChanged(ItemEvent evt) {
if (updateAlbumList) {
return;
}
if (evt.getStateChange() == ItemEvent.DESELECTED) {
return;
}
int index = albumTitleCombo.getSelectedIndex();
if (index < 0) {
return;
}
AlbumEntry album = (AlbumEntry)albumTitleCombo.getSelectedItem();
albumDescArea.setText(album.getDescription().getPlainText());
albumPlaceField.setText(album.getLocation());
}
};
albumTitleCombo.addItemListener(albumTitleItemListener);
//albumTitleCombo.setSelectedIndex(-1);
//newAlbumRadio.setSelected(true);
}
private ListCellRenderer createAlbumTitleRenderer() {
return new DefaultListCellRenderer() {
@Override
public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
if (value != null) {
if (value instanceof AlbumEntry ) {
String title = ((AlbumEntry)value).getTitle().getPlainText();
return super.getListCellRendererComponent( list, title, index, isSelected, cellHasFocus );
}
}
return super.getListCellRendererComponent( list, value, index, isSelected, cellHasFocus );
}
};
}
public String getTitle() {
return bundle.getString("CTL_Title.Text");
}
public void setAlbums(List<AlbumEntry> albums) {
updateAlbumList = true;
this.albums = albums;
DefaultComboBoxModel comboModel = (DefaultComboBoxModel)albumTitleCombo.getModel();
comboModel.removeAllElements();
if (albums == null) {
updateAlbumList = false;
return;
}
for (int i=0; i<albums.size(); i++) {
comboModel.addElement(albums.get(i));
}
updateAlbumList = false;
}
public AlbumEntry getSelectedAlbum() {
if (isNewAlbum()) {
AlbumEntry album = new AlbumEntry();
album.setTitle(new PlainTextConstruct(albumTitleField.getText()));
album.setDescription(new PlainTextConstruct(albumDescArea.getText()));
album.setLocation(albumPlaceField.getText());
return album;
}
return (AlbumEntry)albumTitleCombo.getSelectedItem();
}
public boolean isNewAlbum() {
if (newAlbumRadio.isSelected()) {
return true;
}
return false;
}
}