blob: dc165231d47e0f76fc0bd188356c0df4ad906f49 [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.apache.axis2.tools.java2wsdl;
import com.intellij.openapi.module.Module;
import com.intellij.openapi.project.Project;
import org.apache.axis2.tools.bean.WsdlgenBean;
import org.apache.axis2.tools.component.WizardComponents;
import org.apache.axis2.tools.component.WizardPanel;
import org.apache.axis2.tools.wizardframe.CodegenFrame;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
/** this class java 2 wsdl output wizard panel */
public class OutputPanel extends WizardPanel {
private JRadioButton rbtnAdd;
private JRadioButton rbtnSave;
private JComboBox cmbCurrentProject;
private JComboBox cmbModuleSrc;
private JTextField txtLocation;
private JTextField txtFileName;
private JLabel lblModule;
private JLabel lblDirect;
private JLabel lblOutput;
private JButton btnBrowes;
final JFileChooser DirChooser=new JFileChooser();
private Project project;
private WsdlgenBean wsdlgenBean;
private boolean flag = true;
/**
* Constructor
* @param wizardComponents
* @param wsdlgenBean
* @param project
*/
public OutputPanel(WizardComponents wizardComponents,WsdlgenBean wsdlgenBean, Project project){
super(wizardComponents, "Axis2 Idea Plugin Java2WSDL Wizards");
setPanelTopTitle("WSDl file output location");
setPanelBottomTitle("Select the location for the generated WSDL");
this.wsdlgenBean=wsdlgenBean;
this.project=project;
init();
}
private void init(){
rbtnAdd =new JRadioButton("Browes and Add the WSDL to a project on current Idea workspace",true);
rbtnSave =new JRadioButton("Browes and Save the WSDL file on local file system",false);
cmbCurrentProject =new JComboBox();
cmbCurrentProject.setEnabled(true);
cmbModuleSrc=new JComboBox();
cmbModuleSrc.setEnabled(true);
ButtonGroup buttonGroup= new ButtonGroup();
buttonGroup.add(rbtnAdd );
buttonGroup.add(rbtnSave );
txtFileName =new JTextField("service.wsdl");
txtLocation=new JTextField();
btnBrowes=new JButton("Browse..");
lblOutput=new JLabel("OutPut Location");
lblModule=new JLabel("Select the Module");
lblModule.setEnabled(false);
lblDirect=new JLabel("Select the Directory");
lblDirect.setEnabled(false);
setBackButtonEnabled(true);
setNextButtonEnabled(false);
setFinishButtonEnabled(false);
this.setLayout(new GridBagLayout());
this.add(new JLabel("OutPut File Name")
, new GridBagConstraints(0, 0, 1, 1, 0.1, 0.0
, GridBagConstraints.WEST , GridBagConstraints.NONE
, new Insets(5, 10, 0, 0), 0, 0));
this.add(txtFileName
, new GridBagConstraints(1, 0, 1, 1, 1.0, 0.0
, GridBagConstraints.WEST , GridBagConstraints.HORIZONTAL
, new Insets(5, 10, 0, 0), 0, 0));
this.add(new JLabel("Select the location where to put the output")
, new GridBagConstraints(0, 1, GridBagConstraints.REMAINDER, 1, 0.0, 0.0
, GridBagConstraints.WEST , GridBagConstraints.NONE
, new Insets(5, 10, 0, 10), 0, 0));
this.add(rbtnAdd
, new GridBagConstraints(0, 2, GridBagConstraints.REMAINDER, 1, 0.0, 0.0
, GridBagConstraints.WEST , GridBagConstraints.NONE
, new Insets(5, 10, 0,10), 0, 0));
rbtnAdd.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
cmbCurrentProject.setEnabled(true);
cmbModuleSrc.setEnabled(true);
lblModule.setEnabled(true);
txtLocation .setEnabled(false);
btnBrowes.setEnabled(false);
loadCmbCurrentProject();
loadcmbModuleSrcProject();
setFinishButtonEnabled(true);
update();
}
});
this.add(lblModule
, new GridBagConstraints(0, 3, 1, 1, 0.1, 0.0
, GridBagConstraints.WEST , GridBagConstraints.NONE
, new Insets(5, 10, 0, 0), 0, 0));
this.add(cmbCurrentProject
, new GridBagConstraints(1, 3, GridBagConstraints.RELATIVE, 1, 1.0, 0.0
, GridBagConstraints.WEST , GridBagConstraints.HORIZONTAL
, new Insets(5, 10, 0,0), 0, 0));
cmbCurrentProject.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
loadcmbModuleSrcProject();
update();
}
});
this.add(lblDirect
, new GridBagConstraints(0, 4, 1, 1, 0.1, 0.0
, GridBagConstraints.WEST , GridBagConstraints.NONE
, new Insets(5, 10, 0, 0), 0, 0));
this.add(cmbModuleSrc
, new GridBagConstraints(1, 4, GridBagConstraints.RELATIVE, 1, 1.0, 0.0
, GridBagConstraints.WEST , GridBagConstraints.HORIZONTAL
, new Insets(5, 10, 0,0), 0, 0));
cmbModuleSrc.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
update();
}
});
this.add(rbtnSave
, new GridBagConstraints(0, 5, GridBagConstraints.REMAINDER, 1, 1.0, 0.0
, GridBagConstraints.WEST , GridBagConstraints.NONE
, new Insets(5, 10, 0,0), 0, 0));
rbtnSave.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
cmbCurrentProject.setEnabled(false);
cmbModuleSrc.setEnabled(false);
txtLocation .setEnabled(true);
btnBrowes.setEnabled(true);
setEnabledForCustomProject();
update();
}
});
this.add(lblOutput
, new GridBagConstraints(0, 6, 1, 1, 0.1, 1.0
, GridBagConstraints.NORTHWEST , GridBagConstraints.NONE
, new Insets(5, 10, 0,0), 0, 0));
this.add(txtLocation
, new GridBagConstraints(1, 6, 1, 1, 1.0, 1.0
, GridBagConstraints.NORTHWEST , GridBagConstraints.HORIZONTAL
, new Insets(5, 10, 0, 0), 0, 0));
this.add(btnBrowes
, new GridBagConstraints(2, 6, 1, 1, 0.1, 1.0
, GridBagConstraints.NORTHWEST , GridBagConstraints.NONE
, new Insets(5, 10, 0, 10), 0, 0));
btnBrowes.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
DirChooser .setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
int returnVal = DirChooser.showOpenDialog(btnBrowes );
if (returnVal == JFileChooser.APPROVE_OPTION) {
DirChooser.setFileSelectionMode(JFileChooser .FILES_ONLY );
File newfile = DirChooser.getSelectedFile();
txtLocation.setText(newfile.getAbsolutePath() );
}
update();
}
});
wsdlgenBean.setProject(project);
}
public void loadCmbCurrentProject() {
Module modules[] = wsdlgenBean.getModules();
if (modules != null) {
for (int count = 0; count < modules.length; count++) {
cmbCurrentProject.addItem(modules[count].getName());
}
}else{
rbtnSave.setSelected(true);
rbtnAdd.setEnabled(false);
}
}
public void loadcmbModuleSrcProject() {
String module = null;
module = (String) cmbCurrentProject.getSelectedItem();
cmbModuleSrc.removeAllItems();
int count = 0;
if (module != null) {
String src[] = wsdlgenBean.getModuleSrc(module);
for ( count = 0; count < src.length; count++) {
cmbModuleSrc.addItem(src[count]);
}
count = src.length;
}
if (flag)
{
if (count == 0) {
flag =false;
setEnabledForCustomProject();
}
else{
setEnabledForCurrentProject();
}
}
}
public void back() {
switchPanel(CodegenFrame.PANEL_OPTION_B );
}
public void next() {
}
public void update(){
if(rbtnSave.isSelected()){
if(txtFileName.getText() !=null && txtLocation.getText() !=null) {
wsdlgenBean.setOutputWSDLName(txtFileName.getText());
wsdlgenBean.setOutputLocation(txtLocation.getText());
setFinishButtonEnabled(true);
}else if(txtLocation.getText() !=null){
wsdlgenBean.setOutputLocation(txtLocation.getText());
setFinishButtonEnabled(false);
}else if(txtFileName.getText() !=null){
wsdlgenBean.setOutputWSDLName(txtFileName .getText());
setFinishButtonEnabled(false);
} else
setFinishButtonEnabled(false);
}else if(rbtnAdd.isSelected()){
if(txtFileName.getText() !=null && cmbModuleSrc.getSelectedItem() !=null){
wsdlgenBean.setOutputWSDLName(txtFileName.getText());
wsdlgenBean.setOutputLocation(cmbModuleSrc.getSelectedItem().toString());
setFinishButtonEnabled(true);
}else if(txtFileName .getText() !=null){
wsdlgenBean.setOutputWSDLName(txtFileName .getText());
setFinishButtonEnabled(false);
}else
setFinishButtonEnabled(false);
}
setBackButtonEnabled(true);
setNextButtonEnabled(false);
}
public int getPageType() {
return WizardPanel.JAVA_2_WSDL_TYPE;
}
private void setEnabledForCurrentProject(){
rbtnAdd.setSelected(true);
rbtnAdd.setEnabled(true);
cmbCurrentProject.setEnabled(true);
cmbModuleSrc.setEnabled(true);
lblDirect.setEnabled(true);
lblModule .setEnabled(true);
rbtnSave.setSelected(false);
txtLocation.setEnabled(false);
lblOutput .setEnabled(false);
btnBrowes.setEnabled(false);
}
private void setEnabledForCustomProject(){
if(flag){
rbtnAdd.setEnabled(false);
rbtnAdd.setSelected(false);
}else{
rbtnSave .setEnabled(true);
rbtnSave .setSelected(true);
}
cmbCurrentProject.setEnabled(false);
cmbModuleSrc.setEnabled(false);
lblDirect.setEnabled(false);
lblModule .setEnabled(false);
txtLocation .setEnabled(true);
lblOutput .setEnabled(true);
btnBrowes .setEnabled(true);
}
}