Package net.sourceforge.squirrel_sql.client.session.action

Source Code of net.sourceforge.squirrel_sql.client.session.action.ToggleAutoCommitAction

package net.sourceforge.squirrel_sql.client.session.action;

import java.awt.event.ActionEvent;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;

import net.sourceforge.squirrel_sql.client.IApplication;
import net.sourceforge.squirrel_sql.client.action.SquirrelAction;
import net.sourceforge.squirrel_sql.client.session.ISession;
import net.sourceforge.squirrel_sql.client.session.properties.SessionProperties;
import net.sourceforge.squirrel_sql.fw.gui.GUIUtils;
import net.sourceforge.squirrel_sql.fw.gui.IToggleAction;
import net.sourceforge.squirrel_sql.fw.gui.ToggleComponentHolder;

/**
* This <CODE>Action</CODE> allows the user to commit the current SQL
* transaction.
*
* @author <A HREF="mailto:colbell@users.sourceforge.net">Colin Bell</A>
*/
public class ToggleAutoCommitAction extends SquirrelAction implements ISessionAction, IToggleAction
{
   static final long serialVersionUID = 4894924988552643833L;
     
   private ISession _session;
   private PropertyChangeListener _propertyListener;
   private boolean _inActionPerformed;
   private ToggleComponentHolder _toogleComponentHolder;

   public ToggleAutoCommitAction(IApplication app)
   {
      super(app);

      _toogleComponentHolder = new ToggleComponentHolder();

      _propertyListener = new PropertyChangeListener()
      {
         public void propertyChange(PropertyChangeEvent evt)
         {
            if (SessionProperties.IPropertyNames.AUTO_COMMIT.equals(evt.getPropertyName()))
            {
               Boolean autoCom = (Boolean) evt.getNewValue();
               _toogleComponentHolder.setSelected(autoCom.booleanValue());
            }
         }
      };

      setEnabled(false);
   }

   public void setSession(final ISession session)
   {
      if(null != _session)
      {
         _session.getProperties().removePropertyChangeListener(_propertyListener);
      }
      _session = session;

      GUIUtils.processOnSwingEventThread(new Runnable() {
          public void run() {
              if (session == null || session.getProperties() == null) {
                  setEnabled(false);
                 _toogleComponentHolder.setSelected(false);
              } else {
                 SessionProperties props = session.getProperties();
                 setEnabled(true);
                 props.addPropertyChangeListener(_propertyListener);
                 _toogleComponentHolder.setSelected(props.getAutoCommit());
              }
          }
      });

   }

   public ToggleComponentHolder getToggleComponentHolder()
   {
      return _toogleComponentHolder;
   }


   public void actionPerformed(ActionEvent evt)
   {
      try
      {
         if(_inActionPerformed)
         {
            return;
         }

         _inActionPerformed = true;
         _session.getProperties().setAutoCommit(_toogleComponentHolder.isSelected());
      }
      finally
      {
         _inActionPerformed = false;
      }
   }
}
TOP

Related Classes of net.sourceforge.squirrel_sql.client.session.action.ToggleAutoCommitAction

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.