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 DocumentEditor extends MetaEditorPanel { private JLabel titleLabel; private LimeTextField titleTextField; private JLabel topicLabel; private LimeTextField topicTextField; private JLabel authorLabel; private LimeTextField authorTextField; private JLabel licenseTypeLabel; private JComboBox licenseTypeComboBox; private JLabel licenseLabel; private LimeTextField licenseTextField; private String title = null; private boolean titleEdited = false; public DocumentEditor(FileDesc fd, LimeXMLSchema schema, LimeXMLDocument document) { super(fd, schema, document); super.setName(MetaEditorUtil.getStringResource(LimeXMLNames.DOCUMENT)); 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.DOCUMENT_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; topicLabel = new JLabel(MetaEditorUtil.getStringResource(LimeXMLNames.DOCUMENT_TOPIC)); add(topicLabel,mainConstr); mainConstr.insets = new Insets(0,10,2,2); mainConstr.gridy=3; topicTextField = new LimeTextField(24); add(topicTextField,mainConstr); mainConstr.gridy=4; licenseLabel = new JLabel(MetaEditorUtil.getStringResource(LimeXMLNames.DOCUMENT_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); authorLabel = new JLabel(MetaEditorUtil.getStringResource(LimeXMLNames.DOCUMENT_AUTHOR)); add(authorLabel,mainConstr); mainConstr.insets = new Insets(0,10,2,2); mainConstr.gridy=1; authorTextField = new LimeTextField(24); add(authorTextField,mainConstr); mainConstr.insets = new Insets(5,10,0,2); mainConstr.gridy=2; licenseTypeLabel = new JLabel(MetaEditorUtil.getStringResource(LimeXMLNames.DOCUMENT_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.DOCUMENT_TITLE, titleTextField); addComponent(LimeXMLNames.DOCUMENT_TOPIC, topicTextField); addComponent(LimeXMLNames.DOCUMENT_AUTHOR, authorTextField); addComponent(LimeXMLNames.DOCUMENT_LICENSETYPE, licenseTypeComboBox); addComponent(LimeXMLNames.DOCUMENT_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; } }); } }