isac-java/src/java/isac/gui/mawen/editor/TransformAstUtil.scala
changeset 5212 51971c00458f
parent 5203 8fcdb69044d9
child 5213 1f3173a59903
     1.1 --- a/isac-java/src/java/isac/gui/mawen/editor/TransformAstUtil.scala	Tue Sep 12 10:38:02 2017 +0200
     1.2 +++ b/isac-java/src/java/isac/gui/mawen/editor/TransformAstUtil.scala	Tue Sep 12 12:02:50 2017 +0200
     1.3 @@ -37,8 +37,12 @@
     1.4       if (boxAst != null) {// check if there is a box
     1.5         val boxAstElem  = TransformAstUtil.UnBox(boxAst) // get ast from Appl(Cursor, ast)
     1.6         val unboxedroot = TransformAstUtil.Update(c.getAst(), boxAst, TransformAstUtil.UnBox) // remove Box from Root Ast
     1.7 -       val parentAst = AstInfoUtil.Parent(unboxedroot, boxAstElem)
     1.8 -       c.setAst(TransformAstUtil.Update(unboxedroot, AstInfoUtil.NextChild(parentAst, boxAstElem), TransformAstUtil.Box))
     1.9 +       AstInfoUtil.Parent(unboxedroot, boxAstElem) match {
    1.10 +         case Some(parentAst) => c.setAst(TransformAstUtil.Update(unboxedroot, AstInfoUtil.NextChild(parentAst, boxAstElem), TransformAstUtil.Box))
    1.11 +         case None => {}
    1.12 +       }
    1.13 +       
    1.14 +      
    1.15       }
    1.16    }
    1.17    def BoxPrevChild(c: AstContainer) = {
    1.18 @@ -46,7 +50,11 @@
    1.19       if (boxAst != null) {// check if there is a box
    1.20         val boxAstElem  = TransformAstUtil.UnBox(boxAst)
    1.21         val unboxedAst = TransformAstUtil.Update(c.getAst(), boxAst, TransformAstUtil.UnBox)
    1.22 -       c.setAst(TransformAstUtil.Update(unboxedAst, AstInfoUtil.PrevChild(AstInfoUtil.Parent(unboxedAst, boxAstElem), boxAstElem), TransformAstUtil.Box))
    1.23 +       AstInfoUtil.Parent(unboxedAst, boxAstElem) match {
    1.24 +         case Some(parentAst) => c.setAst(TransformAstUtil.Update(unboxedAst, AstInfoUtil.PrevChild(parentAst, boxAstElem), TransformAstUtil.Box))
    1.25 +         case None => {}
    1.26 +       }
    1.27 +       
    1.28       }
    1.29    }
    1.30    def BoxParent(c: AstContainer) = {
    1.31 @@ -54,7 +62,11 @@
    1.32       if (boxAst != null) {// check if there is a box
    1.33         val boxAstElem  = TransformAstUtil.UnBox(boxAst)
    1.34         val unboxedAst = TransformAstUtil.Update(c.getAst(), boxAst, TransformAstUtil.UnBox)
    1.35 -       c.setAst(TransformAstUtil.Update(unboxedAst, AstInfoUtil.Parent(unboxedAst, boxAstElem), TransformAstUtil.Box))
    1.36 +       AstInfoUtil.Parent(unboxedAst, boxAstElem) match {
    1.37 +         case Some(parentAst) => c.setAst(TransformAstUtil.Update(unboxedAst, parentAst, TransformAstUtil.Box))
    1.38 +         case None => {}
    1.39 +       }
    1.40 +       
    1.41       }
    1.42    }
    1.43    def BoxChild(c: AstContainer) = {
    1.44 @@ -63,7 +75,11 @@
    1.45         val boxAstElem  = TransformAstUtil.UnBox(boxAst)
    1.46         if (AstInfoUtil.FirstChild(boxAstElem) != null) {
    1.47           val unboxedAst = TransformAstUtil.Update(c.getAst(), boxAst, TransformAstUtil.UnBox)
    1.48 -         c.setAst(TransformAstUtil.Update(unboxedAst, AstInfoUtil.FirstChild(boxAstElem), TransformAstUtil.Box))
    1.49 +          AstInfoUtil.FirstChild(boxAstElem) match {
    1.50 +           case Some(a) => c.setAst(TransformAstUtil.Update(unboxedAst, a, TransformAstUtil.Box))
    1.51 +           case None => {}
    1.52 +         }
    1.53 +         
    1.54         }
    1.55       }
    1.56    }
    1.57 @@ -72,8 +88,11 @@
    1.58       if (boxAst != null) {
    1.59         val boxAstElem  = TransformAstUtil.CursorToAst(boxAst) // get ast from Appl(Cursor, ast)
    1.60         val unboxedroot = TransformAstUtil.Update(c.getAst(), boxAst, TransformAstUtil.CursorToAst) // remove Box from Root Ast
    1.61 -       val parentAst = AstInfoUtil.Parent(unboxedroot, boxAstElem)
    1.62 -       c.setAst(TransformAstUtil.Update(unboxedroot, AstInfoUtil.NextChild(parentAst, boxAstElem), TransformAstUtil.AstToCursor))
    1.63 +       AstInfoUtil.Parent(unboxedroot, boxAstElem) match {
    1.64 +         case Some(parentAst) => c.setAst(TransformAstUtil.Update(unboxedroot, AstInfoUtil.NextChild(parentAst, boxAstElem), TransformAstUtil.AstToCursor))
    1.65 +         case None => {}
    1.66 +       }
    1.67 +       
    1.68       }
    1.69    }
    1.70    def CursorPrevChild(c: AstContainer) = {
    1.71 @@ -81,7 +100,11 @@
    1.72       if (boxAst != null) {// check if there is a box
    1.73         val boxAstElem  = TransformAstUtil.CursorToAst(boxAst)
    1.74         val unboxedAst = TransformAstUtil.Update(c.getAst(), boxAst, TransformAstUtil.CursorToAst)
    1.75 -       c.setAst(TransformAstUtil.Update(unboxedAst, AstInfoUtil.PrevChild(AstInfoUtil.Parent(unboxedAst, boxAstElem), boxAstElem), TransformAstUtil.AstToCursor))
    1.76 +       AstInfoUtil.Parent(unboxedAst, boxAstElem) match {
    1.77 +         case Some(parentAst) => c.setAst(TransformAstUtil.Update(unboxedAst, AstInfoUtil.PrevChild(parentAst, boxAstElem), TransformAstUtil.AstToCursor))
    1.78 +         case None => {}
    1.79 +       }
    1.80 +       
    1.81       }
    1.82    }
    1.83    def CursorParent(c: AstContainer) = {
    1.84 @@ -89,7 +112,10 @@
    1.85       if (boxAst != null) {// check if there is a box
    1.86         val boxAstElem  = TransformAstUtil.CursorToAst(boxAst)
    1.87         val unboxedAst = TransformAstUtil.Update(c.getAst(), boxAst, TransformAstUtil.CursorToAst)
    1.88 -       c.setAst(TransformAstUtil.Update(unboxedAst, AstInfoUtil.Parent(unboxedAst, boxAstElem), TransformAstUtil.AstToCursor))
    1.89 +       AstInfoUtil.Parent(unboxedAst, boxAstElem) match {
    1.90 +         case Some(parentAst) => c.setAst(TransformAstUtil.Update(unboxedAst, parentAst, TransformAstUtil.AstToCursor))
    1.91 +         case None => {}
    1.92 +       }
    1.93       }
    1.94    }
    1.95    def CursorChild(c: AstContainer) = {
    1.96 @@ -98,7 +124,11 @@
    1.97         val boxAstElem  = TransformAstUtil.CursorToAst(boxAst)
    1.98         if (AstInfoUtil.FirstChild(boxAstElem) != null) {
    1.99           val unboxedAst = TransformAstUtil.Update(c.getAst(), boxAst, TransformAstUtil.CursorToAst)
   1.100 -         c.setAst(TransformAstUtil.Update(unboxedAst, AstInfoUtil.FirstChild(boxAstElem), TransformAstUtil.AstToCursor))
   1.101 +         AstInfoUtil.FirstChild(boxAstElem) match {
   1.102 +           case Some(a) => c.setAst(TransformAstUtil.Update(unboxedAst, a, TransformAstUtil.AstToCursor))
   1.103 +           case None => {}
   1.104 +         }
   1.105 +         
   1.106         }
   1.107       }
   1.108    }