diff --git a/TraceMarker/.classpath b/TraceMarker/.classpath
new file mode 100644
index 0000000..91ee9a5
--- /dev/null
+++ b/TraceMarker/.classpath
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/TraceMarker/.gitignore b/TraceMarker/.gitignore
new file mode 100644
index 0000000..ae3c172
--- /dev/null
+++ b/TraceMarker/.gitignore
@@ -0,0 +1 @@
+/bin/
diff --git a/TraceMarker/.project b/TraceMarker/.project
new file mode 100644
index 0000000..5d8e097
--- /dev/null
+++ b/TraceMarker/.project
@@ -0,0 +1,17 @@
+
+
+ TraceMarker
+
+
+
+
+
+ org.eclipse.jdt.core.javabuilder
+
+
+
+
+
+ org.eclipse.jdt.core.javanature
+
+
diff --git a/TraceMarker/.settings/org.eclipse.jdt.core.prefs b/TraceMarker/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..838bd9d
--- /dev/null
+++ b/TraceMarker/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,11 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.7
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.7
diff --git a/TraceMarker/src/Main.java b/TraceMarker/src/Main.java
new file mode 100644
index 0000000..40e8ac9
--- /dev/null
+++ b/TraceMarker/src/Main.java
@@ -0,0 +1,143 @@
+import java.awt.GridLayout;
+import java.awt.event.MouseEvent;
+import java.awt.event.MouseListener;
+import java.io.BufferedWriter;
+import java.io.File;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.util.ArrayList;
+
+import javax.swing.JButton;
+import javax.swing.JFileChooser;
+import javax.swing.JFrame;
+import javax.swing.JLabel;
+
+
+public class Main {
+
+ public static void main(String[] args) {
+ final ArrayList marks = new ArrayList();
+ final JFrame frame = new JFrame();
+ frame.setResizable(false);
+ frame.setTitle("Trace Marker");
+ frame.setSize(300, 215);
+ frame.setLayout(null);
+
+ JButton markButton = new JButton("Mark");
+ markButton.setBounds(25, 20, 100, 25);
+
+ final JLabel time = new JLabel();
+ time.setBounds(150, 20, 125, 25);
+
+ JButton clearButton = new JButton("Clear");
+ clearButton.setBounds(25, 60, 100, 25);
+
+ JButton saveButton = new JButton("Save As...");
+ saveButton.setBounds(25, 120, 100, 25);
+
+ JButton okButton = new JButton("OK");
+ okButton.setBounds(150, 120, 100, 25);
+
+ frame.add(time);
+ frame.add(markButton);
+ frame.add(clearButton);
+ frame.add(saveButton);
+ frame.add(okButton);
+
+ markButton.addMouseListener(new MouseListener() {
+ @Override
+ public void mouseClicked(MouseEvent e) {
+ Long curTime = System.nanoTime();
+ time.setText(Long.toString(curTime));
+ marks.add(curTime);
+ }
+ @Override
+ public void mouseEntered(MouseEvent e) {
+ }
+ @Override
+ public void mouseExited(MouseEvent e) {
+ }
+ @Override
+ public void mousePressed(MouseEvent e) {
+ }
+ @Override
+ public void mouseReleased(MouseEvent e) {
+ }
+ });
+
+ clearButton.addMouseListener(new MouseListener() {
+ @Override
+ public void mouseClicked(MouseEvent e) {
+ time.setText("");
+ marks.clear();;
+ }
+ @Override
+ public void mouseEntered(MouseEvent e) {
+ }
+ @Override
+ public void mouseExited(MouseEvent e) {
+ }
+ @Override
+ public void mousePressed(MouseEvent e) {
+ }
+ @Override
+ public void mouseReleased(MouseEvent e) {
+ }
+ });
+
+ saveButton.addMouseListener(new MouseListener() {
+ @Override
+ public void mouseClicked(MouseEvent e) {
+ JFileChooser filechooser = new JFileChooser();
+
+ int selected = filechooser.showSaveDialog(frame);
+ if (selected == JFileChooser.APPROVE_OPTION){
+ File file = filechooser.getSelectedFile();
+ try {
+ BufferedWriter br = new BufferedWriter(new FileWriter(file));
+ for (int n = 0; n < marks.size(); n++) {
+ br.write(Long.toString(marks.get(n)));
+ br.newLine();
+ }
+ br.close();
+ } catch (IOException ex) {
+ }
+ }
+ }
+ @Override
+ public void mouseEntered(MouseEvent e) {
+ }
+ @Override
+ public void mouseExited(MouseEvent e) {
+ }
+ @Override
+ public void mousePressed(MouseEvent e) {
+ }
+ @Override
+ public void mouseReleased(MouseEvent e) {
+ }
+ });
+
+ okButton.addMouseListener(new MouseListener() {
+ @Override
+ public void mouseClicked(MouseEvent e) {
+ frame.dispose();
+ }
+ @Override
+ public void mouseEntered(MouseEvent e) {
+ }
+ @Override
+ public void mouseExited(MouseEvent e) {
+ }
+ @Override
+ public void mousePressed(MouseEvent e) {
+ }
+ @Override
+ public void mouseReleased(MouseEvent e) {
+ }
+ });
+
+ frame.setVisible(true);
+ }
+
+}