View Javadoc

1   ////////////////////////////////////////////////////////////////////////////////
2   // MillScript-Excel: an Open Spice interpreter and batch website creation tool
3   // Copyright (C) 2006 Open World Ltd, Kevin Rogers
4   //
5   // This file is part of MillScript-Excel.
6   //
7   // MillScript-Excel is free software; you can redistribute it and/or modify it under
8   // the terms of the GNU General Public License as published by the Free
9   // Software Foundation; either version 2 of the License, or (at your option)
10  // any later version.
11  //
12  // MillScript-Excel is distributed in the hope that it will be useful, but WITHOUT
13  // ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
14  // FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
15  // more details.
16  //
17  // You should have received a copy of the GNU General Public License along with
18  // MillScript-Excel; if not, write to the Free Software Foundation, Inc., 59 Temple
19  // Place, Suite 330, Boston, MA  02111-1307  USA
20  ////////////////////////////////////////////////////////////////////////////////
21  package org.millscript.office.spreadsheet.cells;
22  
23  import org.millscript.millscript.action.Action;
24  import org.millscript.millscript.vm.Package;
25  import org.millscript.office.spreadsheet.Cell;
26  import org.millscript.office.spreadsheet.CellRef;
27  import org.millscript.office.spreadsheet.Workbook;
28  
29  /**
30   * 
31   */
32  public class FormulaCell implements Cell {
33  
34      private Action action;
35  
36      private Object result;
37  
38      public FormulaCell( final Action act, final Object obj ) {
39          this.action = act;
40          this.result = obj;
41      }
42  
43      /**
44       * @see org.millscript.office.spreadsheet.Cell#getCalculatedContents(org.millscript.office.spreadsheet.CellRef)
45       */
46      public Object getCalculatedContents( final CellRef cellRef ) {
47          // Get the current workbook object
48          final Workbook workbook = cellRef.getRowRef().getWorksheetRef().getWorkbookRef().getWorkbook();
49          // Get the standard package for the current workbook
50          final Package standard = workbook.getEngine().getPackage( "millscript.standard" );
51          // Set the current reference variables
52          standard.findIdentFor( null, "cell" ).getRef().value = cellRef;
53          this.result = this.action.act1( workbook.getEngine().getMachine() );
54          return this.result;
55      }
56  
57      /**
58       * @see org.millscript.office.spreadsheet.Cell#getContents()
59       */
60      public Object getContents() {
61          return this.action;
62      }
63  
64      /**
65       * @see java.lang.Object#toString()
66       */
67      @Override
68      public String toString() {
69          return "FORMULA(" + String.valueOf( this.getContents() ) + ")";
70      }
71  
72  }