Package hermes.browser.components

Source Code of hermes.browser.components.ClasspathGroupTable

/*
* 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.components;

import hermes.browser.HermesBrowser;
import hermes.browser.dialog.PreferencesDialog;
import hermes.browser.model.ClasspathGroupTableModel;
import hermes.config.ClasspathGroupConfig;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;

import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPopupMenu;
import javax.swing.SwingUtilities;
import javax.swing.table.TableModel;

import org.apache.commons.lang.StringUtils;
import org.apache.log4j.Logger;

import com.jidesoft.grid.HierarchicalTable;

/**
* @author colincrist@hermesjms.com last changed by: $Author: colincrist $
* @version $Id: ClasspathGroupTable.java,v 1.3 2005/04/08 15:54:20 colincrist
*          Exp $
*/
public class ClasspathGroupTable extends HierarchicalTable
{
   /**
   *
   */
  private static final long serialVersionUID = -6816153288315919899L;

private static final Logger log = Logger.getLogger(ClasspathGroupTable.class);

   private ClasspathGroupTableModel model;
   private PreferencesDialog dialog;
   private MouseAdapter mouseAdapter;

   public ClasspathGroupTable(PreferencesDialog dialog, ClasspathGroupTableModel model)
   {
      super(model);
      this.dialog = dialog;
      this.model = model;

      setComponentFactory(model);

      init();
   }

   public ClasspathGroupTable(PreferencesDialog dialog)
   {
      this(dialog, null);
   }

   public ClasspathGroupTableModel getClasspathGroupTableModel()
   {
      return model;
   }

   public void setModel(TableModel model)
   {
      super.setModel(model);

      this.model = (ClasspathGroupTableModel) model;
      setComponentFactory((ClasspathGroupTableModel) model);
   }

   public MouseAdapter getMouseAdapter()
   {
      return mouseAdapter;
   }

   private void init()
   {
      final JPopupMenu popupMenu = new JPopupMenu();
      final JMenuItem addItem = new JMenuItem("Add Group");
      final JMenuItem removeItem = new JMenuItem("Remove Group");
      final JMenuItem renameItem = new JMenuItem("Rename");

      popupMenu.add(addItem);
      popupMenu.add(removeItem);
      popupMenu.add(renameItem);

      addItem.addActionListener(new ActionListener()
      {
         public void actionPerformed(ActionEvent arg0)
         {
            try
            {
               doAddGroup();
               dialog.setDirty();
            }
            catch (Exception ex)
            {
               log.error(ex.getMessage(), ex);
            }
         }
      });

      removeItem.addActionListener(new ActionListener()
      {
         public void actionPerformed(ActionEvent arg0)
         {
            if (getSelectedRowCount() > 0)
            {
               for (int row : getSelectedRows())
               {
                  getClasspathGroupTableModel().removeRow(row);
               }
               dialog.setDirty();
            }
         }
      });

      renameItem.addActionListener(new ActionListener()
      {
         public void actionPerformed(ActionEvent e)
         {
            if (getSelectedRow() != -1)
            {
               doRename();
            }
         }
      });

      mouseAdapter = new MouseAdapter()
      {
         public void mousePressed(MouseEvent e)
         {
            if (SwingUtilities.isRightMouseButton(e))
            {
               removeItem.setEnabled(getClasspathGroupTableModel().getRowCount() != 0);
               renameItem.setEnabled(getClasspathGroupTableModel().getRowCount() != 0);
               popupMenu.show(e.getComponent(), e.getX(), e.getY());
            }
         }
      };

      addMouseListener(mouseAdapter);
      getTableHeader().addMouseListener(mouseAdapter);

      if (dialog != null)
      {
         addPropertyChangeListener(new PropertyChangeListener()
         {
            public void propertyChange(PropertyChangeEvent evt)
            {
               //
               // Think this is ok, seems 2 do the job.

               if (evt.getPropertyName().equals("tableCellEditor"))
               {
                  dialog.setDirty();
               }
            }
         });
      }
   }

   public void doRename()
   {
      final ClasspathGroupConfig config = getClasspathGroupTableModel().getRow(getSelectedRow());
      final String name = JOptionPane.showInputDialog(HermesBrowser.getBrowser(), "New name:", config.getId());

      if (!config.getId().equals(name))
      {
         config.setId(name);
         dialog.setDirty();
      }
   }

   public void doAddGroup()
   {
      final String name = JOptionPane.showInputDialog(HermesBrowser.getBrowser(), "Classpath group name:", "");

      if (!StringUtils.isEmpty(name))
      {
         final ClasspathGroupConfig config = new ClasspathGroupConfig();

         config.setId(name);
         getClasspathGroupTableModel().addRow(config);
         expandRow(getClasspathGroupTableModel().getRowCount() - 1) ;
      }
   }

}
TOP

Related Classes of hermes.browser.components.ClasspathGroupTable

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.