diff src/viewer_swing/java/com/glavsoft/viewer/swing/Surface.java @ 56:913d0f663e74

12/9
author one
date Mon, 09 Dec 2013 16:09:06 +0900
parents 3c072f2f39bb
children 433c79184c05
line wrap: on
line diff
--- a/src/viewer_swing/java/com/glavsoft/viewer/swing/Surface.java	Mon Dec 02 14:20:37 2013 +0900
+++ b/src/viewer_swing/java/com/glavsoft/viewer/swing/Surface.java	Mon Dec 09 16:09:06 2013 +0900
@@ -39,7 +39,8 @@
 import java.awt.*;
 
 @SuppressWarnings("serial")
-public class Surface extends JPanel implements IRepaintController, IChangeSettingsListener {
+public class Surface extends JPanel implements IRepaintController,
+		IChangeSettingsListener {
 
 	private int width;
 	private int height;
@@ -67,18 +68,20 @@
 		this.scaleFactor = scaleFactor;
 		init(context.getFbWidth(), context.getFbHeight());
 
-		if ( ! context.getSettings().isViewOnly()) {
+		if (!context.getSettings().isViewOnly()) {
 			setUserInputEnabled(true, context.getSettings().isConvertToAscii());
 		}
 		showCursor = context.getSettings().isShowRemoteCursor();
 	}
 
 	private void setUserInputEnabled(boolean enable, boolean convertToAscii) {
-		if (enable == isUserInputEnabled) return;
+		if (enable == isUserInputEnabled)
+			return;
 		isUserInputEnabled = enable;
 		if (enable) {
 			if (null == mouseEventListener) {
-				mouseEventListener = new MouseEventListener(this, context, scaleFactor);
+				mouseEventListener = new MouseEventListener(this, context,
+						scaleFactor);
 			}
 			addMouseListener(mouseEventListener);
 			addMouseMotionListener(mouseEventListener);
@@ -88,7 +91,8 @@
 			if (null == keyEventListener) {
 				keyEventListener = new KeyEventListener(context);
 				if (modifierButtonListener != null) {
-					keyEventListener.addModifierListener(modifierButtonListener);
+					keyEventListener
+							.addModifierListener(modifierButtonListener);
 				}
 			}
 			keyEventListener.setConvertToAscii(convertToAscii);
@@ -103,7 +107,8 @@
 	}
 
 	@Override
-	public Renderer createRenderer(Reader reader, int width, int height, PixelFormat pixelFormat) {
+	public Renderer createRenderer(Reader reader, int width, int height,
+			PixelFormat pixelFormat) {
 		renderer = new RendererImpl(reader, width, height, pixelFormat);
 		synchronized (renderer) {
 			cursor = renderer.getCursor();
@@ -125,11 +130,12 @@
 		requestFocus();
 	}
 
-	
 	@Override
 	public void paintComponent(Graphics g) {
-		((Graphics2D)g).scale(scaleFactor, scaleFactor);
-		((Graphics2D) g).setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY);
+		if(renderer != null  && cursor != null){
+		((Graphics2D) g).scale(scaleFactor, scaleFactor);
+		((Graphics2D) g).setRenderingHint(RenderingHints.KEY_RENDERING,
+				RenderingHints.VALUE_RENDER_QUALITY);
 		synchronized (renderer) {
 			Image offscreenImage = renderer.getOffscreenImage();
 			if (offscreenImage != null) {
@@ -138,18 +144,20 @@
 		}
 		synchronized (cursor) {
 			Image cursorImage = cursor.getImage();
-			if (showCursor && cursorImage != null &&
-					(scaleFactor != 1 ||
-							g.getClipBounds().intersects(cursor.rX, cursor.rY, cursor.width, cursor.height))) {
+			if (showCursor
+					&& cursorImage != null
+					&& (scaleFactor != 1 || g.getClipBounds().intersects(
+							cursor.rX, cursor.rY, cursor.width, cursor.height))) {
 				g.drawImage(cursorImage, cursor.rX, cursor.rY, null);
 			}
 		}
+		}
 	}
 
-
 	@Override
 	public Dimension getPreferredSize() {
-		return new Dimension((int)(this.width * scaleFactor), (int)(this.height * scaleFactor));
+		return new Dimension((int) (this.width * scaleFactor),
+				(int) (this.height * scaleFactor));
 	}
 
 	@Override
@@ -175,17 +183,22 @@
 
 	@Override
 	public void repaintBitmap(int x, int y, int width, int height) {
-		repaint((int)(x * scaleFactor), (int)(y * scaleFactor),
-                (int)Math.ceil(width * scaleFactor), (int)Math.ceil(height * scaleFactor));
+		repaint((int) (x * scaleFactor), (int) (y * scaleFactor),
+				(int) Math.ceil(width * scaleFactor),
+				(int) Math.ceil(height * scaleFactor));
 	}
 
 	@Override
 	public void repaintCursor() {
 		synchronized (cursor) {
-			repaint((int)(cursor.oldRX * scaleFactor), (int)(cursor.oldRY * scaleFactor),
-					(int)Math.ceil(cursor.oldWidth * scaleFactor) + 1, (int)Math.ceil(cursor.oldHeight * scaleFactor) + 1);
-			repaint((int)(cursor.rX * scaleFactor), (int)(cursor.rY * scaleFactor),
-					(int)Math.ceil(cursor.width * scaleFactor) + 1, (int)Math.ceil(cursor.height * scaleFactor) + 1);
+			repaint((int) (cursor.oldRX * scaleFactor),
+					(int) (cursor.oldRY * scaleFactor),
+					(int) Math.ceil(cursor.oldWidth * scaleFactor) + 1,
+					(int) Math.ceil(cursor.oldHeight * scaleFactor) + 1);
+			repaint((int) (cursor.rX * scaleFactor),
+					(int) (cursor.rY * scaleFactor),
+					(int) Math.ceil(cursor.width * scaleFactor) + 1,
+					(int) Math.ceil(cursor.height * scaleFactor) + 1);
 		}
 	}
 
@@ -203,7 +216,8 @@
 		}
 	}
 
-	public void addModifierListener(ModifierButtonEventListener modifierButtonListener) {
+	public void addModifierListener(
+			ModifierButtonEventListener modifierButtonListener) {
 		this.modifierButtonListener = modifierButtonListener;
 		if (keyEventListener != null) {
 			keyEventListener.addModifierListener(modifierButtonListener);
@@ -214,7 +228,8 @@
 	public void settingsChanged(SettingsChangedEvent e) {
 		if (ProtocolSettings.isRfbSettingsChangedFired(e)) {
 			ProtocolSettings settings = (ProtocolSettings) e.getSource();
-			setUserInputEnabled( ! settings.isViewOnly(), settings.isConvertToAscii());
+			setUserInputEnabled(!settings.isViewOnly(),
+					settings.isConvertToAscii());
 			showCursor(settings.isShowRemoteCursor());
 		} else if (UiSettings.isUiSettingsChangedFired(e)) {
 			UiSettings settings = (UiSettings) e.getSource();