Package hermes.browser.dialog

Source Code of hermes.browser.dialog.DestinationPropertyConfigPanel

/*
* 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.Domain;
import hermes.HermesRuntimeException;
import hermes.browser.HermesBrowser;
import hermes.config.DestinationConfig;
import hermes.config.PropertySetConfig;

import java.awt.BorderLayout;
import java.lang.reflect.InvocationTargetException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import javax.jms.Destination;
import javax.swing.BorderFactory;
import javax.swing.JPanel;
import javax.swing.JTabbedPane;
import javax.swing.border.BevelBorder;
import javax.swing.border.Border;
import javax.xml.bind.JAXBException;

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

import com.jidesoft.grid.Property;
import com.jidesoft.grid.PropertyPane;
import com.jidesoft.grid.PropertyTable;
import com.jidesoft.grid.PropertyTableModel;
import com.jidesoft.swing.JideTabbedPane;

/**
* @author colincrist@hermesjms.com
* @version $Id: DestinationPropertyConfigPanel.java,v 1.2 2004/07/21 19:46:15
*          colincrist Exp $
*/
public class DestinationPropertyConfigPanel extends JPanel
{
   private static final long serialVersionUID = 8657526639099576759L;
   private static final Logger log = Logger.getLogger(DestinationPropertyConfigPanel.class);
 

   private static final String NAME = "Name";
   private static final String SHORT_NAME = "ShortName";
   private static final String SELECTOR = "Selector";
   private static final String ISQUEUE = "Domain";
   private static final String DURABLE = "Durable";
   private static final String DURABLE_CLIENT = "DurableName";
   private static final String USERNAME = "Username" ;
   private static final String PASSWORD = "Password" ;

   private static final String NAME_INFO = "The name of the queue/topic or the binding in JNDI";
   private static final String SHORT_NAME_INFO = "An alterative name you may wish to use for display purposes, for example if the real name is too long";
   private static final String ISQUEUE_INFO = "The queue or the topic domain";
   private static final String DURABLE_INFO = "Make a durable subscription if a topic";
   private static final String DURABLE_CLIENT_INFO = "The subscription name to use if this is a durable subscription to a topic.";
   private static final String SELECTOR_INFO = "The selector to use when browsing from the queue or subscribing to the topic.";
   private static final String USERNAME_INFO = "Override the username from the sessions configuration" ;
   private static final String PASSWORD_INFO = "Override the password from the sessions configuration" ;

   private DestinationConfig config;
   private PropertyTable propertyTable;
   private PropertyTableModel propertyTableModel;
   private PropertyPane propertyPane;

   private Property nameProperty;
   private Property shortNameProperty;
   private Property selectorProperty;
   private Property domainProperty;
   private Property durableProperty;
   private Property durableClientIDProperty;
   private Property usernameProperty ;
   private Property passwordProperty ;

   private List onOK = new ArrayList();
   private Destination bean;
   private JideTabbedPane tabbedPane = new JideTabbedPane();
   private JPanel generalPanel = new JPanel();
   private BeanPropertyPanel beanPropertyPanel;

   public DestinationPropertyConfigPanel(String hermesId, Destination bean, DestinationConfig config)
   {
      try
      {
         this.bean = bean;
         this.config = config;

         final Border border = BorderFactory.createBevelBorder(BevelBorder.RAISED);
         setLayout(new BorderLayout());

         add(tabbedPane);

         generalPanel.setLayout(new BorderLayout());

         if (bean != null)
         {
            beanPropertyPanel = new BeanPropertyPanel(bean, true, false);
            beanPropertyPanel.init();
            beanPropertyPanel.setBorder(BorderFactory.createTitledBorder(border, "Provider Properties"));
         }

         generalPanel.setBorder(BorderFactory.createTitledBorder(border, "Hermes Properties"));

         tabbedPane.add("Hermes", generalPanel);

         if (bean != null)
         {
            tabbedPane.add("Provider", beanPropertyPanel);
         }

         tabbedPane.setTabPlacement(JTabbedPane.BOTTOM);

         init();
      }
      catch (IllegalAccessException e)
      {
         throw new HermesRuntimeException(e);
      }
      catch (InvocationTargetException e)
      {
         throw new HermesRuntimeException(e);
      }
      catch (NoSuchMethodException e)
      {
         throw new HermesRuntimeException(e);
      }
   }

   @SuppressWarnings("unchecked")
public void init()
   {
      nameProperty = new JidePropertyImpl(NAME, NAME_INFO, String.class, config.getName());
      shortNameProperty = new JidePropertyImpl(SHORT_NAME, SHORT_NAME_INFO, String.class, config.getShortName());
      selectorProperty = new JidePropertyImpl(SELECTOR, SELECTOR_INFO, String.class, config.getSelector());
      domainProperty = new JidePropertyImpl(ISQUEUE, ISQUEUE_INFO, Domain.class, Domain.getDomain(config.getDomain()));
      durableProperty = new JidePropertyImpl(DURABLE, DURABLE_INFO, Boolean.class, Boolean.valueOf(config.isDurable()));
      durableClientIDProperty = new JidePropertyImpl(DURABLE_CLIENT, DURABLE_CLIENT_INFO, String.class, config.getClientID());
      usernameProperty =  new JidePropertyImpl(USERNAME, USERNAME_INFO, String.class, config.getUsername()) ;
      passwordProperty =  new JidePropertyImpl(PASSWORD, PASSWORD_INFO, String.class, config.getPassword()) ;
     
      Runnable doOnOK = new Runnable()
      {
         public void run()
         {
            log.debug("config=" + config);

            if (nameProperty.getValue() != null && !nameProperty.getValue().equals(""))
            {
               config.setName(nameProperty.getValue().toString());
            }

            if (shortNameProperty.getValue() != null && !shortNameProperty.getValue().equals(""))
            {
               config.setShortName(shortNameProperty.getValue().toString());
            }
            else
            {
               config.setShortName(null);
            }

            if (selectorProperty.getValue() != null && !selectorProperty.getValue().equals(""))
            {
               config.setSelector(selectorProperty.getValue().toString());
            }
            else
            {
               config.setSelector(null);
            }

            if (durableProperty.getValue() != null)
            {
               config.setDurable(((Boolean) durableProperty.getValue()).booleanValue());
            }

            if (domainProperty.getValue() != null)
            {
               Domain domain = (Domain) domainProperty.getValue();

               config.setDomain(domain.getId());
            }

            if (durableClientIDProperty.getValue() != null && !durableClientIDProperty.getValue().equals(""))
            {
               config.setClientID(durableClientIDProperty.getValue().toString());
            }
            else
            {
               config.setClientID(null);
            }
           
            if (usernameProperty.getValue() != null && !usernameProperty.getValue().equals(""))
            {
               config.setUsername(usernameProperty.getValue().toString());
            }
            else
            {
               config.setUsername(null);
            }
           
            if (passwordProperty.getValue() != null && !passwordProperty.getValue().equals(""))
            {
               config.setPassword(passwordProperty.getValue().toString());
            }
            else
            {
               config.setPassword(null);
            }          
         }
      };

      onOK.add(doOnOK);

      //
      // Build the model and create the table...

      List model = new ArrayList();

      model.add(nameProperty);
      model.add(shortNameProperty);
      model.add(selectorProperty);
      model.add(domainProperty);
      model.add(durableProperty);
      model.add(durableClientIDProperty);
      model.add(usernameProperty) ;
      model.add(passwordProperty) ;

      propertyTableModel = new PropertyTableModel(model);
      propertyTable = new PropertyTable(propertyTableModel);
      propertyTable.expandAll();

      propertyPane = new PropertyPane(propertyTable);
    
      generalPanel.add(propertyPane, BorderLayout.CENTER);

   }

   public void doOK()
   {
      if (beanPropertyPanel != null)
      {
         log.debug("config=" + config);

         beanPropertyPanel.doOK();

         if (beanPropertyPanel.getChanges().size() > 0)
         {
            if (config.getProperties() == null)
            {
               // @@TODO Fix.

               config.setProperties(new PropertySetConfig());
            }

            try
            {
               HermesBrowser.getConfigDAO().updatePropertySet(config.getProperties(), beanPropertyPanel.getChanges());
            }
            catch (JAXBException e)
            {
               log.error(e.getMessage(), e);
            }
         }
      }

      for (Iterator iter = onOK.iterator(); iter.hasNext();)
      {
         Runnable r = (Runnable) iter.next();
         r.run();
      }

   }

   public void doCancel()
   {
      // NOP
   }

   public Class getPropertyType(String propertyName) throws IllegalAccessException, InvocationTargetException, NoSuchMethodException
   {
      if (bean == null)
      {
         return String.class;
      }

      return PropertyUtils.getPropertyDescriptor(bean, propertyName).getPropertyType();
   }

   public void addOKAction(Runnable r)
   {
      onOK.add(r);
   }
}
TOP

Related Classes of hermes.browser.dialog.DestinationPropertyConfigPanel

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.