Back to index

wims  3.65+svn20090927
Public Member Functions | Protected Attributes | Package Attributes
rene.zirkel.constructors.AngleConstructor Class Reference
Inheritance diagram for rene.zirkel.constructors.AngleConstructor:
Inheritance graph
[legend]
Collaboration diagram for rene.zirkel.constructors.AngleConstructor:
Collaboration graph
[legend]

List of all members.

Public Member Functions

 AngleConstructor (boolean fixed)
 AngleConstructor ()
void mousePressed (MouseEvent e, ZirkelCanvas zc)
boolean waitForLastPoint ()
boolean waitForPoint ()
void finishConstruction (MouseEvent e, ZirkelCanvas zc)
void mouseDragged (MouseEvent e, ZirkelCanvas zc)
void mouseReleased (MouseEvent e, ZirkelCanvas zc)
PointObject select (int x, int y, ZirkelCanvas zc)
void reset (ZirkelCanvas zc)
void showStatus (ZirkelCanvas zc)
boolean construct (XmlTree tree, Construction c) throws ConstructionException
String getTag ()
void construct (Construction c, String name, String params[], int nparams) throws ConstructionException
void mouseMoved (MouseEvent e, ZirkelCanvas zc, boolean simple)
void resetFirstTime (ZirkelCanvas zc)
void invalidate (ZirkelCanvas zc)
boolean testTree (XmlTree t, String tag)
void setName (XmlTag tag, ConstructionObject o)
void set (XmlTree tree, ConstructionObject o) throws ConstructionException
void setConditionals (XmlTree tree, Construction c, ConstructionObject o)
void pause (boolean flag)
boolean useSmartBoard ()

Protected Attributes

boolean Dragging = false

Package Attributes

PointObject P1 = null
PointObject P2 = null
PointObject P3 = null
boolean Fixed = false
FixedAngleObject A
ConstructionObject O
boolean ShowsValue
int Moved

Detailed Description

Definition at line 14 of file AngleConstructor.java.


Constructor & Destructor Documentation

Definition at line 17 of file AngleConstructor.java.

       {      Fixed=fixed;
       }

Definition at line 20 of file AngleConstructor.java.

       {      this(false);
       }

Member Function Documentation

Reimplemented from rene.zirkel.constructors.ObjectConstructor.

Definition at line 192 of file AngleConstructor.java.

       {      if (!testTree(tree,"Angle")) return false;
              XmlTag tag=tree.getTag();
              if (!tag.hasParam("first"))
              {      AngleObject o=new AngleObject(c);
                     try
                     {      if (tag.hasParam("display"))
                            {      String type=tag.getValue("display");
                                   if (type.equals("small")) o.setDisplaySize(AngleObject.SMALL);
                                   if (type.equals("large")) o.setDisplaySize(AngleObject.LARGE);
                                   if (type.equals("larger")) o.setDisplaySize(AngleObject.LARGER);
                                   if (type.equals("rectangle")) o.setDisplaySize(AngleObject.RECT);
                            }
                            setName(tag,o);
                            set(tree,o);
                            c.add(o);
                            setConditionals(tree,c,o);
                            if (tag.hasTrueParam("filled")) o.setFilled(true);
                            if (tag.hasParam("fixed")) o.setFixed(tag.getValue("fixed"));
                            if (tag.hasTrueParam("acute")) o.setObtuse(false);
                            else o.setObtuse(true);
                     }
                     catch (Exception e) {}
              }
              if (!tag.hasParam("first") || !tag.hasParam("root"))
                     throw new ConstructionException("Angle parameters missing!");
              if (tag.hasParam("second"))
              {      try
                     {      PointObject p1=(PointObject)c.find(tag.getValue("first")); 
                            PointObject p2=(PointObject)c.find(tag.getValue("root"));
                            PointObject p3=(PointObject)c.find(tag.getValue("second"));
                            AngleObject o=new AngleObject(c,p1,p2,p3);
                            if (tag.hasParam("display"))
                            {      String type=tag.getValue("display");
                                   if (type.equals("small")) o.setDisplaySize(AngleObject.SMALL);
                                   if (type.equals("large")) o.setDisplaySize(AngleObject.LARGE);
                                   if (type.equals("larger")) o.setDisplaySize(AngleObject.LARGER);
                                   if (type.equals("rectangle")) o.setDisplaySize(AngleObject.RECT);
                            }
                            setName(tag,o);
                            set(tree,o);
                            c.add(o);
                            setConditionals(tree,c,o);
                            if (tag.hasTrueParam("filled")) o.setFilled(true);
                            if (tag.hasParam("fixed")) o.setFixed(tag.getValue("fixed"));
                            if (tag.hasTrueParam("acute")) o.setObtuse(false);
                            else o.setObtuse(true);
                     }
                     catch (ConstructionException e)
                     {      throw e;
                     }
                     catch (Exception e)
                     {      throw new ConstructionException("Angle parameters illegal!");
                     }
              }
              else
              {      try
                     {      PointObject p1=(PointObject)c.find(tag.getValue("first")); 
                            PointObject p2=(PointObject)c.find(tag.getValue("root"));
                            FixedAngleObject o=new FixedAngleObject(c,p1,p2,0,0);
                            if (tag.hasParam("display"))
                            {      String type=tag.getValue("display");
                                   if (type.equals("small")) o.setDisplaySize(FixedAngleObject.SMALL);
                                   if (type.equals("large")) o.setDisplaySize(FixedAngleObject.LARGE);
                                   if (type.equals("larger")) o.setDisplaySize(FixedAngleObject.LARGER);
                                   if (type.equals("rectangle")) o.setDisplaySize(FixedAngleObject.RECT);
                            }
                            setName(tag,o);
                            set(tree,o);
                            c.add(o);
                            setConditionals(tree,c,o);
                            if (tag.hasTrueParam("filled")) o.setFilled(true);
                            if (tag.hasTrueParam("acute")) o.setObtuse(false);
                            else o.setObtuse(true);
                            if (tag.hasTrueParam("inverse")) o.setInverse(true);
                            else o.setInverse(false);
                            if (tag.hasTrueParam("reduced")) o.setReduced(true);
                            else o.setReduced(false);
                            if (tag.hasTrueParam("dragable")) o.setDragable(true);
                            if (tag.hasTrueParam("drawable")) o.setDragable(true); // downward compatibility
                            if (tag.hasParam("fixed")) o.setFixed(tag.getValue("fixed"));
                            else throw new ConstructionException("");
                     }
                     catch (ConstructionException e)
                     {      throw e;
                     }
                     catch (Exception e)
                     {      throw new ConstructionException("Angle parameters illegal!");
                     }
              }
              return true;
       }

Here is the call graph for this function:

void rene.zirkel.constructors.AngleConstructor.construct ( Construction  c,
String  name,
String  params[],
int  nparams 
) throws ConstructionException [inline]

Reimplemented from rene.zirkel.constructors.ObjectConstructor.

Definition at line 287 of file AngleConstructor.java.

       {      if (nparams!=3)
                     throw new ConstructionException(Zirkel.name("exception.nparams"));
              ConstructionObject
                     P1=c.find(params[0]);
              if (P1==null)
                     throw new ConstructionException(Zirkel.name("exception.notfound")+" "+
                            params[0]);
              ConstructionObject
                     P2=c.find(params[1]);
              if (P2==null)
                     throw new ConstructionException(Zirkel.name("exception.notfound")+" "+
                            params[1]);
              ConstructionObject
                     P3=c.find(params[2]);
              if (P3==null || !(P3 instanceof PointObject))
              {      Expression ex=new Expression(params[2],c,null);
                     if (!ex.isValid())
                            throw new ConstructionException(
                                   Zirkel.name("exception.expression"));
                     FixedAngleObject s=new FixedAngleObject(c,
                            (PointObject)P1,(PointObject)P2,
                            0,0);
                     s.setFixed(params[2]);
                     if (!name.equals("")) s.setNameCheck(name);
                     c.add(s);
                     s.setDefaults();
                     s.setObtuse(true);
                     s.setFixed(params[2]);
                     s.validate();
                     return;
              }
              if (!(P1 instanceof PointObject))
                     throw new ConstructionException(Zirkel.name("exception.type")+" "+
                            params[0]);
              if (!(P2 instanceof PointObject))
                     throw new ConstructionException(Zirkel.name("exception.type")+" "+
                            params[1]);
              if (!(P3 instanceof PointObject))
                     throw new ConstructionException(Zirkel.name("exception.type")+" "+
                            params[2]);
              if (P1==P2 || P2==P3)
                     throw new ConstructionException(Zirkel.name("exception.parameter"));
              AngleObject s=new AngleObject(c,
                     (PointObject)P1,(PointObject)P2,(PointObject)P3);
              if (!name.equals("")) s.setNameCheck(name);
              c.add(s);
              s.setDefaults();
       }

Here is the call graph for this function:

Reimplemented from rene.zirkel.constructors.ObjectConstructor.

Definition at line 100 of file AngleConstructor.java.

       {      if (!Fixed)
              {      P3=select(e.getX(),e.getY(),zc);
                     if (P3!=null)
                     {      AngleObject a=new AngleObject(zc.getConstruction(),P1,P2,P3);
                            zc.addObject(a);
                            a.setDefaults();
                     }
                     zc.repaint();
                     P3=null;
              }
              else
              {      FixedAngleObject a=new FixedAngleObject(zc.getConstruction(),
                            P1,P2,zc.x(e.getX()),zc.y(e.getY()));
                     zc.addObject(a);
                     a.setDefaults();
                     a.init(zc.getConstruction(),zc.x(e.getX()),zc.y(e.getY()));
                     zc.setPreviewObject(a);
                     zc.repaint();
              }
       }

Here is the call graph for this function:

Reimplemented from rene.zirkel.constructors.ObjectConstructor.

Definition at line 286 of file AngleConstructor.java.

{ return "Angle"; }
void rene.zirkel.constructors.AngleConstructor.mouseDragged ( MouseEvent  e,
ZirkelCanvas  zc 
) [inline]

Reimplemented from rene.zirkel.constructors.ObjectConstructor.

Definition at line 122 of file AngleConstructor.java.

       {      if (!Dragging) return;
              Moved++;
              if (P3==null)
              {      A.init(zc.getConstruction(),zc.x(e.getX()),zc.y(e.getY()));
                     if (A instanceof FixedAngleObject)
                            ((FixedAngleObject)A).setDragable(Moved>5);
              }
              else
              {      P3.move(zc.x(e.getX()),zc.y(e.getY()));
                     zc.validate();
              }
              zc.repaint();
       }

Here is the call graph for this function:

void rene.zirkel.constructors.ObjectConstructor.mouseMoved ( MouseEvent  e,
ZirkelCanvas  zc,
boolean  simple 
) [inline, inherited]
void rene.zirkel.constructors.AngleConstructor.mousePressed ( MouseEvent  e,
ZirkelCanvas  zc 
) [inline]

Reimplemented from rene.zirkel.constructors.ObjectConstructor.

Definition at line 28 of file AngleConstructor.java.

       {      if (!zc.Visual) return;
              if (P1==null)
              {      P1=select(e.getX(),e.getY(),zc);
                     if (P1!=null)
                     {      P1.setSelected(true);
                            zc.repaint();
                     }
                     showStatus(zc);
              }
              else if (P2==null)
              {      P2=select(e.getX(),e.getY(),zc);
                     if (P2!=null)
                     {      P2.setSelected(true);
                            zc.repaint();
                     }
                     showStatus(zc);
              }
              else
              {      if (!e.isShiftDown() && !Fixed)
                     {      P3=select(e.getX(),e.getY(),zc);
                            if (P3!=null)
                            {      if (P3==P1 || P3==P2)
                                   {      P3=null; return;
                                   }
                                   AngleObject a=new AngleObject(zc.getConstruction(),P1,P2,P3);
                                   zc.addObject(a);
                                   a.setDefaults();
                                   if (P3.moveable() && !P3.isPointOn() && zc.isNewPoint())
                                   {      ShowsValue=a.showValue();
                                          if (Global.getParameter("options.movefixname",true))
                                                 a.setShowValue(true);
                                          O=a;
                                          Dragging=true;
                                          a.validate();
                                          zc.repaint();
                                   }
                                   else
                                   {      Dragging=false;
                                          P1=P2=P3=null;
                                          reset(zc);
                                          zc.validate();
                                          zc.repaint();
                                   }
                            }
                     }
                     else
                     {      FixedAngleObject a=new FixedAngleObject(zc.getConstruction(),
                                   P1,P2,zc.x(e.getX()),zc.y(e.getY()));
                            zc.addObject(a);
                            a.setDefaults();
                            a.init(zc.getConstruction(),zc.x(e.getX()),zc.y(e.getY()));
                            Moved=0;
                            Dragging=true;
                            ShowsValue=a.showValue();
                            if (Global.getParameter("options.movefixname",true))
                                   a.setShowValue(true);
                            O=A=a;
                            P3=null;
                            zc.repaint();
                     }
              }
       }

Here is the call graph for this function:

Reimplemented from rene.zirkel.constructors.ObjectConstructor.

Definition at line 136 of file AngleConstructor.java.

       {      if (!Dragging) return;
              Dragging=false;
              O.setShowValue(ShowsValue);
              zc.repaint();
              if (P3==null)
              {      zc.clearSelected();
                     A.round();
                     if (Moved<5)
                     {      A.edit(zc);
                            if (A instanceof FixedAngleObject &&
                                   ((FixedAngleObject)A).isEditAborted())
                            {      zc.delete(A);
                                   reset(zc);
                                   return;
                            }
                     }
                     A.validate();
                     zc.check();
              }
              else P3.updateText();
              reset(zc);
              zc.showStatus();
       }

Here is the call graph for this function:

void rene.zirkel.constructors.ObjectConstructor.pause ( boolean  flag) [inline, inherited]

Reimplemented in rene.zirkel.tools.ObjectTracker.

Definition at line 216 of file ObjectConstructor.java.

       {
       }

Here is the caller graph for this function:

Reimplemented from rene.zirkel.constructors.ObjectConstructor.

Definition at line 163 of file AngleConstructor.java.

       {      super.reset(zc);
              if (zc.Visual)
              {      P1=P2=P3=null;
                     showStatus(zc);
              }
              else
              {      zc.setPrompt(Zirkel.name("prompt.angle"));
              }
       }

Here is the call graph for this function:

Here is the caller graph for this function:

Reimplemented in rene.zirkel.tools.MoverTool.

Definition at line 56 of file ObjectConstructor.java.

       {      reset(zc);
       }

Here is the call graph for this function:

Definition at line 160 of file AngleConstructor.java.

       {      return zc.selectCreatePoint(x,y);
       }

Here is the call graph for this function:

Here is the caller graph for this function:

Definition at line 76 of file ObjectConstructor.java.

       {      XmlTag tag=tree.getTag();
              if (tag.hasParam("n"))
              {      try
                     {      o.setNCount(new Integer(tag.getValue("n")).intValue());
                            o.setGotNCount(true);
                     }
                     catch (Exception ex)
                     {      throw new ConstructionException("Illegal count!");
                     }
              }
              if (tag.hasParam("hidden"))
              {      if (tag.getValue("hidden").equals("super")) o.setSuperHidden(true);
                     else o.setHidden(true);
              }
              if (tag.hasTrueParam("showvalue"))
              {      o.setShowValue(true);
              }
              if (tag.hasTrueParam("showname"))
              {      o.setShowName(true);
              }
              if (tag.hasTrueParam("background"))
              {      o.setBack(true);
              }
              else o.setBack(false);
              if (tag.hasTrueParam("parameter"))
              {      o.setParameter();
              }
              if (tag.hasTrueParam("mainparameter"))
              {      o.setMainParameter();
              }
              if (tag.hasTrueParam("target"))
              {      o.setTarget(true);
              }
              if (tag.hasTrueParam("break"))
              {      o.setBreak(true);
              }
              if (tag.hasTrueParam("hidebreak"))
              {      o.setHideBreak(true);
              }
              if (tag.hasTrueParam("solid"))
              {      o.setSolid(true);
              }
              if (tag.hasTrueParam("bold"))
              {      o.setBold(true);
              }
              if (tag.hasTrueParam("large"))
              {      o.setLarge(true);
              }
              if (tag.hasParam("xoffset") || tag.hasParam("yoffset"))
              {      int x=0,y=0;
                     try
                     {      if (tag.hasParam("xoffset"))
                                   x=Integer.parseInt(tag.getValue("xoffset"));
                            if (tag.hasParam("yoffset"))
                                   y=Integer.parseInt(tag.getValue("yoffset"));
                            o.setOffset(x,y);
                     }
                     catch (Exception e)
                     {      throw new ConstructionException("Illegal offset value");
                     }
              }
              if (tag.hasTrueParam("keepclose"))
              {      o.setKeepClose(true);
              }
              if (tag.hasParam("xcoffset") || tag.hasParam("ycoffset"))
              {      double x=0,y=0;
                     try
                     {      if (tag.hasParam("xcoffset"))
                                   x=new Double(tag.getValue("xcoffset")).doubleValue();
                            if (tag.hasParam("ycoffset"))
                                   y=new Double(tag.getValue("ycoffset")).doubleValue();
                            o.setcOffset(x,y);
                     }
                     catch (Exception e)
                     {      throw new ConstructionException("Illegal offset value");
                     }
              }
              if (tag.hasParam("color"))
              {      try
                     {      String s=tag.getValue("color");
                            int n=-1;
                            for (int i=0; i<ZirkelFrame.ColorStrings.length; i++)
                            {      if (s.equals(ZirkelFrame.ColorStrings[i]))
                                   {      o.setColor(i); n=i; break;
                                   }
                            }
                            if (n<0)
                            {      n=Integer.parseInt(s);
                                   if (n<0 || n>=ZirkelFrame.Colors.length)
                                          throw new Exception("");
                                   o.setColor(n);
                            }
                     }
                     catch (Exception ex)
                     {      throw new ConstructionException("Illegal color index (1-"+
                                   (ZirkelFrame.Colors.length-1)+")");
                     }
              }
              if (tag.hasParam("type"))
              {      String type=tag.getValue("type");
                     if (type.equals("thick")) o.setColorType(ConstructionObject.THICK);
                     if (type.equals("thin")) o.setColorType(ConstructionObject.THIN);
                     if (type.equals("invisible")) o.setColorType(ConstructionObject.INVISIBLE);
              }
              if (tag.hasParam("unit"))
                     o.setUnit(tag.getValue("unit"));
              else
                     o.setUnit("");
              Enumeration e=tree.getContent();
              while (e.hasMoreElements())
              {      tree=(XmlTree)e.nextElement();
                     if (tree.getTag() instanceof XmlTagText)
                     {      o.setText(((XmlTagText)tree.getTag()).getContent(),true);
                     }
              }
       }

Here is the call graph for this function:

Definition at line 194 of file ObjectConstructor.java.

       {      o.clearConditionals();
              int i=0;
              XmlTag tag=tree.getTag();
              while (tag.hasParam("ctag"+i) && tag.hasParam("cexpr"+i))
              {      String t=tag.getValue("ctag"+i);
                     String e=tag.getValue("cexpr"+i);
                     Expression ex=new Expression(e,c,o);
                     o.addConditional(t,ex);
                     i++;
              }
       }

Here is the call graph for this function:

Here is the caller graph for this function:

Definition at line 68 of file ObjectConstructor.java.

       {      if (tag.hasParam("name"))
              {      o.setName(tag.getValue("name"));
              }
              if (tag.hasParam("alias"))
              {      o.setAlias(tag.getValue("alias"));
              }
       }

Here is the call graph for this function:

Here is the caller graph for this function:

Reimplemented from rene.zirkel.constructors.ObjectConstructor.

Definition at line 173 of file AngleConstructor.java.

       {      if (Fixed)
              {      if (P1==null) zc.showStatus(
                            Zirkel.name("message.fixedangle.first"));
                     else if (P2==null) zc.showStatus(
                            Zirkel.name("message.fixedangle.root"));
                     else zc.showStatus(
                            Zirkel.name("message.fixedangle.second"));
              }
              else
              {      if (P1==null) zc.showStatus(
                            Zirkel.name("message.angle.first"));
                     else if (P2==null) zc.showStatus(
                            Zirkel.name("message.angle.root"));
                     else zc.showStatus(
                            Zirkel.name("message.angle.second"));
              }
       }

Here is the call graph for this function:

Here is the caller graph for this function:

boolean rene.zirkel.constructors.ObjectConstructor.testTree ( XmlTree  t,
String  tag 
) [inline, inherited]

Definition at line 65 of file ObjectConstructor.java.

       {      return t.getTag().name().equals(tag);
       }

Here is the call graph for this function:

Here is the caller graph for this function:

Reimplemented from rene.zirkel.constructors.ObjectConstructor.

Definition at line 92 of file AngleConstructor.java.

       {      return P1!=null && P2!=null;
       }

Reimplemented from rene.zirkel.constructors.ObjectConstructor.

Definition at line 96 of file AngleConstructor.java.

       {      return !Fixed || (P1==null || P2==null);
       }

Member Data Documentation

FixedAngleObject rene.zirkel.constructors.AngleConstructor.A [package]

Definition at line 23 of file AngleConstructor.java.

Reimplemented in rene.zirkel.tools.ZoomerTool, and rene.zirkel.tools.DrawerTool.

Definition at line 15 of file ObjectConstructor.java.

Definition at line 16 of file AngleConstructor.java.

Definition at line 26 of file AngleConstructor.java.

Definition at line 24 of file AngleConstructor.java.

Definition at line 15 of file AngleConstructor.java.

Definition at line 15 of file AngleConstructor.java.

Definition at line 15 of file AngleConstructor.java.

Definition at line 25 of file AngleConstructor.java.


The documentation for this class was generated from the following file: