blob: f242f3e6ea79bf8aa708acf103c94bfe27f29b41 [file] [log] [blame]
/*
* Copyright 2000-2012 JetBrains s.r.o.
*
* Licensed 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.jetbrains.idea.maven.project;
import com.intellij.ide.util.projectWizard.WizardContext;
import com.intellij.openapi.fileChooser.FileChooserDescriptorFactory;
import com.intellij.openapi.ui.TextFieldWithBrowseButton;
import com.intellij.openapi.updateSettings.impl.LabelTextReplacingUtil;
import com.intellij.openapi.util.io.FileUtil;
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.projectImport.ProjectFormatPanel;
import com.intellij.ui.EnumComboBoxModel;
import com.intellij.ui.ListCellRendererWrapper;
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class MavenImportingSettingsForm {
private JPanel myPanel;
private JCheckBox mySearchRecursivelyCheckBox;
private JLabel myProjectFormatLabel;
private JComboBox myProjectFormatComboBox;
private ProjectFormatPanel myProjectFormatPanel;
private JCheckBox mySeparateModulesDirCheckBox;
private TextFieldWithBrowseButton mySeparateModulesDirChooser;
private JCheckBox myImportAutomaticallyBox;
private JCheckBox myCreateModulesForAggregators;
private JCheckBox myCreateGroupsCheckBox;
private JComboBox myUpdateFoldersOnImportPhaseComboBox;
private JCheckBox myKeepSourceFoldersCheckBox;
private JCheckBox myUseMavenOutputCheckBox;
private JCheckBox myDownloadSourcesCheckBox;
private JCheckBox myDownloadDocsCheckBox;
private JPanel myAdditionalSettingsPanel;
private JComboBox myGeneratedSourcesComboBox;
private JCheckBox myExcludeTargetFolderCheckBox;
private JTextField myDependencyTypes;
public MavenImportingSettingsForm(boolean isImportStep, boolean isCreatingNewProject) {
mySearchRecursivelyCheckBox.setVisible(isImportStep);
myProjectFormatLabel.setVisible(isImportStep && isCreatingNewProject);
myProjectFormatComboBox.setVisible(isImportStep && isCreatingNewProject);
ActionListener listener = new ActionListener() {
public void actionPerformed(ActionEvent e) {
updateControls();
}
};
mySeparateModulesDirCheckBox.addActionListener(listener);
mySeparateModulesDirChooser.addBrowseFolderListener(ProjectBundle.message("maven.import.title.module.dir"), "", null,
FileChooserDescriptorFactory.createSingleFolderDescriptor());
myUpdateFoldersOnImportPhaseComboBox.setModel(new DefaultComboBoxModel(MavenImportingSettings.UPDATE_FOLDERS_PHASES));
myGeneratedSourcesComboBox.setModel(new EnumComboBoxModel<MavenImportingSettings.GeneratedSourcesFolder>(MavenImportingSettings.GeneratedSourcesFolder.class));
myGeneratedSourcesComboBox.setRenderer(new ListCellRendererWrapper() {
@Override
public void customize(JList list, Object value, int index, boolean selected, boolean hasFocus) {
if (value instanceof MavenImportingSettings.GeneratedSourcesFolder) {
setText(((MavenImportingSettings.GeneratedSourcesFolder)value).title);
}
}
});
LabelTextReplacingUtil.replaceText(myPanel);
}
private void createUIComponents() {
myProjectFormatPanel = new ProjectFormatPanel();
myProjectFormatComboBox = myProjectFormatPanel.getStorageFormatComboBox();
}
private void updateControls() {
boolean useSeparateDir = mySeparateModulesDirCheckBox.isSelected();
mySeparateModulesDirChooser.setEnabled(useSeparateDir);
if (useSeparateDir && StringUtil.isEmptyOrSpaces(mySeparateModulesDirChooser.getText())) {
mySeparateModulesDirChooser.setText(FileUtil.toSystemDependentName(getDefaultModuleDir()));
}
}
public String getDefaultModuleDir() {
return "";
}
public JComponent createComponent() {
return myPanel;
}
public void getData(MavenImportingSettings data) {
data.setLookForNested(mySearchRecursivelyCheckBox.isSelected());
data.setDedicatedModuleDir(mySeparateModulesDirCheckBox.isSelected() ? mySeparateModulesDirChooser.getText() : "");
data.setImportAutomatically(myImportAutomaticallyBox.isSelected());
data.setCreateModulesForAggregators(myCreateModulesForAggregators.isSelected());
data.setCreateModuleGroups(myCreateGroupsCheckBox.isSelected());
data.setKeepSourceFolders(myKeepSourceFoldersCheckBox.isSelected());
data.setExcludeTargetFolder(myExcludeTargetFolderCheckBox.isSelected());
data.setUseMavenOutput(myUseMavenOutputCheckBox.isSelected());
data.setUpdateFoldersOnImportPhase((String)myUpdateFoldersOnImportPhaseComboBox.getSelectedItem());
data.setGeneratedSourcesFolder((MavenImportingSettings.GeneratedSourcesFolder)myGeneratedSourcesComboBox.getSelectedItem());
data.setDownloadSourcesAutomatically(myDownloadSourcesCheckBox.isSelected());
data.setDownloadDocsAutomatically(myDownloadDocsCheckBox.isSelected());
data.setDependencyTypes(myDependencyTypes.getText());
}
public void setData(MavenImportingSettings data) {
mySearchRecursivelyCheckBox.setSelected(data.isLookForNested());
mySeparateModulesDirCheckBox.setSelected(!StringUtil.isEmptyOrSpaces(data.getDedicatedModuleDir()));
mySeparateModulesDirChooser.setText(data.getDedicatedModuleDir());
myImportAutomaticallyBox.setSelected(data.isImportAutomatically());
myCreateModulesForAggregators.setSelected(data.isCreateModulesForAggregators());
myCreateGroupsCheckBox.setSelected(data.isCreateModuleGroups());
myKeepSourceFoldersCheckBox.setSelected(data.isKeepSourceFolders());
myExcludeTargetFolderCheckBox.setSelected(data.isExcludeTargetFolder());
myUseMavenOutputCheckBox.setSelected(data.isUseMavenOutput());
myUpdateFoldersOnImportPhaseComboBox.setSelectedItem(data.getUpdateFoldersOnImportPhase());
myGeneratedSourcesComboBox.setSelectedItem(data.getGeneratedSourcesFolder());
myDownloadSourcesCheckBox.setSelected(data.isDownloadSourcesAutomatically());
myDownloadDocsCheckBox.setSelected(data.isDownloadDocsAutomatically());
myDependencyTypes.setText(data.getDependencyTypes());
updateControls();
}
public boolean isModified(MavenImportingSettings settings) {
MavenImportingSettings formData = new MavenImportingSettings();
getData(formData);
return !formData.equals(settings);
}
public void updateData(WizardContext wizardContext) {
myProjectFormatPanel.updateData(wizardContext);
}
public JPanel getAdditionalSettingsPanel() {
return myAdditionalSettingsPanel;
}
}