/*
GNU GENERAL LICENSE
Copyright (C) 2006 The Lobo Project. Copyright (C) 2014 - 2017 Lobo Evolution
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public
License as published by the Free Software Foundation; either
verion 3 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General License for more details.
You should have received a copy of the GNU General Public
along with this program. If not, see <http://www.gnu.org/licenses/>.
Contact info: lobochief@users.sourceforge.net; ivan.difrancesco@yahoo.it
*/
package org.lobobrowser.html.renderer;
import java.awt.Color;
import java.awt.Component;
import java.awt.Graphics;
import java.awt.event.KeyEvent;
import java.awt.event.MouseEvent;
import java.util.Iterator;
import org.lobobrowser.html.HtmlRendererContext;
import org.lobobrowser.html.dombl.ModelNode;
import org.lobobrowser.html.domimpl.HTMLElementImpl;
import org.lobobrowser.http.UserAgentContext;
import org.lobobrowser.util.CollectionUtilities;
/**
* The Class RInlineBlock.
*/
public class RInlineBlock extends BaseElementRenderable {
/** The child. */
private final RBlock child;
/**
* Instantiates a new r inline block.
*
* @param container
* the container
* @param modelNode
* the model node
* @param uacontext
* the uacontext
* @param rendererContext
* the renderer context
* @param frameContext
* the frame context
*/
public RInlineBlock(final RenderableContainer container, final HTMLElementImpl modelNode,
final UserAgentContext uacontext, final HtmlRendererContext rendererContext,
final FrameContext frameContext) {
super(container, modelNode, uacontext);
final RBlock child = new RBlock(modelNode, 0, userAgentContext, rendererContext, frameContext, this);
child.setOriginalParent(this);
child.setParent(this);
this.child = child;
}
/**
* Assign dimension.
*/
public void assignDimension() {
this.width = child.getWidth();
this.height = child.getHeight();
}
/*
* (non-Javadoc)
*
* @see org.lobobrowser.html.renderer.RCollection#getRenderables()
*/
@Override
public Iterator<? extends Renderable> getRenderables() {
return CollectionUtilities.singletonIterator(this.child);
}
/*
* (non-Javadoc)
*
* @see
* org.lobobrowser.html.renderer.BoundableRenderable#getLowestRenderableSpot
* (int, int)
*/
@Override
public RenderableSpot getLowestRenderableSpot(final int x, final int y) {
return this.child.getLowestRenderableSpot(x, y);
}
/*
* (non-Javadoc)
*
* @see
* org.lobobrowser.html.renderer.BoundableRenderable#onDoubleClick(java.awt.
* event.MouseEvent, int, int)
*/
@Override
public boolean onDoubleClick(final MouseEvent event, final int x, final int y) {
return this.child.onDoubleClick(event, x, y);
}
/*
* (non-Javadoc)
*
* @see
* org.lobobrowser.html.renderer.BoundableRenderable#onMouseClick(java.awt.
* event .MouseEvent, int, int)
*/
@Override
public boolean onMouseClick(final MouseEvent event, final int x, final int y) {
return this.child.onMouseClick(event, x, y);
}
/*
* (non-Javadoc)
*
* @see
* org.lobobrowser.html.renderer.BoundableRenderable#onMouseDisarmed(java.
* awt .event.MouseEvent)
*/
@Override
public boolean onMouseDisarmed(final MouseEvent event) {
return this.child.onMouseDisarmed(event);
}
/*
* (non-Javadoc)
*
* @see
* org.lobobrowser.html.renderer.BoundableRenderable#onMousePressed(java.awt
* .event.MouseEvent, int, int)
*/
@Override
public boolean onMousePressed(final MouseEvent event, final int x, final int y) {
return this.child.onMousePressed(event, x, y);
}
/*
* (non-Javadoc)
*
* @see
* org.lobobrowser.html.renderer.BoundableRenderable#onMouseReleased(java.
* awt .event.MouseEvent, int, int)
*/
@Override
public boolean onMouseReleased(final MouseEvent event, final int x, final int y) {
return this.child.onMouseReleased(event, x, y);
}
@Override
public boolean onKeyPressed(KeyEvent event) {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean onKeyUp(KeyEvent event) {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean onKeyDown(KeyEvent event) {
// TODO Auto-generated method stub
return false;
}
/*
* (non-Javadoc)
*
* @see org.lobobrowser.html.renderer.BaseElementRenderable#paint(java.awt.
* Graphics)
*/
@Override
public void paint(final Graphics g) {
this.child.paint(g);
}
/*
* (non-Javadoc)
*
* @see org.lobobrowser.html.renderer.RElement#getVAlign()
*/
@Override
public int getVAlign() {
// Not used
return VALIGN_BASELINE;
}
/*
* (non-Javadoc)
*
* @see
* org.lobobrowser.html.dombl.UINode#repaint(org.lobobrowser.html.dombl.
* ModelNode )
*/
@Override
public void repaint(final ModelNode modelNode) {
this.child.repaint(modelNode);
}
/*
* (non-Javadoc)
*
* @see org.lobobrowser.html.renderer.RenderableContainer#
* getPaintedBackgroundColor()
*/
@Override
public Color getPaintedBackgroundColor() {
return this.backgroundColor;
}
/*
* (non-Javadoc)
*
* @see org.lobobrowser.html.renderer.BaseElementRenderable#doLayout(int,
* int, boolean)
*/
@Override
protected void doLayout(final int availWidth, final int availHeight, final boolean sizeOnly) {
this.child.layout(availWidth, availHeight, false, false, null, sizeOnly);
assignDimension();
}
/*
* (non-Javadoc)
*
* @see
* org.lobobrowser.html.renderer.BaseElementRenderable#addComponent(java.awt
* .Component)
*/
@Override
public Component addComponent(final Component component) {
this.container.addComponent(component);
return super.addComponent(component);
}
}