package com.limegroup.gnutella.gui.xml.editor; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.Insets; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; import javax.swing.JComboBox; import javax.swing.JLabel; import com.limegroup.gnutella.FileDesc; import com.limegroup.gnutella.gui.LimeTextField; import com.limegroup.gnutella.gui.xml.ComboBoxValue; import com.limegroup.gnutella.licenses.CCConstants; import com.limegroup.gnutella.xml.LimeXMLDocument; import com.limegroup.gnutella.xml.LimeXMLNames; import com.limegroup.gnutella.xml.LimeXMLSchema; public class ImageEditor extends MetaEditorPanel { private JLabel titleLabel; private LimeTextField titleTextField; private JLabel descriptionLabel; private LimeTextField descriptionTextField; private JLabel artistLabel; private LimeTextField artistTextField; private JLabel licenseTypeLabel; private JComboBox licenseTypeComboBox; private JLabel licenseLabel; private LimeTextField licenseTextField; private String title = null; private boolean titleEdited = false; public ImageEditor(FileDesc fd, LimeXMLSchema schema, LimeXMLDocument document) { super(fd, schema, document); super.setName(MetaEditorUtil.getStringResource(LimeXMLNames.IMAGE)); init(); initLocalFields(); } public boolean hasChanged() { return (titleEdited || super.hasChanged()); } public void prepareSave() { if (title != null) { String text = titleTextField.getText().trim(); if (text.equals("")) { titleTextField.setText(title); } } } private void init() { setLayout(new GridBagLayout()); GridBagConstraints mainConstr = new GridBagConstraints(); mainConstr.insets = new Insets(2,10,0,2); mainConstr.anchor = GridBagConstraints.WEST; mainConstr.insets = new Insets(5,10,0,2); titleLabel = new JLabel(MetaEditorUtil.getStringResource(LimeXMLNames.IMAGE_TITLE)); add(titleLabel,mainConstr); mainConstr.insets = new Insets(0,10,2,2); mainConstr.gridy=1; titleTextField = new LimeTextField(24); add(titleTextField,mainConstr); mainConstr.insets = new Insets(5,10,0,2); mainConstr.gridy=2; descriptionLabel = new JLabel(MetaEditorUtil.getStringResource(LimeXMLNames.IMAGE_DESCRIPTION)); add(descriptionLabel,mainConstr); mainConstr.insets = new Insets(0,10,2,2); mainConstr.gridy=3; descriptionTextField = new LimeTextField(24); add(descriptionTextField,mainConstr); mainConstr.gridy=4; licenseLabel = new JLabel(MetaEditorUtil.getStringResource(LimeXMLNames.IMAGE_LICENSE)); add(licenseLabel,mainConstr); mainConstr.insets = new Insets(0,10,2,2); mainConstr.gridy=5; licenseTextField = new LimeTextField(24); licenseTextField.setEnabled(false); add(licenseTextField,mainConstr); //right side mainConstr.gridx=1; mainConstr.gridy=0; mainConstr.insets = new Insets(5,10,0,2); artistLabel = new JLabel(MetaEditorUtil.getStringResource(LimeXMLNames.IMAGE_ARTIST)); add(artistLabel,mainConstr); mainConstr.insets = new Insets(0,10,2,2); mainConstr.gridy=1; artistTextField = new LimeTextField(24); add(artistTextField,mainConstr); mainConstr.insets = new Insets(5,10,0,2); mainConstr.gridy=2; licenseTypeLabel = new JLabel(MetaEditorUtil.getStringResource(LimeXMLNames.IMAGE_LICENSETYPE)); add(licenseTypeLabel,mainConstr); mainConstr.insets = new Insets(0,10,2,2); mainConstr.gridy=3; licenseTypeComboBox = new JComboBox(); add(licenseTypeComboBox,mainConstr); } private void initLocalFields() { addComponent(LimeXMLNames.IMAGE_TITLE, titleTextField); addComponent(LimeXMLNames.IMAGE_ARTIST, artistTextField); addComponent(LimeXMLNames.IMAGE_DESCRIPTION, descriptionTextField); addComponent(LimeXMLNames.IMAGE_LICENSETYPE, licenseTypeComboBox); addComponent(LimeXMLNames.IMAGE_LICENSE, licenseTextField); initFields(); //show license only if the file has a Creative Commons license ComboBoxValue val = (ComboBoxValue)licenseTypeComboBox.getSelectedItem(); if(val==null || !(val.equals(new ComboBoxValue(CCConstants.CC_URI_PREFIX)))){ licenseTextField.setVisible(false); licenseLabel.setVisible(false); } titleTextField.addKeyListener(new KeyAdapter() { public void keyTyped(KeyEvent evt) { titleEdited = true; } }); } }