Package hermes.browser.dialog

Source Code of hermes.browser.dialog.EditNamingConfigDialog

/*
* Copyright 2003,2004 Colin Crist
*
* 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 hermes.browser.dialog;

import hermes.JNDIContextFactory;
import hermes.browser.HermesBrowser;
import hermes.browser.IconCache;
import hermes.config.NamingConfig;
import hermes.config.PropertySetConfig;
import hermes.impl.LoaderSupport;

import java.awt.BorderLayout;
import java.awt.Frame;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Vector;

import javax.swing.AbstractAction;
import javax.swing.BorderFactory;
import javax.swing.ComboBoxModel;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JComponent;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.border.BevelBorder;

import org.apache.commons.beanutils.PropertyUtils;
import org.apache.log4j.Logger;

import com.jidesoft.dialog.ButtonPanel;
import com.jidesoft.dialog.StandardDialog;
import com.jidesoft.grid.Property;
import com.jidesoft.grid.PropertyPane;
import com.jidesoft.grid.PropertyTable;
import com.jidesoft.grid.PropertyTableModel;
import com.jidesoft.swing.JideScrollPane;

/**
* Editor dialog for one of a list of NamingConfigs.
*
* @author colincrist@hermesjms.com last changed by: $Author: colincrist $
* @version $Id: EditNamingConfigDialog.java,v 1.4 2005/05/01 11:23:53 colincrist Exp $
*/
public class EditNamingConfigDialog extends StandardDialog
{
    /**
   *
   */
  private static final long serialVersionUID = -3108020658142737582L;
  private static final Logger log = Logger.getLogger(EditNamingConfigDialog.class);
    private static Vector selectionHistory = new Vector();

    private JPanel topPanel = new JPanel();
    private List namingConfigs;
    private String selectedConfig;
    private Map namingConfigsByName = new HashMap();
    private JComboBox comboBox;
    private JideScrollPane scrollPane = new JideScrollPane();
    private JNDIContextFactory bean;
    private Property classpathIdProperty;
    private String currentSelection;

    private NamingConfig newConfig;

    /**
     * @param parent
     * @param name
     * @param modal
     */
    public EditNamingConfigDialog(Frame parent, String selectedConfig, List namingConfigs)
    {
        super(parent, "JNDI InitialContext", true);

        this.namingConfigs = namingConfigs;
        this.selectedConfig = selectedConfig;

        setDefaultAction(new AbstractAction()
        {
            /**
       *
       */
      private static final long serialVersionUID = -8231223040278773071L;

      public void actionPerformed(ActionEvent e)
            {
                onOK();
            }
        });
    }

    public EditNamingConfigDialog(Frame parent, NamingConfig newConfig, List namingConfigs)
    {
        this(parent, (String) null, namingConfigs);

        this.newConfig = newConfig;
        this.selectedConfig = newConfig.getId();

        namingConfigsByName.put(newConfig.getId(), newConfig);
    }

    protected void onOK()
    {
        try
        {
            final NamingConfig config = (NamingConfig) namingConfigsByName.get(comboBox.getSelectedItem());
            final Map map = PropertyUtils.describe(bean);

            config.setClasspathId(classpathIdProperty.getValue().toString());

            if (config.getProperties() == null)
            {
                config.setProperties(new PropertySetConfig());
            }
            else
            {
                config.getProperties().getProperty().clear();
            }

            HermesBrowser.getConfigDAO().populatePropertySet(map, config.getProperties());

            if (config == newConfig)
            {
                namingConfigs.add(config);
            }

            HermesBrowser.getBrowser().saveConfig();
            HermesBrowser.getBrowser().loadConfig();
        }
        catch (Exception e)
        {
            log.error(e.getMessage(), e);

            HermesBrowser.getBrowser().showErrorDialog(e);
        }
    }

    public JComponent createBannerPanel()
    {
        JLabel label = new JLabel(IconCache.getIcon(IconCache.JNDI_LARGE), JLabel.RIGHT);

        return label;
    }

    public ButtonPanel createButtonPanel()
    {
        final ButtonPanel buttonPanel = new ButtonPanel();
        final JButton okButton = new JButton("OK");
        final JButton cancelButton = new JButton("Cancel");

        buttonPanel.addButton(okButton);
        buttonPanel.addButton(cancelButton);

        okButton.addActionListener(new ActionListener()
        {
            public void actionPerformed(ActionEvent e)
            {
                onOK();
                dispose();

            }
        });

        cancelButton.addActionListener(new ActionListener()
        {
            public void actionPerformed(ActionEvent e)
            {
                dispose();
            }
        });

        buttonPanel.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));
        return buttonPanel;
    }

    private ComboBoxModel createComboBoxModel()
    {
        DefaultComboBoxModel model = new DefaultComboBoxModel();

        if (newConfig != null)
        {
            model.addElement(newConfig.getId());
        }

        for (Iterator iter = namingConfigs.iterator(); iter.hasNext();)
        {
            NamingConfig config = (NamingConfig) iter.next();

            namingConfigsByName.put(config.getId(), config);
            model.addElement(config.getId());

            if (selectedConfig == null)
            {
                selectedConfig = config.getId();
            }
        }

        return model;

    }

    public JComponent createContentPanel()
    {
        topPanel.setLayout(new BorderLayout());
        topPanel.setBorder(BorderFactory.createBevelBorder(BevelBorder.RAISED));

        comboBox = new JComboBox(createComboBoxModel());

        comboBox.addActionListener(new ActionListener()
        {
            public void actionPerformed(ActionEvent e)
            {
                doSelectionChanged();
            }
        });

        topPanel.add(comboBox, BorderLayout.NORTH);
        topPanel.add(scrollPane, BorderLayout.CENTER);

        comboBox.setSelectedItem(selectedConfig);

        return topPanel;
    }

    @SuppressWarnings("unchecked")
  public void doSelectionChanged()
    {
        try
        {
            final String selectedConfig = (String) comboBox.getSelectedItem();
            final NamingConfig config = (NamingConfig) namingConfigsByName.get(selectedConfig);
            final PropertySetConfig propertySet = config.getProperties();

            if (currentSelection == null || !currentSelection.equals(selectedConfig))
            {
                currentSelection = selectedConfig;

                bean = new JNDIContextFactory();

                LoaderSupport.populateBean(bean, propertySet);

                final Map properties = PropertyUtils.describe(bean);
                final List list = new ArrayList();

                classpathIdProperty = new Property("loader", "Classpath Loader to use.", String.class)
                {
                    /**
           *
           */
          private static final long serialVersionUID = -3071689960943636606L;
          private String classpathId = config.getClasspathId();

                    public void setValue(Object value)
                    {
                        classpathId = value.toString();
                    }

                    public Object getValue()
                    {
                        return classpathId;
                    }

                    public boolean hasValue()
                    {
                        return true;
                    }
                };

                classpathIdProperty.setEditorContext(ClasspathIdCellEdtitor.CONTEXT);

                list.add(classpathIdProperty);

                for (Iterator iter = properties.entrySet().iterator(); iter.hasNext();)
                {
                    final Map.Entry entry = (Map.Entry) iter.next();
                    final String propertyName = (String) entry.getKey();
                    final Object propertyValue = entry.getValue() != null ? entry.getValue() : "";

                    if (!propertyName.equals("class") && !propertyName.equals("name"))
                    {
                        Property displayProperty = new Property(propertyName, propertyName, PropertyUtils.getPropertyType(bean, propertyName))
                        {
                            /**
               *
               */
              private static final long serialVersionUID = 1751773758147906036L;

              public void setValue(Object value)
                            {
                                try
                                {
                                    PropertyUtils.setProperty(bean, propertyName, value);
                                }
                                catch (Exception e)
                                {
                                    log.error(e.getMessage(), e);
                                }
                            }

                            public Object getValue()
                            {
                                try
                                {
                                    return PropertyUtils.getProperty(bean, propertyName);
                                }
                                catch (Exception e)
                                {
                                    log.error(e.getMessage(), e);
                                }

                                return null;
                            }

                            public boolean hasValue()
                            {
                                return true;
                            }
                        };

                        list.add(displayProperty);
                    }
                }

                final PropertyTableModel model = new PropertyTableModel(list);
                final PropertyTable table = new PropertyTable(model);

                table.setAutoResizeMode(PropertyTable.AUTO_RESIZE_ALL_COLUMNS);

                PropertyPane pane = new PropertyPane(table);

                pane.addPropertyChangeListener(new PropertyChangeListener()
                {
                    public void propertyChange(PropertyChangeEvent evt)
                    {

                    }
                });

                model.expandAll();

                scrollPane.setViewportView(pane);
            }
        }
        catch (Exception e)
        {
            log.error(e.getMessage(), e);

            HermesBrowser.getBrowser().showErrorDialog(e);
        }
    }
}
TOP

Related Classes of hermes.browser.dialog.EditNamingConfigDialog

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.