| pl.xoft.saf.finder.ui.MainPane.java |
package pl.xoft.saf.finder.ui;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JFileChooser;
import org.jdesktop.application.Action;
import org.jdesktop.application.Task;
import pl.xoft.saf.finder.Grep;
@author
public class MainPane extends javax.swing.JPanel {
File f = null;
Task<String, Void> searchTask = null;
public MainPane() {
initComponents();
}
private void initComponents() {
jLabel1 = new javax.swing.JLabel();
jScrollPane1 = new javax.swing.JScrollPane();
jTextArea1 = new javax.swing.JTextArea();
jButton1 = new javax.swing.JButton();
jButton2 = new javax.swing.JButton();
jLabel2 = new javax.swing.JLabel();
jTextField1 = new javax.swing.JTextField();
jButton3 = new javax.swing.JButton();
jLabel3 = new javax.swing.JLabel();
jTextField2 = new javax.swing.JTextField();
jSeparator1 = new javax.swing.JSeparator();
jButton4 = new javax.swing.JButton();
setName("Form");
org.jdesktop.application.ResourceMap resourceMap = org.jdesktop.application.Application.getInstance(pl.xoft.saf.finder.ui.MainApp.class).getContext().getResourceMap(MainPane.class);
jLabel1.setText(resourceMap.getString("jLabel1.text"));
jLabel1.setName("jLabel1");
jScrollPane1.setName("jScrollPane1");
jTextArea1.setColumns(20);
jTextArea1.setEditable(false);
jTextArea1.setFont(resourceMap.getFont("jTextArea1.font"));
jTextArea1.setRows(5);
jTextArea1.setName("jTextArea1");
jScrollPane1.setViewportView(jTextArea1);
javax.swing.ActionMap actionMap = org.jdesktop.application.Application.getInstance(pl.xoft.saf.finder.ui.MainApp.class).getContext().getActionMap(MainPane.class, this);
jButton1.setAction(actionMap.get("search"));
jButton1.setText(resourceMap.getString("jButton1.text"));
jButton1.setName("jButton1");
jButton2.setAction(actionMap.get("searchNoBlocking"));
jButton2.setText(resourceMap.getString("jButton2.text"));
jButton2.setName("jButton2");
jLabel2.setText(resourceMap.getString("jLabel2.text"));
jLabel2.setName("jLabel2");
jTextField1.setEditable(false);
jTextField1.setText(resourceMap.getString("jTextField1.text"));
jTextField1.setName("jTextField1");
jButton3.setAction(actionMap.get("chooseFile"));
jButton3.setText(resourceMap.getString("jButton3.text"));
jButton3.setName("jButton3");
jLabel3.setText(resourceMap.getString("jLabel3.text"));
jLabel3.setName("jLabel3");
jTextField2.setText(resourceMap.getString("jTextField2.text"));
jTextField2.setName("jTextField2");
jSeparator1.setName("jSeparator1");
jButton4.setAction(actionMap.get("cancel"));
jButton4.setText(resourceMap.getString("jButton4.text"));
jButton4.setName("jButton4");
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
this.setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jLabel1)
.addComponent(jLabel2)
.addComponent(jLabel3))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addComponent(jTextField1, javax.swing.GroupLayout.DEFAULT_SIZE, 213, Short.MAX_VALUE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jButton3))
.addComponent(jTextField2, javax.swing.GroupLayout.DEFAULT_SIZE, 387, Short.MAX_VALUE)
.addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 387, Short.MAX_VALUE)))
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addComponent(jButton1)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jButton2)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jButton4))
.addComponent(jSeparator1, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 548, Short.MAX_VALUE))
.addContainerGap())
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel2)
.addComponent(jButton3)
.addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel3)
.addComponent(jTextField2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jSeparator1, javax.swing.GroupLayout.PREFERRED_SIZE, 10, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jLabel1)
.addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 140, Short.MAX_VALUE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jButton2)
.addComponent(jButton1)
.addComponent(jButton4))
.addContainerGap())
);
}
@Action
public void search() {
jTextArea1.setText("");
Grep g = new Grep(jTextField2.getText());
try {
if(f != null)
g.searchInFiles(f);
} catch (FileNotFoundException ex) {
Logger.getLogger(MainPane.class.getName()).log(Level.SEVERE, null, ex);
} catch (IOException ex) {
Logger.getLogger(MainPane.class.getName()).log(Level.SEVERE, null, ex);
}
getJTextArea1().setText(g.getFormatedSearchResults());
}
@Action(block=Task.BlockingScope.COMPONENT)
public Task searchNoBlocking() {
searchTask = new SearchNoBlockingTask(org.jdesktop.application.Application.getInstance(pl.xoft.saf.finder.ui.MainApp.class));
return searchTask;
}
public javax.swing.JTextArea getJTextArea1() {
return jTextArea1;
}
private class SearchNoBlockingTask extends org.jdesktop.application.Task<String, Void> {
StringBuilder str = null;
Grep g = null;
SearchNoBlockingTask(org.jdesktop.application.Application app) {
super(app);
jTextArea1.setText("");
g = new Grep((jTextField2.getText()));
}
@Override protected String doInBackground() {
try {
if(f != null )
g.searchInFiles(f);
} catch (FileNotFoundException ex) {
Logger.getLogger(MainPane.class.getName()).log(Level.SEVERE, null, ex);
} catch (IOException ex) {
Logger.getLogger(MainPane.class.getName()).log(Level.SEVERE, null, ex);
}
return g.getFormatedSearchResults();
}
@Override protected void succeeded(String result) {
getJTextArea1().setText(result);
}
}
@Action
public void chooseFile() {
final JFileChooser fc = new JFileChooser();
fc.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
int returnVal = fc.showOpenDialog(fc);
if (returnVal == JFileChooser.APPROVE_OPTION) {
f = fc.getSelectedFile();
jTextField1.setText(f.getAbsolutePath());
}
}
@Action
public void cancel() {
if(searchTask != null)
searchTask.cancel(true);
}
private javax.swing.JButton jButton1;
private javax.swing.JButton jButton2;
private javax.swing.JButton jButton3;
private javax.swing.JButton jButton4;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel3;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JSeparator jSeparator1;
private javax.swing.JTextArea jTextArea1;
private javax.swing.JTextField jTextField1;
private javax.swing.JTextField jTextField2;
}