X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;ds=sidebyside;f=src%2Fnet%2Fpterodactylus%2Fjsite%2Fgui%2FProjectPanel.java;h=03f91ccbed4fd96829dd0c93109a207f04a233e7;hb=dc08ba62be9bfe0fe0c55831f8cbba785c37881c;hp=13246f1e6c0d3c0024f6401e0c28df41999885de;hpb=34a047561daab16685702cfdf16716fc008106bd;p=jSite2.git diff --git a/src/net/pterodactylus/jsite/gui/ProjectPanel.java b/src/net/pterodactylus/jsite/gui/ProjectPanel.java index 13246f1..03f91cc 100644 --- a/src/net/pterodactylus/jsite/gui/ProjectPanel.java +++ b/src/net/pterodactylus/jsite/gui/ProjectPanel.java @@ -24,18 +24,25 @@ import java.awt.FlowLayout; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.Insets; +import java.awt.event.ActionEvent; +import java.util.List; import java.util.logging.Logger; import javax.swing.BorderFactory; import javax.swing.JButton; +import javax.swing.JFileChooser; +import javax.swing.JLabel; 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.i18n.I18n; import net.pterodactylus.jsite.i18n.I18nable; +import net.pterodactylus.jsite.i18n.gui.I18nAction; import net.pterodactylus.jsite.i18n.gui.I18nLabel; +import net.pterodactylus.jsite.project.Entry; import net.pterodactylus.jsite.project.Project; import net.pterodactylus.util.logging.Logging; @@ -58,6 +65,9 @@ public class ProjectPanel extends JPanel implements DocumentListener, I18nable { /** The project to show. */ private final Project project; + /** The “change base path” action. */ + private I18nAction changeBasePathAction; + /** The “name” label. */ private I18nLabel nameLabel; @@ -70,6 +80,15 @@ public class ProjectPanel extends JPanel implements DocumentListener, I18nable { /** The “description” textfield. */ private JTextField descriptionTextField; + /** The “base path” label. */ + private I18nLabel basePathLabel; + + /** The “base path” textfield. */ + private JTextField basePathTextField; + + /** The “base path information” label. */ + private JLabel basePathInformationLabel; + /** * Creates a new project panel. * @@ -82,6 +101,7 @@ public class ProjectPanel extends JPanel implements DocumentListener, I18nable { super(new BorderLayout(12, 12)); this.swingInterface = swingInterface; this.project = project; + initActions(); initComponents(); } @@ -103,6 +123,22 @@ public class ProjectPanel extends JPanel implements DocumentListener, I18nable { // /** + * Initializes all actions. + */ + private void initActions() { + changeBasePathAction = new I18nAction("projectPanel.button.changeBasePath") { + + /** + * {@inheritDoc} + */ + @SuppressWarnings("synthetic-access") + public void actionPerformed(ActionEvent actionEvent) { + changeBasePath(); + } + }; + } + + /** * Initializes all components of the panel. */ private void initComponents() { @@ -127,15 +163,25 @@ public class ProjectPanel extends JPanel implements DocumentListener, I18nable { 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)); + propertiesPanel.add(nameTextField, new GridBagConstraints(1, 0, 2, 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)); + propertiesPanel.add(descriptionTextField, new GridBagConstraints(1, 1, 2, 1, 1.0, 0.0, GridBagConstraints.LINE_START, GridBagConstraints.BOTH, new Insets(6, 6, 0, 0), 0, 0)); + + basePathTextField = new JTextField(project.getBasePath()); + basePathTextField.setEditable(false); + basePathLabel = new I18nLabel("projectPanel.label.basePath"); + basePathInformationLabel = new JLabel(""); + JButton changeBasePathButton = new JButton(changeBasePathAction); + propertiesPanel.add(basePathLabel, new GridBagConstraints(0, 2, 1, 1, 0.0, 0.0, GridBagConstraints.LINE_START, GridBagConstraints.BOTH, new Insets(6, 0, 0, 0), 0, 0)); + propertiesPanel.add(basePathTextField, new GridBagConstraints(1, 2, 1, 1, 1.0, 0.0, GridBagConstraints.LINE_START, GridBagConstraints.HORIZONTAL, new Insets(6, 6, 0, 0), 0, 0)); + propertiesPanel.add(changeBasePathButton, new GridBagConstraints(2, 2, 1, 1, 0.0, 0.0, GridBagConstraints.LINE_START, GridBagConstraints.BOTH, new Insets(6, 6, 0, 0), 0, 0)); + propertiesPanel.add(basePathInformationLabel, new GridBagConstraints(1, 3, 2, 1, 1.0, 0.0, GridBagConstraints.LINE_START, GridBagConstraints.NONE, new Insets(6, 6, 0, 0), 0, 0)); - propertiesPanel.add(new JPanel(), new GridBagConstraints(0, 2, 2, 1, 1.0, 1.0, GridBagConstraints.LINE_START, GridBagConstraints.BOTH, new Insets(0, 0, 0, 0), 0, 0)); + propertiesPanel.add(new JPanel(), new GridBagConstraints(0, 4, 3, 1, 1.0, 1.0, GridBagConstraints.LINE_START, GridBagConstraints.BOTH, new Insets(0, 0, 0, 0), 0, 0)); return propertiesPanel; } @@ -170,6 +216,38 @@ public class ProjectPanel extends JPanel implements DocumentListener, I18nable { } // + // PRIVATE ACTIONS + // + + /** + * Lets the user select a new base path and repopulates the file list. + */ + private void changeBasePath() { + JFileChooser fileChooser = new JFileChooser(project.getBasePath()); + fileChooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); + fileChooser.setApproveButtonText(I18n.get("projectPanel.button.approve.name")); + int chooseAction = fileChooser.showOpenDialog(this); + if (chooseAction == JFileChooser.APPROVE_OPTION) { + String newBasePath = fileChooser.getSelectedFile().getPath(); + basePathTextField.setText(newBasePath); + basePathInformationLabel.setText(I18n.get("projectPanel.basePathInformation.scanning")); + project.setBasePath(newBasePath); + swingInterface.getThreadPool().execute(new Runnable() { + + /** + * {@inheritDoc} + */ + @SuppressWarnings("synthetic-access") + public void run() { + project.rescanBasePath(); + List projectEntries = project.getBasePathEntries(); + basePathInformationLabel.setText(I18n.get("projectPanel.basePathInformation.fileCount", projectEntries.size())); + } + }); + } + } + + // // INTERFACE I18nable //