package net.sourceforge.squirrel_sql.client.gui.desktopcontainer; import net.sourceforge.squirrel_sql.client.session.*; import net.sourceforge.squirrel_sql.fw.util.StringManager; import net.sourceforge.squirrel_sql.fw.util.StringManagerFactory; import java.io.File; public abstract class SessionTabWidget extends TabWidget implements ISessionWidget { private static final StringManager s_stringMgr = StringManagerFactory.getStringManager(SessionTabWidget.class); private ISession _session; private String _titleWithoutFile = ""; private TitleFilePathHandler _titleFileHandler; public SessionTabWidget(String title, boolean resizeable, boolean closeable, boolean maximizeable, boolean iconifiable, ISession session) { super(title, resizeable, closeable, maximizeable, iconifiable, session.getApplication()); _session = session; _titleWithoutFile = title; setupSheet(); TitleFilePathHandlerListener titleFilePathHandlerListener = new TitleFilePathHandlerListener() { @Override public void refreshFileDisplay() { setTitle(_titleWithoutFile); } }; _titleFileHandler = new TitleFilePathHandler(_session.getApplication().getResources(), titleFilePathHandlerListener); } public SessionTabWidget(String title, boolean resizeable, ISession session) { this(title, resizeable, true, false, false, session); } public ISession getSession() { return _session; } public void closeFrame(boolean withEvents) { if (!_session.isfinishedLoading()) { return; } if (withEvents) { fireWidgetClosing(); } dispose(); if (withEvents) { fireWidgetClosed(); } } private final void setupSheet() { _session.getApplication().getWindowManager().registerSessionSheet(this); addWidgetListener(new SheetActivationListener()); } @Override public void setTitle(String title) { _titleWithoutFile = title; if(null == _titleFileHandler) // happens when method is called in boostrap { super.setTitle(_titleWithoutFile); return; } if (_titleFileHandler.hasFile()) { String compositetitle = _titleWithoutFile + _titleFileHandler.getSqlFile(); super.setTitle(compositetitle); super.addSmallTabButton(_titleFileHandler.getFileMenuSmallButton()); } else { super.setTitle(_titleWithoutFile); super.removeSmallTabButton(_titleFileHandler.getFileMenuSmallButton()); } } public void setSqlFile(File sqlFile) { _titleFileHandler.setSqlFile(sqlFile); setTitle(_titleWithoutFile); } /** * Toggles the "*" at the end of the filename based on the value of * unsavedEdits. Just to provide the user with a visual hint that they may * need to save their changes. * * @param unsavedEdits */ public void setUnsavedEdits(boolean unsavedEdits) { // String title = super.getTitle(); // // if (unsavedEdits && !title.endsWith("*")) // { // super.setTitle(title + "*"); // } // if (!unsavedEdits && title.endsWith("*")) // { // super.setTitle(title.substring(0, title.length() - 1)); // } _titleFileHandler.setUnsavedEdits(unsavedEdits); } /** * Sets the session behind this sheet to the active session when the * frame is activated */ private class SheetActivationListener extends WidgetAdapter { public void widgetActivated(WidgetEvent e) { _session.setActiveSessionWindow((ISessionWidget) e.getWidget()); _session.getApplication().getSessionManager().setActiveSession(_session, false); } } }