blob: 10e0d54426f073bd17f2e56cbcf8bd874aa163a8 [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.javaee.project.api.ant.ui.wizard;
import org.netbeans.modules.javaee.project.api.ui.UserProjectSettings;
import java.io.File;
import java.io.IOException;
import java.math.BigDecimal;
import java.text.MessageFormat;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.StringTokenizer;
import java.util.TreeSet;
import javax.swing.DefaultComboBoxModel;
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;
import org.netbeans.api.project.Project;
import org.netbeans.api.project.ProjectInformation;
import org.netbeans.api.project.ProjectUtils;
import org.netbeans.api.project.ui.OpenProjects;
import org.netbeans.modules.j2ee.common.FileSearchUtility;
import org.netbeans.modules.j2ee.deployment.devmodules.api.Deployment;
import org.netbeans.modules.j2ee.deployment.devmodules.api.InstanceRemovedException;
import org.netbeans.modules.j2ee.deployment.devmodules.api.J2eeModule;
import org.netbeans.modules.j2ee.deployment.devmodules.api.J2eeApplication;
import org.netbeans.modules.j2ee.deployment.devmodules.api.J2eePlatform;
import org.netbeans.modules.j2ee.deployment.devmodules.api.ServerManager;
import org.netbeans.modules.j2ee.deployment.devmodules.spi.J2eeApplicationProvider;
import org.netbeans.api.j2ee.core.Profile;
import org.netbeans.api.java.platform.JavaPlatform;
import org.netbeans.api.java.platform.Specification;
import org.netbeans.api.project.ant.AntArtifactQuery;
import org.netbeans.modules.j2ee.deployment.devmodules.api.ServerInstance;
import org.netbeans.spi.project.support.ant.PropertyUtils;
import org.openide.WizardDescriptor;
import org.openide.filesystems.FileObject;
import org.openide.filesystems.FileUtil;
import org.openide.util.Exceptions;
import org.openide.util.HelpCtx;
import org.openide.util.NbBundle;
import org.openide.util.Utilities;
final class ProjectServerPanel extends javax.swing.JPanel implements DocumentListener {
private ProjectServerWizardPanel wizard;
private boolean contextModified = false;
private final DefaultComboBoxModel<ServerInstanceWrapper> serversModel = new DefaultComboBoxModel<>();
private J2eeVersionWarningPanel warningPanel;
private boolean sharableProject;
private List<Project> earProjects;
private final J2eeModule.Type j2eeModuleType;
private File projectLocation;
private boolean importScenario;
private BigDecimal xmlVersion;
@Deprecated
public ProjectServerPanel(Object j2eeModuleType, String name, String title,
ProjectServerWizardPanel wizard, boolean showAddToEar,
boolean mainAppClientClass, boolean showContextPath, boolean createProjects, boolean importScenario) {
this(J2eeModule.Type.fromJsrType(j2eeModuleType), name, title, wizard, showAddToEar, mainAppClientClass, showContextPath, createProjects, importScenario);
}
/** Creates new form ProjectServerPanel */
public ProjectServerPanel(J2eeModule.Type j2eeModuleType, String name, String title,
ProjectServerWizardPanel wizard, boolean showAddToEar,
boolean mainAppClientClass, boolean showContextPath, boolean createProjects, boolean importScenario) {
this.importScenario = importScenario;
initComponents();
setJ2eeVersionWarningPanel();
this.wizard = wizard;
this.j2eeModuleType = j2eeModuleType;
// preselect the first item in the j2ee spec combo
if (j2eeSpecComboBox.getModel().getSize() > 0) {
j2eeSpecComboBox.setSelectedIndex(0);
}
initEnterpriseApplications();
// Provide a name in the title bar.
setName(name);
putClientProperty ("NewProjectWizard_Title", title);
jLabelEnterprise.setVisible(showAddToEar);
jComboBoxEnterprise.setVisible(showAddToEar);
jLabelContextPath.setVisible(showContextPath);
jTextFieldContextPath.setVisible(showContextPath);
mainClassLabel.setVisible(mainAppClientClass);
mainClassTextField.setVisible(mainAppClientClass);
createCarCheckBox.setVisible(false);
createEjbCheckBox.setVisible(createProjects);
createWARCheckBox.setVisible(createProjects);
jTextFieldCarName.setVisible(false);
jTextFieldEjbModuleName.setVisible(createProjects);
jTextFieldWebAppName.setVisible(createProjects);
mainClassLabel1.setVisible(false);
mainClassTextFieldWithinEar.setVisible(false);
jTextFieldCarName.getDocument().addDocumentListener( this );
jTextFieldEjbModuleName.getDocument().addDocumentListener( this );
jTextFieldWebAppName.getDocument().addDocumentListener( this );
mainClassTextFieldWithinEar.getDocument().addDocumentListener( this );
mainClassTextField.getDocument().addDocumentListener( this );
jTextFieldContextPath.getDocument().addDocumentListener( this );
serverLibraryCheckbox.setVisible(false);
}
private boolean firstTimeOnly = true;
@Override
public void addNotify() {
super.addNotify();
if (firstTimeOnly) {
firstTimeOnly = false;
// init list of servers when the panel is going to be shown:
initServers(UserProjectSettings.getDefault().getLastUsedServer());
}
}
/** 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() {
jLabelEnterprise = new javax.swing.JLabel();
jComboBoxEnterprise = new javax.swing.JComboBox();
serverInstanceLabel = new javax.swing.JLabel();
serverInstanceComboBox = new javax.swing.JComboBox();
addServerButton = new javax.swing.JButton();
j2eeSpecLabel = new javax.swing.JLabel();
j2eeSpecComboBox = new javax.swing.JComboBox();
jLabelContextPath = new javax.swing.JLabel();
warningPlaceHolderPanel = new javax.swing.JPanel();
jTextFieldContextPath = new javax.swing.JTextField();
mainClassLabel = new javax.swing.JLabel();
mainClassTextField = new javax.swing.JTextField();
createEjbCheckBox = new javax.swing.JCheckBox();
jTextFieldEjbModuleName = new javax.swing.JTextField();
createWARCheckBox = new javax.swing.JCheckBox();
jTextFieldWebAppName = new javax.swing.JTextField();
createCarCheckBox = new javax.swing.JCheckBox();
jTextFieldCarName = new javax.swing.JTextField();
mainClassLabel1 = new javax.swing.JLabel();
mainClassTextFieldWithinEar = new javax.swing.JTextField();
serverLibraryCheckbox = new javax.swing.JCheckBox();
cdiCheckbox = new javax.swing.JCheckBox();
jLabelEnterprise.setLabelFor(jComboBoxEnterprise);
org.openide.awt.Mnemonics.setLocalizedText(jLabelEnterprise, NbBundle.getMessage(ProjectServerPanel.class, "LBL_NWP1_AddToEnterprise_Label")); // NOI18N
serverInstanceLabel.setLabelFor(serverInstanceComboBox);
org.openide.awt.Mnemonics.setLocalizedText(serverInstanceLabel, NbBundle.getMessage(ProjectServerPanel.class, "LBL_NWP1_Server")); // NOI18N
serverInstanceComboBox.setModel(serversModel);
serverInstanceComboBox.setPrototypeDisplayValue("The Gr8est Marvelous Nr. 1 Server");
serverInstanceComboBox.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
serverInstanceComboBoxActionPerformed(evt);
}
});
org.openide.awt.Mnemonics.setLocalizedText(addServerButton, org.openide.util.NbBundle.getMessage(ProjectServerPanel.class, "LBL_AddServer")); // NOI18N
addServerButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
addServerButtonActionPerformed(evt);
}
});
j2eeSpecLabel.setLabelFor(j2eeSpecComboBox);
org.openide.awt.Mnemonics.setLocalizedText(j2eeSpecLabel, NbBundle.getMessage(ProjectServerPanel.class, "LBL_NWP1_J2EESpecLevel_Label")); // NOI18N
j2eeSpecComboBox.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
j2eeSpecComboBoxActionPerformed(evt);
}
});
jLabelContextPath.setLabelFor(jTextFieldContextPath);
org.openide.awt.Mnemonics.setLocalizedText(jLabelContextPath, NbBundle.getMessage(ProjectServerPanel.class, "LBL_NWP1_ContextPath_Label")); // NOI18N
warningPlaceHolderPanel.setBackground(new java.awt.Color(0, 153, 102));
warningPlaceHolderPanel.setLayout(new java.awt.BorderLayout());
jTextFieldContextPath.addKeyListener(new java.awt.event.KeyAdapter() {
public void keyReleased(java.awt.event.KeyEvent evt) {
jTextFieldContextPathKeyReleased(evt);
}
});
mainClassLabel.setLabelFor(mainClassTextField);
org.openide.awt.Mnemonics.setLocalizedText(mainClassLabel, org.openide.util.NbBundle.getBundle(ProjectServerPanel.class).getString("LBL_NWP1_MainClass_Label")); // NOI18N
mainClassLabel.setAlignmentX(0.5F);
mainClassTextField.setText("com.myapp.Main");
createEjbCheckBox.setSelected(true);
org.openide.awt.Mnemonics.setLocalizedText(createEjbCheckBox, org.openide.util.NbBundle.getBundle(ProjectServerPanel.class).getString("LBL_NEAP_CreateEjbModule")); // NOI18N
createEjbCheckBox.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
createEjbCheckBox_action(evt);
}
});
createWARCheckBox.setSelected(true);
org.openide.awt.Mnemonics.setLocalizedText(createWARCheckBox, org.openide.util.NbBundle.getBundle(ProjectServerPanel.class).getString("LBL_NEAP_CreatWebAppModule")); // NOI18N
createWARCheckBox.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
createWARCheckBoxcreateWebAppCheckBox_action(evt);
}
});
org.openide.awt.Mnemonics.setLocalizedText(createCarCheckBox, org.openide.util.NbBundle.getBundle(ProjectServerPanel.class).getString("LBL_NEAP_CreateCarModule")); // NOI18N
createCarCheckBox.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
createCarCheckBox_action(evt);
}
});
jTextFieldCarName.setEnabled(false);
mainClassLabel1.setLabelFor(mainClassTextFieldWithinEar);
org.openide.awt.Mnemonics.setLocalizedText(mainClassLabel1, org.openide.util.NbBundle.getBundle(ProjectServerPanel.class).getString("LBL_NWP1_MainClass_Label")); // NOI18N
mainClassTextFieldWithinEar.setEnabled(false);
org.openide.awt.Mnemonics.setLocalizedText(serverLibraryCheckbox, org.openide.util.NbBundle.getMessage(ProjectServerPanel.class, "PanelSharabilityVisual.serverLibraryCheckbox.text")); // NOI18N
serverLibraryCheckbox.setMargin(new java.awt.Insets(2, 0, 2, 2));
serverLibraryCheckbox.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
serverLibraryCheckboxActionPerformed(evt);
}
});
org.openide.awt.Mnemonics.setLocalizedText(cdiCheckbox, org.openide.util.NbBundle.getMessage(ProjectServerPanel.class, "PanelSharabilityVisual.cdiCheckbox.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()
.addComponent(mainClassLabel)
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(createCarCheckBox)
.addComponent(createEjbCheckBox)
.addComponent(createWARCheckBox))
.addComponent(mainClassLabel1))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jTextFieldEjbModuleName)
.addComponent(jTextFieldWebAppName)
.addComponent(jTextFieldCarName)
.addComponent(mainClassTextFieldWithinEar))
.addGap(74, 74, 74))
.addGroup(layout.createSequentialGroup()
.addComponent(jLabelEnterprise)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jComboBoxEnterprise, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jLabelContextPath)
.addComponent(serverInstanceLabel)
.addComponent(j2eeSpecLabel))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(warningPlaceHolderPanel, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addGroup(layout.createSequentialGroup()
.addComponent(serverInstanceComboBox, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(addServerButton))
.addGroup(layout.createSequentialGroup()
.addComponent(j2eeSpecComboBox, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(0, 0, Short.MAX_VALUE))
.addComponent(serverLibraryCheckbox, javax.swing.GroupLayout.PREFERRED_SIZE, 377, Short.MAX_VALUE)
.addComponent(cdiCheckbox, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(mainClassTextField)
.addComponent(jTextFieldContextPath))
.addGap(74, 74, 74))))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(0, 0, 0)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabelEnterprise)
.addComponent(jComboBoxEnterprise, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(serverInstanceLabel)
.addComponent(addServerButton)
.addComponent(serverInstanceComboBox, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(serverLibraryCheckbox)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(j2eeSpecLabel)
.addComponent(j2eeSpecComboBox, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(cdiCheckbox)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(warningPlaceHolderPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabelContextPath)
.addComponent(jTextFieldContextPath, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(mainClassLabel)
.addComponent(mainClassTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jTextFieldEjbModuleName, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(createEjbCheckBox))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jTextFieldWebAppName, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(createWARCheckBox))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(createCarCheckBox)
.addComponent(jTextFieldCarName, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(mainClassLabel1)
.addComponent(mainClassTextFieldWithinEar, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))
);
jLabelEnterprise.getAccessibleContext().setAccessibleDescription(org.openide.util.NbBundle.getMessage(ProjectServerPanel.class, "ACSD_ProjectServerPanel_NA")); // NOI18N
jComboBoxEnterprise.getAccessibleContext().setAccessibleDescription(org.openide.util.NbBundle.getMessage(ProjectServerPanel.class, "ACSD_ProjectServerPanel_NA")); // NOI18N
serverInstanceLabel.getAccessibleContext().setAccessibleDescription(org.openide.util.NbBundle.getMessage(ProjectServerPanel.class, "ACSD_ProjectServerPanel_NA")); // NOI18N
serverInstanceComboBox.getAccessibleContext().setAccessibleDescription(org.openide.util.NbBundle.getMessage(ProjectServerPanel.class, "ACSD_ProjectServerPanel_NA")); // NOI18N
addServerButton.getAccessibleContext().setAccessibleName(org.openide.util.NbBundle.getMessage(ProjectServerPanel.class, "ASCN_AddServer")); // NOI18N
addServerButton.getAccessibleContext().setAccessibleDescription(org.openide.util.NbBundle.getMessage(ProjectServerPanel.class, "ACSD_ProjectServerPanel_NA")); // NOI18N
j2eeSpecLabel.getAccessibleContext().setAccessibleDescription(org.openide.util.NbBundle.getMessage(ProjectServerPanel.class, "ACSD_ProjectServerPanel_NA")); // NOI18N
j2eeSpecComboBox.getAccessibleContext().setAccessibleDescription(org.openide.util.NbBundle.getMessage(ProjectServerPanel.class, "ACSD_ProjectServerPanel_NA")); // NOI18N
jLabelContextPath.getAccessibleContext().setAccessibleDescription(org.openide.util.NbBundle.getMessage(ProjectServerPanel.class, "ACSD_ProjectServerPanel_NA")); // NOI18N
warningPlaceHolderPanel.getAccessibleContext().setAccessibleName(org.openide.util.NbBundle.getMessage(ProjectServerPanel.class, "ACSD_ProjectServerPanel_NA")); // NOI18N
warningPlaceHolderPanel.getAccessibleContext().setAccessibleDescription(org.openide.util.NbBundle.getMessage(ProjectServerPanel.class, "ACSD_ProjectServerPanel_NA")); // NOI18N
jTextFieldContextPath.getAccessibleContext().setAccessibleDescription(org.openide.util.NbBundle.getMessage(ProjectServerPanel.class, "ACSD_ProjectServerPanel_NA")); // NOI18N
mainClassLabel.getAccessibleContext().setAccessibleDescription(org.openide.util.NbBundle.getMessage(ProjectServerPanel.class, "ACSD_ProjectServerPanel_NA")); // NOI18N
mainClassTextField.getAccessibleContext().setAccessibleDescription(org.openide.util.NbBundle.getMessage(ProjectServerPanel.class, "ACSD_ProjectServerPanel_NA")); // NOI18N
createEjbCheckBox.getAccessibleContext().setAccessibleDescription(org.openide.util.NbBundle.getMessage(ProjectServerPanel.class, "ACSD_ProjectServerPanel_NA")); // NOI18N
jTextFieldEjbModuleName.getAccessibleContext().setAccessibleName(org.openide.util.NbBundle.getMessage(ProjectServerPanel.class, "LBL_NEAP_CreateEjbModule")); // NOI18N
jTextFieldEjbModuleName.getAccessibleContext().setAccessibleDescription(org.openide.util.NbBundle.getMessage(ProjectServerPanel.class, "ACSD_ProjectServerPanel_NA")); // NOI18N
createWARCheckBox.getAccessibleContext().setAccessibleDescription(org.openide.util.NbBundle.getMessage(ProjectServerPanel.class, "ACSD_ProjectServerPanel_NA")); // NOI18N
jTextFieldWebAppName.getAccessibleContext().setAccessibleName(org.openide.util.NbBundle.getMessage(ProjectServerPanel.class, "LBL_NEAP_CreatWebAppModule")); // NOI18N
jTextFieldWebAppName.getAccessibleContext().setAccessibleDescription(org.openide.util.NbBundle.getMessage(ProjectServerPanel.class, "ACSD_ProjectServerPanel_NA")); // NOI18N
createCarCheckBox.getAccessibleContext().setAccessibleDescription(org.openide.util.NbBundle.getMessage(ProjectServerPanel.class, "ACSD_ProjectServerPanel_NA")); // NOI18N
jTextFieldCarName.getAccessibleContext().setAccessibleName(org.openide.util.NbBundle.getMessage(ProjectServerPanel.class, "LBL_NEAP_CreateCarModule")); // NOI18N
jTextFieldCarName.getAccessibleContext().setAccessibleDescription(org.openide.util.NbBundle.getMessage(ProjectServerPanel.class, "ACSD_ProjectServerPanel_NA")); // NOI18N
mainClassLabel1.getAccessibleContext().setAccessibleDescription(org.openide.util.NbBundle.getMessage(ProjectServerPanel.class, "ACSD_ProjectServerPanel_NA")); // NOI18N
mainClassTextFieldWithinEar.getAccessibleContext().setAccessibleDescription(org.openide.util.NbBundle.getMessage(ProjectServerPanel.class, "ACSD_ProjectServerPanel_NA")); // NOI18N
serverLibraryCheckbox.getAccessibleContext().setAccessibleDescription(org.openide.util.NbBundle.getMessage(ProjectServerPanel.class, "ACSD_ProjectServerPanel_NA")); // NOI18N
cdiCheckbox.getAccessibleContext().setAccessibleDescription(org.openide.util.NbBundle.getMessage(ProjectServerPanel.class, "ACSD_ProjectServerPanel_NA")); // NOI18N
getAccessibleContext().setAccessibleName(org.openide.util.NbBundle.getMessage(ProjectServerPanel.class, "ACSD_ProjectServerPanel_NA")); // NOI18N
getAccessibleContext().setAccessibleDescription(org.openide.util.NbBundle.getMessage(ProjectServerPanel.class, "ACSD_ProjectServerPanel_NA")); // NOI18N
}// </editor-fold>//GEN-END:initComponents
private void addServerButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_addServerButtonActionPerformed
ServerInstanceWrapper serverInstanceWrapper = (ServerInstanceWrapper) serversModel.getSelectedItem();
String selectedServerInstanceID = null;
if (serverInstanceWrapper != null) {
selectedServerInstanceID = serverInstanceWrapper.getServerInstanceID();
}
ProfileItem lastSelectedJ2eeProfile = (ProfileItem) j2eeSpecComboBox.getSelectedItem();
Map<String, String> props = new HashMap<String, String>();
props.put("suggested-name", (String)wizard.wizardDescriptor.getProperty(ProjectLocationWizardPanel.NAME));
String newServerInstanceID = ServerManager.showAddServerInstanceWizard(props);
if (newServerInstanceID != null) {
selectedServerInstanceID = newServerInstanceID;
// clear the spec level selection
lastSelectedJ2eeProfile = null;
j2eeSpecComboBox.setSelectedItem(null);
}
// refresh the list of servers
initServers(selectedServerInstanceID);
if (lastSelectedJ2eeProfile != null) {
j2eeSpecComboBox.setSelectedItem(lastSelectedJ2eeProfile);
}
}//GEN-LAST:event_addServerButtonActionPerformed
private void j2eeSpecComboBoxActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_j2eeSpecComboBoxActionPerformed
setJ2eeVersionWarningPanel();
}//GEN-LAST:event_j2eeSpecComboBoxActionPerformed
private void serverInstanceComboBoxActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_serverInstanceComboBoxActionPerformed
ProfileItem prevSelectedItem = (ProfileItem) j2eeSpecComboBox.getSelectedItem();
// update the j2ee spec list according to the selected server
ServerInstanceWrapper serverInstanceWrapper = (ServerInstanceWrapper) serversModel.getSelectedItem();
j2eeSpecComboBox.removeAllItems();
if (serverInstanceWrapper != null) {
try {
J2eePlatform j2eePlatform = Deployment.getDefault().getServerInstance(serverInstanceWrapper.getServerInstanceID()).getJ2eePlatform();
Set<Profile> profiles = new TreeSet<Profile>(Profile.UI_COMPARATOR);
profiles.addAll(j2eePlatform.getSupportedProfiles(j2eeModuleType));
for (Profile profile : profiles) {
// j2ee 1.3 and 1.4 is not supported anymore
if (Profile.J2EE_13.equals(profile) || Profile.J2EE_14.equals(profile)) {
continue;
}
if (j2eeModuleType ==J2eeModule.Type.WAR) {
if (Profile.JAVA_EE_6_FULL.equals(profile) || Profile.JAVA_EE_7_FULL.equals(profile) ||
Profile.JAVA_EE_8_FULL.equals(profile) || Profile.JAKARTA_EE_8_FULL.equals(profile) ||
Profile.JAKARTA_EE_9_FULL.equals(profile) || Profile.JAKARTA_EE_9_1_FULL.equals(profile)) {
// for web apps always offer only JAVA_EE_6_WEB profile and skip full one
continue;
}
} else {
if (Profile.JAVA_EE_6_WEB.equals(profile) || Profile.JAVA_EE_7_WEB.equals(profile) ||
Profile.JAVA_EE_8_WEB.equals(profile) || Profile.JAKARTA_EE_8_WEB.equals(profile) ||
Profile.JAKARTA_EE_9_WEB.equals(profile) || Profile.JAKARTA_EE_9_1_WEB.equals(profile)) {
// for EE apps always skip web profile
continue;
}
}
j2eeSpecComboBox.addItem(new ProfileItem(profile));
}
if (prevSelectedItem != null) {
j2eeSpecComboBox.setSelectedItem(prevSelectedItem);
}
} catch (InstanceRemovedException ex) {
Exceptions.printStackTrace(ex);
}
}
// revalidate the form
wizard.fireChangeEvent();
}//GEN-LAST:event_serverInstanceComboBoxActionPerformed
private void jTextFieldContextPathKeyReleased(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_jTextFieldContextPathKeyReleased
contextModified = true;
}//GEN-LAST:event_jTextFieldContextPathKeyReleased
private void createEjbCheckBox_action(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_createEjbCheckBox_action
jTextFieldEjbModuleName.setEnabled(createEjbCheckBox.isSelected());
wizard.fireChangeEvent();
}//GEN-LAST:event_createEjbCheckBox_action
private void createWARCheckBoxcreateWebAppCheckBox_action(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_createWARCheckBoxcreateWebAppCheckBox_action
jTextFieldWebAppName.setEnabled(createWARCheckBox.isSelected());
wizard.fireChangeEvent();
}//GEN-LAST:event_createWARCheckBoxcreateWebAppCheckBox_action
private void createCarCheckBox_action(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_createCarCheckBox_action
jTextFieldCarName.setEnabled(createCarCheckBox.isSelected());
mainClassTextFieldWithinEar.setEnabled(createCarCheckBox.isSelected());
wizard.fireChangeEvent();
}//GEN-LAST:event_createCarCheckBox_action
private void serverLibraryCheckboxActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_serverLibraryCheckboxActionPerformed
wizard.fireChangeEvent();
}//GEN-LAST:event_serverLibraryCheckboxActionPerformed
boolean valid(WizardDescriptor wizardDescriptor) {
wizardDescriptor.putProperty(ProjectLocationPanel.PROP_ERROR_MESSAGE, null);
if (getSelectedServer() == null) {
String errMsg = NbBundle.getMessage(ProjectServerPanel.class, "MSG_NoServer");
wizardDescriptor.putProperty( WizardDescriptor.PROP_ERROR_MESSAGE, errMsg); // NOI18N
return false;
}
if (isSharableProject() && serverLibraryCheckbox.isEnabled()
&& serverLibraryCheckbox.isSelected()) {
wizardDescriptor.putProperty(ProjectLocationPanel.PROP_ERROR_MESSAGE, ProjectLocationPanel.decorateMessage(
NbBundle.getMessage(ProjectServerPanel.class, "PanelSharability.licenseWarning.text")));
}
Profile selectedProfile = getSelectedJ2eeProfile();
if (selectedProfile == null) {
setErrorMessage("ERROR_EnterpriseLevelOfYourServerIsNotSupported", wizardDescriptor); // NOI18N
return false;
}
if (J2eeModule.Type.EJB.equals(j2eeModuleType)) {
setJ2eeVersionWarning(wizardDescriptor);
}
if (J2eeModule.Type.CAR.equals(j2eeModuleType)) {
if (!isMainClassValid(mainClassTextField.getText())) {
setErrorMessage("ERROR_IllegalMainClassName", wizardDescriptor); // NOI18N
return false;
}
}
if (J2eeModule.Type.EAR.equals(j2eeModuleType)) {
if (createWARCheckBox.isSelected()) {
String warName = jTextFieldWebAppName.getText();
if (warName.length() < 1) {
setErrorMessage("MSG_NoWARName", wizardDescriptor); // NOI18N
return false;
}
if (!warName.endsWith("-war")) { // NOI18N
// this is really just a warning
setErrorMessage("MSG_WARNameNotBlueprints", wizardDescriptor); // NOI18N
}
}
if (createEjbCheckBox.isSelected()) {
String jarName = jTextFieldEjbModuleName.getText();
if (jarName.length() < 1) {
setErrorMessage("MSG_NoJARName", wizardDescriptor); // NOI18N
return false;
}
if (!jarName.endsWith("-ejb")) { //NOI18N
// this is really just a warning
setErrorMessage("MSG_JARNameNotBlueprints", wizardDescriptor); // NOI18N
}
}
if (createCarCheckBox.isSelected()) {
String jarName = jTextFieldCarName.getText();
if (jarName.length() < 1) {
setErrorMessage("MSG_NoCARName", wizardDescriptor); // NOI18N
return false;
}
if (!isMainClassValid(mainClassTextFieldWithinEar.getText())) {
setErrorMessage("ERROR_IllegalMainClassName", wizardDescriptor); // NOI18N
return false;
}
if (!jarName.endsWith("-app-client")) { //NOI18N
// this is really just a warning
setErrorMessage("MSG_CARNameNotBlueprints", wizardDescriptor); // NOI18N
}
}
}
return true;
}
private boolean isMainClassValid(String mainClassName) {
StringTokenizer tk = new StringTokenizer(mainClassName, "."); //NOI18N
boolean valid = tk.countTokens() > 0;
while (tk.hasMoreTokens()) {
String token = tk.nextToken();
if (token.length() == 0 || !Utilities.isJavaIdentifier(token)) {
valid = false;
break;
}
}
return valid;
}
private static void setErrorMessage(
final String errMsgKey, final WizardDescriptor wizardDescriptor) {
wizardDescriptor.putProperty(WizardDescriptor.PROP_ERROR_MESSAGE, // NOI18N
NbBundle.getMessage(ProjectServerPanel.class, errMsgKey));
}
private boolean isSharableProject() {
return sharableProject;
}
void store(WizardDescriptor d) {
String serverInstanceId = getSelectedServer();
d.putProperty(ProjectServerWizardPanel.SERVER_INSTANCE_ID, serverInstanceId);
Profile j2ee = getSelectedJ2eeProfile();
d.putProperty(ProjectServerWizardPanel.J2EE_LEVEL, j2ee);
d.putProperty(ProjectServerWizardPanel.CONTEXT_PATH, jTextFieldContextPath.getText().trim());
d.putProperty(ProjectServerWizardPanel.EAR_APPLICATION, getSelectedEarApplication());
d.putProperty(ProjectServerWizardPanel.WAR_NAME, jTextFieldWebAppName.getText());
d.putProperty(ProjectServerWizardPanel.JAR_NAME, jTextFieldEjbModuleName.getText());
d.putProperty(ProjectServerWizardPanel.CAR_NAME, jTextFieldCarName.getText());
d.putProperty(ProjectServerWizardPanel.MAIN_CLASS, J2eeModule.Type.CAR.equals(j2eeModuleType) ? mainClassTextField.getText().trim() : mainClassTextFieldWithinEar.getText().trim()); // NOI18N
d.putProperty(ProjectServerWizardPanel.CREATE_WAR, createWARCheckBox.isVisible() ? createWARCheckBox.isSelected() : false);
d.putProperty(ProjectServerWizardPanel.CREATE_JAR, createEjbCheckBox.isVisible() ? createEjbCheckBox.isSelected() : false);
d.putProperty(ProjectServerWizardPanel.CREATE_CAR, createCarCheckBox.isVisible() ? createCarCheckBox.isSelected() : false);
d.putProperty(ProjectServerWizardPanel.CDI, cdiCheckbox.isVisible() && cdiCheckbox.isSelected());
d.putProperty(ProjectServerWizardPanel.SOURCE_LEVEL, getSourceLevel(d, serverInstanceId, j2ee));
}
private String getSourceLevel(WizardDescriptor d, String serverInstanceId, Profile j2ee) {
String sourceLevel = JavaPlatform.getDefault().getSpecification().getVersion().toString();
if (warningPanel != null && warningPlaceHolderPanel.isVisible()) {
Specification spec = warningPanel.getSuggestedJavaPlatformSpecification();
if (spec != null) {
sourceLevel = spec.getVersion().toString();
}
}
// serverInstanceId is null, when there is no installed server
if (serverInstanceId != null) {
try {
J2eePlatform j2eePlatform = Deployment.getDefault().getServerInstance(serverInstanceId).getJ2eePlatform();
Set<String> jdks = j2eePlatform.getSupportedJavaPlatformVersions();
// make sure that chosen source level is suported by server:
if (jdks != null && !jdks.contains(sourceLevel)) { // workaround for #212146 when jdks == null
if ("11".equals(sourceLevel) && jdks.contains("1.8")) {
sourceLevel = "1.8";
} else if ("1.8".equals(sourceLevel) && jdks.contains("1.7")) {
sourceLevel = "1.7";
} else if ("1.7".equals(sourceLevel) && jdks.contains("1.6")) {
sourceLevel = "1.6";
} else if ("1.6".equals(sourceLevel) && jdks.contains("1.5")) {
sourceLevel = "1.5";
}
}
} catch (InstanceRemovedException ex) {
Exceptions.printStackTrace(ex);
}
}
if (warningPanel != null && warningPlaceHolderPanel.isVisible()) {
d.putProperty(ProjectServerWizardPanel.JAVA_PLATFORM, warningPanel.getSuggestedJavaPlatformName());
if (j2ee != null) {
String warningType = warningPanel.getWarningType();
if (warningType != null) {
switch (warningType) {
case J2eeVersionWarningPanel.WARN_SET_SOURCE_LEVEL_11:
sourceLevel = "11"; //NOI18N
break;
case J2eeVersionWarningPanel.WARN_SET_SOURCE_LEVEL_8:
sourceLevel = "1.8"; //NOI18N
break;
case J2eeVersionWarningPanel.WARN_SET_SOURCE_LEVEL_7:
sourceLevel = "1.7"; //NOI18N
break;
case J2eeVersionWarningPanel.WARN_SET_SOURCE_LEVEL_6:
sourceLevel = "1.6"; //NOI18N
break;
case J2eeVersionWarningPanel.WARN_SET_SOURCE_LEVEL_15:
sourceLevel = "1.5"; //NOI18N
break;
default:
break;
}
}
}
} else {
d.putProperty(ProjectServerWizardPanel.JAVA_PLATFORM, JavaPlatform.getDefault().getDisplayName());
}
return sourceLevel;
}
private String getServerLibraryName() {
if (!serverLibraryCheckbox.isSelected() || !serverLibraryCheckbox.isEnabled()) {
return null;
}
Deployment deployment = Deployment.getDefault();
String name = deployment.getServerDisplayName(deployment.getServerID(getSelectedServer()));
// null can occur only if the server was removed somehow
return (name == null) ? "" : PropertyUtils.getUsablePropertyName(name); // NOI18N
}
void read(WizardDescriptor d) {
if (!isContextModified()) {
jTextFieldContextPath.setText(createDefaultContext((String)d.getProperty(ProjectLocationWizardPanel.NAME)));
}
sharableProject = d.getProperty(ProjectLocationWizardPanel.SHARED_LIBRARIES) != null;
serverLibraryCheckbox.setEnabled(isSharableProject());
if (!serverLibraryCheckbox.isEnabled()) {
serverLibraryCheckbox.setSelected(false);
}
projectLocation = (File)d.getProperty(ProjectLocationWizardPanel.PROJECT_DIR);
if (J2eeModule.Type.EJB.equals(j2eeModuleType)) {
updateJ2EEVersion("ejb-jar.xml");
}
if (J2eeModule.Type.CAR.equals(j2eeModuleType)) {
initClientAppMainClass((String)d.getProperty(ProjectLocationWizardPanel.NAME));
updateJ2EEVersion("application-client.xml");
}
if (J2eeModule.Type.EAR.equals(j2eeModuleType)) {
String newProjectName = (String)d.getProperty(ProjectLocationWizardPanel.NAME);
initClientAppMainClass(newProjectName);
this.jTextFieldEjbModuleName.setText(MessageFormat.format(
NbBundle.getMessage(ProjectServerPanel.class,"TXT_EJBProjectName"), new Object[] {newProjectName}));
this.jTextFieldWebAppName.setText(MessageFormat.format(
NbBundle.getMessage(ProjectServerPanel.class,"TXT_WebAppProjectName"), new Object[] {newProjectName}));
this.jTextFieldCarName.setText(MessageFormat.format(
NbBundle.getMessage(ProjectServerPanel.class,"TXT_AppClientProjectName"), new Object[] {newProjectName}));
}
}
/** Create a valid default for context path from project name.
*/
private static String createDefaultContext(String projectName) {
return "/" + (projectName != null ? PropertyUtils.getUsablePropertyName(projectName) : "");
}
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JButton addServerButton;
private javax.swing.JCheckBox cdiCheckbox;
private javax.swing.JCheckBox createCarCheckBox;
private javax.swing.JCheckBox createEjbCheckBox;
private javax.swing.JCheckBox createWARCheckBox;
private javax.swing.JComboBox j2eeSpecComboBox;
private javax.swing.JLabel j2eeSpecLabel;
private javax.swing.JComboBox jComboBoxEnterprise;
private javax.swing.JLabel jLabelContextPath;
private javax.swing.JLabel jLabelEnterprise;
private javax.swing.JTextField jTextFieldCarName;
protected javax.swing.JTextField jTextFieldContextPath;
private javax.swing.JTextField jTextFieldEjbModuleName;
private javax.swing.JTextField jTextFieldWebAppName;
private javax.swing.JLabel mainClassLabel;
private javax.swing.JLabel mainClassLabel1;
private javax.swing.JTextField mainClassTextField;
private javax.swing.JTextField mainClassTextFieldWithinEar;
private javax.swing.JComboBox serverInstanceComboBox;
private javax.swing.JLabel serverInstanceLabel;
private javax.swing.JCheckBox serverLibraryCheckbox;
private javax.swing.JPanel warningPlaceHolderPanel;
// End of variables declaration//GEN-END:variables
/**
* Init servers model
* @param selectedServerInstanceID preselected instance or null if non is preselected
*/
private void initServers(String selectedServerInstanceID) {
// init the list of server instances
serversModel.removeAllElements();
Set<ServerInstanceWrapper> servers = new TreeSet<ServerInstanceWrapper>();
ServerInstanceWrapper selectedItem = null;
for (String serverInstanceID : Deployment.getDefault().getServerInstanceIDs()) {
try {
ServerInstance si = Deployment.getDefault().getServerInstance(serverInstanceID);
String displayName = si.getDisplayName();
J2eePlatform j2eePlatform = si.getJ2eePlatform();
if (displayName != null && j2eePlatform != null && j2eePlatform.getSupportedTypes().contains(j2eeModuleType)) {
ServerInstanceWrapper serverWrapper = new ServerInstanceWrapper(serverInstanceID, displayName);
// decide whether this server should be preselected
if (selectedItem == null) {
if (selectedServerInstanceID != null) {
if (selectedServerInstanceID.equals(serverInstanceID)) {
selectedItem = serverWrapper;
}
}
// else {}
// FIXME replace with PriorityQueue mechanism to
// preselect the best server
}
servers.add(serverWrapper);
}
} catch (InstanceRemovedException ex) {
Exceptions.printStackTrace(ex);
}
}
for (ServerInstanceWrapper item : servers) {
serversModel.addElement(item);
}
if (selectedItem != null) {
// set the preselected item
serversModel.setSelectedItem(selectedItem);
} else if (serversModel.getSize() > 0) {
// set the first item
serversModel.setSelectedItem(serversModel.getElementAt(0));
}
if (j2eeSpecComboBox.getModel().getSize() > 0) {
j2eeSpecComboBox.setSelectedIndex(0);
}
}
private Profile getSelectedJ2eeProfile() {
ProfileItem item = (ProfileItem) j2eeSpecComboBox.getSelectedItem();
return item == null ? null : item.getProfile();
}
private String getSelectedServer() {
ServerInstanceWrapper serverInstanceWrapper = (ServerInstanceWrapper) serversModel.getSelectedItem();
if (serverInstanceWrapper == null) {
return null;
}
return serverInstanceWrapper.getServerInstanceID();
}
protected boolean isContextModified() {
return contextModified;
}
private Project getSelectedEarApplication() {
int idx = jComboBoxEnterprise.getSelectedIndex();
return (idx <= 0) ? null : earProjects.get(idx - 1);
}
private void initEnterpriseApplications() {
jComboBoxEnterprise.addItem(NbBundle.getMessage(ProjectServerPanel.class, "LBL_NWP1_AddToEnterprise_None")); // TODO: AB: add to bundle
jComboBoxEnterprise.setSelectedIndex(0);
Project[] allProjects = OpenProjects.getDefault().getOpenProjects();
earProjects = new ArrayList<Project>();
for (int i = 0; i < allProjects.length; i++) {
J2eeApplicationProvider j2eeAppProvider = allProjects[i].getLookup().lookup(J2eeApplicationProvider.class);
if (j2eeAppProvider == null) {
continue;
}
if (AntArtifactQuery.findArtifactsByType(allProjects[i], "ear").length == 0) { // NOI18N
continue;
}
J2eeApplication j2eeApplication = (J2eeApplication) j2eeAppProvider.getJ2eeModule();
ProjectInformation projectInfo = ProjectUtils.getInformation(allProjects[i]);
if (j2eeApplication != null) {
earProjects.add(projectInfo.getProject());
jComboBoxEnterprise.addItem(projectInfo.getDisplayName());
}
}
if (earProjects.size() <= 0) {
jComboBoxEnterprise.setEnabled(false);
}
}
private void setJ2eeVersionWarningPanel() {
Profile j2ee = getSelectedJ2eeProfile();
if (j2ee == null) {
warningPlaceHolderPanel.setVisible(false);
cdiCheckbox.setVisible(false);
return;
}
Set<String> jdks = Collections.emptySet();
String serverInstanceId = getSelectedServer();
if (serverInstanceId != null) {
try {
J2eePlatform j2eePlatform = Deployment.getDefault().getServerInstance(serverInstanceId).getJ2eePlatform();
if (j2eePlatform != null) {
jdks = j2eePlatform.getSupportedJavaPlatformVersions();
}
} catch (InstanceRemovedException ex) {
Exceptions.printStackTrace(ex);
}
}
// make cdiCheckbox visible only in case of EE6; in EE7 and higher it should stay hidden
cdiCheckbox.setVisible(!importScenario && (j2ee.equals(Profile.JAVA_EE_6_FULL) || j2ee.equals(Profile.JAVA_EE_6_WEB)));
String warningType = J2eeVersionWarningPanel.findWarningType(j2ee, jdks);
if (warningType == null && warningPanel == null) {
warningPlaceHolderPanel.setVisible(false);
return;
}
if (warningPanel == null) {
warningPanel = new J2eeVersionWarningPanel(warningType);
warningPlaceHolderPanel.add(warningPanel, java.awt.BorderLayout.CENTER);
warningPanel.setWarningType(warningType);
warningPlaceHolderPanel.setVisible(true);
} else {
if (warningType == null) {
warningPlaceHolderPanel.setVisible(false);
} else {
warningPanel.setWarningType(warningType);
warningPlaceHolderPanel.setVisible(true);
}
}
this.revalidate();
}
/**
* Server instance wrapper represents server instances in the servers combobox.
* @author sherold
*/
private static class ServerInstanceWrapper implements Comparable {
private final String serverInstanceID;
private final String displayName;
ServerInstanceWrapper(String serverInstanceID, String displayName) {
this.serverInstanceID = serverInstanceID;
this.displayName = displayName;
}
public String getServerInstanceID() {
return serverInstanceID;
}
public String toString() {
return displayName;
}
public int compareTo(Object o) {
return toString().compareTo(o.toString());
}
}
private void updateJ2EEVersion(String configFileName) {
FileObject fo = FileUtil.toFileObject(FileUtil.normalizeFile(projectLocation));
if (fo != null) {
FileObject configFilesPath = FileSearchUtility.guessConfigFilesPath(fo, configFileName);
if (configFilesPath != null) {
FileObject configFile = configFilesPath.getFileObject(configFileName); // NOI18N
if (J2eeModule.Type.EJB.equals(j2eeModuleType)) {
checkEjbJarXmlJ2eeVersion(configFile);
} else if (J2eeModule.Type.CAR.equals(j2eeModuleType)) {
checkACXmlJ2eeVersion(configFile);
}
} else {
// suppose highest
j2eeSpecComboBox.setSelectedItem(new ProfileItem(Profile.JAVA_EE_8_FULL));
}
}
}
private BigDecimal getEjbJarXmlVersion(FileObject ejbJarXml) throws IOException {
if (ejbJarXml != null) {
org.netbeans.modules.j2ee.dd.api.ejb.EjbJar ejbJar =
org.netbeans.modules.j2ee.dd.api.ejb.DDProvider.getDefault().getDDRoot(ejbJarXml);
if (ejbJar != null) {
return ejbJar.getVersion();
}
}
return null;
}
private void checkEjbJarXmlJ2eeVersion(FileObject ejbJarXml) {
try {
BigDecimal version = getEjbJarXmlVersion(ejbJarXml);
xmlVersion = version;
if (version == null) {
return;
}
if(new BigDecimal(org.netbeans.modules.j2ee.dd.api.ejb.EjbJar.VERSION_2_1).equals(version)) {
j2eeSpecComboBox.setSelectedItem(new ProfileItem(Profile.J2EE_14));
} else if(new BigDecimal(org.netbeans.modules.j2ee.dd.api.ejb.EjbJar.VERSION_3_0).equals(version)) {
j2eeSpecComboBox.setSelectedItem(new ProfileItem(Profile.JAVA_EE_5));
} else if(new BigDecimal(org.netbeans.modules.j2ee.dd.api.ejb.EjbJar.VERSION_3_1).equals(version)) {
j2eeSpecComboBox.setSelectedItem(new ProfileItem(Profile.JAVA_EE_6_FULL));
} else if(new BigDecimal(org.netbeans.modules.j2ee.dd.api.ejb.EjbJar.VERSION_3_2).equals(version)) {
j2eeSpecComboBox.setSelectedItem(new ProfileItem(Profile.JAVA_EE_7_FULL));
} else if(new BigDecimal(org.netbeans.modules.j2ee.dd.api.ejb.EjbJar.VERSION_4_0).equals(version)) {
j2eeSpecComboBox.setSelectedItem(new ProfileItem(Profile.JAKARTA_EE_9_FULL));
}
} catch (IOException e) {
String message = NbBundle.getMessage(ProjectServerPanel.class, "MSG_EjbJarXmlCorrupted"); // NOI18N
Exceptions.printStackTrace(Exceptions.attachLocalizedMessage(e, message));
}
}
private BigDecimal getACXmlVersion(FileObject appClientXML) throws IOException {
if (appClientXML != null) {
// TODO: possible NPE (will getEjbJar return something)?
return org.netbeans.modules.j2ee.dd.api.client.DDProvider.getDefault().getDDRoot(appClientXML).getVersion();
} else {
return null;
}
}
private void checkACXmlJ2eeVersion(FileObject appClientXML) {
try {
BigDecimal version = getACXmlVersion(appClientXML);
if (version == null) {
return;
}
if(new BigDecimal(org.netbeans.modules.j2ee.dd.api.client.AppClient.VERSION_1_4).equals(version)) {
j2eeSpecComboBox.setSelectedItem(new ProfileItem(Profile.J2EE_14));
} else if(new BigDecimal(org.netbeans.modules.j2ee.dd.api.client.AppClient.VERSION_5_0).equals(version)) {
j2eeSpecComboBox.setSelectedItem(new ProfileItem(Profile.JAVA_EE_5));
} else if(new BigDecimal(org.netbeans.modules.j2ee.dd.api.client.AppClient.VERSION_6_0).equals(version)) {
j2eeSpecComboBox.setSelectedItem(new ProfileItem(Profile.JAVA_EE_6_FULL));
} else if(new BigDecimal(org.netbeans.modules.j2ee.dd.api.client.AppClient.VERSION_7_0).equals(version)) {
j2eeSpecComboBox.setSelectedItem(new ProfileItem(Profile.JAVA_EE_7_FULL));
} else if(new BigDecimal(org.netbeans.modules.j2ee.dd.api.client.AppClient.VERSION_8_0).equals(version)) {
j2eeSpecComboBox.setSelectedItem(new ProfileItem(Profile.JAVA_EE_8_FULL));
} else if(new BigDecimal(org.netbeans.modules.j2ee.dd.api.client.AppClient.VERSION_9_0).equals(version)) {
j2eeSpecComboBox.setSelectedItem(new ProfileItem(Profile.JAKARTA_EE_9_FULL));
}
} catch (IOException e) {
String message = NbBundle.getMessage(ProjectServerPanel.class, "MSG_AppClientXmlCorrupted"); // NOI18N
Exceptions.printStackTrace(Exceptions.attachLocalizedMessage(e, message));
}
}
private void setJ2eeVersionWarning(WizardDescriptor d) {
String errorMessage = null;
ProfileItem selectedItem = (ProfileItem) j2eeSpecComboBox.getSelectedItem();
boolean oldXml = xmlVersion == null ? true :
new BigDecimal(org.netbeans.modules.j2ee.dd.api.ejb.EjbJar.VERSION_2_1).compareTo(xmlVersion) > 0;
if (selectedItem != null) {
if (Profile.J2EE_14 == selectedItem.getProfile() && oldXml) {
errorMessage = NbBundle.getMessage(ProjectServerPanel.class, "MSG_EjbJarXMLNotSupported");
}
}
if (d != null) {
d.putProperty(WizardDescriptor.PROP_ERROR_MESSAGE, errorMessage);
}
setJ2eeVersionWarningPanel();
}
private void initClientAppMainClass(String newProjectName) {
newProjectName = getPackageName(newProjectName);
if (!Utilities.isJavaIdentifier(newProjectName)) {
newProjectName = NbBundle.getMessage(ProjectServerPanel.class, "TXT_PackageNameSuffix", newProjectName);
}
if (J2eeModule.Type.CAR.equals(j2eeModuleType)) {
mainClassTextField.setText(MessageFormat.format(
NbBundle.getMessage(ProjectServerPanel.class,"TXT_ClassName"), new Object[] {newProjectName}
));
} else {
mainClassTextFieldWithinEar.setText(MessageFormat.format(
NbBundle.getMessage(ProjectServerPanel.class,"TXT_ClassName"), new Object[] {newProjectName}
));
}
}
private String getPackageName(String displayName) {
StringBuffer builder = new StringBuffer();
boolean firstLetter = true;
for (int i=0; i< displayName.length(); i++) {
char c = displayName.charAt(i);
if ((!firstLetter && Character.isJavaIdentifierPart(c)) || (firstLetter && Character.isJavaIdentifierStart(c))) {
firstLetter = false;
if (Character.isUpperCase(c)) {
c = Character.toLowerCase(c);
}
builder.append(c);
}
}
return builder.length() == 0 ? NbBundle.getMessage(ProjectServerPanel.class,"TXT_DefaultPackageName") : builder.toString();
}
public void changedUpdate( DocumentEvent e ) {
wizard.fireChangeEvent();
}
public void insertUpdate( DocumentEvent e ) {
wizard.fireChangeEvent();
}
public void removeUpdate( DocumentEvent e ) {
wizard.fireChangeEvent();
}
public HelpCtx getHelpCtx() {
return new HelpCtx(ProjectImportLocationPanel.generateHelpID(ProjectServerPanel.class, j2eeModuleType));
}
private static class ProfileItem {
private final Profile profile;
public ProfileItem(Profile profile) {
this.profile = profile;
}
public Profile getProfile() {
return profile;
}
@Override
public String toString() {
return profile.getDisplayName();
}
@Override
public boolean equals(Object obj) {
if (obj == null) {
return false;
}
if (getClass() != obj.getClass()) {
return false;
}
final ProfileItem other = (ProfileItem) obj;
if (this.profile != other.profile && (this.profile == null || !this.profile.equals(other.profile))) {
return false;
}
return true;
}
@Override
public int hashCode() {
int hash = 7;
hash = 97 * hash + (this.profile != null ? this.profile.hashCode() : 0);
return hash;
}
}
}