Package net.sourceforge.squirrel_sql.client.gui.db

Source Code of net.sourceforge.squirrel_sql.client.gui.db.DriversListInternalFrame

package net.sourceforge.squirrel_sql.client.gui.db;
/*
* Copyright (C) 2001-2004 Colin Bell
* colbell@users.sourceforge.net
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
*/
import java.awt.event.MouseEvent;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.beans.VetoableChangeListener;
import java.beans.PropertyVetoException;

import javax.swing.*;

import net.sourceforge.squirrel_sql.fw.gui.BasePopupMenu;
import net.sourceforge.squirrel_sql.fw.gui.ToolBar;
import net.sourceforge.squirrel_sql.fw.sql.ISQLDriver;
import net.sourceforge.squirrel_sql.fw.util.ICommand;
import net.sourceforge.squirrel_sql.fw.util.StringManager;
import net.sourceforge.squirrel_sql.fw.util.StringManagerFactory;

import net.sourceforge.squirrel_sql.client.IApplication;
import net.sourceforge.squirrel_sql.client.gui.desktopcontainer.WidgetAdapter;
import net.sourceforge.squirrel_sql.client.gui.desktopcontainer.WidgetEvent;
import net.sourceforge.squirrel_sql.client.action.ActionCollection;
import net.sourceforge.squirrel_sql.client.mainframe.action.CopyDriverAction;
import net.sourceforge.squirrel_sql.client.mainframe.action.CreateDriverAction;
import net.sourceforge.squirrel_sql.client.mainframe.action.DeleteDriverAction;
import net.sourceforge.squirrel_sql.client.mainframe.action.InstallDefaultDriversAction;
import net.sourceforge.squirrel_sql.client.mainframe.action.ModifyDriverAction;
import net.sourceforge.squirrel_sql.client.mainframe.action.ModifyDriverCommand;
import net.sourceforge.squirrel_sql.client.mainframe.action.ShowDriverWebsiteAction;
import net.sourceforge.squirrel_sql.client.mainframe.action.ShowLoadedDriversOnlyAction;
import net.sourceforge.squirrel_sql.client.preferences.SquirrelPreferences;
/**
* This windows displays a list of JDBC drivers and allows the user
* to maintain their details, add new ones etc.
*
* @author  <A HREF="mailto:colbell@users.sourceforge.net">Colin Bell</A>
*/
public class DriversListInternalFrame extends BaseListInternalFrame
{
  private static final long serialVersionUID = 1L;

  /** Internationalized strings for this class. */
  private static final StringManager s_stringMgr =
    StringManagerFactory.getStringManager(BaseListInternalFrame.class);

  /** Application API. */
  private IApplication _app;

  /** User Interface facory. */
  private UserInterfaceFactory _uiFactory;

  /**
   * Default ctor.
   */
  public DriversListInternalFrame(IApplication app, DriversList list)
  {
    super(new UserInterfaceFactory(app, list), app);
    _app = app;
    _uiFactory = (UserInterfaceFactory)getUserInterfaceFactory();
    _uiFactory.setDriversListInternalFrame(this);


      addVetoableChangeListener(new VetoableChangeListener()
      {
         public void vetoableChange(PropertyChangeEvent evt) throws PropertyVetoException
         {
            if(JInternalFrame.IS_CLOSED_PROPERTY.equals(evt.getPropertyName()) && Boolean.TRUE.equals(evt.getNewValue()))
            {
               // i18n[DriversListInternalFrame.error.ctrlF4key=Probably closed by the ctrl F4 key. See BasicDesktopPaneUi.CloseAction]
               throw new PropertyVetoException(s_stringMgr.getString("DriversListInternalFrame.error.ctrlF4key"), evt);
            }
         }
      });

      addWidgetListener(new WidgetAdapter()
      {
         @Override
         public void widgetOpened(WidgetEvent evt)
         {
            nowVisible(true);
         }
        
         @Override
         public void widgetClosing(WidgetEvent evt)
         {
            nowVisible(false);
         }

         @Override
         public void widgetClosed(WidgetEvent evt)
         {
            nowVisible(false);
         }
      });



      _app.getSquirrelPreferences().addPropertyChangeListener(new PropertyChangeListener()
    {
      public void propertyChange(PropertyChangeEvent evt)
      {
        final String propName = evt != null ? evt.getPropertyName() : null;
        _uiFactory.propertiesChanged(propName);
      }
    });
  }


   public void nowVisible(final boolean b)
   {
      SwingUtilities.invokeLater(new Runnable()
      {
         public void run()
         {
            _app.getMainFrame().setEnabledDriversMenu(b);
            _uiFactory._driversList.requestFocus();
         }
      });
   }


   private final static class UserInterfaceFactory
    implements BaseListInternalFrame.IUserInterfaceFactory
  {
    private IApplication _app;
    private DriversList _driversList;
    private ToolBar _tb;
    private BasePopupMenu _pm = new BasePopupMenu();
    private DriversListInternalFrame _tw;

    UserInterfaceFactory(IApplication app, DriversList list)
    {
      super();
      if (app == null)
      {
        throw new IllegalArgumentException("IApplication == null");
      }
      if (list == null)
      {
        throw new IllegalArgumentException("DriversList == null");
      }

      _app = app;
//      _driversList = new DriversList(app);
      _driversList = list;

      final ActionCollection actions = app.getActionCollection();
      _pm.add(actions.get(CreateDriverAction.class));
      _pm.addSeparator();
      _pm.add(actions.get(ModifyDriverAction.class));
      _pm.add(actions.get(CopyDriverAction.class));
            _pm.add(actions.get(ShowDriverWebsiteAction.class));
            _pm.addSeparator();
      _pm.add(actions.get(DeleteDriverAction.class));
      _pm.addSeparator();
    }

    public ToolBar getToolBar()
    {
      return _tb;
    }

    public BasePopupMenu getPopupMenu()
    {
      return _pm;
    }

    public IBaseList getList()
    {
      return _driversList;
    }

    public String getWindowTitle()
    {
      return s_stringMgr.getString("DriversListInternalFrame.windowtitle");
    }

    public ICommand getDoubleClickCommand(MouseEvent evt)
    {
      ICommand cmd = null;
      ISQLDriver driver = _driversList.getSelectedDriver();
      if (driver != null)
      {
        cmd = new ModifyDriverCommand(_app, driver);
      }
      return cmd;
    }


    void setDriversListInternalFrame(DriversListInternalFrame tw)
    {
      _tw = tw;
      propertiesChanged(null);
    }

    public void propertiesChanged(String propName)
    {
      if (propName == null ||
        propName.equals(SquirrelPreferences.IPropertyNames.SHOW_DRIVERS_TOOL_BAR))
      {
        boolean show = _app.getSquirrelPreferences().getShowDriversToolBar();
        if (show)
        {
          createToolBar();
        }
        else
        {
          _tb = null;
        }
        _tw.setToolBar(getToolBar());
      }
    }

    private void createToolBar()
    {
      _tb = new ToolBar();
      _tb.setUseRolloverButtons(true);
      _tb.setFloatable(false);

         if (_app.getDesktopStyle().isInternalFrameStyle())
         {
            final JLabel lbl = new JLabel(getWindowTitle(), SwingConstants.CENTER);
            lbl.setBorder(BorderFactory.createEmptyBorder(0, 5, 0, 5));
            _tb.add(lbl, 0);
         }

         final ActionCollection actions = _app.getActionCollection();
      _tb.add(actions.get(CreateDriverAction.class));
      _tb.add(actions.get(ModifyDriverAction.class));
      _tb.add(actions.get(CopyDriverAction.class));
         _tb.add(actions.get(ShowDriverWebsiteAction.class));
      _tb.add(actions.get(DeleteDriverAction.class));
      _tb.addSeparator();
      _tb.add(actions.get(InstallDefaultDriversAction.class));
      _tb.addSeparator();
//      _tb.add(actions.get(ShowLoadedDriversOnlyAction.class));

      final Action act = actions.get(ShowLoadedDriversOnlyAction.class);
      final JToggleButton btn = new JToggleButton(act);
      final boolean show = _app.getSquirrelPreferences().getShowLoadedDriversOnly();
      btn.setSelected(show);
      btn.setText(null);
      _tb.add(btn);
    }

    public SquirrelPreferences getPreferences()
    {
      return _app.getSquirrelPreferences();
    }
  }
}
TOP

Related Classes of net.sourceforge.squirrel_sql.client.gui.db.DriversListInternalFrame

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.