Finished "Colors" preference page.
diff --git a/com.google.eclipse.terminal.local/src/com/google/eclipse/terminal/local/ui/view/TerminalView.java b/com.google.eclipse.terminal.local/src/com/google/eclipse/terminal/local/ui/view/TerminalView.java
index 80c1d85..7631b9f 100644
--- a/com.google.eclipse.terminal.local/src/com/google/eclipse/terminal/local/ui/view/TerminalView.java
+++ b/com.google.eclipse.terminal.local/src/com/google/eclipse/terminal/local/ui/view/TerminalView.java
@@ -17,6 +17,7 @@
import static org.eclipse.ui.IWorkbenchPage.VIEW_ACTIVATE;
import org.eclipse.core.runtime.IPath;
+import org.eclipse.jface.util.IPropertyChangeListener;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.tm.internal.terminal.control.ITerminalListener;
@@ -36,7 +37,7 @@
private static final String VIEW_ID = "com.google.eclipse.terminal.local.localTerminalView";
- private ColorPreferencesChangeListener colorPreferencesChangeListener;
+ private IPropertyChangeListener colorPreferencesChangeListener;
private IMemento savedState;
private TerminalWidget terminalWidget;
private IPath workingDirectory;
@@ -89,8 +90,13 @@
});
IViewSite viewSite = getViewSite();
terminalWidget.setUpGlobalEditActionHandlers(viewSite.getActionBars());
- colorPreferencesChangeListener = new ColorPreferencesChangeListener(terminalWidget);
+ colorPreferencesChangeListener = new AbstractColorPreferencesChangeListener() {
+ @Override protected void onColorChanged() {
+ resetColors();
+ }
+ };
preferenceStore().addPropertyChangeListener(colorPreferencesChangeListener);
+ resetColors();
if (savedState != null) {
connectUsingSavedState();
return;
@@ -101,6 +107,10 @@
}
}
+ private void resetColors() {
+ terminalWidget.resetTerminalColors(background(), foreground());
+ }
+
private void connectUsingSavedState() {
String title = savedState(TITLE_STATE_TYPE);
setPartName(title);
@@ -134,16 +144,4 @@
}
super.dispose();
}
-
- private static class ColorPreferencesChangeListener extends AbstractColorPreferencesChangeListener {
- private final TerminalWidget terminalWidget;
-
- ColorPreferencesChangeListener(TerminalWidget terminalWidget) {
- this.terminalWidget = terminalWidget;
- }
-
- @Override protected void onColorChanged() {
- terminalWidget.resetTerminalColors(background(), foreground());
- }
- }
}
diff --git a/com.google.eclipse.tm.terminal/src/org/eclipse/tm/internal/terminal/textcanvas/StyleMap.java b/com.google.eclipse.tm.terminal/src/org/eclipse/tm/internal/terminal/textcanvas/StyleMap.java
index f3679b6..bde87d1 100644
--- a/com.google.eclipse.tm.terminal/src/org/eclipse/tm/internal/terminal/textcanvas/StyleMap.java
+++ b/com.google.eclipse.tm.terminal/src/org/eclipse/tm/internal/terminal/textcanvas/StyleMap.java
@@ -54,6 +54,8 @@
private boolean fInvertColors;
private boolean fProportional;
private final int[] fOffsets=new int[256];
+ private RGB background = new RGB(0, 0, 0);
+ private RGB foreground = new RGB(229, 229, 229);
StyleMap() {
initColors();
fDefaultStyle=Style.getStyle(StyleColor.getStyleColor(BLACK),StyleColor.getStyleColor(WHITE));
@@ -68,7 +70,7 @@
if(fInvertColors) {
setColor(fColorMapForeground, WHITE, 0, 0, 0);
setColor(fColorMapForeground, WHITE_FOREGROUND, 50, 50, 50);
- setColor(fColorMapForeground, BLACK, 229, 229, 229); // set foreground
+ setColor(fColorMapForeground, BLACK, foreground.red, foreground.green, foreground.blue); // set foreground
} else {
setColor(fColorMapForeground, WHITE, 255, 255, 255);
setColor(fColorMapForeground, WHITE_FOREGROUND, 229, 229, 229);
@@ -85,7 +87,7 @@
private void initBackgroundColors() {
if(fInvertColors) {
- setColor(fColorMapBackground, WHITE, 0, 0, 0); // set background
+ setColor(fColorMapBackground, WHITE, background.red, background.green, background.blue); // set background
setColor(fColorMapBackground, WHITE_FOREGROUND, 50, 50, 50); // only used when colors are inverse
setColor(fColorMapBackground, BLACK, 255, 255, 255); // set cursor color
} else {
@@ -273,4 +275,10 @@
}
return fOffsets[c];
}
+
+ public void resetColors(RGB background, RGB foreground) {
+ this.background = background;
+ this.foreground = foreground;
+ initColors();
+ }
}
diff --git a/com.google.eclipse.tm.terminal/src/org/eclipse/tm/internal/terminal/textcanvas/TextLineRenderer.java b/com.google.eclipse.tm.terminal/src/org/eclipse/tm/internal/terminal/textcanvas/TextLineRenderer.java
index f098168..98336ae 100644
--- a/com.google.eclipse.tm.terminal/src/org/eclipse/tm/internal/terminal/textcanvas/TextLineRenderer.java
+++ b/com.google.eclipse.tm.terminal/src/org/eclipse/tm/internal/terminal/textcanvas/TextLineRenderer.java
@@ -160,5 +160,6 @@
}
@Override public void resetColors(RGB background, RGB foreground) {
+ fStyleMap.resetColors(background, foreground);
}
}