mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-15 18:28:00 +00:00
This commit is contained in:
@@ -19,6 +19,7 @@
|
|||||||
package forge;
|
package forge;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
import forge.util.MyObservable;
|
import forge.util.MyObservable;
|
||||||
|
|
||||||
@@ -108,7 +109,35 @@ public class GameLog extends MyObservable {
|
|||||||
return log.get(index);
|
return log.get(index);
|
||||||
}
|
}
|
||||||
|
|
||||||
private class LogEntry {
|
/**
|
||||||
|
* Gets the log entries as a list.
|
||||||
|
* @return List<LogEntry>
|
||||||
|
*/
|
||||||
|
public List<LogEntry> getLogEntries() {
|
||||||
|
return log;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the log entries below a certain level as a list.
|
||||||
|
*
|
||||||
|
* @param logLevel the log level
|
||||||
|
* @return the log text
|
||||||
|
*/
|
||||||
|
public List<LogEntry> getLogEntries(final int logLevel) {
|
||||||
|
final List<LogEntry> entries = new ArrayList<LogEntry>();
|
||||||
|
|
||||||
|
for (int i = log.size() - 1; i >= 0; i--) {
|
||||||
|
LogEntry le = log.get(i);
|
||||||
|
if (le.getLevel() > logLevel) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
entries.add(le);
|
||||||
|
}
|
||||||
|
return entries;
|
||||||
|
}
|
||||||
|
|
||||||
|
public class LogEntry {
|
||||||
private String type;
|
private String type;
|
||||||
private String message;
|
private String message;
|
||||||
private int level;
|
private int level;
|
||||||
|
|||||||
@@ -17,12 +17,16 @@
|
|||||||
*/
|
*/
|
||||||
package forge.gui.match.views;
|
package forge.gui.match.views;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import javax.swing.JPanel;
|
||||||
import javax.swing.JScrollPane;
|
import javax.swing.JScrollPane;
|
||||||
import javax.swing.JTextArea;
|
import javax.swing.JTextArea;
|
||||||
|
import javax.swing.border.EmptyBorder;
|
||||||
|
|
||||||
import net.miginfocom.swing.MigLayout;
|
import net.miginfocom.swing.MigLayout;
|
||||||
import forge.AllZone;
|
import forge.AllZone;
|
||||||
import forge.GameLog;
|
import forge.GameLog.LogEntry;
|
||||||
import forge.gui.framework.DragCell;
|
import forge.gui.framework.DragCell;
|
||||||
import forge.gui.framework.DragTab;
|
import forge.gui.framework.DragTab;
|
||||||
import forge.gui.framework.EDocID;
|
import forge.gui.framework.EDocID;
|
||||||
@@ -44,6 +48,19 @@ public enum VLog implements IVDoc {
|
|||||||
private DragCell parentCell;
|
private DragCell parentCell;
|
||||||
private final DragTab tab = new DragTab("Log");
|
private final DragTab tab = new DragTab("Log");
|
||||||
|
|
||||||
|
// Other fields
|
||||||
|
private final JPanel pnl = new JPanel(new MigLayout("insets 0, gap 0, wrap"));
|
||||||
|
private final JScrollPane scroller = new JScrollPane(pnl);
|
||||||
|
|
||||||
|
//========== Constructor
|
||||||
|
private VLog() {
|
||||||
|
scroller.setOpaque(false);
|
||||||
|
scroller.setBorder(null);
|
||||||
|
scroller.getViewport().setOpaque(false);
|
||||||
|
|
||||||
|
pnl.setOpaque(false);
|
||||||
|
}
|
||||||
|
|
||||||
//========== Overridden methods
|
//========== Overridden methods
|
||||||
/* (non-Javadoc)
|
/* (non-Javadoc)
|
||||||
* @see forge.gui.framework.IVDoc#populate()
|
* @see forge.gui.framework.IVDoc#populate()
|
||||||
@@ -99,29 +116,30 @@ public enum VLog implements IVDoc {
|
|||||||
// No need to update this unless it's showing
|
// No need to update this unless it's showing
|
||||||
if (!parentCell.getSelected().equals(this)) { return; }
|
if (!parentCell.getSelected().equals(this)) { return; }
|
||||||
|
|
||||||
final GameLog gl = AllZone.getGameLog();
|
|
||||||
|
|
||||||
parentCell.getBody().setLayout(new MigLayout("insets 1%, gap 1%, wrap"));
|
|
||||||
parentCell.getBody().removeAll();
|
|
||||||
|
|
||||||
// by default, grab everything logging level 3 or less
|
|
||||||
// TODO - some option to make this configurable is probably desirable
|
// TODO - some option to make this configurable is probably desirable
|
||||||
// TODO - add these components to resize adapter in constructor
|
// By default, grab everything log level 3 or less.
|
||||||
JTextArea tar = new JTextArea(gl.getLogText(3));
|
final List<LogEntry> data = AllZone.getGameLog().getLogEntries(3);
|
||||||
tar.setOpaque(false);
|
final int size = data.size();
|
||||||
tar.setBorder(null);
|
|
||||||
tar.setForeground(FSkin.getColor(FSkin.Colors.CLR_TEXT));
|
|
||||||
|
|
||||||
tar.setFocusable(false);
|
pnl.removeAll();
|
||||||
tar.setEditable(false);
|
|
||||||
tar.setLineWrap(true);
|
|
||||||
tar.setWrapStyleWord(true);
|
|
||||||
|
|
||||||
JScrollPane jsp = new JScrollPane(tar);
|
for (int i = 0; i < size; i++) {
|
||||||
jsp.setOpaque(false);
|
JTextArea tar = new JTextArea(data.get(i).getMessage());
|
||||||
jsp.setBorder(null);
|
|
||||||
jsp.getViewport().setOpaque(false);
|
|
||||||
|
|
||||||
parentCell.getBody().add(jsp, "w 98%!");
|
if (i % 2 == 1) { tar.setOpaque(false); }
|
||||||
|
else { tar.setBackground(FSkin.getColor(FSkin.Colors.CLR_ZEBRA)); }
|
||||||
|
tar.setBorder(new EmptyBorder(2, 2, 2, 2));
|
||||||
|
tar.setForeground(FSkin.getColor(FSkin.Colors.CLR_TEXT));
|
||||||
|
|
||||||
|
tar.setFocusable(false);
|
||||||
|
tar.setEditable(false);
|
||||||
|
tar.setLineWrap(true);
|
||||||
|
tar.setWrapStyleWord(true);
|
||||||
|
|
||||||
|
pnl.add(tar, "w 98%!, gap 1% 0 0 0");
|
||||||
|
}
|
||||||
|
|
||||||
|
parentCell.getBody().setLayout(new MigLayout("insets 0, gap 0, wrap"));
|
||||||
|
parentCell.getBody().add(scroller, "w 98%!, pushy, growy, gap 1% 0 5px 5px");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user