package org.insightech.er.editor.controller.editpart.element;
import org.eclipse.draw2d.ColorConstants;
import org.eclipse.draw2d.Graphics;
import org.eclipse.draw2d.geometry.Rectangle;
import org.eclipse.gef.editparts.GridLayer;
import org.eclipse.gef.editparts.ScalableFreeformRootEditPart;
import org.eclipse.swt.graphics.Color;
import org.insightech.er.editor.model.ERDiagram;
import org.insightech.er.editor.model.settings.PageSetting;
public class PagableFreeformRootEditPart extends ScalableFreeformRootEditPart {
private ERDiagram diagram;
public PagableFreeformRootEditPart(ERDiagram diagram) {
this.diagram = diagram;
}
/**
* {@inheritDoc}
*/
@Override
protected GridLayer createGridLayer() {
return new PagableGridLayer();
}
private class PagableGridLayer extends GridLayer {
private int i = 0;
/**
* {@inheritDoc}
*/
@Override
protected void paintGrid(Graphics g) {
super.paintGrid(g);
Rectangle clip = g.getClip(Rectangle.SINGLETON);
PageSetting pageSetting = diagram.getPageSetting();
int width = pageSetting.getWidth();
int height = pageSetting.getHeight();
Rectangle rect = clip;
Color color = g.getForegroundColor();
g.setForegroundColor(ColorConstants.lightGray);
int startX = rect.x;
if (startX > 0) {
startX = 0;
}
int startY = rect.y;
if (startY > 0) {
startY = 0;
}
for (int i = startX; i < rect.x + rect.width; i += width) {
g.drawLine(i, rect.y, i, rect.y + rect.height);
}
for (int i = startY; i < rect.y + rect.height; i += height) {
g.drawLine(rect.x, i, rect.x + rect.width, i);
}
g.setForegroundColor(color);
i++;
if (i > 0) {
i = -1;
repaint();
}
}
}
}