/* * @(#)BasicStatePainter.java * * Copyright 2002 EGANTT LLP. All rights reserved. * PROPRIETARY/QPL. Use is subject to license terms. */ package com.egantt.drawing.component.painter.state; import java.awt.Component; import java.util.Iterator; import com.egantt.awt.graphics.GraphicsState; import com.egantt.drawing.component.DrawingComponentPainter; import com.egantt.drawing.component.painter.PartPainter; import com.egantt.model.drawing.ContextResources; import com.egantt.model.drawing.DrawingContext; import com.egantt.model.drawing.DrawingPart; import com.egantt.model.drawing.DrawingState; import com.egantt.swing.cell.CellState; /** * Intent: A 2D implementation of a Drawing, uses the * @see com.egantt.model.drawing.DrawingState * in order to get out the <code>DrawingPart(s)</code> */ public class BasicStatePainter implements DrawingComponentPainter { protected final DrawingContext context; public BasicStatePainter(DrawingContext context) { this.context = context; } // __________________________________________________________________________ public void paint(Component c, GraphicsState graphics, CellState cellState) { DrawingState drawing = cellState.getDrawing(); if (drawing == null) return; drawing.initialise(); for (Iterator parts = drawing.parts(); parts.hasNext();) { DrawingPart part = (DrawingPart) parts.next(); // paint the part it must exist with-in the DrawingContext PartPainter painter = (PartPainter) context.get(part.getPainter(), ContextResources.PART_PAINTER); if (painter == null) continue; painter.paint(c, part, graphics, cellState, context); } drawing.terminate(); } }