b5fc2afc1cc5eff8db35edd03f6bf166bdd3be60
[RRRRHHHH_Code] / ruralHouses / src / gui / ModifyOfferGUI.java
1 package gui;
2
3 import java.awt.Color;
4 import java.awt.Dimension;
5 import java.awt.Rectangle;
6 import java.awt.event.ActionEvent;
7 import java.awt.event.ActionListener;
8 import java.awt.event.FocusEvent;
9 import java.awt.event.FocusListener;
10 import java.awt.event.ItemEvent;
11 import java.awt.event.ItemListener;
12 import java.beans.PropertyChangeEvent;
13 import java.beans.PropertyChangeListener;
14 import java.sql.Date;
15 import java.text.DateFormat;
16 import java.util.Calendar;
17 import java.util.Locale;
18 import java.util.Vector;
19
20 import javax.swing.JButton;
21 import javax.swing.JComboBox;
22 import javax.swing.JFrame;
23 import javax.swing.JLabel;
24 import javax.swing.JTextField;
25
26 import businessLogic.OfferManager;
27
28 import com.toedter.calendar.JCalendar;
29
30 import domain.Offer;
31 import domain.RuralHouse;
32
33 public class ModifyOfferGUI extends JFrame  {
34         
35         private static final long serialVersionUID = 1L;
36
37         private JComboBox<RuralHouse> jComboBox1;
38         private JLabel jLabel1 = new JLabel();
39         private JLabel jLabel2 = new JLabel();
40         private JTextField jTextField1 = new JTextField();
41         private JLabel jLabel3 = new JLabel();
42         private JTextField jTextField2 = new JTextField();
43         private JLabel jLabel4 = new JLabel();
44         private JTextField jTextField3 = new JTextField();
45         private JButton jButton1 = new JButton();
46         // Code for JCalendar
47         private JCalendar jCalendar1 = new JCalendar();
48         private JCalendar jCalendar2 = new JCalendar();
49         private Calendar calendarInicio = null;
50         private Calendar calendarFin = null;
51         private JButton jButton2 = new JButton();
52         private JLabel jLabel5 = new JLabel();
53         private final JLabel jLabel1_o = new JLabel();
54         private JComboBox<Offer> comboBox_o;
55
56         public ModifyOfferGUI(Vector<RuralHouse> v)     {
57                 try     {
58                         jbInit(v);
59                 }
60                 catch (Exception e) {
61                         e.printStackTrace();
62                 }
63         }
64
65         private void jbInit(Vector<RuralHouse> v) throws Exception {
66                 this.getContentPane().setLayout(null);
67                 this.setSize(new Dimension(513, 433));
68                 this.setTitle("Set availability");
69
70                 jComboBox1 = new JComboBox<RuralHouse>(v);
71                 
72                 comboBox_o = new JComboBox<Offer>(((RuralHouse)jComboBox1.getSelectedItem()).getAllOffers());
73                 
74                 DateFormat dateformat1 = DateFormat.getDateInstance(1, jCalendar1.getLocale());
75                 jTextField1.setText(dateformat1.format(((Offer) comboBox_o.getSelectedItem()).getFirstDay()));
76                 jTextField2.setText(dateformat1.format(((Offer) comboBox_o.getSelectedItem()).getLastDay()));
77                 
78                 jComboBox1.setBounds(new Rectangle(115, 12, 115, 20));
79                 jLabel1.setText("List of houses:");
80                 jLabel1.setBounds(new Rectangle(25, 12, 95, 20));
81                 jLabel2.setText("First day :");
82                 jLabel2.setBounds(new Rectangle(25, 75, 85, 25));
83                 jTextField1.setBounds(new Rectangle(25, 265, 220, 25));
84                 jTextField1.setEditable(false);
85                 jLabel3.setText("Last day :");
86                 jLabel3.setBounds(new Rectangle(260, 75, 75, 25));
87                 jTextField2.setBounds(new Rectangle(260, 265, 220, 25));
88                 jTextField2.setEditable(false);
89                 jLabel4.setText("Price:");
90                 jLabel4.setBounds(new Rectangle(260, 30, 75, 20));
91                 jTextField3.setBounds(new Rectangle(350, 30, 115, 20));
92                 jTextField3.setText("0");
93                 jButton1.setText("Accept");
94                 jButton1.setBounds(new Rectangle(100, 360, 130, 30));
95                 jTextField3.addFocusListener(new FocusListener() {
96                         public void focusGained(FocusEvent e) {}
97                         public void focusLost(FocusEvent e) {
98                                 jTextField3_focusLost();
99                         }
100                 });
101                 
102                 jComboBox1.addItemListener(new ItemListener() {
103
104                         @Override
105                         public void itemStateChanged(ItemEvent arg0) {
106                                 Vector<Offer> vo = ((RuralHouse)jComboBox1.getSelectedItem()).offers;
107                                 comboBox_o.removeAllItems();
108                                 for (Offer of: vo){
109                                         comboBox_o.addItem(of);
110                                 }
111                 
112                         }
113                         
114                 });
115                 
116                 comboBox_o.addItemListener(new ItemListener() {
117
118                         @Override
119                         public void itemStateChanged(ItemEvent arg0) {
120                                 if(arg0.getStateChange() == ItemEvent.SELECTED){
121                                         Offer of = (Offer) comboBox_o.getSelectedItem();
122                                         DateFormat dateformat1 = DateFormat.getDateInstance(1, jCalendar1.getLocale());
123                                         jTextField1.setText(dateformat1.format(of.getFirstDay()));
124                                         jTextField2.setText(dateformat1.format(of.getLastDay()));
125                                 }
126                         }
127                         
128                 });
129                 
130                 jButton1.addActionListener(new ActionListener() {
131                         public void actionPerformed(ActionEvent e) {
132                                 jButton1_actionPerformed(e);
133                         }
134                 });
135                 jButton2.setText("Cancel");
136                 jButton2.setBounds(new Rectangle(270, 360, 130, 30));
137                 jButton2.addActionListener(new ActionListener() {
138                         public void actionPerformed(ActionEvent e) {
139                                 jButton2_actionPerformed(e);
140                         }
141                 });
142                 jLabel5.setBounds(new Rectangle(100, 320, 300, 20));
143                 jLabel5.setForeground(Color.red);
144                 jLabel5.setSize(new Dimension(305, 20));
145                 jCalendar1.setBounds(new Rectangle(25, 100, 220, 165));
146                 jCalendar2.setBounds(new Rectangle(260, 100, 220, 165));
147
148                 // Code for JCalendar
149                 this.jCalendar1.addPropertyChangeListener(new PropertyChangeListener() {
150                         public void propertyChange(PropertyChangeEvent propertychangeevent) {
151                                 if (propertychangeevent.getPropertyName().equals("locale")) {
152                                         jCalendar1.setLocale((Locale) propertychangeevent.getNewValue());
153                                         DateFormat dateformat = DateFormat.getDateInstance(1, jCalendar1.getLocale());
154                                         jTextField1.setText(dateformat.format(calendarInicio.getTime()));
155                                 }
156                                 else if (propertychangeevent.getPropertyName().equals("calendar")) {
157                                         calendarInicio = (Calendar) propertychangeevent.getNewValue();
158                                         DateFormat dateformat1 = DateFormat.getDateInstance(1, jCalendar1.getLocale());
159                                         jTextField1.setText(dateformat1.format(calendarInicio.getTime()));
160                                         jCalendar1.setCalendar(calendarInicio);
161                                 }
162                         } 
163                 });
164
165                 this.jCalendar2.addPropertyChangeListener(new PropertyChangeListener() {
166                         public void propertyChange(PropertyChangeEvent propertychangeevent) {
167                                 if (propertychangeevent.getPropertyName().equals("locale")) {
168                                         jCalendar2.setLocale((Locale) propertychangeevent.getNewValue());
169                                         DateFormat dateformat = DateFormat.getDateInstance(1, jCalendar2.getLocale());
170                                         jTextField2.setText(dateformat.format(calendarFin.getTime()));
171                                 }
172                                 else if (propertychangeevent.getPropertyName().equals("calendar")) {
173                                         calendarFin = (Calendar) propertychangeevent.getNewValue();
174                                         DateFormat dateformat1 = DateFormat.getDateInstance(1, jCalendar2.getLocale());
175                                         jTextField2.setText(dateformat1.format(calendarFin.getTime()));
176                                         jCalendar2.setCalendar(calendarFin);
177                                 }
178                         } 
179                 });
180
181                 this.getContentPane().add(jCalendar2, null);
182                 this.getContentPane().add(jCalendar1, null);
183                 this.getContentPane().add(jLabel5, null);
184                 this.getContentPane().add(jButton2, null);
185                 this.getContentPane().add(jButton1, null);
186                 this.getContentPane().add(jTextField3, null);
187                 this.getContentPane().add(jLabel4, null);
188                 this.getContentPane().add(jTextField2, null);
189                 this.getContentPane().add(jLabel3, null);
190                 this.getContentPane().add(jTextField1, null);
191                 this.getContentPane().add(jLabel2, null);
192                 this.getContentPane().add(jLabel1, null);
193                 this.getContentPane().add(jComboBox1, null);
194                 jLabel1_o.setText("List of offers:");
195                 jLabel1_o.setBounds(new Rectangle(25, 30, 95, 20));
196                 jLabel1_o.setBounds(25, 44, 95, 20);
197                 
198                 getContentPane().add(jLabel1_o);
199                 comboBox_o.setBounds(new Rectangle(115, 30, 115, 20));
200                 comboBox_o.setBounds(115, 44, 115, 20);
201                 
202                 getContentPane().add(comboBox_o);
203         }
204
205         private void jButton1_actionPerformed(ActionEvent e) {
206                 RuralHouse ruralHouse=((RuralHouse)jComboBox1.getSelectedItem());
207                 Date firstDay=new Date(jCalendar1.getCalendar().getTime().getTime());
208                 //Remove the hour:minute:second:ms from the date 
209                 firstDay=Date.valueOf(firstDay.toString());
210                 Date lastDay=new Date(jCalendar2.getCalendar().getTime().getTime());
211                 //Remove the hour:minute:second:ms from the date 
212                 lastDay=Date.valueOf(lastDay.toString());
213                 //It could be to trigger an exception if the introduced string is not a number
214                 float price= Float.parseFloat(jTextField3.getText());
215                 try {
216                         //Obtain the business logic from a StartWindow class (local or remote)
217                         OfferManager offerM = new OfferManager();
218                         offerM.deleteOffer(ruralHouse, (Offer)comboBox_o.getSelectedItem());
219                         offerM.createOffer(ruralHouse, firstDay, lastDay, price); 
220
221                         this.setVisible(false);
222                 }
223                 catch (Exception e1) {
224                         e1.printStackTrace();
225                 }
226         }
227         
228         private void jButton2_actionPerformed(ActionEvent e) {
229                 this.setVisible(false);
230         }
231
232         private void jTextField3_focusLost() {
233                 try {
234                         new Integer (jTextField3.getText());
235                         jLabel5.setText("");
236                 }
237                 catch (NumberFormatException ex) {
238                         jLabel5.setText("Error: Please introduce a number");
239                 }
240         }
241 }