package com.c2kernel.gui.tabs.outcome; import java.awt.Font; import java.awt.GridLayout; import java.io.File; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTextArea; import javax.swing.event.DocumentEvent; import javax.swing.event.DocumentListener; import javax.swing.text.PlainDocument; import com.c2kernel.utils.FileStringUtility; /************************************************************************** * * $Revision: 1.4 $ * $Date: 2005/09/07 13:46:31 $ * * Copyright (C) 2003 CERN - European Organization for Nuclear Research * All rights reserved. **************************************************************************/ public class BasicOutcomeEditor extends JPanel implements OutcomeHandler { PlainDocument doc; JTextArea textarea; boolean unsaved; public BasicOutcomeEditor() { super(); this.setLayout(new GridLayout(1,1)); doc = new PlainDocument(); textarea = new JTextArea(doc); textarea.setTabSize(2); textarea.setFont(Font.decode("monospaced")); add(new JScrollPane(textarea)); doc.addDocumentListener(new DocumentListener() { @Override public void changedUpdate(DocumentEvent e) { unsaved = true; } @Override public void insertUpdate(DocumentEvent e) { unsaved = true; } @Override public void removeUpdate(DocumentEvent e) { unsaved = true; } }); } @Override public void setOutcome(String outcome) throws InvalidOutcomeException { try { doc.insertString(0, outcome, null); unsaved = false; } catch (Exception ex) { throw new InvalidOutcomeException(ex.getMessage()); } } @Override public void setDescription(String description) throws InvalidSchemaException { } @Override public void setReadOnly(boolean readOnly) { textarea.setEditable(!readOnly); } @Override public JPanel getPanel() throws OutcomeNotInitialisedException { return this; } /** * */ @Override public String getOutcome() throws OutcomeException { if (doc.getLength()==0) return null; try { return doc.getText(0, doc.getLength()); } catch (Exception ex) { throw new OutcomeException(ex.getMessage()); } } /** * */ @Override public void run() { } @Override public boolean isUnsaved() { return unsaved; } @Override public void saved() { unsaved = false; } @Override public void export(File targetFile) throws Exception { FileStringUtility.string2File(targetFile, getOutcome()); } }