From d17bbbe12c943d15c1f6b61b89094849bb31beec Mon Sep 17 00:00:00 2001 From: Doublestrike Date: Sat, 26 May 2012 01:27:43 +0000 Subject: [PATCH] --- src/main/java/forge/GameLog.java | 31 +++++++++- src/main/java/forge/gui/match/views/VLog.java | 60 ++++++++++++------- 2 files changed, 69 insertions(+), 22 deletions(-) diff --git a/src/main/java/forge/GameLog.java b/src/main/java/forge/GameLog.java index d986eb12c7c..502089821ab 100644 --- a/src/main/java/forge/GameLog.java +++ b/src/main/java/forge/GameLog.java @@ -19,6 +19,7 @@ package forge; import java.util.ArrayList; +import java.util.List; import forge.util.MyObservable; @@ -108,7 +109,35 @@ public class GameLog extends MyObservable { return log.get(index); } - private class LogEntry { + /** + * Gets the log entries as a list. + * @return List + */ + public List 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 getLogEntries(final int logLevel) { + final List entries = new ArrayList(); + + 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 message; private int level; diff --git a/src/main/java/forge/gui/match/views/VLog.java b/src/main/java/forge/gui/match/views/VLog.java index 6307b2a8307..71fd91caa41 100644 --- a/src/main/java/forge/gui/match/views/VLog.java +++ b/src/main/java/forge/gui/match/views/VLog.java @@ -17,12 +17,16 @@ */ package forge.gui.match.views; +import java.util.List; + +import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTextArea; +import javax.swing.border.EmptyBorder; import net.miginfocom.swing.MigLayout; import forge.AllZone; -import forge.GameLog; +import forge.GameLog.LogEntry; import forge.gui.framework.DragCell; import forge.gui.framework.DragTab; import forge.gui.framework.EDocID; @@ -44,6 +48,19 @@ public enum VLog implements IVDoc { private DragCell parentCell; 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 /* (non-Javadoc) * @see forge.gui.framework.IVDoc#populate() @@ -99,29 +116,30 @@ public enum VLog implements IVDoc { // No need to update this unless it's showing 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 - add these components to resize adapter in constructor - JTextArea tar = new JTextArea(gl.getLogText(3)); - tar.setOpaque(false); - tar.setBorder(null); - tar.setForeground(FSkin.getColor(FSkin.Colors.CLR_TEXT)); + // By default, grab everything log level 3 or less. + final List data = AllZone.getGameLog().getLogEntries(3); + final int size = data.size(); - tar.setFocusable(false); - tar.setEditable(false); - tar.setLineWrap(true); - tar.setWrapStyleWord(true); + pnl.removeAll(); - JScrollPane jsp = new JScrollPane(tar); - jsp.setOpaque(false); - jsp.setBorder(null); - jsp.getViewport().setOpaque(false); + for (int i = 0; i < size; i++) { + JTextArea tar = new JTextArea(data.get(i).getMessage()); - 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"); } }