Docjar: A Java Source and Docuemnt Enginecom.*    java.*    javax.*    org.*    all    new    plug-in

Quick Search    Search Deep

Source code: jac/aspects/gui/web/Customized.java


1   /*
2     Copyright (C) 2002-2003 Renaud Pawlak <renaud@aopsys.com>, 
3                             Laurent Martelli <laurent@aopsys.com>
4     
5     This program is free software; you can redistribute it and/or modify
6     it under the terms of the GNU Lesser General Public License as
7     published by the Free Software Foundation; either version 2 of the
8     License, or (at your option) any later version.
9   
10    This program is distributed in the hope that it will be useful,
11    but WITHOUT ANY WARRANTY; without even the implied warranty of
12    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13    GNU Lesser General Public License for more details.
14  
15    You should have received a copy of the GNU Lesser General Public License
16    along with this program; if not, write to the Free Software
17    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
18  
19  package jac.aspects.gui.web;
20  
21  import jac.aspects.gui.*;
22  import jac.core.NameRepository;
23  import jac.core.rtti.AbstractMethodItem;
24  import jac.util.Log;
25  import java.io.IOException;
26  import java.io.PrintWriter;
27  import java.util.Arrays;
28  import java.util.Collection;
29  import java.util.Iterator;
30  import java.util.List;
31  import java.util.Map;
32  import java.util.Vector;
33  
34  
35  public class Customized extends AbstractCompositeView 
36     implements CustomizedView, HTMLViewer {
37  
38     CustomizedGUI customized;
39     //   JPanel contentPanel;
40     PanelView mainView;
41  
42     /**
43      * Builds a customized view.
44      * @param factory the view factory
45      * @param context the display context
46      * @param customized the customized GUI to build a view of
47      * @param panels if not null, overrides the content of the view
48      * (panelID -> PanelContent) 
49      */
50     public Customized(ViewFactory factory, DisplayContext context,
51                       CustomizedGUI customized, Map panels) {
52        this.factory = factory;
53        this.customized = customized;
54        this.context = context;
55        context.setCustomizedView(this);
56  
57        Log.trace("web","building cutomized...");
58        try {
59           mainView = (PanelView)factory.createCompositeView(
60              "main",
61              "Panel",
62              new Object[] {
63                 new Integer(customized.getSubPanesCount()),
64                 new Integer(customized.getGeometry()),
65                 customized.getPaneContainers(),
66                 customized.getScrollings(),
67                 customized.getSplitters() },
68              context
69           );
70        } catch (ViewFactory.UnhandledViewTypeException e) {
71           e.printStackTrace();
72        }
73  
74        //      setPosition(customized.getLeft(),customized.getUp(),
75        //                  customized.getWidth(),customized.getHeight());
76        try {
77           GenericFactory.initCustomized(factory, context, mainView, 
78                                         customized, panels);
79           if(customized.hasMenuBar())
80              GenericFactory.setMenuBars(factory, context, 
81                                         this, customized.getMenus());
82           if(customized.hasToolBar())
83              GenericFactory.setToolBar(factory, context, 
84                                        this, customized.getToolbar());
85           if(customized.hasStatusBar())
86              GenericFactory.setStatusBar(factory, context, 
87                                          this, customized.getStatusBarMethod(), 
88                                          customized.getStatusPosition());
89  
90        } catch (Exception e) {
91           e.printStackTrace();
92        }
93        Log.trace("web","building cutomized DONE");
94     }
95  
96     public void close() {
97        mainView.close();
98     }   
99  
100    // View interface
101 
102    public void setContext(DisplayContext context) {
103       super.setContext(context);
104       Log.trace("display",2,"setContext on "+getClass().getName());
105       // recursively set the display of inner components
106       Iterator i = mainView.getViews().iterator();
107       while (i.hasNext()) {
108          View view = (View)i.next();
109          Log.trace("display",2,"set context on subView "+view);
110          view.setContext(context);
111       }
112    }
113 
114    public void addView(View view, Object extraInfos) {
115       view.setContext(context);
116       mainView.addView(view,extraInfos);
117    }
118 
119    public void addView(View view) {
120       addView(view,null);
121    }
122 
123    public Collection getViews() {
124       return mainView.getViews();
125    }
126 
127    public View getView(Object id) {
128       return mainView.getView(id);
129    }
130 
131    public void removeAllViews() {
132       mainView.removeAllViews();
133    }
134 
135    // CustomizedView interface
136 
137    public CustomizedGUI getCustomizedGUI() {
138       return customized;
139    }
140 
141    Vector menuBars = new Vector();
142    MenuView topMenuBar;
143    MenuView bottomMenuBar;
144    MenuView leftMenuBar;
145    MenuView rightMenuBar;
146 
147    public void setMenuBar(MenuView menuBar,String position) {
148       if (position==null)
149          position = MenuBar.LEFT;
150       menuBar.setPosition(position);
151       if (position.equals(MenuBar.TOP)) {
152          topMenuBar=menuBar;
153       } else if(position.equals(MenuBar.BOTTOM)) {
154          bottomMenuBar=menuBar;
155       } else if(position.equals(MenuBar.LEFT)) {
156          leftMenuBar=menuBar;
157       } else if(position.equals(MenuBar.RIGHT)) {
158          rightMenuBar=menuBar;
159       }
160       this.menuBars.add(menuBar);
161    }
162 
163    public MenuView getTopMenuBar() {
164       return topMenuBar;
165    }
166 
167    public MenuView getBottomMenuBar() {
168       return bottomMenuBar;
169    }
170 
171    public MenuView getLeftMenuBar() {
172       return leftMenuBar;
173    }
174 
175    public MenuView getRightMenuBar() {
176       return rightMenuBar;
177    }
178 
179    MenuView toolBar;
180    public void setToolBar(MenuView toolBar) {
181       this.toolBar = toolBar;
182    }
183 
184    StatusView statusBar;
185    public void setStatusBar(StatusView statusBar,String position) {
186       this.statusBar=statusBar;
187       statusBar.setPosition(position);
188    }
189 
190    public void showStatus(String message) {
191       statusBar.showMessage(message);
192    }
193 
194    public PanelView getPanelView() {
195       return mainView;
196    }
197 
198    public void requestFocus() {
199    }
200 
201    // HTMLViewer interface
202    
203    public void genHTML(PrintWriter out) throws IOException {
204       out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\">");
205       out.println("<html>");
206       out.println("  <head>");
207       out.println("  <title>"+label+"</title>");
208       out.println("  <meta name=\"Author\" content=\"JAC web-gui server\">" );
209       out.println("  <script type=\"text/javascript\" src=\""+javascript+"\"></script>");
210       if (customized.getIcon()!=null) {
211          String resource = ResourceManager.getResource(customized.getIcon());
212          if (resource!=null)
213             out.println("  <link rel=\"icon\" href=\"resources/"+resource+"\" />");
214       }
215       out.println("  <link rel=\"stylesheet\" type=\"text/css\" "+
216                   "href=\""+styleSheet+"\" title=JAC>");
217       out.println("  <style type=\"text/css\">");
218       Iterator it=customized.getStyleSheetURLs().iterator();
219       while(it.hasNext()) {
220          String url=(String)it.next();
221          out.println("    @import \""+url+"\";");         
222       }
223       out.println("  </style>");
224       out.println("  </head>");
225       out.println("  <body>");
226       genBody(out);
227       out.println("  </body>");
228       out.println("</html>");
229    }
230 
231    protected void genBody(PrintWriter out) throws IOException {
232       out.println("<table class=\"customized\">");
233       if(statusBar!=null && statusBar.getPosition().equals(CustomizedGUI.TOP)) {
234          out.println("<tr><td class=\"statusBar\" colspan=\"3\">");         
235          ((HTMLViewer)statusBar).genHTML(out);
236          out.println("</td></tr>");
237       }
238       out.println("<tr><td class=\"menuBarT\" colspan=\"3\">");
239       if(topMenuBar!=null) 
240          ((HTMLViewer)topMenuBar).genHTML(out);
241       if (toolBar!=null)
242          ((HTMLViewer)toolBar).genHTML(out);
243       out.println("</td></tr>");
244       out.println("<tr><td class=\"menuBarL\">");
245       if(leftMenuBar!=null) 
246          ((HTMLViewer)leftMenuBar).genHTML(out);
247       out.println("</td><td class=\"mainView\"><div class=\"mainView\">");
248       //      out.println("  ");
249       ((HTMLViewer)mainView).genHTML(out);
250       out.println("  ");
251       out.println("</div></td><td class=\"menuBarR\">");
252       if(rightMenuBar!=null) 
253          ((HTMLViewer)rightMenuBar).genHTML(out);
254       out.println("</td></tr>");
255       out.println("<tr><td class=\"menuBarB\" colspan=\"3\">");
256       if(bottomMenuBar!=null) 
257          ((HTMLViewer)bottomMenuBar).genHTML(out);
258       out.println("</td></tr>");
259       if(statusBar!=null && statusBar.getPosition().equals(CustomizedGUI.BOTTOM)) {
260          out.println("<tr><td class=\"statusBar\" colspan=\"3\">");         
261          ((HTMLViewer)statusBar).genHTML(out);
262          out.println("</td></tr>");
263       }
264       out.println("</table>");
265    }
266 }
267