Package de.ixdb.squirrel_sql.plugins.cache

Source Code of de.ixdb.squirrel_sql.plugins.cache.NamespaceCtrl

package de.ixdb.squirrel_sql.plugins.cache;

import net.sourceforge.squirrel_sql.fw.gui.GUIUtils;
import net.sourceforge.squirrel_sql.client.session.ISession;
import net.sourceforge.squirrel_sql.client.session.event.ISessionListener;
import net.sourceforge.squirrel_sql.client.session.event.SessionEvent;
import net.sourceforge.squirrel_sql.client.session.event.SessionAdapter;

import javax.swing.*;
import javax.swing.table.DefaultTableModel;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.prefs.Preferences;
import java.util.Vector;
import java.util.Arrays;


public class NamespaceCtrl
{
   private NamespaceDlg _dlg;
   private NamespaceCtrlListener _namespaceCtrlListener;
   private ISession _session;

   private String[] _cols = new String[]{"Namespace", "Associated aliases"};

   private static final String PREFS_KEY_ALIAS_NAME_TEMPLATE = "Squirrel.ixdb.aliasNameTemplate";
   private static final String ALIAS_NAME_TEMPLATE_DEFAULT = "Cache %server %namespace";


   public NamespaceCtrl(ISession session, String[][] nameSpacesAndAliases, NamespaceCtrlListener namespaceCtrlListener)
   {
      _session = session;

      _session.getApplication().getSessionManager().addSessionListener(new SessionAdapter()
      {
         public void sessionClosed(SessionEvent evt)
         {
            _dlg.setVisible(false);
            _dlg.dispose();
         }
      });

      _namespaceCtrlListener = namespaceCtrlListener;
      _dlg = new NamespaceDlg(session.getApplication().getMainFrame());

      DefaultTableModel dtm =
         new DefaultTableModel()
         {
            public boolean isCellEditable(int row, int column)
            {
               return false;
            }
         };

      dtm.setDataVector(nameSpacesAndAliases, _cols);

      _dlg.tblNamespaces.setModel(dtm);

      _dlg.tblNamespaces.addMouseListener(new MouseAdapter()
      {
         public void mouseClicked(MouseEvent e)
         {
            onMouseClicked(e);
         }

      });

      String aliasNameTemplate = Preferences.userRoot().get(PREFS_KEY_ALIAS_NAME_TEMPLATE, ALIAS_NAME_TEMPLATE_DEFAULT);

      _dlg.txtAliasNameTemplate.setText(aliasNameTemplate);

      _dlg.setSize(400, 400);

      GUIUtils.centerWithinParent(_dlg);

      _dlg.setVisible(true);


   }

   private void onMouseClicked(MouseEvent e)
   {
      if(1 < e.getClickCount())
      {
         int selRow =_dlg.tblNamespaces.getSelectedRow();

         if(-1 == selRow)
         {
            return;
         }

         DefaultTableModel dtm =(DefaultTableModel) _dlg.tblNamespaces.getModel();

         Vector dataVector = dtm.getDataVector();

         Vector rowVector =  (Vector) dataVector.get(selRow);
         String[] selNamespaceAndAlias = (String[]) rowVector.toArray(new String[rowVector.size()]);

         if(0 < selNamespaceAndAlias[1].length())
         {
            String msg =
               "The selected namespace already has one or more aliases.\n" +
               "Do you want to create another alias for the selected namespace?.";

            if(JOptionPane.YES_OPTION != JOptionPane.showConfirmDialog(_dlg, msg, "Duplicate alias", JOptionPane.YES_NO_CANCEL_OPTION))
            {
               return;
            }
         }

         String aliasNameTemplate = _dlg.txtAliasNameTemplate.getText();

         if(null == aliasNameTemplate || 0 == aliasNameTemplate.trim().length())
         {
            aliasNameTemplate = ALIAS_NAME_TEMPLATE_DEFAULT;
         }

         Preferences.userRoot().put(PREFS_KEY_ALIAS_NAME_TEMPLATE, aliasNameTemplate);


         String newAliasName = _namespaceCtrlListener.nameSpaceSelected(_session, selNamespaceAndAlias[0], aliasNameTemplate);

         if(0 == selNamespaceAndAlias[1].length())
         {
            selNamespaceAndAlias[1] = newAliasName;
         }
         else
         {
            selNamespaceAndAlias[1] += ";" + newAliasName;
         }

         rowVector.remove(1);
         rowVector.add(selNamespaceAndAlias[1]);

         Vector colsVector = new Vector(Arrays.asList(_cols));
         dtm.setDataVector(dataVector, colsVector);


         _dlg.tblNamespaces.getSelectionModel().setSelectionInterval(selRow, selRow);
      }
   }

}
TOP

Related Classes of de.ixdb.squirrel_sql.plugins.cache.NamespaceCtrl

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.