import java.awt.geom.Rectangle2D;
import java.awt.image.BufferedImage;
import java.io.InputStream;
+import java.util.ArrayList;
import java.util.HashMap;
-import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import javax.swing.JComponent;
/**
* The terminus font resource filename.
*/
- private static final String FONTFILE = "terminus-ttf-4.39/TerminusTTF-Bold-4.39.ttf";
+ public static final String FONTFILE = "terminus-ttf-4.39/TerminusTTF-Bold-4.39.ttf";
/**
* Cursor style to draw.
// Constructors -----------------------------------------------------------
// ------------------------------------------------------------------------
+ /**
+ * Static constructor.
+ */
+ static {
+ setDOSColors();
+ }
+
/**
* Public constructor creates a new JFrame to render to.
*
this.fontSize = fontSize;
- setDOSColors();
reloadOptions();
try {
mouse1 = false;
mouse2 = false;
mouse3 = false;
- eventQueue = new LinkedList<TInputEvent>();
+ eventQueue = new ArrayList<TInputEvent>();
// Add listeners to Swing.
swing.addKeyListener(this);
this.fontSize = fontSize;
- setDOSColors();
reloadOptions();
try {
mouse1 = false;
mouse2 = false;
mouse3 = false;
- eventQueue = new LinkedList<TInputEvent>();
+ eventQueue = new ArrayList<TInputEvent>();
// Add listeners to Swing.
swing.addKeyListener(this);
&& (swing.getBufferStrategy() != null)
) {
do {
+ clearPhysical();
do {
drawToSwing();
} while (swing.getBufferStrategy().contentsRestored());
return blinkMillis;
}
+ /**
+ * Get the current status of the blink flag.
+ *
+ * @return true if the cursor and blinking text should be visible
+ */
+ public boolean getCursorBlinkVisible() {
+ return cursorBlinkVisible;
+ }
+
/**
* Get the font size in points.
*
* @param attr the text attributes
* @return the Swing Color
*/
- private Color attrToForegroundColor(final CellAttributes attr) {
+ public static Color attrToForegroundColor(final CellAttributes attr) {
int rgb = attr.getForeColorRGB();
if (rgb >= 0) {
int red = (rgb >> 16) & 0xFF;
* @param attr the text attributes
* @return the Swing Color
*/
- private Color attrToBackgroundColor(final CellAttributes attr) {
+ public static Color attrToBackgroundColor(final CellAttributes attr) {
int rgb = attr.getBackColorRGB();
if (rgb >= 0) {
int red = (rgb >> 16) & 0xFF;
}
/**
- * Resize to font dimensions.
+ * Resize the physical screen to match the logical screen dimensions.
*/
+ @Override
public void resizeToScreen() {
- swing.setDimensions(textWidth * (width + 1), textHeight * (height + 1));
+ swing.setDimensions(textWidth * width, textHeight * height);
+ clearPhysical();
}
/**
* @param event window event received
*/
public void windowClosing(final WindowEvent event) {
- // Drop a cmAbort and walk away
+ // Drop a cmBackendDisconnect and walk away
synchronized (eventQueue) {
- eventQueue.add(new TCommandEvent(cmAbort));
+ eventQueue.add(new TCommandEvent(cmBackendDisconnect));
resetBlinkTimer();
}
if (listener != null) {
return;
}
+ if (sessionInfo == null) {
+ // This is the initial component resize in construction, bail
+ // out.
+ return;
+ }
+
// Drop a new TResizeEvent into the queue
sessionInfo.queryWindowSize();
synchronized (eventQueue) {