1 package com.example.furt.myapplication;
3 import android.view.View;
4 import android.widget.Toast;
6 public class touchHPHandler implements View.OnClickListener
8 Node L; //nodo contenente il sottoalbero successivo all'eliminazione dell'ipotesi
10 Hypothesis thisHP; //ipotesi che sto eliminando
11 touchHPHandler(Node n,Hypothesis hp)
15 discard=true;//di default il ramo della formula scartata viene chiuso
17 public void onClick(View view)
19 if (DrawActivity.selectedNode==null) //selectedNode non esiste (non dovrebbe mai succedere)
21 if (DrawActivity.selectedNode.Children.size()!=0) //non è una foglia: non si possono applicare regole.
23 Toast.makeText(DrawActivity.rootNode.view.getContext(),"Impossibile scaricare ipotesi su nodi intermedi",Toast.LENGTH_LONG).show();
26 if (thisHP.HP.toString().equals(DrawActivity.selectedNode.F.toString())) //sto scaricando una formula uguale al nodo corrente: lo chiudo aggiornando lo stato del nodo
28 if (thisHP.isDeleted) {
29 if (DrawActivity.selectedNode.status == Node.OPEN)
30 DrawActivity.selectedNode.status = Node.CANCELED;
31 else if (DrawActivity.selectedNode.status == Node.FAKE)
32 DrawActivity.selectedNode.status = Node.FAKE_CANCELED;
34 if (DrawActivity.selectedNode.status == Node.OPEN)
35 DrawActivity.selectedNode.status = Node.CLOSED;
36 else if (DrawActivity.selectedNode.status == Node.FAKE)
37 DrawActivity.selectedNode.status = Node.FAKE_CLOSED;
39 DrawActivity.nmoves++;
40 DrawActivity.rootNode.Clean();
41 DrawActivity.startDraw();
44 if (L==null) //eliminazione incompatibile con il nodo attuale
46 Toast.makeText(DrawActivity.rootNode.view.getContext(),"Impossibile scaricare questa ipotesi ora",Toast.LENGTH_LONG).show();
49 for (Node n:L.Children) { //aggiungo al sottoalbero della regola da applicare tutte le ipotesi del selectedNode. In più aggiungo alle ipotesi introdotte da questa regola il fromNode corretto.
50 for (Hypothesis hp:n.NodeHP)
51 hp.fromNode= DrawActivity.selectedNode; //le ipotesi dei nuovi figli provengono dal nodo in cui stanno per essere inserite
52 n.addHPList(DrawActivity.selectedNode.NodeHP);
53 DrawActivity.selectedNode.addChild(n);
55 DrawActivity.selectedNode.hasFocus=false; //il nodo su cui ho applicato la regola non è più una foglia e non ha più focus
56 DrawActivity.selectedNode.ruleName = L.ruleName;
57 DrawActivity.selectedNode.Children.get(0).hasFocus=true; //il primo figlio dell'applicazione della regola ha di default il focus
58 if(discard) { //sto scaricando un'ipotesi: il primo figlio è automaticamente chiuso
60 DrawActivity.selectedNode.Children.get(0).status = Node.CANCELED;
62 DrawActivity.selectedNode.Children.get(0).status = Node.CLOSED;
65 DrawActivity.selectedNode.Children.get(0).status= Node.OPEN;
66 DrawActivity.nmoves++;
67 DrawActivity.rootNode.Clean();
68 DrawActivity.startDraw();