Back to index

wims  3.65+svn20090927
ComplexPolar.java
Go to the documentation of this file.
00001 /*
00002 $Id: ComplexPolar.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 import fr.ove.openmath.jome.model.events.ModelEvent;
00034 
00040 public class ComplexPolar extends KaryOperator {
00041     /*
00042     * Pour savoir si on est dans le cas où il faut positionner current sur la partie imaginaire ou pas
00043     */
00044     private boolean gotoImaginary = true;
00045     
00051     public FormulaTreeStructure insert(FormulaTreeStructure current) {
00052         current = super.insert(current);
00053         FormulaTreeStructure realPart = current;
00054         current = (new Multiplication()).insert(current);
00055         // Construction de la partie imaginaire.
00056         current = (new E()).insert(current);
00057         current = (new Superscript()).insert(current);
00058         current = (new Bracket()).insert(current);
00059         current = (new I()).insert(current);
00060         current = (new Multiplication()).insert(current);
00061         current = (new VariableOrNumber()).insert(current);
00062         
00063         return realPart;
00064     }
00065     
00070     public FormulaTreeStructure addElement() {
00071         if (gotoImaginary) {
00072             gotoImaginary = false;
00073             FormulaTreeStructure imaginay = (FormulaTreeStructure) getChild(0); // le slot
00074             imaginay = (FormulaTreeStructure) imaginay.getChild(0); // la multiplication
00075             imaginay = (FormulaTreeStructure) imaginay.getChild(1); // la puissance
00076             imaginay = (FormulaTreeStructure) imaginay.getChild(1); // la parenthèse
00077             imaginay = (FormulaTreeStructure) imaginay.getChild(0); // la partie multiplication
00078             imaginay = (FormulaTreeStructure) imaginay.getChild(1); // la partie imaginaire
00079             
00080             return imaginay;
00081         }
00082         else
00083             return this;
00084     }
00085     
00089     public String createLinear(String linear) {
00090         FormulaTreeStructure imaginay = (FormulaTreeStructure) getChild(0); // le slot
00091         imaginay = (FormulaTreeStructure) imaginay.getChild(0); // la multiplication
00092         FormulaTreeStructure realPart = (FormulaTreeStructure) imaginay.getChild(0);
00093         imaginay = (FormulaTreeStructure) imaginay.getChild(1); // la puissance
00094         imaginay = (FormulaTreeStructure) imaginay.getChild(1); // la parenthèse
00095         imaginay = (FormulaTreeStructure) imaginay.getChild(0); // la multiplication
00096         imaginay = (FormulaTreeStructure) imaginay.getChild(1); // la partie imaginaire
00097         
00098         linear = realPart.createLinear(linear + getTheOperator());
00099         linear = imaginay.createLinear(linear + ",");
00100         return linear + ")"; 
00101     }
00102 }