]> matita.cs.unibo.it Git - logicplayer.git/blob - mainActivity/src/com/example/furt/myapplication/touchHPHandler.java
The applet.
[logicplayer.git] / mainActivity / src / com / example / furt / myapplication / touchHPHandler.java
1 package com.example.furt.myapplication;
2
3 import android.view.View;
4
5 public class touchHPHandler implements View.OnClickListener
6 {
7     Node L;
8     boolean discard;
9     Hypothesis thisHP; //ipotesi che sto eliminando
10     touchHPHandler(Node n,Hypothesis hp)
11     {
12         L=n;
13         thisHP=hp;
14         discard=true;//di default il ramo della formula scartata viene chiuso
15     }
16     public void onClick(View view)
17     {
18         if (DrawActivity.selectedNode==null) //non-existent selectedNode (should never happen)
19             return;
20         if (DrawActivity.selectedNode.Children.size()!=0) //not a leaf: can't add children
21         {
22             return;
23         }
24         if (thisHP.HP.toString().equals(DrawActivity.selectedNode.F.toString())) //close current Node
25         {
26             if (thisHP.isDeleted) {
27                 if (DrawActivity.selectedNode.status == Node.OPEN)
28                     DrawActivity.selectedNode.status = Node.CANCELED;
29                 else if (DrawActivity.selectedNode.status == Node.FAKE)
30                     DrawActivity.selectedNode.status = Node.FAKE_CANCELED;
31             } else {
32                 if (DrawActivity.selectedNode.status == Node.OPEN)
33                     DrawActivity.selectedNode.status = Node.CLOSED;
34                 else if (DrawActivity.selectedNode.status == Node.FAKE)
35                     DrawActivity.selectedNode.status = Node.FAKE_CLOSED;
36             }
37             DrawActivity.nmoves++;
38             DrawActivity.rootNode.Clean();
39             DrawActivity.startDraw();
40             return;
41         }
42         if (L==null) //incompatible elimination
43             return;
44         for (Node n:L.Children) {
45             for (Hypothesis hp:n.NodeHP)
46                 hp.fromNode= DrawActivity.selectedNode; //le ipotesi dei nuovi figli provengono dal nodo in cui stanno per essere inserite
47             n.addHPList(DrawActivity.selectedNode.NodeHP);
48             DrawActivity.selectedNode.addChild(n);
49         }
50         DrawActivity.selectedNode.hasFocus=false;
51         DrawActivity.selectedNode.Children.get(0).hasFocus=true;
52         if(discard) {
53             if (thisHP.isDeleted)
54                 DrawActivity.selectedNode.Children.get(0).status = Node.CANCELED;
55             else
56                 DrawActivity.selectedNode.Children.get(0).status = Node.CLOSED;
57         }
58         else
59             DrawActivity.selectedNode.Children.get(0).status= Node.OPEN;
60         DrawActivity.selectedNode.hasFocus = false;
61         DrawActivity.selectedNode.ruleName = L.ruleName;
62         DrawActivity.nmoves++;
63         DrawActivity.rootNode.Clean();
64         DrawActivity.startDraw();
65     }
66 }