Removed ViewContext.
[sixth-3d.git] / src / main / java / eu / svjatoslav / sixth / e3d / gui / ViewPanel.java
index feda7df..f38d3c0 100755 (executable)
@@ -9,7 +9,10 @@
 
 package eu.svjatoslav.sixth.e3d.gui;
 
+import eu.svjatoslav.sixth.e3d.gui.humaninput.KeyboardFocusTracker;
 import eu.svjatoslav.sixth.e3d.gui.humaninput.MouseInteractionController;
+import eu.svjatoslav.sixth.e3d.gui.humaninput.UserInputTracker;
+import eu.svjatoslav.sixth.e3d.renderer.raster.ShapeCollection;
 
 import javax.swing.*;
 import java.awt.*;
@@ -20,10 +23,34 @@ import java.util.List;
 import java.util.Timer;
 
 public class ViewPanel extends JPanel implements ComponentListener {
+    private final UserInputTracker userInputTracker = new UserInputTracker(this);
+
+    private final KeyboardFocusTracker keyboardFocusTracker = new KeyboardFocusTracker(
+            this);
+
+    private final Avatar avatar = new Avatar();
+
+    private final ShapeCollection rootShapeCollection = new ShapeCollection();
+
+
+    public Avatar getAvatar() {
+        return avatar;
+    }
+
+    public KeyboardFocusTracker getKeyboardFocusTracker() {
+        return keyboardFocusTracker;
+    }
+
+    public ShapeCollection getRootShapeCollection() {
+        return rootShapeCollection;
+    }
+
+    public UserInputTracker getUserInputTracker() {
+        return userInputTracker;
+    }
 
     private static final long serialVersionUID = 1683277888885045387L;
     private final List<ViewRenderListener> viewRenderListeners = new ArrayList<>();
-    private final ViewContext context = new ViewContext(this);
     /**
      * Last time this view was updated.
      */
@@ -50,11 +77,8 @@ public class ViewPanel extends JPanel implements ComponentListener {
     private boolean viewRepaintNeeded = true;
 
     public ViewPanel() {
-        viewRenderListeners.add(context.getAvatar());
-
-        // initialize input tracker
-        context.getUserInputTracker().bind(this);
-        viewRenderListeners.add(context.getUserInputTracker());
+        viewRenderListeners.add(avatar);
+        viewRenderListeners.add(userInputTracker);
 
         initializePanelLayout();
 
@@ -87,10 +111,6 @@ public class ViewPanel extends JPanel implements ComponentListener {
         viewRepaintNeeded = true;
     }
 
-    public ViewContext getContext() {
-        return context;
-    }
-
     @Override
     public Dimension getMaximumSize() {
         return getPreferredSize();
@@ -164,7 +184,7 @@ public class ViewPanel extends JPanel implements ComponentListener {
         }
 
         // paint root geometry collection to the offscreen render buffer
-        context.getRootShapeCollection().paint(context, renderingContext);
+        rootShapeCollection.paint(this, renderingContext);
 
         // draw rendered offscreen image to visible screen
         final Graphics graphics = getGraphics();
@@ -240,8 +260,7 @@ public class ViewPanel extends JPanel implements ComponentListener {
         boolean reRenderFrame = false;
 
         for (final ViewRenderListener listener : viewRenderListeners)
-            if (listener.beforeRender(context,
-                    millisecondsPassedSinceLastUpdate))
+            if (listener.beforeRender(this, millisecondsPassedSinceLastUpdate))
                 reRenderFrame = true;
 
         // abort rendering if window size is invalid