org.netbeans.modules.project.uiapi.DefaultProjectRenamePanel Maven / Gradle / Ivy
The newest version!
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package org.netbeans.modules.project.uiapi;
import java.awt.BorderLayout;
import java.awt.CardLayout;
import java.awt.GridBagConstraints;
import java.io.File;
import javax.swing.JComponent;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.UIManager;
import javax.swing.border.EmptyBorder;
import javax.swing.event.ChangeListener;
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;
import org.netbeans.api.progress.ProgressHandle;
import org.netbeans.api.progress.ProgressHandleFactory;
import org.netbeans.api.project.Project;
import org.netbeans.api.project.ProjectUtils;
import org.netbeans.modules.project.uiapi.DefaultProjectOperationsImplementation.InvalidablePanel;
import org.openide.filesystems.FileUtil;
import org.openide.util.ChangeSupport;
/**
* @author Jan Lahoda
*/
public class DefaultProjectRenamePanel extends javax.swing.JPanel implements DocumentListener, InvalidablePanel {
private Project project;
private final ChangeSupport changeSupport = new ChangeSupport(this);
private ProgressHandle handle;
private JComponent progressComponent;
private ProgressBar progressBar;
/**
* Creates new form DefaultProjectRenamePanel
*/
public DefaultProjectRenamePanel(ProgressHandle handle, Project project, String name) {
this.project = project;
this.handle = handle;
if (name == null) {
name = ProjectUtils.getInformation(project).getDisplayName();
}
initComponents();
projectName.setText(name);
projectName.getDocument().addDocumentListener(this);
updateProjectFolder();
validateDialog();
if (Boolean.getBoolean("org.netbeans.modules.project.uiapi.DefaultProjectOperations.showProgress")) {
((CardLayout) progress.getLayout()).show(progress, "progress");
}
}
private static class ProgressBar extends JPanel {
private JLabel label;
private static ProgressBar create(JComponent progress) {
ProgressBar instance = new ProgressBar();
instance.setLayout(new BorderLayout());
instance.label = new JLabel(" "); //NOI18N
instance.label.setBorder(new EmptyBorder(0, 0, 2, 0));
instance.add(instance.label, BorderLayout.NORTH);
instance.add(progress, BorderLayout.CENTER);
return instance;
}
public void setString(String value) {
label.setText(value);
}
private ProgressBar() {
}
}
public void addChangeListener(ChangeListener l) {
changeSupport.addChangeListener(l);
}
public void removeChangeListener(ChangeListener l) {
changeSupport.removeChangeListener(l);
}
/** 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.
*/
// //GEN-BEGIN:initComponents
private void initComponents() {
java.awt.GridBagConstraints gridBagConstraints;
jLabel1 = new javax.swing.JLabel();
projectFolderLabel = new javax.swing.JLabel();
projectName = new javax.swing.JTextField();
projectFolder = new javax.swing.JTextField();
alsoRenameFolder = new javax.swing.JCheckBox();
jLabel3 = new javax.swing.JLabel();
errorMessage = new javax.swing.JLabel();
progress = new javax.swing.JPanel();
jPanel4 = new javax.swing.JPanel();
progressImpl = new javax.swing.JPanel();
jLabel5 = new javax.swing.JLabel();
setMinimumSize(new java.awt.Dimension(225, 250));
setPreferredSize(new java.awt.Dimension(542, 250));
setLayout(new java.awt.GridBagLayout());
jLabel1.setLabelFor(projectName);
org.openide.awt.Mnemonics.setLocalizedText(jLabel1, org.openide.util.NbBundle.getMessage(DefaultProjectRenamePanel.class, "LBL_Project_Name")); // NOI18N
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 1;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.insets = new java.awt.Insets(12, 0, 0, 12);
add(jLabel1, gridBagConstraints);
projectFolderLabel.setLabelFor(projectFolder);
org.openide.awt.Mnemonics.setLocalizedText(projectFolderLabel, org.openide.util.NbBundle.getMessage(DefaultProjectRenamePanel.class, "LBL_Project_Folder")); // NOI18N
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 3;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.insets = new java.awt.Insets(6, 18, 0, 12);
add(projectFolderLabel, gridBagConstraints);
projectName.setColumns(30);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 1;
gridBagConstraints.gridy = 1;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.insets = new java.awt.Insets(12, 0, 0, 0);
add(projectName, gridBagConstraints);
projectName.getAccessibleContext().setAccessibleName(org.openide.util.NbBundle.getMessage(DefaultProjectRenamePanel.class, "ACSN_Project_Name", new Object[] {})); // NOI18N
projectName.getAccessibleContext().setAccessibleDescription(org.openide.util.NbBundle.getMessage(DefaultProjectRenamePanel.class, "ACSD_Project_Name", new Object[] {})); // NOI18N
projectFolder.setEditable(false);
projectFolder.setColumns(30);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 1;
gridBagConstraints.gridy = 3;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.insets = new java.awt.Insets(6, 0, 0, 0);
add(projectFolder, gridBagConstraints);
projectFolder.getAccessibleContext().setAccessibleName(org.openide.util.NbBundle.getMessage(DefaultProjectRenamePanel.class, "ACSN_Project_Folder", new Object[] {})); // NOI18N
projectFolder.getAccessibleContext().setAccessibleDescription(org.openide.util.NbBundle.getMessage(DefaultProjectRenamePanel.class, "ACSD_Project_Folder", new Object[] {})); // NOI18N
org.openide.awt.Mnemonics.setLocalizedText(alsoRenameFolder, org.openide.util.NbBundle.getMessage(DefaultProjectRenamePanel.class, "LBL_Also_Rename_Project_Folder")); // NOI18N
alsoRenameFolder.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
alsoRenameFolderActionPerformed(evt);
}
});
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 2;
gridBagConstraints.gridwidth = 2;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.insets = new java.awt.Insets(12, 0, 0, 0);
add(alsoRenameFolder, gridBagConstraints);
alsoRenameFolder.getAccessibleContext().setAccessibleName(org.openide.util.NbBundle.getMessage(DefaultProjectRenamePanel.class, "ACSN_Also_Rename_Project_Folder", new Object[] {})); // NOI18N
alsoRenameFolder.getAccessibleContext().setAccessibleDescription(org.openide.util.NbBundle.getMessage(DefaultProjectRenamePanel.class, "ACSD_Also_Rename_Project_Folder", new Object[] {})); // NOI18N
org.openide.awt.Mnemonics.setLocalizedText(jLabel3, org.openide.util.NbBundle.getMessage(DefaultProjectRenamePanel.class, "LBL_Rename_Dialog_Text", new Object[] {ProjectUtils.getInformation(project).getDisplayName()})); // NOI18N
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridwidth = 2;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
add(jLabel3, gridBagConstraints);
errorMessage.setForeground(UIManager.getColor("nb.errorForeground"));
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 4;
gridBagConstraints.gridwidth = 2;
gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.weightx = 1.0;
gridBagConstraints.insets = new java.awt.Insets(12, 0, 0, 0);
add(errorMessage, gridBagConstraints);
progress.setLayout(new java.awt.CardLayout());
progress.add(jPanel4, "not-progress");
progressImpl.add(progressComponent = ProgressHandleFactory.createProgressComponent(handle));
progressImpl.setMinimumSize(new java.awt.Dimension(121, 17));
progressImpl.setPreferredSize(new java.awt.Dimension(121, 17));
progressImpl.setLayout(new java.awt.GridBagLayout());
org.openide.awt.Mnemonics.setLocalizedText(jLabel5, org.openide.util.NbBundle.getMessage(DefaultProjectRenamePanel.class, "LBL_Renaming_Project", new Object[] {})); // NOI18N
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridheight = java.awt.GridBagConstraints.REMAINDER;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
gridBagConstraints.weightx = 1.0;
progressImpl.add(jLabel5, gridBagConstraints);
progress.add(progressImpl, "progress");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 6;
gridBagConstraints.gridwidth = 2;
gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.weightx = 1.0;
gridBagConstraints.weighty = 1.0;
gridBagConstraints.insets = new java.awt.Insets(12, 0, 0, 0);
add(progress, gridBagConstraints);
getAccessibleContext().setAccessibleDescription(org.openide.util.NbBundle.getMessage(DefaultProjectRenamePanel.class, "ACSD_Project_Rename", new Object[] {})); // NOI18N
}// //GEN-END:initComponents
private void alsoRenameFolderActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_alsoRenameFolderActionPerformed
updateProjectFolder();
validateDialog();
}//GEN-LAST:event_alsoRenameFolderActionPerformed
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JCheckBox alsoRenameFolder;
private javax.swing.JLabel errorMessage;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel3;
private javax.swing.JLabel jLabel5;
private javax.swing.JPanel jPanel4;
private javax.swing.JPanel progress;
private javax.swing.JPanel progressImpl;
private javax.swing.JTextField projectFolder;
private javax.swing.JLabel projectFolderLabel;
private javax.swing.JTextField projectName;
// End of variables declaration//GEN-END:variables
public String getNewName() {
return projectName.getText();
}
public boolean getRenameProjectFolder() {
return alsoRenameFolder.isSelected();
}
public void changedUpdate(DocumentEvent e) {
//ignored
}
public void insertUpdate(DocumentEvent e) {
updateProjectFolder();
validateDialog();
}
public void removeUpdate(DocumentEvent e) {
updateProjectFolder();
validateDialog();
}
private void updateProjectFolder() {
File location = FileUtil.toFile(project.getProjectDirectory().getParent());
File projectFolderFile;
if (alsoRenameFolder.isSelected()) {
projectFolderFile = new File(location, projectName.getText());
} else {
projectFolderFile = new File(location, project.getProjectDirectory().getNameExt());
}
projectFolder.setText(projectFolderFile.getAbsolutePath());
}
public boolean isPanelValid() {
return " ".equals(errorMessage.getText());
}
private void validateDialog() {
String newError = computeError();
boolean changed = false;
String currentError = errorMessage.getText();
newError = newError != null ? newError : " ";
changed = !currentError.equals(newError);
errorMessage.setText(newError);
if (changed) {
changeSupport.fireChange();
}
}
private String computeError() {
File location = FileUtil.toFile(project.getProjectDirectory().getParent());
return DefaultProjectOperationsImplementation.computeError(location, projectName.getText(), !getRenameProjectFolder());
}
public void showProgress() {
projectFolder.setEnabled(false);
projectName.setEnabled(false);
alsoRenameFolder.setEnabled(false);
progress.setVisible(true);
((CardLayout) progress.getLayout()).last(progress);
}
protected void addProgressBar() {
progressBar = ProgressBar.create(progressComponent); //NOI18N
GridBagConstraints gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.anchor = java.awt.GridBagConstraints.SOUTH;
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 1;
progressImpl.add(progressBar, gridBagConstraints);
progressImpl.repaint();
progressImpl.revalidate();
}
protected void removeProgressBar() {
progressImpl.remove(progressBar);
}
}