package net.sourceforge.squirrel_sql.client.session.mainpanel;
import net.sourceforge.squirrel_sql.client.session.ISession;
import net.sourceforge.squirrel_sql.fw.gui.GUIUtils;
import net.sourceforge.squirrel_sql.fw.util.StringManager;
import net.sourceforge.squirrel_sql.fw.util.StringManagerFactory;
import javax.swing.*;
import javax.swing.event.AncestorEvent;
import javax.swing.event.AncestorListener;
import java.awt.event.*;
class CancelPanelCtrl
{
private static final StringManager s_stringMgr = StringManagerFactory.getStringManager(CancelPanelCtrl.class);
private CancelPanel _panel;
/**
* Total number of queries that will be executed.
*/
private int _queryCount;
/**
* Number of the query currently being executed (starts from 1).
*/
private int _currentQueryIndex = 0;
private CancelPanelListener _listener;
private final TimerHolder _timer;
CancelPanelCtrl(CancelPanelListener listener, ISession session)
{
_listener = listener;
_panel = new CancelPanel(session);
_panel.cancelBtn.addActionListener(new ActionListener()
{
@Override
public void actionPerformed(ActionEvent e)
{
onCancel();
}
});
_panel.closeBtn.addActionListener(new ActionListener()
{
@Override
public void actionPerformed(ActionEvent e)
{
onClose();
}
});
_timer = new TimerHolder(_panel.txtExecTimeCounter);
}
void incCurrentQueryIndex()
{
++_currentQueryIndex;
}
void setSQL(final String sql)
{
Runnable runnable = new Runnable()
{
public void run()
{
// i18n[SQLResultExecuterPanel.currentSQLLabel={0} of {1} - {2}]
String label =
s_stringMgr.getString("SQLResultExecuterPanel.currentSQLLabel",
new Object[]{String.valueOf(_currentQueryIndex),
String.valueOf(_queryCount),
sql});
_panel.sqlLbl.setText(label);
}
};
GUIUtils.processOnSwingEventThread(runnable);
}
void setStatusLabel(final String text)
{
Runnable runnable = new Runnable()
{
public void run()
{
_panel.currentStatusLbl.setText(text);
}
};
GUIUtils.processOnSwingEventThread(runnable);
}
void setQueryCount(int value)
{
_queryCount = value;
_currentQueryIndex = 0;
}
int getTotalCount()
{
return _queryCount;
}
int getCurrentQueryIndex()
{
return _currentQueryIndex;
}
private void onCancel()
{
_listener.cancelRequested();
}
private void onClose()
{
_panel.cancelBtn.doClick();
_listener.closeRquested();
}
CancelPanel getPanel()
{
return _panel;
}
public void wasRemoved()
{
_timer.stop();
}
}