use of com.servoy.j2db.ui.ISupportOnRender in project servoy-client by Servoy.
the class WebCellAdapter method valueChanged.
public void valueChanged(ModificationEvent e) {
MainPage mp = view.findParent(MainPage.class);
if (mp != null)
mp.touch();
IRecord record = e.getRecord();
Iterator iterator = ((MarkupContainer) view.getTable()).iterator();
while (iterator.hasNext()) {
Object next = iterator.next();
if (next instanceof ListItem) {
ListItem li = (ListItem) next;
Object modelObject = li.getModelObject();
if (record == null || modelObject == record) {
boolean hasOnRender = false;
Iterator iterator2 = li.iterator();
while (iterator2.hasNext()) {
ArrayList<Object> cellDisplays = new ArrayList<Object>();
Object cell = iterator2.next();
cell = CellContainer.getContentsForCell((Component) cell);
if (cell instanceof WebCellBasedViewListViewItem) {
Iterator listItemIte = ((WebCellBasedViewListViewItem) cell).iterator();
while (listItemIte.hasNext()) {
Object listItemDisplay = listItemIte.next();
if (listItemDisplay instanceof WrapperContainer) {
listItemDisplay = ((WrapperContainer) listItemDisplay).getDelegate();
}
cellDisplays.add(listItemDisplay);
}
} else {
cellDisplays.add(cell);
}
for (Object cellDisplay : cellDisplays) {
if (cellDisplay instanceof IProviderStylePropertyChanges && cellDisplay instanceof IDisplayData && ((IDisplayData) cellDisplay).getDataProviderID() == dataprovider) {
// only test if it is not already changed
view.checkForValueChanges(cellDisplay);
// do fire on render on all components for record change
if (cellDisplay instanceof ISupportOnRender && cellDisplay instanceof IScriptableProvider) {
IScriptable so = ((IScriptableProvider) cellDisplay).getScriptObject();
if (so instanceof AbstractRuntimeRendersupportComponent && ((ISupportOnRenderCallback) so).getRenderEventExecutor().hasRenderCallback()) {
String componentDataproviderID = ((AbstractRuntimeRendersupportComponent) so).getDataProviderID();
if (record != null || (e.getName() != null && e.getName().equals(componentDataproviderID))) {
((ISupportOnRender) cellDisplay).fireOnRender(true);
hasOnRender = true;
}
}
}
}
}
}
if (record != null || (!hasOnRender && !canChangeValue(e)))
break;
}
}
}
}
use of com.servoy.j2db.ui.ISupportOnRender in project servoy-client by Servoy.
the class WebEventExecutor method handleEvent.
/**
* @param type
* @param target
* @param comp
* @param webModifiers
* @param mouseLocation
* @param page
*/
private void handleEvent(EventType type, AjaxRequestTarget target, Component comp, int webModifiers, Point mouseLocation, Point absoluteMouseLocation, Page page) {
// process model changes from web components
WebClientSession.get().getWebClient().executeEvents();
Component renderScriptProvider = comp;
ISupplyFocusChildren<?> componentWithChildren = renderScriptProvider.findParent(ISupplyFocusChildren.class);
if (componentWithChildren != null)
renderScriptProvider = (Component) componentWithChildren;
if (renderScriptProvider instanceof WrapperContainer)
renderScriptProvider = ((WrapperContainer) renderScriptProvider).getDelegate();
RenderEventExecutor renderEventExecutor = null;
if (renderScriptProvider instanceof IScriptableProvider) {
IScriptable s = ((IScriptableProvider) renderScriptProvider).getScriptObject();
if (s instanceof ISupportOnRenderCallback) {
renderEventExecutor = ((ISupportOnRenderCallback) s).getRenderEventExecutor();
if (!renderEventExecutor.hasRenderCallback())
renderEventExecutor = null;
}
}
if (type == EventType.focusGained || type == EventType.action || type == EventType.focusLost) {
if (type == EventType.focusGained || type == EventType.action) {
((MainPage) page).setFocusedComponent(comp);
} else {
((MainPage) page).setFocusedComponent(null);
}
if (renderEventExecutor != null) {
renderEventExecutor.setRenderStateChanged();
// if component's onRender did not change any properties, don't add it to the target
if (renderScriptProvider instanceof ISupportOnRender && WebOnRenderHelper.doRender((ISupportOnRender) renderScriptProvider)) {
target.addComponent(renderScriptProvider);
}
}
}
if (type == EventType.focusLost || setSelectedIndex(comp, target, convertModifiers(webModifiers), type == EventType.focusGained || type == EventType.action)) {
if (skipFireFocusGainedCommand && type.equals(JSEvent.EventType.focusGained)) {
skipFireFocusGainedCommand = false;
} else {
switch(type) {
case action:
fireActionCommand(false, comp, convertModifiers(webModifiers), mouseLocation);
break;
case focusGained:
fireEnterCommands(false, comp, convertModifiers(webModifiers));
break;
case focusLost:
fireLeaveCommands(comp, false, convertModifiers(webModifiers));
break;
case doubleClick:
fireDoubleclickCommand(false, comp, convertModifiers(webModifiers), mouseLocation);
break;
case rightClick:
// if right click, mark the meta flag as it is on the smart client
fireRightclickCommand(false, comp, convertModifiers(webModifiers | 8), null, mouseLocation, absoluteMouseLocation);
break;
case none:
case dataChange:
case form:
case onDrag:
case onDragOver:
case onDrop:
}
}
}
}
use of com.servoy.j2db.ui.ISupportOnRender in project servoy-client by Servoy.
the class DisplaysAdapter method valueChanged.
/*
* _____________________________________________________________ JavaScriptModificationlistener
*/
public void valueChanged(ModificationEvent e) {
if (!adjusting) {
try {
adjusting = true;
Object obj = null;
boolean formVariable = false;
if (dataProviderID != null) {
if (dal.getFormScope().has(dataProviderID, dal.getFormScope())) {
formVariable = true;
obj = dal.getFormScope().get(dataProviderID);
} else if (record != null) {
obj = record.getValue(dataProviderID);
if (obj == Scriptable.NOT_FOUND) {
obj = null;
}
// have to do this because for calcs in calcs. Better was to had a check for previous value.
fireModificationEvent(obj);
}
}
// do not set value for form variable except when really changed
if (!formVariable || dataProviderID == null || dataProviderID.equals(e.getName())) {
setValueToDisplays(obj);
}
} finally {
adjusting = false;
}
}
// do fire on render on all components for record change
for (IDisplayData displayData : displays) {
if (displayData instanceof ISupportOnRender && displayData instanceof IScriptableProvider) {
IScriptable so = ((IScriptableProvider) displayData).getScriptObject();
if (so instanceof AbstractRuntimeRendersupportComponent && ((ISupportOnRenderCallback) so).getRenderEventExecutor().hasRenderCallback()) {
String componentDataproviderID = ((AbstractRuntimeRendersupportComponent) so).getDataProviderID();
if (e.getRecord() != null || (e.getName() != null && e.getName().equals(componentDataproviderID))) {
((ISupportOnRender) displayData).fireOnRender(true);
}
}
}
}
}
Aggregations