From dc44d733b56335f56f2fae23acf2c04277a0ce2f Mon Sep 17 00:00:00 2001 From: Christopher Baines Date: Fri, 23 Mar 2012 21:45:58 +0000 Subject: Weeks somewhat working... --- src/net/cbaines/suca/CalendarApplet.java | 91 +++++++++++++++++++++++++------- 1 file changed, 72 insertions(+), 19 deletions(-) (limited to 'src/net/cbaines/suca/CalendarApplet.java') 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(); + } + + } + } + } -- cgit v1.2.3