Renderer.java
01 /*
02  *
03  * All content copyright Terracotta, Inc., unless otherwise indicated. All rights reserved.
04  *
05  */
06 package demo.sharededitor.ui;
07 
08 import java.awt.Color;
09 import java.awt.Graphics;
10 import java.awt.Graphics2D;
11 import java.awt.Image;
12 
13 import javax.swing.JComponent;
14 
15 import demo.sharededitor.events.ListListener;
16 import demo.sharededitor.models.BaseObject;
17 import demo.sharededitor.models.ObjectManager;
18 
19 public final class Renderer extends JComponent implements ListListener {
20    public static final long serialVersionUID = 0;
21 
22    public Renderer() {
23       setDoubleBuffered(true);
24       objmgr = null;
25    }
26 
27    private ObjectManager objmgr;
28 
29    private Image drawingArea;
30 
31    public void changed(Object source, Object obj) {
32       this.objmgr = (ObjectManagersource;
33       this.repaint();
34    }
35 
36    public void paint(Graphics g) {
37       if (drawingArea == null) {
38          drawingArea = createImage(getSize().width, getSize().height);
39       }
40 
41       Graphics2D g2 = (Graphics2DdrawingArea.getGraphics();
42       g2.setBackground(Color.WHITE);
43       g2.clearRect(00, getSize().width, getSize().height);
44 
45       if (objmgr == null) {
46          return;
47       }
48 
49       BaseObject[] objList = objmgr.list();
50       for (int i = 0; i < objList.length; i++) {
51          BaseObject obj = objList[i];
52          obj.draw(g2, objmgr.isGrabbed(obj));
53       }
54 
55       g2.setColor(Color.DARK_GRAY);
56       g2.drawRect(00, getSize().width - 1, getSize().height - 1);
57       g2.dispose();
58 
59       g.drawImage(drawingArea, 00null);
60    }
61 }