1 14 15 package desktop; 16 17 import org.wings.*; 18 import org.wings.event.SInternalFrameEvent; 19 import org.wings.event.SInternalFrameListener; 20 import org.wings.externalizer.AbstractExternalizeManager; 21 import org.wings.externalizer.ExternalizeManager; 22 import org.wings.io.Device; 23 import org.wings.resource.DynamicResource; 24 import org.wings.resource.FileResource; 25 import org.wings.script.JavaScriptListener; 26 import org.wings.script.ScriptListener; 27 import org.wings.session.SessionManager; 28 29 import java.awt.event.ActionEvent ; 30 import java.awt.event.ActionListener ; 31 import java.io.File ; 32 import java.io.FileOutputStream ; 33 import java.io.IOException ; 34 import java.io.PrintWriter ; 35 import java.util.HashMap ; 36 import java.util.Map ; 37 38 57 public class Editor 58 extends SInternalFrame 59 implements SInternalFrameListener 60 { 61 private DynamicResource saveResource; 62 private SMenuBar menuBar; 63 private SToolbar toolbar; 64 private STextArea textArea; 65 66 private String backup; 67 private String clip; 68 69 public Editor() { 70 menuBar = createMenu(); 71 SContainer contentPane = getContentPane(); 72 contentPane.setLayout(new SFlowDownLayout()); 73 contentPane.add(menuBar); 74 toolbar = createToolbar(); 75 76 textArea = new STextArea(); 77 textArea.setColumns(80); 78 textArea.setRows(24); 79 textArea.setPreferredSize(new SDimension("100%", null)); 80 81 SForm form = new SForm(new SFlowDownLayout()); 82 form.add(toolbar); 83 form.add(textArea); 84 contentPane.add(form); 85 86 saveResource = new EditorDynamicResource(); 87 88 SIcon icon = new SURLIcon("../icons/penguin.png"); 89 setIcon(icon); 90 addInternalFrameListener(this); 91 } 92 93 protected SMenuBar createMenu() { 94 SMenuItem saveItem = new SMenuItem("Save"); 95 saveItem.addActionListener(new ActionListener () { 96 public void actionPerformed(ActionEvent evt) { 97 save(); 98 } 99 }); 100 SMenuItem revertItem = new SMenuItem("Revert"); 101 revertItem.addActionListener(new ActionListener () { 102 public void actionPerformed(ActionEvent evt) { 103 revert(); 104 } 105 }); 106 SMenuItem closeItem = new SMenuItem("Close"); 107 closeItem.addActionListener(new ActionListener () { 108 public void actionPerformed(ActionEvent evt) { 109 close(); 110 } 111 }); 112 113 SMenu fileMenu = new SMenu("File"); 114 fileMenu.add(saveItem); 115 fileMenu.add(revertItem); 116 fileMenu.add(closeItem); 117 118 SMenuItem cutItem = new SMenuItem("Cut"); 119 cutItem.addActionListener(new ActionListener () { 120 public void actionPerformed(ActionEvent evt) { 121 cut(); 122 } 123 }); 124 SMenuItem copyItem = new SMenuItem("Copy"); 125 copyItem.addActionListener(new ActionListener () { 126 public void actionPerformed(ActionEvent evt) { 127 copy(); 128 } 129 }); 130 SMenuItem pasteItem = new SMenuItem("Paste"); 131 pasteItem.addActionListener(new ActionListener () { 132 public void actionPerformed(ActionEvent evt) { 133 paste(); 134 } 135 }); 136 137 SMenu editMenu = new SMenu("Edit"); 138 editMenu.add(cutItem); 139 editMenu.add(copyItem); 140 editMenu.add(pasteItem); 141 142 SMenuBar menuBar = new SMenuBar(); 143 menuBar.add(fileMenu); 144 menuBar.add(editMenu); 145 146 return menuBar; 147 } 148 149 protected SToolbar createToolbar() { 150 try { 151 SButton saveButton = new SButton(new SURLIcon("../icons/filesave.png")); 152 saveButton.setToolTipText("save"); 153 saveButton.addActionListener(new ActionListener () { 154 public void actionPerformed(ActionEvent evt) { 155 save(); 156 } 157 }); 158 159 SButton revertButton = new SButton(new SURLIcon("../icons/filerevert.png")); 160 revertButton.setToolTipText("revert"); 161 revertButton.addActionListener(new ActionListener () { 162 public void actionPerformed(ActionEvent evt) { 163 revert(); 164 } 165 }); 166 SButton closeButton = new SButton(new SURLIcon("../icons/fileclose.png")); 167 closeButton.setToolTipText("close"); 168 closeButton.addActionListener(new ActionListener () { 169 public void actionPerformed(ActionEvent evt) { 170 close(); 171 } 172 }); 173 174 SButton cutButton = new SButton(new SURLIcon("../icons/editcut.png")); 175 cutButton.setToolTipText("cut"); 176 cutButton.addActionListener(new ActionListener () { 177 public void actionPerformed(ActionEvent evt) { 178 cut(); 179 } 180 }); 181 SButton copyButton = new SButton(new SURLIcon("../icons/editcopy.png")); 182 copyButton.setToolTipText("copy"); 183 copyButton.addActionListener(new ActionListener () { 184 public void actionPerformed(ActionEvent evt) { 185 copy(); 186 } 187 }); 188 SButton pasteButton = new SButton(new SURLIcon("../icons/editpaste.png")); 189 pasteButton.setToolTipText("paste"); 190 pasteButton.addActionListener(new ActionListener () { 191 public void actionPerformed(ActionEvent evt) { 192 paste(); 193 } 194 }); 195 196 SToolbar toolbar = new SToolbar(); 197 toolbar.add(saveButton); 198 toolbar.add(revertButton); 199 toolbar.add(closeButton); 200 toolbar.add(new SLabel("<html> ")); 201 toolbar.add(cutButton); 202 toolbar.add(copyButton); 203 toolbar.add(pasteButton); 204 205 return toolbar; 206 } 207 catch (Exception e) { 208 System.err.println(e.getMessage()); 209 e.printStackTrace(System.err); 210 } 211 return new SToolbar(); 212 } 213 214 public void setText(String text) { 215 textArea.setText(text); 216 } 217 public String getText() { return textArea.getText(); } 218 219 public void setBackup(String backup) { 220 this.backup = backup; 221 } 222 public String getBackup() { return backup; } 223 224 public void save() { 225 try { 226 File file = File.createTempFile("wings", "txt"); 229 PrintWriter out = new PrintWriter (new FileOutputStream (file)); 230 out.print(textArea.getText()); 231 out.close(); 232 233 FileResource resource = new FileResource(file); 235 resource.setExternalizerFlags(resource.getExternalizerFlags() 237 | ExternalizeManager.REQUEST); 238 Map headers = new HashMap (); 240 headers.put("Content-Disposition", "attachment; filename=blub"); 241 resource.setHeaders(headers.entrySet()); 242 243 RequestURL url = (RequestURL) resource.getURL(); 246 url.addParameter("clear=X"); 247 248 final ScriptListener script = new JavaScriptListener("onload", "parent.location='" + url + "'"); 249 parentFrame.addScriptListener(script); 250 251 getSession().getDispatcher().register(new LowLevelEventListener() { 253 public void processLowLevelEvent(String name, String [] values) { 254 parentFrame.removeScriptListener(script); 256 } 257 258 public String getName() { return "clear"; } 259 260 public String getLowLevelEventId() { return ""; } 261 public String getEncodedLowLevelEventId() { return ""; } 262 263 public void fireIntermediateEvents() {} 264 public void fireFinalEvents() {} 265 public boolean isEnabled() { return true; } 266 267 public boolean checkEpoch() { 268 return true; 269 } 270 271 public boolean isEpochCheckEnabled() { return true; } 272 }); 273 274 } 275 catch (IOException e) { 276 System.err.println(e.getMessage()); 277 e.printStackTrace(System.err); 278 } 279 } 280 281 public void revert() { 282 textArea.setText(backup); 283 } 284 285 public void close() { 286 super.dispose(); 287 } 288 289 public void cut() { 290 clip = textArea.getText(); 291 textArea.setText(""); 292 } 293 294 public void copy() { 295 clip = textArea.getText(); 296 } 297 298 public void paste() { 299 if (clip != null) { 300 textArea.setText(textArea.getText() + clip); 301 } 302 } 303 304 public void internalFrameClosed(SInternalFrameEvent e) { 305 close(); 306 } 307 308 public void internalFrameOpened(SInternalFrameEvent e) {} 309 public void internalFrameIconified(SInternalFrameEvent e) {} 310 public void internalFrameDeiconified(SInternalFrameEvent e) {} 311 public void internalFrameMaximized(SInternalFrameEvent e) {} 312 public void internalFrameUnmaximized(SInternalFrameEvent e) {} 313 314 private class EditorDynamicResource extends DynamicResource 315 { 316 String id; 317 318 public EditorDynamicResource() { 319 super(null, "txt", "text/unknown"); 320 } 321 322 public void write(Device out) 323 throws IOException 324 { 325 out.print(textArea.getText()); 326 } 327 328 public String getId() { 329 if (id == null) { 330 ExternalizeManager ext = SessionManager.getSession().getExternalizeManager(); 331 Map headers = new HashMap (); 332 headers.put("Content-Disposition", "attachment; filename=blub"); 333 id = ext.getId(ext.externalize(this, headers.entrySet(), AbstractExternalizeManager.REQUEST)); 334 } 336 return id; 337 } 338 } 339 } 340 | Popular Tags |