
org.codehaus.mevenide.netbeans.execute.ui.RunGoalsPanel Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of nb-project Show documentation
Show all versions of nb-project Show documentation
Implementation of a Netbeans project backed by Maven2 POM files.
The newest version!
/* ==========================================================================
* 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.codehaus.mevenide.netbeans.execute.ui;
import org.codehaus.mevenide.netbeans.api.execute.RunConfig;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
import java.util.Properties;
import java.util.Set;
import java.util.StringTokenizer;
import javax.swing.ImageIcon;
import javax.swing.SwingUtilities;
import org.codehaus.mevenide.netbeans.api.GoalsProvider;
import org.codehaus.mevenide.netbeans.TextValueCompleter;
import org.codehaus.mevenide.netbeans.api.ProjectProfileHandler;
import org.codehaus.mevenide.netbeans.execute.BeanRunConfig;
import org.codehaus.mevenide.netbeans.customizer.ActionMappings;
import org.codehaus.mevenide.netbeans.customizer.PropertySplitter;
import org.codehaus.mevenide.netbeans.embedder.EmbedderFactory;
import org.codehaus.mevenide.netbeans.execute.model.ActionToGoalMapping;
import org.codehaus.mevenide.netbeans.execute.model.NetbeansActionMapping;
import org.codehaus.plexus.util.StringUtils;
import org.openide.util.Lookup;
import org.openide.util.RequestProcessor;
import org.openide.util.Utilities;
import org.codehaus.mevenide.netbeans.NbMavenProject;
/**
*
* @author mkleint
*/
public class RunGoalsPanel extends javax.swing.JPanel {
private List historyMappings;
private int historyIndex = 0;
private TextValueCompleter goalcompleter;
private TextValueCompleter profilecompleter;
/** Creates new form RunGoalsPanel */
public RunGoalsPanel() {
initComponents();
historyMappings = new ArrayList();
btnPrev.setIcon(new ImageIcon(Utilities.loadImage("org/codehaus/mevenide/netbeans/execute/back.png"))); //NOI18N
btnNext.setIcon(new ImageIcon(Utilities.loadImage("org/codehaus/mevenide/netbeans/execute/forward.png"))); //NOI18N
goalcompleter = new TextValueCompleter(new ArrayList(0), txtGoals, " "); //NOI18N
goalcompleter.setLoading(true);
// doing lazy..
RequestProcessor.getDefault().post(new Runnable() {
public void run() {
GoalsProvider provider = Lookup.getDefault().lookup(GoalsProvider.class);
if (provider != null) {
final Set strs = provider.getAvailableGoals();
try {
List phases = EmbedderFactory.getProjectEmbedder().getLifecyclePhases();
strs.addAll(phases);
} catch (Exception e) {
// oh wel just ignore..
e.printStackTrace();
}
SwingUtilities.invokeLater(new Runnable() {
public void run() {
goalcompleter.setValueList(strs);
goalcompleter.setLoading(false);
}
});
}
}
});
profilecompleter = new TextValueCompleter(new ArrayList(0), txtProfiles, " ");
}
@Override
public void addNotify() {
super.addNotify();
txtGoals.requestFocus();
}
private void readProfiles(final NbMavenProject mavenProject) {
profilecompleter.setLoading(true);
RequestProcessor.getDefault().post(new Runnable() {
public void run() {
ProjectProfileHandler profileHandler=mavenProject.getLookup().lookup(ProjectProfileHandler.class);
final List ret = profileHandler.getAllProfiles();
SwingUtilities.invokeLater(new Runnable() {
public void run() {
profilecompleter.setValueList(ret);
profilecompleter.setLoading(false);
}
});
}
});
}
private String createSpaceSeparatedList(List list) {
String str = ""; //NOI18N
if (list != null) {
Iterator it = list.iterator();
while (it.hasNext()) {
String elem = (String) it.next();
str = str + elem + " "; //NOI18N
}
}
return str;
}
public void readMapping(NetbeansActionMapping mapp, NbMavenProject project, ActionToGoalMapping historyMappings) {
this.historyMappings.clear();
this.historyMappings.addAll(historyMappings.getActions());
this.historyMappings.add(mapp);
historyIndex = this.historyMappings.size();
readProfiles(project);
moveHistory(-1);
}
public void readConfig(final RunConfig config) {
historyMappings.clear();
btnNext.setVisible(false);
btnPrev.setVisible(false);
txtGoals.setText(createSpaceSeparatedList(config.getGoals()));
if (config.getProperties() != null) {
StringBuffer buf = new StringBuffer();
Iterator it = config.getProperties().keySet().iterator();
while (it.hasNext()) {
String key = (String) it.next();
buf.append(key).append("=").append("\"").append(config.getProperties().getProperty(key)).append("\"").append("\n"); //NOI18N
}
taProperties.setText(buf.toString());
if (buf.toString().matches(".*maven\\.test\\.skip\\s*=\\s*true\\s*.*")) { //NOI18N
cbSkipTests.setSelected(true);
}
} else {
taProperties.setText(""); //NOI18N
}
List activatedProfiles = config.getActivatedProfiles();
if (config.getProject() != null) {
ProjectProfileHandler profileHandler=config.getProject().getLookup().lookup(ProjectProfileHandler.class);
List retrieveMergedActiveProfiles =
profileHandler.getMergedActiveProfiles(false);
txtProfiles.setText(createSpaceSeparatedList(retrieveMergedActiveProfiles));
} else {
txtProfiles.setText(createSpaceSeparatedList(activatedProfiles));
}
setUpdateSnapshots(config.isUpdateSnapshots());
setOffline(config.isOffline() != null ? config.isOffline().booleanValue() : false);
setRecursive(config.isRecursive());
setShowDebug(config.isShowDebug());
if(config.getProject()!=null){
readProfiles(config.getProject());
}
}
private void readMapping(NetbeansActionMapping mapp) {
txtGoals.setText(createSpaceSeparatedList(mapp.getGoals()));
if (mapp.getProperties() != null) {
StringBuffer buf = new StringBuffer();
Iterator it = mapp.getProperties().keySet().iterator();
while (it.hasNext()) {
String key = (String) it.next();
buf.append(key).append("=").append(mapp.getProperties().getProperty(key)).append("\n"); //NOI18N
}
taProperties.setText(buf.toString());
if (buf.toString().matches(".*maven\\.test\\.skip\\s*=\\s*true\\s*.*")) { //NOI18N
cbSkipTests.setSelected(true);
}
} else {
taProperties.setText(""); //NOI18N
}
txtProfiles.setText(createSpaceSeparatedList(mapp.getActivatedProfiles()));
}
public void applyValues(NetbeansActionMapping mapp) {
StringTokenizer tok = new StringTokenizer(txtGoals.getText().trim());
List lst = new ArrayList();
while (tok.hasMoreTokens()) {
lst.add(tok.nextToken());
}
mapp.setGoals(lst.size() > 0 ? lst : null);
PropertySplitter split = new PropertySplitter(taProperties.getText());
String token = split.nextPair();
Properties props = new Properties();
while (token != null) {
String[] prp = StringUtils.split(token, "=", 2); //NOI18N
if (prp.length == 2) {
props.setProperty(prp[0], prp[1]);
}
token = split.nextPair();
}
if (cbSkipTests.isSelected()) {
props.setProperty(ActionMappings.PROP_SKIP_TEST, "true"); //NOI18N
}
mapp.setProperties(props);
tok = new StringTokenizer(txtProfiles.getText().trim());
lst = new ArrayList();
while (tok.hasMoreTokens()) {
lst.add(tok.nextToken());
}
mapp.setActivatedProfiles(lst);
}
public void applyValues(BeanRunConfig rc) {
StringTokenizer tok = new StringTokenizer(txtGoals.getText().trim());
List lst = new ArrayList();
while (tok.hasMoreTokens()) {
lst.add(tok.nextToken());
}
rc.setGoals(lst.size() > 0 ? lst : Collections.singletonList("install")); //NOI18N
tok = new StringTokenizer(txtProfiles.getText().trim());
lst = new ArrayList();
while (tok.hasMoreTokens()) {
lst.add(tok.nextToken());
}
rc.setActivatedProfiles(lst);
PropertySplitter split = new PropertySplitter(taProperties.getText());
String token = split.nextPair();
Properties props = new Properties();
while (token != null) {
String[] prp = StringUtils.split(token, "=", 2); //NOI18N
if (prp.length == 2) {
props.setProperty(prp[0], prp[1]);
}
token = split.nextPair();
}
if (cbSkipTests.isSelected()) {
props.setProperty(ActionMappings.PROP_SKIP_TEST, "true"); //NOI18N
}
rc.setProperties(props);
rc.setRecursive(isRecursive());
rc.setShowDebug(isShowDebug());
rc.setUpdateSnapshots(isUpdateSnapshots());
rc.setOffline(Boolean.valueOf(isOffline()));
}
/** 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.
*/
// //GEN-BEGIN:initComponents
private void initComponents() {
lblGoals = new javax.swing.JLabel();
txtGoals = new javax.swing.JTextField();
lblProfiles = new javax.swing.JLabel();
txtProfiles = new javax.swing.JTextField();
jLabel2 = new javax.swing.JLabel();
jScrollPane1 = new javax.swing.JScrollPane();
taProperties = new javax.swing.JTextArea();
cbRecursive = new javax.swing.JCheckBox();
cbOffline = new javax.swing.JCheckBox();
cbDebug = new javax.swing.JCheckBox();
cbUpdateSnapshots = new javax.swing.JCheckBox();
cbSkipTests = new javax.swing.JCheckBox();
btnNext = new javax.swing.JButton();
btnPrev = new javax.swing.JButton();
cbRemember = new javax.swing.JCheckBox();
txtRemember = new javax.swing.JTextField();
jSeparator1 = new javax.swing.JSeparator();
org.openide.awt.Mnemonics.setLocalizedText(lblGoals, org.openide.util.NbBundle.getMessage(RunGoalsPanel.class, "LBL_Goals")); // NOI18N
org.openide.awt.Mnemonics.setLocalizedText(lblProfiles, org.openide.util.NbBundle.getMessage(RunGoalsPanel.class, "LBL_Profiles")); // NOI18N
org.openide.awt.Mnemonics.setLocalizedText(jLabel2, org.openide.util.NbBundle.getMessage(RunGoalsPanel.class, "LBL_Properties")); // NOI18N
taProperties.setColumns(20);
taProperties.setRows(5);
jScrollPane1.setViewportView(taProperties);
org.openide.awt.Mnemonics.setLocalizedText(cbRecursive, org.openide.util.NbBundle.getMessage(RunGoalsPanel.class, "LBL_Recursive")); // NOI18N
cbRecursive.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 0, 0, 0));
cbRecursive.setMargin(new java.awt.Insets(0, 0, 0, 0));
org.openide.awt.Mnemonics.setLocalizedText(cbOffline, org.openide.util.NbBundle.getMessage(RunGoalsPanel.class, "LBL_Offline")); // NOI18N
cbOffline.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 0, 0, 0));
cbOffline.setMargin(new java.awt.Insets(0, 0, 0, 0));
org.openide.awt.Mnemonics.setLocalizedText(cbDebug, org.openide.util.NbBundle.getMessage(RunGoalsPanel.class, "LBL_Debug")); // NOI18N
cbDebug.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 0, 0, 0));
cbDebug.setMargin(new java.awt.Insets(0, 0, 0, 0));
org.openide.awt.Mnemonics.setLocalizedText(cbUpdateSnapshots, org.openide.util.NbBundle.getMessage(RunGoalsPanel.class, "LBL_Update_Snapshots")); // NOI18N
cbUpdateSnapshots.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 0, 0, 0));
cbUpdateSnapshots.setMargin(new java.awt.Insets(0, 0, 0, 0));
org.openide.awt.Mnemonics.setLocalizedText(cbSkipTests, org.openide.util.NbBundle.getMessage(RunGoalsPanel.class, "LBL_Skip_Tests")); // NOI18N
cbSkipTests.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 0, 0, 0));
cbSkipTests.setMargin(new java.awt.Insets(0, 0, 0, 0));
cbSkipTests.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
cbSkipTestsActionPerformed(evt);
}
});
btnNext.setToolTipText(org.openide.util.NbBundle.getMessage(RunGoalsPanel.class, "TIP_Next")); // NOI18N
btnNext.setMargin(new java.awt.Insets(2, 2, 2, 2));
btnNext.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnNextActionPerformed(evt);
}
});
btnPrev.setToolTipText(org.openide.util.NbBundle.getMessage(RunGoalsPanel.class, "TIP_Prev")); // NOI18N
btnPrev.setMargin(new java.awt.Insets(2, 2, 2, 2));
btnPrev.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnPrevActionPerformed(evt);
}
});
org.openide.awt.Mnemonics.setLocalizedText(cbRemember, org.openide.util.NbBundle.getMessage(RunGoalsPanel.class, "LBL_Remember")); // NOI18N
cbRemember.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 0, 0, 0));
cbRemember.setMargin(new java.awt.Insets(0, 0, 0, 0));
org.jdesktop.layout.GroupLayout layout = new org.jdesktop.layout.GroupLayout(this);
this.setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
.add(layout.createSequentialGroup()
.addContainerGap()
.add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
.add(layout.createSequentialGroup()
.add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
.add(cbRecursive)
.add(cbOffline))
.addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
.add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
.add(cbDebug)
.add(cbUpdateSnapshots)))
.add(cbSkipTests)
.add(layout.createSequentialGroup()
.add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
.add(lblGoals)
.add(lblProfiles)
.add(jLabel2))
.addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
.add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
.add(jScrollPane1, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 364, Short.MAX_VALUE)
.add(txtGoals, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 364, Short.MAX_VALUE)
.add(txtProfiles, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 364, Short.MAX_VALUE)))
.add(layout.createSequentialGroup()
.add(btnPrev)
.addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
.add(btnNext)
.add(52, 52, 52)
.add(cbRemember)
.addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
.add(txtRemember, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 254, Short.MAX_VALUE))
.add(jSeparator1, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 442, Short.MAX_VALUE))
.addContainerGap())
);
layout.setVerticalGroup(
layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
.add(layout.createSequentialGroup()
.addContainerGap()
.add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
.add(lblGoals)
.add(txtGoals, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
.add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
.add(lblProfiles)
.add(txtProfiles, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
.add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
.add(jLabel2)
.add(jScrollPane1, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
.add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
.add(cbRecursive)
.add(cbUpdateSnapshots))
.addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
.add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
.add(cbOffline)
.add(cbDebug))
.addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
.add(cbSkipTests)
.addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
.add(jSeparator1, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 10, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
.add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
.add(btnPrev)
.add(btnNext)
.add(cbRemember)
.add(txtRemember, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
.addContainerGap(org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
}// //GEN-END:initComponents
private void cbSkipTestsActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cbSkipTestsActionPerformed
String current = taProperties.getText();
if (current.contains(ActionMappings.PROP_SKIP_TEST)) {
taProperties.setText(current.replaceAll(".*maven\\.test\\.skip\\s*=\\s*[a-z]*\\s*.*", "maven.test.skip=" + (cbSkipTests.isSelected() ? "true" : "false"))); //NOI18N
} else if (cbSkipTests.isSelected()) {
taProperties.setText(taProperties.getText() + "\nmaven.test.skip=true"); //NOI18N
}
}//GEN-LAST:event_cbSkipTestsActionPerformed
private void btnNextActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnNextActionPerformed
moveHistory(1);
}//GEN-LAST:event_btnNextActionPerformed
private void moveHistory(int step) {
historyIndex = historyIndex + step;
readMapping(historyMappings.get(historyIndex));
btnPrev.setEnabled(historyIndex != 0);
btnNext.setEnabled(historyIndex != (historyMappings.size() - 1));
}
private void btnPrevActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnPrevActionPerformed
moveHistory(-1);
}//GEN-LAST:event_btnPrevActionPerformed
public boolean isOffline() {
return cbOffline.isSelected();
}
public boolean isShowDebug() {
return cbDebug.isSelected();
}
public void setOffline(boolean b) {
cbOffline.setSelected(b);
}
public void setShowDebug(boolean b) {
cbDebug.setSelected(b);
}
public void setUpdateSnapshots(boolean b) {
cbUpdateSnapshots.setSelected(b);
}
public void setSkipTests(boolean b) {
cbSkipTests.setSelected(b);
}
public void setRecursive(boolean b) {
cbRecursive.setSelected(b);
}
public boolean isSkipTests() {
return cbSkipTests.isSelected();
}
public boolean isRecursive() {
return cbRecursive.isSelected();
}
public boolean isUpdateSnapshots() {
return cbUpdateSnapshots.isSelected();
}
public String isRememberedAs() {
if (cbRemember.isSelected()) {
String txt = txtRemember.getText().trim();
if (txt.length() > 0) {
return txt;
}
}
return null;
}
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JButton btnNext;
private javax.swing.JButton btnPrev;
private javax.swing.JCheckBox cbDebug;
private javax.swing.JCheckBox cbOffline;
private javax.swing.JCheckBox cbRecursive;
private javax.swing.JCheckBox cbRemember;
private javax.swing.JCheckBox cbSkipTests;
private javax.swing.JCheckBox cbUpdateSnapshots;
private javax.swing.JLabel jLabel2;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JSeparator jSeparator1;
private javax.swing.JLabel lblGoals;
private javax.swing.JLabel lblProfiles;
private javax.swing.JTextArea taProperties;
private javax.swing.JTextField txtGoals;
private javax.swing.JTextField txtProfiles;
private javax.swing.JTextField txtRemember;
// End of variables declaration//GEN-END:variables
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy