Add full options management to figure
[scilab.git] / scilab / modules / gui / src / java / org / scilab / modules / gui / bridge / tab / SwingScilabStaticPanel.java
1 /*
2  * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3  * Copyright (C) 2014 - Scilab Enterprises - Bruno JOFRET
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.1-en.txt
10  *
11  */
12
13 package org.scilab.modules.gui.bridge.tab;
14
15 import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_AUTORESIZE__;
16 import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_AXES_SIZE__;
17 import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_SIZE__;
18 import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_VISIBLE__;
19
20 import java.awt.Container;
21 import java.awt.event.ComponentEvent;
22 import java.awt.event.ComponentListener;
23
24 import javax.swing.JLayeredPane;
25 import javax.swing.SwingUtilities;
26
27 import org.scilab.modules.graphic_objects.figure.Figure;
28 import org.scilab.modules.graphic_objects.graphicController.GraphicController;
29 import org.scilab.modules.gui.SwingViewObject;
30 import org.scilab.modules.gui.bridge.window.SwingScilabWindow;
31 import org.scilab.modules.gui.events.callback.CommonCallBack;
32 import org.scilab.modules.gui.menubar.MenuBar;
33 import org.scilab.modules.gui.textbox.TextBox;
34 import org.scilab.modules.gui.toolbar.ToolBar;
35 import org.scilab.modules.gui.utils.Size;
36
37 public class SwingScilabStaticPanel extends SwingScilabScrollPane implements SwingScilabPanel {
38
39     private Integer id;
40     private TextBox infoBar;
41     private MenuBar menuBar;
42     private ToolBar toolBar;
43     private String eventHandler;
44     private boolean eventHandlerEnabled;
45     private String parentWindowId;
46     private String windowIcon;
47
48     private JLayeredPane uiContentPane;
49     private JLayeredPane layerdPane;
50
51     public SwingScilabStaticPanel(String figureTitle, Integer figureId, Figure figure) {
52         super(new JLayeredPane(), new JLayeredPane(), figure);
53         uiContentPane = (JLayeredPane) getUIComponent();
54         layerdPane = (JLayeredPane) getGlobalComponent();
55         setVisible(true);
56
57         layerdPane.setLayout(null);
58         layerdPane.setOpaque(false);
59
60         uiContentPane.setOpaque(true);
61         uiContentPane.setLayout(null);
62         layerdPane.add(uiContentPane, JLayeredPane.DEFAULT_LAYER + 1, 0);
63
64         layerdPane.setVisible(true);
65         uiContentPane.setVisible(true);
66
67         /* Manage figure_size property */
68         addComponentListener(new ComponentListener() {
69
70             public void componentShown(ComponentEvent arg0) {
71             }
72
73             public void componentResized(ComponentEvent arg0) {
74
75                 /* Update the figure_size property */
76                 Size parentSize =  SwingScilabWindow.allScilabWindows.get(parentWindowId).getDims();
77                 Integer[] newSize = new Integer[] {parentSize.getWidth(), parentSize.getHeight()};
78
79                 GraphicController.getController().setProperty(id, __GO_SIZE__, newSize);
80
81                 Boolean autoreSize = (Boolean) GraphicController.getController().getProperty(id, __GO_AUTORESIZE__);
82
83                 if (autoreSize != null && autoreSize) {
84                     /* Update the axes_size property */
85                     Integer[] newAxesSize = new Integer[] {getContentPane().getWidth(), getContentPane().getHeight()};
86                     GraphicController.getController().setProperty(id, __GO_AXES_SIZE__, newAxesSize);
87                 }
88             }
89
90             public void componentMoved(ComponentEvent arg0) {
91             }
92
93             public void componentHidden(ComponentEvent arg0) {
94             }
95         });
96     }
97
98     public void setId(Integer id) {
99         this.id = id;
100     }
101
102     public Integer getId() {
103         return id;
104     }
105
106     public void update(int property, Object value) {
107         SwingScilabCommonPanel.update(this, property, value);
108     }
109
110     public TextBox getInfoBar() {
111         return infoBar;
112     }
113
114     public void setInfoBar(TextBox infoBar) {
115         this.infoBar = infoBar;
116     }
117
118     public MenuBar getMenuBar() {
119         return menuBar;
120     }
121
122     public void setMenuBar(MenuBar menuBar) {
123         this.menuBar = menuBar;
124     }
125
126     public ToolBar getToolBar() {
127         return toolBar;
128     }
129
130     public void setToolBar(ToolBar toolBar) {
131         this.toolBar = toolBar;
132     }
133
134     public void setEventHandler(String eventHandler) {
135         this.eventHandler = eventHandler;
136     }
137
138     public void setEventHandlerEnabled(boolean enabled) {
139         this.eventHandlerEnabled = enabled;
140     }
141
142     public void setParentWindowId(String parentWindowId) {
143         this.parentWindowId = parentWindowId;
144     }
145
146     public void setWindowIcon(String windowIcon) {
147         this.windowIcon = windowIcon;
148     }
149
150     public void addMember(SwingViewObject member) {
151         SwingScilabCommonPanel.addMember(this, member);
152     }
153
154     public String getParentWindowId() {
155         return parentWindowId;
156     }
157
158     public SwingScilabWindow getParentWindow() {
159         return (SwingScilabWindow) SwingUtilities.getAncestorOfClass(SwingScilabWindow.class, this);
160     }
161
162
163     public JLayeredPane getWidgetPane() {
164         return uiContentPane;
165     }
166
167     public void setCallback(CommonCallBack callback) {
168         // TODO Auto-generated method stub
169
170     }
171
172     public Container getContentPane() {
173         return this.getAsContainer();
174     }
175
176     public void close() {
177         setMenuBar(null);
178         setToolBar(null);
179         setInfoBar(null);
180         removeAll();
181         // without this children canvas are not released.
182         getParentWindow().setVisible(false);
183         Container dummyContainer = new Container();
184         getParentWindow().setContentPane(dummyContainer);
185         setVisible(false);
186     }
187
188     /**
189      * Remove a SwingViewObject (from SwingView.java)
190      * @param member the member to remove
191      */
192     public void removeMember(SwingViewObject member) {
193         SwingScilabCommonPanel.removeMember(this, member);
194     }
195
196
197 }