package net.sourceforge.squirrel_sql.client.mainframe.action; import net.sourceforge.squirrel_sql.client.IApplication; import net.sourceforge.squirrel_sql.client.action.SquirrelAction; import net.sourceforge.squirrel_sql.client.gui.db.IAliasesList; import net.sourceforge.squirrel_sql.client.gui.db.ICompletionCallback; import net.sourceforge.squirrel_sql.client.gui.db.SQLAlias; import net.sourceforge.squirrel_sql.client.gui.recentfiles.RecentFilesController; import net.sourceforge.squirrel_sql.client.gui.session.SessionInternalFrame; import net.sourceforge.squirrel_sql.client.session.ISession; import net.sourceforge.squirrel_sql.fw.sql.ISQLConnection; import net.sourceforge.squirrel_sql.fw.util.StringManager; import net.sourceforge.squirrel_sql.fw.util.StringManagerFactory; import javax.swing.*; import java.awt.event.ActionEvent; import java.io.File; public class AliasFileOpenAction extends SquirrelAction { private static final StringManager s_stringMgr = StringManagerFactory.getStringManager(AliasFileOpenAction.class); private IAliasesList _aliasList; public AliasFileOpenAction(IApplication app, IAliasesList al) { super(app); _aliasList = al; } public void actionPerformed(ActionEvent e) { SQLAlias selectedAlias = _aliasList.getSelectedAlias(null); if(null == selectedAlias) { getApplication().getMessageHandler().showWarningMessage(s_stringMgr.getString("AliasFileOpenAction.noAliasSelected")); return; } final File fileToOpen = new RecentFilesController(getApplication(), selectedAlias).getFileToOpen(); if(null == fileToOpen) { return; } ICompletionCallback callback = new ICompletionCallback() { @Override public void connected(ISQLConnection conn) { } @Override public void sessionCreated(ISession session) { } @Override public void sessionInternalFrameCreated(SessionInternalFrame sessionInternalFrame) { onSessionInternalFrameCreated(sessionInternalFrame, fileToOpen); } @Override public void errorOccured(Throwable th, boolean stopConnection) { } }; new ConnectToAliasCommand(getApplication(), selectedAlias, true, callback).execute(); } private void onSessionInternalFrameCreated(final SessionInternalFrame sessionInternalFrame, final File fileToOpen) { SwingUtilities.invokeLater(new Runnable() { public void run() { sessionInternalFrame.getSQLPanelAPI().fileOpen(fileToOpen); } }); } }