blob: 14a01976698cfedd35a53377fa36f3e221eb68e0 [file] [log] [blame]
/* ==========================================================================
* Copyright 2006 Mevenide Team
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
* =========================================================================
*/
package org.jetbrains.idea.maven.execution;
import com.intellij.execution.configuration.EnvironmentVariablesComponent;
import com.intellij.openapi.project.Project;
import com.intellij.ui.IdeBorderFactory;
import com.intellij.ui.RawCommandLineEditor;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.idea.maven.project.MavenProject;
import org.jetbrains.idea.maven.project.MavenProjectsManager;
import javax.swing.*;
import java.awt.*;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Properties;
public class MavenRunnerPanel {
protected final Project myProject;
private final boolean myRunConfigurationMode;
private JCheckBox myRunInBackgroundCheckbox;
private RawCommandLineEditor myVMParametersEditor;
private EnvironmentVariablesComponent myEnvVariablesComponent;
private MavenJdkComboBox myJdkCombo;
private JCheckBox mySkipTestsCheckBox;
private MavenPropertiesPanel myPropertiesPanel;
private Map<String, String> myProperties;
public MavenRunnerPanel(@NotNull Project p, boolean isRunConfiguration) {
myProject = p;
myRunConfigurationMode = isRunConfiguration;
}
public JComponent createComponent() {
JPanel panel = new JPanel(new GridBagLayout());
GridBagConstraints c = new GridBagConstraints();
c.fill = GridBagConstraints.HORIZONTAL;
c.anchor = GridBagConstraints.WEST;
c.insets.bottom = 5;
myRunInBackgroundCheckbox = new JCheckBox("Run in background");
myRunInBackgroundCheckbox.setMnemonic('b');
if (!myRunConfigurationMode) {
c.gridx = 0;
c.gridy++;
c.weightx = 1;
c.gridwidth = GridBagConstraints.REMAINDER;
panel.add(myRunInBackgroundCheckbox, c);
}
c.gridwidth = 1;
JLabel labelVMParameters = new JLabel("VM Options:");
labelVMParameters.setDisplayedMnemonic('v');
labelVMParameters.setLabelFor(myVMParametersEditor = new RawCommandLineEditor());
myVMParametersEditor.setDialogCaption(labelVMParameters.getText());
c.gridx = 0;
c.gridy++;
c.weightx = 0;
panel.add(labelVMParameters, c);
c.gridx = 1;
c.weightx = 1;
c.insets.left = 10;
panel.add(myVMParametersEditor, c);
c.insets.left = 0;
JLabel jdkLabel = new JLabel("JRE:");
jdkLabel.setDisplayedMnemonic('j');
jdkLabel.setLabelFor(myJdkCombo = new MavenJdkComboBox(myProject));
c.gridx = 0;
c.gridy++;
c.weightx = 0;
panel.add(jdkLabel, c);
c.gridx = 1;
c.weightx = 1;
c.fill = GridBagConstraints.NONE;
c.insets.left = 10;
panel.add(myJdkCombo, c);
c.insets.left = 0;
c.fill = GridBagConstraints.HORIZONTAL;
myEnvVariablesComponent = new EnvironmentVariablesComponent();
myEnvVariablesComponent.setPassParentEnvs(true);
myEnvVariablesComponent.setLabelLocation(BorderLayout.WEST);
c.gridx = 0;
c.gridy++;
c.weightx = 1;
c.gridwidth = 2;
panel.add(myEnvVariablesComponent, c);
c.gridwidth = 1;
JPanel propertiesPanel = new JPanel(new BorderLayout());
propertiesPanel.setBorder(IdeBorderFactory.createTitledBorder("Properties", false));
propertiesPanel.add(mySkipTestsCheckBox = new JCheckBox("Skip tests"), BorderLayout.NORTH);
mySkipTestsCheckBox.setMnemonic('t');
collectProperties();
propertiesPanel.add(myPropertiesPanel = new MavenPropertiesPanel(myProperties), BorderLayout.CENTER);
myPropertiesPanel.getEmptyText().setText("No properties defined");
c.gridx = 0;
c.gridy++;
c.weightx = c.weighty = 1;
c.gridwidth = c.gridheight = GridBagConstraints.REMAINDER;
c.fill = GridBagConstraints.BOTH;
panel.add(propertiesPanel, c);
return panel;
}
private void collectProperties() {
MavenProjectsManager s = MavenProjectsManager.getInstance(myProject);
Map<String, String> result = new LinkedHashMap<String, String>();
for (MavenProject each : s.getProjects()) {
Properties properties = each.getProperties();
result.putAll((Map)properties);
}
myProperties = result;
}
protected void getData(MavenRunnerSettings data) {
myRunInBackgroundCheckbox.setSelected(data.isRunMavenInBackground());
myVMParametersEditor.setText(data.getVmOptions());
mySkipTestsCheckBox.setSelected(data.isSkipTests());
myJdkCombo.refreshData(data.getJreName());
myPropertiesPanel.setDataFromMap(data.getMavenProperties());
myEnvVariablesComponent.setEnvs(data.getEnvironmentProperties());
myEnvVariablesComponent.setPassParentEnvs(data.isPassParentEnv());
}
protected void setData(MavenRunnerSettings data) {
data.setRunMavenInBackground(myRunInBackgroundCheckbox.isSelected());
data.setVmOptions(myVMParametersEditor.getText().trim());
data.setSkipTests(mySkipTestsCheckBox.isSelected());
data.setJreName(myJdkCombo.getSelectedValue());
data.setMavenProperties(myPropertiesPanel.getDataAsMap());
data.setEnvironmentProperties(myEnvVariablesComponent.getEnvs());
data.setPassParentEnv(myEnvVariablesComponent.isPassParentEnvs());
}
public Project getProject() {
return myProject;
}
}