961547ca5a1849355a9fcdafa209edfed855b291
[scilab.git] / scilab / modules / gui / src / java / org / scilab / modules / gui / events / BlockingResult.java
1 /*
2  * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3  * Copyright (C) 2008 - INRIA
4  * 
5  * This file must be used under the terms of the CeCILL.
6  * This source file is licensed as described in the file COPYING, which
7  * you should have received as part of this distribution.  The terms
8  * are also available at    
9  * http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
10  *
11  */
12
13 package org.scilab.modules.gui.events;
14
15 /**
16  * Class use for dialogs that wait for a user input
17  * 
18  * @author Bruno JOFRET
19  */
20 public final class BlockingResult {
21
22         private static BlockingResult me;
23         
24         private String theResult;
25         
26         /**
27          * Constructor
28          */
29         private BlockingResult() {
30                 theResult = null;
31         }
32
33         /**
34          * Get the current instance of BlockingResult
35          * @return this instance
36          */
37         public static BlockingResult getInstance() {
38                 if (me == null) {
39                         me = new BlockingResult();      
40                 }
41                 return me;
42         }
43         
44         /**
45          * Get the user input (wait until it)
46          * @return the user input
47          */
48         public String getResult() {
49                 synchronized (me) {
50                         try {
51                                 me.wait();
52                         } catch (InterruptedException e) {
53                                 // TODO Auto-generated catch block
54                                 e.printStackTrace();
55                         }
56                 }
57                 return me.theResult;
58         }
59
60         /**
61          * Set the result for this BlockingResult and notify
62          * @param theResult the user input to set
63          */
64         public void setResult(String theResult) {
65                 this.theResult = theResult;
66                 synchronized (me) {
67                         me.notify();
68                 }
69         }
70         
71         
72         
73 }