Thread: [Japi-cvs] SF.net SVN: japi:[641] progs
Status: Beta
                
                Brought to you by:
                
                    christianhujer
                    
                
            | 
      
      
      From: <chr...@us...> - 2008-10-06 12:31:49
       | 
| Revision: 641
          http://japi.svn.sourceforge.net/japi/?rev=641&view=rev
Author:   christianhujer
Date:     2008-10-06 12:31:46 +0000 (Mon, 06 Oct 2008)
Log Message:
-----------
Added module for CardLearn prototype.
Added Paths:
-----------
    progs/cardlearn/
    progs/cardlearn/branches/
    progs/cardlearn/tags/
    progs/cardlearn/trunk/
    progs/cardlearn/trunk/cardlearn.iml
    progs/cardlearn/trunk/src/
    progs/cardlearn/trunk/src/doc/
    progs/cardlearn/trunk/src/prj/
    progs/cardlearn/trunk/src/prj/net/
    progs/cardlearn/trunk/src/prj/net/sf/
    progs/cardlearn/trunk/src/prj/net/sf/japi/
    progs/cardlearn/trunk/src/prj/net/sf/japi/cardlearn/
    progs/cardlearn/trunk/src/prj/net/sf/japi/cardlearn/Card.java
    progs/cardlearn/trunk/src/prj/net/sf/japi/cardlearn/CardDatabase.java
    progs/cardlearn/trunk/src/prj/net/sf/japi/cardlearn/CardDatabaseConfig.java
    progs/cardlearn/trunk/src/prj/net/sf/japi/cardlearn/CardDatabaseConfigEditor.java
    progs/cardlearn/trunk/src/tst/
    progs/cardlearn/trunk/src/tst/test/
    progs/cardlearn/trunk/src/tst/test/net/
    progs/cardlearn/trunk/src/tst/test/net/sf/
    progs/cardlearn/trunk/src/tst/test/net/sf/japi/
    progs/cardlearn/trunk/src/tst/test/net/sf/japi/cardlearn/
    progs/cardlearn/trunk/src/tst/test/net/sf/japi/cardlearn/TestCard.java
    progs/cardlearn/trunk/src/tst/test/net/sf/japi/cardlearn/TestCardConfiguration.java
Added: progs/cardlearn/trunk/cardlearn.iml
===================================================================
--- progs/cardlearn/trunk/cardlearn.iml	                        (rev 0)
+++ progs/cardlearn/trunk/cardlearn.iml	2008-10-06 12:31:46 UTC (rev 641)
@@ -0,0 +1,17 @@
+<?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" />
+    <orderEntryProperties />
+  </component>
+</module>
+
Property changes on: progs/cardlearn/trunk/cardlearn.iml
___________________________________________________________________
Added: svn:mime-type
   + text/xml
Added: svn:eol-style
   + LF
Added: progs/cardlearn/trunk/src/prj/net/sf/japi/cardlearn/Card.java
===================================================================
--- progs/cardlearn/trunk/src/prj/net/sf/japi/cardlearn/Card.java	                        (rev 0)
+++ progs/cardlearn/trunk/src/prj/net/sf/japi/cardlearn/Card.java	2008-10-06 12:31:46 UTC (rev 641)
@@ -0,0 +1,20 @@
+package net.sf.japi.cardlearn;
+
+import java.io.Serializable;
+
+/**
+ * Class Description.
+ * @author <a href="mailto:ch...@ri...">Christian Hujer</a>
+ */
+public class Card implements Serializable {
+
+    private final String[] fieldContents = new String[6];
+
+    public void setField(final int fieldIndex, final String fieldContent) {
+        fieldContents[fieldIndex] = fieldContent;
+    }
+
+    public String getField(final int fieldIndex) {
+        return fieldContents[fieldIndex];
+    }
+}
Property changes on: progs/cardlearn/trunk/src/prj/net/sf/japi/cardlearn/Card.java
___________________________________________________________________
Added: svn:mime-type
   + text/plain
Added: svn:eol-style
   + LF
Added: progs/cardlearn/trunk/src/prj/net/sf/japi/cardlearn/CardDatabase.java
===================================================================
--- progs/cardlearn/trunk/src/prj/net/sf/japi/cardlearn/CardDatabase.java	                        (rev 0)
+++ progs/cardlearn/trunk/src/prj/net/sf/japi/cardlearn/CardDatabase.java	2008-10-06 12:31:46 UTC (rev 641)
@@ -0,0 +1,12 @@
+package net.sf.japi.cardlearn;
+
+/** Provides Access to a Card Database.
+ * @author <a href="mailto:ch...@ri...">Christian Hujer</a>
+ */
+public interface CardDatabase {
+
+    /** Returns the configuration of this CardDatabase.
+     * @return The configuration of this CardDatabase.
+     */
+    CardDatabaseConfig getConfiguration();
+}
Property changes on: progs/cardlearn/trunk/src/prj/net/sf/japi/cardlearn/CardDatabase.java
___________________________________________________________________
Added: svn:mime-type
   + text/plain
Added: svn:eol-style
   + LF
Added: progs/cardlearn/trunk/src/prj/net/sf/japi/cardlearn/CardDatabaseConfig.java
===================================================================
--- progs/cardlearn/trunk/src/prj/net/sf/japi/cardlearn/CardDatabaseConfig.java	                        (rev 0)
+++ progs/cardlearn/trunk/src/prj/net/sf/japi/cardlearn/CardDatabaseConfig.java	2008-10-06 12:31:46 UTC (rev 641)
@@ -0,0 +1,32 @@
+package net.sf.japi.cardlearn;
+
+import java.io.Serializable;
+
+/** The Configuration of a CardDatabase.
+ * @author <a href="mailto:ch...@ri...">Christian Hujer</a>
+ */
+public class CardDatabaseConfig implements Serializable {
+
+    private String[] fieldNames = new String[6];
+
+    /** Creates a CardDatabaseConfig.
+     */
+    public CardDatabaseConfig() {
+    }
+
+    /** Sets the name of the specified field.
+     * @param fieldIndex Index of the field of which to set the name.
+     * @param fieldName Fieldname.
+     */
+    public void setFieldname(final int fieldIndex, final String fieldName) {
+        fieldNames[fieldIndex] = fieldName;
+    }
+
+    /** Returns the name of the specified field.
+     * @param fieldIndex Index of the field of which to return the name.
+     * @return The name of the specified field.
+     */
+    public String getFieldname(final int fieldIndex) {
+        return fieldNames[fieldIndex];
+    }
+}
Property changes on: progs/cardlearn/trunk/src/prj/net/sf/japi/cardlearn/CardDatabaseConfig.java
___________________________________________________________________
Added: svn:mime-type
   + text/plain
Added: svn:eol-style
   + LF
Added: progs/cardlearn/trunk/src/prj/net/sf/japi/cardlearn/CardDatabaseConfigEditor.java
===================================================================
--- progs/cardlearn/trunk/src/prj/net/sf/japi/cardlearn/CardDatabaseConfigEditor.java	                        (rev 0)
+++ progs/cardlearn/trunk/src/prj/net/sf/japi/cardlearn/CardDatabaseConfigEditor.java	2008-10-06 12:31:46 UTC (rev 641)
@@ -0,0 +1,62 @@
+package net.sf.japi.cardlearn;
+
+import java.awt.Component;
+import java.awt.GridLayout;
+import javax.swing.JComponent;
+import javax.swing.JLabel;
+import javax.swing.JOptionPane;
+import javax.swing.JTextField;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+/** The CardDatabaseConfigEditor allows editing a CardDatabaseConfig.
+ * @author <a href="mailto:ch...@ri...">Christian Hujer</a>
+ */
+public class CardDatabaseConfigEditor extends JComponent {
+
+    /** The CardDatabaseConfig to edit. */
+    private CardDatabaseConfig config;
+
+    /** The labels for the fields. */
+    private JLabel[] labels = new JLabel[6];
+
+    /** The textfields for the fields. */
+    private JTextField[] fields = new JTextField[6];
+
+    /** Creates a CardDatabaseConfigEditor.
+     * @param config CardDatabaseConfiguration to edit.
+     */
+    private CardDatabaseConfigEditor(final CardDatabaseConfig config) {
+        this.config = config;
+        setLayout(new GridLayout(6, 2));
+        for (int i = 0; i < 6; i++) {
+            labels[i] = new JLabel("Field " + i + ": ");
+            fields[i] = new JTextField(config.getFieldname(i));
+            add(labels[i]);
+            add(fields[i]);
+        }
+    }
+
+    /** Updates the config from the editor values. */
+    private void updateValues() {
+        for (int i = 0; i < 6; i++) {
+            config.setFieldname(i, fields[i].getText());
+        }
+    }
+
+    /** Displays a dialog for editing a CardDatabaseConfig.
+     * @param parent Parent component on which to show the editor.
+     * @param config Configuration to edit.
+     * @return edited configuration (same object as <var>config</var>) or <code>null</code> if the dialog was cancelled, in which case <var>config</var> is unchanged.
+     */
+    public static CardDatabaseConfig showConfigEditor(@Nullable final Component parent, @NotNull final CardDatabaseConfig config) {
+        final CardDatabaseConfigEditor editor = new CardDatabaseConfigEditor(config);
+        final int returnValue = JOptionPane.showConfirmDialog(parent, editor, "XXX", JOptionPane.OK_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE);
+        if (returnValue == JOptionPane.OK_OPTION) {
+            editor.updateValues();
+            return config;
+        }
+        return null;
+    }
+
+}
Property changes on: progs/cardlearn/trunk/src/prj/net/sf/japi/cardlearn/CardDatabaseConfigEditor.java
___________________________________________________________________
Added: svn:mime-type
   + text/plain
Added: svn:eol-style
   + LF
Added: progs/cardlearn/trunk/src/tst/test/net/sf/japi/cardlearn/TestCard.java
===================================================================
--- progs/cardlearn/trunk/src/tst/test/net/sf/japi/cardlearn/TestCard.java	                        (rev 0)
+++ progs/cardlearn/trunk/src/tst/test/net/sf/japi/cardlearn/TestCard.java	2008-10-06 12:31:46 UTC (rev 641)
@@ -0,0 +1,23 @@
+package test.net.sf.japi.cardlearn;
+
+import net.sf.japi.cardlearn.Card;
+import org.junit.Assert;
+import org.junit.Test;
+
+/**
+ * Class Description.
+ * @author <a href="mailto:ch...@ri...">Christian Hujer</a>
+ */
+public class TestCard {
+
+    @Test
+    public void testFields() {
+        final Card card = new Card();
+        for (int i = 0; i < 6; i++) {
+            final String testValue = "foo" + i;
+            Assert.assertFalse(testValue.equals(card.getField(i)));
+            card.setField(i, testValue);
+            Assert.assertEquals(card.getField(i), testValue);
+        }
+    }
+}
Property changes on: progs/cardlearn/trunk/src/tst/test/net/sf/japi/cardlearn/TestCard.java
___________________________________________________________________
Added: svn:mime-type
   + text/plain
Added: svn:eol-style
   + LF
Added: progs/cardlearn/trunk/src/tst/test/net/sf/japi/cardlearn/TestCardConfiguration.java
===================================================================
--- progs/cardlearn/trunk/src/tst/test/net/sf/japi/cardlearn/TestCardConfiguration.java	                        (rev 0)
+++ progs/cardlearn/trunk/src/tst/test/net/sf/japi/cardlearn/TestCardConfiguration.java	2008-10-06 12:31:46 UTC (rev 641)
@@ -0,0 +1,23 @@
+package test.net.sf.japi.cardlearn;
+
+import net.sf.japi.cardlearn.CardDatabaseConfig;
+import org.junit.Assert;
+import org.junit.Test;
+
+/**
+ * Class Description.
+ * @author <a href="mailto:ch...@ri...">Christian Hujer</a>
+ */
+public class TestCardConfiguration {
+
+    @Test
+    public void testSetFieldname() {
+        final CardDatabaseConfig card = new CardDatabaseConfig();
+        for (int i = 0; i < 6; i++) {
+            final String testValue = "foo" + i;
+            Assert.assertFalse(testValue.equals(card.getFieldname(i)));
+            card.setFieldname(i, testValue);
+            Assert.assertEquals(card.getFieldname(i), testValue);
+        }
+    }
+}
Property changes on: progs/cardlearn/trunk/src/tst/test/net/sf/japi/cardlearn/TestCardConfiguration.java
___________________________________________________________________
Added: svn:mime-type
   + text/plain
Added: svn:eol-style
   + LF
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
 | 
| 
      
      
      From: <chr...@us...> - 2008-10-06 12:36:25
       | 
| Revision: 642
          http://japi.svn.sourceforge.net/japi/?rev=642&view=rev
Author:   christianhujer
Date:     2008-10-06 12:36:01 +0000 (Mon, 06 Oct 2008)
Log Message:
-----------
Added module for batcher prototype.
Added Paths:
-----------
    progs/batcher/
    progs/batcher/trunk/
    progs/batcher/trunk/Batcher.iml
    progs/batcher/trunk/src/
    progs/batcher/trunk/src/net/
    progs/batcher/trunk/src/net/sf/
    progs/batcher/trunk/src/net/sf/japi/
    progs/batcher/trunk/src/net/sf/japi/progs/
    progs/batcher/trunk/src/net/sf/japi/progs/batcher/
    progs/batcher/trunk/src/net/sf/japi/progs/batcher/Main.java
    progs/batcher/trunk/src/net/sf/japi/progs/batcher/action.properties
Added: progs/batcher/trunk/Batcher.iml
===================================================================
--- progs/batcher/trunk/Batcher.iml	                        (rev 0)
+++ progs/batcher/trunk/Batcher.iml	2008-10-06 12:36:01 UTC (rev 642)
@@ -0,0 +1,18 @@
+<?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" isTestSource="false" />
+    </content>
+    <orderEntry type="inheritedJdk" />
+    <orderEntry type="sourceFolder" forTests="false" />
+    <orderEntry type="library" name="annotations" level="project" />
+    <orderEntry type="library" name="jlfgr-1_0" level="project" />
+    <orderEntry type="library" name="junit" level="project" />
+    <orderEntry type="module" module-name="libs-swing-about" />
+    <orderEntry type="module" module-name="libs-swing-action" />
+    <orderEntryProperties />
+  </component>
+</module>
+
Property changes on: progs/batcher/trunk/Batcher.iml
___________________________________________________________________
Added: svn:mime-type
   + text/xml
Added: svn:eol-style
   + LF
Added: progs/batcher/trunk/src/net/sf/japi/progs/batcher/Main.java
===================================================================
--- progs/batcher/trunk/src/net/sf/japi/progs/batcher/Main.java	                        (rev 0)
+++ progs/batcher/trunk/src/net/sf/japi/progs/batcher/Main.java	2008-10-06 12:36:01 UTC (rev 642)
@@ -0,0 +1,66 @@
+package net.sf.japi.progs.batcher;
+
+import java.awt.Frame;
+import java.awt.Toolkit;
+import java.awt.event.WindowAdapter;
+import java.awt.event.WindowEvent;
+import javax.swing.JFrame;
+import javax.swing.WindowConstants;
+import net.sf.japi.swing.ActionBuilder;
+import net.sf.japi.swing.ActionBuilderFactory;
+import net.sf.japi.swing.ActionMethod;
+import org.jetbrains.annotations.NotNull;
+
+/** Main class of Batcher
+ * @author <a href="mailto:ch...@ri...">Christian Hujer</a>
+ */
+public class Main {
+
+    /** Action Builder. */
+    @NotNull
+    private static final ActionBuilder actionBuilder = ActionBuilderFactory.getInstance().getActionBuilder(Main.class);
+
+    /**
+     * Main program.
+     * @param args Command line arguments (ignored).
+     */
+    public static void main(final String... args){
+        new Main();
+    }
+
+    /** The program frame. */
+    private final JFrame frame;
+
+    /** Creates Main. */
+    public Main() {
+        frame = new JFrame(actionBuilder.getString("window.title"));
+        frame.setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);
+        frame.setJMenuBar(actionBuilder.createMenuBar(true, "Main", this));
+        frame.setSize(Toolkit.getDefaultToolkit().getScreenSize());
+        frame.setExtendedState(Frame.MAXIMIZED_BOTH);
+        frame.addWindowListener(new WindowAdapter() {
+            @Override
+            public void windowClosing(final WindowEvent e) {
+                quit();
+            }
+        });
+        frame.setVisible(true);
+    }
+
+    /** Quits the program. */
+    @ActionMethod
+    public void quit() {
+        if (isQuitRequested()) {
+            frame.setVisible(false);
+            frame.dispose();
+        }
+    }
+
+    /** Asks whether quitting is requested.
+     * @return <code>true</code> if quitting is requested, otherwise <code>false</code>.
+     */
+    public boolean isQuitRequested() {
+        return actionBuilder.showQuestionDialog(frame, "reallyQuit");
+    }
+
+} // class Main
Property changes on: progs/batcher/trunk/src/net/sf/japi/progs/batcher/Main.java
___________________________________________________________________
Added: svn:mime-type
   + text/plain
Added: svn:eol-style
   + LF
Added: progs/batcher/trunk/src/net/sf/japi/progs/batcher/action.properties
===================================================================
--- progs/batcher/trunk/src/net/sf/japi/progs/batcher/action.properties	                        (rev 0)
+++ progs/batcher/trunk/src/net/sf/japi/progs/batcher/action.properties	2008-10-06 12:36:01 UTC (rev 642)
@@ -0,0 +1,9 @@
+window.title=Batcher
+Main.menubar=file
+file.menu=quit
+file.text=File
+file.mnemonic=F
+quit.text=Quit
+quit.mnemonic=Q
+reallyQuit.message=Do you really want to quit this program?
+reallyQuit.title=Quit Batcher
Property changes on: progs/batcher/trunk/src/net/sf/japi/progs/batcher/action.properties
___________________________________________________________________
Added: svn:mime-type
   + text/plain
Added: svn:eol-style
   + LF
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
 | 
| 
      
      
      From: <chr...@us...> - 2008-10-06 12:41:04
       | 
| Revision: 644
          http://japi.svn.sourceforge.net/japi/?rev=644&view=rev
Author:   christianhujer
Date:     2008-10-06 12:40:15 +0000 (Mon, 06 Oct 2008)
Log Message:
-----------
Added module for jhexview prototype.
Added Paths:
-----------
    progs/jhexview/
    progs/jhexview/branches/
    progs/jhexview/tags/
    progs/jhexview/trunk/
    progs/jhexview/trunk/jhexview.iml
    progs/jhexview/trunk/src/
    progs/jhexview/trunk/src/doc/
    progs/jhexview/trunk/src/prj/
    progs/jhexview/trunk/src/prj/net/
    progs/jhexview/trunk/src/prj/net/sf/
    progs/jhexview/trunk/src/prj/net/sf/japi/
    progs/jhexview/trunk/src/prj/net/sf/japi/progs/
    progs/jhexview/trunk/src/prj/net/sf/japi/progs/jhexview/
    progs/jhexview/trunk/src/prj/net/sf/japi/progs/jhexview/HexViewPane.java
    progs/jhexview/trunk/src/prj/net/sf/japi/progs/jhexview/JHexViewApplication.java
    progs/jhexview/trunk/src/prj/net/sf/japi/progs/jhexview/action.properties
    progs/jhexview/trunk/src/tst/
Added: progs/jhexview/trunk/jhexview.iml
===================================================================
--- progs/jhexview/trunk/jhexview.iml	                        (rev 0)
+++ progs/jhexview/trunk/jhexview.iml	2008-10-06 12:40:15 UTC (rev 644)
@@ -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/jhexview/trunk/jhexview.iml
___________________________________________________________________
Added: svn:mime-type
   + text/xml
Added: svn:eol-style
   + LF
Added: progs/jhexview/trunk/src/prj/net/sf/japi/progs/jhexview/HexViewPane.java
===================================================================
--- progs/jhexview/trunk/src/prj/net/sf/japi/progs/jhexview/HexViewPane.java	                        (rev 0)
+++ progs/jhexview/trunk/src/prj/net/sf/japi/progs/jhexview/HexViewPane.java	2008-10-06 12:40:15 UTC (rev 644)
@@ -0,0 +1,66 @@
+package net.sf.japi.progs.jhexview;
+
+import java.awt.BorderLayout;
+import java.util.Formatter;
+import javax.swing.JPanel;
+import javax.swing.JScrollPane;
+import javax.swing.JTextArea;
+
+/** Component for viewing binary data.
+ * @author <a href="mailto:ch...@ri...">Christian Hujer</a>
+ */
+public class HexViewPane extends JPanel {
+
+
+    /** The data to show. */
+    private byte[] data;
+
+    /** The columns to show. */
+    private int cols = 16;
+
+    /** The rows to show. */
+    private int rows;
+
+    /** The TextArea that displays the hex info. */
+    private JTextArea textArea = new JTextArea(25, cols * 4 + 8);
+
+    /** Creates a HexViewPane.
+     * The data is referenced, not copied.
+     * Changes to the array will write through to the HexViewPane and vice versa.
+     * @param data Data to view.
+     */
+    public HexViewPane(final byte[] data) {
+        setLayout(new BorderLayout());
+        textArea.setEditable(false);
+        add(new JScrollPane(textArea));
+        this.data = data;
+        rows = (data.length + cols - 1) / cols;
+        updateData();
+    }
+
+    /** Updates the data. */
+    private void updateData() {
+        final Formatter format = new Formatter();
+        for (int i = 0; i < rows; i++) {
+            format.format("%08x  ", i * cols);
+            for (int j = 0; j < cols; j++) {
+                final int offset = i * cols + j;
+                if (offset < data.length) {
+                    format.format("%02x ", data[offset]);
+                } else {
+                    format.format("   ");
+                }
+            }
+            for (int j = 0; j < cols; j++) {
+                final int offset = i * cols + j;
+                if (offset < data.length) {
+                    format.format(" %c", (char) data[offset]);
+                } else {
+                    format.format("  ");
+                }
+            }
+            format.format("\n");
+        }
+        textArea.setText(format.toString());
+    }
+}
Property changes on: progs/jhexview/trunk/src/prj/net/sf/japi/progs/jhexview/HexViewPane.java
___________________________________________________________________
Added: svn:mime-type
   + text/plain
Added: svn:eol-style
   + LF
Added: progs/jhexview/trunk/src/prj/net/sf/japi/progs/jhexview/JHexViewApplication.java
===================================================================
--- progs/jhexview/trunk/src/prj/net/sf/japi/progs/jhexview/JHexViewApplication.java	                        (rev 0)
+++ progs/jhexview/trunk/src/prj/net/sf/japi/progs/jhexview/JHexViewApplication.java	2008-10-06 12:40:15 UTC (rev 644)
@@ -0,0 +1,42 @@
+package net.sf.japi.progs.jhexview;
+
+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 JHexViewApplication extends Application<byte[]> {
+
+    /** Main program.
+     * @param args Command line arguments (try --help).
+     */
+    public static void main(final String... args) {
+        ArgParser.simpleParseAndRun(new AppLaunchCommand(JHexViewApplication.class), args);
+    }
+
+    /** Creates a JHexViewApplication. */
+    public JHexViewApplication() {
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void save(@NotNull final Document<byte[]> doc, @NotNull final String uri) {
+        //To change body of implemented methods use File | Settings | File Templates.
+        // TODO
+    }
+
+    public Document<byte[]> createNew() {
+        return null;//To change body of implemented methods use File | Settings | File Templates.
+    }
+
+    /** {@inheritDoc} */
+    @NotNull
+    public Document<byte[]> load(@NotNull final String uri) {
+        throw new UnsupportedOperationException();
+    }
+}
Property changes on: progs/jhexview/trunk/src/prj/net/sf/japi/progs/jhexview/JHexViewApplication.java
___________________________________________________________________
Added: svn:mime-type
   + text/plain
Added: svn:eol-style
   + LF
Added: progs/jhexview/trunk/src/prj/net/sf/japi/progs/jhexview/action.properties
===================================================================
--- progs/jhexview/trunk/src/prj/net/sf/japi/progs/jhexview/action.properties	                        (rev 0)
+++ progs/jhexview/trunk/src/prj/net/sf/japi/progs/jhexview/action.properties	2008-10-06 12:40:15 UTC (rev 644)
@@ -0,0 +1 @@
+application.title=JHexView
Property changes on: progs/jhexview/trunk/src/prj/net/sf/japi/progs/jhexview/action.properties
___________________________________________________________________
Added: svn:mime-type
   + text/plain
Added: svn:eol-style
   + LF
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
 | 
| 
      
      
      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.
 | 
| 
      
      
      From: <chr...@us...> - 2008-10-06 12:45:40
       | 
| Revision: 647
          http://japi.svn.sourceforge.net/japi/?rev=647&view=rev
Author:   christianhujer
Date:     2008-10-06 12:44:39 +0000 (Mon, 06 Oct 2008)
Log Message:
-----------
Added module for jtype prototype.
Added Paths:
-----------
    progs/jtype/
    progs/jtype/branches/
    progs/jtype/tags/
    progs/jtype/trunk/
    progs/jtype/trunk/jtype.iml
    progs/jtype/trunk/src/
    progs/jtype/trunk/src/doc/
    progs/jtype/trunk/src/prj/
    progs/jtype/trunk/src/prj/net/
    progs/jtype/trunk/src/prj/net/sf/
    progs/jtype/trunk/src/prj/net/sf/japi/
    progs/jtype/trunk/src/prj/net/sf/japi/jtype/
    progs/jtype/trunk/src/prj/net/sf/japi/jtype/Helper.java
    progs/jtype/trunk/src/prj/net/sf/japi/jtype/JType.java
    progs/jtype/trunk/src/prj/net/sf/japi/jtype/PerformancePane.java
    progs/jtype/trunk/src/prj/net/sf/japi/jtype/ReflectionField.java
    progs/jtype/trunk/src/prj/net/sf/japi/jtype/action.properties
    progs/jtype/trunk/src/tst/
Added: progs/jtype/trunk/jtype.iml
===================================================================
--- progs/jtype/trunk/jtype.iml	                        (rev 0)
+++ progs/jtype/trunk/jtype.iml	2008-10-06 12:44:39 UTC (rev 647)
@@ -0,0 +1,18 @@
+<?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-swing-action" />
+    <orderEntryProperties />
+  </component>
+</module>
+
Property changes on: progs/jtype/trunk/jtype.iml
___________________________________________________________________
Added: svn:mime-type
   + text/xml
Added: svn:eol-style
   + LF
Added: progs/jtype/trunk/src/prj/net/sf/japi/jtype/Helper.java
===================================================================
--- progs/jtype/trunk/src/prj/net/sf/japi/jtype/Helper.java	                        (rev 0)
+++ progs/jtype/trunk/src/prj/net/sf/japi/jtype/Helper.java	2008-10-06 12:44:39 UTC (rev 647)
@@ -0,0 +1,113 @@
+package net.sf.japi.jtype;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.Random;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+/** Utility methods for Strings.
+ * @author <a href="mailto:ch...@ri...">Christian Hujer</a>
+ */
+// mögliche Suchstrategien:
+// - RE1 (alte und neue Buchstaben) passt
+// - RE1 (alte und neue Buchstaben) passt, RE2 (nur alte Buchstaben) passt nicht
+// - Buchstabenkombinationen
+public class Helper {
+
+    /** Utility class - do not instanciate. */
+    private Helper() {
+    }
+
+    /** Returns all strings that match a specific regular expression but not a second one.
+     * @param match regular expression pattern.
+     * @param nomatch regular expression pattern.
+     * @param strings Strings to search.
+     * @return All strings that match the pattern specified by match but do not match the pattern specified by nomatch.
+     */
+    public static List<String> find(@NotNull final Pattern match, @Nullable final Pattern nomatch, @NotNull final Iterable<String> strings) {
+        final List<String> found = new ArrayList<String>();
+        final Matcher m1 = match.matcher("");
+        final Matcher m2 = nomatch != null ? nomatch.matcher("") : null;
+        for (final String s : strings) {
+            if (m1.reset(s).matches() && (m2 == null || !m2.reset(s).matches())) {
+                found.add(s);
+            }
+        }
+        return found;
+    }
+
+    /** Returns all strings that match a specific regular expression but not a second one.
+     * @param match regular expression.
+     * @param nomatch regular expression.
+     * @param strings Strings to search.
+     * @return All strings that match the regular expression specified by match but do not match the regular expression specified by nomatch.
+     */
+    public static List<String> find(@NotNull final String match, @Nullable final String nomatch, @NotNull final Iterable<String> strings) {
+        return find(Pattern.compile(match), nomatch != null ? Pattern.compile(nomatch) : null, strings);
+    }
+
+    /** Returns all Strings from the aspell master.
+     * @return List with all words from the aspell master.
+     */
+    @NotNull public static List<String> getAspellMaster() {
+        return executeAndGetLines("aspell dump master");
+    }
+
+    /** Returns all Strings from the aspell master.
+     * @param language Language for which the aspell master shall be retrieved.
+     * @return List with all words from the aspell master in the specified language.
+     */
+    public static List<String> getAspellMaster(@NotNull final String language) {
+        if (!language.matches("^[a-zA-Z_]{2,10}$")) {
+            throw new IllegalArgumentException("Illegal language");
+        }
+        return executeAndGetLines("aspell -l " + language + " dump master");
+    }
+
+    /** Returns the output from executing a command.
+     * @param command Command to execute.
+     * @return The output of the executed command, line by line )without trailing newline character).
+     */
+    public static List<String> executeAndGetLines(@NotNull final String command) {
+        final Runtime runtime = Runtime.getRuntime();
+        try {
+            final Process process = runtime.exec(command);
+            final List<String> lines = new ArrayList<String>();
+            final BufferedReader in = new BufferedReader(new InputStreamReader(process.getInputStream()));
+            for (String line; (line = in.readLine()) != null; ) {
+                lines.add(line);
+            }
+            return lines;
+        } catch (final IOException e) {
+            e.printStackTrace();
+            return Collections.EMPTY_LIST;
+        }
+    }
+
+    /** Main program.
+     * @param args Command line arguments (try --help).
+     */
+    public static void main(@NotNull final String... args) {
+        for (final String word : find("[eidrEIDR]+", null, getAspellMaster())) {
+            System.out.println(word);
+        }
+    }
+
+    /** Random number generator. */
+    private static Random random = new Random();
+
+    /** Returns a random String from a List of Strings.
+     * @param strings List from which a random String shall be returned.
+     * @return A random String from that List.
+     */
+    public static String random(@NotNull final List<String> strings) {
+        return strings.get(random.nextInt(strings.size()));
+    }
+}
Property changes on: progs/jtype/trunk/src/prj/net/sf/japi/jtype/Helper.java
___________________________________________________________________
Added: svn:mime-type
   + text/plain
Added: svn:eol-style
   + LF
Added: progs/jtype/trunk/src/prj/net/sf/japi/jtype/JType.java
===================================================================
--- progs/jtype/trunk/src/prj/net/sf/japi/jtype/JType.java	                        (rev 0)
+++ progs/jtype/trunk/src/prj/net/sf/japi/jtype/JType.java	2008-10-06 12:44:39 UTC (rev 647)
@@ -0,0 +1,90 @@
+package net.sf.japi.jtype;
+
+import java.awt.BorderLayout;
+import java.awt.Font;
+import java.awt.event.WindowEvent;
+import java.awt.event.WindowListener;
+import javax.swing.JApplet;
+import javax.swing.JFrame;
+import javax.swing.JScrollPane;
+import javax.swing.JTextArea;
+import org.jetbrains.annotations.NotNull;
+
+/** JType is a program that measures the speed of typing.
+ * @author <a href="mailto:ch...@ri...">Christian Hujer</a>
+ */
+// TODO:cher:More detailled statistics.
+// TODO:cher:Excercise texts.
+// TODO:cher:Statistics about which characters were mistyped most frequently.
+// TODO:cher:Show keyboard layout.
+// TODO:cher:Make time at which a pause is detected configurable. Maybe use that time for the first char.
+// TODO:cher:Split statistics into recent (e.g. last line, 100 chars), session, day, week and all time.
+// TODO:cher:Per-char-statistics.
+// TODO;cher:Statistics about which character combinations.
+// TODO:cher:Use aspell to generate random word lists automatically.
+public class JType extends JApplet implements WindowListener {
+
+    /** The program frame. */
+    private static JFrame frame;
+
+    /** Main program.
+     * @param args Commandline arguments (currently ignered).
+     */
+    public static void main(@NotNull final String... args) {
+        frame = new JFrame("JType");
+        final JType jtype = new JType();
+        frame.add(jtype);
+        frame.addWindowListener(jtype);
+        frame.pack();
+        frame.setVisible(true);
+    }
+
+    /** Creates a new JType. */
+    public JType() {
+        setLayout(new BorderLayout());
+        final JTextArea textPane = new JTextArea(25, 81);
+        textPane.setLineWrap(true);
+        textPane.setWrapStyleWord(true);
+        final Font oldFont = textPane.getFont();
+        textPane.setFont(new Font(Font.MONOSPACED, oldFont.getStyle(), (int) (oldFont.getSize() * 1.5)));
+        add(new JScrollPane(textPane));
+        final PerformancePane pane = new PerformancePane();
+        add(pane, BorderLayout.SOUTH);
+        textPane.addKeyListener(pane);
+    }
+
+    /** {@inheritDoc} */
+    public void windowOpened(@NotNull final WindowEvent e) {
+        // nothing to do
+    }
+
+    /** {@inheritDoc} */
+    public void windowClosing(@NotNull final WindowEvent e) {
+        frame.dispose();
+    }
+
+    /** {@inheritDoc} */
+    public void windowClosed(@NotNull final WindowEvent e) {
+        // nothing to do
+    }
+
+    /** {@inheritDoc} */
+    public void windowIconified(@NotNull final WindowEvent e) {
+        // nothing to do
+    }
+
+    /** {@inheritDoc} */
+    public void windowDeiconified(@NotNull final WindowEvent e) {
+        // nothing to do
+    }
+
+    /** {@inheritDoc} */
+    public void windowActivated(@NotNull final WindowEvent e) {
+        // nothing to do
+    }
+
+    /** {@inheritDoc} */
+    public void windowDeactivated(@NotNull final WindowEvent e) {
+        // nothing to do
+    }
+}
Property changes on: progs/jtype/trunk/src/prj/net/sf/japi/jtype/JType.java
___________________________________________________________________
Added: svn:mime-type
   + text/plain
Added: svn:eol-style
   + LF
Added: progs/jtype/trunk/src/prj/net/sf/japi/jtype/PerformancePane.java
===================================================================
--- progs/jtype/trunk/src/prj/net/sf/japi/jtype/PerformancePane.java	                        (rev 0)
+++ progs/jtype/trunk/src/prj/net/sf/japi/jtype/PerformancePane.java	2008-10-06 12:44:39 UTC (rev 647)
@@ -0,0 +1,129 @@
+package net.sf.japi.jtype;
+
+import javax.swing.JComponent;
+import javax.swing.JButton;
+import java.awt.event.KeyListener;
+import java.awt.event.KeyEvent;
+import java.awt.FlowLayout;
+import java.awt.Component;
+import java.util.Collection;
+import java.util.ArrayList;
+import net.sf.japi.swing.ActionBuilder;
+import net.sf.japi.swing.ActionBuilderFactory;
+import net.sf.japi.swing.ActionMethod;
+
+/** Display for simple typing statistics.
+ * @author <a href="mailto:ch...@ri...">Christian Hujer</a>
+ */
+public class PerformancePane extends JComponent implements KeyListener {
+
+    /** The ActionBuilder with which the Actions will be built. */
+    private static final ActionBuilder ACTION_BUILDER = ActionBuilderFactory.getInstance().getActionBuilder(PerformancePane.class);
+
+    /** Default delay after which a keystoke will be treated as new key after a pause. */
+    private static final int DEFAULT_PAUSE_DETECTION_DELAY = 2000;
+
+    /** Delay after which a keystroke will be treated as new key after a pause.
+     * This allows users to pause their excercises without having to explicitely stop the program.
+     */
+    private int pauseDetectionDelay = DEFAULT_PAUSE_DETECTION_DELAY;
+
+    /** The number of keys typed correctly. */
+    private int keyTypes;
+
+    /** The number of keys typed wrongly. */
+    private int correctionTypes;
+
+    /** The timestamp of the previous keystroke. */
+    private long lastTime;
+
+    /** The sum of time all keystrokes took alltogether so far. */
+    private long timeSums;
+
+    private Collection<ReflectionField> reflectionFields = new ArrayList<ReflectionField>();
+
+    /** Creates a PerformancePane. */
+    public PerformancePane() {
+        setLayout(new FlowLayout());
+        reflectionFields.add(new ReflectionField("Speed", "%3f", this, "speed"));
+        reflectionFields.add(new ReflectionField("Correctness", "%3.2f %%", this, "correctness"));
+        for (final Component reflectionField : reflectionFields) {
+            add(reflectionField);
+        }
+        updateDisplay();
+        ACTION_BUILDER.createAction(true, "reset", this);
+        final Component button = new JButton(ACTION_BUILDER.getAction("reset"));
+        button.setFocusable(false);
+        add(button);
+    }
+
+    /** Resets the statistics of this PerformancePane. */
+    @ActionMethod
+    public void reset() {
+        keyTypes = 0;
+        timeSums = 0;
+        correctionTypes = 0;
+        lastTime = 0;
+        updateDisplay();
+    }
+
+    /** Updates the displayed statistics. */
+    public void updateDisplay() {
+        for (final ReflectionField fieldLabelHandler : reflectionFields) {
+            fieldLabelHandler.update();
+        }
+    }
+
+    /** Returns the speed.
+     * @return The speed.
+     */
+    public double getSpeed() {
+        return keyTypes * 1000.0 * 60 / timeSums;
+    }
+
+    /** Returns the correctness.
+     * @return The correctness.
+     */
+    public double getCorrectness() {
+        return keyTypes * 100.0 / (keyTypes + correctionTypes);
+    }
+
+    /** Returns the speed of typing, measured in keystrokes per minute.
+     * @return The speed of typing, measured in keystrokes per minute.
+     */
+    public double getTypingSpeedInKeystrokesPerMinute() {
+        return keyTypes * 1000.0 * 60 / timeSums;
+    }
+
+    /** {@inheritDoc} */
+    public void keyTyped(final KeyEvent e) {
+        final long time = System.currentTimeMillis();
+        final long deltaTime = time - lastTime;
+        if (deltaTime > pauseDetectionDelay) {
+            lastTime = 0;
+        }
+        if (e.getKeyChar() == 8) {
+            correctionTypes++;
+            keyTypes--;
+        } else {
+            keyTypes++;
+        }
+        if (lastTime != 0) {
+            timeSums += deltaTime;
+        } else {
+            timeSums += pauseDetectionDelay;
+        }
+        updateDisplay();
+        lastTime = time;
+    }
+
+    /** {@inheritDoc} */
+    public void keyPressed(final KeyEvent e) {
+        // nothing to do
+    }
+
+    /** {@inheritDoc} */
+    public void keyReleased(final KeyEvent e) {
+        // nothing to do
+    }
+}
Property changes on: progs/jtype/trunk/src/prj/net/sf/japi/jtype/PerformancePane.java
___________________________________________________________________
Added: svn:mime-type
   + text/plain
Added: svn:eol-style
   + LF
Added: progs/jtype/trunk/src/prj/net/sf/japi/jtype/ReflectionField.java
===================================================================
--- progs/jtype/trunk/src/prj/net/sf/japi/jtype/ReflectionField.java	                        (rev 0)
+++ progs/jtype/trunk/src/prj/net/sf/japi/jtype/ReflectionField.java	2008-10-06 12:44:39 UTC (rev 647)
@@ -0,0 +1,77 @@
+package net.sf.japi.jtype;
+
+import javax.swing.JComponent;
+import javax.swing.JLabel;
+import java.lang.reflect.Method;
+import java.lang.reflect.InvocationTargetException;
+import java.awt.GridBagLayout;
+import java.util.Locale;
+import org.jetbrains.annotations.NotNull;
+
+/** A component that displays a property value along with a label.
+ * It uses reflection to get the object's value.
+ * @author <a href="mailto:ch...@ri...">Christian Hujer</a>
+ */
+public class ReflectionField extends JComponent {
+
+    /** The label to update. */
+    private final JLabel label;
+
+    /** The format to create the label text. */
+    private final String format;
+
+    /** The target object from which the field value will be read. */
+    private final Object target;
+
+    /** The method used to retrieve the value of the property. */
+    private final Method getter;
+
+    /** Creates a ReflactionField.
+     * @param label The label that shall be displayed.
+     * @param format The format with which the property value shall be formatted for display.
+     * @param target The target object of which the property value shall be displayed.
+     * @param fieldName The name of the property that shall be displayed.
+     */
+    public ReflectionField(@NotNull final String label, @NotNull final String format, @NotNull final Object target, @NotNull final String fieldName) {
+        setLayout(new GridBagLayout());
+        add(new JLabel(label + ": "));
+        this.label = new JLabel();
+        add(this.label);
+        this.format = format;
+        this.target = target;
+        getter = getGetterMethod(target.getClass(), fieldName);
+
+    }
+
+    /** Updates the display to reflect the latest property value. */
+    public void update() {
+        try {
+            label.setText(String.format(format, getter.invoke(target)));
+        } catch (final IllegalAccessException e) {
+            e.printStackTrace();
+        } catch (final InvocationTargetException e) {
+            e.printStackTrace();
+        }
+    }
+
+    /** Returns a getter method for the specified property of the specified class.
+     * It supports the standard Java / JavaBeans names (isPropertyName() for boolean properties and getPropertyName() for others).
+     * @param clazz Class for which the Getter shall be returned.
+     * @param propertyName Name of the property for which the getter method shall be returned.
+     * @return The getter method for the specified property of the specified class or <code>null</code> if such a getter method cannot be returned.
+     */
+    private static Method getGetterMethod(@NotNull final Class<?> clazz, @NotNull final String propertyName) {
+        final String capName = propertyName.substring(0, 1).toUpperCase(Locale.ENGLISH) + propertyName.substring(1);
+        try {
+            return clazz.getMethod("get" + capName);
+        } catch (final NoSuchMethodException e) {
+            System.err.println(e);
+            try {
+                return clazz.getMethod("is" + capName);
+            } catch (final NoSuchMethodException e1) {
+                System.err.println(e);
+                return null;
+            }
+        }
+    }
+}
Property changes on: progs/jtype/trunk/src/prj/net/sf/japi/jtype/ReflectionField.java
___________________________________________________________________
Added: svn:mime-type
   + text/plain
Added: svn:eol-style
   + LF
Added: progs/jtype/trunk/src/prj/net/sf/japi/jtype/action.properties
===================================================================
--- progs/jtype/trunk/src/prj/net/sf/japi/jtype/action.properties	                        (rev 0)
+++ progs/jtype/trunk/src/prj/net/sf/japi/jtype/action.properties	2008-10-06 12:44:39 UTC (rev 647)
@@ -0,0 +1 @@
+reset.text=Reset
Property changes on: progs/jtype/trunk/src/prj/net/sf/japi/jtype/action.properties
___________________________________________________________________
Added: svn:mime-type
   + text/plain
Added: svn:eol-style
   + LF
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
 | 
| 
      
      
      From: <chr...@us...> - 2008-10-06 12:45:49
       | 
| Revision: 646
          http://japi.svn.sourceforge.net/japi/?rev=646&view=rev
Author:   christianhujer
Date:     2008-10-06 12:43:08 +0000 (Mon, 06 Oct 2008)
Log Message:
-----------
Added module for midilearn prototype.
Added Paths:
-----------
    progs/midilearn/
    progs/midilearn/branches/
    progs/midilearn/tags/
    progs/midilearn/trunk/
    progs/midilearn/trunk/midilearn.iml
    progs/midilearn/trunk/src/
    progs/midilearn/trunk/src/doc/
    progs/midilearn/trunk/src/prj/
    progs/midilearn/trunk/src/prj/net/
    progs/midilearn/trunk/src/prj/net/sf/
    progs/midilearn/trunk/src/prj/net/sf/japi/
    progs/midilearn/trunk/src/prj/net/sf/japi/midilearn/
    progs/midilearn/trunk/src/prj/net/sf/japi/midilearn/MidiLearn.java
    progs/midilearn/trunk/src/tst/
Added: progs/midilearn/trunk/midilearn.iml
===================================================================
--- progs/midilearn/trunk/midilearn.iml	                        (rev 0)
+++ progs/midilearn/trunk/midilearn.iml	2008-10-06 12:43:08 UTC (rev 646)
@@ -0,0 +1,17 @@
+<?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" />
+    <orderEntryProperties />
+  </component>
+</module>
+
Property changes on: progs/midilearn/trunk/midilearn.iml
___________________________________________________________________
Added: svn:mime-type
   + text/xml
Added: svn:eol-style
   + LF
Added: progs/midilearn/trunk/src/prj/net/sf/japi/midilearn/MidiLearn.java
===================================================================
--- progs/midilearn/trunk/src/prj/net/sf/japi/midilearn/MidiLearn.java	                        (rev 0)
+++ progs/midilearn/trunk/src/prj/net/sf/japi/midilearn/MidiLearn.java	2008-10-06 12:43:08 UTC (rev 646)
@@ -0,0 +1,63 @@
+package net.sf.japi.midilearn;
+
+import java.awt.event.WindowListener;
+import java.awt.event.WindowEvent;
+import javax.swing.JApplet;
+import javax.swing.JFrame;
+
+/** A program for learning things about music that uses MIDI.
+ * @author <a href="mailto:ch...@ri...">Christian Hujer</a>
+ */
+public class MidiLearn extends JApplet implements WindowListener {
+
+    /**
+     * Main program.
+     * @param args Command line arguments (ignored).
+     */
+    public static void main(final String... args) {
+        final JFrame f = new JFrame("MidiLearn");
+        final MidiLearn midiLearn = new MidiLearn();
+        f.add(midiLearn);
+        f.addWindowListener(midiLearn);
+        f.setVisible(true);
+    }
+
+    /** Creates a MidiLearn Applet. */
+    public MidiLearn() {
+    }
+
+    /** {@inheritDoc} */
+    public void windowOpened(final WindowEvent e) {
+        // nothing to do
+    }
+
+    /** {@inheritDoc} */
+    public void windowClosing(final WindowEvent e) {
+        // TODO
+    }
+
+    /** {@inheritDoc} */
+    public void windowClosed(final WindowEvent e) {
+        // nothing to do
+    }
+
+    /** {@inheritDoc} */
+    public void windowIconified(final WindowEvent e) {
+        // nothing to do
+    }
+
+    /** {@inheritDoc} */
+    public void windowDeiconified(final WindowEvent e) {
+        // nothing to do
+    }
+
+    /** {@inheritDoc} */
+    public void windowActivated(final WindowEvent e) {
+        // nothing to do
+    }
+
+    /** {@inheritDoc} */
+    public void windowDeactivated(final WindowEvent e) {
+        // nothing to do
+    }
+}
Property changes on: progs/midilearn/trunk/src/prj/net/sf/japi/midilearn/MidiLearn.java
___________________________________________________________________
Added: svn:mime-type
   + text/plain
Added: svn:eol-style
   + LF
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
 | 
| 
      
      
      From: <chr...@us...> - 2008-10-06 12:48:32
       | 
| Revision: 648
          http://japi.svn.sourceforge.net/japi/?rev=648&view=rev
Author:   christianhujer
Date:     2008-10-06 12:45:51 +0000 (Mon, 06 Oct 2008)
Log Message:
-----------
Added module for jirus prototype.
Added Paths:
-----------
    progs/jirus/
    progs/jirus/branches/
    progs/jirus/tags/
    progs/jirus/trunk/
    progs/jirus/trunk/jirus.iml
    progs/jirus/trunk/src/
    progs/jirus/trunk/src/doc/
    progs/jirus/trunk/src/prj/
    progs/jirus/trunk/src/prj/net/
    progs/jirus/trunk/src/prj/net/sf/
    progs/jirus/trunk/src/prj/net/sf/jirus/
    progs/jirus/trunk/src/prj/net/sf/jirus/Jirus.java
    progs/jirus/trunk/src/prj/net/sf/jirus/MyReceiver.java
    progs/jirus/trunk/src/tst/
Added: progs/jirus/trunk/jirus.iml
===================================================================
--- progs/jirus/trunk/jirus.iml	                        (rev 0)
+++ progs/jirus/trunk/jirus.iml	2008-10-06 12:45:51 UTC (rev 648)
@@ -0,0 +1,20 @@
+<?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="module" module-name="libs-argparser" />
+    <orderEntry type="library" name="annotations" level="project" />
+    <orderEntry type="library" name="junit" level="project" />
+    <orderEntry type="library" name="jlfgr-1_0" level="project" />
+    <orderEntry type="module" module-name="midi" />
+    <orderEntryProperties />
+  </component>
+</module>
+
Property changes on: progs/jirus/trunk/jirus.iml
___________________________________________________________________
Added: svn:mime-type
   + text/xml
Added: svn:eol-style
   + LF
Added: progs/jirus/trunk/src/prj/net/sf/jirus/Jirus.java
===================================================================
--- progs/jirus/trunk/src/prj/net/sf/jirus/Jirus.java	                        (rev 0)
+++ progs/jirus/trunk/src/prj/net/sf/jirus/Jirus.java	2008-10-06 12:45:51 UTC (rev 648)
@@ -0,0 +1,64 @@
+package net.sf.jirus;
+
+import java.util.List;
+import javax.sound.midi.MidiDevice;
+import javax.sound.midi.Receiver;
+import javax.sound.midi.Sequencer;
+import javax.sound.midi.SysexMessage;
+import javax.sound.midi.Transmitter;
+import net.sf.japi.io.args.ArgParser;
+import net.sf.japi.io.args.BasicCommand;
+import net.sf.japi.midi.MidiUtils;
+import org.jetbrains.annotations.NotNull;
+
+/** Jirus Main program.
+ * Jirus is a software for working with midi devices.
+ * It is especially designed for being used live, e.g. on stage.
+ *
+ * @author <a href="mailto:ch...@ri...">Christian Hujer</a>
+ */
+// Requirements / Wishlist
+// - Allow more complex routing than just a simple keyboard split.
+// - Allow setups and have them changed dynamically during runtime.
+public class Jirus extends BasicCommand {
+
+    public static final int SPLIT_CHANNEL = 0x02;
+    public static final int SPLIT_KEY = 0x30;
+
+    public static final int MIDI_NOTE_RANGE = 128;
+
+    /** Main Program.
+     * @param args Command line arguments (try --help).
+     */
+    public static void main(@NotNull final String... args) {
+        ArgParser.simpleParseAndRun(new Jirus(), args);
+    }
+
+    /** {@inheritDoc} */
+    @SuppressWarnings({"InstanceMethodNamingConvention"})
+    public int run(@NotNull final List<String> args) throws Exception {
+        final MidiDevice device1 = MidiUtils.getTransmittingDevice("Virus TI Synth");
+        final MidiDevice device2 = MidiUtils.getReceivingDevice("Virus TI Synth");
+        final MidiDevice device3 = MidiUtils.getTransmittingDevice("Virus TI MIDI");
+        final MidiDevice device4 = MidiUtils.getReceivingDevice("Virus TI MIDI");
+        final Sequencer sequencer = (Sequencer) MidiUtils.getDeviceByName("Real Time Sequencer");
+        device1.open();
+        device2.open();
+        device3.open();
+        device4.open();
+        final Transmitter transmitter = device1.getTransmitter();
+        final Receiver receiver = device4.getReceiver();
+        transmitter.setReceiver(new MyReceiver(receiver));
+
+        // The following SysEx message is known to do the following:
+        // - It sets the tempo to 0x41 which is 128 BPM (63 is the base, + 65 which is 0x41 so that's 128 BPM)
+        // It sets "Local" to "Off", disabling the Synthesizer's internal feedback loop so all Midi is routed through this program.
+        final SysexMessage sysexMessage = MidiUtils.createSysexMessage("f0002033011071401041f7");
+        receiver.send(new SysexMessage(), 0);
+        // The following sets logo groove to NN (0x00 - 0x7F) : f00020330100730834NNf7
+
+        System.out.println("Go!");
+        return 0;
+    }
+
+}
Property changes on: progs/jirus/trunk/src/prj/net/sf/jirus/Jirus.java
___________________________________________________________________
Added: svn:mime-type
   + text/plain
Added: svn:eol-style
   + LF
Added: progs/jirus/trunk/src/prj/net/sf/jirus/MyReceiver.java
===================================================================
--- progs/jirus/trunk/src/prj/net/sf/jirus/MyReceiver.java	                        (rev 0)
+++ progs/jirus/trunk/src/prj/net/sf/jirus/MyReceiver.java	2008-10-06 12:45:51 UTC (rev 648)
@@ -0,0 +1,67 @@
+package net.sf.jirus;
+
+import javax.sound.midi.InvalidMidiDataException;
+import javax.sound.midi.MidiMessage;
+import javax.sound.midi.Receiver;
+import javax.sound.midi.ShortMessage;
+
+/**
+ * Class Description.
+ * @author <a href="mailto:ch...@ri...">Christian Hujer</a>
+ */
+public class MyReceiver implements Receiver {
+
+    private boolean[] noteState = new boolean[Jirus.MIDI_NOTE_RANGE];
+
+    private int playingNote = 0xFF;
+
+    private final Receiver receiver;
+
+    public MyReceiver(final Receiver receiver) {
+        this.receiver = receiver;
+    }
+
+    public void close() {}
+
+    public void send(final MidiMessage message, final long timeStamp) {
+        try {
+            final byte[] messageData = message.getMessage();
+            boolean echoMessage = true;
+            if (messageData.length != 1 || messageData[0] != (byte) ShortMessage.TIMING_CLOCK) {
+                if (message instanceof ShortMessage) {
+                    final ShortMessage smg = (ShortMessage) message;
+                    final int cmd = smg.getCommand();
+                    if (cmd == ShortMessage.NOTE_ON || cmd == ShortMessage.NOTE_OFF) {
+                        final int note = smg.getData1();
+                        final int velo = smg.getData2();
+                        noteState[note] = cmd == ShortMessage.NOTE_ON;
+                        if (note < Jirus.SPLIT_KEY) {
+                            receiver.send(message, timeStamp);
+                            if (cmd == ShortMessage.NOTE_OFF) {
+                                playingNote = 0xFF;
+                            } else {
+                                assert cmd == ShortMessage.NOTE_ON;
+                                if (note < playingNote) {
+                                    smg.setMessage(ShortMessage.NOTE_OFF, Jirus.SPLIT_CHANNEL, playingNote, velo);
+                                    receiver.send(message, timeStamp);
+                                    smg.setMessage(ShortMessage.NOTE_ON, Jirus.SPLIT_CHANNEL, note, velo);
+                                    playingNote = note;
+                                } else {
+                                    echoMessage = false;
+                                }
+                            }
+                            smg.setMessage(cmd, Jirus.SPLIT_CHANNEL, note, velo);
+                        }
+                    }
+                }
+            }
+            if (echoMessage) {
+                receiver.send(message, timeStamp);
+            }
+        } catch (InvalidMidiDataException e) {
+            // This should not happen.
+            // It would mean that the program itself did something wrong.
+            e.printStackTrace();
+        }
+    }
+}
Property changes on: progs/jirus/trunk/src/prj/net/sf/jirus/MyReceiver.java
___________________________________________________________________
Added: svn:mime-type
   + text/plain
Added: svn:eol-style
   + LF
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
 | 
| 
      
      
      From: <chr...@us...> - 2008-10-06 15:24:45
       | 
| Revision: 643
          http://japi.svn.sourceforge.net/japi/?rev=643&view=rev
Author:   christianhujer
Date:     2008-10-06 12:39:31 +0000 (Mon, 06 Oct 2008)
Log Message:
-----------
Added module for jhexedit prototype.
Added Paths:
-----------
    progs/jhexedit/
    progs/jhexedit/branches/
    progs/jhexedit/tags/
    progs/jhexedit/trunk/
    progs/jhexedit/trunk/jhexedit.iml
    progs/jhexedit/trunk/lib/
    progs/jhexedit/trunk/src/
    progs/jhexedit/trunk/src/doc/
    progs/jhexedit/trunk/src/prj/
    progs/jhexedit/trunk/src/prj/net/
    progs/jhexedit/trunk/src/prj/net/sf/
    progs/jhexedit/trunk/src/prj/net/sf/japi/
    progs/jhexedit/trunk/src/prj/net/sf/japi/progs/
    progs/jhexedit/trunk/src/prj/net/sf/japi/progs/jhexedit/
    progs/jhexedit/trunk/src/prj/net/sf/japi/progs/jhexedit/HexEditPane.java
    progs/jhexedit/trunk/src/prj/net/sf/japi/progs/jhexedit/JHexEditApplication.java
    progs/jhexedit/trunk/src/prj/net/sf/japi/progs/jhexedit/action.properties
    progs/jhexedit/trunk/src/tst/
Added: progs/jhexedit/trunk/jhexedit.iml
===================================================================
--- progs/jhexedit/trunk/jhexedit.iml	                        (rev 0)
+++ progs/jhexedit/trunk/jhexedit.iml	2008-10-06 12:39:31 UTC (rev 643)
@@ -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="module" module-name="libs-argparser" />
+    <orderEntry type="library" name="annotations" level="project" />
+    <orderEntry type="library" name="junit" level="project" />
+    <orderEntry type="module" module-name="libs-swing-app" />
+    <orderEntryProperties />
+  </component>
+</module>
+
Property changes on: progs/jhexedit/trunk/jhexedit.iml
___________________________________________________________________
Added: svn:mime-type
   + text/xml
Added: svn:eol-style
   + LF
Added: progs/jhexedit/trunk/src/prj/net/sf/japi/progs/jhexedit/HexEditPane.java
===================================================================
--- progs/jhexedit/trunk/src/prj/net/sf/japi/progs/jhexedit/HexEditPane.java	                        (rev 0)
+++ progs/jhexedit/trunk/src/prj/net/sf/japi/progs/jhexedit/HexEditPane.java	2008-10-06 12:39:31 UTC (rev 643)
@@ -0,0 +1,66 @@
+package net.sf.japi.progs.jhexedit;
+
+import java.awt.BorderLayout;
+import java.util.Formatter;
+import javax.swing.JPanel;
+import javax.swing.JScrollPane;
+import javax.swing.JTextArea;
+
+/** Component for hex viewing.
+ * @author <a href="mailto:ch...@ri...">Christian Hujer</a>
+ */
+public class HexEditPane extends JPanel {
+
+    /** The data to show. */
+    private byte[] data;
+
+    /** The columns to show. */
+    private int cols = 16;
+
+    /** The rows to show. */
+    private int rows;
+
+    /** The TextArea that displays the hex info. */
+    private JTextArea textArea = new JTextArea(25, cols * 4 + 8);
+
+    /** Creates a HexEditPane.
+     * The data is referenced, not copied.
+     * Changes to the array will write through to the HexEditPane and vice versa.
+     * @param data Data to view.
+     */
+    public HexEditPane(final byte[] data) {
+        setLayout(new BorderLayout());
+        textArea.setEditable(false);
+        add(new JScrollPane(textArea));
+        this.data = data;
+        rows = (data.length + cols - 1) / cols;
+        updateData();
+    }
+
+    /** Updates the data. */
+    private void updateData() {
+        final Formatter format = new Formatter();
+        for (int i = 0; i < rows; i++) {
+            format.format("%08x  ", i * cols);
+            for (int j = 0; j < cols; j++) {
+                final int offset = i * cols + j;
+                if (offset < data.length) {
+                    format.format("%02x ", data[offset]);
+                } else {
+                    format.format("   ");
+                }
+            }
+            for (int j = 0; j < cols; j++) {
+                final int offset = i * cols + j;
+                if (offset < data.length) {
+                    format.format(" %c", (char) data[offset]);
+                } else {
+                    format.format("  ");
+                }
+            }
+            format.format("\n");
+        }
+        textArea.setText(format.toString());
+    }
+
+}
Property changes on: progs/jhexedit/trunk/src/prj/net/sf/japi/progs/jhexedit/HexEditPane.java
___________________________________________________________________
Added: svn:mime-type
   + text/plain
Added: svn:eol-style
   + LF
Added: progs/jhexedit/trunk/src/prj/net/sf/japi/progs/jhexedit/JHexEditApplication.java
===================================================================
--- progs/jhexedit/trunk/src/prj/net/sf/japi/progs/jhexedit/JHexEditApplication.java	                        (rev 0)
+++ progs/jhexedit/trunk/src/prj/net/sf/japi/progs/jhexedit/JHexEditApplication.java	2008-10-06 12:39:31 UTC (rev 643)
@@ -0,0 +1,43 @@
+package net.sf.japi.progs.jhexedit;
+
+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 JHexEditApplication extends Application<byte[]> {
+
+    /** Main Program.
+     * @param args Command line arguments (try --help).
+     */
+    public static void main(final String... args) {
+        ArgParser.simpleParseAndRun(new AppLaunchCommand(JHexEditApplication.class), args);
+    }
+
+    /** Creates a JHexEditApplication. */
+    public JHexEditApplication() {
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void save(@NotNull final Document<byte[]> doc, @NotNull final String uri) {
+        //To change body of implemented methods use File | Settings | File Templates.
+        // TODO
+    }
+
+    public Document<byte[]> createNew() {
+        return null;//To change body of implemented methods use File | Settings | File Templates.
+    }
+
+    /** {@inheritDoc} */
+    @NotNull
+    public Document<byte[]> load(@NotNull final String uri) {
+        throw new UnsupportedOperationException();
+    }
+
+}
Property changes on: progs/jhexedit/trunk/src/prj/net/sf/japi/progs/jhexedit/JHexEditApplication.java
___________________________________________________________________
Added: svn:mime-type
   + text/plain
Added: svn:eol-style
   + LF
Added: progs/jhexedit/trunk/src/prj/net/sf/japi/progs/jhexedit/action.properties
===================================================================
--- progs/jhexedit/trunk/src/prj/net/sf/japi/progs/jhexedit/action.properties	                        (rev 0)
+++ progs/jhexedit/trunk/src/prj/net/sf/japi/progs/jhexedit/action.properties	2008-10-06 12:39:31 UTC (rev 643)
@@ -0,0 +1 @@
+application.title=JHexEdit
Property changes on: progs/jhexedit/trunk/src/prj/net/sf/japi/progs/jhexedit/action.properties
___________________________________________________________________
Added: svn:mime-type
   + text/plain
Added: svn:eol-style
   + LF
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
 | 
| 
      
      
      From: <chr...@us...> - 2008-12-29 20:31:07
       | 
| Revision: 769
          http://japi.svn.sourceforge.net/japi/?rev=769&view=rev
Author:   christianhujer
Date:     2008-12-29 20:31:04 +0000 (Mon, 29 Dec 2008)
Log Message:
-----------
Add structure for prog pffhtrain.
Added Paths:
-----------
    progs/pffhtrain/
    progs/pffhtrain/branches/
    progs/pffhtrain/tags/
    progs/pffhtrain/trunk/
Property changes on: progs/pffhtrain/trunk
___________________________________________________________________
Added: svn:externals
   + common https://japi.svn.sourceforge.net/svnroot/japi/common/trunk
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
 | 
| 
      
      
      From: <chr...@us...> - 2009-02-15 23:08:52
       | 
| Revision: 912
          http://japi.svn.sourceforge.net/japi/?rev=912&view=rev
Author:   christianhujer
Date:     2009-02-15 23:08:49 +0000 (Sun, 15 Feb 2009)
Log Message:
-----------
Updated build.xml and module.properties of all progs to build with common build.
Added Paths:
-----------
    progs/batcher/trunk/build.xml
    progs/batcher/trunk/module.properties
    progs/cardlearn/trunk/build.xml
    progs/cardlearn/trunk/module.properties
    progs/jeduca/trunk/build.xml
    progs/jeduca/trunk/module.properties
    progs/jhexedit/trunk/build.xml
    progs/jhexedit/trunk/module.properties
    progs/jhexview/trunk/build.xml
    progs/jhexview/trunk/module.properties
    progs/jirus/trunk/build.xml
    progs/jirus/trunk/module.properties
    progs/jtype/trunk/build.xml
    progs/jtype/trunk/module.properties
    progs/midilearn/trunk/build.xml
    progs/midilearn/trunk/module.properties
    progs/pffhtrain/trunk/build.xml
    progs/pffhtrain/trunk/module.properties
    progs/textedit/trunk/build.xml
    progs/textedit/trunk/module.properties
Added: progs/batcher/trunk/build.xml
===================================================================
--- progs/batcher/trunk/build.xml	                        (rev 0)
+++ progs/batcher/trunk/build.xml	2009-02-15 23:08:49 UTC (rev 912)
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2009  Christian Hujer
+  ~
+  ~ This program is free software: you can redistribute it and/or modify
+  ~ it under the terms of the GNU General Public License as published by
+  ~ the Free Software Foundation, either version 3 of the License, or
+  ~ (at your option) any later version.
+  ~
+  ~ This program is distributed in the hope that it will be useful,
+  ~ but WITHOUT ANY WARRANTY; without even the implied warranty of
+  ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+  ~ GNU General Public License for more details.
+  ~
+  ~ You should have received a copy of the GNU General Public License
+  ~ along with this program.  If not, see <http://www.gnu.org/licenses/>.
+  -->
+<!DOCTYPE project [
+    <!ENTITY commonBuild SYSTEM "common/commonBuild.xml">
+]>
+<project name="Batcher" default="compile">
+
+    &commonBuild;
+
+</project>
Property changes on: progs/batcher/trunk/build.xml
___________________________________________________________________
Added: svn:mime-type
   + text/xml
Added: svn:eol-style
   + LF
Added: progs/batcher/trunk/module.properties
===================================================================
--- progs/batcher/trunk/module.properties	                        (rev 0)
+++ progs/batcher/trunk/module.properties	2009-02-15 23:08:49 UTC (rev 912)
@@ -0,0 +1,24 @@
+#
+# Copyright (C) 2009  Christian Hujer
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+
+update.focus=none
+name=Batcher
+shortname=Batcher
+title=Batcher
+package=net.sf.japi.batcher
+package.path=net/sf/japi/batcher
+main.class=net.sf.japi.batcher.Batcher
Property changes on: progs/batcher/trunk/module.properties
___________________________________________________________________
Added: svn:mime-type
   + text/plain
Added: svn:eol-style
   + LF
Added: progs/cardlearn/trunk/build.xml
===================================================================
--- progs/cardlearn/trunk/build.xml	                        (rev 0)
+++ progs/cardlearn/trunk/build.xml	2009-02-15 23:08:49 UTC (rev 912)
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2009  Christian Hujer
+  ~
+  ~ This program is free software: you can redistribute it and/or modify
+  ~ it under the terms of the GNU General Public License as published by
+  ~ the Free Software Foundation, either version 3 of the License, or
+  ~ (at your option) any later version.
+  ~
+  ~ This program is distributed in the hope that it will be useful,
+  ~ but WITHOUT ANY WARRANTY; without even the implied warranty of
+  ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+  ~ GNU General Public License for more details.
+  ~
+  ~ You should have received a copy of the GNU General Public License
+  ~ along with this program.  If not, see <http://www.gnu.org/licenses/>.
+  -->
+<!DOCTYPE project [
+    <!ENTITY commonBuild SYSTEM "common/commonBuild.xml">
+]>
+<project name="CardLearn" default="compile">
+
+    &commonBuild;
+
+</project>
Property changes on: progs/cardlearn/trunk/build.xml
___________________________________________________________________
Added: svn:mime-type
   + text/xml
Added: svn:eol-style
   + LF
Added: progs/cardlearn/trunk/module.properties
===================================================================
--- progs/cardlearn/trunk/module.properties	                        (rev 0)
+++ progs/cardlearn/trunk/module.properties	2009-02-15 23:08:49 UTC (rev 912)
@@ -0,0 +1,23 @@
+#
+# Copyright (C) 2009  Christian Hujer
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+
+update.focus=none
+name=CardLearn
+shortname=CardLearn
+title=CardLearn
+package=net.sf.japi.cardlearn
+package.path=net/sf/japi/cardlearn
Property changes on: progs/cardlearn/trunk/module.properties
___________________________________________________________________
Added: svn:mime-type
   + text/plain
Added: svn:eol-style
   + LF
Added: progs/jeduca/trunk/build.xml
===================================================================
--- progs/jeduca/trunk/build.xml	                        (rev 0)
+++ progs/jeduca/trunk/build.xml	2009-02-15 23:08:49 UTC (rev 912)
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2009  Christian Hujer
+  ~
+  ~ This program is free software: you can redistribute it and/or modify
+  ~ it under the terms of the GNU General Public License as published by
+  ~ the Free Software Foundation, either version 3 of the License, or
+  ~ (at your option) any later version.
+  ~
+  ~ This program is distributed in the hope that it will be useful,
+  ~ but WITHOUT ANY WARRANTY; without even the implied warranty of
+  ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+  ~ GNU General Public License for more details.
+  ~
+  ~ You should have received a copy of the GNU General Public License
+  ~ along with this program.  If not, see <http://www.gnu.org/licenses/>.
+  -->
+<!DOCTYPE project [
+    <!ENTITY commonBuild SYSTEM "common/commonBuild.xml">
+]>
+<project name="JEduca" default="compile">
+
+    &commonBuild;
+
+</project>
Property changes on: progs/jeduca/trunk/build.xml
___________________________________________________________________
Added: svn:mime-type
   + text/xml
Added: svn:eol-style
   + LF
Added: progs/jeduca/trunk/module.properties
===================================================================
--- progs/jeduca/trunk/module.properties	                        (rev 0)
+++ progs/jeduca/trunk/module.properties	2009-02-15 23:08:49 UTC (rev 912)
@@ -0,0 +1,24 @@
+#
+# Copyright (C) 2009  Christian Hujer
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+
+update.focus=none
+name=JEduca
+shortname=JEduca
+title=JEduca
+package=net.sf.japi.progs.jeduca
+package.path=net/sf/japi/progs/jeduca
+main.class=net.sf.japi.progs.jeduca.jtest.Main
Property changes on: progs/jeduca/trunk/module.properties
___________________________________________________________________
Added: svn:mime-type
   + text/plain
Added: svn:eol-style
   + LF
Added: progs/jhexedit/trunk/build.xml
===================================================================
--- progs/jhexedit/trunk/build.xml	                        (rev 0)
+++ progs/jhexedit/trunk/build.xml	2009-02-15 23:08:49 UTC (rev 912)
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2009  Christian Hujer
+  ~
+  ~ This program is free software: you can redistribute it and/or modify
+  ~ it under the terms of the GNU General Public License as published by
+  ~ the Free Software Foundation, either version 3 of the License, or
+  ~ (at your option) any later version.
+  ~
+  ~ This program is distributed in the hope that it will be useful,
+  ~ but WITHOUT ANY WARRANTY; without even the implied warranty of
+  ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+  ~ GNU General Public License for more details.
+  ~
+  ~ You should have received a copy of the GNU General Public License
+  ~ along with this program.  If not, see <http://www.gnu.org/licenses/>.
+  -->
+<!DOCTYPE project [
+    <!ENTITY commonBuild SYSTEM "common/commonBuild.xml">
+]>
+<project name="JHexEdit" default="compile">
+
+    &commonBuild;
+
+</project>
Property changes on: progs/jhexedit/trunk/build.xml
___________________________________________________________________
Added: svn:mime-type
   + text/xml
Added: svn:eol-style
   + LF
Added: progs/jhexedit/trunk/module.properties
===================================================================
--- progs/jhexedit/trunk/module.properties	                        (rev 0)
+++ progs/jhexedit/trunk/module.properties	2009-02-15 23:08:49 UTC (rev 912)
@@ -0,0 +1,24 @@
+#
+# Copyright (C) 2009  Christian Hujer
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+
+update.focus=none
+name=JHexEdit
+shortname=JHexEdit
+title=JHexEdit
+package=net.sf.japi.progs.jhexedit
+package.path=net/sf/japi/progs/jhexedit
+main.class=net.sf.japi.progs.jhexedit.JHexEditApplication
Property changes on: progs/jhexedit/trunk/module.properties
___________________________________________________________________
Added: svn:mime-type
   + text/plain
Added: svn:eol-style
   + LF
Added: progs/jhexview/trunk/build.xml
===================================================================
--- progs/jhexview/trunk/build.xml	                        (rev 0)
+++ progs/jhexview/trunk/build.xml	2009-02-15 23:08:49 UTC (rev 912)
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2009  Christian Hujer
+  ~
+  ~ This program is free software: you can redistribute it and/or modify
+  ~ it under the terms of the GNU General Public License as published by
+  ~ the Free Software Foundation, either version 3 of the License, or
+  ~ (at your option) any later version.
+  ~
+  ~ This program is distributed in the hope that it will be useful,
+  ~ but WITHOUT ANY WARRANTY; without even the implied warranty of
+  ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+  ~ GNU General Public License for more details.
+  ~
+  ~ You should have received a copy of the GNU General Public License
+  ~ along with this program.  If not, see <http://www.gnu.org/licenses/>.
+  -->
+<!DOCTYPE project [
+    <!ENTITY commonBuild SYSTEM "common/commonBuild.xml">
+]>
+<project name="JHexView" default="compile">
+
+    &commonBuild;
+
+</project>
Property changes on: progs/jhexview/trunk/build.xml
___________________________________________________________________
Added: svn:mime-type
   + text/xml
Added: svn:eol-style
   + LF
Added: progs/jhexview/trunk/module.properties
===================================================================
--- progs/jhexview/trunk/module.properties	                        (rev 0)
+++ progs/jhexview/trunk/module.properties	2009-02-15 23:08:49 UTC (rev 912)
@@ -0,0 +1,24 @@
+#
+# Copyright (C) 2009  Christian Hujer
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+
+update.focus=none
+name=JHexView
+shortname=JHexView
+title=JHexView
+package=net.sf.japi.progs.jhexview
+package.path=net/sf/japi/progs/jhexview
+main.class=net.sf.japi.progs.jhexview.JHexView
Property changes on: progs/jhexview/trunk/module.properties
___________________________________________________________________
Added: svn:mime-type
   + text/plain
Added: svn:eol-style
   + LF
Added: progs/jirus/trunk/build.xml
===================================================================
--- progs/jirus/trunk/build.xml	                        (rev 0)
+++ progs/jirus/trunk/build.xml	2009-02-15 23:08:49 UTC (rev 912)
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2009  Christian Hujer
+  ~
+  ~ This program is free software: you can redistribute it and/or modify
+  ~ it under the terms of the GNU General Public License as published by
+  ~ the Free Software Foundation, either version 3 of the License, or
+  ~ (at your option) any later version.
+  ~
+  ~ This program is distributed in the hope that it will be useful,
+  ~ but WITHOUT ANY WARRANTY; without even the implied warranty of
+  ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+  ~ GNU General Public License for more details.
+  ~
+  ~ You should have received a copy of the GNU General Public License
+  ~ along with this program.  If not, see <http://www.gnu.org/licenses/>.
+  -->
+<!DOCTYPE project [
+    <!ENTITY commonBuild SYSTEM "common/commonBuild.xml">
+]>
+<project name="Jirus" default="compile">
+
+    &commonBuild;
+
+</project>
Property changes on: progs/jirus/trunk/build.xml
___________________________________________________________________
Added: svn:mime-type
   + text/xml
Added: svn:eol-style
   + LF
Added: progs/jirus/trunk/module.properties
===================================================================
--- progs/jirus/trunk/module.properties	                        (rev 0)
+++ progs/jirus/trunk/module.properties	2009-02-15 23:08:49 UTC (rev 912)
@@ -0,0 +1,24 @@
+#
+# Copyright (C) 2009  Christian Hujer
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+
+update.focus=none
+name=Jirus
+shortname=Jirus
+title=Jirus
+package=net.sf.jirus
+package.path=net/sf/jirus
+main.class=net.sf.jirus.Jirus
Property changes on: progs/jirus/trunk/module.properties
___________________________________________________________________
Added: svn:mime-type
   + text/plain
Added: svn:eol-style
   + LF
Added: progs/jtype/trunk/build.xml
===================================================================
--- progs/jtype/trunk/build.xml	                        (rev 0)
+++ progs/jtype/trunk/build.xml	2009-02-15 23:08:49 UTC (rev 912)
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2009  Christian Hujer
+  ~
+  ~ This program is free software: you can redistribute it and/or modify
+  ~ it under the terms of the GNU General Public License as published by
+  ~ the Free Software Foundation, either version 3 of the License, or
+  ~ (at your option) any later version.
+  ~
+  ~ This program is distributed in the hope that it will be useful,
+  ~ but WITHOUT ANY WARRANTY; without even the implied warranty of
+  ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+  ~ GNU General Public License for more details.
+  ~
+  ~ You should have received a copy of the GNU General Public License
+  ~ along with this program.  If not, see <http://www.gnu.org/licenses/>.
+  -->
+<!DOCTYPE project [
+    <!ENTITY commonBuild SYSTEM "common/commonBuild.xml">
+]>
+<project name="JType" default="compile">
+
+    &commonBuild;
+
+</project>
Property changes on: progs/jtype/trunk/build.xml
___________________________________________________________________
Added: svn:mime-type
   + text/xml
Added: svn:eol-style
   + LF
Added: progs/jtype/trunk/module.properties
===================================================================
--- progs/jtype/trunk/module.properties	                        (rev 0)
+++ progs/jtype/trunk/module.properties	2009-02-15 23:08:49 UTC (rev 912)
@@ -0,0 +1,24 @@
+#
+# Copyright (C) 2009  Christian Hujer
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+
+update.focus=none
+name=JType
+shortname=JType
+title=JType
+package=net.sf.japi.jtype
+package.path=net/sf/japi/jtype
+main.class=net.sf.japi.jtype.JType
Property changes on: progs/jtype/trunk/module.properties
___________________________________________________________________
Added: svn:mime-type
   + text/plain
Added: svn:eol-style
   + LF
Added: progs/midilearn/trunk/build.xml
===================================================================
--- progs/midilearn/trunk/build.xml	                        (rev 0)
+++ progs/midilearn/trunk/build.xml	2009-02-15 23:08:49 UTC (rev 912)
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2009  Christian Hujer
+  ~
+  ~ This program is free software: you can redistribute it and/or modify
+  ~ it under the terms of the GNU General Public License as published by
+  ~ the Free Software Foundation, either version 3 of the License, or
+  ~ (at your option) any later version.
+  ~
+  ~ This program is distributed in the hope that it will be useful,
+  ~ but WITHOUT ANY WARRANTY; without even the implied warranty of
+  ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+  ~ GNU General Public License for more details.
+  ~
+  ~ You should have received a copy of the GNU General Public License
+  ~ along with this program.  If not, see <http://www.gnu.org/licenses/>.
+  -->
+<!DOCTYPE project [
+    <!ENTITY commonBuild SYSTEM "common/commonBuild.xml">
+]>
+<project name="MidiLearn" default="compile">
+
+    &commonBuild;
+
+</project>
Property changes on: progs/midilearn/trunk/build.xml
___________________________________________________________________
Added: svn:mime-type
   + text/xml
Added: svn:eol-style
   + LF
Added: progs/midilearn/trunk/module.properties
===================================================================
--- progs/midilearn/trunk/module.properties	                        (rev 0)
+++ progs/midilearn/trunk/module.properties	2009-02-15 23:08:49 UTC (rev 912)
@@ -0,0 +1,24 @@
+#
+# Copyright (C) 2009  Christian Hujer
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+
+update.focus=none
+name=MidiLearn
+shortname=MidiLearn
+title=MidiLearn
+package=net.sf.japi.midilearn
+package.path=net/sf/japi/midilearn
+main.class=net.sf.japi.midilearn.MidiLearn
Property changes on: progs/midilearn/trunk/module.properties
___________________________________________________________________
Added: svn:mime-type
   + text/plain
Added: svn:eol-style
   + LF
Added: progs/pffhtrain/trunk/build.xml
===================================================================
--- progs/pffhtrain/trunk/build.xml	                        (rev 0)
+++ progs/pffhtrain/trunk/build.xml	2009-02-15 23:08:49 UTC (rev 912)
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2009  Christian Hujer
+  ~
+  ~ This program is free software: you can redistribute it and/or modify
+  ~ it under the terms of the GNU General Public License as published by
+  ~ the Free Software Foundation, either version 3 of the License, or
+  ~ (at your option) any later version.
+  ~
+  ~ This program is distributed in the hope that it will be useful,
+  ~ but WITHOUT ANY WARRANTY; without even the implied warranty of
+  ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+  ~ GNU General Public License for more details.
+  ~
+  ~ You should have received a copy of the GNU General Public License
+  ~ along with this program.  If not, see <http://www.gnu.org/licenses/>.
+  -->
+<!DOCTYPE project [
+    <!ENTITY commonBuild SYSTEM "common/commonBuild.xml">
+]>
+<project name="PffhTrain" default="compile">
+
+    &commonBuild;
+
+</project>
Property changes on: progs/pffhtrain/trunk/build.xml
___________________________________________________________________
Added: svn:mime-type
   + text/xml
Added: svn:eol-style
   + LF
Added: progs/pffhtrain/trunk/module.properties
===================================================================
--- progs/pffhtrain/trunk/module.properties	                        (rev 0)
+++ progs/pffhtrain/trunk/module.properties	2009-02-15 23:08:49 UTC (rev 912)
@@ -0,0 +1,24 @@
+#
+# Copyright (C) 2009  Christian Hujer
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+
+update.focus=none
+name=PffhTrain
+shortname=PffhTrain
+title=PffhTrain
+package=net.sf.japi.pffhtrain
+package.path=net/sf/japi/pffhtrain
+main.class=net.sf.japi.pffhtrain.PffhTrain
Property changes on: progs/pffhtrain/trunk/module.properties
___________________________________________________________________
Added: svn:mime-type
   + text/plain
Added: svn:eol-style
   + LF
Added: progs/textedit/trunk/build.xml
===================================================================
--- progs/textedit/trunk/build.xml	                        (rev 0)
+++ progs/textedit/trunk/build.xml	2009-02-15 23:08:49 UTC (rev 912)
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2009  Christian Hujer
+  ~
+  ~ This program is free software: you can redistribute it and/or modify
+  ~ it under the terms of the GNU General Public License as published by
+  ~ the Free Software Foundation, either version 3 of the License, or
+  ~ (at your option) any later version.
+  ~
+  ~ This program is distributed in the hope that it will be useful,
+  ~ but WITHOUT ANY WARRANTY; without even the implied warranty of
+  ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+  ~ GNU General Public License for more details.
+  ~
+  ~ You should have received a copy of the GNU General Public License
+  ~ along with this program.  If not, see <http://www.gnu.org/licenses/>.
+  -->
+<!DOCTYPE project [
+    <!ENTITY commonBuild SYSTEM "common/commonBuild.xml">
+]>
+<project name="TextEdit" default="compile">
+
+    &commonBuild;
+
+</project>
Property changes on: progs/textedit/trunk/build.xml
___________________________________________________________________
Added: svn:mime-type
   + text/xml
Added: svn:eol-style
   + LF
Added: progs/textedit/trunk/module.properties
===================================================================
--- progs/textedit/trunk/module.properties	                        (rev 0)
+++ progs/textedit/trunk/module.properties	2009-02-15 23:08:49 UTC (rev 912)
@@ -0,0 +1,24 @@
+#
+# Copyright (C) 2009  Christian Hujer
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+
+update.focus=none
+name=TextEditApplication
+shortname=TextEditApplication
+title=TextEditApplication
+package=net.sf.japi.textedit
+package.path=net/sf/japi/textedit
+main.class=net.sf.japi.textedit.TextEditApplication
Property changes on: progs/textedit/trunk/module.properties
___________________________________________________________________
Added: svn:mime-type
   + text/plain
Added: svn:eol-style
   + LF
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
 |