858b9636fa868407a6bbf930410bae7c6e3099de
[scilab.git] / scilab / modules / gui / src / java / org / scilab / modules / gui / console / ScilabConsole.java
1 /*
2  * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3  * Copyright (C) 2007 - INRIA - Vincent Couvert
4  * Copyright (C) 2007 - INRIA - Marouane BEN JELLOUL
5  * 
6  * This file must be used under the terms of the CeCILL.
7  * This source file is licensed as described in the file COPYING, which
8  * you should have received as part of this distribution.  The terms
9  * are also available at    
10  * http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
11  *
12  */
13
14 package org.scilab.modules.gui.console;
15
16 import org.scilab.modules.gui.bridge.ScilabBridge;
17 import org.scilab.modules.gui.dockable.ScilabDockable;
18 import org.scilab.modules.gui.utils.Position;
19 import org.scilab.modules.gui.utils.Size;
20
21 /**
22  * Class for Scilab Console in GUIs
23  * @author Vincent COUVERT
24  * @author Marouane BEN JELLOUL
25  */
26 public class ScilabConsole extends ScilabDockable implements Console {
27
28         private static Console instance;
29         
30         private SimpleConsole component;
31
32         /**
33          * Constructor
34          */
35         protected ScilabConsole() {
36                 component = ScilabBridge.createConsole();
37         }
38
39         /**
40          * Creates a Scilab Console
41          * @return the created console
42          */
43         public static Console createConsole() {
44                 if (instance == null) {
45                         instance = new ScilabConsole();
46                 }
47                 return instance;
48         }
49
50         /**
51          * get a Scilab Console
52          * @return the console
53          */
54         public static Console getConsole() {
55                 if (instance == null) {
56                         instance = new ScilabConsole();
57                 }
58                 return instance;
59         }
60         
61         /**
62          * Gets this Bridge component object
63          * @return this Bridge component object
64          */
65         public SimpleConsole getAsSimpleConsole() {
66                 return component;
67         }
68
69         /**
70          * Displays data in the console
71          * @param dataToDisplay the data to be displayed
72          * @see fr.scilab.console.Console#display()
73          */
74         public void display(String dataToDisplay) {
75                 ScilabBridge.display(this, dataToDisplay);
76         }
77
78         /**
79          * Reads input data in the console
80          * @return the data entered by the user
81          * @see org.scilab.modules.shell.Console#readLine()
82          */
83         public String readLine() {
84                 return ScilabBridge.readLine(this);
85         }
86
87         /**
88          * Draw a console
89          * @see org.scilab.modules.gui.UIElement#draw()
90          */
91         public void draw() {
92                 ScilabBridge.draw(this);
93         }
94
95         /**
96          * Gets the dimensions (width and height) of a Scilab console
97          * @return the size of the console
98          * @see org.scilab.modules.gui.UIElement#getDims()
99          */
100         public Size getDims() {
101                 return ScilabBridge.getDims(this);
102         }
103
104         /**
105          * Gets the position (X-coordinate and Y-coordinates) of a Scilab console
106          * @return the position of the console
107          * @see org.scilab.modules.gui.UIElement#getPosition()
108          */
109         public Position getPosition() {
110                 return ScilabBridge.getPosition(this);
111         }
112
113         /**
114          * Gets the visibility status of a console
115          * @return the visibility status of the console (true if the console is visible, false if not)
116          * @see org.scilab.modules.gui.UIElement#isVisible()
117          */
118         public boolean isVisible() {
119                 return ScilabBridge.isVisible(this);
120         }
121
122         /**
123          * Sets the dimensions (width and height) of a Scilab console
124          * @param newSize the size we want to set to the console
125          * @see org.scilab.modules.gui.UIElement#setDims(org.scilab.modules.gui.utils.Size)
126          */
127         public void setDims(Size newSize) {
128                 ScilabBridge.setDims(this, newSize);
129         }
130
131         /**
132          * Sets the position (X-coordinate and Y-coordinate) of a Scilab console
133          * @param newPosition the position we want to set to the console
134          * @see org.scilab.modules.gui.UIElement#setPosition(org.scilab.modules.gui.utils.Position)
135          */
136         public void setPosition(Position newPosition) {
137                 ScilabBridge.setPosition(this, newPosition);
138         }
139
140         /**
141          * Sets the visibility status of a Scilab console
142          * @param newVisibleState the visibility status we want to set to the console
143          * @see org.scilab.modules.gui.UIElement#setVisible(boolean)
144          */
145         public void setVisible(boolean newVisibleState) {
146                 ScilabBridge.setVisible(this, newVisibleState);
147         }
148
149         /**
150          * Clears the console (no more scroll history and prompt on top left corner)
151          */
152         public void clear() {
153                 ScilabBridge.clear(this);
154         }
155
156         /**
157          * Clears lines from the end of the output view
158          * @param nbLines the number of lines to be deleted
159          */
160         public void clear(int nbLines) {
161                 ScilabBridge.clear(this, nbLines);
162         }
163
164         /**
165          * Puts the prompt in the top left corner of the console
166          */
167         public void toHome() {
168                 ScilabBridge.toHome(this);
169         }
170
171         /**
172          * Reads one user input char
173          * @return the data entered by the user
174          * @see fr.scilab.console.Console#getCharWithoutOutput()
175          */
176         public int getCharWithoutOutput() {
177                 return ScilabBridge.getCharWithoutOutput(this);
178         }
179
180         /**
181          * Sets the prompt displayed in the console
182          * @param prompt the prompt to be displayed in the console
183          */
184         public void setPrompt(String prompt) {
185                 ScilabBridge.setPrompt(this, prompt);
186         }
187
188         /**
189          * Updates Scilab internal variables containing the size of the console
190          * These variables are used to format data before displaying it
191          */
192         public void scilabLinesUpdate() {
193                 ScilabBridge.scilabLinesUpdate(this);
194         }
195
196         /**
197          * Get the current status of the console
198          * If the prompt view is visible, Scilab is waiting for commands
199          * @return true is Scilab is waiting for commands
200          */
201         public boolean isWaitingForInput() {
202                 return ScilabBridge.isWaitingForInput(this);
203         }
204         
205         /**
206          * Clear the commands history 
207          */
208         public void clearHistory() {
209                 ScilabBridge.clearHistory(this);
210         }
211
212 }