package org.lobobrowser.html.renderer;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Point;
import java.awt.Rectangle;
import java.awt.event.MouseEvent;
import java.util.Iterator;
import org.eclipse.jdt.annotation.NonNull;
import org.lobobrowser.html.domimpl.ModelNode;
import org.lobobrowser.util.CollectionUtilities;
import org.lobobrowser.util.Threads;
public class TranslatedRenderable extends BaseBoundableRenderable implements RCollection {
public void paint(final Graphics g) {
translatedChild.paintTranslated(g);
}
public boolean isFixed() {
return translatedChild.isFixed();
}
public ModelNode getModelNode() {
return translatedChild.getModelNode();
}
public Rectangle getBounds() {
return translatedChild.getBounds();
}
public Rectangle getVisualBounds() {
return translatedChild.getVisualBounds();
}
public boolean contains(final int x, final int y) {
return translatedChild.contains(x, y);
}
public Dimension getSize() {
return translatedChild.getSize();
}
public Point getOrigin() {
return translatedChild.getOrigin();
}
public Point getOriginRelativeTo(final RCollection ancestor) {
return translatedChild.getOriginRelativeTo(ancestor);
}
public Point getOriginRelativeToAbs(final RCollection ancestor) {
return translatedChild.getOriginRelativeToAbs(ancestor);
}
public Point getOriginRelativeToNoScroll(final RCollection ancestor) {
return translatedChild.getOriginRelativeToNoScroll(ancestor);
}
/*
public RCollection getParent() {
return translatedChild.getParent();
}*/
public void setOriginalParent(final RCollection origParent) {
translatedChild.setOriginalParent(origParent);
}
public RCollection getOriginalParent() {
return translatedChild.getOriginalParent();
}
public RCollection getOriginalOrCurrentParent() {
return translatedChild.getOriginalOrCurrentParent();
}
public void setBounds(final int x, final int y, final int with, final int height) {
translatedChild.setBounds(x, y, with, height);
}
public void setOrigin(final int x, final int y) {
translatedChild.setOrigin(x, y);
}
public void setX(final int x) {
translatedChild.setX(x);
}
public void setY(final int y) {
translatedChild.setY(y);
}
public int getX() {
return translatedChild.getX();
}
public int getY() {
return translatedChild.getY();
}
public int getVisualX() {
return translatedChild.getVisualX();
}
public int getVisualY() {
return translatedChild.getVisualY();
}
public int getHeight() {
return translatedChild.getHeight();
}
public int getWidth() {
return translatedChild.getWidth();
}
public int getVisualHeight() {
return translatedChild.getVisualHeight();
}
public int getVisualWidth() {
return translatedChild.getVisualWidth();
}
public void setHeight(final int height) {
translatedChild.setHeight(height);
}
public void setWidth(final int width) {
translatedChild.setWidth(width);
}
public RenderableSpot getLowestRenderableSpot(final int x, final int y) {
return translatedChild.getLowestRenderableSpot(x, y);
}
public void repaint() {
translatedChild.repaint();
}
public boolean onMousePressed(final MouseEvent event, final int x, final int y) {
return translatedChild.onMousePressed(event, x, y);
}
public boolean onMouseReleased(final MouseEvent event, final int x, final int y) {
return translatedChild.onMouseReleased(event, x, y);
}
public boolean onMouseDisarmed(final MouseEvent event) {
return translatedChild.onMouseDisarmed(event);
}
public boolean onMouseClick(final MouseEvent event, final int x, final int y) {
return translatedChild.onMouseClick(event, x, y);
}
public boolean onMiddleClick(final MouseEvent event, final int x, final int y) {
return translatedChild.onMiddleClick(event, x, y);
}
public boolean onDoubleClick(final MouseEvent event, final int x, final int y) {
return translatedChild.onDoubleClick(event, x, y);
}
public boolean onRightClick(final MouseEvent event, final int x, final int y) {
return translatedChild.onRightClick(event, x, y);
}
public void onMouseMoved(final MouseEvent event, final int x, final int y, final boolean triggerEvent, final ModelNode limit) {
translatedChild.onMouseMoved(event, x, y, triggerEvent, limit);
}
public void onMouseOut(final MouseEvent event, final int x, final int y, final ModelNode limit) {
translatedChild.onMouseOut(event, x, y, limit);
}
public boolean isContainedByNode() {
return translatedChild.isContainedByNode();
}
public boolean paintSelection(final Graphics g, final boolean inSelection, final RenderableSpot startPoint, final RenderableSpot endPoint) {
return translatedChild.paintSelection(g, inSelection, startPoint, endPoint);
}
public boolean extractSelectionText(final StringBuffer buffer, final boolean inSelection, final RenderableSpot startPoint, final RenderableSpot endPoint) {
return translatedChild.extractSelectionText(buffer, inSelection, startPoint, endPoint);
}
public void repaint(final int x, final int y, final int width, final int height) {
// translatedChild.repaint(x, y, width, height);
// getParent().repaint(x, y, width, height);
final Point or = translatedChild.getOriginRelativeTo(getParent());
{
final Rectangle rect = new Rectangle(x, y, width, height);
rect.translate(or.x, or.y);
}
getParent().repaint(x + or.x, y + or.y, width, height);
}
public void relayout() {
translatedChild.relayout();
}
/*
public Point getGUIPoint(int clientX, int clientY) {
return translatedChild.getGUIPoint(clientX, clientY);
}*/
/*
public int getOrdinal() {
return translatedChild.getOrdinal();
}
public void setOrdinal(int ordinal) {
translatedChild.setOrdinal(ordinal);
}*/
public int getZIndex() {
return translatedChild.getZIndex();
}
private final @NonNull BoundableRenderable translatedChild;
public TranslatedRenderable(final @NonNull BoundableRenderable translatedChild) {
// TODO
super(null, null);
this.translatedChild = translatedChild;
}
@Override
protected void invalidateLayoutLocal() {
// TODO
}
@Override
public String toString() {
return "TransRndrbl [" + translatedChild + "]";
}
public Renderable getChild() {
return translatedChild;
}
@Override
public Iterator<@NonNull ? extends Renderable> getRenderables(boolean topFirst) {
return CollectionUtilities.singletonIterator(translatedChild);
}
@Override
public void updateWidgetBounds(int guiX, int guiY) {
// NOP
// Just checking
if (translatedChild instanceof RCollection) {
final RCollection tc = (RCollection) translatedChild;
tc.updateWidgetBounds(guiX, guiY);
}
}
@Override
public void invalidateLayoutDeep() {
if (translatedChild instanceof RCollection) {
final RCollection tc = (RCollection) translatedChild;
tc.invalidateLayoutDeep();
}
}
@Override
public void focus() {
// TODO Auto-generated method stub
Threads.dumpStack(8);
}
@Override
public void blur() {
// TODO Auto-generated method stub
Threads.dumpStack(8);
}
@Override
public BoundableRenderable getRenderable(int x, int y) {
if (translatedChild instanceof RCollection) {
final RCollection tc = (RCollection) translatedChild;
return tc.getRenderable(x, y);
}
return null;
}
@Override
public Rectangle getClipBounds() {
if (translatedChild instanceof RCollection) {
final RCollection tc = (RCollection) translatedChild;
return tc.getClipBounds();
}
return null;
}
@Override
public Rectangle getClipBoundsWithoutInsets() {
// TODO: Stub
return getClipBounds();
}
@Override
public boolean isReadyToPaint() {
return translatedChild.isReadyToPaint();
}
}