blob: 3df8aff34c7821ad3e2c64e6e831baed469dedf9 [file] [log] [blame]
/*
* 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.maven.options;
import java.awt.CardLayout;
import java.awt.Component;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.StringReader;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import javax.swing.BorderFactory;
import javax.swing.ComboBoxModel;
import javax.swing.DefaultComboBoxModel;
import javax.swing.DefaultListCellRenderer;
import javax.swing.JFileChooser;
import javax.swing.JList;
import javax.swing.JSeparator;
import javax.swing.ListCellRenderer;
import javax.swing.SwingUtilities;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;
import org.netbeans.api.java.platform.JavaPlatform;
import org.netbeans.api.java.platform.JavaPlatformManager;
import org.netbeans.api.java.platform.PlatformsCustomizer;
import org.netbeans.modules.maven.TextValueCompleter;
import org.netbeans.modules.maven.configurations.M2Configuration;
import org.netbeans.modules.maven.customizer.ActionMappings;
import org.netbeans.modules.maven.customizer.CustomizerProviderImpl;
import org.netbeans.modules.maven.embedder.EmbedderFactory;
import org.netbeans.modules.maven.execute.NbGlobalActionGoalProvider;
import org.netbeans.modules.maven.execute.model.ActionToGoalMapping;
import org.netbeans.modules.maven.execute.model.io.xpp3.NetbeansBuildActionXpp3Reader;
import org.netbeans.modules.maven.indexer.api.RepositoryIndexer;
import org.netbeans.modules.maven.indexer.api.RepositoryPreferences;
import org.openide.DialogDescriptor;
import org.openide.DialogDisplayer;
import org.openide.filesystems.FileObject;
import org.openide.filesystems.FileUtil;
import org.openide.util.Exceptions;
import org.openide.util.Lookup;
import org.openide.util.NbBundle;
import org.openide.util.RequestProcessor;
import static org.netbeans.modules.maven.options.Bundle.*;
import org.netbeans.modules.options.java.api.JavaOptions;
import org.netbeans.spi.options.OptionsPanelController;
import org.openide.util.NbBundle.Messages;
/**
* The visual panel that displays in the Options dialog. Some properties
* are written to the settings file, some into the Netbeans settings..
* @author mkleint
*/
@OptionsPanelController.Keywords(keywords={"maven"}, location=JavaOptions.JAVA, tabTitle= "#TIT_Maven_Category")
public class SettingsPanel extends javax.swing.JPanel {
private static final String SEPARATOR = "SEPARATOR";
public static final String BUNDLED_RUNTIME_VERSION =
MavenSettings.getCommandLineMavenVersion(EmbedderFactory.getDefaultMavenHome());
public static final int RUNTIME_COUNT_LIMIT = 5;
private boolean changed;
private boolean valid;
private final ActionListener listener;
private final MavenOptionController controller;
private final TextValueCompleter completer;
private final ActionListener listItemChangedListener;
private final List<String> userDefinedMavenRuntimes = new ArrayList<String>();
private final List<String> userDefinedMavenRuntimesStored = new ArrayList<String>();
private final List<String> predefinedRuntimes = new ArrayList<String>();
private final DefaultComboBoxModel mavenHomeDataModel = new DefaultComboBoxModel();
private final DefaultComboBoxModel jdkHomeDataModel = new DefaultComboBoxModel();
private String mavenRuntimeHome = null;
private int lastSelected = -1;
private static final RequestProcessor RP = new RequestProcessor(SettingsPanel.class);
private static class ComboBoxRenderer extends DefaultListCellRenderer {
private final JSeparator separator;
public ComboBoxRenderer() {
super();
separator = new JSeparator(JSeparator.HORIZONTAL);
}
@Override
public Component getListCellRendererComponent(JList list, Object value,
int index, boolean isSelected, boolean cellHasFocus) {
if (SEPARATOR.equals(value)) {
return separator;
}
return super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
}
};
/** Creates new form SettingsPanel */
@Messages({
"CAT_Dependencies=Dependencies",
"CAT_Appearance=Appearance",
"CAT_Index=Index",
"CAT_Execution=Execution",
"CAT_Experimental=Experimental"
})
SettingsPanel(MavenOptionController controller) {
initComponents();
MavenSettings.DownloadStrategy[] downloads = MavenSettings.DownloadStrategy.values();
comBinaries.setModel(new DefaultComboBoxModel(downloads));
comJavadoc.setModel(new DefaultComboBoxModel(downloads));
comSource.setModel(new DefaultComboBoxModel(downloads));
comMavenHome.setModel(mavenHomeDataModel);
comJdkHome.setModel(jdkHomeDataModel);
ListCellRenderer rend = new DefaultListCellRenderer() {
@Override
public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
String txt = ""; //NOI18N
if (value.equals(MavenSettings.DownloadStrategy.NEVER)) {
txt = org.openide.util.NbBundle.getMessage(SettingsPanel.class, "TIT_NEVER");
} else if (value.equals(MavenSettings.DownloadStrategy.EVERY_OPEN)) {
txt = org.openide.util.NbBundle.getMessage(SettingsPanel.class, "TIT_EVERY");
} else if (value.equals(MavenSettings.DownloadStrategy.FIRST_OPEN)) {
txt = org.openide.util.NbBundle.getMessage(SettingsPanel.class, "TIT_FIRST");
}
return super.getListCellRendererComponent(list, txt, index, isSelected, cellHasFocus);
}
};
comBinaries.setRenderer(rend);
comSource.setRenderer(rend);
comJavadoc.setRenderer(rend);
comMavenHome.setRenderer(new ComboBoxRenderer());
this.controller = controller;
listItemChangedListener = new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
if (SEPARATOR.equals(comMavenHome.getSelectedItem())) {
comMavenHome.setSelectedIndex(lastSelected);
return;
}
int selected = comMavenHome.getSelectedIndex();
if (selected == mavenHomeDataModel.getSize() - 1) {
// browse
comMavenHome.setSelectedIndex(lastSelected);
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
browseAddNewRuntime();
}
});
return;
}
listDataChanged();
lastSelected = selected;
}
};
initValues();
listener = new ActionListenerImpl();
comIndex.addActionListener(listener);
completer = new TextValueCompleter(getGlobalOptions(), txtOptions, " "); //NOI18N
cbProjectNodeNameMode.addActionListener(listener);
cbAlwaysShow.addActionListener(listener);
cbShowInfoLevel.addActionListener(listener);
cbCollapseSuccessFolds.addActionListener(listener);
cbReuse.addActionListener(listener);
cbSkipTests.addActionListener(listener);
comBinaries.addActionListener(listener);
comJavadoc.addActionListener(listener);
comSource.addActionListener(listener);
cbOutputTabShowConfig.addActionListener(listener);
rbOutputTabId.addActionListener(listener);
rbOutputTabName.addActionListener(listener);
cbDisableIndex.addActionListener(listener);
cbPreferWrapper.addActionListener(listener);
cbUseBestMaven.addActionListener(listener);
cbAlternateLocation.addActionListener(listener);
cbAlternateLocation.addChangeListener(new ChangeListener() {
@Override
public void stateChanged(ChangeEvent e) {
txtDirectory.setEnabled(cbAlternateLocation.isSelected());
}
});
txtDirectory.getDocument().addDocumentListener(new DocumentListenerImpl());
txtOptions.getDocument().addDocumentListener(new DocumentListenerImpl());
txtProjectNodeNameCustomPattern.setVisible(false);
txtProjectNodeNameCustomPattern.getDocument().addDocumentListener(new DocumentListenerImpl());
lstCategory.setSelectedIndex(0);
lstCategory.setCellRenderer(new DefaultListCellRenderer() {
@Override
public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
if ("dependencies".equals(value)) {
value = CAT_Dependencies();
} else if ("appearance".equals(value)) {
value = CAT_Appearance();
} else if ("index".equals(value)) {
value = CAT_Index();
}else if ("execution".equals(value)) {
value = CAT_Execution();
}else if ("experimental".equals(value)) {
value = CAT_Experimental();
}
return super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
}
});
}
/** XXX update for M3 from {@link org.apache.maven.cli.CLIManager#CLIManager} */
static String[] AVAILABLE_OPTIONS = new String[] {
"--offline", //NOI18N
"--debug", //NOI18N
"--errors", //NOI18N
"--batch-mode", //NOI18N
"--fail-fast", //NOI18N
"--fail-at-end", //NOI18N
"--fail-never", //NOI18N
"--strict-checksums", //NOI18N
"--lax-checksums", //NOI18N
"--check-plugin-updates", //NOI18N
"--no-plugin-updates", //NOI18N
"--update-snapshots", //NOI18N
"--no-plugin-registry" //NOI18N
};
static String[] getAvailableOptionsDescriptions() {
return new String[] {
org.openide.util.NbBundle.getMessage(SettingsPanel.class, "WORK_OFFLINE"),
org.openide.util.NbBundle.getMessage(SettingsPanel.class, "PRODUCE_EXECUTION_DEBUG_OUTPUT"),
org.openide.util.NbBundle.getMessage(SettingsPanel.class, "PRODUCE_EXECUTION_ERROR_MESSAGES"),
org.openide.util.NbBundle.getMessage(SettingsPanel.class, "NON-INTERACTIVE_MODE."),
org.openide.util.NbBundle.getMessage(SettingsPanel.class, "STOP_AT_FIRST_FAILURE"),
org.openide.util.NbBundle.getMessage(SettingsPanel.class, "ONLY_FAIL_THE_BUILD_AFTERWARDS"),
org.openide.util.NbBundle.getMessage(SettingsPanel.class, "NEVER_FAIL_THE_BUILD"),
org.openide.util.NbBundle.getMessage(SettingsPanel.class, "FAIL_CHECKSUMS"),
org.openide.util.NbBundle.getMessage(SettingsPanel.class, "WARN_CHECKSUMS"),
org.openide.util.NbBundle.getMessage(SettingsPanel.class, "FORCE_UPTODATE_CHECK"),
org.openide.util.NbBundle.getMessage(SettingsPanel.class, "SUPPRESS_UPTODATE_CHECK"),
org.openide.util.NbBundle.getMessage(SettingsPanel.class, "FORCES_A_CHECK"),
org.openide.util.NbBundle.getMessage(SettingsPanel.class, "DON'T_USE_PLUGIN-REGISTRY")
};
}
private static List<String> getGlobalOptions() {
return Arrays.asList(AVAILABLE_OPTIONS);
}
private void initValues() {
comIndex.setSelectedIndex(0);
}
private String getSelectedRuntime(int selected) {
if (selected < 0) {
return null;
}
if (selected < predefinedRuntimes.size()) {
return predefinedRuntimes.get(selected);
} else if (!userDefinedMavenRuntimes.isEmpty() &&
selected - predefinedRuntimes.size() <= userDefinedMavenRuntimes.size()) {
return userDefinedMavenRuntimes.get(selected - 1 - predefinedRuntimes.size());
}
return null;
}
private void listDataChanged() {
boolean oldvalid = valid;
int selected = comMavenHome.getSelectedIndex();
String path = getSelectedRuntime(selected);
if (path != null) {
path = path.trim();
if ("".equals(path)) {
path = null;
valid = true;
lblExternalVersion.setText(NbBundle.getMessage(SettingsPanel.class, "LBL_ExMavenVersion2", BUNDLED_RUNTIME_VERSION));
}
}
if (path != null) {
path = path.trim();
String ver = null;
if (Files.exists(Paths.get(path, "bin"))) { //NOI18N
ver = MavenSettings.getCommandLineMavenVersion(new File(path));
}
if (ver != null) {
lblExternalVersion.setText(NbBundle.getMessage(SettingsPanel.class, "LBL_ExMavenVersion2", ver));
valid = true;
} else {
lblExternalVersion.setText(NbBundle.getMessage(SettingsPanel.class, "ERR_NoValidInstallation"));
}
}
mavenRuntimeHome = path;
if (oldvalid != valid) {
controller.firePropChange(MavenOptionController.PROP_VALID, Boolean.valueOf(oldvalid), Boolean.valueOf(valid));
}
fireChanged();
}
private ComboBoxModel createComboModel() {
return new DefaultComboBoxModel(
new String[] {
org.openide.util.NbBundle.getMessage(SettingsPanel.class, "FREQ_weekly"),
org.openide.util.NbBundle.getMessage(SettingsPanel.class, "FREQ_Daily"),
org.openide.util.NbBundle.getMessage(SettingsPanel.class, "FREQ_Always"),
org.openide.util.NbBundle.getMessage(SettingsPanel.class, "FREQ_Never") });
}
/** 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.
*/
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
private void initComponents() {
buttonGroup1 = new javax.swing.ButtonGroup();
pnlCards = new javax.swing.JPanel();
pnlAppearance = new javax.swing.JPanel();
jLabel2 = new javax.swing.JLabel();
jLabel4 = new javax.swing.JLabel();
cbProjectNodeNameMode = new javax.swing.JComboBox();
txtProjectNodeNameCustomPattern = new javax.swing.JTextField();
pnlDependencies = new javax.swing.JPanel();
jLabel1 = new javax.swing.JLabel();
lblBinaries = new javax.swing.JLabel();
comBinaries = new javax.swing.JComboBox();
lblJavadoc = new javax.swing.JLabel();
comJavadoc = new javax.swing.JComboBox();
lblSource = new javax.swing.JLabel();
comSource = new javax.swing.JComboBox();
jLabel3 = new javax.swing.JLabel();
pnlIndex = new javax.swing.JPanel();
lblIndex = new javax.swing.JLabel();
comIndex = new javax.swing.JComboBox();
btnIndex = new javax.swing.JButton();
cbDisableIndex = new javax.swing.JCheckBox();
jLabel5 = new javax.swing.JLabel();
plnExperimental = new javax.swing.JPanel();
cbUseBestMaven = new javax.swing.JCheckBox();
lblHint = new javax.swing.JLabel();
cbAlternateLocation = new javax.swing.JCheckBox();
lblDirectory = new javax.swing.JLabel();
txtDirectory = new javax.swing.JTextField();
btnDirectory = new javax.swing.JButton();
pnlExecution = new javax.swing.JPanel();
lblCommandLine = new javax.swing.JLabel();
comMavenHome = new javax.swing.JComboBox();
lblExternalVersion = new javax.swing.JLabel();
lblOptions = new javax.swing.JLabel();
txtOptions = new javax.swing.JTextField();
btnOptions = new javax.swing.JButton();
cbSkipTests = new javax.swing.JCheckBox();
btnGoals = new javax.swing.JButton();
cbAlwaysShow = new javax.swing.JCheckBox();
cbReuse = new javax.swing.JCheckBox();
cbCollapseSuccessFolds = new javax.swing.JCheckBox();
lblOutputTab = new javax.swing.JLabel();
rbOutputTabName = new javax.swing.JRadioButton();
rbOutputTabId = new javax.swing.JRadioButton();
cbOutputTabShowConfig = new javax.swing.JCheckBox();
cbShowInfoLevel = new javax.swing.JCheckBox();
lblJdkHome = new javax.swing.JLabel();
comJdkHome = new javax.swing.JComboBox();
comManageJdks = new javax.swing.JButton();
cbPreferWrapper = new javax.swing.JCheckBox();
jScrollPane1 = new javax.swing.JScrollPane();
lstCategory = new javax.swing.JList();
lblCategory = new javax.swing.JLabel();
pnlCards.setLayout(new java.awt.CardLayout());
org.openide.awt.Mnemonics.setLocalizedText(jLabel2, org.openide.util.NbBundle.getMessage(SettingsPanel.class, "SettingsPanel.jLabel2.text")); // NOI18N
org.openide.awt.Mnemonics.setLocalizedText(jLabel4, org.openide.util.NbBundle.getMessage(SettingsPanel.class, "SettingsPanel.jLabel4.text")); // NOI18N
cbProjectNodeNameMode.setModel(getProjectNodeModel());
cbProjectNodeNameMode.addItemListener(new java.awt.event.ItemListener() {
public void itemStateChanged(java.awt.event.ItemEvent evt) {
cbProjectNodeNameModeItemStateChanged(evt);
}
});
cbProjectNodeNameMode.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
cbProjectNodeNameModeActionPerformed(evt);
}
});
txtProjectNodeNameCustomPattern.setText(org.openide.util.NbBundle.getMessage(SettingsPanel.class, "SettingsPanel.txtProjectNodeNameCustomPattern.text")); // NOI18N
txtProjectNodeNameCustomPattern.setToolTipText(org.openide.util.NbBundle.getMessage(SettingsPanel.class, "SettingsPanel.txtProjectNodeNameCustomPattern.toolTipText")); // NOI18N
javax.swing.GroupLayout pnlAppearanceLayout = new javax.swing.GroupLayout(pnlAppearance);
pnlAppearance.setLayout(pnlAppearanceLayout);
pnlAppearanceLayout.setHorizontalGroup(
pnlAppearanceLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, pnlAppearanceLayout.createSequentialGroup()
.addContainerGap()
.addGroup(pnlAppearanceLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jLabel2)
.addGroup(pnlAppearanceLayout.createSequentialGroup()
.addGap(20, 20, 20)
.addComponent(jLabel4)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addGroup(pnlAppearanceLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(txtProjectNodeNameCustomPattern)
.addComponent(cbProjectNodeNameMode, 0, 258, Short.MAX_VALUE))))
.addContainerGap())
);
pnlAppearanceLayout.setVerticalGroup(
pnlAppearanceLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(pnlAppearanceLayout.createSequentialGroup()
.addContainerGap()
.addComponent(jLabel2)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(pnlAppearanceLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel4)
.addComponent(cbProjectNodeNameMode, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(txtProjectNodeNameCustomPattern, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
pnlCards.add(pnlAppearance, "appearance");
org.openide.awt.Mnemonics.setLocalizedText(jLabel1, org.openide.util.NbBundle.getMessage(SettingsPanel.class, "SettingsPanel.jLabel1.text")); // NOI18N
lblBinaries.setLabelFor(comBinaries);
org.openide.awt.Mnemonics.setLocalizedText(lblBinaries, org.openide.util.NbBundle.getMessage(SettingsPanel.class, "SettingsPanel.lblBinaries.text")); // NOI18N
lblJavadoc.setLabelFor(comJavadoc);
org.openide.awt.Mnemonics.setLocalizedText(lblJavadoc, org.openide.util.NbBundle.getMessage(SettingsPanel.class, "SettingsPanel.lblJavadoc.text")); // NOI18N
lblSource.setLabelFor(comSource);
org.openide.awt.Mnemonics.setLocalizedText(lblSource, org.openide.util.NbBundle.getMessage(SettingsPanel.class, "SettingsPanel.lblSource.text")); // NOI18N
org.openide.awt.Mnemonics.setLocalizedText(jLabel3, org.openide.util.NbBundle.getMessage(SettingsPanel.class, "SettingsPanel.jLabel3.text")); // NOI18N
jLabel3.setVerticalAlignment(javax.swing.SwingConstants.TOP);
javax.swing.GroupLayout pnlDependenciesLayout = new javax.swing.GroupLayout(pnlDependencies);
pnlDependencies.setLayout(pnlDependenciesLayout);
pnlDependenciesLayout.setHorizontalGroup(
pnlDependenciesLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(pnlDependenciesLayout.createSequentialGroup()
.addContainerGap()
.addGroup(pnlDependenciesLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(pnlDependenciesLayout.createSequentialGroup()
.addComponent(jLabel1)
.addGap(0, 265, Short.MAX_VALUE))
.addGroup(pnlDependenciesLayout.createSequentialGroup()
.addComponent(lblJavadoc)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(comJavadoc, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
.addGroup(pnlDependenciesLayout.createSequentialGroup()
.addComponent(lblBinaries)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(comBinaries, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
.addGroup(pnlDependenciesLayout.createSequentialGroup()
.addComponent(lblSource)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(comSource, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
.addComponent(jLabel3, javax.swing.GroupLayout.DEFAULT_SIZE, 472, Short.MAX_VALUE))
.addContainerGap())
);
pnlDependenciesLayout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {lblBinaries, lblJavadoc, lblSource});
pnlDependenciesLayout.setVerticalGroup(
pnlDependenciesLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(pnlDependenciesLayout.createSequentialGroup()
.addContainerGap()
.addComponent(jLabel1)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(pnlDependenciesLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(lblBinaries)
.addComponent(comBinaries, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(pnlDependenciesLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(lblJavadoc)
.addComponent(comJavadoc, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(pnlDependenciesLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(lblSource)
.addComponent(comSource, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jLabel3, javax.swing.GroupLayout.PREFERRED_SIZE, 44, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(218, Short.MAX_VALUE))
);
pnlCards.add(pnlDependencies, "dependencies");
lblIndex.setLabelFor(comIndex);
org.openide.awt.Mnemonics.setLocalizedText(lblIndex, org.openide.util.NbBundle.getMessage(SettingsPanel.class, "SettingsPanel.lblIndex.text")); // NOI18N
comIndex.setModel(createComboModel());
org.openide.awt.Mnemonics.setLocalizedText(btnIndex, org.openide.util.NbBundle.getMessage(SettingsPanel.class, "SettingsPanel.btnIndex.text")); // NOI18N
btnIndex.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnIndexActionPerformed(evt);
}
});
org.openide.awt.Mnemonics.setLocalizedText(cbDisableIndex, org.openide.util.NbBundle.getMessage(SettingsPanel.class, "SettingsPanel.cbDisableIndex.text")); // NOI18N
cbDisableIndex.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
cbDisableIndexActionPerformed(evt);
}
});
org.openide.awt.Mnemonics.setLocalizedText(jLabel5, org.openide.util.NbBundle.getMessage(SettingsPanel.class, "SettingsPanel.jLabel5.text")); // NOI18N
javax.swing.GroupLayout pnlIndexLayout = new javax.swing.GroupLayout(pnlIndex);
pnlIndex.setLayout(pnlIndexLayout);
pnlIndexLayout.setHorizontalGroup(
pnlIndexLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(pnlIndexLayout.createSequentialGroup()
.addContainerGap()
.addGroup(pnlIndexLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(pnlIndexLayout.createSequentialGroup()
.addGap(29, 29, 29)
.addComponent(jLabel5)
.addGap(0, 0, Short.MAX_VALUE))
.addGroup(pnlIndexLayout.createSequentialGroup()
.addComponent(lblIndex)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(comIndex, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(btnIndex)
.addContainerGap())
.addGroup(pnlIndexLayout.createSequentialGroup()
.addComponent(cbDisableIndex)
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))))
);
pnlIndexLayout.setVerticalGroup(
pnlIndexLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(pnlIndexLayout.createSequentialGroup()
.addContainerGap()
.addGroup(pnlIndexLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(lblIndex)
.addComponent(comIndex, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(btnIndex))
.addGap(18, 18, 18)
.addComponent(cbDisableIndex)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jLabel5)
.addContainerGap(290, Short.MAX_VALUE))
);
pnlCards.add(pnlIndex, "index");
org.openide.awt.Mnemonics.setLocalizedText(cbUseBestMaven, org.openide.util.NbBundle.getMessage(SettingsPanel.class, "SettingsPanel.cbUseBestMaven.text")); // NOI18N
org.openide.awt.Mnemonics.setLocalizedText(lblHint, org.openide.util.NbBundle.getMessage(SettingsPanel.class, "SettingsPanel.lblHint.text")); // NOI18N
lblHint.setVerticalAlignment(javax.swing.SwingConstants.TOP);
org.openide.awt.Mnemonics.setLocalizedText(cbAlternateLocation, org.openide.util.NbBundle.getMessage(SettingsPanel.class, "SettingsPanel.cbAlternateLocation.text")); // NOI18N
org.openide.awt.Mnemonics.setLocalizedText(lblDirectory, org.openide.util.NbBundle.getMessage(SettingsPanel.class, "SettingsPanel.lblDirectory.text")); // NOI18N
org.openide.awt.Mnemonics.setLocalizedText(btnDirectory, org.openide.util.NbBundle.getMessage(SettingsPanel.class, "SettingsPanel.btnDirectory.text")); // NOI18N
btnDirectory.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnDirectoryActionPerformed(evt);
}
});
javax.swing.GroupLayout plnExperimentalLayout = new javax.swing.GroupLayout(plnExperimental);
plnExperimental.setLayout(plnExperimentalLayout);
plnExperimentalLayout.setHorizontalGroup(
plnExperimentalLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(plnExperimentalLayout.createSequentialGroup()
.addContainerGap()
.addGroup(plnExperimentalLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(cbUseBestMaven)
.addComponent(cbAlternateLocation)
.addGroup(plnExperimentalLayout.createSequentialGroup()
.addGap(29, 29, 29)
.addGroup(plnExperimentalLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(lblHint, javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE)
.addGroup(plnExperimentalLayout.createSequentialGroup()
.addComponent(lblDirectory)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(txtDirectory, javax.swing.GroupLayout.DEFAULT_SIZE, 257, Short.MAX_VALUE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(btnDirectory)))))
.addContainerGap())
);
plnExperimentalLayout.setVerticalGroup(
plnExperimentalLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(plnExperimentalLayout.createSequentialGroup()
.addContainerGap()
.addComponent(cbUseBestMaven)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(lblHint, javax.swing.GroupLayout.PREFERRED_SIZE, 120, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(cbAlternateLocation)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(plnExperimentalLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(lblDirectory)
.addComponent(txtDirectory, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(btnDirectory))
.addContainerGap(180, Short.MAX_VALUE))
);
pnlCards.add(plnExperimental, "experimental");
lblCommandLine.setLabelFor(comMavenHome);
org.openide.awt.Mnemonics.setLocalizedText(lblCommandLine, org.openide.util.NbBundle.getMessage(SettingsPanel.class, "SettingsPanel.lblCommandLine.text"));
org.openide.awt.Mnemonics.setLocalizedText(lblOptions, org.openide.util.NbBundle.getMessage(SettingsPanel.class, "SettingsPanel.lblOptions.text")); // NOI18N
org.openide.awt.Mnemonics.setLocalizedText(btnOptions, org.openide.util.NbBundle.getMessage(SettingsPanel.class, "SettingsPanel.btnOptions.text")); // NOI18N
btnOptions.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnOptionsActionPerformed(evt);
}
});
org.openide.awt.Mnemonics.setLocalizedText(cbSkipTests, org.openide.util.NbBundle.getMessage(SettingsPanel.class, "SettingsPanel.cbSkipTests.text")); // NOI18N
org.openide.awt.Mnemonics.setLocalizedText(btnGoals, org.openide.util.NbBundle.getMessage(SettingsPanel.class, "SettingsPanel.btnGoals.text")); // NOI18N
btnGoals.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnGoalsActionPerformed(evt);
}
});
org.openide.awt.Mnemonics.setLocalizedText(cbAlwaysShow, org.openide.util.NbBundle.getMessage(SettingsPanel.class, "SettingsPanel.cbAlwaysShow.text")); // NOI18N
org.openide.awt.Mnemonics.setLocalizedText(cbReuse, org.openide.util.NbBundle.getMessage(SettingsPanel.class, "SettingsPanel.cbReuse.text")); // NOI18N
org.openide.awt.Mnemonics.setLocalizedText(cbCollapseSuccessFolds, org.openide.util.NbBundle.getMessage(SettingsPanel.class, "SettingsPanel.cbCollapseSuccessFolds.text")); // NOI18N
org.openide.awt.Mnemonics.setLocalizedText(lblOutputTab, org.openide.util.NbBundle.getMessage(SettingsPanel.class, "SettingsPanel.lblOutputTab.text")); // NOI18N
buttonGroup1.add(rbOutputTabName);
rbOutputTabName.setSelected(true);
org.openide.awt.Mnemonics.setLocalizedText(rbOutputTabName, org.openide.util.NbBundle.getMessage(SettingsPanel.class, "SettingsPanel.rbOutputTabName.text")); // NOI18N
buttonGroup1.add(rbOutputTabId);
org.openide.awt.Mnemonics.setLocalizedText(rbOutputTabId, org.openide.util.NbBundle.getMessage(SettingsPanel.class, "SettingsPanel.rbOutputTabId.text")); // NOI18N
org.openide.awt.Mnemonics.setLocalizedText(cbOutputTabShowConfig, org.openide.util.NbBundle.getMessage(SettingsPanel.class, "SettingsPanel.cbOutputTabShowConfig.text")); // NOI18N
org.openide.awt.Mnemonics.setLocalizedText(cbShowInfoLevel, org.openide.util.NbBundle.getMessage(SettingsPanel.class, "SettingsPanel.cbShowInfoLevel.text")); // NOI18N
cbShowInfoLevel.setToolTipText(org.openide.util.NbBundle.getMessage(SettingsPanel.class, "SettingsPanel.cbShowInfoLevel.toolTipText")); // NOI18N
lblCommandLine.setLabelFor(comMavenHome);
org.openide.awt.Mnemonics.setLocalizedText(lblJdkHome, org.openide.util.NbBundle.getMessage(SettingsPanel.class, "SettingsPanel.lblJdkHome.text")); // NOI18N
org.openide.awt.Mnemonics.setLocalizedText(comManageJdks, org.openide.util.NbBundle.getMessage(SettingsPanel.class, "SettingsPanel.comManageJdks.text")); // NOI18N
comManageJdks.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
comManageJdksActionPerformed(evt);
}
});
org.openide.awt.Mnemonics.setLocalizedText(cbPreferWrapper, org.openide.util.NbBundle.getMessage(SettingsPanel.class, "SettingsPanel.cbPreferWrapper.text")); // NOI18N
javax.swing.GroupLayout pnlExecutionLayout = new javax.swing.GroupLayout(pnlExecution);
pnlExecution.setLayout(pnlExecutionLayout);
pnlExecutionLayout.setHorizontalGroup(
pnlExecutionLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(pnlExecutionLayout.createSequentialGroup()
.addContainerGap()
.addGroup(pnlExecutionLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(pnlExecutionLayout.createSequentialGroup()
.addGroup(pnlExecutionLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addGroup(pnlExecutionLayout.createSequentialGroup()
.addGroup(pnlExecutionLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(cbAlwaysShow)
.addComponent(cbReuse)
.addComponent(cbCollapseSuccessFolds)
.addGroup(pnlExecutionLayout.createSequentialGroup()
.addComponent(lblOutputTab)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(pnlExecutionLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(cbOutputTabShowConfig)
.addGroup(pnlExecutionLayout.createSequentialGroup()
.addComponent(rbOutputTabName)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(rbOutputTabId))))
.addComponent(cbShowInfoLevel)
.addComponent(btnGoals))
.addGap(18, 18, 18))
.addComponent(cbSkipTests, javax.swing.GroupLayout.Alignment.LEADING))
.addGap(0, 55, Short.MAX_VALUE))
.addGroup(pnlExecutionLayout.createSequentialGroup()
.addGroup(pnlExecutionLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(pnlExecutionLayout.createSequentialGroup()
.addComponent(lblOptions)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(txtOptions)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(btnOptions))
.addGroup(pnlExecutionLayout.createSequentialGroup()
.addGroup(pnlExecutionLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(lblCommandLine)
.addComponent(lblJdkHome))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(pnlExecutionLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(pnlExecutionLayout.createSequentialGroup()
.addComponent(cbPreferWrapper)
.addGap(0, 0, Short.MAX_VALUE))
.addComponent(comMavenHome, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addGroup(pnlExecutionLayout.createSequentialGroup()
.addComponent(comJdkHome, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(comManageJdks)))))
.addContainerGap())))
.addGroup(pnlExecutionLayout.createSequentialGroup()
.addGap(119, 119, 119)
.addComponent(lblExternalVersion, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
pnlExecutionLayout.setVerticalGroup(
pnlExecutionLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(pnlExecutionLayout.createSequentialGroup()
.addContainerGap()
.addGroup(pnlExecutionLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(lblCommandLine)
.addComponent(comMavenHome, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(lblExternalVersion, javax.swing.GroupLayout.PREFERRED_SIZE, 14, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(cbPreferWrapper)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(pnlExecutionLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(lblJdkHome)
.addComponent(comJdkHome, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(comManageJdks))
.addGap(31, 31, 31)
.addGroup(pnlExecutionLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(lblOptions)
.addComponent(txtOptions, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(btnOptions))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(cbSkipTests)
.addGap(18, 18, 18)
.addComponent(btnGoals)
.addGap(18, 18, 18)
.addComponent(cbReuse)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(cbShowInfoLevel)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(cbAlwaysShow)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(pnlExecutionLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(lblOutputTab)
.addComponent(rbOutputTabName)
.addComponent(rbOutputTabId))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(cbOutputTabShowConfig)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(cbCollapseSuccessFolds)
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
pnlCards.add(pnlExecution, "execution");
lstCategory.setModel(new javax.swing.AbstractListModel() {
String[] strings = { "execution", "appearance", "dependencies", "index", "experimental" };
public int getSize() { return strings.length; }
public Object getElementAt(int i) { return strings[i]; }
});
lstCategory.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION);
lstCategory.addListSelectionListener(new javax.swing.event.ListSelectionListener() {
public void valueChanged(javax.swing.event.ListSelectionEvent evt) {
lstCategoryValueChanged(evt);
}
});
jScrollPane1.setViewportView(lstCategory);
lblCategory.setLabelFor(lstCategory);
org.openide.awt.Mnemonics.setLocalizedText(lblCategory, org.openide.util.NbBundle.getMessage(SettingsPanel.class, "SettingsPanel.lblCategory.text")); // NOI18N
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()
.addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 140, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(pnlCards, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
.addComponent(lblCategory)))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(lblCategory)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(pnlCards, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(jScrollPane1)))
);
}// </editor-fold>//GEN-END:initComponents
private void btnIndexActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnIndexActionPerformed
btnIndex.setEnabled(false);
new RequestProcessor("Maven Repo Index Transfer/Scan").post(new Runnable() {
@Override
public void run() {
//TODO shall we iterate all "local" repositories??
RepositoryIndexer.indexRepo(RepositoryPreferences.getInstance().getLocalRepository());
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
btnIndex.setEnabled(true);
}
});
}
});
}//GEN-LAST:event_btnIndexActionPerformed
private void btnGoalsActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnGoalsActionPerformed
NbGlobalActionGoalProvider provider = Lookup.getDefault().lookup(NbGlobalActionGoalProvider.class);
assert provider != null;
try {
ActionToGoalMapping mappings = new NetbeansBuildActionXpp3Reader().read(new StringReader(provider.getRawMappingsAsString()));
ActionMappings panel = new ActionMappings(mappings);
panel.setBorder(BorderFactory.createEmptyBorder(12, 12, 12, 12));
panel.getAccessibleContext().setAccessibleDescription(NbBundle.getMessage(SettingsPanel.class, "ACSD_Global"));
DialogDescriptor dd = new DialogDescriptor(panel, org.openide.util.NbBundle.getMessage(SettingsPanel.class, "TIT_Global"));
Object retVal = DialogDisplayer.getDefault().notify(dd);
if (retVal == DialogDescriptor.OK_OPTION) {
FileObject dir = FileUtil.getConfigFile("Projects/org-netbeans-modules-maven"); //NOI18N
// just make sure the name of the file is always nbactions.xml
CustomizerProviderImpl.writeNbActionsModel(dir, mappings, M2Configuration.getFileNameExt(M2Configuration.DEFAULT));
panel.applyToolbarChanges();
}
} catch (Exception ex) {
Exceptions.printStackTrace(ex);
}
}//GEN-LAST:event_btnGoalsActionPerformed
private void btnOptionsActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnOptionsActionPerformed
GlobalOptionsPanel pnl = new GlobalOptionsPanel();
DialogDescriptor dd = new DialogDescriptor(pnl, org.openide.util.NbBundle.getMessage(SettingsPanel.class, "TIT_Add_Globals"));
Object ret = DialogDisplayer.getDefault().notify(dd);
if (ret == DialogDescriptor.OK_OPTION) {
txtOptions.setText(txtOptions.getText() + pnl.getSelectedOnes());
}
}//GEN-LAST:event_btnOptionsActionPerformed
private void cbProjectNodeNameModeActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cbProjectNodeNameModeActionPerformed
txtProjectNodeNameCustomPattern.setVisible(cbProjectNodeNameMode.getSelectedIndex()==cbProjectNodeNameMode.getItemCount()-1);
txtProjectNodeNameCustomPattern.getParent().invalidate();
txtProjectNodeNameCustomPattern.getParent().revalidate();
txtProjectNodeNameCustomPattern.getParent().repaint();
}//GEN-LAST:event_cbProjectNodeNameModeActionPerformed
private void cbProjectNodeNameModeItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_cbProjectNodeNameModeItemStateChanged
}//GEN-LAST:event_cbProjectNodeNameModeItemStateChanged
private void lstCategoryValueChanged(javax.swing.event.ListSelectionEvent evt) {//GEN-FIRST:event_lstCategoryValueChanged
CardLayout cl = (CardLayout) pnlCards.getLayout();
cl.show(pnlCards, (String) lstCategory.getSelectedValue());
}//GEN-LAST:event_lstCategoryValueChanged
private void cbDisableIndexActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cbDisableIndexActionPerformed
// TODO add your handling code here:
}//GEN-LAST:event_cbDisableIndexActionPerformed
private void btnDirectoryActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnDirectoryActionPerformed
JFileChooser chooser = new JFileChooser();
chooser.setDialogTitle("Select alternate directory");
chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
chooser.setFileHidingEnabled(false);
String path = txtDirectory.getText();
if (path == null || path.trim().length() == 0) {
path = new File(System.getProperty("user.home")).getAbsolutePath(); //NOI18N
}
if (path.length() > 0) {
File f = new File(path);
if (f.exists()) {
chooser.setSelectedFile(f);
}
}
if (JFileChooser.APPROVE_OPTION == chooser.showOpenDialog(this)) {
File projectDir = chooser.getSelectedFile();
txtDirectory.setText(projectDir.getAbsolutePath());
}
}//GEN-LAST:event_btnDirectoryActionPerformed
private void comManageJdksActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_comManageJdksActionPerformed
PlatformsCustomizer.showCustomizer(findSelectedJdk(new String[1]));
}//GEN-LAST:event_comManageJdksActionPerformed
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JButton btnDirectory;
private javax.swing.JButton btnGoals;
private javax.swing.JButton btnIndex;
private javax.swing.JButton btnOptions;
private javax.swing.ButtonGroup buttonGroup1;
private javax.swing.JCheckBox cbAlternateLocation;
private javax.swing.JCheckBox cbAlwaysShow;
private javax.swing.JCheckBox cbCollapseSuccessFolds;
private javax.swing.JCheckBox cbDisableIndex;
private javax.swing.JCheckBox cbOutputTabShowConfig;
private javax.swing.JCheckBox cbPreferWrapper;
private javax.swing.JComboBox cbProjectNodeNameMode;
private javax.swing.JCheckBox cbReuse;
private javax.swing.JCheckBox cbShowInfoLevel;
private javax.swing.JCheckBox cbSkipTests;
private javax.swing.JCheckBox cbUseBestMaven;
private javax.swing.JComboBox comBinaries;
private javax.swing.JComboBox comIndex;
private javax.swing.JComboBox comJavadoc;
private javax.swing.JComboBox comJdkHome;
private javax.swing.JButton comManageJdks;
private javax.swing.JComboBox comMavenHome;
private javax.swing.JComboBox comSource;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel3;
private javax.swing.JLabel jLabel4;
private javax.swing.JLabel jLabel5;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JLabel lblBinaries;
private javax.swing.JLabel lblCategory;
private javax.swing.JLabel lblCommandLine;
private javax.swing.JLabel lblDirectory;
private javax.swing.JLabel lblExternalVersion;
private javax.swing.JLabel lblHint;
private javax.swing.JLabel lblIndex;
private javax.swing.JLabel lblJavadoc;
private javax.swing.JLabel lblJdkHome;
private javax.swing.JLabel lblOptions;
private javax.swing.JLabel lblOutputTab;
private javax.swing.JLabel lblSource;
private javax.swing.JList lstCategory;
private javax.swing.JPanel plnExperimental;
private javax.swing.JPanel pnlAppearance;
private javax.swing.JPanel pnlCards;
private javax.swing.JPanel pnlDependencies;
private javax.swing.JPanel pnlExecution;
private javax.swing.JPanel pnlIndex;
private javax.swing.JRadioButton rbOutputTabId;
private javax.swing.JRadioButton rbOutputTabName;
private javax.swing.JTextField txtDirectory;
private javax.swing.JTextField txtOptions;
private javax.swing.JTextField txtProjectNodeNameCustomPattern;
// End of variables declaration//GEN-END:variables
private DefaultComboBoxModel getProjectNodeModel() {
return new javax.swing.DefaultComboBoxModel(new String[] {
NbBundle.getMessage(SettingsPanel.class, "SettingsPanel.lblDefault.text"), // NOI18N
"${project.artifactId}", // NOI18N
"${project.artifactId}-TRUNK", // NOI18N
"${project.artifactId}-${project.version}", // NOI18N
"${project.groupId}.${project.artifactId}", // NOI18N
"${project.groupId}.${project.artifactId}-${project.version}", // NOI18N
NbBundle.getMessage(SettingsPanel.class, "SettingsPanel.lblCustom.text")}); // NOI18N
}
private void browseAddNewRuntime() {
JFileChooser chooser = new JFileChooser();
chooser.setDialogTitle(org.openide.util.NbBundle.getMessage(SettingsPanel.class, "TIT_Select2"));
chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
chooser.setFileHidingEnabled(false);
int selected = comMavenHome.getSelectedIndex();
String path = getSelectedRuntime(selected);
if (path == null || path.trim().length() == 0) {
path = new File(System.getProperty("user.home")).getAbsolutePath(); //NOI18N
}
if (path.length() > 0) {
File f = new File(path);
if (f.exists()) {
chooser.setSelectedFile(f);
}
}
if (JFileChooser.APPROVE_OPTION == chooser.showOpenDialog(this)) {
File projectDir = chooser.getSelectedFile();
String newRuntimePath = FileUtil.normalizeFile(projectDir).getAbsolutePath();
boolean existed = false;
List<String> runtimes = new ArrayList<String>();
runtimes.addAll(predefinedRuntimes);
runtimes.addAll(userDefinedMavenRuntimes);
for (String runtime : runtimes) {
if (runtime.equals(newRuntimePath)) {
existed = true;
}
}
if (!existed) {
// do not add duplicated directory
if (userDefinedMavenRuntimes.isEmpty()) {
mavenHomeDataModel.insertElementAt(SEPARATOR, predefinedRuntimes.size());
}
userDefinedMavenRuntimes.add(newRuntimePath);
mavenHomeDataModel.insertElementAt(newRuntimePath, runtimes.size() + 1);
}
comMavenHome.setSelectedItem(newRuntimePath);
}
}
@Messages({
"MAVEN_RUNTIME_Bundled=Bundled",
"# {0} - external maven",
"MAVEN_RUNTIME_External={0}",
"MAVEN_RUNTIME_Browse=Browse..."})
public void setValues() {
txtOptions.setText(MavenSettings.getDefault().getDefaultOptions());
final List<String> predefined = new ArrayList<String>();
final List<String> user = new ArrayList<String>();
RP.post(new Runnable() {
@Override
public void run() {
predefined.add("");
String defaultExternalMavenRuntime = MavenSettings.getDefaultExternalMavenRuntime();
if (defaultExternalMavenRuntime != null) {
predefined.add(defaultExternalMavenRuntime);
}
user.addAll(MavenSettings.getDefault().getUserDefinedMavenRuntimes());
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
predefinedRuntimes.clear();
userDefinedMavenRuntimes.clear();
userDefinedMavenRuntimesStored.clear();
predefinedRuntimes.addAll(predefined);
userDefinedMavenRuntimes.addAll(user);
userDefinedMavenRuntimesStored.addAll(user);
comMavenHome.removeActionListener(listItemChangedListener);
mavenHomeDataModel.removeAllElements();
File command = EmbedderFactory.getMavenHome();
for (String runtime : predefinedRuntimes) {
boolean bundledRuntime = runtime.isEmpty();
String desc = bundledRuntime ? MAVEN_RUNTIME_Bundled()
: MAVEN_RUNTIME_External(runtime);
mavenHomeDataModel.addElement(desc);
}
jdkHomeDataModel.removeAllElements();
JavaPlatform def = JavaPlatformManager.getDefault().getDefaultPlatform();
String defJdkName = MavenSettings.getDefault().getDefaultJdk();
if (defJdkName.isEmpty()) {
defJdkName = def.getDisplayName();
}
for (JavaPlatform p : JavaPlatformManager.getDefault().getInstalledPlatforms()) {
jdkHomeDataModel.addElement(p.getDisplayName());
String antName = p.getProperties().get("platform.ant.name"); // NOI18N
if (defJdkName.equals(p.getDisplayName()) || defJdkName.equals(antName)) {
jdkHomeDataModel.setSelectedItem(p.getDisplayName());
}
}
if (!userDefinedMavenRuntimes.isEmpty()) {
mavenHomeDataModel.addElement(SEPARATOR);
for (String runtime : userDefinedMavenRuntimes) {
String desc = MAVEN_RUNTIME_External(runtime); // NOI18N
mavenHomeDataModel.addElement(desc);
}
}
mavenHomeDataModel.addElement(SEPARATOR);
mavenHomeDataModel.addElement(MAVEN_RUNTIME_Browse());
comMavenHome.setSelectedItem(command.getAbsolutePath()); //NOI18N
listDataChanged();
lastSelected = comMavenHome.getSelectedIndex();
comMavenHome.addActionListener(listItemChangedListener);
changed = false; //#163955 - do not fire change events on load
//listDataChanged() sets changed to true
}
});
}
});
comIndex.setSelectedIndex(RepositoryPreferences.getIndexUpdateFrequency());
cbDisableIndex.setSelected(!RepositoryPreferences.isIndexRepositories());
comBinaries.setSelectedItem(MavenSettings.getDefault().getBinaryDownloadStrategy());
comJavadoc.setSelectedItem(MavenSettings.getDefault().getJavadocDownloadStrategy());
comSource.setSelectedItem(MavenSettings.getDefault().getSourceDownloadStrategy());
cbSkipTests.setSelected(MavenSettings.getDefault().isSkipTests());
cbAlwaysShow.setSelected(MavenSettings.getDefault().isAlwaysShowOutput());
cbShowInfoLevel.setSelected(MavenSettings.getDefault().isShowLoggingLevel());
cbReuse.setSelected(MavenSettings.getDefault().isReuseOutputTabs());
cbCollapseSuccessFolds.setSelected(MavenSettings.getDefault().isCollapseSuccessFolds());
cbOutputTabShowConfig.setSelected(MavenSettings.getDefault().isOutputTabShowConfig());
cbPreferWrapper.setSelected(MavenSettings.getDefault().isPreferMavenWrapper());
cbUseBestMaven.setSelected(MavenSettings.getDefault().isUseBestMaven());
cbAlternateLocation.setSelected(MavenSettings.getDefault().isUseBestMavenAltLocation());
txtDirectory.setText(MavenSettings.getDefault().getBestMavenAltLocation());
if (MavenSettings.OutputTabName.PROJECT_NAME.equals(MavenSettings.getDefault().getOutputTabName())) {
rbOutputTabName.setSelected(true);
} else {
rbOutputTabId.setSelected(true);
}
final String pattern = MavenSettings.getDefault().getProjectNodeNamePattern();
txtProjectNodeNameCustomPattern.setText("");
if (null == pattern || pattern.isEmpty()) {
//default
cbProjectNodeNameMode.setSelectedIndex(0);
} else {
//ignore the "default" entry
//ignore the "custom..." entry
final int start = 1;
final int end = cbProjectNodeNameMode.getItemCount() - 1;
boolean foundPredefinedPattern = false;
for (int i = start; i < end; i++) {
final Object itemAt = cbProjectNodeNameMode.getItemAt(i);
if (pattern.equals(itemAt)) {
cbProjectNodeNameMode.setSelectedIndex(i);
foundPredefinedPattern = true;
break;
}
}
if (!foundPredefinedPattern) {
//set mode to custom
cbProjectNodeNameMode.setSelectedIndex(cbProjectNodeNameMode.getItemCount() - 1);
txtProjectNodeNameCustomPattern.setText(pattern);
}
}
changed = false; //#163955 - do not fire change events on load
}
public void applyValues() {
MavenSettings.getDefault().setDefaultOptions(txtOptions.getText().trim());
MavenSettings.getDefault().setDefaultJdk(findSelectedJdkName());
// remember only user-defined runtimes of RUNTIME_COUNT_LIMIT count at the most
List<String> runtimes = new ArrayList<String>();
for (int i = 0; i < userDefinedMavenRuntimes.size() && i < RUNTIME_COUNT_LIMIT; ++i) {
runtimes.add(0, userDefinedMavenRuntimes.get(userDefinedMavenRuntimes.size() - 1 - i));
}
int selected = comMavenHome.getSelectedIndex() - predefinedRuntimes.size() - 1;
if (selected >= 0 && runtimes.size() == RUNTIME_COUNT_LIMIT &&
userDefinedMavenRuntimes.size() - RUNTIME_COUNT_LIMIT > selected) {
runtimes.set(0, userDefinedMavenRuntimes.get(selected));
}
if (predefinedRuntimes.size() > 1) {
runtimes.add(0, predefinedRuntimes.get(1));
}
MavenSettings.getDefault().setMavenRuntimes(runtimes);
String cl = mavenRuntimeHome;
//MEVENIDE-553
File command = (cl == null || cl.isEmpty()) ? null : new File(cl);
if (command != null && command.isDirectory()) {
EmbedderFactory.setMavenHome(command);
} else {
EmbedderFactory.setMavenHome(null);
}
RepositoryPreferences.setIndexUpdateFrequency(comIndex.getSelectedIndex());
RepositoryPreferences.setIndexRepositories(!cbDisableIndex.isSelected());
MavenSettings.getDefault().setBinaryDownloadStrategy((MavenSettings.DownloadStrategy) comBinaries.getSelectedItem());
MavenSettings.getDefault().setJavadocDownloadStrategy((MavenSettings.DownloadStrategy) comJavadoc.getSelectedItem());
MavenSettings.getDefault().setSourceDownloadStrategy((MavenSettings.DownloadStrategy) comSource.getSelectedItem());
MavenSettings.getDefault().setSkipTests(cbSkipTests.isSelected());
MavenSettings.getDefault().setAlwaysShowOutput(cbAlwaysShow.isSelected());
MavenSettings.getDefault().setShowLoggingLevel(cbShowInfoLevel.isSelected());
MavenSettings.getDefault().setReuseOutputTabs(cbReuse.isSelected());
MavenSettings.getDefault().setCollapseSuccessFolds(cbCollapseSuccessFolds.isSelected());
MavenSettings.getDefault().setOutputTabShowConfig(cbOutputTabShowConfig.isSelected());
MavenSettings.getDefault().setPreferMavenWrapper(cbPreferWrapper.isSelected());
MavenSettings.getDefault().setUseBestMaven(cbUseBestMaven.isSelected());
MavenSettings.getDefault().setUseBestMavenAltLocation(cbAlternateLocation.isSelected());
if (cbAlternateLocation.isSelected()) {
MavenSettings.getDefault().setBestMavenAltLocation(txtDirectory.getText());
}
MavenSettings.OutputTabName name = rbOutputTabName.isSelected() ? MavenSettings.OutputTabName.PROJECT_NAME : MavenSettings.OutputTabName.PROJECT_ID;
MavenSettings.getDefault().setOutputTabName(name);
if (0 == cbProjectNodeNameMode.getSelectedIndex()) {
//selected "default" entry
MavenSettings.getDefault().setProjectNodeNamePattern(null);
} else if (cbProjectNodeNameMode.getSelectedIndex() == cbProjectNodeNameMode.getItemCount() - 1) {
//selected "custom..." entry
MavenSettings.getDefault().setProjectNodeNamePattern(txtProjectNodeNameCustomPattern.getText());
} else {
//a predefined pattern entry was selected
MavenSettings.getDefault().setProjectNodeNamePattern(cbProjectNodeNameMode.getSelectedItem().toString());
}
changed = false;
}
boolean hasValidValues() {
return valid;
}
boolean hasChangedValues() {
return changed;
}
private void fireChanged() {
boolean isChanged = false;
isChanged = !MavenSettings.getDefault().getDefaultOptions().equals(txtOptions.getText().trim());
// remember only user-defined runtimes of RUNTIME_COUNT_LIMIT count at the most
List<String> runtimes = new ArrayList<String>();
for (int i = 0; i < userDefinedMavenRuntimes.size() && i < RUNTIME_COUNT_LIMIT; ++i) {
runtimes.add(0, userDefinedMavenRuntimes.get(userDefinedMavenRuntimes.size() - 1 - i));
}
int selected = comMavenHome.getSelectedIndex() - predefinedRuntimes.size() - 1;
if (selected >= 0 && runtimes.size() == RUNTIME_COUNT_LIMIT
&& userDefinedMavenRuntimes.size() - RUNTIME_COUNT_LIMIT > selected) {
runtimes.set(0, userDefinedMavenRuntimes.get(selected));
}
if (predefinedRuntimes.size() > 1) {
runtimes.add(0, predefinedRuntimes.get(1));
}
isChanged |= !userDefinedMavenRuntimesStored.equals(runtimes);
isChanged |= !findSelectedJdkName().equals(MavenSettings.getDefault().getDefaultJdk());
String cl = mavenRuntimeHome;
//MEVENIDE-553
File command = (cl == null || cl.isEmpty()) ? null : new File(cl);
File mavenHome = EmbedderFactory.getMavenHome();
if(mavenHome == null) {
isChanged |= command != null && command.isDirectory();
} else {
isChanged |= !mavenHome.equals(command == null ? EmbedderFactory.getDefaultMavenHome() : command);
}
isChanged |= RepositoryPreferences.getIndexUpdateFrequency() != comIndex.getSelectedIndex();
isChanged |= RepositoryPreferences.isIndexRepositories() == cbDisableIndex.isSelected();
isChanged |= MavenSettings.getDefault().getBinaryDownloadStrategy().compareTo((MavenSettings.DownloadStrategy) comBinaries.getSelectedItem()) != 0;
isChanged |= MavenSettings.getDefault().getJavadocDownloadStrategy().compareTo((MavenSettings.DownloadStrategy) comJavadoc.getSelectedItem()) != 0;
isChanged |= MavenSettings.getDefault().getSourceDownloadStrategy().compareTo((MavenSettings.DownloadStrategy) comSource.getSelectedItem()) != 0;
isChanged |= MavenSettings.getDefault().isSkipTests() != cbSkipTests.isSelected();
isChanged |= MavenSettings.getDefault().isAlwaysShowOutput() != cbAlwaysShow.isSelected();
isChanged |= MavenSettings.getDefault().isShowLoggingLevel() != cbShowInfoLevel.isSelected();
isChanged |= MavenSettings.getDefault().isReuseOutputTabs() != cbReuse.isSelected();
isChanged |= MavenSettings.getDefault().isCollapseSuccessFolds() != cbCollapseSuccessFolds.isSelected();
isChanged |= MavenSettings.getDefault().isOutputTabShowConfig() != cbOutputTabShowConfig.isSelected();
isChanged |= MavenSettings.getDefault().isPreferMavenWrapper() != cbPreferWrapper.isSelected();
isChanged |= MavenSettings.getDefault().isUseBestMaven() != cbUseBestMaven.isSelected();
isChanged |= MavenSettings.getDefault().isUseBestMavenAltLocation() != cbAlternateLocation.isSelected();
MavenSettings.OutputTabName name = rbOutputTabName.isSelected() ? MavenSettings.OutputTabName.PROJECT_NAME : MavenSettings.OutputTabName.PROJECT_ID;
isChanged |= MavenSettings.getDefault().getOutputTabName().compareTo(name) != 0;
String projectNodeNamePattern = MavenSettings.getDefault().getProjectNodeNamePattern();
if (cbProjectNodeNameMode.getSelectedIndex() == 0) {
//selected "default" entry
isChanged |= projectNodeNamePattern != null;
} else {
if (cbProjectNodeNameMode.getSelectedIndex() == cbProjectNodeNameMode.getItemCount() - 1) {
//selected "custom..." entry
isChanged |= (projectNodeNamePattern == null ? !txtProjectNodeNameCustomPattern.getText().isEmpty() : !projectNodeNamePattern.equals(txtProjectNodeNameCustomPattern.getText()));
} else {
//a predefined pattern entry was selected
isChanged |= (projectNodeNamePattern == null ? !cbProjectNodeNameMode.getSelectedItem().toString().isEmpty() : !projectNodeNamePattern.equals(cbProjectNodeNameMode.getSelectedItem().toString()));
}
}
changed = isChanged;
}
final String findSelectedJdkName() {
String[] name = { null };
findSelectedJdk(name);
return name[0];
}
private final JavaPlatform findSelectedJdk(String[] name) {
if (jdkHomeDataModel == null) {
name[0] = "";
return null;
}
String jdk = (String) jdkHomeDataModel.getSelectedItem();
final JavaPlatform def = JavaPlatformManager.getDefault().getDefaultPlatform();
if (jdk == null || jdk.equals(def.getDisplayName())) {
name[0] = "";
return def;
}
for (JavaPlatform p : JavaPlatformManager.getDefault().getInstalledPlatforms()) {
if (jdk.equals(p.getDisplayName())) {
String antName = p.getProperties().get("platform.ant.name");
if (antName != null) {
name[0] = antName;
return p;
}
}
}
name[0] = jdk;
return null;
}
private class ActionListenerImpl implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
fireChanged();
}
}
private class DocumentListenerImpl implements DocumentListener {
@Override
public void insertUpdate(DocumentEvent e) {
fireChanged();
}
@Override
public void removeUpdate(DocumentEvent e) {
fireChanged();
}
@Override
public void changedUpdate(DocumentEvent e) {
fireChanged();
}
}
}