[Japi-cvs] SF.net SVN: japi:[645] progs
Status: Beta
Brought to you by:
christianhujer
|
From: <chr...@us...> - 2008-10-06 12:42:56
|
Revision: 645
http://japi.svn.sourceforge.net/japi/?rev=645&view=rev
Author: christianhujer
Date: 2008-10-06 12:41:51 +0000 (Mon, 06 Oct 2008)
Log Message:
-----------
Added module for textedit prototype.
Added Paths:
-----------
progs/textedit/
progs/textedit/branches/
progs/textedit/tags/
progs/textedit/trunk/
progs/textedit/trunk/src/
progs/textedit/trunk/src/doc/
progs/textedit/trunk/src/prj/
progs/textedit/trunk/src/prj/net/
progs/textedit/trunk/src/prj/net/sf/
progs/textedit/trunk/src/prj/net/sf/japi/
progs/textedit/trunk/src/prj/net/sf/japi/progs/
progs/textedit/trunk/src/prj/net/sf/japi/progs/textedit/
progs/textedit/trunk/src/prj/net/sf/japi/progs/textedit/TextDocument.java
progs/textedit/trunk/src/prj/net/sf/japi/progs/textedit/TextEditApplication.java
progs/textedit/trunk/src/prj/net/sf/japi/progs/textedit/action.properties
progs/textedit/trunk/src/tst/
progs/textedit/trunk/textedit.iml
Added: progs/textedit/trunk/src/prj/net/sf/japi/progs/textedit/TextDocument.java
===================================================================
--- progs/textedit/trunk/src/prj/net/sf/japi/progs/textedit/TextDocument.java (rev 0)
+++ progs/textedit/trunk/src/prj/net/sf/japi/progs/textedit/TextDocument.java 2008-10-06 12:41:51 UTC (rev 645)
@@ -0,0 +1,57 @@
+package net.sf.japi.progs.textedit;
+
+import java.awt.Component;
+import javax.swing.JScrollPane;
+import javax.swing.JTextArea;
+import javax.swing.event.DocumentEvent;
+import javax.swing.event.DocumentListener;
+import javax.swing.text.PlainDocument;
+import net.sf.japi.swing.app.Document;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+/** A TextDocument ist a {@link Document} for {link PlainDocument} from Swing.
+ * It listens to the {@link DocumentEvent}s from Swing and changes the Document state accordingly.
+ * @author <a href="mailto:ch...@ri...">Christian Hujer</a>
+ */
+public class TextDocument extends Document<PlainDocument> implements DocumentListener {
+
+ /**
+ * Creates a Document.
+ * @param uri URI for this document.
+ * @param title Title for this document.
+ * @param data Data for this document.
+ */
+ public TextDocument(@Nullable final String uri, final String title, @NotNull final PlainDocument data) {
+ super(uri, title, data);
+ //noinspection ThisEscapedInObjectConstruction
+ data.addDocumentListener(this);
+ }
+
+ /** {@inheritDoc} */
+ @Override
+ protected Component createDocumentComponent() {
+ return new JScrollPane(new JTextArea(getData()));
+ }
+
+ /** {@inheritDoc} */
+ public void insertUpdate(final DocumentEvent e) {
+ if (e.getDocument() == getData()) {
+ setChanged(true);
+ }
+ }
+
+ /** {@inheritDoc} */
+ public void removeUpdate(final DocumentEvent e) {
+ if (e.getDocument() == getData()) {
+ setChanged(true);
+ }
+ }
+
+ /** {@inheritDoc} */
+ public void changedUpdate(final DocumentEvent e) {
+ if (e.getDocument() == getData()) {
+ setChanged(true);
+ }
+ }
+}
Property changes on: progs/textedit/trunk/src/prj/net/sf/japi/progs/textedit/TextDocument.java
___________________________________________________________________
Added: svn:mime-type
+ text/plain
Added: svn:eol-style
+ LF
Added: progs/textedit/trunk/src/prj/net/sf/japi/progs/textedit/TextEditApplication.java
===================================================================
--- progs/textedit/trunk/src/prj/net/sf/japi/progs/textedit/TextEditApplication.java (rev 0)
+++ progs/textedit/trunk/src/prj/net/sf/japi/progs/textedit/TextEditApplication.java 2008-10-06 12:41:51 UTC (rev 645)
@@ -0,0 +1,70 @@
+package net.sf.japi.progs.textedit;
+
+import java.io.BufferedReader;
+import java.io.BufferedWriter;
+import java.io.InputStreamReader;
+import java.io.OutputStreamWriter;
+import java.io.Reader;
+import java.io.Writer;
+import javax.swing.text.PlainDocument;
+import net.sf.japi.io.args.ArgParser;
+import net.sf.japi.swing.app.AppLaunchCommand;
+import net.sf.japi.swing.app.Application;
+import net.sf.japi.swing.app.Document;
+import org.jetbrains.annotations.NotNull;
+
+/**
+ * TODO
+ * @author <a href="mailto:ch...@ri...">Christian Hujer</a>
+ */
+public class TextEditApplication extends Application<PlainDocument> {
+
+ /** The default buffer size. */
+ private static final int BUF_SIZE = 8192;
+
+ /** Main program.
+ * @param args Command line arguments (try --help).
+ */
+ public static void main(final String... args) {
+ ArgParser.simpleParseAndRun(new AppLaunchCommand(TextEditApplication.class), args);
+ }
+
+ /** Creates a TextEditApplication. */
+ public TextEditApplication() {
+ }
+
+ /** {@inheritDoc} */
+ @Override
+ public void save(@NotNull final Document<PlainDocument> doc, @NotNull final String uri) throws Exception {
+ final Writer out = new BufferedWriter(new OutputStreamWriter(openUriForwriting(uri)));
+ final PlainDocument data = doc.getData();
+ out.write(data.getText(0, data.getLength()));
+ out.flush();
+ out.close();
+ }
+
+ /** {@inheritDoc} */
+ @Override
+ @NotNull public TextDocument load(@NotNull final String uri) throws Exception {
+ final StringBuilder sb = new StringBuilder();
+ final Reader in = new BufferedReader(new InputStreamReader(openUriForReading(uri)));
+ try {
+ final char[] buf = new char[BUF_SIZE];
+ for (int charsRead; (charsRead = in.read(buf)) != -1;) {
+ sb.append(buf, 0, charsRead);
+ }
+ } finally {
+ in.close();
+ }
+ final PlainDocument doc = new PlainDocument();
+ doc.insertString(0, sb.toString(), null);
+ return new TextDocument(uri, null, doc);
+ }
+
+ /** {@inheritDoc} */
+ @Override
+ @NotNull public TextDocument createNew() {
+ final PlainDocument doc = new PlainDocument();
+ return new TextDocument(null, null, doc);
+ }
+}
Property changes on: progs/textedit/trunk/src/prj/net/sf/japi/progs/textedit/TextEditApplication.java
___________________________________________________________________
Added: svn:mime-type
+ text/plain
Added: svn:eol-style
+ LF
Added: progs/textedit/trunk/src/prj/net/sf/japi/progs/textedit/action.properties
===================================================================
--- progs/textedit/trunk/src/prj/net/sf/japi/progs/textedit/action.properties (rev 0)
+++ progs/textedit/trunk/src/prj/net/sf/japi/progs/textedit/action.properties 2008-10-06 12:41:51 UTC (rev 645)
@@ -0,0 +1 @@
+application.title=TextEdit
Property changes on: progs/textedit/trunk/src/prj/net/sf/japi/progs/textedit/action.properties
___________________________________________________________________
Added: svn:mime-type
+ text/plain
Added: svn:eol-style
+ LF
Added: progs/textedit/trunk/textedit.iml
===================================================================
--- progs/textedit/trunk/textedit.iml (rev 0)
+++ progs/textedit/trunk/textedit.iml 2008-10-06 12:41:51 UTC (rev 645)
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<module relativePaths="true" type="JAVA_MODULE" version="4">
+ <component name="NewModuleRootManager" inherit-compiler-output="true">
+ <exclude-output />
+ <content url="file://$MODULE_DIR$">
+ <sourceFolder url="file://$MODULE_DIR$/src/doc" isTestSource="false" />
+ <sourceFolder url="file://$MODULE_DIR$/src/prj" isTestSource="false" />
+ <sourceFolder url="file://$MODULE_DIR$/src/tst" isTestSource="true" />
+ </content>
+ <orderEntry type="inheritedJdk" />
+ <orderEntry type="sourceFolder" forTests="false" />
+ <orderEntry type="library" name="annotations" level="project" />
+ <orderEntry type="library" name="junit" level="project" />
+ <orderEntry type="module" module-name="libs-argparser" />
+ <orderEntry type="module" module-name="libs-swing-app" />
+ <orderEntryProperties />
+ </component>
+</module>
+
Property changes on: progs/textedit/trunk/textedit.iml
___________________________________________________________________
Added: svn:mime-type
+ text/xml
Added: svn:eol-style
+ LF
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|