mirror of
https://github.com/php/php-src.git
synced 2025-08-20 01:14:28 +02:00
...
This commit is contained in:
parent
883f34f487
commit
5f0a0f12e1
7 changed files with 854 additions and 1 deletions
162
tutorials/java/src/phpdbg/ui/JTerminalPane.java
Normal file
162
tutorials/java/src/phpdbg/ui/JTerminalPane.java
Normal file
|
@ -0,0 +1,162 @@
|
|||
/*
|
||||
* To change this license header, choose License Headers in Project Properties.
|
||||
* To change this template file, choose Tools | Templates
|
||||
* and open the template in the editor.
|
||||
*/
|
||||
|
||||
package phpdbg.ui;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author krakjoe
|
||||
*/
|
||||
import javax.swing.*;
|
||||
import javax.swing.text.*;
|
||||
import java.awt.Color;
|
||||
|
||||
public class JTerminalPane extends JTextPane {
|
||||
|
||||
private static final Color D_Black = Color.getHSBColor( 0.000f, 0.000f, 0.000f );
|
||||
private static final Color D_Red = Color.getHSBColor( 0.000f, 1.000f, 0.502f );
|
||||
private static final Color D_Blue = Color.getHSBColor( 0.667f, 1.000f, 0.502f );
|
||||
private static final Color D_Magenta = Color.getHSBColor( 0.833f, 1.000f, 0.502f );
|
||||
private static final Color D_Green = Color.getHSBColor( 0.333f, 1.000f, 0.502f );
|
||||
private static final Color D_Yellow = Color.getHSBColor( 0.167f, 1.000f, 0.502f );
|
||||
private static final Color D_Cyan = Color.getHSBColor( 0.500f, 1.000f, 0.502f );
|
||||
private static final Color D_White = Color.getHSBColor( 0.000f, 0.000f, 0.753f );
|
||||
private static final Color B_Black = Color.getHSBColor( 0.000f, 0.000f, 0.502f );
|
||||
private static final Color B_Red = Color.getHSBColor( 0.000f, 1.000f, 1.000f );
|
||||
private static final Color B_Blue = Color.getHSBColor( 0.667f, 1.000f, 1.000f );
|
||||
private static final Color B_Magenta = Color.getHSBColor( 0.833f, 1.000f, 1.000f );
|
||||
private static final Color B_Green = Color.getHSBColor( 0.333f, 1.000f, 1.000f );
|
||||
private static final Color B_Yellow = Color.getHSBColor( 0.167f, 1.000f, 1.000f );
|
||||
private static final Color B_Cyan = Color.getHSBColor( 0.500f, 1.000f, 1.000f );
|
||||
private static final Color B_White = Color.getHSBColor( 0.000f, 0.000f, 1.000f );
|
||||
private static final Color cReset = Color.getHSBColor( 0.000f, 0.000f, 0.000f );
|
||||
|
||||
private Color colorCurrent = cReset;
|
||||
private String remaining = "";
|
||||
|
||||
public JTerminalPane() {
|
||||
super();
|
||||
}
|
||||
|
||||
public void append(Color c, String s) {
|
||||
StyleContext sc = StyleContext.getDefaultStyleContext();
|
||||
AttributeSet aset = sc.addAttribute(
|
||||
SimpleAttributeSet.EMPTY, StyleConstants.Foreground, c);
|
||||
setCaretPosition(getDocument().getLength());
|
||||
setCharacterAttributes(aset, false);
|
||||
replaceSelection(s);
|
||||
}
|
||||
|
||||
public void appendANSI(String s) {
|
||||
int aPos = 0;
|
||||
int aIndex;
|
||||
int mIndex;
|
||||
String tmpString;
|
||||
boolean stillSearching;
|
||||
|
||||
String addString = remaining + s;
|
||||
|
||||
remaining = "";
|
||||
|
||||
if (addString.length() > 0) {
|
||||
aIndex = addString.indexOf("\u001B");
|
||||
if (aIndex == -1) {
|
||||
append(colorCurrent,addString);
|
||||
return;
|
||||
}
|
||||
|
||||
if (aIndex > 0) {
|
||||
tmpString = addString.substring(0,aIndex);
|
||||
append(colorCurrent, tmpString);
|
||||
aPos = aIndex;
|
||||
}
|
||||
|
||||
stillSearching = true;
|
||||
while (stillSearching) {
|
||||
mIndex = addString.indexOf("m",aPos);
|
||||
if (mIndex < 0) {
|
||||
remaining = addString.substring(aPos,addString.length());
|
||||
stillSearching = false;
|
||||
continue;
|
||||
}
|
||||
else {
|
||||
tmpString = addString.substring(aPos,mIndex+1);
|
||||
colorCurrent = getANSIColor(tmpString);
|
||||
}
|
||||
aPos = mIndex + 1;
|
||||
|
||||
aIndex = addString.indexOf("\u001B", aPos);
|
||||
|
||||
if (aIndex == -1) {
|
||||
tmpString = addString.substring(aPos,addString.length());
|
||||
append(colorCurrent, tmpString);
|
||||
stillSearching = false;
|
||||
continue;
|
||||
}
|
||||
tmpString = addString.substring(aPos,aIndex);
|
||||
aPos = aIndex;
|
||||
append(colorCurrent, tmpString);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public Color getANSIColor(String ANSIColor) {
|
||||
switch (ANSIColor) {
|
||||
case "\u001B[30m":
|
||||
return D_Black;
|
||||
case "\u001B[31m":
|
||||
return D_Red;
|
||||
case "\u001B[32m":
|
||||
return D_Green;
|
||||
case "\u001B[33m":
|
||||
return D_Yellow;
|
||||
case "\u001B[34m":
|
||||
return D_Blue;
|
||||
case "\u001B[35m":
|
||||
return D_Magenta;
|
||||
case "\u001B[36m":
|
||||
return D_Cyan;
|
||||
case "\u001B[37m":
|
||||
return D_White;
|
||||
case "\u001B[0;30m":
|
||||
return D_Black;
|
||||
case "\u001B[0;31m":
|
||||
return D_Red;
|
||||
case "\u001B[0;32m":
|
||||
return D_Green;
|
||||
case "\u001B[0;33m":
|
||||
return D_Yellow;
|
||||
case "\u001B[0;34m":
|
||||
return D_Blue;
|
||||
case "\u001B[0;35m":
|
||||
return D_Magenta;
|
||||
case "\u001B[0;36m":
|
||||
return D_Cyan;
|
||||
case "\u001B[0;37m":
|
||||
return D_White;
|
||||
case "\u001B[1;30m":
|
||||
return B_Black;
|
||||
case "\u001B[1;31m":
|
||||
return B_Red;
|
||||
case "\u001B[1;32m":
|
||||
return B_Green;
|
||||
case "\u001B[1;33m":
|
||||
return B_Yellow;
|
||||
case "\u001B[1;34m":
|
||||
return B_Blue;
|
||||
case "\u001B[1;35m":
|
||||
return B_Magenta;
|
||||
case "\u001B[1;36m":
|
||||
return B_Cyan;
|
||||
case "\u001B[1;37m":
|
||||
return B_White;
|
||||
case "\u001B[0m":
|
||||
return cReset;
|
||||
default:
|
||||
return B_White;
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue