6d7569af6d1b578ea59341b611017d928defad98
[scilab.git] / scilab / modules / gui / src / java / org / scilab / modules / gui / tab / ScilabTabBridge.java
1 /*
2  * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3  * Copyright (C) 2007 - INRIA - Vincent Couvert
4  * Copyright (C) 2009 - DIGITEO - Sylvestre Koumar
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.tab;
15
16 import org.scilab.modules.gui.bridge.tab.SwingScilabTab;
17 import org.scilab.modules.gui.canvas.Canvas;
18 import org.scilab.modules.gui.checkbox.CheckBox;
19 import org.scilab.modules.gui.console.Console;
20 import org.scilab.modules.gui.editbox.EditBox;
21 import org.scilab.modules.gui.events.callback.CommonCallBack;
22 import org.scilab.modules.gui.frame.Frame;
23 import org.scilab.modules.gui.helpbrowser.HelpBrowser;
24 import org.scilab.modules.gui.label.Label;
25 import org.scilab.modules.gui.listbox.ListBox;
26 import org.scilab.modules.gui.menubar.MenuBar;
27 import org.scilab.modules.gui.popupmenu.PopupMenu;
28 import org.scilab.modules.gui.pushbutton.PushButton;
29 import org.scilab.modules.gui.radiobutton.RadioButton;
30 import org.scilab.modules.gui.imagerenderer.ImageRenderer;
31 import org.scilab.modules.gui.uitable.UiTable;
32 import org.scilab.modules.gui.uidisplaytree.UiDisplayTree;
33 import org.scilab.modules.gui.slider.Slider;
34 import org.scilab.modules.gui.tree.Tree;
35 import org.scilab.modules.gui.utils.Position;
36 import org.scilab.modules.gui.utils.Size;
37
38 /**
39  * Bridge for Scilab tabs in GUIs
40  * @author Vincent COUVERT
41  */
42 public class ScilabTabBridge {
43
44     /**
45      * Constructor
46      */
47     protected ScilabTabBridge() {
48         throw new UnsupportedOperationException(); /* Prevents calls from subclass */
49     };
50
51     /**
52      * Creates a Scilab tab
53      * @param name the name of the tab (used to identify it)
54      * @return the created tab
55      */
56     public static SimpleTab createTab(String name) {
57         return new SwingScilabTab(name);
58     }
59
60     /**
61      * Creates a Scilab tab
62      * @param name the name of the tab (used to identify it)
63      * @return the created tab
64      */
65     public static SimpleTab createTab(String name, String uuid) {
66         return new SwingScilabTab(name, uuid);
67     }
68
69     /**
70      * Creates a Scilab tab able to display a figure handle
71      * @param name the name of the tab (used to identify it)
72      * @param figureId id of the displayed figure
73      * @return the created tab
74      */
75     public static SimpleTab createTab(String name, int figureId) {
76         return new SwingScilabTab(name, figureId);
77     }
78
79     /**
80      * Draws a Scilab tab
81      * @param tab the tab to draw
82      */
83     public static void draw(Tab tab) {
84         tab.getAsSimpleTab().draw();
85     }
86
87     /**
88      * Gets the dimensions (width and height) of a Scilab tab
89      * @param tab the tab we want to get the dimensions of
90      * @return the dimensions of the tab
91      */
92     public static Size getDims(Tab tab) {
93         return tab.getAsSimpleTab().getDims();
94     }
95
96     /**
97      * Sets the dimensions (width and height) of a Scilab tab
98      * @param tab the tab we want to set the dimensions of
99      * @param newTabSize the dimensions we want to set to the tab
100      */
101     public static void setDims(Tab tab, Size newTabSize) {
102         tab.getAsSimpleTab().setDims(newTabSize);
103     }
104
105     /**
106      * Gets the position (X-coordinate and Y-coordinate) of a Scilab tab
107      * @param tab the tab we want to get the position of
108      * @return the position of the tab
109      */
110     public static Position getPosition(Tab tab) {
111         return tab.getAsSimpleTab().getPosition();
112     }
113
114     /**
115      * Sets the position (X-coordinate and Y-coordinate) of a Scilab tab
116      * @param tab the tab we want to set the position of
117      * @param newTabPosition the position we want to set to the tab
118      */
119     public static void setPosition(Tab tab, Position newTabPosition) {
120         tab.getAsSimpleTab().setPosition(newTabPosition);
121     }
122
123     /**
124      * Gets the Name of a Scilab tab
125      * @param tab the tab we want to get the title of
126      * @return the title of the tab
127      */
128     public static String getName(Tab tab) {
129         return tab.getAsSimpleTab().getName();
130     }
131
132     /**
133      * Sets the name of a Scilab tab
134      * @param tab the tab we want to set the name of
135      * @param newTabName the name to set to the tab
136      */
137     public static void setName(Tab tab, String newTabName) {
138         tab.getAsSimpleTab().setName(newTabName);
139     }
140
141     /**
142      * Gets the visibility status of a Siclab tab
143      * @param tab the tab we want to get the visibility status of
144      * @return the visibility status of the tab (true if the tab is visible, false if not)
145      */
146     public static boolean isVisible(Tab tab) {
147         return tab.getAsSimpleTab().isVisible();
148     }
149
150     /**
151      * Sets the visibility status of a Siclab tab
152      * @param tab the tab we want to set the visibility status of
153      * @param newVisibleState the visibility status to set to the tab (true to set the tab visible, false else)
154      */
155     public static void setVisible(Tab tab, boolean newVisibleState) {
156         tab.getAsSimpleTab().setVisible(newVisibleState);
157     }
158
159     /**
160      * Add a member (dockable element) to a tab and returns the index of this member
161      * @param tab the tab where we want to add the member
162      * @param member the member to add
163      * @return index of member
164      */
165     public static int addMember(Tab tab, Frame member) {
166         return tab.getAsSimpleTab().addMember(member);
167     }
168
169     /**
170      * Remove a Frame member from a tab
171      * @param tab the tab which we want to add the Frame to
172      * @param member the Frame to add
173      */
174     public static void removeMember(Tab tab, Frame member) {
175         tab.getAsSimpleTab().removeMember(member);
176     }
177
178     /**
179      * Add a member (dockable element) to a tab and returns the index of this member
180      * @param tab the tab where we want to add the member
181      * @param member the member to add
182      * @return index of member
183      */
184     public static int addMember(Tab tab, Console member) {
185         return tab.getAsSimpleTab().addMember(member);
186     }
187
188     /**
189      * We want to be able to add directly a HelpBrowser in a Tab.
190      * @param tab the tab where we want to add the member
191      * @param member the member to add
192      * @return the position of the HelpBrowser in the member list.
193      */
194     public static int addMember(Tab tab, HelpBrowser member) {
195         return tab.getAsSimpleTab().addMember(member);
196     }
197
198     /**
199      * Add a member (dockable element) to a tab and returns the index of this member
200      * @param tab the tab where we want to add the member
201      * @param member the member to add
202      * @return index of member
203      */
204     public static int addMember(Tab tab, Canvas member) {
205         return (tab.getAsSimpleTab().addMember(member));
206     }
207
208     /**
209      * Add a member (dockable element) to a tab and returns the index of this member
210      * @param tab the tab which we want to add the pushbutton to
211      * @param member the pushbutton to add
212      * @return the position of the pushbutton in the member list.
213      */
214     public static int addMember(Tab tab, PushButton member) {
215         return (tab.getAsSimpleTab().addMember(member));
216     }
217
218     /**
219      * Remove a PushButton member from a tab
220      * @param tab the tab which we want to add the PushButton to
221      * @param member the PushButton to add
222      */
223     public static void removeMember(Tab tab, PushButton member) {
224         tab.getAsSimpleTab().removeMember(member);
225     }
226
227     /**
228      * Add a member (dockable element) to a tab and returns the index of this member
229      * @param tab the tab which we want to add the EditBox to
230      * @param member the EditBox to add
231      * @return the position of the EditBox in the member list.
232      */
233     public static int addMember(Tab tab, EditBox member) {
234         return (tab.getAsSimpleTab().addMember(member));
235     }
236
237     /**
238      * Remove an EditBox member from a tab
239      * @param tab the tab which we want to remove the EditBox from
240      * @param member the EditBox to add
241      */
242     public static void removeMember(Tab tab, EditBox member) {
243         tab.getAsSimpleTab().removeMember(member);
244     }
245
246     /**
247      * Add a member (dockable element) to a tab and returns the index of this member
248      * @param tab the tab which we want to add the Label to
249      * @param member the Label to add
250      * @return the position of the Label in the member list.
251      */
252     public static int addMember(Tab tab, Label member) {
253         return (tab.getAsSimpleTab().addMember(member));
254     }
255
256     /**
257      * Remove a Label member from a tab
258      * @param tab the tab which we want to remove the Label from
259      * @param member the Label to add
260      */
261     public static void removeMember(Tab tab, Label member) {
262         tab.getAsSimpleTab().removeMember(member);
263     }
264
265     /**
266      * Add a member (dockable element) to a tab and returns the index of this member
267      * @param tab the tab which we want to add the CheckBox to
268      * @param member the CheckBox to add
269      * @return the position of the CheckBox in the member list.
270      */
271     public static int addMember(Tab tab, CheckBox member) {
272         return (tab.getAsSimpleTab().addMember(member));
273     }
274
275     /**
276      * Remove a CheckBox member from a tab
277      * @param tab the tab which we want to remove the CheckBox from
278      * @param member the CheckBox to add
279      */
280     public static void removeMember(Tab tab, CheckBox member) {
281         tab.getAsSimpleTab().removeMember(member);
282     }
283
284     /**
285      * Add a member (dockable element) to a tab and returns the index of this member
286      * @param tab the tab which we want to add the RadioButton to
287      * @param member the RadioButton to add
288      * @return the position of the RadioButton in the member list.
289      */
290     public static int addMember(Tab tab, RadioButton member) {
291         return (tab.getAsSimpleTab().addMember(member));
292     }
293
294     /**
295      * Remove a RadioButton member from a tab
296      * @param tab the tab which we want to remove the RadioButton from
297      * @param member the RadioButton to add
298      */
299     public static void removeMember(Tab tab, RadioButton member) {
300         tab.getAsSimpleTab().removeMember(member);
301     }
302
303     /**
304      * Add a member (dockable element) to a tab and returns the index of this member
305      * @param tab the tab which we want to add the ImageRenderer to
306      * @param member the ImageRenderer to add
307      * @return the position of the ImageRenderer in the member list.
308      */
309     public static int addMember(Tab tab, ImageRenderer member) {
310         return (tab.getAsSimpleTab().addMember(member));
311     }
312
313     /**
314      * Remove a ImageRenderer member from a tab
315      * @param tab the tab which we want to remove the ImageRenderer from
316      * @param member the ImageRenderer to add
317      */
318     public static void removeMember(Tab tab, ImageRenderer member) {
319         tab.getAsSimpleTab().removeMember(member);
320     }
321
322     /**
323      * Add a member (dockable element) to a tab and returns the index of this member
324      * @param tab the tab which we want to add the UiTable to
325      * @param member the UiTable to add
326      * @return the position of the UiTable in the member list.
327      */
328     public static int addMember(Tab tab, UiTable member) {
329         return (tab.getAsSimpleTab().addMember(member));
330     }
331
332     /**
333      * Remove a UiTable member from a tab
334      * @param tab the tab which we want to remove the UiTable from
335      * @param member the UiTable to add
336      */
337     public static void removeMember(Tab tab, UiTable member) {
338         tab.getAsSimpleTab().removeMember(member);
339     }
340
341     public static int addMember(Tab tab, UiDisplayTree member) {
342         return (tab.getAsSimpleTab().addMember(member));
343     }
344     public static void removeMember(Tab tab, UiDisplayTree member) {
345         tab.getAsSimpleTab().removeMember(member);
346     }
347
348     /**
349      * Add a member (dockable element) to a tab and returns the index of this member
350      * @param tab the tab which we want to add the Slider to
351      * @param member the Slider to add
352      * @return the position of the Slider in the member list.
353      */
354     public static int addMember(Tab tab, Slider member) {
355         return (tab.getAsSimpleTab().addMember(member));
356     }
357
358     /**
359      * Remove a Slider member from a tab
360      * @param tab the tab which we want to remove the Slider from
361      * @param member the Slider to add
362      */
363     public static void removeMember(Tab tab, Slider member) {
364         tab.getAsSimpleTab().removeMember(member);
365     }
366
367     /**
368      * Add a member (dockable element) to a tab and returns the index of this member
369      * @param tab the tab which we want to add the ListBox to
370      * @param member the ListBox to add
371      * @return the position of the ListBox in the member list.
372      */
373     public static int addMember(Tab tab, ListBox member) {
374         return (tab.getAsSimpleTab().addMember(member));
375     }
376
377     /**
378      * Remove a ListBox member from a tab
379      * @param tab the tab which we want to remove the ListBox from
380      * @param member the ListBox to add
381      */
382     public static void removeMember(Tab tab, ListBox member) {
383         tab.getAsSimpleTab().removeMember(member);
384     }
385
386     /**
387      * Add a member (dockable element) to a tab and returns the index of this member
388      * @param tab the tab which we want to add the PopupMenu to
389      * @param member the PopupMenu to add
390      * @return the position of the PopupMenu in the member list.
391      */
392     public static int addMember(Tab tab, PopupMenu member) {
393         return (tab.getAsSimpleTab().addMember(member));
394     }
395
396     /**
397      * Remove a PopupMenu member from a tab
398      * @param tab the tab which we want to remove the PopupMenu from
399      * @param member the PopupMenu to add
400      */
401     public static void removeMember(Tab tab, PopupMenu member) {
402         tab.getAsSimpleTab().removeMember(member);
403     }
404
405     /**
406      * Sets a MenuBar to a Scilab tab
407      * @param tab the tab which we want to add the MenuBar to
408      * @param newMenuBar the MenuBar to add to the tab
409      */
410     public static void addMenuBar(Tab tab, MenuBar newMenuBar) {
411         tab.addMenuBar(newMenuBar);
412     }
413
414     /**
415      * We want to be able to remove directly a Canvas from a Tab.
416      * @param tab the tab from which we want to remove the Canvas from
417      * @param member canvas to remove 
418      */
419     public static void removeMember(Tab tab, Canvas member) {
420         tab.getAsSimpleTab().removeMember(member);
421     }
422
423     /**
424      * Add a member (dockable element) to a tab and returns the index of this member
425      * @param tab the tab which we want to add the Tree to
426      * @param member the Tree to add
427      * @return the position of the Tree in the member list.
428      */
429     public static int addMember(Tab tab, Tree member) {
430         return (tab.getAsSimpleTab().addMember(member));
431     }
432
433     /**
434      * Remove a Tree member from a tab
435      * @param tab the tab which we want to remove the Tree from
436      * @param member the Tree to add
437      */
438     public static void removeMember(Tab tab, Tree member) {
439         tab.getAsSimpleTab().removeMember(member);
440     }
441
442     /**
443      * Get the current status of the Tab in its parent
444      * @param tab the tab which we want to add the MenuBar to
445      * @return true is the tab is the tab currently "on top" in its parent
446      */
447     public static boolean isCurrentTab(Tab tab) {
448         return (tab.getAsSimpleTab().isCurrentTab());
449     }
450
451     /**
452      * Set the parent window id for this tab
453      * @param tab the tab which we want to set the parent window id
454      * @param id the id of the parent window
455      */
456     public static void setParentWindowId(Tab tab, int id) {
457         //tab.getAsSimpleTab().setParentWindowId(id);
458     }
459
460     /**
461      * Get the parent window id for this tab
462      * @param tab the tab which we want to get the parent window id
463      * @return the id of the parent window
464      */
465     public static int getParentWindowId(Tab tab) {
466         return 0;//tab.getAsSimpleTab().getParentWindowId();
467     }
468
469     /**
470      * Set the callback of the tab
471      * @param tab the tab which we want to set the callback of
472      * @param callback the CallBack to set
473      */
474     public static void setCallback(Tab tab, CommonCallBack callback) {
475         tab.getAsSimpleTab().setCallback(callback);
476     }
477
478     /**
479      * Set this tab as the current tab of its parent Window
480      * @param tab the tab
481      */
482     public static void setCurrent(Tab tab) {
483         tab.getAsSimpleTab().setCurrent();
484     }
485
486     /**
487      * Set the background color of a tab.
488      * @param tab tab to modify
489      * @param red red channel of the color
490      * @param green green channel
491      * @param blue blue channel
492      */
493     public static void setBackground(Tab tab, double red, double green, double blue) {
494         tab.getAsSimpleTab().setBackground(red, green, blue);
495     }
496
497     /**
498      * Specify whether the canvas should fit the parent tab size
499      * (and consequently the scrollpane size) or not
500      * @param tab tab to modify
501      * @param onOrOff true to enable autoresize mode
502      */
503     public static void setAutoResizeMode(Tab tab, boolean onOrOff) {
504         tab.getAsSimpleTab().setAutoResizeMode(onOrOff);
505     }
506
507     /**
508      * @param tab tab to modify
509      * @return whether the resize mode is on or off
510      */
511     public static boolean getAutoResizeMode(Tab tab) {
512         return tab.getAsSimpleTab().getAutoResizeMode();
513     }
514
515     /**
516      * Get the part of the axes which is currently viewed
517      * @param tab tab to modify
518      * @return [x,y,w,h] array
519      */
520     public static int[] getViewingRegion(Tab tab) {
521         return tab.getAsSimpleTab().getViewingRegion();
522     }
523
524     /**
525      * Specify a new viewport for the axes
526      * Only works if autoresize mode is off
527      * @param tab tab to modify
528      * @param posX X coordinate of upper left point of the viewport within the canvas
529      * @param posY Y coordinate of upper left point of the viewport within the canvas
530      * @param width width of the viewport
531      * @param height height of the viewport
532      */
533     public static void setViewingRegion(Tab tab, int posX, int posY, int width, int height) {
534         tab.getAsSimpleTab().setViewingRegion(posX, posY, width, height);
535     }
536
537
538     /**
539      * @param tab tab to modify
540      * @return size of the axes in pixels
541      */
542     public static Size getAxesSize(Tab tab) {
543         return tab.getAsSimpleTab().getAxesSize();
544     }
545
546
547     /**
548      * @param tab tab to modify
549      * @param newSize set a new axes size
550      */
551     public static void setAxesSize(Tab tab, Size newSize) {
552         tab.getAsSimpleTab().setAxesSize(newSize);
553     }
554
555     /**
556      * Set the event handler of the Axes
557      * @param tab tab to modify
558      * @param command the name of the Scilab function to call
559      */
560     public static void setEventHandler(Tab tab, String command) {
561         tab.getAsSimpleTab().setEventHandler(command);
562     }
563
564     /**
565      * Set the status of the event handler of the Axes
566      * @param tab tab to modify
567      * @param status is true to set the event handler active
568      */
569     public static void setEventHandlerEnabled(Tab tab, boolean status) {
570         tab.getAsSimpleTab().setEventHandlerEnabled(status);
571     }
572
573     /**
574      * Get the displacement in pixel that should be used for rotating axes
575      * @param tab tab on which the displacement is recorded
576      * @param displacement out parameter, [x,y] array of displacement in pixels
577      * @return true if the displacement recording continue, false otherwise
578      */
579     public static boolean getRotationDisplacement(Tab tab, int[] displacement) {
580         return tab.getAsSimpleTab().getRotationDisplacement(displacement);
581     }
582
583     /**
584      * Asynchronous stop of rotation tracking.
585      * @param tab tab on which the displacement is recorded
586      */
587     public static void stopRotationRecording(Tab tab) {
588         tab.getAsSimpleTab().stopRotationRecording();
589     }
590 }