-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathConsole.java
More file actions
131 lines (107 loc) · 5.16 KB
/
Console.java
File metadata and controls
131 lines (107 loc) · 5.16 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
package cpubug.debugger;
import javafx.collections.ListChangeListener;
import javafx.scene.control.Button;
import javafx.scene.control.CheckBox;
import javafx.scene.control.TextArea;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.HBox;
import lombok.AllArgsConstructor;
import lombok.Getter;
import me.david.sploty4.Sploty;
import me.david.sploty4.gui.Window;
import me.david.sploty4.gui.tab.BrowserTab;
import org.controlsfx.control.CheckComboBox;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Handler;
import java.util.logging.Level;
import java.util.logging.LogRecord;
public class Console extends DebugTab {
private CheckComboBox<Level> comboBox = new CheckComboBox<>();
private HBox toolBox = new HBox();
private BorderPane main = new BorderPane();
private CheckBox javaScirpt = new CheckBox("JavaScript"), splotyLog = new CheckBox("Sploty Logging");
private TextArea textArea = new TextArea("(No Messages)");
private List<MessageEntry> messages = new ArrayList<>();
public Console(final Window window, final BrowserTab tab) {
super("Console", window, tab);
comboBox.getItems().addAll(Level.INFO, Level.WARNING, Level.CONFIG);
comboBox.getCheckModel().check(Level.INFO);
comboBox.getCheckModel().check(Level.WARNING);
comboBox.getCheckModel().check(Level.CONFIG);
comboBox.getCheckModel().getCheckedItems().addListener((ListChangeListener<? super Level>) change -> {
generateMessages();
});
javaScirpt.setOnAction(event -> generateMessages());
splotyLog.setOnAction(event -> generateMessages());
/*TableColumn messageCol = new TableColumn("Message");
messageCol.setCellValueFactory(new PropertyValueFactory<>("message"));
TableColumn extraCol = new TableColumn("Extra");
extraCol.setCellValueFactory(new PropertyValueFactory<>("extra"));
messageTable.getColumns().addAll(messageCol, extraCol);*/
Sploty.getLogger().getLogger().addHandler(new Handler() {
@Override
public void publish(LogRecord logRecord) {
/*System.out.println("--------");
for (StackTraceElement element : Thread.currentThread().getStackTrace()) {
System.out.println(element.getFileName() + " at " + element.getLineNumber());
}
System.out.println("--------");*/
StackTraceElement element = Thread.currentThread().getStackTrace()[6];
MessageEntry entry = new MessageEntry(logRecord.getMessage(), logRecord.getLevel(), MessageType.LOGGING, element.getFileName() + ":" + element.getLineNumber(), logRecord.getMillis());
messages.add(entry);
if (((entry.getType() == MessageType.LOGGING && splotyLog.isSelected()) || (entry.getType() == MessageType.JAVASCRIPT && javaScirpt.isSelected())) && comboBox.getItemBooleanProperty(entry.getLevel()).getValue()) {
textArea.appendText(format.format(entry.time) + "[" + entry.getType().name() + "] [" + entry.level.getName() + "] " + entry.getMessage() + " | " + entry.getExtra() + "\n");
}
}
@Override public void flush() {}
@Override public void close() throws SecurityException {}
});
//TODO reload image
Button reload = new Button("Reload");
reload.setOnAction(event -> generateMessages());
textArea.setWrapText(false);
textArea.setEditable(false);
toolBox.getChildren().addAll(comboBox, splotyLog, javaScirpt, reload);
main.setTop(toolBox);
main.setCenter(textArea);
setContent(main);
generateMessages();
}
private DateFormat format = new SimpleDateFormat("HH:mm:ss");
private void generateMessages() {
StringBuilder builder = new StringBuilder();
for (MessageEntry entry : messages) {
if (((entry.getType() == MessageType.LOGGING && splotyLog.isSelected()) || (entry.getType() == MessageType.JAVASCRIPT && javaScirpt.isSelected())) && comboBox.getItemBooleanProperty(entry.level).getValue()) {
builder.append(format.format(entry.time)).
append("[").
append(entry.getType().name()).
append("] [").
append(entry.level.getName()).
append("] ").
append(entry.getMessage()).
append(" | ").
append(entry.getExtra()).
append("\n");
}
}
textArea.setText(builder.toString());
textArea.setVisible(true);
textArea.requestFocus();
textArea.requestLayout();
}
@AllArgsConstructor
public class MessageEntry {
@Getter private final String message;
@Getter private final Level level;
@Getter private final MessageType type;
@Getter private final String extra;
@Getter private final long time;
}
private enum MessageType {
LOGGING,
JAVASCRIPT
}
}