Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- private class RUMAddTextEvent extends AWTEvent {
- public static final int EVENT_ID = AWTEvent.RESERVED_ID_MAX + 1;
- private int index;
- private String str;
- private AttributeSet as;
- public RUMAddTextEvent(Component target, int index, String str, AttributeSet as) {
- super(target, EVENT_ID);
- this.index = index;
- this.str = str;
- this.as = as;
- }
- public int getIndex() {
- return index;
- }
- public String getStr() {
- return str;
- }
- public AttributeSet getAs() {
- return as;
- }
- }
- private class RUMRemoveTextEvent extends AWTEvent {
- public static final int EVENT_ID = AWTEvent.RESERVED_ID_MAX + 1;
- int index;
- int size;
- RUMRemoveTextEvent(Component target, int index, int size) {
- super(target, EVENT_ID);
- this.index = index;
- this.size = size;
- }
- public int getIndex() {
- return index;
- }
- public int getSize() {
- return size;
- }
- }
- /**
- * Prints a character at a time to the RUMComm window.
- *
- * @param c
- */
- public void simpleOut(Character c) {
- cursor.x++;
- if (lines.isEmpty()) {
- this.lines.add(c.toString());
- } else {
- this.lines.add(cursor.y, this.lines.get(cursor.y).concat(c.toString()));
- this.lines.remove(cursor.y + 1);
- }
- try {
- //doc.insertString(doc.getLength(), c.toString(), as);
- eventQueue = Toolkit.getDefaultToolkit().getSystemEventQueue();
- eventQueue.postEvent(new RUMAddTextEvent(this, doc.getLength(), c.toString(), as));
- getCaret().setDot(doc.getLength());
- } catch (Exception ex) {
- //Exceptions.printStackTrace(ex);
- }
- }
- /**
- * Creates a new line
- */
- public void newLine() {
- cursor.y++;
- cursor.x = 0;
- this.lines.add("");
- //doc.insertString(doc.getLength(), "n", null);
- eventQueue = Toolkit.getDefaultToolkit().getSystemEventQueue();
- eventQueue.postEvent(new RUMAddTextEvent(this, doc.getLength(), "n", null));
- getCaret().setDot(doc.getLength());
- }
- /**
- * Backspace implementation.
- *
- */
- public void deleteLast() {
- int endPos = doc.getLength();
- //doc.remove(endPos - 1, 1);
- eventQueue = Toolkit.getDefaultToolkit().getSystemEventQueue();
- eventQueue.postEvent(new RUMRemoveTextEvent(this, endPos - 1, 1));
- cursor.x--;
- }
- @Override
- protected void processEvent(AWTEvent awte) {
- //super.processEvent(awte);
- if (awte instanceof RUMAddTextEvent) {
- RUMAddTextEvent ev = (RUMAddTextEvent) awte;
- try {
- doc.insertString(ev.getIndex(), ev.getStr(), ev.getAs());
- } catch (BadLocationException ex) {
- Exceptions.printStackTrace(ex);
- }
- } else if (awte instanceof RUMRemoveTextEvent) {
- RUMRemoveTextEvent ev = (RUMRemoveTextEvent) awte;
- try {
- doc.remove(ev.getIndex(), ev.getSize());
- } catch (BadLocationException ex) {
- Exceptions.printStackTrace(ex);
- }
- } else {
- super.processEvent(awte);
- }
- }
- import javax.swing.Timer;
- import java.awt.event.ActionEvent;
- import java.awt.event.ActionListener;
- import java.io.ByteArrayOutputStream;
- import java.io.IOException;
- public class SwingOutputStream extends ByteArrayOutputStream{
- private final ISwingLogger fSwingLogger;
- private Timer fTimer;
- private final StringBuilder fBuffer = new StringBuilder( 1000 );
- public SwingOutputStream( ISwingLogger aSwingLogger ) {
- fSwingLogger = aSwingLogger;
- fTimer = new Timer( 200, new ActionListener() {
- public void actionPerformed( ActionEvent aActionEvent ) {
- flushBuffer();
- }
- } );
- fTimer.setRepeats( false );
- }
- @Override
- public void flush() throws IOException {
- synchronized( fBuffer ){
- fBuffer.append( toString( "UTF-8") );
- }
- if ( fTimer.isRunning() ){
- fTimer.restart();
- } else {
- fTimer.start();
- }
- super.flush();
- reset();
- }
- private void flushBuffer(){
- synchronized ( fBuffer ){
- final String output = fBuffer.toString();
- fSwingLogger.appendString( output );
- fBuffer.setLength( 0 );
- }
- }
- }
- new RUMAddTextEvent(this, doc.getLength(), ...
- // in data thread
- void receiveData(String newData) {
- updateModelText(newData);
- invalidateUI();
- invokeLater(validateUI);
- }
- // called in UI thread
- void validateUI() {
- if (!valid) {
- ui.text = model.text;
- }
- valid = true;
- }
- public class EventTest {
- public static void main(String[] args) {
- JFrame frame = new JFrame();
- frame.setLayout(new BorderLayout());
- frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
- frame.setSize(400, 400);
- JTextArea area = new JTextArea();
- frame.add(new JScrollPane(area));
- frame.setLocationRelativeTo(null);
- frame.setVisible(true);
- Thread thread = new Thread(new Dispatcher(area));
- thread.setDaemon(true);
- thread.start();
- }
- public static class Dispatcher implements Runnable {
- private String message = "Hello from the other sidennCan you read thisnnAll done now";
- private JTextArea area;
- public Dispatcher(JTextArea area) {
- this.area = area;
- }
- @Override
- public void run() {
- int index = 0;
- while (index < message.length()) {
- try {
- Thread.sleep(250);
- } catch (InterruptedException ex) {
- }
- send(message.charAt(index));
- index++;
- }
- }
- public void send(final char text) {
- System.out.println("Hello from out side the EDT - " + EventQueue.isDispatchThread());
- try {
- SwingUtilities.invokeAndWait(new Runnable() {
- @Override
- public void run() {
- System.out.println("Hello from the EDT - " + EventQueue.isDispatchThread());
- area.append(new String(new char[]{text}));
- }
- });
- } catch (Exception exp) {
- exp.printStackTrace();
- }
- }
- }
- }
Add Comment
Please, Sign In to add comment