Author: jbonofre
Date: Thu Jun  6 19:35:12 2013
New Revision: 1490402

URL: http://svn.apache.org/r1490402
Log:
[KARAF-2356] Enable use of ANSI colors in ShellTable

Added:
    
karaf/trunk/shell/table/src/main/java/org/apache/karaf/shell/table/AnsiColumn.java
Modified:
    karaf/trunk/shell/table/src/main/java/org/apache/karaf/shell/table/Col.java
    
karaf/trunk/shell/table/src/main/java/org/apache/karaf/shell/table/ShellTable.java

Added: 
karaf/trunk/shell/table/src/main/java/org/apache/karaf/shell/table/AnsiColumn.java
URL: 
http://svn.apache.org/viewvc/karaf/trunk/shell/table/src/main/java/org/apache/karaf/shell/table/AnsiColumn.java?rev=1490402&view=auto
==============================================================================
--- 
karaf/trunk/shell/table/src/main/java/org/apache/karaf/shell/table/AnsiColumn.java
 (added)
+++ 
karaf/trunk/shell/table/src/main/java/org/apache/karaf/shell/table/AnsiColumn.java
 Thu Jun  6 19:35:12 2013
@@ -0,0 +1,54 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+package org.apache.karaf.shell.table;
+
+import org.fusesource.jansi.Ansi;
+
+/**
+ * Colored support for column.
+ */
+public class AnsiColumn extends Col {
+
+    private Ansi.Color color;
+    private boolean bold;
+
+    public AnsiColumn(String header, Ansi.Color color, boolean bold) {
+        super(header);
+        this.color = color;
+        this.bold = bold;
+    }
+
+    @Override
+    public String getContent(String content) {
+        String in = super.getContent(content);
+
+        Ansi ansi = Ansi.ansi();
+        ansi.fg(color);
+
+        if (bold)
+            ansi.a(Ansi.Attribute.INTENSITY_BOLD);
+
+        ansi.a(in);
+
+        if (bold)
+            ansi.a(Ansi.Attribute.INTENSITY_BOLD_OFF);
+
+        ansi.fg(Ansi.Color.DEFAULT);
+
+        return ansi.toString();
+    }
+
+}

Modified: 
karaf/trunk/shell/table/src/main/java/org/apache/karaf/shell/table/Col.java
URL: 
http://svn.apache.org/viewvc/karaf/trunk/shell/table/src/main/java/org/apache/karaf/shell/table/Col.java?rev=1490402&r1=1490401&r2=1490402&view=diff
==============================================================================
--- karaf/trunk/shell/table/src/main/java/org/apache/karaf/shell/table/Col.java 
(original)
+++ karaf/trunk/shell/table/src/main/java/org/apache/karaf/shell/table/Col.java 
Thu Jun  6 19:35:12 2013
@@ -15,8 +15,6 @@
  */
 package org.apache.karaf.shell.table;
 
-
-
 /**
  * Column definition.
  */
@@ -68,6 +66,10 @@ public class Col {
         this.maxSize = maxSize;
         return this;
     }
+
+    public int getSize() {
+        return size;
+    }
     
     protected void updateSize(int cellSize) {
         if (this.size <= cellSize) {

Modified: 
karaf/trunk/shell/table/src/main/java/org/apache/karaf/shell/table/ShellTable.java
URL: 
http://svn.apache.org/viewvc/karaf/trunk/shell/table/src/main/java/org/apache/karaf/shell/table/ShellTable.java?rev=1490402&r1=1490401&r2=1490402&view=diff
==============================================================================
--- 
karaf/trunk/shell/table/src/main/java/org/apache/karaf/shell/table/ShellTable.java
 (original)
+++ 
karaf/trunk/shell/table/src/main/java/org/apache/karaf/shell/table/ShellTable.java
 Thu Jun  6 19:35:12 2013
@@ -22,6 +22,7 @@ import java.util.Arrays;
 import java.util.List;
 
 public class ShellTable {
+
     private List<Col> cols = new ArrayList<Col>();
     private List<Row> rows = new ArrayList<Row>();
     boolean showHeaders = true;
@@ -89,7 +90,10 @@ public class ShellTable {
         if (showHeaders) {
             String headerLine = headerRow.getContent(cols, separator);
             out.println(headerLine);
-            out.println(underline(headerLine.length()));
+            for (Col col : cols) {
+                out.print(underline(col.getSize()));
+            }
+            out.println(underline((cols.size() - 1) * 3));
         }
 
         for (Row row : rows) {


Reply via email to