content: /*
   * @(#)GanttTaskPainter.java
   *
   * Copyright 2002 EGANTT LLP. All rights reserved.
   * PROPRIETARY/QPL. Use is subject to license terms.
   */
  
  package com.egantt.drawing.painter.gantt;
  
  import java.awt.Graphics;
  import java.awt.Rectangle;
  
  import com.egantt.awt.graphics.GraphicsContext;
  import com.egantt.model.drawing.axis.AxisInterval;
  import com.egantt.model.drawing.axis.AxisView;
  import com.egantt.model.drawing.axis.interval.DrawingStateInterval;
  import com.egantt.model.drawing.painter.PainterState;
  
  public class LinkTaskPainter extends AbstractLinkTaskPainter
  {
  	@Override
  	protected void paintStart(DrawingStateInterval interval, AxisInterval localInterval, AxisView view, Object key, Graphics g, Rectangle bounds, PainterState state, GraphicsContext context) {
  		int x = view.getTransform().transform(localInterval.getFinish(), bounds.width);
  		int x2 = view.getTransform().transform(interval.getFinish(), bounds.width);
  		
  		int xOffset = bounds.height / 6;
  		g.fillRect(Math.min(x, x2), bounds.height / 3, bounds.height /3, bounds.height / 3);
  		g.drawLine(Math.min(x, x2), bounds.height / 2, Math.max(x, x2) + xOffset, bounds.height / 2);
  		g.drawLine(Math.max(x2, x) + xOffset, bounds.height /2, Math.max(x2, x) + xOffset, bounds.height);
  	}
  
  	@Override
  	protected void paintOther(DrawingStateInterval interval, AxisView view, Object key, Graphics g, Rectangle bounds, PainterState state, GraphicsContext context) {
  		
  		int xOffset = bounds.height / 6;
  		int x2 = view.getTransform().transform(interval.getFinish(), bounds.width);
  		g.drawLine(x2 + xOffset, bounds.y, x2 + xOffset , bounds.height);
  	}
  
  	@Override
  	protected void paintFinish(DrawingStateInterval interval, AxisInterval localInterval, AxisView view, Object key, Graphics g, Rectangle bounds, PainterState state, GraphicsContext context) {
  		int x = view.getTransform().transform(localInterval.getFinish(), bounds.width);
  		int x2 = view.getTransform().transform(interval.getFinish(), bounds.width);
  		int xOffset = bounds.height / 6;
  		g.drawLine(Math.min(x, x2), bounds.height / 2, Math.max(x, x2) + xOffset, bounds.height / 2);
  		g.drawLine(Math.max(x2, x) + xOffset, bounds.y, Math.max(x2, x) + xOffset, bounds.height / 2);
  	}
  }
  