All Downloads are FREE. Search and download functionalities are using the official Maven repository.

net.sourceforge.squirrel_sql.client.gui.desktopcontainer.TitleFilePathHandler Maven / Gradle / Ivy

package net.sourceforge.squirrel_sql.client.gui.desktopcontainer;

import net.sourceforge.squirrel_sql.client.gui.desktopcontainer.docktabdesktop.SmallTabButton;
import net.sourceforge.squirrel_sql.client.resources.SquirrelResources;
import net.sourceforge.squirrel_sql.fw.util.StringManager;
import net.sourceforge.squirrel_sql.fw.util.StringManagerFactory;

import javax.swing.*;
import java.awt.*;
import java.awt.datatransfer.Clipboard;
import java.awt.datatransfer.StringSelection;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.IOException;
import java.util.prefs.Preferences;

public class TitleFilePathHandler
{
   private static final StringManager s_stringMgr =
         StringManagerFactory.getStringManager(TitleFilePathHandler.class);

   private static final String PREF_KEY_TITLE_FILE_PATH_HANDLER_SHOW_FILE_NAME = "Squirrel.TitleFilePathHandler.showFileName";
   private static final String PREF_KEY_TITLE_FILE_PATH_HANDLER_SHOW_PATH_NAME = "Squirrel.TitleFilePathHandler.showPathName";



   private File _sqlFile;
   private SquirrelResources _resources;
   private TitleFilePathHandlerListener _titleFilePathHandlerListener;
   private SmallTabButton _smallTabButton;
   private JPopupMenu _popUp;
   private JCheckBoxMenuItem _chkMnuShowFileName;
   private JCheckBoxMenuItem _chkMnuShowFilePath;


   public TitleFilePathHandler(SquirrelResources resources, TitleFilePathHandlerListener titleFilePathHandlerListener)
   {
      _resources = resources;
      _titleFilePathHandlerListener = titleFilePathHandlerListener;
      String msg = s_stringMgr.getString("desktopcontainer.TitleFilePathHandler.tooltip");
      _smallTabButton = new SmallTabButton(msg, _resources.getIcon(SquirrelResources.IImageNames.SMALL_FILE));

      _smallTabButton.addActionListener(new ActionListener()
      {
         @Override
         public void actionPerformed(ActionEvent e)
         {
            showPopup();
         }
      });

      _popUp = new JPopupMenu();

      JMenuItem mnuOpenFilePath = new JMenuItem(s_stringMgr.getString("desktopcontainer.TitleFilePathHandler.openFilePath"));
      _popUp.add(mnuOpenFilePath);
      mnuOpenFilePath.addActionListener(new ActionListener()
      {
         @Override
         public void actionPerformed(ActionEvent e)
         {
            onOpenFilePath();
         }
      });

      JMenuItem mnuCopyFilePath = new JMenuItem(s_stringMgr.getString("desktopcontainer.TitleFilePathHandler.copyFilePath"));
      _popUp.add(mnuCopyFilePath);
      mnuCopyFilePath.addActionListener(new ActionListener()
      {
         @Override
         public void actionPerformed(ActionEvent e)
         {
            onCopyFilePath();
         }
      });


      _popUp.addSeparator();

      _chkMnuShowFileName = new JCheckBoxMenuItem(s_stringMgr.getString("desktopcontainer.TitleFilePathHandler.showFileName"));
      _popUp.add(_chkMnuShowFileName);
      _chkMnuShowFileName.addActionListener(new ActionListener()
      {
         @Override
         public void actionPerformed(ActionEvent e)
         {
            onChkMnuShowFileName();
         }
      });

      _chkMnuShowFilePath = new JCheckBoxMenuItem(s_stringMgr.getString("desktopcontainer.TitleFilePathHandler.showFilePath"));
      _popUp.add(_chkMnuShowFilePath);
      _chkMnuShowFilePath.addActionListener(new ActionListener()
      {
         @Override
         public void actionPerformed(ActionEvent e)
         {
            onChkMnuShowFilePath();
         }
      });


      JMenuItem mnuRememberCheckboxes = new JMenuItem(s_stringMgr.getString("desktopcontainer.TitleFilePathHandler.rememberCheckBoxes"));
      _popUp.add(mnuRememberCheckboxes);
      mnuRememberCheckboxes.addActionListener(new ActionListener()
      {
         @Override
         public void actionPerformed(ActionEvent e)
         {
            onRememberCheckboxes();
         }
      });

      _chkMnuShowFileName.setSelected(Preferences.userRoot().getBoolean(PREF_KEY_TITLE_FILE_PATH_HANDLER_SHOW_FILE_NAME, false));
      _chkMnuShowFilePath.setSelected(Preferences.userRoot().getBoolean(PREF_KEY_TITLE_FILE_PATH_HANDLER_SHOW_PATH_NAME, false));
   }

   private void onRememberCheckboxes()
   {
      Preferences.userRoot().putBoolean(PREF_KEY_TITLE_FILE_PATH_HANDLER_SHOW_FILE_NAME, _chkMnuShowFileName.isSelected());
      Preferences.userRoot().putBoolean(PREF_KEY_TITLE_FILE_PATH_HANDLER_SHOW_PATH_NAME, _chkMnuShowFilePath.isSelected());
   }

   private void onChkMnuShowFilePath()
   {
      _chkMnuShowFileName.setSelected(false);
      _titleFilePathHandlerListener.refreshFileDisplay();
   }

   private void onChkMnuShowFileName()
   {
      _chkMnuShowFilePath.setSelected(false);
      _titleFilePathHandlerListener.refreshFileDisplay();
   }

   private void onCopyFilePath()
   {
      if(hasFile())
      {
         Clipboard clip = Toolkit.getDefaultToolkit().getSystemClipboard();
         StringSelection data = new StringSelection(_sqlFile.getAbsolutePath());
         clip.setContents(data, data);
      }
   }

   private void onOpenFilePath()
   {
      try
      {
         if(hasFile())
         {
            Desktop desktop = Desktop.getDesktop();
            desktop.open(_sqlFile.getParentFile());
         }
      }
      catch (IOException e)
      {
         throw new RuntimeException(e);
      }
   }

   private void showPopup()
   {
      _popUp.show(_smallTabButton, 0, 0);
   }

   public void setSqlFile(File sqlFile)
   {
      _sqlFile = sqlFile;
      if(null == _sqlFile)
      {
         _smallTabButton.setIcon(_resources.getIcon(SquirrelResources.IImageNames.SMALL_FILE));
         _smallTabButton.setToolTipText("");
      }
      else
      {
         _smallTabButton.setToolTipText(_sqlFile.getAbsolutePath());
      }
   }

   public boolean hasFile()
   {
      return null != _sqlFile;
   }

   public String getSqlFile()
   {

      if (_chkMnuShowFilePath.isSelected())
      {
         return "  " + s_stringMgr.getString("desktopcontainer.TitleFilePathHandler.pathDisplayPrefix", _sqlFile.getAbsolutePath());
      }
      else if (_chkMnuShowFileName.isSelected())
      {
         return "  " + s_stringMgr.getString("desktopcontainer.TitleFilePathHandler.fileDisplayPrefix", _sqlFile.getName());
      }
      else
      {
         return "";
      }
   }

   public SmallTabButton getFileMenuSmallButton()
   {
      return _smallTabButton;
   }

   public void setUnsavedEdits(boolean unsavedEdits)
   {
      if (unsavedEdits)
      {
         _smallTabButton.setIcon(_resources.getIcon(SquirrelResources.IImageNames.SMALL_FILE_CHANGED));
      }
      else
      {
         _smallTabButton.setIcon(_resources.getIcon(SquirrelResources.IImageNames.SMALL_FILE));
      }
   }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy