class PIDE_Docking_Framework extends DockableWindowManagerProvider { overridedef create(
view: View,
instance: DockableWindowFactory,
config: View.ViewConfig): DockableWindowManager = new DockableWindowManagerImpl(view, instance, config) { overridedef createPopupMenu(
container: DockableWindowContainer,
dockable_name: String,
clone: Boolean
): JPopupMenu = { val menu = super.createPopupMenu(container, dockable_name, clone)
val detach_operation: Option[() => Unit] =
container match { case floating: FloatingWindowContainer =>
Untyped.get[AnyRef](Untyped.get[AnyRef](floating, "entry"), "win") match { case dockable: Dockable => dockable.detach_operation case _ => None
}
case panel: PanelWindowContainer => val entries = Untyped.get[JList[AnyRef]](panel, "dockables").toArray val wins =
(for {
entry <- entries.iterator if Untyped.get[String](Untyped.get(entry, "factory"), "name") == dockable_name
win = Untyped.get[Any](entry, "win") if win != null
} yield win).toList
wins match { case List(dockable: Dockable) => dockable.detach_operation case _ => None
}
case _ => None
} if (detach_operation.isDefined) { val detach_item = new JMenuItem("Detach")
detach_item.addActionListener(new ActionListener { def actionPerformed(evt: ActionEvent): Unit = detach_operation.get.apply()
})
menu.add(detach_item)
}
menu
}
}
}
¤ Dauer der Verarbeitung: 0.1 Sekunden
(vorverarbeitet)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung ist noch experimentell.