Statistics
| Revision:

svn-gvsig-desktop / trunk / extensions / extCAD / src / com / iver / cit / gvsig / project / documents / table / operators / PointX.java @ 10626

History | View | Annotate | Download (1.69 KB)

1
package com.iver.cit.gvsig.project.documents.table.operators;
2

    
3
import org.apache.bsf.BSFException;
4
import org.apache.bsf.BSFManager;
5

    
6
import com.hardcode.gdbms.driver.exceptions.ReadDriverException;
7
import com.iver.cit.gvsig.ExpresionFieldExtension;
8
import com.iver.cit.gvsig.exceptions.expansionfile.ExpansionFileReadException;
9
import com.iver.cit.gvsig.fmap.core.FShape;
10
import com.iver.cit.gvsig.fmap.core.IGeometry;
11
import com.iver.cit.gvsig.fmap.layers.ReadableVectorial;
12
import com.iver.cit.gvsig.project.documents.table.GraphicOperator;
13
import com.iver.cit.gvsig.project.documents.table.IOperator;
14
import com.iver.cit.gvsig.project.documents.table.Index;
15
/**
16
 * @author Vicente Caballero Navarro
17
 */
18
public class PointX extends GraphicOperator{
19

    
20
        public String addText(String s) {
21
                return s.concat(toString()+"()");
22
        }
23
        public double process(Index index) throws ReadDriverException, ExpansionFileReadException {
24
                ReadableVectorial adapter = getLayer().getSource();
25
                IGeometry geom=adapter.getShape(index.get());
26
                Double[][] xsys=getXY(geom);
27
                return xsys[0][0].doubleValue();
28
        }
29
        public void eval(BSFManager interpreter) throws BSFException {
30
                interpreter.declareBean("pointX",this,PointX.class);
31
                interpreter.eval(ExpresionFieldExtension.BEANSHELL,null,-1,-1,"double x(){return pointX.process(indexRow);};");
32
        }
33
        public String toString() {
34
                return "x";
35
        }
36
        public boolean isEnable() {
37
                if (getLayer()==null)
38
                        return false;
39
                ReadableVectorial adapter = getLayer().getSource();
40
                int type=FShape.POINT;
41
                try {
42
                        type=adapter.getShapeType();
43
                } catch (ReadDriverException e) {
44
                        // TODO Auto-generated catch block
45
                        e.printStackTrace();
46
                }
47
                return (getType()==IOperator.NUMBER && type==FShape.POINT);
48
        }
49
}