package org.netbeans.gradle.project.properties.ui; import java.io.File; import java.nio.charset.Charset; import java.nio.file.Paths; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.Objects; import javax.swing.ComboBoxModel; import javax.swing.DefaultComboBoxModel; import javax.swing.JCheckBox; import javax.swing.JComponent; import javax.swing.JPanel; import javax.swing.filechooser.FileNameExtensionFilter; import org.jtrim.utils.ExceptionHelper; import org.netbeans.api.java.platform.JavaPlatform; import org.netbeans.api.java.platform.JavaPlatformManager; import org.netbeans.api.java.platform.Specification; import org.netbeans.gradle.project.NbGradleProject; import org.netbeans.gradle.project.NbStrings; import org.netbeans.gradle.project.api.config.ActiveSettingsQuery; import org.netbeans.gradle.project.api.config.PropertyReference; import org.netbeans.gradle.project.api.config.ui.CustomizerCategoryId; import org.netbeans.gradle.project.api.config.ui.ProfileBasedSettingsCategory; import org.netbeans.gradle.project.api.config.ui.ProfileBasedSettingsPage; import org.netbeans.gradle.project.api.config.ui.ProfileBasedSettingsPageFactory; import org.netbeans.gradle.project.api.config.ui.ProfileEditor; import org.netbeans.gradle.project.api.config.ui.ProfileEditorFactory; import org.netbeans.gradle.project.api.config.ui.ProfileInfo; import org.netbeans.gradle.project.api.config.ui.StoredSettings; import org.netbeans.gradle.project.api.entry.GradleProjectPlatformQuery; import org.netbeans.gradle.project.api.entry.ProjectPlatform; import org.netbeans.gradle.project.properties.GradleLocation; import org.netbeans.gradle.project.properties.GradleLocationDef; import org.netbeans.gradle.project.properties.GradleLocationRef; import org.netbeans.gradle.project.properties.NbGradleCommonProperties; import org.netbeans.gradle.project.properties.PlatformSelectionMode; import org.netbeans.gradle.project.properties.ScriptPlatform; import org.netbeans.gradle.project.properties.global.CommonGlobalSettings; import org.netbeans.gradle.project.properties.global.PlatformOrder; import org.netbeans.gradle.project.properties.standard.SourceEncodingProperty; import org.netbeans.gradle.project.properties.standard.UserInitScriptPath; import org.netbeans.gradle.project.tasks.vars.StringResolver; import org.netbeans.gradle.project.tasks.vars.StringResolvers; import org.netbeans.gradle.project.util.NbFileUtils; import org.netbeans.gradle.project.util.NbGuiUtils; import org.netbeans.spi.project.ui.support.ProjectCustomizer; import org.openide.filesystems.FileChooserBuilder; import org.openide.modules.SpecificationVersion; import org.openide.util.Lookup; @SuppressWarnings("serial") public class CommonProjectPropertiesPanel extends JPanel implements ProfileEditorFactory { public static final CustomizerCategoryId CATEGORY_ID = new CustomizerCategoryId( CommonProjectPropertiesPanel.class.getName() + ".settings", NbStrings.getGradleProjectCategoryName()); private final NbGradleProject project; private PropertyRefs currentValues; private GradleLocationDef selectedGradleLocation; private CommonProjectPropertiesPanel(NbGradleProject project) { this.project = project; currentValues = null; selectedGradleLocation = null; initComponents(); @SuppressWarnings("unchecked") ComboBoxModel<Charset> sourceEncodingModel = (ComboBoxModel<Charset>)ProjectCustomizer.encodingModel( SourceEncodingProperty.DEFAULT_SOURCE_ENCODING.name()); jSourceEncoding.setModel(sourceEncodingModel); setupEnableDisable(); } public static ProfileBasedSettingsCategory createSettingsCategory(final NbGradleProject project) { ExceptionHelper.checkNotNullArgument(project, "project"); return new ProfileBasedSettingsCategory(CATEGORY_ID, new ProfileBasedSettingsPageFactory() { @Override public ProfileBasedSettingsPage createSettingsPage() { return CommonProjectPropertiesPanel.createSettingsPage(project); } }); } public static ProfileBasedSettingsPage createSettingsPage(NbGradleProject project) { CommonProjectPropertiesPanel result = new CommonProjectPropertiesPanel(project); return new ProfileBasedSettingsPage(result, result); } @Override public ProfileEditor startEditingProfile(ProfileInfo profileInfo, ActiveSettingsQuery profileQuery) { return new PropertyRefs(project, profileInfo, profileQuery); } private static <Value> Value setInheritAndGetValue( Value value, PropertyReference<? extends Value> valueWitFallbacks, JCheckBox inheritCheck) { inheritCheck.setSelected(value == null); return value != null ? value : valueWitFallbacks.getActiveValue(); } private static void setupInheritCheck(final JCheckBox inheritCheck, JComponent... components) { NbGuiUtils.enableBasedOnCheck(inheritCheck, false, components); } private void setupEnableDisable() { setupInheritCheck(jScriptPlatformInherit, jScriptPlatformCombo); setupInheritCheck(jGradleHomeInherit, jGradleHomeEdit, jGradleHomeChangeButton); setupInheritCheck(jPlatformComboInherit, jPlatformCombo); setupInheritCheck(jSourceEncodingInherit, jSourceEncoding); setupInheritCheck(jSourceLevelComboInherit, jSourceLevelCombo); setupInheritCheck(jUserInitScriptInherit, jUserInitScript, jUserInitScriptBrowseButton); } private void fillProjectPlatformCombo() { List<ProjectPlatformComboItem> comboItems = new ArrayList<>(); for (GradleProjectPlatformQuery query: Lookup.getDefault().lookupAll(GradleProjectPlatformQuery.class)) { for (ProjectPlatform platform: query.getAvailablePlatforms()) { comboItems.add(new ProjectPlatformComboItem(platform)); } } jPlatformCombo.setModel(new DefaultComboBoxModel<>(comboItems.toArray(new ProjectPlatformComboItem[comboItems.size()]))); } private void refreshScriptPlatformCombo(boolean selectByVersion) { JavaPlatformComboItem currentSelection = (JavaPlatformComboItem)jScriptPlatformCombo.getSelectedItem(); fillScriptPlatformCombo(selectByVersion); jScriptPlatformCombo.setSelectedItem(new JavaPlatformComboItem( currentSelection.getPlatform(), toSelectionMode(selectByVersion))); } private void refreshTargetPlatformCombo() { Object currentSelection = jPlatformCombo.getSelectedItem(); fillProjectPlatformCombo(); jPlatformCombo.setSelectedItem(currentSelection); } private void refreshPlatformCombos(PropertyRefs properties) { refreshScriptPlatformCombo(properties.isSelectByVersion()); refreshTargetPlatformCombo(); } private static PlatformOrder order() { return CommonGlobalSettings.getDefault().platformPreferenceOrder().getActiveValue(); } private List<JavaPlatform> getPlatforms(boolean selectByVersion) { JavaPlatform[] platforms = JavaPlatformManager.getDefault().getInstalledPlatforms(); if (selectByVersion) { return order().filterIndistinguishable(platforms); } else { return Arrays.asList(platforms); } } private static PlatformSelectionMode toSelectionMode(boolean selectByVersion) { return selectByVersion ? PlatformSelectionMode.BY_VERSION : PlatformSelectionMode.BY_LOCATION; } private StringResolver getLocationResolver() { return StringResolvers.getDefaultResolverSelector().getProjectResolver(project, Lookup.EMPTY); } private GradleLocation tryGetLocation(GradleLocationDef locationDef) { if (locationDef == null) { return null; } StringResolver resolver = getLocationResolver(); return locationDef.getLocation(resolver); } private String getLocationStr(GradleLocationDef locationDef) { GradleLocation location = tryGetLocation(locationDef); return location != null ? location.toLocalizedString() : ""; } private void selectGradleLocation(GradleLocationDef newLocationDef) { selectedGradleLocation = newLocationDef; jGradleHomeEdit.setText(getLocationStr(newLocationDef)); } private void fillScriptPlatformCombo(boolean selectByVersion) { PlatformSelectionMode selectionMode = toSelectionMode(selectByVersion); List<JavaPlatform> platforms = getPlatforms(selectByVersion); List<JavaPlatformComboItem> comboItems = new ArrayList<>(platforms.size()); for (JavaPlatform platform: platforms) { Specification specification = platform.getSpecification(); if (specification != null && specification.getVersion() != null) { comboItems.add(new JavaPlatformComboItem(platform, selectionMode)); } } jScriptPlatformCombo.setModel(new DefaultComboBoxModel<>(comboItems.toArray(new JavaPlatformComboItem[comboItems.size()]))); } private Charset getSelectedSourceEncoding(PropertyRefs properties) { if (jSourceEncodingInherit.isSelected()) { return null; } Object selected = jSourceEncoding.getSelectedItem(); if (selected instanceof Charset) { return (Charset)selected; } return properties.sourceEncodingRef.tryGetValueWithoutFallback(); } private GradleLocationDef getGradleLocation() { GradleLocationDef gradleHome = selectedGradleLocation; return jGradleHomeInherit.isSelected() ? null : gradleHome; } private String getSourceLevel() { return jSourceLevelComboInherit.isSelected() ? null : (String)jSourceLevelCombo.getSelectedItem(); } private UserInitScriptPath getUserInitScript() { if (jUserInitScriptInherit.isSelected()) { return null; } String userInitScriptStr = jUserInitScript.getText().trim(); if (userInitScriptStr.isEmpty()) { return null; } return new UserInitScriptPath(Paths.get(userInitScriptStr)); } private ProjectPlatform getTargetPlaform(PropertyRefs properties) { if (jPlatformComboInherit.isSelected()) { return null; } ProjectPlatformComboItem selected = (ProjectPlatformComboItem)jPlatformCombo.getSelectedItem(); return selected != null ? selected.getPlatform() : properties.targetPlatformRef.tryGetValueWithoutFallback(); } private ScriptPlatform getScriptPlatform(PropertyRefs properties) { if (jScriptPlatformInherit.isSelected()) { return null; } JavaPlatformComboItem selectedScriptPlatform = (JavaPlatformComboItem)jScriptPlatformCombo.getSelectedItem(); if (selectedScriptPlatform != null) { PlatformSelectionMode selectionMode = toSelectionMode(properties.isSelectByVersion()); JavaPlatform rawScriptPlatform = selectedScriptPlatform.getPlatform(); return rawScriptPlatform != null ? new ScriptPlatform(rawScriptPlatform, selectionMode) : null; } else { return properties.scriptPlatformRef.tryGetValueWithoutFallback(); } } private final class PropertyRefs implements ProfileEditor { private final PropertyReference<GradleLocationDef> gradleLocationRef; private final PropertyReference<ScriptPlatform> scriptPlatformRef; private final PropertyReference<Charset> sourceEncodingRef; private final PropertyReference<ProjectPlatform> targetPlatformRef; private final PropertyReference<String> sourceLevelRef; private final PropertyReference<UserInitScriptPath> userInitScriptPathRef; private final ProfileInfo profileInfo; public PropertyRefs( NbGradleProject ownerProject, ProfileInfo profileInfo, ActiveSettingsQuery settingsQuery) { this.gradleLocationRef = NbGradleCommonProperties.gradleLocation(settingsQuery); this.scriptPlatformRef = NbGradleCommonProperties.scriptPlatform(settingsQuery); this.sourceEncodingRef = NbGradleCommonProperties.sourceEncoding(settingsQuery); this.userInitScriptPathRef = NbGradleCommonProperties.userInitScriptPath(settingsQuery); this.targetPlatformRef = NbGradleCommonProperties.targetPlatform(ownerProject, settingsQuery); this.sourceLevelRef = NbGradleCommonProperties.sourceLevel(ownerProject, settingsQuery); this.profileInfo = profileInfo; } @Override public StoredSettings readFromSettings() { return new StoredSettingsImpl(this); } @Override public StoredSettings readFromGui() { return new StoredSettingsImpl(this, CommonProjectPropertiesPanel.this); } public boolean isSelectByVersion() { return profileInfo.isSharedProfile(); } public boolean isCustomShouldPreferWrapper() { if (profileInfo.isGlobal()) { GradleLocationDef currentlyActiveLocation = gradleLocationRef.tryGetValueWithoutFallback(); return currentlyActiveLocation != null ? currentlyActiveLocation.isPreferWrapper() : false; } else { return false; } } } private final class StoredSettingsImpl implements StoredSettings { private final PropertyRefs properties; private final GradleLocationDef gradleLocation; private final ScriptPlatform scriptPlatform; private final Charset sourceEncoding; private final ProjectPlatform targetPlatform; private final String sourceLevel; private final UserInitScriptPath userInitScript; public StoredSettingsImpl(PropertyRefs properties) { this.properties = properties; this.gradleLocation = properties.gradleLocationRef.tryGetValueWithoutFallback(); this.scriptPlatform = properties.scriptPlatformRef.tryGetValueWithoutFallback(); this.sourceEncoding = properties.sourceEncodingRef.tryGetValueWithoutFallback(); this.targetPlatform = properties.targetPlatformRef.tryGetValueWithoutFallback(); this.sourceLevel = properties.sourceLevelRef.tryGetValueWithoutFallback(); this.userInitScript = properties.userInitScriptPathRef.tryGetValueWithoutFallback(); } public StoredSettingsImpl(PropertyRefs properties, CommonProjectPropertiesPanel panel) { this.properties = properties; gradleLocation = panel.getGradleLocation(); scriptPlatform = panel.getScriptPlatform(properties); targetPlatform = panel.getTargetPlaform(properties); sourceEncoding = panel.getSelectedSourceEncoding(properties); sourceLevel = panel.getSourceLevel(); userInitScript = panel.getUserInitScript(); } @Override public void displaySettings() { CommonProjectPropertiesPanel.this.currentValues = properties; displayGradleLocation(); displayScriptPlatform(); displayTargetPlatform(); displaySourceEncoding(); displaySourceLevel(); displayUserInitScript(); } @Override public void saveSettings() { properties.gradleLocationRef.setValue(gradleLocation); properties.scriptPlatformRef.setValue(scriptPlatform); properties.sourceEncodingRef.setValue(sourceEncoding); properties.targetPlatformRef.setValue(targetPlatform); properties.sourceLevelRef.setValue(sourceLevel); properties.userInitScriptPathRef.setValue(userInitScript); } private void displayGradleLocation() { GradleLocationDef value = setInheritAndGetValue( gradleLocation, properties.gradleLocationRef, jGradleHomeInherit); if (value != null) { selectGradleLocation(value); } } private void displayScriptPlatform() { displayScriptPlatform(properties.isSelectByVersion()); } private void displayScriptPlatform(boolean selectByVersion) { ScriptPlatform value = setInheritAndGetValue( scriptPlatform, properties.scriptPlatformRef, jScriptPlatformInherit); fillScriptPlatformCombo(selectByVersion); if (value != null) { PlatformSelectionMode selectionMode = toSelectionMode(selectByVersion); jScriptPlatformCombo.setSelectedItem(new JavaPlatformComboItem(value.getJavaPlatform(), selectionMode)); } } private void displayTargetPlatform() { ProjectPlatform value = setInheritAndGetValue( targetPlatform, properties.targetPlatformRef, jPlatformComboInherit); fillProjectPlatformCombo(); if (value != null) { jPlatformCombo.setSelectedItem(new ProjectPlatformComboItem(value)); } } private void displaySourceEncoding() { Charset value = setInheritAndGetValue( sourceEncoding, properties.sourceEncodingRef, jSourceEncodingInherit); if (value != null) { jSourceEncoding.setSelectedItem(value); } } private void displaySourceLevel() { String value = setInheritAndGetValue( sourceLevel, properties.sourceLevelRef, jSourceLevelComboInherit); if (value != null) { jSourceLevelCombo.setSelectedItem(value); } } private void displayUserInitScript() { UserInitScriptPath value = setInheritAndGetValue( userInitScript, properties.userInitScriptPathRef, jUserInitScriptInherit); if (value != null) { jUserInitScript.setText(value.getRelPath().toString()); } } } private static class JavaPlatformComboItem { private final JavaPlatform platform; private final PlatformSelectionMode selectionMode; public JavaPlatformComboItem(JavaPlatform platform, PlatformSelectionMode selectionMode) { ExceptionHelper.checkNotNullArgument(platform, "platform"); ExceptionHelper.checkNotNullArgument(selectionMode, "selectionMode"); this.platform = platform; this.selectionMode = selectionMode; } public JavaPlatform getPlatform() { return platform; } private SpecificationVersion tryGetVersion() { Specification specification = platform.getSpecification(); return specification != null ? specification.getVersion() : null; } @Override public int hashCode() { int hash = 205; if (selectionMode == PlatformSelectionMode.BY_VERSION) { hash += Objects.hashCode(tryGetVersion()); } else { hash += platform.hashCode(); } hash = 41 * hash + Objects.hashCode(selectionMode); return hash; } @Override public boolean equals(Object obj) { if (obj == null) return false; if (getClass() != obj.getClass()) return false; final JavaPlatformComboItem other = (JavaPlatformComboItem)obj; if (other.selectionMode != this.selectionMode) { return false; } if (selectionMode == PlatformSelectionMode.BY_VERSION) { return Objects.equals(this.tryGetVersion(), other.tryGetVersion()); } else { return Objects.equals(this.platform, other.platform); } } @Override public String toString() { return platform.getDisplayName(); } } private static class ProjectPlatformComboItem { private final ProjectPlatform platform; public ProjectPlatformComboItem(ProjectPlatform platform) { ExceptionHelper.checkNotNullArgument(platform, "platform"); this.platform = platform; } public ProjectPlatform getPlatform() { return platform; } @Override public int hashCode() { int hash = 5; hash = 41 * hash + Objects.hashCode(platform.getName()); hash = 41 * hash + Objects.hashCode(platform.getVersion()); return hash; } @Override public boolean equals(Object obj) { if (obj == null) return false; if (getClass() != obj.getClass()) return false; final ProjectPlatformComboItem other = (ProjectPlatformComboItem)obj; return Objects.equals(this.platform.getName(), other.platform.getName()) && Objects.equals(this.platform.getVersion(), other.platform.getVersion()); } @Override public String toString() { return platform.getDisplayName(); } } /** * 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. */ @SuppressWarnings({"unchecked", "Convert2Diamond"}) // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents private void initComponents() { jSourceLevelCombo = new javax.swing.JComboBox<>(); jGradleHomeEdit = new javax.swing.JTextField(); jGradleHomeInherit = new javax.swing.JCheckBox(); jSourceEncodingInherit = new javax.swing.JCheckBox(); jPlatformComboInherit = new javax.swing.JCheckBox(); jScriptPlatformCombo = new javax.swing.JComboBox<>(); jSourceLevelComboInherit = new javax.swing.JCheckBox(); jScriptPlatformInherit = new javax.swing.JCheckBox(); jPlatformPreferenceButton = new javax.swing.JButton(); jPlatformCombo = new javax.swing.JComboBox<>(); jGradleHomeCaption = new javax.swing.JLabel(); jSourceEncodingCaption = new javax.swing.JLabel(); jTargetPlatformCaption = new javax.swing.JLabel(); jLabel1 = new javax.swing.JLabel(); jSourceLevelCaption = new javax.swing.JLabel(); jGradleHomeChangeButton = new javax.swing.JButton(); jSourceEncoding = new javax.swing.JComboBox<>(); jUserInitScriptCaption = new javax.swing.JLabel(); jUserInitScript = new javax.swing.JTextField(); jUserInitScriptInherit = new javax.swing.JCheckBox(); jUserInitScriptBrowseButton = new javax.swing.JButton(); jSourceLevelCombo.setModel(new javax.swing.DefaultComboBoxModel<>(new String[] { "1.3", "1.4", "1.5", "1.6", "1.7", "1.8" })); jGradleHomeEdit.setEditable(false); jGradleHomeEdit.setText(org.openide.util.NbBundle.getMessage(CommonProjectPropertiesPanel.class, "CommonProjectPropertiesPanel.jGradleHomeEdit.text")); // NOI18N org.openide.awt.Mnemonics.setLocalizedText(jGradleHomeInherit, org.openide.util.NbBundle.getMessage(CommonProjectPropertiesPanel.class, "CommonProjectPropertiesPanel.jGradleHomeInherit.text")); // NOI18N org.openide.awt.Mnemonics.setLocalizedText(jSourceEncodingInherit, org.openide.util.NbBundle.getMessage(CommonProjectPropertiesPanel.class, "CommonProjectPropertiesPanel.jSourceEncodingInherit.text")); // NOI18N org.openide.awt.Mnemonics.setLocalizedText(jPlatformComboInherit, org.openide.util.NbBundle.getMessage(CommonProjectPropertiesPanel.class, "CommonProjectPropertiesPanel.jPlatformComboInherit.text")); // NOI18N org.openide.awt.Mnemonics.setLocalizedText(jSourceLevelComboInherit, org.openide.util.NbBundle.getMessage(CommonProjectPropertiesPanel.class, "CommonProjectPropertiesPanel.jSourceLevelComboInherit.text")); // NOI18N org.openide.awt.Mnemonics.setLocalizedText(jScriptPlatformInherit, org.openide.util.NbBundle.getMessage(CommonProjectPropertiesPanel.class, "CommonProjectPropertiesPanel.jScriptPlatformInherit.text")); // NOI18N org.openide.awt.Mnemonics.setLocalizedText(jPlatformPreferenceButton, org.openide.util.NbBundle.getMessage(CommonProjectPropertiesPanel.class, "CommonProjectPropertiesPanel.jPlatformPreferenceButton.text")); // NOI18N jPlatformPreferenceButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jPlatformPreferenceButtonActionPerformed(evt); } }); org.openide.awt.Mnemonics.setLocalizedText(jGradleHomeCaption, org.openide.util.NbBundle.getMessage(CommonProjectPropertiesPanel.class, "CommonProjectPropertiesPanel.jGradleHomeCaption.text")); // NOI18N org.openide.awt.Mnemonics.setLocalizedText(jSourceEncodingCaption, org.openide.util.NbBundle.getMessage(CommonProjectPropertiesPanel.class, "CommonProjectPropertiesPanel.jSourceEncodingCaption.text")); // NOI18N org.openide.awt.Mnemonics.setLocalizedText(jTargetPlatformCaption, org.openide.util.NbBundle.getMessage(CommonProjectPropertiesPanel.class, "CommonProjectPropertiesPanel.jTargetPlatformCaption.text")); // NOI18N org.openide.awt.Mnemonics.setLocalizedText(jLabel1, org.openide.util.NbBundle.getMessage(CommonProjectPropertiesPanel.class, "CommonProjectPropertiesPanel.jLabel1.text")); // NOI18N org.openide.awt.Mnemonics.setLocalizedText(jSourceLevelCaption, org.openide.util.NbBundle.getMessage(CommonProjectPropertiesPanel.class, "CommonProjectPropertiesPanel.jSourceLevelCaption.text")); // NOI18N org.openide.awt.Mnemonics.setLocalizedText(jGradleHomeChangeButton, org.openide.util.NbBundle.getMessage(CommonProjectPropertiesPanel.class, "CommonProjectPropertiesPanel.jGradleHomeChangeButton.text")); // NOI18N jGradleHomeChangeButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jGradleHomeChangeButtonActionPerformed(evt); } }); org.openide.awt.Mnemonics.setLocalizedText(jUserInitScriptCaption, org.openide.util.NbBundle.getMessage(CommonProjectPropertiesPanel.class, "CommonProjectPropertiesPanel.jUserInitScriptCaption.text")); // NOI18N jUserInitScript.setText(org.openide.util.NbBundle.getMessage(CommonProjectPropertiesPanel.class, "CommonProjectPropertiesPanel.jUserInitScript.text")); // NOI18N org.openide.awt.Mnemonics.setLocalizedText(jUserInitScriptInherit, org.openide.util.NbBundle.getMessage(CommonProjectPropertiesPanel.class, "CommonProjectPropertiesPanel.jUserInitScriptInherit.text")); // NOI18N org.openide.awt.Mnemonics.setLocalizedText(jUserInitScriptBrowseButton, org.openide.util.NbBundle.getMessage(CommonProjectPropertiesPanel.class, "CommonProjectPropertiesPanel.jUserInitScriptBrowseButton.text")); // NOI18N jUserInitScriptBrowseButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jUserInitScriptBrowseButtonActionPerformed(evt); } }); javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this); this.setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addContainerGap() .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jSourceEncodingCaption) .addComponent(jGradleHomeCaption) .addComponent(jTargetPlatformCaption) .addComponent(jLabel1) .addComponent(jSourceLevelCaption) .addComponent(jUserInitScriptCaption)) .addGap(0, 0, Short.MAX_VALUE)) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() .addGap(0, 0, Short.MAX_VALUE) .addComponent(jPlatformPreferenceButton)) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) .addComponent(jScriptPlatformCombo, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(jSourceLevelCombo, javax.swing.GroupLayout.Alignment.LEADING, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(jPlatformCombo, javax.swing.GroupLayout.Alignment.LEADING, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addGroup(layout.createSequentialGroup() .addComponent(jGradleHomeChangeButton) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jGradleHomeEdit, javax.swing.GroupLayout.DEFAULT_SIZE, 359, Short.MAX_VALUE)) .addComponent(jSourceEncoding, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addGroup(javax.swing.GroupLayout.Alignment.LEADING, layout.createSequentialGroup() .addComponent(jUserInitScript) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jUserInitScriptBrowseButton))) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) .addComponent(jSourceEncodingInherit, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(jGradleHomeInherit, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(jScriptPlatformInherit, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(jPlatformComboInherit, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(jSourceLevelComboInherit, javax.swing.GroupLayout.Alignment.TRAILING)) .addComponent(jUserInitScriptInherit, javax.swing.GroupLayout.Alignment.TRAILING)))) .addContainerGap()) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addContainerGap() .addComponent(jSourceEncodingCaption) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jSourceEncodingInherit) .addComponent(jSourceEncoding, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(jGradleHomeCaption, javax.swing.GroupLayout.PREFERRED_SIZE, 14, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jGradleHomeEdit, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jGradleHomeInherit) .addComponent(jGradleHomeChangeButton)) .addGap(12, 12, 12) .addComponent(jLabel1) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jScriptPlatformCombo, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jScriptPlatformInherit)) .addGap(12, 12, 12) .addComponent(jTargetPlatformCaption) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jPlatformCombo, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jPlatformComboInherit)) .addGap(12, 12, 12) .addComponent(jSourceLevelCaption) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jSourceLevelCombo, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jSourceLevelComboInherit)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(jUserInitScriptCaption) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jUserInitScript, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jUserInitScriptInherit) .addComponent(jUserInitScriptBrowseButton)) .addGap(18, 18, 18) .addComponent(jPlatformPreferenceButton) .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); }// </editor-fold>//GEN-END:initComponents private void jPlatformPreferenceButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jPlatformPreferenceButtonActionPerformed if (PlatformPriorityPanel.showDialog(this)) { if (currentValues != null) { refreshPlatformCombos(currentValues); } } }//GEN-LAST:event_jPlatformPreferenceButtonActionPerformed private void jGradleHomeChangeButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jGradleHomeChangeButtonActionPerformed if (currentValues == null) { return; } GradleLocationDef currentLocationDef = selectedGradleLocation != null ? selectedGradleLocation : currentValues.gradleLocationRef.getActiveValue(); GradleLocationRef currentLocationRef = currentLocationDef != null ? currentLocationDef.getLocationRef() : null; GradleLocationRef newLocationRef = GradleLocationPanel.tryChooseLocation(this, getLocationResolver(), currentLocationRef); if (newLocationRef != null) { boolean preferWrapper = currentValues.isCustomShouldPreferWrapper(); selectGradleLocation(new GradleLocationDef(newLocationRef, preferWrapper)); } }//GEN-LAST:event_jGradleHomeChangeButtonActionPerformed private void jUserInitScriptBrowseButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jUserInitScriptBrowseButtonActionPerformed File settingsDir = project.currentModel().getValue().getSettingsDir().toFile(); File initialDir = settingsDir; FileChooserBuilder dlgChooser = new FileChooserBuilder( LicenseHeaderPanel.class.getName() + "-" + initialDir.getName()); dlgChooser.setDefaultWorkingDirectory(initialDir); // TODO: I18N dlgChooser.setFileFilter(new FileNameExtensionFilter("Gradle files", "gradle")); File f = dlgChooser.showOpenDialog(); if (f == null || f.isDirectory()) { return; } File file = f.getAbsoluteFile(); String relPath = NbFileUtils.tryMakeRelative(settingsDir, file); jUserInitScript.setText(relPath != null ? relPath : file.getPath()); }//GEN-LAST:event_jUserInitScriptBrowseButtonActionPerformed // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JLabel jGradleHomeCaption; private javax.swing.JButton jGradleHomeChangeButton; private javax.swing.JTextField jGradleHomeEdit; private javax.swing.JCheckBox jGradleHomeInherit; private javax.swing.JLabel jLabel1; private javax.swing.JComboBox<ProjectPlatformComboItem> jPlatformCombo; private javax.swing.JCheckBox jPlatformComboInherit; private javax.swing.JButton jPlatformPreferenceButton; private javax.swing.JComboBox<JavaPlatformComboItem> jScriptPlatformCombo; private javax.swing.JCheckBox jScriptPlatformInherit; private javax.swing.JComboBox<Charset> jSourceEncoding; private javax.swing.JLabel jSourceEncodingCaption; private javax.swing.JCheckBox jSourceEncodingInherit; private javax.swing.JLabel jSourceLevelCaption; private javax.swing.JComboBox<String> jSourceLevelCombo; private javax.swing.JCheckBox jSourceLevelComboInherit; private javax.swing.JLabel jTargetPlatformCaption; private javax.swing.JTextField jUserInitScript; private javax.swing.JButton jUserInitScriptBrowseButton; private javax.swing.JLabel jUserInitScriptCaption; private javax.swing.JCheckBox jUserInitScriptInherit; // End of variables declaration//GEN-END:variables }