1
14package org.tp23.antinstaller.runtime.exe;
15
16import java.io.BufferedReader;
17import java.io.IOException;
18import java.io.InputStream;
19import java.io.InputStreamReader;
20import java.util.ResourceBundle;
21
22import org.tp23.antinstaller.InstallException;
23import org.tp23.antinstaller.InstallerContext;
24import org.tp23.antinstaller.input.OutputField;
25import org.tp23.antinstaller.renderer.text.Pager;
26import org.tp23.antinstaller.runtime.Runner;
27import org.tp23.antinstaller.runtime.SwingRunner;
28import org.tp23.antinstaller.runtime.TextRunner;
29
30
31
38public class ReleaseNotesFilter implements ExecuteFilter {
39
40 private static final ResourceBundle res = ResourceBundle.getBundle("org.tp23.antinstaller.renderer.text.Res");
41 private static final String nextChar = res.getString("nextChar");
42
43
46 public static final String RELEASE_NOTES_PROPERTY = "show.release.notes";
47
48 public ReleaseNotesFilter() {
49 }
50
51 public void exec(InstallerContext ctx) throws InstallException {
52 if(ctx.isInstallSucceded() ){
53 String showReleaseNotes = ctx.getInstaller().getResultContainer().getProperty(RELEASE_NOTES_PROPERTY);
54 if(OutputField.isTrue(showReleaseNotes)){
55 try {
56 InputStream is = ReleaseNotesFilter.class.getResourceAsStream("/release-notes.txt");
57 BufferedReader br = new BufferedReader(new InputStreamReader(is));
58 String line = null;
59 StringBuffer file = new StringBuffer();
60 while((line = br.readLine())!=null){
61 file.append(line).append('\n');
62 }
63 br.close();
64 Runner runner = ctx.getRunner();
65 if(runner instanceof TextRunner){
66 renderText(file.toString());
67
68 }
69 else{ ReleaseNotesFrame rFrame = new ReleaseNotesFrame("Readme");
72 rFrame.init(file.toString());
73 }
74 }
75 catch (IOException e) {
76 throw new InstallException("Could not render Release notes",e);
77 }
78 }
79 }
80 }
81
82 private void renderText(String text) throws IOException{
83 BufferedReader commandReader = new BufferedReader(new InputStreamReader(System.in));
84 Pager pager = new Pager(text);
85 String command = null;
86 do {
87 if (!pager.next(System.out)) {
88 break;
89 }
90 System.out.println();
91 System.out.println(getNextInstructions());
92 command = commandReader.readLine();
93 }
94 while (command.toUpperCase().startsWith(nextChar));
95 pager.rest(System.out);
96
97 }
98 private String getNextInstructions() {
99 return res.getString("large_select_next");
00 }
01
02}
03