/* This file belongs to the Servoy development and deployment environment, Copyright (C) 1997-2010 Servoy BV This program is free software; you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation; either version 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 Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program; if not, see http://www.gnu.org/licenses or write to the Free Software Foundation,Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 */ package com.servoy.j2db.ui; import java.awt.Color; import java.awt.Component; import com.servoy.j2db.util.ComponentFactoryHelper; import com.servoy.j2db.util.PersistHelper; /** * Wrapper used for data renderers for on render callback. * * @author gboros * */ public class DataRendererOnRenderWrapper implements ISupportOnRenderCallback, IScriptRenderMethods { private final RenderEventExecutor renderEventExecutor; private final ISupportOnRenderWrapper onRenderComponent; public DataRendererOnRenderWrapper(ISupportOnRenderWrapper onRenderComponent) { this.onRenderComponent = onRenderComponent; renderEventExecutor = new RenderEventExecutor(this); } public String getBgcolor() { return PersistHelper.createColorString(onRenderComponent.getBackground()); } public void setBgcolor(String clr) { if (onRenderComponent instanceof IProviderStylePropertyChanges && ((IProviderStylePropertyChanges)onRenderComponent).getStylePropertyChanges() instanceof IStylePropertyChangesRecorder) { ((IStylePropertyChangesRecorder)((IProviderStylePropertyChanges)onRenderComponent).getStylePropertyChanges()).setBgcolor(clr); } onRenderComponent.setBackground(PersistHelper.createColor(clr)); fireOnRender(); } public String getFgcolor() { return null; } public void setFgcolor(String clr) { // ignore } public void setVisible(boolean b) { // ignore } public void setEnabled(boolean b) { // ignore } public int getLocationX() { return 0; } public int getLocationY() { return 0; } public int getAbsoluteFormLocationY() { return 0; } public int getWidth() { return 0; } public int getHeight() { return 0; } public String getName() { return null; } public String getElementType() { return onRenderComponent.getOnRenderElementType(); } public void putClientProperty(Object key, Object value) { // ignore } public Object getClientProperty(Object key) { return null; } public String getBorder() { return ComponentFactoryHelper.createBorderString(onRenderComponent.getBorder()); } public void setBorder(String spec) { if (onRenderComponent instanceof IProviderStylePropertyChanges && ((IProviderStylePropertyChanges)onRenderComponent).getStylePropertyChanges() instanceof IStylePropertyChangesRecorder) { ((IStylePropertyChangesRecorder)((IProviderStylePropertyChanges)onRenderComponent).getStylePropertyChanges()).setBorder(spec); } onRenderComponent.setBorder(ComponentFactoryHelper.createBorder(spec)); fireOnRender(); } public String getFont() { return null; } public void setFont(String spec) { // ignore } public boolean isTransparent() { return false; } public void setTransparent(boolean b) { // ignore } public String getDataProviderID() { return null; } public RenderEventExecutor getRenderEventExecutor() { return renderEventExecutor; } public IScriptRenderMethods getRenderable() { return this; } public void setRenderableStateChanged() { if (onRenderComponent instanceof IProviderStylePropertyChanges) ((IProviderStylePropertyChanges)onRenderComponent).getStylePropertyChanges().setChanged(); } /* * @see com.servoy.j2db.ui.ISupportOnRenderCallback#getComponent() */ public Object getComponent() { return onRenderComponent; } @Override public String toString() { return onRenderComponent.getOnRenderToString(); } /* * @see com.servoy.j2db.ui.IRenderComponent#setComponentEnabled(boolean) */ public void setComponentEnabled(boolean enabled) { // ignore } /* * @see com.servoy.j2db.ui.IRenderComponent#isEnabled() */ public boolean isEnabled() { return true; } /* * @see com.servoy.j2db.ui.IRenderComponent#setComponentVisible(boolean) */ public void setComponentVisible(boolean visible) { // ignore } /* * @see com.servoy.j2db.ui.IRenderComponent#isVisible() */ public boolean isVisible() { return true; } /* * @see com.servoy.j2db.ui.IRenderComponent#setForeground(java.awt.Color) */ public void setForeground(Color foreground) { // ignore } /* * @see com.servoy.j2db.ui.IRenderComponent#getForeground() */ public Color getForeground() { return null; } /* * @see com.servoy.j2db.ui.IRenderComponent#setOpaque(boolean) */ public void setOpaque(boolean opaque) { // ignore } /* * @see com.servoy.j2db.ui.IRenderComponent#isOpaque() */ public boolean isOpaque() { return true; } /* * @see com.servoy.j2db.ui.IRenderComponent#setToolTipText(java.lang.String) */ public void setToolTipText(String tooltip) { // ignore } /* * @see com.servoy.j2db.ui.IRenderComponent#getToolTipText() */ public String getToolTipText() { return null; } private void fireOnRender() { if (renderEventExecutor != null && !renderEventExecutor.isOnRenderExecuting()) { renderEventExecutor.setRenderStateChanged(); renderEventExecutor.fireOnRender(getComponent() instanceof Component ? ((Component)getComponent()).hasFocus() : false); } } }