View Javadoc
1 // $Id: TemplateManager.java,v 1.1 2004/02/12 22:38:15 powerpete Exp $ 2 // [JMP, 09.02.2004] Created this file. 3 package org.jface.stepmt.demoapp.templates; 4 5 import java.awt.print.Pageable; 6 import java.io.BufferedInputStream; 7 import java.io.File; 8 import java.io.FileFilter; 9 import java.io.FileInputStream; 10 import java.io.IOException; 11 import java.io.InputStream; 12 import java.util.Collection; 13 import java.util.TreeSet; 14 15 import org.apache.commons.logging.Log; 16 import org.apache.commons.logging.LogFactory; 17 import org.jface.stepmt.demoapp.frames.EditorFrame; 18 import org.jface.stepmt.demoapp.frames.PreviewFrame; 19 import org.jface.stepmt.demoapp.menus.ExportMenu; 20 import org.jface.stepmt.transform.PrinterPipeline; 21 import org.jface.stepmt.transform.config.PipelineTemplate; 22 import org.xml.sax.SAXException; 23 24 /*** 25 * @author <a href="mailto:powerpete@users.sf.net">M. Petersen</a> 26 * @version $Id: TemplateManager.java,v 1.1 2004/02/12 22:38:15 powerpete Exp $ 27 */ 28 public class TemplateManager 29 { 30 private static final Log LOG = LogFactory.getLog(TemplateManager.class); 31 private static TemplateManager instance; 32 private Collection templates = new TreeSet(); 33 private static PipelineTemplate currentTemplate; 34 private static EditorFrame editorFrame; 35 private static PreviewFrame previewFrame; 36 private static Updater updater; 37 private String filename; 38 private ExportMenu exportMenu; 39 40 private TemplateManager() 41 { 42 File[] directories = new File("templates/").listFiles(new FileFilter() 43 { 44 public boolean accept(File file) 45 { 46 if (file.isDirectory()) 47 { 48 String name = createTemplateXmlFilename(file); 49 return new File(name).exists(); 50 } 51 return false; 52 } 53 }); 54 for (int i = 0; i < directories.length; i++) 55 { 56 loadTemplate(directories[i]); 57 } 58 } 59 60 private static String createTemplateXmlFilename(File directory) 61 { 62 return directory.getPath() + "/template.xml"; 63 } 64 65 private void loadTemplate(File dir) 66 { 67 InputStream in = null; 68 try 69 { 70 String filename = createTemplateXmlFilename(dir); 71 in = new BufferedInputStream(new FileInputStream(filename)); 72 PipelineTemplate template = new PipelineTemplate(in); 73 if (currentTemplate == null) 74 { 75 setCurrentTemplate(template); 76 } 77 templates.add(template); 78 } 79 catch (Exception e) 80 { 81 LOG.fatal("Error while loading template " + dir + ".", e); 82 } 83 finally 84 { 85 try 86 { 87 in.close(); 88 } 89 catch (IOException e) 90 {} 91 } 92 } 93 94 public static TemplateManager getInstance() 95 { 96 if (instance == null) 97 { 98 instance = new TemplateManager(); 99 } 100 return instance; 101 } 102 103 public Collection getTemplates() 104 { 105 return templates; 106 } 107 108 public void setCurrentTemplate(PipelineTemplate template) 109 { 110 TemplateManager.currentTemplate = template; 111 if (exportMenu != null) 112 { 113 exportMenu.setTemplate(template); 114 } 115 updatePreview(); 116 } 117 118 public void setEditor(EditorFrame editorFrame) 119 { 120 TemplateManager.editorFrame = editorFrame; 121 } 122 123 public void insertExampleText() 124 { 125 setEditorText(currentTemplate.getExample()); 126 } 127 128 public void setPreview(PreviewFrame previewFrame) 129 { 130 TemplateManager.previewFrame = previewFrame; 131 } 132 133 public void updatePreview() 134 { 135 if (updater == null) 136 { 137 updater = new Updater(); 138 updater.start(); 139 } 140 else 141 { 142 updater.refresh(); 143 } 144 } 145 146 private static class Updater extends Thread 147 { 148 private boolean isRunning; 149 private long stopMillis; 150 151 public Updater() 152 { 153 refresh(); 154 } 155 156 public void run() 157 { 158 while (System.currentTimeMillis() < stopMillis) 159 { 160 try 161 { 162 Thread.sleep(100); 163 } 164 catch (InterruptedException e) 165 { 166 LOG.fatal("Error while waiting for update.", e); 167 } 168 } 169 // TODO Move the transformation and "printing" code into another 170 // class. 171 PrinterPipeline printerPipeline = 172 currentTemplate.getPrinterPipeline(); 173 try 174 { 175 if (printerPipeline != null 176 && currentTemplate != null 177 && editorFrame != null) 178 { 179 printerPipeline.generate( 180 currentTemplate.getRegion(), 181 editorFrame.getText()); 182 } 183 } 184 catch (SAXException e) 185 { 186 LOG.fatal("Error while updating preview.", e); 187 } 188 Pageable pageable = printerPipeline.getPageable(); 189 if (previewFrame != null && pageable != null) 190 { 191 previewFrame.setPageable(pageable); 192 } 193 updater = null; 194 } 195 196 public void refresh() 197 { 198 stopMillis = System.currentTimeMillis() + 1000; 199 } 200 } 201 202 public String getFilename() 203 { 204 return filename; 205 } 206 207 public void clearEditor() 208 { 209 setEditorText(""); 210 filename = null; 211 } 212 213 public void setEditorText(String text, String filename) 214 { 215 if (text != null) 216 { 217 this.filename = filename; 218 } 219 setEditorText(text); 220 } 221 222 public void setEditorText(String text) 223 { 224 if (text != null) 225 { 226 editorFrame.setText(text); 227 updatePreview(); 228 } 229 } 230 231 public String getText() 232 { 233 return editorFrame.getText(); 234 } 235 236 public void setFilename(String filename) 237 { 238 this.filename = filename; 239 } 240 241 public PipelineTemplate getCurrentTemplate() 242 { 243 return currentTemplate; 244 } 245 246 public void templateHasChanged() 247 { 248 exportMenu.setTemplate(currentTemplate); 249 } 250 251 public void setExportMenu(ExportMenu exportMenu) 252 { 253 this.exportMenu = exportMenu; 254 exportMenu.setTemplate(currentTemplate); 255 } 256 }

This page was automatically generated by Maven