Back to index

wims  3.65+svn20090927
Slot.java
Go to the documentation of this file.
00001 /*
00002 $Id: Slot.java,v 1.3 2003/02/18 11:48:47 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.model;
00030 
00031 import java.util.*;
00032 import fr.ove.openmath.jome.model.*;
00033 
00040 public final class Slot extends FormulaTreeStructure {
00041     // Y a de fortes chances pour qu'on ne surclasse jamais Slot.
00042     
00043     FormulaTreeStructure nextSlot;
00044     
00049     public Slot() {
00050         setResourceIdentifier("SLOT");
00051         setAsOperatorPriority(resourcesManager.getAsOperatorPriority("slotPriorities"));
00052         setAsOperandPriority(resourcesManager.getAsOperandPriority("slotPriorities"));
00053     }
00054     
00055     public FormulaTreeStructure getNextSlot() {
00056         return nextSlot;
00057     }
00058     
00059     public void setNextSlot(FormulaTreeStructure nextSlot) {
00060         this.nextSlot = nextSlot;
00061     }
00062     
00063     // En fait, vu l'usage, toutes les méthodes des éléments de la fts ne servent pas.
00064     // Seules les valeurs de l'instance vue comme opérateur ou comme opérande sont utiles
00065     // pour la construction de la fts.
00066 
00067     // Obligé ici de surcharger cette méthode pour palier les cas pathologiques de, je suis 
00068     // déjà sur une instance de Slot (exemple, on a une fonction comme fils a un slot, le goto
00069     // correpondant à la fermeture de la parenthèse de la fonction, nous a mis comme position
00070     // courante d'insertion, le slot. Si en suivant, on met un séparateur (donc on veut ajouter
00071     // un autre slot) il faut que l'on reste sur l'instance. A priori on ne va jamais aller plus
00072     // haut dans la fts qu'un slot en passant par un goTo. Donc si cette méthode est appelée, c'est
00073     // que la position courante d'insertion est l'instance, donc on ne fait rien, la position
00074     // courante d'insertion reste la même.
00075     public FormulaTreeStructure goTo(int priority) {
00076         return this;
00077     }
00078 
00079     
00085     public FormulaTreeStructure insert(FormulaTreeStructure current) {
00086         // On s'en fout.
00087         return null;
00088     }
00089     
00093     public String createLinear(String linear) {
00094         return ((FormulaTreeStructure) getChild(0)).createLinear("");
00095     }
00096    
00100     public String evaluate() {
00101         return ((FormulaTreeStructure) getChild(0)).evaluate();
00102     }
00103     
00108     public boolean isOperator() {
00109         return false;
00110     }
00111     
00112     // *****************************************
00113     // Implémentation de l'interface Iconifiable
00114     
00121     public String getIconName() {
00122         return ((FormulaTreeStructure) getChild(0)).getIconName();
00123     }
00124 
00125     // *** Fin de l'interface Iconifiable ***
00126     // **************************************
00127     
00128     // *****************************************
00129     // Implémentation de l'interface Modifiable
00130     
00134     public void setValue(String value) {
00135     }
00136     
00140     public String getValue() {
00141         return null;
00142     }
00143     
00144     // *** Fin de l'interface Modifiable ***
00145     // *************************************
00146 }