Author: koen.aers(a)jboss.com
Date: 2011-09-20 03:44:39 -0400 (Tue, 20 Sep 2011)
New Revision: 34875
Modified:
trunk/forge/plugins/org.jboss.tools.forge.core/src/org/jboss/tools/forge/core/io/ForgeAnsiCommandFilter.java
trunk/forge/plugins/org.jboss.tools.forge.core/src/org/jboss/tools/forge/core/process/ForgeLaunchHelper.java
trunk/forge/plugins/org.jboss.tools.forge.ui/src/org/jboss/tools/forge/ui/console/ForgeDocument.java
trunk/forge/plugins/org.jboss.tools.forge.ui/src/org/jboss/tools/forge/ui/console/ForgeTextViewer.java
Log:
JBIDE-9530
Modified:
trunk/forge/plugins/org.jboss.tools.forge.core/src/org/jboss/tools/forge/core/io/ForgeAnsiCommandFilter.java
===================================================================
---
trunk/forge/plugins/org.jboss.tools.forge.core/src/org/jboss/tools/forge/core/io/ForgeAnsiCommandFilter.java 2011-09-20
05:20:00 UTC (rev 34874)
+++
trunk/forge/plugins/org.jboss.tools.forge.core/src/org/jboss/tools/forge/core/io/ForgeAnsiCommandFilter.java 2011-09-20
07:44:39 UTC (rev 34875)
@@ -49,7 +49,8 @@
private boolean isAnsiEnd(char c) {
return c == 'G' ||
- c == 'K';
+ c == 'K' ||
+ c == 'm';
}
}
Modified:
trunk/forge/plugins/org.jboss.tools.forge.core/src/org/jboss/tools/forge/core/process/ForgeLaunchHelper.java
===================================================================
---
trunk/forge/plugins/org.jboss.tools.forge.core/src/org/jboss/tools/forge/core/process/ForgeLaunchHelper.java 2011-09-20
05:20:00 UTC (rev 34874)
+++
trunk/forge/plugins/org.jboss.tools.forge.core/src/org/jboss/tools/forge/core/process/ForgeLaunchHelper.java 2011-09-20
07:44:39 UTC (rev 34875)
@@ -114,7 +114,7 @@
private static String createVmArguments(String location) {
StringBuffer buffer = new StringBuffer();
buffer.append("-Dforge.home=").append(location).append(' ');
- buffer.append("-DDforge.shell.colorEnabled=true").append(' ');
+ buffer.append("-Dforge.shell.colorEnabled=true").append(' ');
buffer.append("-Dforge.compatibility.IDE=true").append(' ');
buffer.append("-cp ").append(location).append("/jboss-modules.jar
");
return buffer.toString();
Modified:
trunk/forge/plugins/org.jboss.tools.forge.ui/src/org/jboss/tools/forge/ui/console/ForgeDocument.java
===================================================================
---
trunk/forge/plugins/org.jboss.tools.forge.ui/src/org/jboss/tools/forge/ui/console/ForgeDocument.java 2011-09-20
05:20:00 UTC (rev 34874)
+++
trunk/forge/plugins/org.jboss.tools.forge.ui/src/org/jboss/tools/forge/ui/console/ForgeDocument.java 2011-09-20
07:44:39 UTC (rev 34875)
@@ -2,14 +2,13 @@
import org.eclipse.jface.text.BadLocationException;
import org.eclipse.jface.text.Document;
-import org.eclipse.swt.widgets.Display;
public class ForgeDocument extends Document {
public void appendString(final String str) {
- Display.getDefault().asyncExec(new Runnable() {
- @Override
- public void run() {
+// Display.getDefault().asyncExec(new Runnable() {
+// @Override
+// public void run() {
try {
for (int i = 0; i < str.length(); i++) {
char c = str.charAt(i);
@@ -21,8 +20,8 @@
}
}
} catch (BadLocationException e) {}
- }
- });
+// }
+// });
}
}
Modified:
trunk/forge/plugins/org.jboss.tools.forge.ui/src/org/jboss/tools/forge/ui/console/ForgeTextViewer.java
===================================================================
---
trunk/forge/plugins/org.jboss.tools.forge.ui/src/org/jboss/tools/forge/ui/console/ForgeTextViewer.java 2011-09-20
05:20:00 UTC (rev 34874)
+++
trunk/forge/plugins/org.jboss.tools.forge.ui/src/org/jboss/tools/forge/ui/console/ForgeTextViewer.java 2011-09-20
07:44:39 UTC (rev 34875)
@@ -9,10 +9,12 @@
import org.eclipse.jface.text.IDocumentListener;
import org.eclipse.jface.text.TextViewer;
import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.StyleRange;
import org.eclipse.swt.custom.StyledText;
import org.eclipse.swt.events.KeyEvent;
import org.eclipse.swt.events.KeyListener;
import org.eclipse.swt.events.VerifyEvent;
+import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Display;
import org.jboss.tools.forge.core.io.ForgeAnsiCommandFilter;
@@ -40,9 +42,6 @@
private class ConsoleKeyListener implements KeyListener {
@Override
public void keyPressed(KeyEvent e) {
- }
- @Override
- public void keyReleased(KeyEvent e) {
if (e.keyCode == SWT.BS) {
handleBackspace();
} else if (e.keyCode == SWT.ARROW_UP) {
@@ -52,6 +51,9 @@
} else if (e.keyCode == SWT.F1) {
handleF1Down();
}
+ }
+ @Override
+ public void keyReleased(KeyEvent e) {
}
}
@@ -104,8 +106,14 @@
StyledText textWidget = getTextWidget();
textWidget.setFont(JFaceResources.getFont(JFaceResources.TEXT_FONT));
textWidget.addKeyListener(new ConsoleKeyListener());
+ currentStyleRange = new StyleRange(0, 0, getColor(SWT.COLOR_BLACK), null);
+ textWidget.setStyleRange(currentStyleRange);
}
+ private Color getColor(int colorCode) {
+ return Display.getDefault().getSystemColor(colorCode);
+ }
+
private void initCommandRecorder() {
getDocument().addDocumentListener(new CommandRecorder());
}
@@ -113,8 +121,17 @@
private void initOutputListener() {
ForgeOutputListener target = new ForgeOutputListener() {
@Override
- public void outputAvailable(String output) {
- document.appendString(output);
+ public void outputAvailable(final String output) {
+ Display.getDefault().asyncExec(new Runnable() {
+ @Override
+ public void run() {
+ document.appendString(output);
+ if (currentStyleRange != null) {
+ currentStyleRange.length = currentStyleRange.length + output.length();
+ getTextWidget().setStyleRange(currentStyleRange);
+ }
+ }
+ });
}
};
ForgeAnsiCommandFilter ansiCommandFilter = new ForgeAnsiCommandFilter(target) {
@@ -173,6 +190,8 @@
switch (c) {
case 'G' : moveCursorAbsolute(command); break;
case 'K' : clearCurrentLine(command); break;
+ case 'm' : changeColor(command); break;
+ default : ForgeUIPlugin.log(new RuntimeException("Unhandled Ansi control
sequence in ForgeTextViewer: "+ command));
}
}
});
@@ -197,4 +216,33 @@
}
}
+ private StyleRange currentStyleRange = null;
+
+ private void changeColor(String command) {
+ String str = command.substring(2, command.length() - 1);
+ Color newColor = null;
+ if ("30".equals(str)) {
+ newColor = getColor(SWT.COLOR_BLACK);
+ } else if ("31".equals(str)) {
+ newColor = getColor(SWT.COLOR_RED);
+ } else if ("32".equals(str)) {
+ newColor = getColor(SWT.COLOR_GREEN);
+ } else if ("33".equals(str)) {
+ newColor = getColor(SWT.COLOR_DARK_YELLOW);
+ } else if ("34".equals(str)) {
+ newColor = getColor(SWT.COLOR_BLUE);
+ } else if ("35".equals(str)) {
+ newColor = getColor(SWT.COLOR_MAGENTA);
+ } else if ("36".equals(str)) {
+ newColor = getColor(SWT.COLOR_CYAN);
+ } else if ("37".equals(str)) {
+ newColor = getColor(SWT.COLOR_GRAY);
+ }
+ if (newColor != null) {
+ currentStyleRange = new StyleRange(getTextWidget().getCharCount(), 0, newColor,
null);
+ } else {
+ currentStyleRange = null;
+ }
+ }
+
}
Show replies by date