package net.sourceforge.squirrel_sql.client.session.mainpanel.objecttree;
import net.sourceforge.squirrel_sql.client.session.DefaultSQLEntryPanel;
import net.sourceforge.squirrel_sql.client.session.ISession;
import net.sourceforge.squirrel_sql.client.session.ObjectTreeSearch;
import net.sourceforge.squirrel_sql.client.session.ISQLEntryPanel;
import javax.swing.*;
import javax.swing.text.Keymap;
import java.awt.event.*;
import java.util.prefs.Preferences;
public class FindInObjectTreeController
{
private static final String PREF_KEY_OBJECT_TREE_SEARCH_FILTER = "Squirrel.objTreeSearchFilter";
private FindInObjectTreePanel _findInObjectTreePanel;
private DefaultSQLEntryPanel _filterEditSQLEntryPanel;
private ISession _session;
public FindInObjectTreeController(ISession session)
{
_session = session;
_filterEditSQLEntryPanel = new DefaultSQLEntryPanel(session);
_findInObjectTreePanel = new FindInObjectTreePanel(_filterEditSQLEntryPanel.getTextComponent(), session.getApplication().getResources());
Action findAction = new AbstractAction("ObjectTree.Find")
{
public void actionPerformed(ActionEvent e)
{
onEnter();
}
};
JComponent comp = _filterEditSQLEntryPanel.getTextComponent();
comp.registerKeyboardAction(findAction, KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0, false), JComponent.WHEN_FOCUSED);
boolean filter = Preferences.userRoot().getBoolean(PREF_KEY_OBJECT_TREE_SEARCH_FILTER, false);
_findInObjectTreePanel._btnApplyAsFilter.setSelected(filter);
_findInObjectTreePanel._btnFind.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
onFind(false);
}
});
_findInObjectTreePanel._btnApplyAsFilter.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
onFind(false == _findInObjectTreePanel._btnApplyAsFilter.isSelected());
}
});
}
private void onFind(boolean unfilterTreeFirst)
{
if(unfilterTreeFirst)
{
_session.getProperties().setObjectFilterInclude(null);
_session.getObjectTreeAPIOfActiveSessionWindow().refreshSelectedNodes();
}
if(_findInObjectTreePanel._btnApplyAsFilter.isSelected())
{
_session.getProperties().setObjectFilterInclude(_filterEditSQLEntryPanel.getText());
_session.getObjectTreeAPIOfActiveSessionWindow().refreshSelectedNodes();
new ObjectTreeSearch().viewObjectInObjectTree(_session.getProperties().getObjectFilterInclude(), _session);
}
else
{
new ObjectTreeSearch().viewObjectInObjectTree(_filterEditSQLEntryPanel.getText(), _session);
}
}
private void onEnter()
{
_findInObjectTreePanel._btnFind.doClick();
}
public JPanel getFindInObjectTreePanel()
{
return _findInObjectTreePanel;
}
public ISQLEntryPanel getFindEntryPanel()
{
return _filterEditSQLEntryPanel;
}
public void dispose()
{
Preferences.userRoot().putBoolean(PREF_KEY_OBJECT_TREE_SEARCH_FILTER, _findInObjectTreePanel._btnApplyAsFilter.isSelected());
}
}