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) {