src/Tools/jEdit/src/session_dockable.scala
changeset 45011 436ea69d5d37
parent 44991 d88f7fc62a40
child 45099 67740480cf39
equal deleted inserted replaced
45010:8a4db903039f 45011:436ea69d5d37
   137       component
   137       component
   138     }
   138     }
   139   }
   139   }
   140   status.renderer = new Node_Renderer
   140   status.renderer = new Node_Renderer
   141 
   141 
   142   private def handle_changed(changed_nodes: Set[Document.Node.Name])
   142   private def handle_update(restriction: Option[Set[Document.Node.Name]] = None)
   143   {
   143   {
   144     Swing_Thread.now {
   144     Swing_Thread.now {
   145       // FIXME correlation to changed_nodes!?
       
   146       val snapshot = Isabelle.session.snapshot()
   145       val snapshot = Isabelle.session.snapshot()
       
   146       val nodes = restriction getOrElse snapshot.version.nodes.keySet
   147 
   147 
   148       var nodes_status1 = nodes_status
   148       var nodes_status1 = nodes_status
   149       for {
   149       for {
   150         name <- changed_nodes
   150         name <- nodes
   151         node <- snapshot.version.nodes.get(name)
   151         node <- snapshot.version.nodes.get(name)
   152         val status = Isar_Document.node_status(snapshot.state, snapshot.version, node)
   152         val status = Isar_Document.node_status(snapshot.state, snapshot.version, node)
   153       } nodes_status1 += (name -> status)
   153       } nodes_status1 += (name -> status)
   154 
   154 
   155       if (nodes_status != nodes_status1) {
   155       if (nodes_status != nodes_status1) {
   177             }
   177             }
   178 
   178 
   179         case phase: Session.Phase =>
   179         case phase: Session.Phase =>
   180           Swing_Thread.now { session_phase.text = " " + phase.toString + " " }
   180           Swing_Thread.now { session_phase.text = " " + phase.toString + " " }
   181 
   181 
   182         case changed: Session.Commands_Changed => handle_changed(changed.nodes)
   182         case changed: Session.Commands_Changed => handle_update(Some(changed.nodes))
   183 
   183 
   184         case bad => System.err.println("Session_Dockable: ignoring bad message " + bad)
   184         case bad => System.err.println("Session_Dockable: ignoring bad message " + bad)
   185       }
   185       }
   186     }
   186     }
   187   }
   187   }
   195   override def exit() {
   195   override def exit() {
   196     Isabelle.session.syslog_messages -= main_actor
   196     Isabelle.session.syslog_messages -= main_actor
   197     Isabelle.session.phase_changed -= main_actor
   197     Isabelle.session.phase_changed -= main_actor
   198     Isabelle.session.commands_changed -= main_actor
   198     Isabelle.session.commands_changed -= main_actor
   199   }
   199   }
       
   200 
       
   201   handle_update()
   200 }
   202 }