/*
* Created on Jan 24, 2006
*
*/
package net.atlanticbb.tantlinger.ui.text.actions;
import java.awt.Component;
import java.awt.Dialog;
import java.awt.Event;
import java.awt.Frame;
import java.awt.event.ActionEvent;
import java.awt.event.KeyEvent;
import javax.swing.JEditorPane;
import javax.swing.KeyStroke;
import javax.swing.SwingUtilities;
import net.atlanticbb.tantlinger.ui.text.dialogs.TextFinderDialog;
public class FindReplaceAction extends BasicEditAction
{
/**
*
*/
private static final long serialVersionUID = 1L;
private boolean isReplaceTab;
private TextFinderDialog dialog;
public FindReplaceAction(boolean isReplace)
{
super(null);
if(isReplace)
{
putValue(NAME, i18n.str("replace_")); //$NON-NLS-1$
putValue(MNEMONIC_KEY, new Integer(i18n.mnem("replace_")));
}
else
{
putValue(NAME, i18n.str("find_")); //$NON-NLS-1$
putValue(MNEMONIC_KEY, new Integer(i18n.mnem("find_")));
putValue(ACCELERATOR_KEY,
KeyStroke.getKeyStroke(KeyEvent.VK_F, Event.CTRL_MASK));
}
isReplaceTab = isReplace;
}
/* (non-Javadoc)
* @see net.atlanticbb.tantlinger.ui.text.actions.BasicEditAction#doEdit(java.awt.event.ActionEvent, javax.swing.JEditorPane)
*/
protected void doEdit(ActionEvent e, JEditorPane textComponent)
{
Component c = SwingUtilities.getWindowAncestor(textComponent);
if(dialog == null)
{
if(c instanceof Frame)
{
if(isReplaceTab)
dialog = new TextFinderDialog((Frame)c, textComponent, TextFinderDialog.REPLACE);
else
dialog = new TextFinderDialog((Frame)c, textComponent, TextFinderDialog.FIND);
}
else if(c instanceof Dialog)
{
if(isReplaceTab)
dialog = new TextFinderDialog((Dialog)c, textComponent, TextFinderDialog.REPLACE);
else
dialog = new TextFinderDialog((Dialog)c, textComponent, TextFinderDialog.FIND);
}
else
return;
}
//if(textComponent.getSelectionStart() != textComponent.getSelectionEnd())
// dialog.setSearchText(textComponent.getSelectedText());
if(!dialog.isVisible())
{
dialog.show((isReplaceTab) ? TextFinderDialog.REPLACE : TextFinderDialog.FIND);
}
}
protected void updateContextState(JEditorPane editor)
{
if(dialog != null)
{
dialog.setJTextComponent(editor);
}
}
}