public class com.googlecode.lanterna.gui2.SeparateTextGUIThread extends com.googlecode.lanterna.gui2.AbstractTextGUIThread implements com.googlecode.lanterna.gui2.AsynchronousTextGUIThread
minor version: 0
major version: 59
flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: com.googlecode.lanterna.gui2.SeparateTextGUIThread
super_class: com.googlecode.lanterna.gui2.AbstractTextGUIThread
{
private volatile com.googlecode.lanterna.gui2.AsynchronousTextGUIThread$State state;
descriptor: Lcom/googlecode/lanterna/gui2/AsynchronousTextGUIThread$State;
flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE
private final java.lang.Thread textGUIThread;
descriptor: Ljava/lang/Thread;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final java.util.concurrent.CountDownLatch waitLatch;
descriptor: Ljava/util/concurrent/CountDownLatch;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private void <init>(com.googlecode.lanterna.gui2.TextGUI);
descriptor: (Lcom/googlecode/lanterna/gui2/TextGUI;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=5, locals=2, args_size=2
start local 0 start local 1 0: aload 0
aload 1
invokespecial com.googlecode.lanterna.gui2.AbstractTextGUIThread.<init>:(Lcom/googlecode/lanterna/gui2/TextGUI;)V
1: aload 0
new java.util.concurrent.CountDownLatch
dup
iconst_1
invokespecial java.util.concurrent.CountDownLatch.<init>:(I)V
putfield com.googlecode.lanterna.gui2.SeparateTextGUIThread.waitLatch:Ljava/util/concurrent/CountDownLatch;
2: aload 0
new com.googlecode.lanterna.gui2.SeparateTextGUIThread$1
dup
aload 0
ldc "LanternaGUI"
invokespecial com.googlecode.lanterna.gui2.SeparateTextGUIThread$1.<init>:(Lcom/googlecode/lanterna/gui2/SeparateTextGUIThread;Ljava/lang/String;)V
putfield com.googlecode.lanterna.gui2.SeparateTextGUIThread.textGUIThread:Ljava/lang/Thread;
3: aload 0
getstatic com.googlecode.lanterna.gui2.AsynchronousTextGUIThread$State.CREATED:Lcom/googlecode/lanterna/gui2/AsynchronousTextGUIThread$State;
putfield com.googlecode.lanterna.gui2.SeparateTextGUIThread.state:Lcom/googlecode/lanterna/gui2/AsynchronousTextGUIThread$State;
4: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lcom/googlecode/lanterna/gui2/SeparateTextGUIThread;
0 5 1 textGUI Lcom/googlecode/lanterna/gui2/TextGUI;
MethodParameters:
Name Flags
textGUI
public void start();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
getfield com.googlecode.lanterna.gui2.SeparateTextGUIThread.textGUIThread:Ljava/lang/Thread;
invokevirtual java.lang.Thread.start:()V
1: aload 0
getstatic com.googlecode.lanterna.gui2.AsynchronousTextGUIThread$State.STARTED:Lcom/googlecode/lanterna/gui2/AsynchronousTextGUIThread$State;
putfield com.googlecode.lanterna.gui2.SeparateTextGUIThread.state:Lcom/googlecode/lanterna/gui2/AsynchronousTextGUIThread$State;
2: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lcom/googlecode/lanterna/gui2/SeparateTextGUIThread;
public void stop();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
getfield com.googlecode.lanterna.gui2.SeparateTextGUIThread.state:Lcom/googlecode/lanterna/gui2/AsynchronousTextGUIThread$State;
getstatic com.googlecode.lanterna.gui2.AsynchronousTextGUIThread$State.STARTED:Lcom/googlecode/lanterna/gui2/AsynchronousTextGUIThread$State;
if_acmpeq 2
1: return
2: StackMap locals:
StackMap stack:
aload 0
getstatic com.googlecode.lanterna.gui2.AsynchronousTextGUIThread$State.STOPPING:Lcom/googlecode/lanterna/gui2/AsynchronousTextGUIThread$State;
putfield com.googlecode.lanterna.gui2.SeparateTextGUIThread.state:Lcom/googlecode/lanterna/gui2/AsynchronousTextGUIThread$State;
3: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lcom/googlecode/lanterna/gui2/SeparateTextGUIThread;
public void waitForStop();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield com.googlecode.lanterna.gui2.SeparateTextGUIThread.waitLatch:Ljava/util/concurrent/CountDownLatch;
invokevirtual java.util.concurrent.CountDownLatch.await:()V
1: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lcom/googlecode/lanterna/gui2/SeparateTextGUIThread;
Exceptions:
throws java.lang.InterruptedException
public void waitForStop(long, java.util.concurrent.TimeUnit);
descriptor: (JLjava/util/concurrent/TimeUnit;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=4, args_size=3
start local 0 start local 1 start local 3 0: aload 0
getfield com.googlecode.lanterna.gui2.SeparateTextGUIThread.waitLatch:Ljava/util/concurrent/CountDownLatch;
lload 1
aload 3
invokevirtual java.util.concurrent.CountDownLatch.await:(JLjava/util/concurrent/TimeUnit;)Z
pop
1: return
end local 3 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lcom/googlecode/lanterna/gui2/SeparateTextGUIThread;
0 2 1 time J
0 2 3 unit Ljava/util/concurrent/TimeUnit;
Exceptions:
throws java.lang.InterruptedException
MethodParameters:
Name Flags
time
unit
public com.googlecode.lanterna.gui2.AsynchronousTextGUIThread$State getState();
descriptor: ()Lcom/googlecode/lanterna/gui2/AsynchronousTextGUIThread$State;
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield com.googlecode.lanterna.gui2.SeparateTextGUIThread.state:Lcom/googlecode/lanterna/gui2/AsynchronousTextGUIThread$State;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lcom/googlecode/lanterna/gui2/SeparateTextGUIThread;
public java.lang.Thread getThread();
descriptor: ()Ljava/lang/Thread;
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield com.googlecode.lanterna.gui2.SeparateTextGUIThread.textGUIThread:Ljava/lang/Thread;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lcom/googlecode/lanterna/gui2/SeparateTextGUIThread;
public void invokeLater(java.lang.Runnable);
descriptor: (Ljava/lang/Runnable;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=2, args_size=2
start local 0 start local 1 0: aload 0
getfield com.googlecode.lanterna.gui2.SeparateTextGUIThread.state:Lcom/googlecode/lanterna/gui2/AsynchronousTextGUIThread$State;
getstatic com.googlecode.lanterna.gui2.AsynchronousTextGUIThread$State.STARTED:Lcom/googlecode/lanterna/gui2/AsynchronousTextGUIThread$State;
if_acmpeq 4
1: new java.lang.IllegalStateException
dup
new java.lang.StringBuilder
dup
ldc "Cannot schedule "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 1
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
ldc " for execution on the TextGUIThread "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
2: ldc "because the thread is in "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 0
getfield com.googlecode.lanterna.gui2.SeparateTextGUIThread.state:Lcom/googlecode/lanterna/gui2/AsynchronousTextGUIThread$State;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
ldc " state"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
3: invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
athrow
4: StackMap locals:
StackMap stack:
aload 0
aload 1
invokespecial com.googlecode.lanterna.gui2.AbstractTextGUIThread.invokeLater:(Ljava/lang/Runnable;)V
5: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 this Lcom/googlecode/lanterna/gui2/SeparateTextGUIThread;
0 6 1 runnable Ljava/lang/Runnable;
Exceptions:
throws java.lang.IllegalStateException
MethodParameters:
Name Flags
runnable
private void mainGUILoop();
descriptor: ()V
flags: (0x0002) ACC_PRIVATE
Code:
stack=2, locals=4, args_size=1
start local 0 0: aload 0
getfield com.googlecode.lanterna.gui2.SeparateTextGUIThread.textGUI:Lcom/googlecode/lanterna/gui2/TextGUI;
invokeinterface com.googlecode.lanterna.gui2.TextGUI.updateScreen:()V
1: goto 29
2: StackMap locals:
StackMap stack: java.io.IOException
astore 1
start local 1 3: aload 0
getfield com.googlecode.lanterna.gui2.SeparateTextGUIThread.exceptionHandler:Lcom/googlecode/lanterna/gui2/TextGUIThread$ExceptionHandler;
aload 1
invokeinterface com.googlecode.lanterna.gui2.TextGUIThread$ExceptionHandler.onIOException:(Ljava/io/IOException;)Z
pop
end local 1 4: goto 29
5: StackMap locals:
StackMap stack: java.lang.RuntimeException
astore 1
start local 1 6: aload 0
getfield com.googlecode.lanterna.gui2.SeparateTextGUIThread.exceptionHandler:Lcom/googlecode/lanterna/gui2/TextGUIThread$ExceptionHandler;
aload 1
invokeinterface com.googlecode.lanterna.gui2.TextGUIThread$ExceptionHandler.onRuntimeException:(Ljava/lang/RuntimeException;)Z
pop
end local 1 7: goto 29
8: StackMap locals:
StackMap stack:
aload 0
invokevirtual com.googlecode.lanterna.gui2.SeparateTextGUIThread.processEventsAndUpdate:()Z
ifne 29
9: lconst_1
invokestatic java.lang.Thread.sleep:(J)V
10: goto 29
11: StackMap locals:
StackMap stack: java.lang.InterruptedException
pop
12: goto 29
13: StackMap locals:
StackMap stack: java.io.EOFException
pop
14: aload 0
invokevirtual com.googlecode.lanterna.gui2.SeparateTextGUIThread.stop:()V
15: aload 0
getfield com.googlecode.lanterna.gui2.SeparateTextGUIThread.textGUI:Lcom/googlecode/lanterna/gui2/TextGUI;
instanceof com.googlecode.lanterna.gui2.WindowBasedTextGUI
ifeq 35
16: aload 0
getfield com.googlecode.lanterna.gui2.SeparateTextGUIThread.textGUI:Lcom/googlecode/lanterna/gui2/TextGUI;
checkcast com.googlecode.lanterna.gui2.WindowBasedTextGUI
invokeinterface com.googlecode.lanterna.gui2.WindowBasedTextGUI.getWindows:()Ljava/util/Collection;
invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
astore 2
goto 19
StackMap locals: com.googlecode.lanterna.gui2.SeparateTextGUIThread top java.util.Iterator
StackMap stack:
17: aload 2
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast com.googlecode.lanterna.gui2.Window
astore 1
start local 1 18: aload 1
invokeinterface com.googlecode.lanterna.gui2.Window.close:()V
end local 1 19: StackMap locals:
StackMap stack:
aload 2
invokeinterface java.util.Iterator.hasNext:()Z
ifne 17
20: goto 35
21: StackMap locals: com.googlecode.lanterna.gui2.SeparateTextGUIThread
StackMap stack: java.io.IOException
astore 1
start local 1 22: aload 0
getfield com.googlecode.lanterna.gui2.SeparateTextGUIThread.exceptionHandler:Lcom/googlecode/lanterna/gui2/TextGUIThread$ExceptionHandler;
aload 1
invokeinterface com.googlecode.lanterna.gui2.TextGUIThread$ExceptionHandler.onIOException:(Ljava/io/IOException;)Z
ifeq 29
23: aload 0
invokevirtual com.googlecode.lanterna.gui2.SeparateTextGUIThread.stop:()V
24: goto 35
end local 1 25: StackMap locals:
StackMap stack: java.lang.RuntimeException
astore 1
start local 1 26: aload 0
getfield com.googlecode.lanterna.gui2.SeparateTextGUIThread.exceptionHandler:Lcom/googlecode/lanterna/gui2/TextGUIThread$ExceptionHandler;
aload 1
invokeinterface com.googlecode.lanterna.gui2.TextGUIThread$ExceptionHandler.onRuntimeException:(Ljava/lang/RuntimeException;)Z
ifeq 29
27: aload 0
invokevirtual com.googlecode.lanterna.gui2.SeparateTextGUIThread.stop:()V
28: goto 35
end local 1 29: StackMap locals:
StackMap stack:
aload 0
getfield com.googlecode.lanterna.gui2.SeparateTextGUIThread.state:Lcom/googlecode/lanterna/gui2/AsynchronousTextGUIThread$State;
getstatic com.googlecode.lanterna.gui2.AsynchronousTextGUIThread$State.STARTED:Lcom/googlecode/lanterna/gui2/AsynchronousTextGUIThread$State;
if_acmpeq 8
30: goto 35
31: StackMap locals:
StackMap stack: java.lang.Throwable
astore 3
32: aload 0
getstatic com.googlecode.lanterna.gui2.AsynchronousTextGUIThread$State.STOPPED:Lcom/googlecode/lanterna/gui2/AsynchronousTextGUIThread$State;
putfield com.googlecode.lanterna.gui2.SeparateTextGUIThread.state:Lcom/googlecode/lanterna/gui2/AsynchronousTextGUIThread$State;
33: aload 0
getfield com.googlecode.lanterna.gui2.SeparateTextGUIThread.waitLatch:Ljava/util/concurrent/CountDownLatch;
invokevirtual java.util.concurrent.CountDownLatch.countDown:()V
34: aload 3
athrow
35: StackMap locals:
StackMap stack:
aload 0
getstatic com.googlecode.lanterna.gui2.AsynchronousTextGUIThread$State.STOPPED:Lcom/googlecode/lanterna/gui2/AsynchronousTextGUIThread$State;
putfield com.googlecode.lanterna.gui2.SeparateTextGUIThread.state:Lcom/googlecode/lanterna/gui2/AsynchronousTextGUIThread$State;
36: aload 0
getfield com.googlecode.lanterna.gui2.SeparateTextGUIThread.waitLatch:Ljava/util/concurrent/CountDownLatch;
invokevirtual java.util.concurrent.CountDownLatch.countDown:()V
37: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 38 0 this Lcom/googlecode/lanterna/gui2/SeparateTextGUIThread;
3 4 1 e Ljava/io/IOException;
6 7 1 e Ljava/lang/RuntimeException;
18 19 1 window Lcom/googlecode/lanterna/gui2/Window;
22 25 1 e Ljava/io/IOException;
26 29 1 e Ljava/lang/RuntimeException;
Exception table:
from to target type
0 1 2 Class java.io.IOException
0 1 5 Class java.lang.RuntimeException
9 10 11 Class java.lang.InterruptedException
8 12 13 Class java.io.EOFException
8 12 21 Class java.io.IOException
8 12 25 Class java.lang.RuntimeException
0 31 31 any
}
SourceFile: "SeparateTextGUIThread.java"
NestMembers:
com.googlecode.lanterna.gui2.SeparateTextGUIThread$1 com.googlecode.lanterna.gui2.SeparateTextGUIThread$Factory
InnerClasses:
public final State = com.googlecode.lanterna.gui2.AsynchronousTextGUIThread$State of com.googlecode.lanterna.gui2.AsynchronousTextGUIThread
com.googlecode.lanterna.gui2.SeparateTextGUIThread$1
public Factory = com.googlecode.lanterna.gui2.SeparateTextGUIThread$Factory of com.googlecode.lanterna.gui2.SeparateTextGUIThread
public abstract ExceptionHandler = com.googlecode.lanterna.gui2.TextGUIThread$ExceptionHandler of com.googlecode.lanterna.gui2.TextGUIThread