Back to index

wims  3.65+svn20090927
BidimDisplayAllocator.java
Go to the documentation of this file.
00001 /*
00002 $Id: BidimDisplayAllocator.java,v 1.3 2003/02/18 11:48:46 sander Exp $
00003 */
00004 
00005 
00006 /*
00007 Copyright (C) 2001-2002 Mainline Project (I3S - ESSI - CNRS -UNSA)
00008 
00009 This library is free software; you can redistribute it and/or
00010 modify it under the terms of the GNU Lesser General Public
00011 License as published by the Free Software Foundation; either
00012 version 2.1 of the License, or (at your option) any later version.
00013 
00014 This library is distributed in the hope that it will be useful,
00015 but WITHOUT ANY WARRANTY; without even the implied warranty of
00016 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00017 Lesser General Public License for more details.
00018 
00019 You should have received a copy of the GNU Lesser General Public
00020 License along with this library; if not, write to the Free Software
00021 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00022 
00023 For further information on the GNU Lesser General Public License,
00024 see: http://www.gnu.org/copyleft/lesser.html
00025 For further information on this library, contact: mainline@essi.fr
00026 */
00027 
00028 
00029 package fr.ove.openmath.jome.ctrlview.bidim;
00030 
00031 import java.awt.*;
00032 import fr.ove.openmath.jome.ctrlview.bidim.*;
00033 import fr.ove.openmath.jome.model.*;
00034 
00044 public class BidimDisplayAllocator extends DisplayAllocator {
00048     private static BidimLayoutAllocator layoutAllocator = new BidimLayoutAllocator();
00049     
00053     private static BidimResourcesManager resourcesManager = new BidimResourcesManager("fr.ove.openmath.jome.ctrlview.bidim.resources");
00054     
00060     public Display allocateDisplay(GraphicContext graphicContext, FormulaTreeStructure fts) {
00061         Display display = null;
00062         
00063         String ftsId = fts.getResourceIdentifier();
00064         String idDisplay = resourcesManager.getIdDisplay(ftsId);
00065         
00066         // Si il y a un problème de display, alors on met le display par défaut
00067         idDisplay = (idDisplay == null) ? "default" : idDisplay;
00068         
00069         //System.out.println("ftsId = " + ftsId + "\t\t idDisplay = " + idDisplay);
00070         
00071         if (idDisplay.equals("constant")) {
00072             // Allocation d'un StringDisplay
00073             display = new StringDisplay(graphicContext, ((Constant) fts).getValue(), false);
00074             
00075             // Le display créé écoute la fts qui lui correspond
00076             display.addControlListener(fts);
00077             // Et vice et versa.
00078             fts.addModelListener(display);
00079         }
00080         else if (idDisplay.equals("symbol")) {
00081             // Allocation d'un SymbolDisplay
00082             display = new SymbolDisplay(graphicContext);
00083             // Allocation dudit symbole
00084             ImageSymbol symbol = new ImageSymbol(/*fts.getSymbolName*/fts.getValue(), display);
00085             // Affection du symbole
00086             ((SymbolDisplay) display).setSymbol(symbol);
00087             
00088             // Le display créé écoute la fts qui lui correspond
00089             display.addControlListener(fts);
00090             // Et vice et versa.
00091             fts.addModelListener(display);
00092         }
00093         else if (idDisplay.equals("icon")) {
00094             if (((Icon) fts).isSubstitution()) {
00095                 // Allocation d'un SubstitutionDisplay
00096                 display = new SubstitutionDisplay(graphicContext, ((Icon) fts).getIconName());
00097             }
00098             else {
00099                 // Allocation d'un SymbolDisplay
00100                 display = new IconDisplay(graphicContext);
00101                 // Allocation de l'icone
00102                 ImageSymbol icon = new ImageSymbol(fts.getIconName(), display);
00103                 // Affection du symbole (i.e. de l'icone)
00104                 ((SymbolDisplay) display).setSymbol(icon);
00105             }
00106             
00107             // Le display créé écoute la fts qui lui correspond
00108             display.addControlListener(fts);
00109             // Et vice et versa.
00110             fts.addModelListener(display);
00111         }
00112         else {
00113             // Dans tous les autres cas, allocation d'un BidimDisplay
00114             display = new BidimDisplay(graphicContext);
00115             
00116             // Le display créé écoute la fts qui lui correspond
00117             display.addControlListener(fts);
00118             // Et vice et versa.
00119             fts.addModelListener(display);
00120             
00121             // Allocation du layout manager qui va bien
00122             String layoutName = resourcesManager.getLayoutManager(ftsId);
00123             layoutName = (layoutName == null) ? resourcesManager.getLayoutManager("defaultLM") : layoutName;
00124             
00125             //System.out.println("layoutName = " + layoutName);
00126             
00127             DisplayLayout layout = layoutAllocator.allocateLayout(layoutName);
00128             display.setLayout(layout);
00129             layout.initDisplay(display);
00130         }
00131         
00132         return display;
00133     }
00134 }