Package org.apache.axis.tool.service.swing.ui

Source Code of org.apache.axis.tool.service.swing.ui.WizardPane2$AutomaticSelectionPanel

package org.apache.axis.tool.service.swing.ui;

import java.awt.HeadlessException;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.util.ArrayList;

import javax.swing.ButtonGroup;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.JTextField;

import org.apache.axis.tool.service.bean.Page2Bean;
import org.apache.axis.tool.service.bean.WizardBean;
import org.apache.axis.tool.service.control.Controller;
import org.apache.axis.tool.service.control.ProcessException;
import org.apache.axis.tool.util.Constants;

/*
* Copyright 2004,2005 The Apache Software Foundation.
*
* 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.
*/
public class WizardPane2 extends WizardPane {

    private WizardBean parentBean;
    private Page2Bean myBean;

    private JRadioButton selectManualFileRadioButton;
    private JRadioButton createAutomaticFileRadioButton;
    private JPanel selectionPanel;


    public WizardPane2(WizardBean wizardBean, JFrame ownerFrame) {
        super(ownerFrame);

        init();

        parentBean = wizardBean;

        if (wizardBean.getPage2bean()!=null){
            myBean = wizardBean.getPage2bean();
            //set the initial settings from the bean
            setBeanValues();

        }else{
            myBean = new Page2Bean();
            wizardBean.setPage2bean(myBean);
            setDefaultValues();
        }

    }

    public void setBeanValues(){
        if (myBean.isManual()){
            this.selectManualFileRadioButton.setSelected(true);
            loadScreen(new ManualSelectionPanel(true));
        }else{
            this.createAutomaticFileRadioButton.setSelected(true);
            loadScreen(new AutomaticSelectionPanel(true));
        }
    }


    public boolean validateValues() {
        String text = "";
        String text2="";
        boolean returnValue = false;
        if (myBean.isManual()){
            text = myBean.getManualFileName();
            returnValue = (text!=null && text.trim().length()>0);
        }else{
            text = myBean.getAutomaticClassName();
            text2 = myBean.getProviderClassName();
            returnValue = (text!=null && text.trim().length()>0) &&
                    (text2!=null && text2.trim().length()>0) ;
        }

        return returnValue;
    }

    private void init(){
        this.setLayout(null);
        this.setSize(width,height);

        initDescription("\n Select either the service xml file or the class that you want to \n " +
                " expose as the service to auto generate a service.xml. \n " +
                " Only the class files that are in the previously selected location can\n" +
                " be laded from here");

        ButtonGroup group = new ButtonGroup();

        this.selectManualFileRadioButton = new JRadioButton("Select a file manually");
        this.selectManualFileRadioButton.setBounds(hgap,descHeight,Constants.UIConstants.RADIO_BUTTON_WIDTH,Constants.UIConstants.GENERAL_COMP_HEIGHT);
        this.add(this.selectManualFileRadioButton);
        group.add(selectManualFileRadioButton);
        this.selectManualFileRadioButton.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent e) {
                changeSelectionScreen();
            }
        });
        this.createAutomaticFileRadioButton = new JRadioButton("Create a file automatically");
        this.createAutomaticFileRadioButton.setBounds(hgap,descHeight+vgap +Constants.UIConstants.GENERAL_COMP_HEIGHT ,Constants.UIConstants.RADIO_BUTTON_WIDTH,Constants.UIConstants.GENERAL_COMP_HEIGHT);
        this.add(this.createAutomaticFileRadioButton);
        group.add(createAutomaticFileRadioButton);
        this.createAutomaticFileRadioButton.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent e) {
                changeSelectionScreen();
            }
        });

        this.selectionPanel = new JPanel();
        this.selectionPanel.setLayout(null);
        this.selectionPanel.setBounds(0,descHeight + 2*Constants.UIConstants.GENERAL_COMP_HEIGHT +2*vgap,width,100);
        this.add(this.selectionPanel);

        //select manual option by default



    }
    private void setDefaultValues(){
        this.selectManualFileRadioButton.setSelected(true);
        loadScreen(new ManualSelectionPanel());
        updateBeanFlags(true);
    }
    private void changeSelectionScreen(){
        if (selectManualFileRadioButton.isSelected()){
            loadScreen(new ManualSelectionPanel(true));
            updateBeanFlags(true);
        } else{
            loadScreen(new AutomaticSelectionPanel(true));
            updateBeanFlags(false);
        }
    }
    private void updateBeanFlags(boolean flag){
        myBean.setManual(flag);myBean.setAutomatic(!flag);
    }

    private void loadScreen(JPanel panel){
        this.selectionPanel.removeAll();
        this.selectionPanel.add(panel);
        this.repaint();
    }



    private class ManualSelectionPanel extends JPanel{

        private JLabel serverXMLFileLocationLabel;
        private JTextField serverXMLFileLocationTextBox;
        private JButton browseButton;

        public ManualSelectionPanel() {
            init();
        }

        public ManualSelectionPanel(boolean loadVals) {
            init();
            if (loadVals){
                this.serverXMLFileLocationTextBox.setText(myBean.getManualFileName());
            }
        }

        private void init(){
            this.setLayout(null);
            this.setSize(width,100);

            this.serverXMLFileLocationLabel = new JLabel("Service File");
            this.add(this.serverXMLFileLocationLabel);
            this.serverXMLFileLocationLabel.setBounds(hgap,vgap,Constants.UIConstants.LABEL_WIDTH,Constants.UIConstants.GENERAL_COMP_HEIGHT);

            this.serverXMLFileLocationTextBox = new JTextField();
            this.add(this.serverXMLFileLocationTextBox);
            this.serverXMLFileLocationTextBox.setBounds(Constants.UIConstants.LABEL_WIDTH + 2*hgap ,vgap,Constants.UIConstants.TEXT_BOX_WIDTH,Constants.UIConstants.GENERAL_COMP_HEIGHT);
            this.serverXMLFileLocationTextBox.addActionListener(new ActionListener(){
                public void actionPerformed(ActionEvent e) {
                    setOutFileName();
                }
            });
            this.serverXMLFileLocationTextBox.addKeyListener(new KeyListener(){
                public void keyTyped(KeyEvent e) { }
                public void keyPressed(KeyEvent e) {}
                public void keyReleased(KeyEvent e) { setOutFileName();}
            });

            this.browseButton = new JButton(".");
            this.add(this.browseButton);
            this.browseButton.setBounds(Constants.UIConstants.LABEL_WIDTH + 2*hgap +Constants.UIConstants.TEXT_BOX_WIDTH,vgap,Constants.UIConstants.BROWSE_BUTTON_WIDTH,Constants.UIConstants.GENERAL_COMP_HEIGHT);
            this.browseButton.addActionListener(new ActionListener(){
                public void actionPerformed(ActionEvent e) {
                    serverXMLFileLocationTextBox.setText(browseForAFile("xml"));
                    setOutFileName();
                }
            });

        }

        private void setOutFileName(){
            myBean.setManualFileName(serverXMLFileLocationTextBox.getText());
        }
    }

    private class AutomaticSelectionPanel extends JPanel{

        private JLabel classFileListLable;
        private JLabel providerClassLable;
        private JTextField classFileNameTextBox;
        private JTextField providerClassNameTextBox;
        private JButton loadButton;
        private JButton advancedButton;

        public AutomaticSelectionPanel() {
            init();
        }

        public AutomaticSelectionPanel(boolean loadVals) {
            init();
            if (loadVals){
                this.classFileNameTextBox.setText(myBean.getAutomaticClassName());
                this.providerClassNameTextBox.setText(myBean.getProviderClassName());
            }
        }
        private void init(){
            this.setLayout(null);
            this.setSize(width,100);

            this.classFileListLable = new JLabel("Class Name");
            this.add(this.classFileListLable);
            this.classFileListLable.setBounds(hgap,vgap,Constants.UIConstants.LABEL_WIDTH,Constants.UIConstants.GENERAL_COMP_HEIGHT);

            this.classFileNameTextBox = new JTextField();
            this.add(this.classFileNameTextBox);
            this.classFileNameTextBox.setBounds(Constants.UIConstants.LABEL_WIDTH + 2*hgap ,vgap,Constants.UIConstants.TEXT_BOX_WIDTH,Constants.UIConstants.GENERAL_COMP_HEIGHT);
            this.classFileNameTextBox.addActionListener(new ActionListener(){
                public void actionPerformed(ActionEvent e) {
                    setClassName();
                }
            });
            this.classFileNameTextBox.addKeyListener(new KeyListener(){
                public void keyTyped(KeyEvent e) {}
                public void keyPressed(KeyEvent e) {}
                public void keyReleased(KeyEvent e) {setClassName();}
            });

            this.providerClassLable = new JLabel("Provider Class Name");
            this.add(this.providerClassLable);
            this.providerClassLable.setBounds(hgap,(Constants.UIConstants.GENERAL_COMP_HEIGHT+vgap),Constants.UIConstants.LABEL_WIDTH,Constants.UIConstants.GENERAL_COMP_HEIGHT);

            this.providerClassNameTextBox = new JTextField();
            this.add(this.providerClassNameTextBox);
            this.providerClassNameTextBox.setBounds(Constants.UIConstants.LABEL_WIDTH + 2*hgap ,(Constants.UIConstants.GENERAL_COMP_HEIGHT+vgap*2),Constants.UIConstants.TEXT_BOX_WIDTH,Constants.UIConstants.GENERAL_COMP_HEIGHT);
            this.providerClassNameTextBox.addActionListener(new ActionListener(){
                public void actionPerformed(ActionEvent e) {
                    setProviderClassName();
                }
            });
            this.providerClassNameTextBox.addKeyListener(new KeyListener(){
                public void keyTyped(KeyEvent e) {}
                public void keyPressed(KeyEvent e) {}
                public void keyReleased(KeyEvent e) {setProviderClassName();}
            });

            this.loadButton = new JButton("Load");
            this.add(this.loadButton);
            this.loadButton.setBounds(hgap,(Constants.UIConstants.GENERAL_COMP_HEIGHT+vgap)*2 + vgap,
                    Constants.UIConstants.GENERAL_BUTTON_WIDTH,
                    Constants.UIConstants.GENERAL_COMP_HEIGHT);
            this.loadButton.addActionListener(new ActionListener(){
                public void actionPerformed(ActionEvent e) {
                    loadAllMethods();
                }
            });
            loadButton.setEnabled(false);

            this.advancedButton = new JButton("Advanced");
            this.add(this.advancedButton);
            this.advancedButton.setBounds(2*hgap +Constants.UIConstants.GENERAL_BUTTON_WIDTH
                    ,(Constants.UIConstants.GENERAL_COMP_HEIGHT+vgap)*2 + vgap,
                    Constants.UIConstants.GENERAL_BUTTON_WIDTH,
                    Constants.UIConstants.GENERAL_COMP_HEIGHT);
            this.advancedButton.addActionListener(new ActionListener(){
                public void actionPerformed(ActionEvent e) {
                    openDialog();
                }
            });
            this.advancedButton.setEnabled(false);
        }

        private void loadAllMethods(){
            try {
                ArrayList methodList =  new Controller().getMethodList(parentBean);
                myBean.setSelectedMethodNames(methodList);
                loadButton.setEnabled(false);
                advancedButton.setEnabled(true);
            } catch (ProcessException e) {
                showErrorMessage(e.getMessage());
            }
        }

        private void openDialog(){
            try {
                new AdvancedSelectionDialog().show();
            } catch (ProcessException e) {
                showErrorMessage(e.getMessage());
            }
        }
        private void setClassName(){
            loadButton.setEnabled(true);
            advancedButton.setEnabled(false);
            myBean.setAutomaticClassName(classFileNameTextBox.getText());
        }

        private void setProviderClassName(){
            //loadButton.setEnabled(true);
            //advancedButton.setEnabled(false);
            myBean.setProviderClassName(providerClassNameTextBox.getText());
        }



    }


    private class AdvancedSelectionDialog extends JDialog{

        private JPanel lablePanel;
        private JButton okButton;
        private JButton cancelButton;
        private boolean[] selectedValues;
        private ArrayList completeMethodList;


        public AdvancedSelectionDialog() throws HeadlessException,ProcessException {
            super();
            super.setModal(true);
            super.setTitle("Select Methods");
            this.getContentPane().setLayout(null);
            init();
        }

        private void init() throws ProcessException{
            //load the class file list
            this.completeMethodList =  new Controller().getMethodList(parentBean);
            int methodCount = this.completeMethodList.size();
            int panelHeight = methodCount*(Constants.UIConstants.GENERAL_COMP_HEIGHT + vgap);

            this.lablePanel = new JPanel();
            this.lablePanel.setLayout(null);
            this.lablePanel.setBounds(0,0,width,panelHeight);
            this.getContentPane().add(this.lablePanel);

            ArrayList currentSelectedList = myBean.getSelectedMethodNames();
            //create check boxes for all the methods and add them to the panel
            JCheckBox tempCheckBox;
            boolean currentSelection;
            this.selectedValues = new boolean[methodCount];

            for (int i = 0; i < methodCount; i++) {
                tempCheckBox = new JCheckBox(this.completeMethodList.get(i).toString());
                currentSelection = currentSelectedList.contains(this.completeMethodList.get(i));
                tempCheckBox.setSelected(currentSelection);
                selectedValues[i] = currentSelection;
                tempCheckBox.setBounds(hgap,vgap + (Constants.UIConstants.GENERAL_COMP_HEIGHT+vgap)*i,
                        Constants.UIConstants.LABEL_WIDTH*3,
                        Constants.UIConstants.GENERAL_COMP_HEIGHT);
                tempCheckBox.addActionListener(new CheckBoxActionListner(tempCheckBox,i));
                this.lablePanel.add(tempCheckBox);

            }

            okButton = new JButton("OK");
            this.getContentPane().add (this.okButton);
            this.okButton.setBounds(hgap,panelHeight+vgap,
                    Constants.UIConstants.GENERAL_BUTTON_WIDTH,
                    Constants.UIConstants.GENERAL_COMP_HEIGHT);
            this.okButton.addActionListener(new ActionListener(){
                public void actionPerformed(ActionEvent e) {
                    loadValuesToBean();
                    closeMe();
                }
            });

            cancelButton = new JButton("Cancel");
            this.getContentPane().add (this.cancelButton);
            this.cancelButton.setBounds(hgap*2 +Constants.UIConstants.GENERAL_BUTTON_WIDTH ,panelHeight+vgap,
                    Constants.UIConstants.GENERAL_BUTTON_WIDTH,
                    Constants.UIConstants.GENERAL_COMP_HEIGHT);
            this.cancelButton.addActionListener(new ActionListener(){
                public void actionPerformed(ActionEvent e) {
                    closeMe();
                }
            });

            this.setSize(width,panelHeight+2*Constants.UIConstants.GENERAL_COMP_HEIGHT + 30);
            this.setResizable(false);
        }

        private void updateSelection(JCheckBox checkBox,int index){
            if (checkBox.isSelected()){
                selectedValues[index] = true;
            }else{
                selectedValues[index] = false;
            }

        }

        private void loadValuesToBean(){
            ArrayList modifiedMethodList = new ArrayList();
            for (int i = 0; i < selectedValues.length; i++) {
                if( selectedValues[i])
                    modifiedMethodList.add(completeMethodList.get(i));
            }

            myBean.setSelectedMethodNames(modifiedMethodList);
        }
        private void closeMe(){
            this.dispose();
        }

        private class CheckBoxActionListner implements ActionListener{
            private JCheckBox checkBox;
            private int index;

            public CheckBoxActionListner(JCheckBox checkBox,int index) {
                this.index = index;
                this.checkBox = checkBox;
            }

            public void actionPerformed(ActionEvent e) {
                updateSelection(checkBox,index);
            }

        }
    }


}
TOP

Related Classes of org.apache.axis.tool.service.swing.ui.WizardPane2$AutomaticSelectionPanel

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.