/** * */ package de.jwic.demo.wizard; import java.io.StringReader; import java.io.StringWriter; import de.java2html.converter.JavaSource2HTMLConverter; import de.java2html.javasource.JavaSource; import de.java2html.javasource.JavaSourceParser; import de.java2html.options.JavaSourceConversionOptions; import de.jwic.base.ControlContainer; import de.jwic.base.IControlContainer; import de.jwic.controls.Label; import de.jwic.controls.RadioGroup; import de.jwic.controls.ScrollableContainer; import de.jwic.controls.wizard.ValidationException; import de.jwic.controls.wizard.WizardPage; import de.jwic.events.ElementSelectedEvent; import de.jwic.events.ElementSelectedListener; /** * This represents the last page of the wizard, that displays the generated files * and content. * * This page is demonstrating another way on how to refresh the content when the * page is activated after the user went back and forth. It is overriding the * activated method, to simply refresh the content whenever the page is activated * again. * * @author lippisch */ public class SummaryPage extends WizardPage { private WizardGeneratorModel model; private RadioGroup fileSelector; private Label lbContent; private ScrollableContainer viewer; /** * @param model * */ public SummaryPage(WizardGeneratorModel model) { this.model = model; setTitle("Summary"); setSubTitle("View the content of the generated files."); } /* (non-Javadoc) * @see de.jwic.controls.wizard.WizardPage#activated() */ @Override public void activated() { super.activated(); model.generateFiles(); fileSelector.clear(); for (GeneratedFile file : model.getGeneratedFiles()) { fileSelector.addElement(file.getFilename()); } } /* (non-Javadoc) * @see de.jwic.controls.wizard.WizardPage#createControls(de.jwic.base.IControlContainer) */ @Override public void createControls(IControlContainer container) { ControlContainer content = new ControlContainer(container); content.setTemplateName(getClass().getName()); fileSelector = new RadioGroup(content, "fileSelector"); fileSelector.setColumns(4); fileSelector.addElementSelectedListener(new ElementSelectedListener() { @Override public void elementSelected(ElementSelectedEvent event) { onFileSelection(); } }); viewer = new ScrollableContainer(content, "fileViewer"); viewer.setWidth("100%"); viewer.setHeight("300px"); lbContent = new Label(viewer, "content"); //lbContent.setStyle("font-family", "Courier"); //lbContent.setStyle("font-size", "10px"); } /** * */ protected void onFileSelection() { lbContent.setText(""); for (GeneratedFile file : model.getGeneratedFiles()) { if (fileSelector.getSelectedKey().equals(file.getFilename())) { updateViewer(file); break; } } } /** * @param file */ private void updateViewer(GeneratedFile file) { String htmlCode = ""; if (file.getFilename().endsWith(".java")) { try { StringReader reader = new StringReader(file.getContent()); JavaSource source = new JavaSourceParser().parse(reader); JavaSource2HTMLConverter converter = new JavaSource2HTMLConverter(); StringWriter writer = new StringWriter(); JavaSourceConversionOptions options = JavaSourceConversionOptions.getDefault(); //options.setShowLineNumbers(true); converter.convert(source, options, writer); htmlCode = writer.toString(); reader.close(); } catch (Exception e) { htmlCode = "Error creating html code: " + e; } } else { htmlCode = "<code><pre>" + file.getContent() + "</pre></code>"; } lbContent.setText(htmlCode); viewer.setTop(0); } /* (non-Javadoc) * @see de.jwic.controls.wizard.WizardPage#validate() */ @Override public boolean validate() throws ValidationException { return super.validate(); } }