aboutsummaryrefslogtreecommitdiff
path: root/src/net/cbaines/suca/CalendarApplet.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/net/cbaines/suca/CalendarApplet.java')
-rw-r--r--src/net/cbaines/suca/CalendarApplet.java91
1 files changed, 72 insertions, 19 deletions
diff --git a/src/net/cbaines/suca/CalendarApplet.java b/src/net/cbaines/suca/CalendarApplet.java
index 0357bbf..329c180 100644
--- a/src/net/cbaines/suca/CalendarApplet.java
+++ b/src/net/cbaines/suca/CalendarApplet.java
@@ -13,6 +13,7 @@ import java.io.StringReader;
import javax.security.auth.login.LoginException;
import javax.swing.JApplet;
import javax.swing.JButton;
+import javax.swing.JCheckBox;
import javax.swing.JFileChooser;
import javax.swing.JLabel;
import javax.swing.JPanel;
@@ -38,8 +39,6 @@ public class CalendarApplet extends JApplet {
// The panel used for the file fetch stuff
private JPanel csvFileFetchPanel;
- private JLabel csvFileFetchInstructions;
-
private JTextField usernameTextField;
private JPasswordField passwordTextField;
private JButton go;
@@ -62,6 +61,15 @@ public class CalendarApplet extends JApplet {
private JPanel calendarCreationOptions;
+ private JProgressBar creationProgress;
+ private JButton createCalendarButton;
+ private JCheckBox mergeDuplicateEventsWithSeperateLocations = new JCheckBox(
+ "Merge Duplicate Events with Seperate Locations", true);
+ private JCheckBox showTerms = new JCheckBox("Show Terms", true);
+ private JCheckBox showSemesters = new JCheckBox("Show Semesters", true);
+ private JCheckBox showSemesterWeeks = new JCheckBox("Show Semester Weeks", true);
+ private JCheckBox mergeHeaders = new JCheckBox("Merge Headers", false);
+
// This is more of a development feature....?
private JTextArea calendarPreviewTextArea;
@@ -139,24 +147,12 @@ public class CalendarApplet extends JApplet {
calendarCreationOptions = new JPanel();
- JButton createCalendarButton = new JButton("Create Calendar");
+ createCalendarButton = new JButton("Create Calendar");
createCalendarButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
-
- SotonCalendarParser calParser = new SotonCalendarParser();
-
- CalendarBuilder builder = new CalendarBuilder(calParser);
- try {
- Calendar calendar = builder.build(new StringReader(calendarCSVString));
- calendarICALString = calendar.toString();
- calendarPreviewTextArea.setText(calendarICALString);
- System.out.println(calendarICALString);
- } catch (ParserException e) {
- e.printStackTrace();
- } catch (IOException e) {
- e.printStackTrace();
- }
+ createCalendarButton.setEnabled(false);
+ new CreationThread().start();
}
});
calendarCreationOptions.add(createCalendarButton);
@@ -169,11 +165,13 @@ public class CalendarApplet extends JApplet {
JFileChooser fc = new JFileChooser();
int returnVal = fc.showSaveDialog(instance); // this = Applet
if (returnVal == JFileChooser.APPROVE_OPTION) {
- File aFile = fc.getSelectedFile();
+ File file = fc.getSelectedFile();
try {
- BufferedWriter out = new BufferedWriter(new FileWriter(aFile));
+ BufferedWriter out = new BufferedWriter(new FileWriter(file));
out.write(calendarICALString);
+ out.flush();
+ out.close();
} catch (IOException e) {
e.printStackTrace();
}
@@ -184,6 +182,16 @@ public class CalendarApplet extends JApplet {
});
calendarCreationOptions.add(saveCalendarButton);
+ calendarCreationOptions.add(mergeDuplicateEventsWithSeperateLocations);
+ calendarCreationOptions.add(showTerms);
+ calendarCreationOptions.add(showSemesters);
+ calendarCreationOptions.add(showSemesterWeeks);
+ calendarCreationOptions.add(mergeHeaders);
+ creationProgress = new JProgressBar();
+ creationProgress.setIndeterminate(true);
+ creationProgress.setVisible(false);
+ calendarCreationOptions.add(creationProgress);
+
calendarCreationPanel.add(calendarCreationOptions);
calendarPreviewTextArea = new JTextArea();
@@ -215,6 +223,8 @@ public class CalendarApplet extends JApplet {
String csvString;
try {
+ fetchProgress.setValue(0);
+ fetchProgress.setIndeterminate(true);
fetchProgress.setVisible(true);
csvString = new SotonCalendarFetcher(usernameTextField.getText(), String.valueOf(passwordTextField
@@ -241,4 +251,47 @@ public class CalendarApplet extends JApplet {
}
}
+ private class CreationThread extends Thread {
+
+ public CreationThread() {
+ super();
+ }
+
+ @Override
+ public void run() {
+ System.out.println("Starting creation thread");
+
+ creationProgress.setVisible(true);
+ creationProgress.setValue(0);
+ creationProgress.setIndeterminate(true);
+
+ SotonCalendarParser calParser = new SotonCalendarParser();
+ calParser.setMergeDuplicateEventsWithSeperateLocations(mergeDuplicateEventsWithSeperateLocations
+ .isSelected());
+ calParser.setMergeHeaders(mergeHeaders.isSelected());
+ calParser.setShowSemesters(showSemesters.isSelected());
+ calParser.setShowSemesterWeeks(showSemesterWeeks.isSelected());
+ calParser.setShowTerms(showTerms.isSelected());
+
+ CalendarBuilder builder = new CalendarBuilder(calParser);
+ try {
+ Calendar calendar = builder.build(new StringReader(calendarCSVString));
+ calendarICALString = calendar.toString();
+ calendarPreviewTextArea.setText(calendarICALString);
+ System.out.println(calendarICALString);
+
+ createCalendarButton.setEnabled(true);
+
+ creationProgress.setIndeterminate(false);
+ creationProgress.setValue(100);
+ creationProgress.setString("Finished");
+ } catch (ParserException e) {
+ e.printStackTrace();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+
+ }
+ }
+
}