src/Tools/jEdit/src-base/dockable.scala
author wenzelm
Fri, 01 Sep 2017 15:15:29 +0200
changeset 66591 6efa351190d0
parent 56931 src/Tools/jEdit/src/dockable.scala@9ecf2cbfc80d
child 71525 d7b0d078266d
permissions -rw-r--r--
more robust: provide docking framework via base plugin;
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
66591
6efa351190d0 more robust: provide docking framework via base plugin;
wenzelm
parents: 56931
diff changeset
     1
/*  Title:      Tools/jEdit/src-base/dockable.scala
37066
28e6cd90c1ea generic dockable window;
wenzelm
parents:
diff changeset
     2
    Author:     Makarius
28e6cd90c1ea generic dockable window;
wenzelm
parents:
diff changeset
     3
28e6cd90c1ea generic dockable window;
wenzelm
parents:
diff changeset
     4
Generic dockable window.
28e6cd90c1ea generic dockable window;
wenzelm
parents:
diff changeset
     5
*/
28e6cd90c1ea generic dockable window;
wenzelm
parents:
diff changeset
     6
66591
6efa351190d0 more robust: provide docking framework via base plugin;
wenzelm
parents: 56931
diff changeset
     7
package isabelle.jedit_base
37066
28e6cd90c1ea generic dockable window;
wenzelm
parents:
diff changeset
     8
28e6cd90c1ea generic dockable window;
wenzelm
parents:
diff changeset
     9
28e6cd90c1ea generic dockable window;
wenzelm
parents:
diff changeset
    10
import isabelle._
28e6cd90c1ea generic dockable window;
wenzelm
parents:
diff changeset
    11
28e6cd90c1ea generic dockable window;
wenzelm
parents:
diff changeset
    12
import java.awt.{Dimension, Component, BorderLayout}
28e6cd90c1ea generic dockable window;
wenzelm
parents:
diff changeset
    13
import javax.swing.JPanel
28e6cd90c1ea generic dockable window;
wenzelm
parents:
diff changeset
    14
28e6cd90c1ea generic dockable window;
wenzelm
parents:
diff changeset
    15
import org.gjt.sp.jedit.View
53787
e64389fe2d2c focus on default component according to jEdit window management;
wenzelm
parents: 43282
diff changeset
    16
import org.gjt.sp.jedit.gui.{DefaultFocusComponent, DockableWindowManager}
37066
28e6cd90c1ea generic dockable window;
wenzelm
parents:
diff changeset
    17
28e6cd90c1ea generic dockable window;
wenzelm
parents:
diff changeset
    18
53787
e64389fe2d2c focus on default component according to jEdit window management;
wenzelm
parents: 43282
diff changeset
    19
class Dockable(view: View, position: String)
e64389fe2d2c focus on default component according to jEdit window management;
wenzelm
parents: 43282
diff changeset
    20
  extends JPanel(new BorderLayout) with DefaultFocusComponent
37066
28e6cd90c1ea generic dockable window;
wenzelm
parents:
diff changeset
    21
{
28e6cd90c1ea generic dockable window;
wenzelm
parents:
diff changeset
    22
  if (position == DockableWindowManager.FLOATING)
28e6cd90c1ea generic dockable window;
wenzelm
parents:
diff changeset
    23
    setPreferredSize(new Dimension(500, 250))
28e6cd90c1ea generic dockable window;
wenzelm
parents:
diff changeset
    24
56931
9ecf2cbfc80d always bounce focus back to main text area, unless explicit focus component is given here (see also 7b65f4da136d);
wenzelm
parents: 56906
diff changeset
    25
  def focusOnDefaultComponent { JEdit_Lib.request_focus_view(view) }
53787
e64389fe2d2c focus on default component according to jEdit window management;
wenzelm
parents: 43282
diff changeset
    26
37067
31093f3687b5 simplified dockables using class Dockable;
wenzelm
parents: 37066
diff changeset
    27
  def set_content(c: Component) { add(c, BorderLayout.CENTER) }
31093f3687b5 simplified dockables using class Dockable;
wenzelm
parents: 37066
diff changeset
    28
  def set_content(c: scala.swing.Component) { add(c.peer, BorderLayout.CENTER) }
37066
28e6cd90c1ea generic dockable window;
wenzelm
parents:
diff changeset
    29
56906
408b526911f7 some odd tricks to provide "Detach" menu item, via "PIDE" docking framework;
wenzelm
parents: 53787
diff changeset
    30
  def detach_operation: Option[() => Unit] = None
408b526911f7 some odd tricks to provide "Detach" menu item, via "PIDE" docking framework;
wenzelm
parents: 53787
diff changeset
    31
37066
28e6cd90c1ea generic dockable window;
wenzelm
parents:
diff changeset
    32
  protected def init() { }
28e6cd90c1ea generic dockable window;
wenzelm
parents:
diff changeset
    33
  protected def exit() { }
28e6cd90c1ea generic dockable window;
wenzelm
parents:
diff changeset
    34
28e6cd90c1ea generic dockable window;
wenzelm
parents:
diff changeset
    35
  override def addNotify()
28e6cd90c1ea generic dockable window;
wenzelm
parents:
diff changeset
    36
  {
28e6cd90c1ea generic dockable window;
wenzelm
parents:
diff changeset
    37
    super.addNotify()
28e6cd90c1ea generic dockable window;
wenzelm
parents:
diff changeset
    38
    init()
28e6cd90c1ea generic dockable window;
wenzelm
parents:
diff changeset
    39
  }
28e6cd90c1ea generic dockable window;
wenzelm
parents:
diff changeset
    40
28e6cd90c1ea generic dockable window;
wenzelm
parents:
diff changeset
    41
  override def removeNotify()
28e6cd90c1ea generic dockable window;
wenzelm
parents:
diff changeset
    42
  {
28e6cd90c1ea generic dockable window;
wenzelm
parents:
diff changeset
    43
    exit()
28e6cd90c1ea generic dockable window;
wenzelm
parents:
diff changeset
    44
    super.removeNotify()
28e6cd90c1ea generic dockable window;
wenzelm
parents:
diff changeset
    45
  }
28e6cd90c1ea generic dockable window;
wenzelm
parents:
diff changeset
    46
}