package org.f2o.absurdum.puck.gui.panels.code;
import java.awt.event.ActionEvent;
import java.awt.event.InputEvent;
import java.awt.event.KeyEvent;
import javax.swing.AbstractAction;
import javax.swing.Action;
import javax.swing.JOptionPane;
import javax.swing.KeyStroke;
import org.f2o.absurdum.puck.i18n.UIMessages;
import org.fife.ui.rsyntaxtextarea.RSyntaxTextArea;
import org.fife.ui.rtextarea.SearchContext;
import org.fife.ui.rtextarea.SearchEngine;
public class RSyntaxFindNextOrPrevAction extends AbstractAction
{
private RSyntaxTextArea targetTextArea;
/**True for find next, false for find previous*/
private boolean forward;
public RSyntaxFindNextOrPrevAction ( RSyntaxTextArea target , boolean forward )
{
if ( forward )
{
this.putValue(Action.NAME, UIMessages.getInstance().getMessage("rsyntax.find.next"));
this.putValue(ACCELERATOR_KEY, KeyStroke.getKeyStroke(KeyEvent.VK_F3,0));
}
else
{
this.putValue(Action.NAME, UIMessages.getInstance().getMessage("rsyntax.find.prev"));
this.putValue(ACCELERATOR_KEY, KeyStroke.getKeyStroke(KeyEvent.VK_F,InputEvent.SHIFT_DOWN_MASK));
}
this.targetTextArea = target;
this.forward = forward;
}
public void actionPerformed(ActionEvent e)
{
SearchContext sc = RSyntaxSearchHandler.getInstance().getFindDialog().getSearchContext();
if ( sc == null ) return;
if ( sc.getSearchFor() == null || sc.getSearchFor().length() < 1 ) return;
sc.setSearchForward(forward);
boolean found = SearchEngine.find( targetTextArea , sc );
if (!found)
{
JOptionPane.showMessageDialog(targetTextArea, "Text not found");
}
}
}