From 1469f6950733e45a067dd4f8e69a992645c4838b Mon Sep 17 00:00:00 2001 From: ricky barrette Date: Mon, 10 Jan 2011 19:06:52 +0000 Subject: [PATCH] added a date picker dialog to make it easier to enter dates into searches --- Order Processor/.classpath | 1 + Order Processor/lib/jcalendar-1.3.3.jar | Bin 0 -> 126603 bytes .../TwentyCodes/java/OrderProcessor/Date.java | 12 +-- .../OrderProcessor/DatePickerListener.java | 17 +++ .../java/OrderProcessor/UI/DatePicker.java | 102 ++++++++++++++++++ .../java/OrderProcessor/UI/SearchDialog.java | 63 ++++++++++- .../java/OrderProcessor/UI/ShowAllDialog.java | 11 +- 7 files changed, 194 insertions(+), 12 deletions(-) create mode 100644 Order Processor/lib/jcalendar-1.3.3.jar create mode 100644 Order Processor/src/com/TwentyCodes/java/OrderProcessor/DatePickerListener.java create mode 100644 Order Processor/src/com/TwentyCodes/java/OrderProcessor/UI/DatePicker.java diff --git a/Order Processor/.classpath b/Order Processor/.classpath index 10d15a7..f62240b 100644 --- a/Order Processor/.classpath +++ b/Order Processor/.classpath @@ -3,5 +3,6 @@ + diff --git a/Order Processor/lib/jcalendar-1.3.3.jar b/Order Processor/lib/jcalendar-1.3.3.jar new file mode 100644 index 0000000000000000000000000000000000000000..2e13b77125ef07098fd41aebe01abd1165a04e26 GIT binary patch literal 126603 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, Serializable{ * @return seconds * @author ricky barrette */ - private byte getSecond() { + public byte getSecond() { return this.mSecond; } @@ -119,7 +119,7 @@ public class Date implements Comparable, Serializable{ * @return minutes * @author ricky barrette */ - private byte getMinute() { + public byte getMinute() { return this.mMinute; } @@ -128,7 +128,7 @@ public class Date implements Comparable, Serializable{ * @return hours * @author ricky barrette */ - private byte getHour() { + public byte getHour() { return this.mHour; } @@ -137,7 +137,7 @@ public class Date implements Comparable, Serializable{ * @return day * @author ricky barrette */ - private byte getDay() { + public byte getDay() { return this.mDay; } @@ -146,7 +146,7 @@ public class Date implements Comparable, Serializable{ * @return month * @author ricky barrette */ - private byte getMonth() { + public byte getMonth() { return this.mMonth; } @@ -155,7 +155,7 @@ public class Date implements Comparable, Serializable{ * @return year * @author ricky barrette */ - private int getYear() { + public int getYear() { return this.mYear; } } \ No newline at end of file diff --git a/Order Processor/src/com/TwentyCodes/java/OrderProcessor/DatePickerListener.java b/Order Processor/src/com/TwentyCodes/java/OrderProcessor/DatePickerListener.java new file mode 100644 index 0000000..38651cf --- /dev/null +++ b/Order Processor/src/com/TwentyCodes/java/OrderProcessor/DatePickerListener.java @@ -0,0 +1,17 @@ +/** + * DatePickerInterface.java + * @date Jan 10, 2011 + * @author ricky barrette + * @author Twenty Codes, LLC + */ +package com.TwentyCodes.java.OrderProcessor; + + +/** + * the interface for the DatePicker + * @author ricky barrette + */ +public interface DatePickerListener { + + public void onDatePicked(int resultCode, Date date); +} diff --git a/Order Processor/src/com/TwentyCodes/java/OrderProcessor/UI/DatePicker.java b/Order Processor/src/com/TwentyCodes/java/OrderProcessor/UI/DatePicker.java new file mode 100644 index 0000000..1cbcc94 --- /dev/null +++ b/Order Processor/src/com/TwentyCodes/java/OrderProcessor/UI/DatePicker.java @@ -0,0 +1,102 @@ +/** + * Test.java + * @date Jan 10, 2011 + * @author ricky barrette + * @author Twenty Codes, LLC + */ +package com.TwentyCodes.java.OrderProcessor.UI; + +import java.awt.BorderLayout; +import java.awt.HeadlessException; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; + +import javax.swing.JButton; +import javax.swing.JFrame; +import javax.swing.JLabel; +import javax.swing.JPanel; +import javax.swing.JTextField; + +import com.TwentyCodes.java.OrderProcessor.Date; +import com.TwentyCodes.java.OrderProcessor.DatePickerListener; +import com.TwentyCodes.java.OrderProcessor.InvalidDateFormatException; +import com.toedter.calendar.JCalendar; + +/** + * a simple date picker window that allows the user to easily pick a date + * @author ricky barrette + */ +public class DatePicker extends JFrame implements ActionListener { + + private static final long serialVersionUID = -8460535573336456875L; + private JCalendar mCalendar; + private JButton mOkButton; + private JTextField mHours; + private JTextField mSeconds; + private JTextField mMinutes; + private DatePickerListener mListener; + private JLabel mFailLabel; + private int mResultCode; + + /** + * Creates a new Test + * @throws HeadlessException + * @author ricky barrette + */ + public DatePicker(int resultCode, DatePickerListener listener) { + mResultCode = resultCode; + mListener = listener; + + //Time fields + JPanel p = new JPanel(); + p.add(new JLabel("Hours:")); + mHours = new JTextField(); + mHours.setColumns(10); + p.add(mHours); + p.add(new JLabel("Minutes:")); + mMinutes = new JTextField(); + mMinutes.setColumns(10); + p.add(mMinutes); + p.add(new JLabel("Seconds:")); + mSeconds = new JTextField(); + mSeconds.setColumns(10); + p.add(mSeconds); + this.getContentPane().add(p, BorderLayout.NORTH); + + //Calender + mCalendar = new JCalendar(); + this.getContentPane().add(mCalendar, BorderLayout.CENTER); + + //ok button + mOkButton = new JButton("Ok"); + mOkButton.addActionListener(this); + this.getContentPane().add(mOkButton, BorderLayout.SOUTH); + + //fail label + mFailLabel = new JLabel("Invalid entry"); + mFailLabel.setVisible(false); + p.add(mFailLabel); + + pack(); + this.setVisible(true); + } + + @Override + public void actionPerformed(ActionEvent e) { + try { + mListener.onDatePicked(mResultCode, new Date("\""+ + mCalendar.getYearChooser().getYear()+"-"+ (mCalendar.getMonthChooser().getMonth()+1) +"-"+ mCalendar.getDayChooser().getDay() + + " "+ Integer.parseInt(mHours.getText())+":"+ Integer.parseInt(mMinutes.getText())+":"+ Integer.parseInt(mSeconds.getText())+"\"")); + this.setVisible(false); + } catch (NumberFormatException e1) { + e1.printStackTrace(); + mFailLabel.setVisible(true); + pack(); + } catch (InvalidDateFormatException e1) { + e1.printStackTrace(); + mFailLabel.setVisible(true); + pack(); + } + } + +} \ No newline at end of file diff --git a/Order Processor/src/com/TwentyCodes/java/OrderProcessor/UI/SearchDialog.java b/Order Processor/src/com/TwentyCodes/java/OrderProcessor/UI/SearchDialog.java index e802995..bb4bf87 100644 --- a/Order Processor/src/com/TwentyCodes/java/OrderProcessor/UI/SearchDialog.java +++ b/Order Processor/src/com/TwentyCodes/java/OrderProcessor/UI/SearchDialog.java @@ -9,6 +9,8 @@ package com.TwentyCodes.java.OrderProcessor.UI; import java.awt.BorderLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; +import java.awt.event.MouseEvent; +import java.awt.event.MouseListener; import java.io.IOException; import java.sql.SQLException; import java.util.ArrayList; @@ -21,6 +23,7 @@ import javax.swing.JProgressBar; import javax.swing.JTextField; import com.TwentyCodes.java.OrderProcessor.Date; +import com.TwentyCodes.java.OrderProcessor.DatePickerListener; import com.TwentyCodes.java.OrderProcessor.InvalidDateFormatException; import com.TwentyCodes.java.OrderProcessor.Main; import com.TwentyCodes.java.OrderProcessor.Order; @@ -30,9 +33,11 @@ import com.TwentyCodes.java.OrderProcessor.ProgressListener; * This class will be the dialog that will ask the user for a specific make to show * @author ricky barrette */ -public class SearchDialog extends JFrame implements ActionListener, ProgressListener { +public class SearchDialog extends JFrame implements ActionListener, ProgressListener, MouseListener, DatePickerListener { private static final long serialVersionUID = 1750326106927701404L; + private static final int END_DATE_RESULT = 1; + private static final int START_DATE_RESULT = 0; private JButton mOkButton; private JTextField mTextField; private JProgressBar mProgressBar; @@ -68,12 +73,14 @@ public class SearchDialog extends JFrame implements ActionListener, ProgressList mStartDateField = new JTextField(); panel.add(mStartDateField); mStartDateField.setColumns(12); + mStartDateField.addMouseListener(this); //end date panel.add(new JLabel("End Date:")); mEndDateField = new JTextField(); panel.add(mEndDateField); mEndDateField.setColumns(12); + mEndDateField.addMouseListener(this); //ok button mOkButton = new JButton("Ok"); @@ -181,5 +188,59 @@ public class SearchDialog extends JFrame implements ActionListener, ProgressList } else mProgressBar.setValue(progress); } + + + @Override + public void mouseClicked(MouseEvent e) { + if(e.getSource() == mEndDateField){ + new DatePicker(END_DATE_RESULT, this); + } + + if(e.getSource() == mStartDateField){ + new DatePicker(START_DATE_RESULT, this); + } + } + + + @Override + public void mousePressed(MouseEvent e) { + // TODO Auto-generated method stub + + } + + + @Override + public void mouseReleased(MouseEvent e) { + // TODO Auto-generated method stub + + } + + + @Override + public void mouseEntered(MouseEvent e) { + // TODO Auto-generated method stub + + } + + + @Override + public void mouseExited(MouseEvent e) { + // TODO Auto-generated method stub + + } + + + @Override + public void onDatePicked(int resultCode, Date date) { + switch(resultCode){ + case START_DATE_RESULT: + mStartDateField.setText(date.getYear()+"-"+date.getMonth()+"-"+date.getDay()+" "+date.getHour()+":"+date.getMinute()+":"+date.getSecond()); + break; + case END_DATE_RESULT: + mEndDateField.setText(date.getYear()+"-"+date.getMonth()+"-"+date.getDay()+" "+date.getHour()+":"+date.getMinute()+":"+date.getSecond()); + break; + } + + } } diff --git a/Order Processor/src/com/TwentyCodes/java/OrderProcessor/UI/ShowAllDialog.java b/Order Processor/src/com/TwentyCodes/java/OrderProcessor/UI/ShowAllDialog.java index 3aa896b..d3b8ff0 100644 --- a/Order Processor/src/com/TwentyCodes/java/OrderProcessor/UI/ShowAllDialog.java +++ b/Order Processor/src/com/TwentyCodes/java/OrderProcessor/UI/ShowAllDialog.java @@ -27,6 +27,7 @@ public class ShowAllDialog extends JFrame implements ActionListener, ProgressLis private static final long serialVersionUID = -8416144493079733535L; private JProgressBar mProgressBar; + private OrderPane mOutput; /** * Creates a new ShowAllDialog @@ -36,10 +37,10 @@ public class ShowAllDialog extends JFrame implements ActionListener, ProgressLis setTitle("Show All Orders"); JButton ok = new JButton("Ok"); ok.addActionListener(this); - final OrderPane output = new OrderPane(); + mOutput = new OrderPane(); mProgressBar = new JProgressBar(); getContentPane().add(mProgressBar, BorderLayout.SOUTH); - this.getContentPane().add(output, BorderLayout.CENTER); + this.getContentPane().add(mOutput, BorderLayout.CENTER); this.getContentPane().add(ok, BorderLayout.NORTH); try { mProgressBar.setMaximum(MainWindow.db.getCount()); @@ -49,11 +50,12 @@ public class ShowAllDialog extends JFrame implements ActionListener, ProgressLis mProgressBar.setString("Loading from Database"); mProgressBar.setStringPainted(true); MainWindow.db.setOnProgressListerner(this); + pack(); java.util.concurrent.Executors.newSingleThreadExecutor().submit(new Runnable() { public void run() { try { - output.displayOrders(MainWindow.db.getAllOrders()); + mOutput.displayOrders(MainWindow.db.getAllOrders()); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); @@ -64,11 +66,10 @@ public class ShowAllDialog extends JFrame implements ActionListener, ProgressLis // TODO Auto-generated catch block e.printStackTrace(); } + pack(); } }); - - pack(); setVisible(true); }