| /* |
| * 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; |
| } |
| } |