diff options
-rw-r--r-- | .gitignore | 3 | ||||
-rw-r--r-- | build.xml | 30 | ||||
-rw-r--r-- | src/net/jesterpm/sermonuploader/SermonUploader.java | 13 | ||||
-rw-r--r-- | src/net/jesterpm/sermonuploader/config/Config.java | 6 | ||||
-rw-r--r-- | src/net/jesterpm/sermonuploader/control/ConfigureTask.java | 35 | ||||
-rw-r--r-- | src/net/jesterpm/sermonuploader/control/UploadTask.java | 22 | ||||
-rw-r--r-- | src/net/jesterpm/sermonuploader/ui/Action.java | 17 | ||||
-rw-r--r-- | src/net/jesterpm/sermonuploader/ui/ConfigurationWindow.java | 123 | ||||
-rw-r--r-- | src/net/jesterpm/sermonuploader/ui/ProgressWindow.java | 13 |
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 { + +} |