X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fnet%2Fpterodactylus%2Fjsite%2Fgui%2FProjectPanel.java;h=9a2e62b720bca17f0c7d59dbf39230460df9fe8c;hb=ecf74feba089fac5fc952219ba864306bfdd2220;hp=dd2701650e4ce2498afa30e74b206b60af807f67;hpb=90f3a1c8e0c85f19c82130e49d7a605cb9e55286;p=jSite2.git diff --git a/src/net/pterodactylus/jsite/gui/ProjectPanel.java b/src/net/pterodactylus/jsite/gui/ProjectPanel.java index dd27016..9a2e62b 100644 --- a/src/net/pterodactylus/jsite/gui/ProjectPanel.java +++ b/src/net/pterodactylus/jsite/gui/ProjectPanel.java @@ -21,13 +21,23 @@ package net.pterodactylus.jsite.gui; import java.awt.BorderLayout; import java.awt.FlowLayout; +import java.awt.GridBagConstraints; import java.awt.GridBagLayout; +import java.awt.Insets; +import java.util.logging.Logger; import javax.swing.BorderFactory; import javax.swing.JButton; import javax.swing.JPanel; +import javax.swing.JTextField; +import javax.swing.event.DocumentEvent; +import javax.swing.event.DocumentListener; +import javax.swing.text.Document; -import net.pterodactylus.jsite.core.Project; +import net.pterodactylus.jsite.i18n.I18nable; +import net.pterodactylus.jsite.i18n.gui.I18nLabel; +import net.pterodactylus.jsite.project.Project; +import net.pterodactylus.util.logging.Logging; /** * A panel that contains all information about a project and lets the user edit @@ -36,18 +46,37 @@ import net.pterodactylus.jsite.core.Project; * @author David ‘Bombe’ Roden <bombe@freenetproject.org> * @version $Id$ */ -public class ProjectPanel extends JPanel { +public class ProjectPanel extends JPanel implements DocumentListener, I18nable { + + /** Logger. */ + @SuppressWarnings("unused") + private static final Logger logger = Logging.getLogger(ProjectPanel.class.getName()); /** The Swing interface. */ private final SwingInterface swingInterface; + + /** The project to show. */ private final Project project; + /** The “name” label. */ + private I18nLabel nameLabel; + + /** The “name” textfield. */ + private JTextField nameTextField; + + /** The “description” label. */ + private I18nLabel descriptionLabel; + + /** The “description” textfield. */ + private JTextField descriptionTextField; + /** * Creates a new project panel. * * @param swingInterface * The Swing interface - * @param project The project to display + * @param project + * The project to display */ public ProjectPanel(SwingInterface swingInterface, Project project) { super(new BorderLayout(12, 12)); @@ -55,13 +84,14 @@ public class ProjectPanel extends JPanel { this.project = project; initComponents(); } - + // // ACCESSORS // - + /** * Returns the project that is displayed in this panel. + * * @return The project of this panel */ public Project getProject() { @@ -93,6 +123,18 @@ public class ProjectPanel extends JPanel { private JPanel createPropertiesPanel() { JPanel propertiesPanel = new JPanel(new GridBagLayout()); + nameTextField = new JTextField(project.getName()); + nameTextField.getDocument().addDocumentListener(this); + nameLabel = new I18nLabel("projectPanel.label.name", nameTextField); + propertiesPanel.add(nameLabel, new GridBagConstraints(0, 0, 1, 1, 0.0, 0.0, GridBagConstraints.LINE_START, GridBagConstraints.BOTH, new Insets(0, 0, 0, 0), 0, 0)); + propertiesPanel.add(nameTextField, new GridBagConstraints(1, 0, 1, 1, 1.0, 0.0, GridBagConstraints.LINE_START, GridBagConstraints.BOTH, new Insets(0, 6, 0, 0), 0, 0)); + + descriptionTextField = new JTextField(project.getDescription()); + descriptionTextField.getDocument().addDocumentListener(this); + descriptionLabel = new I18nLabel("projectPanel.label.description", descriptionTextField); + propertiesPanel.add(descriptionLabel, new GridBagConstraints(0, 1, 1, 1, 0.0, 0.0, GridBagConstraints.LINE_START, GridBagConstraints.BOTH, new Insets(6, 0, 0, 0), 0, 0)); + propertiesPanel.add(descriptionTextField, new GridBagConstraints(1, 1, 1, 1, 1.0, 0.0, GridBagConstraints.LINE_START, GridBagConstraints.BOTH, new Insets(6, 6, 0, 0), 0, 0)); + return propertiesPanel; } @@ -111,4 +153,55 @@ public class ProjectPanel extends JPanel { return buttonPanel; } + /** + * Updates the project from changes in the text fields. + * + * @param document + * The document that was changed + */ + private void textFieldsUpdated(Document document) { + if (nameTextField.getDocument() == document) { + project.setName(nameTextField.getText()); + } else if (descriptionTextField.getDocument() == document) { + project.setDescription(descriptionTextField.getText()); + } + } + + // + // INTERFACE I18nable + // + + /** + * {@inheritDoc} + */ + public void updateI18n() { + nameLabel.updateI18n(); + descriptionLabel.updateI18n(); + } + + // + // INTERFACE DocumentListener + // + + /** + * {@inheritDoc} + */ + public void changedUpdate(DocumentEvent documentEvent) { + textFieldsUpdated(documentEvent.getDocument()); + } + + /** + * {@inheritDoc} + */ + public void insertUpdate(DocumentEvent documentEvent) { + textFieldsUpdated(documentEvent.getDocument()); + } + + /** + * {@inheritDoc} + */ + public void removeUpdate(DocumentEvent documentEvent) { + textFieldsUpdated(documentEvent.getDocument()); + } + }