/* Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.activiti.kickstart.ui.popup; import java.io.InputStream; import java.util.UUID; import org.activiti.kickstart.KickstartApplication; import org.activiti.kickstart.diagram.ProcessDiagramGenerator; import org.activiti.kickstart.dto.KickstartWorkflow; import org.activiti.kickstart.service.KickstartService; import org.activiti.kickstart.service.KickstartServiceFactory; import org.activiti.kickstart.service.MarshallingServiceImpl; import org.activiti.kickstart.ui.ViewManager; import com.vaadin.terminal.StreamResource; import com.vaadin.terminal.StreamResource.StreamSource; import com.vaadin.ui.Embedded; import com.vaadin.ui.HorizontalLayout; import com.vaadin.ui.Panel; import com.vaadin.ui.Window; import com.vaadin.ui.themes.Reindeer; /** * @author Joram Barrez */ public class ProcessImagePopupWindow extends Window { private static final long serialVersionUID = -1483000500366042513L; protected static final String TITLE = "Process image"; protected ViewManager viewManager; protected KickstartWorkflow kickstartWorkflow; protected String processDefinitionId; protected KickstartService kickstartService; public ProcessImagePopupWindow(String processDefinitionId) { this.processDefinitionId = processDefinitionId; init(); } public ProcessImagePopupWindow(KickstartWorkflow adhocWorkflow) { this.kickstartWorkflow = adhocWorkflow; init(); } public void init() { this.viewManager = KickstartApplication.get().getViewManager(); this.kickstartService = KickstartApplication.get().getKickstartService(); initUi(); } protected void initUi() { setModal(true); setHeight("80%"); setWidth("80%"); center(); setCaption(TITLE); StreamResource.StreamSource streamSource = null; if (processDefinitionId != null) { streamSource = new StreamSource() { private static final long serialVersionUID = -8875067466181823014L; public InputStream getStream() { return kickstartService.getProcessImage(processDefinitionId); } }; } else if (kickstartWorkflow != null) { final ProcessDiagramGenerator converter = new ProcessDiagramGenerator(kickstartWorkflow, new MarshallingServiceImpl()); streamSource = new StreamSource() { private static final long serialVersionUID = 239500411112658830L; public InputStream getStream() { return converter.execute(); } }; } // resource must have unique id (or cache-crap can happen)! StreamResource imageresource = new StreamResource(streamSource,UUID.randomUUID() + ".png", KickstartApplication.get()); Panel panel = new Panel(); panel.setContent(new HorizontalLayout()); panel.setStyleName(Reindeer.PANEL_LIGHT); panel.setHeight("95%"); Embedded embedded = new Embedded("", imageresource); embedded.setType(Embedded.TYPE_IMAGE); panel.addComponent(embedded); addComponent(panel); } }