package cz.nkp.differ.gui.components; import org.apache.log4j.Logger; import com.vaadin.ui.Component; import com.vaadin.ui.CustomComponent; import com.vaadin.ui.HorizontalLayout; import com.vaadin.ui.Layout; import com.vaadin.ui.ProgressIndicator; import com.vaadin.ui.VerticalLayout; import cz.nkp.differ.compare.io.CompareComponent; import cz.nkp.differ.model.Image; import cz.nkp.differ.listener.ProgressListener; public class PluginDisplayComponent extends CustomComponent { private static final long serialVersionUID = -5172306282663506101L; private Logger LOGGER = Logger.getLogger(PluginDisplayComponent.class); public PluginDisplayComponent(CompareComponent d, Image[] images) { super(); if (images == null) { throw new NullPointerException("images"); } this.setCompositionRoot(createPluginCompareComponent(d, images)); } private Layout createPluginCompareComponent(CompareComponent d, Image[] images) { HorizontalLayout layout = new HorizontalLayout(); layout.addComponent(new PluginDisplayPanel(d, images)); return layout; } } class PluginDisplayPanel extends VerticalLayout implements ProgressListener { private static final long serialVersionUID = -4597810967107465071L; private ProgressIndicator progress = new ProgressIndicator(); static Logger LOGGER = Logger.getLogger(PluginDisplayPanel.class); public PluginDisplayPanel(CompareComponent d, Image[] images) { d.addImages(images); d.setPluginDisplayComponentCallback(this); synchronized (progress) { progress.setIndeterminate(false); progress.setImmediate(true); progress.setPollingInterval(750); progress.setCaption("Loading plugin..."); progress.setValue(0f); this.addComponent(progress); } } @Override public void ready(Object c) { this.removeAllComponents(); this.addComponent((Component) c); } @Override public void setCompleted(int percentage) { synchronized (progress) { progress.setValue(((float) (percentage)) / 100f); } } }