src/Tools/Graphview/popups.scala
author wenzelm
Sat, 03 Jan 2015 20:44:08 +0100
changeset 59247 67bb4b3e1504
parent 59246 32903b99c2ef
child 59255 db265648139c
permissions -rw-r--r--
tuned menu items;
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
59202
711c2446dc9d clarified source location;
wenzelm
parents: 55618
diff changeset
     1
/*  Title:      Tools/Graphview/popups.scala
49557
61988f9df94d added Graphview tool, based on Isabelle/Scala and Swing/Graphics2D;
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
     2
    Author:     Markus Kaiser, TU Muenchen
59240
e411afcfaa29 tuned headers;
wenzelm
parents: 59228
diff changeset
     3
    Author:     Makarius
49557
61988f9df94d added Graphview tool, based on Isabelle/Scala and Swing/Graphics2D;
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
     4
61988f9df94d added Graphview tool, based on Isabelle/Scala and Swing/Graphics2D;
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
     5
PopupMenu generation for graph components.
61988f9df94d added Graphview tool, based on Isabelle/Scala and Swing/Graphics2D;
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
     6
*/
61988f9df94d added Graphview tool, based on Isabelle/Scala and Swing/Graphics2D;
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
     7
61988f9df94d added Graphview tool, based on Isabelle/Scala and Swing/Graphics2D;
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
     8
package isabelle.graphview
61988f9df94d added Graphview tool, based on Isabelle/Scala and Swing/Graphics2D;
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
     9
61988f9df94d added Graphview tool, based on Isabelle/Scala and Swing/Graphics2D;
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
    10
61988f9df94d added Graphview tool, based on Isabelle/Scala and Swing/Graphics2D;
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
    11
import isabelle._
55618
995162143ef4 tuned imports;
wenzelm
parents: 50475
diff changeset
    12
49557
61988f9df94d added Graphview tool, based on Isabelle/Scala and Swing/Graphics2D;
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
    13
import javax.swing.JPopupMenu
49558
af7b652180d5 minimal component and build setup for graphview;
wenzelm
parents: 49557
diff changeset
    14
import scala.swing.{Action, Menu, MenuItem, Separator}
49557
61988f9df94d added Graphview tool, based on Isabelle/Scala and Swing/Graphics2D;
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
    15
61988f9df94d added Graphview tool, based on Isabelle/Scala and Swing/Graphics2D;
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
    16
50472
bad1a1ca61e1 separate instance of class Parameters for each Main_Panel -- avoid global program state;
wenzelm
parents: 50463
diff changeset
    17
object Popups
bad1a1ca61e1 separate instance of class Parameters for each Main_Panel -- avoid global program state;
wenzelm
parents: 50463
diff changeset
    18
{
59245
be4180f3c236 more formal Graph_Display.Node (with ordering) and Graph_Display.Edge;
wenzelm
parents: 59240
diff changeset
    19
  def apply(
be4180f3c236 more formal Graph_Display.Node (with ordering) and Graph_Display.Edge;
wenzelm
parents: 59240
diff changeset
    20
    panel: Graph_Panel,
be4180f3c236 more formal Graph_Display.Node (with ordering) and Graph_Display.Edge;
wenzelm
parents: 59240
diff changeset
    21
    mouse_node: Option[Graph_Display.Node],
be4180f3c236 more formal Graph_Display.Node (with ordering) and Graph_Display.Edge;
wenzelm
parents: 59240
diff changeset
    22
    selected_nodes: List[Graph_Display.Node]): JPopupMenu =
49557
61988f9df94d added Graphview tool, based on Isabelle/Scala and Swing/Graphics2D;
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
    23
  {
50475
8cc351df4a23 just one class with parameters;
wenzelm
parents: 50472
diff changeset
    24
    val visualizer = panel.visualizer
50472
bad1a1ca61e1 separate instance of class Parameters for each Main_Panel -- avoid global program state;
wenzelm
parents: 50463
diff changeset
    25
50475
8cc351df4a23 just one class with parameters;
wenzelm
parents: 50472
diff changeset
    26
    val add_mutator = visualizer.model.Mutators.add _
59228
56b34fc7a015 more dynamic visualizer -- re-use Isabelle/jEdit options;
wenzelm
parents: 59221
diff changeset
    27
    val curr = visualizer.model.current_graph
50472
bad1a1ca61e1 separate instance of class Parameters for each Main_Panel -- avoid global program state;
wenzelm
parents: 50463
diff changeset
    28
59245
be4180f3c236 more formal Graph_Display.Node (with ordering) and Graph_Display.Edge;
wenzelm
parents: 59240
diff changeset
    29
    def filter_context(
be4180f3c236 more formal Graph_Display.Node (with ordering) and Graph_Display.Edge;
wenzelm
parents: 59240
diff changeset
    30
        nodes: List[Graph_Display.Node], reverse: Boolean, caption: String, edges: Boolean) =
49557
61988f9df94d added Graphview tool, based on Isabelle/Scala and Swing/Graphics2D;
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
    31
      new Menu(caption) {
59218
eadd82d440b0 tuned whitespace;
wenzelm
parents: 59202
diff changeset
    32
        contents +=
eadd82d440b0 tuned whitespace;
wenzelm
parents: 59202
diff changeset
    33
          new MenuItem(new Action("This") {
49557
61988f9df94d added Graphview tool, based on Isabelle/Scala and Swing/Graphics2D;
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
    34
            def apply =
59245
be4180f3c236 more formal Graph_Display.Node (with ordering) and Graph_Display.Edge;
wenzelm
parents: 59240
diff changeset
    35
              add_mutator(Mutator.make(visualizer, Mutator.Node_List(nodes, reverse, false, false)))
49557
61988f9df94d added Graphview tool, based on Isabelle/Scala and Swing/Graphics2D;
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
    36
          })
61988f9df94d added Graphview tool, based on Isabelle/Scala and Swing/Graphics2D;
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
    37
59218
eadd82d440b0 tuned whitespace;
wenzelm
parents: 59202
diff changeset
    38
        contents +=
eadd82d440b0 tuned whitespace;
wenzelm
parents: 59202
diff changeset
    39
          new MenuItem(new Action("Family") {
49557
61988f9df94d added Graphview tool, based on Isabelle/Scala and Swing/Graphics2D;
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
    40
            def apply =
59245
be4180f3c236 more formal Graph_Display.Node (with ordering) and Graph_Display.Edge;
wenzelm
parents: 59240
diff changeset
    41
              add_mutator(Mutator.make(visualizer, Mutator.Node_List(nodes, reverse, true, true)))
49557
61988f9df94d added Graphview tool, based on Isabelle/Scala and Swing/Graphics2D;
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
    42
          })
61988f9df94d added Graphview tool, based on Isabelle/Scala and Swing/Graphics2D;
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
    43
59218
eadd82d440b0 tuned whitespace;
wenzelm
parents: 59202
diff changeset
    44
        contents +=
eadd82d440b0 tuned whitespace;
wenzelm
parents: 59202
diff changeset
    45
          new MenuItem(new Action("Parents") {
49557
61988f9df94d added Graphview tool, based on Isabelle/Scala and Swing/Graphics2D;
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
    46
            def apply =
59245
be4180f3c236 more formal Graph_Display.Node (with ordering) and Graph_Display.Edge;
wenzelm
parents: 59240
diff changeset
    47
              add_mutator(Mutator.make(visualizer, Mutator.Node_List(nodes, reverse, false, true)))
49557
61988f9df94d added Graphview tool, based on Isabelle/Scala and Swing/Graphics2D;
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
    48
          })
61988f9df94d added Graphview tool, based on Isabelle/Scala and Swing/Graphics2D;
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
    49
59218
eadd82d440b0 tuned whitespace;
wenzelm
parents: 59202
diff changeset
    50
        contents +=
eadd82d440b0 tuned whitespace;
wenzelm
parents: 59202
diff changeset
    51
          new MenuItem(new Action("Children") {
49557
61988f9df94d added Graphview tool, based on Isabelle/Scala and Swing/Graphics2D;
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
    52
            def apply =
59245
be4180f3c236 more formal Graph_Display.Node (with ordering) and Graph_Display.Edge;
wenzelm
parents: 59240
diff changeset
    53
              add_mutator(Mutator.make(visualizer, Mutator.Node_List(nodes, reverse, true, false)))
49557
61988f9df94d added Graphview tool, based on Isabelle/Scala and Swing/Graphics2D;
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
    54
          })
61988f9df94d added Graphview tool, based on Isabelle/Scala and Swing/Graphics2D;
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
    55
61988f9df94d added Graphview tool, based on Isabelle/Scala and Swing/Graphics2D;
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
    56
        if (edges) {
59218
eadd82d440b0 tuned whitespace;
wenzelm
parents: 59202
diff changeset
    57
          val outs =
59245
be4180f3c236 more formal Graph_Display.Node (with ordering) and Graph_Display.Edge;
wenzelm
parents: 59240
diff changeset
    58
            nodes.map(l => (l, curr.imm_succs(l)))  // FIXME iterator
be4180f3c236 more formal Graph_Display.Node (with ordering) and Graph_Display.Edge;
wenzelm
parents: 59240
diff changeset
    59
              .filter(_._2.size > 0).sortBy(_._1)(Graph_Display.Node.Ordering)
59218
eadd82d440b0 tuned whitespace;
wenzelm
parents: 59202
diff changeset
    60
          val ins =
59245
be4180f3c236 more formal Graph_Display.Node (with ordering) and Graph_Display.Edge;
wenzelm
parents: 59240
diff changeset
    61
            nodes.map(l => (l, curr.imm_preds(l)))  // FIXME iterator
be4180f3c236 more formal Graph_Display.Node (with ordering) and Graph_Display.Edge;
wenzelm
parents: 59240
diff changeset
    62
              .filter(_._2.size > 0).sortBy(_._1)(Graph_Display.Node.Ordering)
49557
61988f9df94d added Graphview tool, based on Isabelle/Scala and Swing/Graphics2D;
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
    63
61988f9df94d added Graphview tool, based on Isabelle/Scala and Swing/Graphics2D;
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
    64
          if (outs.nonEmpty || ins.nonEmpty) {
61988f9df94d added Graphview tool, based on Isabelle/Scala and Swing/Graphics2D;
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
    65
            contents += new Separator()
61988f9df94d added Graphview tool, based on Isabelle/Scala and Swing/Graphics2D;
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
    66
59218
eadd82d440b0 tuned whitespace;
wenzelm
parents: 59202
diff changeset
    67
            contents +=
eadd82d440b0 tuned whitespace;
wenzelm
parents: 59202
diff changeset
    68
              new Menu("Edge") {
eadd82d440b0 tuned whitespace;
wenzelm
parents: 59202
diff changeset
    69
                if (outs.nonEmpty) {
59247
67bb4b3e1504 tuned menu items;
wenzelm
parents: 59246
diff changeset
    70
                  contents += new MenuItem("From ...") { enabled = false }
49557
61988f9df94d added Graphview tool, based on Isabelle/Scala and Swing/Graphics2D;
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
    71
59218
eadd82d440b0 tuned whitespace;
wenzelm
parents: 59202
diff changeset
    72
                  outs.map(e => {
eadd82d440b0 tuned whitespace;
wenzelm
parents: 59202
diff changeset
    73
                    val (from, tos) = e
eadd82d440b0 tuned whitespace;
wenzelm
parents: 59202
diff changeset
    74
                    contents +=
59247
67bb4b3e1504 tuned menu items;
wenzelm
parents: 59246
diff changeset
    75
                      new Menu(quote(from.toString)) {
67bb4b3e1504 tuned menu items;
wenzelm
parents: 59246
diff changeset
    76
                        contents += new MenuItem("To ...") { enabled = false }
59221
f779f83ef4ec tuned signature;
wenzelm
parents: 59218
diff changeset
    77
59245
be4180f3c236 more formal Graph_Display.Node (with ordering) and Graph_Display.Edge;
wenzelm
parents: 59240
diff changeset
    78
                        tos.toList.sorted(Graph_Display.Node.Ordering).distinct.map(to => {
59218
eadd82d440b0 tuned whitespace;
wenzelm
parents: 59202
diff changeset
    79
                          contents +=
eadd82d440b0 tuned whitespace;
wenzelm
parents: 59202
diff changeset
    80
                            new MenuItem(
59247
67bb4b3e1504 tuned menu items;
wenzelm
parents: 59246
diff changeset
    81
                              new Action(quote(to.toString)) {
59218
eadd82d440b0 tuned whitespace;
wenzelm
parents: 59202
diff changeset
    82
                                def apply =
eadd82d440b0 tuned whitespace;
wenzelm
parents: 59202
diff changeset
    83
                                  add_mutator(
59246
32903b99c2ef tuned signature;
wenzelm
parents: 59245
diff changeset
    84
                                    Mutator.make(visualizer, Mutator.Edge_Endpoints((from, to))))
59218
eadd82d440b0 tuned whitespace;
wenzelm
parents: 59202
diff changeset
    85
                              })
eadd82d440b0 tuned whitespace;
wenzelm
parents: 59202
diff changeset
    86
                        })
eadd82d440b0 tuned whitespace;
wenzelm
parents: 59202
diff changeset
    87
                      }
eadd82d440b0 tuned whitespace;
wenzelm
parents: 59202
diff changeset
    88
                  })
eadd82d440b0 tuned whitespace;
wenzelm
parents: 59202
diff changeset
    89
                }
eadd82d440b0 tuned whitespace;
wenzelm
parents: 59202
diff changeset
    90
                if (outs.nonEmpty && ins.nonEmpty) { contents += new Separator() }
eadd82d440b0 tuned whitespace;
wenzelm
parents: 59202
diff changeset
    91
                if (ins.nonEmpty) {
59247
67bb4b3e1504 tuned menu items;
wenzelm
parents: 59246
diff changeset
    92
                  contents += new MenuItem("To ...") { enabled = false }
49557
61988f9df94d added Graphview tool, based on Isabelle/Scala and Swing/Graphics2D;
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
    93
59218
eadd82d440b0 tuned whitespace;
wenzelm
parents: 59202
diff changeset
    94
                  ins.map(e => {
eadd82d440b0 tuned whitespace;
wenzelm
parents: 59202
diff changeset
    95
                    val (to, froms) = e
eadd82d440b0 tuned whitespace;
wenzelm
parents: 59202
diff changeset
    96
                    contents +=
59247
67bb4b3e1504 tuned menu items;
wenzelm
parents: 59246
diff changeset
    97
                      new Menu(quote(to.toString)) {
67bb4b3e1504 tuned menu items;
wenzelm
parents: 59246
diff changeset
    98
                        contents += new MenuItem("From ...") { enabled = false }
59221
f779f83ef4ec tuned signature;
wenzelm
parents: 59218
diff changeset
    99
59245
be4180f3c236 more formal Graph_Display.Node (with ordering) and Graph_Display.Edge;
wenzelm
parents: 59240
diff changeset
   100
                        froms.toList.sorted(Graph_Display.Node.Ordering).distinct.map(from => {
59218
eadd82d440b0 tuned whitespace;
wenzelm
parents: 59202
diff changeset
   101
                          contents +=
eadd82d440b0 tuned whitespace;
wenzelm
parents: 59202
diff changeset
   102
                            new MenuItem(
59247
67bb4b3e1504 tuned menu items;
wenzelm
parents: 59246
diff changeset
   103
                              new Action(quote(from.toString)) {
59218
eadd82d440b0 tuned whitespace;
wenzelm
parents: 59202
diff changeset
   104
                                def apply =
59221
f779f83ef4ec tuned signature;
wenzelm
parents: 59218
diff changeset
   105
                                  add_mutator(
59246
32903b99c2ef tuned signature;
wenzelm
parents: 59245
diff changeset
   106
                                    Mutator.make(visualizer, Mutator.Edge_Endpoints((from, to))))
59218
eadd82d440b0 tuned whitespace;
wenzelm
parents: 59202
diff changeset
   107
                              })
eadd82d440b0 tuned whitespace;
wenzelm
parents: 59202
diff changeset
   108
                        })
eadd82d440b0 tuned whitespace;
wenzelm
parents: 59202
diff changeset
   109
                      }
eadd82d440b0 tuned whitespace;
wenzelm
parents: 59202
diff changeset
   110
                  })
eadd82d440b0 tuned whitespace;
wenzelm
parents: 59202
diff changeset
   111
                }
49557
61988f9df94d added Graphview tool, based on Isabelle/Scala and Swing/Graphics2D;
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
   112
              }
61988f9df94d added Graphview tool, based on Isabelle/Scala and Swing/Graphics2D;
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
   113
          }
61988f9df94d added Graphview tool, based on Isabelle/Scala and Swing/Graphics2D;
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
   114
        }
61988f9df94d added Graphview tool, based on Isabelle/Scala and Swing/Graphics2D;
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
   115
    }
61988f9df94d added Graphview tool, based on Isabelle/Scala and Swing/Graphics2D;
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
   116
61988f9df94d added Graphview tool, based on Isabelle/Scala and Swing/Graphics2D;
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
   117
    val popup = new JPopupMenu()
61988f9df94d added Graphview tool, based on Isabelle/Scala and Swing/Graphics2D;
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
   118
59218
eadd82d440b0 tuned whitespace;
wenzelm
parents: 59202
diff changeset
   119
    popup.add(
eadd82d440b0 tuned whitespace;
wenzelm
parents: 59202
diff changeset
   120
      new MenuItem(
59245
be4180f3c236 more formal Graph_Display.Node (with ordering) and Graph_Display.Edge;
wenzelm
parents: 59240
diff changeset
   121
        new Action("Remove all filters") { def apply = visualizer.model.Mutators(Nil) }).peer)
49557
61988f9df94d added Graphview tool, based on Isabelle/Scala and Swing/Graphics2D;
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
   122
    popup.add(new JPopupMenu.Separator)
61988f9df94d added Graphview tool, based on Isabelle/Scala and Swing/Graphics2D;
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
   123
59245
be4180f3c236 more formal Graph_Display.Node (with ordering) and Graph_Display.Edge;
wenzelm
parents: 59240
diff changeset
   124
    if (mouse_node.isDefined) {
be4180f3c236 more formal Graph_Display.Node (with ordering) and Graph_Display.Edge;
wenzelm
parents: 59240
diff changeset
   125
      val node = mouse_node.get
59247
67bb4b3e1504 tuned menu items;
wenzelm
parents: 59246
diff changeset
   126
      popup.add(new MenuItem("Mouse over: " + quote(node.toString)) { enabled = false }.peer)
49557
61988f9df94d added Graphview tool, based on Isabelle/Scala and Swing/Graphics2D;
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
   127
59245
be4180f3c236 more formal Graph_Display.Node (with ordering) and Graph_Display.Edge;
wenzelm
parents: 59240
diff changeset
   128
      popup.add(filter_context(List(node), true, "Hide", true).peer)
be4180f3c236 more formal Graph_Display.Node (with ordering) and Graph_Display.Edge;
wenzelm
parents: 59240
diff changeset
   129
      popup.add(filter_context(List(node), false, "Show only", false).peer)
50472
bad1a1ca61e1 separate instance of class Parameters for each Main_Panel -- avoid global program state;
wenzelm
parents: 50463
diff changeset
   130
bad1a1ca61e1 separate instance of class Parameters for each Main_Panel -- avoid global program state;
wenzelm
parents: 50463
diff changeset
   131
      popup.add(new JPopupMenu.Separator)
49557
61988f9df94d added Graphview tool, based on Isabelle/Scala and Swing/Graphics2D;
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
   132
    }
59245
be4180f3c236 more formal Graph_Display.Node (with ordering) and Graph_Display.Edge;
wenzelm
parents: 59240
diff changeset
   133
    if (!selected_nodes.isEmpty) {
59218
eadd82d440b0 tuned whitespace;
wenzelm
parents: 59202
diff changeset
   134
      val text =
59247
67bb4b3e1504 tuned menu items;
wenzelm
parents: 59246
diff changeset
   135
        if (selected_nodes.length > 1) "multiple"
67bb4b3e1504 tuned menu items;
wenzelm
parents: 59246
diff changeset
   136
        else quote(selected_nodes.head.toString)
49557
61988f9df94d added Graphview tool, based on Isabelle/Scala and Swing/Graphics2D;
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
   137
59245
be4180f3c236 more formal Graph_Display.Node (with ordering) and Graph_Display.Edge;
wenzelm
parents: 59240
diff changeset
   138
      popup.add(new MenuItem("Selected: " + text) { enabled = false }.peer)
49557
61988f9df94d added Graphview tool, based on Isabelle/Scala and Swing/Graphics2D;
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
   139
59245
be4180f3c236 more formal Graph_Display.Node (with ordering) and Graph_Display.Edge;
wenzelm
parents: 59240
diff changeset
   140
      popup.add(filter_context(selected_nodes, true, "Hide", true).peer)
be4180f3c236 more formal Graph_Display.Node (with ordering) and Graph_Display.Edge;
wenzelm
parents: 59240
diff changeset
   141
      popup.add(filter_context(selected_nodes, false, "Show only", false).peer)
49557
61988f9df94d added Graphview tool, based on Isabelle/Scala and Swing/Graphics2D;
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
   142
      popup.add(new JPopupMenu.Separator)
61988f9df94d added Graphview tool, based on Isabelle/Scala and Swing/Graphics2D;
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
   143
    }
61988f9df94d added Graphview tool, based on Isabelle/Scala and Swing/Graphics2D;
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
   144
59218
eadd82d440b0 tuned whitespace;
wenzelm
parents: 59202
diff changeset
   145
    popup.add(
59247
67bb4b3e1504 tuned menu items;
wenzelm
parents: 59246
diff changeset
   146
      new MenuItem(new Action("Fit to window") { def apply = panel.fit_to_window() }).peer)
50472
bad1a1ca61e1 separate instance of class Parameters for each Main_Panel -- avoid global program state;
wenzelm
parents: 50463
diff changeset
   147
49557
61988f9df94d added Graphview tool, based on Isabelle/Scala and Swing/Graphics2D;
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
   148
    popup
61988f9df94d added Graphview tool, based on Isabelle/Scala and Swing/Graphics2D;
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
   149
  }
61988f9df94d added Graphview tool, based on Isabelle/Scala and Swing/Graphics2D;
Markus Kaiser <markus.kaiser@in.tum.de>
parents:
diff changeset
   150
}