package net.sourceforge.squirrel_sql.client.session.action;
import java.awt.event.ActionEvent;
import javax.swing.JOptionPane;
import net.sourceforge.squirrel_sql.client.IApplication;
import net.sourceforge.squirrel_sql.client.action.SquirrelAction;
import net.sourceforge.squirrel_sql.client.gui.desktopcontainer.ISessionWidget;
import net.sourceforge.squirrel_sql.client.gui.session.SessionPanel;
import net.sourceforge.squirrel_sql.client.session.ISession;
import net.sourceforge.squirrel_sql.fw.util.StringManager;
import net.sourceforge.squirrel_sql.fw.util.StringManagerFactory;
/**
* Class responsible for renaming selected session title.
* When it is invoked on main session tab, the session itself with all session tabs are renamed.
* When is is invoked on the second, third, ... tab, only selected tab is renamed.
* If one session tab is renamed and then the session itself is renamed, all tabs including the renamed one are renamed.
* @author Vladislav Vavra
*/
public class RenameSessionAction extends SquirrelAction
implements ISessionAction
{
private ISession _session;
private static final StringManager s_stringMgr =
StringManagerFactory.getStringManager(RenameSessionAction.class);
public RenameSessionAction(IApplication app)
{
super(app);
}
public void setSession(ISession session)
{
_session = session;
}
/**
* Method for renaming a session.
*/
public void actionPerformed(ActionEvent evt)
{
setSession(_app.getSessionManager().getActiveSession());
String newTitle = JOptionPane.showInputDialog(_app.getMainFrame(),
s_stringMgr.getString("RenameSessionAction.label"),
s_stringMgr.getString("RenameSessionAction.title"),
JOptionPane.QUESTION_MESSAGE);
if(null == newTitle)
{
// Dialog was canceled.
return;
}
if(!_session.getActiveSessionWindow().equals(_app.getWindowManager().getAllFramesOfSession(_session.getIdentifier())[0]))
{
_session.getActiveSessionWindow().setTitle(newTitle);
}
else
{
_session.setTitle(newTitle);
updateGui();
}
}
/**
* Method for propagating new session title into gui.
*/
private void updateGui() {
_app.getMainFrame().repaint();
ISessionWidget[] sessionSheets = _app.getWindowManager().getAllFramesOfSession(_session.getIdentifier());
if(sessionSheets.length==0) return;
sessionSheets[0].setTitle(_session.getTitle());
for(int i=1;i<sessionSheets.length;i++) {
sessionSheets[i].setTitle(_session.getTitle()+" (" + (i + 1) + ")");
}
}
}