forked from Coded/SIPRP
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
71 lines
1.1 KiB
71 lines
1.1 KiB
package leaf.ui;
|
|
|
|
import java.beans.PropertyChangeListener;
|
|
|
|
import javax.swing.JTextArea;
|
|
import javax.swing.event.CaretEvent;
|
|
import javax.swing.event.CaretListener;
|
|
|
|
public class LeafTextArea extends JTextArea
|
|
{
|
|
|
|
private static final long serialVersionUID = 1L;
|
|
|
|
private static final String PROPERTY = "CHANGED";
|
|
|
|
private final ChangeThread thread = new ChangeThread();
|
|
|
|
private boolean isRunning = true;
|
|
|
|
public LeafTextArea( PropertyChangeListener parent )
|
|
{
|
|
this.addPropertyChangeListener( PROPERTY, parent );
|
|
this.addCaretListener( new CaretListener()
|
|
{
|
|
@Override
|
|
public void caretUpdate( CaretEvent e )
|
|
{
|
|
firePropertyChange( PROPERTY, false, true );
|
|
}
|
|
} );
|
|
}
|
|
|
|
@Override
|
|
public void setEditable( boolean b )
|
|
{
|
|
super.setEditable( b );
|
|
if( b )
|
|
{
|
|
startThread();
|
|
}
|
|
else
|
|
{
|
|
stopThread();
|
|
}
|
|
}
|
|
|
|
private void startThread()
|
|
{
|
|
isRunning = true;
|
|
thread.start();
|
|
}
|
|
|
|
private void stopThread()
|
|
{
|
|
isRunning = false;
|
|
}
|
|
|
|
private class ChangeThread extends Thread
|
|
{
|
|
@Override
|
|
public synchronized void start()
|
|
{
|
|
while( isRunning )
|
|
{
|
|
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|