package com.constellio.app.ui.tools.vaadin;
import java.util.Date;
import java.util.List;
import com.constellio.app.ui.pages.base.EnterViewListener;
import com.constellio.app.ui.tools.pageloadtime.PageLoadTimeWriter;
import com.constellio.app.ui.util.ComponentTreeUtils;
import com.constellio.sdk.dev.tools.TestSerializationUtils;
import com.vaadin.navigator.View;
import com.vaadin.ui.Button;
import com.vaadin.ui.Button.ClickEvent;
import com.vaadin.ui.Button.ClickListener;
import com.vaadin.ui.Component;
@SuppressWarnings("serial")
public class TestEnterViewListener implements EnterViewListener {
@Override
public void enterView(View view) {
addClickListeners(view);
// Put a javascript variable in the view to know that the view is done loading.
// This variable will be updated whenever an event happens (e.g.: a button is clicked)
writePageLoadTime(view);
}
private void addClickListeners(final View view) {
List<Button> buttons = ComponentTreeUtils.getChildren((Component) view, Button.class);
for (Button button : buttons) {
if (button.isEnabled()) {
button.addClickListener(new ClickListener() {
@Override
public void buttonClick(ClickEvent event) {
// Whenever a click happens, we update the page load time
writePageLoadTime(view);
}
});
}
}
}
private void writePageLoadTime(View view) {
new PageLoadTimeWriter().write(new Date());
// validateSerializable(view);
}
private void validateSerializable(View view) {
TestSerializationUtils.validateSerializable(view);
}
}