summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJesse Morgan <jesse@jesterpm.net>2012-10-13 16:37:18 -0700
committerJesse Morgan <jesse@jesterpm.net>2012-10-13 16:37:18 -0700
commit5b32db4fd53549028352afbc9cae5dc2f65b0d88 (patch)
treec6578f518a3e8915300a40562eedd798b4dd13cc
parentcdd1cce784a1a543a7f3c9bb4ef5cd7dc2048fc6 (diff)
Added gitignore.
Built configuration ui. Added placeholder classes so that it would run.
-rw-r--r--.gitignore3
-rw-r--r--build.xml30
-rw-r--r--src/net/jesterpm/sermonuploader/SermonUploader.java13
-rw-r--r--src/net/jesterpm/sermonuploader/config/Config.java6
-rw-r--r--src/net/jesterpm/sermonuploader/control/ConfigureTask.java35
-rw-r--r--src/net/jesterpm/sermonuploader/control/UploadTask.java22
-rw-r--r--src/net/jesterpm/sermonuploader/ui/Action.java17
-rw-r--r--src/net/jesterpm/sermonuploader/ui/ConfigurationWindow.java123
-rw-r--r--src/net/jesterpm/sermonuploader/ui/ProgressWindow.java13
9 files changed, 234 insertions, 28 deletions
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..6f222a5
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,3 @@
+tags
+build/
+SermonUploader.jar
diff --git a/build.xml b/build.xml
new file mode 100644
index 0000000..d737b0c
--- /dev/null
+++ b/build.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<project name="SermonUploader" default="build" basedir=".">
+ <target name="javac" description="Compile java source to bytecode">
+ <mkdir dir="build"/>
+ <javac srcdir="src" includes="**" encoding="utf-8"
+ destdir="build"
+ source="1.5" target="1.5" nowarn="true"
+ debug="true" debuglevel="lines,vars,source">
+ </javac>
+ <copy todir="build">
+ <fileset dir="src" excludes="**/*.java"/>
+ </copy>
+ </target>
+
+ <target name="build" depends="javac" description="Build this project" />
+
+ <target name="jar" depends="build" description="Create a jar file">
+ <jar destfile="SermonUploader.jar">
+ <fileset dir="build" />
+ <manifest>
+ <attribute name="Main-Class" value="net.jesterpm.sermonuploader.SermonUploader" />
+ </manifest>
+ </jar>
+ </target>
+
+ <target name="clean" description="Cleans this project">
+ <delete dir="build" failonerror="false" />
+ </target>
+
+</project>
diff --git a/src/net/jesterpm/sermonuploader/SermonUploader.java b/src/net/jesterpm/sermonuploader/SermonUploader.java
index b3d623e..6338b3e 100644
--- a/src/net/jesterpm/sermonuploader/SermonUploader.java
+++ b/src/net/jesterpm/sermonuploader/SermonUploader.java
@@ -4,6 +4,12 @@
package net.jesterpm.sermonuploader;
+import net.jesterpm.sermonuploader.config.Config;
+import net.jesterpm.sermonuploader.control.ConfigureTask;
+import net.jesterpm.sermonuploader.control.UploadTask;
+import net.jesterpm.sermonuploader.ui.ConfigurationWindow;
+import net.jesterpm.sermonuploader.ui.ProgressWindow;
+
/**
* Application entry-point.
*
@@ -35,9 +41,10 @@ public class SermonUploader {
System.out.println();
System.out.println("Usage: SermonUploader [directory]");
System.out.println(
- "\tWhen started with no arguments, the configuration dialog is opened.");
- System.out.println("\tWhen started with one argument, it is assumed to "
- + "be a directory with a metadata.txt file with upload instructions.");
+ "When started with no arguments, the configuration dialog is opened.");
+ System.out.println(
+ "When started with one argument, it is assumed to be a directory\n"
+ + "with a metadata.txt file with upload instructions.");
System.out.println();
}
diff --git a/src/net/jesterpm/sermonuploader/config/Config.java b/src/net/jesterpm/sermonuploader/config/Config.java
index d824464..ed239c5 100644
--- a/src/net/jesterpm/sermonuploader/config/Config.java
+++ b/src/net/jesterpm/sermonuploader/config/Config.java
@@ -4,6 +4,9 @@
package net.jesterpm.sermonuploader.config;
+import java.util.Map;
+import java.util.HashMap;
+
/**
* Configuration and metadata parser.
*
@@ -18,6 +21,7 @@ public class Config {
*/
public Config(final String filename) {
mFilename = filename;
+ mConfig = new HashMap<String, String>();
parse();
}
@@ -33,7 +37,7 @@ public class Config {
return mConfig.get(key);
}
- public String put(final String key, final String obj) {
+ public void put(final String key, final String obj) {
mConfig.put(key, obj);
}
}
diff --git a/src/net/jesterpm/sermonuploader/control/ConfigureTask.java b/src/net/jesterpm/sermonuploader/control/ConfigureTask.java
index 1960165..13b2afb 100644
--- a/src/net/jesterpm/sermonuploader/control/ConfigureTask.java
+++ b/src/net/jesterpm/sermonuploader/control/ConfigureTask.java
@@ -22,23 +22,28 @@ public class ConfigureTask {
mAppConfig = appconfig;
mWin = win;
- mWin.setSaveAction(new Action() {
+ mWin.addSaveAction(new Action() {
public void onAction() {
populateConfig();
mAppConfig.save();
mWin.setVisible(false);
- });
+ System.exit(0);
+ }
+ });
- mWin.setCancelAction(new Action() {
+ mWin.addCancelAction(new Action() {
public void onAction() {
mWin.setVisible(false);
- });
+ System.exit(0);
+ }
+ });
- mWin.setAuthorizeAction(new Action() {
+ mWin.addAuthorizeAction(new Action() {
public void onAction() {
populateConfig();
getAuthorization();
- });
+ }
+ });
populateWindow();
}
@@ -47,21 +52,21 @@ public class ConfigureTask {
* Set the fields in the configuration window.
*/
private void populateWindow() {
- mWin.setAWSKey(Config.get("AWSAccessKeyId"));
- mWin.setAWSSecret(Config.get("AWSSecretKey"));
- mWin.setS3Bucket(Config.get("S3Bucket"));
- mWin.setMetadataServer(Config.get("MetadataURL"));
- mWin.setHasAuthKey(Config.get("MetadataAuthKey") != null);
+ mWin.setAWSKey(mAppConfig.get("AWSAccessKeyId"));
+ mWin.setAWSSecret(mAppConfig.get("AWSSecretKey"));
+ mWin.setS3Bucket(mAppConfig.get("S3Bucket"));
+ mWin.setMetadataServer(mAppConfig.get("MetadataURL"));
+ mWin.setHasAuthKey(mAppConfig.get("MetadataAuthKey") != null);
}
/**
* Populate the config from the window.
*/
private void populateConfig() {
- Config.put("AWSAccessKeyId", mWin.getAWSKey());
- Config.put("AWSSecretKey", mWin.getAWSSecret());
- Config.put("S3Bucket", mWin.getS3Bucket());
- Config.put("MetadataURL", mWin.getMetadataServer());
+ mAppConfig.put("AWSAccessKeyId", mWin.getAWSKey());
+ mAppConfig.put("AWSSecretKey", mWin.getAWSSecret());
+ mAppConfig.put("S3Bucket", mWin.getS3Bucket());
+ mAppConfig.put("MetadataURL", mWin.getMetadataServer());
}
/**
diff --git a/src/net/jesterpm/sermonuploader/control/UploadTask.java b/src/net/jesterpm/sermonuploader/control/UploadTask.java
new file mode 100644
index 0000000..722d03a
--- /dev/null
+++ b/src/net/jesterpm/sermonuploader/control/UploadTask.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright 2012 Jesse Morgan
+ */
+
+package net.jesterpm.sermonuploader.control;
+
+import net.jesterpm.sermonuploader.config.Config;
+import net.jesterpm.sermonuploader.ui.ProgressWindow;
+
+/**
+ *
+ * @author Jesse Morgan <jesse@jesterpm.net>
+ */
+public class UploadTask {
+ public UploadTask(final Config appconfig, final ProgressWindow win, final String dir) {
+
+ }
+
+ public void run() {
+
+ }
+}
diff --git a/src/net/jesterpm/sermonuploader/ui/Action.java b/src/net/jesterpm/sermonuploader/ui/Action.java
new file mode 100644
index 0000000..d3e2697
--- /dev/null
+++ b/src/net/jesterpm/sermonuploader/ui/Action.java
@@ -0,0 +1,17 @@
+/*
+ * Copyright 2012 Jesse Morgan
+ */
+
+package net.jesterpm.sermonuploader.ui;
+
+/**
+ * Action handler for the UI.
+ *
+ * @author Jesse Morgan <jesse@jesterpm.net>
+ */
+public interface Action {
+ /**
+ * This method is called when the action is performed.
+ */
+ public void onAction();
+}
diff --git a/src/net/jesterpm/sermonuploader/ui/ConfigurationWindow.java b/src/net/jesterpm/sermonuploader/ui/ConfigurationWindow.java
index 9dcc2dc..033c871 100644
--- a/src/net/jesterpm/sermonuploader/ui/ConfigurationWindow.java
+++ b/src/net/jesterpm/sermonuploader/ui/ConfigurationWindow.java
@@ -4,49 +4,154 @@
package net.jesterpm.sermonuploader.ui;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.WindowAdapter;
+import java.awt.event.WindowEvent;
+import java.awt.Dimension;
+import java.awt.GridBagConstraints;
+import java.awt.GridBagLayout;
+
+import javax.swing.border.EmptyBorder;
+import javax.swing.JButton;
+import javax.swing.JFrame;
+import javax.swing.JLabel;
+import javax.swing.JPanel;
+import javax.swing.JTextField;
+
/**
* UI for the configuration window.
*
* @author Jesse Morgan <jesse@jesterpm.net>
*/
public class ConfigurationWindow extends JFrame {
+ private final JTextField mAWSKey;
+ private final JTextField mAWSSecret;
+ private final JTextField mS3Bucket;
+ private final JTextField mMetadataServer;
+ private final JButton mAuthorize;
+ private final JButton mSave;
+
public ConfigurationWindow() {
- // TODO: Build window.
+ super("Sermon Uploader Configuration");
+
+ JPanel panel = new JPanel();
+ panel.setBorder(new EmptyBorder(10, 10, 10, 10));
+ panel.setLayout(new GridBagLayout());
+ add(panel);
+
+ mAWSKey = new JTextField();
+ mAWSSecret = new JTextField();
+ mS3Bucket = new JTextField();
+ mMetadataServer = new JTextField();
+ mAuthorize = new JButton("Authorize App");
+ mSave = new JButton("Save");
+ mSave.setDefaultCapable(true);
+
+ GridBagConstraints labelConstraint = new GridBagConstraints();
+ GridBagConstraints fieldConstraint = new GridBagConstraints();
+
+ labelConstraint.gridx = 0;
+ labelConstraint.gridy = GridBagConstraints.RELATIVE;
+
+ fieldConstraint.gridx = 1;
+ fieldConstraint.gridy = GridBagConstraints.RELATIVE;
+ fieldConstraint.fill = GridBagConstraints.HORIZONTAL;
+ fieldConstraint.weightx = 1;
+
+ panel.add(new JLabel("Podcast Server:", JLabel.RIGHT), labelConstraint);
+ panel.add(mMetadataServer, fieldConstraint);
+
+ panel.add(new JLabel("AWS Access Key:", JLabel.RIGHT), labelConstraint);
+ panel.add(mAWSKey, fieldConstraint);
+
+ panel.add(new JLabel("AWS Secret Key:", JLabel.RIGHT), labelConstraint);
+ panel.add(mAWSSecret, fieldConstraint);
+
+ panel.add(new JLabel("S3 Bucket:", JLabel.RIGHT), labelConstraint);
+ panel.add(mS3Bucket, fieldConstraint);
+
+ GridBagConstraints buttonConstraint = new GridBagConstraints();
+ buttonConstraint.gridy = 5;
+ buttonConstraint.gridwidth = 2;
+ buttonConstraint.weighty = 1;
+ panel.add(mAuthorize, buttonConstraint);
+
+ buttonConstraint.gridx = 1;
+ buttonConstraint.gridy = 7;
+ buttonConstraint.gridwidth = 1;
+ buttonConstraint.anchor = GridBagConstraints.LAST_LINE_END;
+ panel.add(mSave, buttonConstraint);
+
+ pack();
+ Dimension d = getPreferredSize();
+ d.height += 20;
+ d.width += 50;
+ setMinimumSize(d);
}
public void setAWSKey(final String value) {
-
+ mAWSKey.setText(value);
}
public String getAWSKey() {
-
+ return mAWSKey.getText();
}
public void setAWSSecret(final String value) {
-
+ mAWSSecret.setText(value);
}
public String getAWSSecret() {
-
+ return mAWSSecret.getText();
}
public void setS3Bucket(final String value) {
-
+ mS3Bucket.setText(value);
}
public String getS3Bucket() {
-
+ return mS3Bucket.getText();
}
public void setMetadataServer(final String value) {
-
+ mMetadataServer.setText(value);
}
public String getMetadataServer() {
-
+ return mMetadataServer.getText();
}
public void setHasAuthKey(final boolean value) {
+ if (value) {
+ mAuthorize.setText("Reauthorize App");
+
+ } else {
+ mAuthorize.setText("Authorize App");
+ }
+ }
+
+ public void addAuthorizeAction(final Action a) {
+ mAuthorize.addActionListener(new ActionListener() {
+ public void actionPerformed(final ActionEvent e) {
+ a.onAction();
+ }
+ });
+ }
+
+ public void addSaveAction(final Action a) {
+ mSave.addActionListener(new ActionListener() {
+ public void actionPerformed(final ActionEvent e) {
+ a.onAction();
+ }
+ });
+ }
+ public void addCancelAction(final Action a) {
+ addWindowListener(new WindowAdapter() {
+ public void windowClosing(final WindowEvent e) {
+ a.onAction();
+ }
+ });
}
}
diff --git a/src/net/jesterpm/sermonuploader/ui/ProgressWindow.java b/src/net/jesterpm/sermonuploader/ui/ProgressWindow.java
new file mode 100644
index 0000000..20af58f
--- /dev/null
+++ b/src/net/jesterpm/sermonuploader/ui/ProgressWindow.java
@@ -0,0 +1,13 @@
+/*
+ * Copyright 2012 Jesse Morgan
+ */
+
+package net.jesterpm.sermonuploader.ui;
+
+/**
+ *
+ * @author Jesse Morgan <jesse@jesterpm.net>
+ */
+public class ProgressWindow {
+
+}