34 val menu = super.createPopupMenu(container, dockable_name, clone) |
34 val menu = super.createPopupMenu(container, dockable_name, clone) |
35 |
35 |
36 val detach_operation: Option[() => Unit] = |
36 val detach_operation: Option[() => Unit] = |
37 container match { |
37 container match { |
38 case floating: FloatingWindowContainer => |
38 case floating: FloatingWindowContainer => |
39 val entry = Untyped.get(floating, "entry") |
39 Untyped.get[AnyRef](Untyped.get[AnyRef](floating, "entry"), "win") match { |
40 val win = Untyped.get(entry, "win") |
|
41 win match { |
|
42 case dockable: Dockable => dockable.detach_operation |
40 case dockable: Dockable => dockable.detach_operation |
43 case _ => None |
41 case _ => None |
44 } |
42 } |
45 |
43 |
46 case panel: PanelWindowContainer => |
44 case panel: PanelWindowContainer => |
47 val entries = |
45 val entries = Untyped.get[java.util.List[AnyRef]](panel, "dockables").toArray |
48 Untyped.get(panel, "dockables").asInstanceOf[java.util.List[AnyRef]].toArray |
|
49 val wins = |
46 val wins = |
50 (for { |
47 (for { |
51 entry <- entries.iterator |
48 entry <- entries.iterator |
52 if Untyped.get(Untyped.get(entry, "factory"), "name") == dockable_name |
49 if Untyped.get[String](Untyped.get(entry, "factory"), "name") == dockable_name |
53 win = Untyped.get(entry, "win") |
50 win = Untyped.get[Any](entry, "win") |
54 if win != null |
51 if win != null |
55 } yield win).toList |
52 } yield win).toList |
56 wins match { |
53 wins match { |
57 case List(dockable: Dockable) => dockable.detach_operation |
54 case List(dockable: Dockable) => dockable.detach_operation |
58 case _ => None |
55 case _ => None |