de.jsystems.framework.desktop
Class BusinessDesktopFrameController

java.lang.Object
  extended byde.jsystems.framework.common.Controller
      extended byde.jsystems.framework.common.BusinessFrameController
          extended byde.jsystems.framework.desktop.BusinessDesktopFrameController
All Implemented Interfaces:
DesktopManager, FrameworkKonstanten, IController, IMessageTexte, IProgressSender

public class BusinessDesktopFrameController
extends BusinessFrameController
implements DesktopManager

Controller für einen BusinessDesktop. Hier werden die enthaltenen BusinessInternalFrames gehandelt. Gleichzeitig ist dieser Controller auch ein DesktopManager. Er enthält die gleiche Implementierung wie die Klasse DefaultDesktopManager, arbeitet aber mit BusinessInternalFrames oder von dieser Klasse abgeleiteten Klassen.

Version:
1.0
Copyright by Jens Homm 2001 - 2003
Author:
Jens Homm JSYSTEMS

Field Summary
protected  BusinessDesktopFrame businessDesktop
          Frame für den Desktop
protected static int DEFAULT_DRAG_MODE
           
protected  int dragMode
           
protected static int FASTER_DRAG_MODE
           
protected static String HAS_BEEN_ICONIFIED_PROPERTY
           
protected  int internalFrameCount
          Zähler für die InternalFrames.
protected static int OUTLINE_DRAG_MODE
           
 
Fields inherited from class de.jsystems.framework.common.BusinessFrameController
businessFrame, frameMenu, frameToolbar
 
Fields inherited from class de.jsystems.framework.common.Controller
actionManager, ausgewaehlteModels, ausgewaehlteView, menu, models, popup, printer, startbild, statuszeile, systemdialoge, toolbar, views
 
Fields inherited from interface de.jsystems.framework.common.FrameworkKonstanten
DEFAULT, EDITMODE, FRAMEWORK_LAF, METAL_LAF, MOTIF_LAF, NEWMODE, OHNE, ONLY_MENU, ONLY_TOOLBAR, SHOWMODE, WINDOWS_LAF
 
Fields inherited from interface de.jsystems.framework.common.IMessageTexte
FEHLER, FEHLER_AUFGETRETEN
 
Constructor Summary
BusinessDesktopFrameController()
          Erzeugt den Controller für ein MDI.
BusinessDesktopFrameController(int auspraegung)
          Erzeugt den Controller für ein MDI.
 
Method Summary
 void activateFrame(JInternalFrame f)
          Sorgt dafuer, dass das uebergebene InternalFrame den Focus erhaelt.
protected  void activateNextFrame(Container c)
          Aktiviert das erste im Container enthaltene Frame.
 void addInternalFrame(BusinessInternalFrame internalFrame)
          Fuegt das uebergebene InternalFrame dem Desktop hinzu.
 void beginDraggingFrame(JComponent f)
          Diese Methode wird aufgerufen wenn festgestellt wird, dass das InternalFrame bewegt werden soll.
 void beginResizingFrame(JComponent f, int direction)
          Diese Methode wird aufgerufen wenn festgestellt wird, das ein InternalFrame in der Groesse geaendert werden soll.
 void closeFrame(JInternalFrame f)
          Schliesst das uebergene InternalFrame im Desktop.
 void deactivateFrame(JInternalFrame f)
          Kennzeichnet das uebergebene InternalFrame als nicht aktiv.
 void deiconifyFrame(JInternalFrame f)
          Deiconifiziert das uebergebene InternalFrame.
 void dragFrame(JComponent f, int newX, int newY)
          Diese Methode wird aufgerufen wenn ein InternalFrame auf dem Desktop bewegt wurde.
 void endDraggingFrame(JComponent f)
          Benachrichtig den DesktopManager, das die Bewegung des InternalFrame beendet wurde.
 void endResizingFrame(JComponent f)
          Benachrichtig den DesktopManager, das die Groessenaenderung fuer das InternalFrame beendet wurde.
 BusinessInternalFrameController getActiveFrameController()
          Gibt den Controller des gerade aktiven(= im Vordergrund stehendes) InternalFrame zurück.
protected  Rectangle getBoundsForIconOf(JInternalFrame f)
          Diese Methode wird von der Methode iconifyFrame(JInternalFrame) aufgerufen zum ermitteln der Groesse des anzuzeigenden Icon.
(package private)  BusinessDesktopFrame getDesktop()
          Gibt den von diesem Controller verwalteten Desktop zurueck.
 int getInternalFrameCount()
          Gibt die Anzahl InternalFrames im Desktop zurueck.
protected  Rectangle getPreviosBounds(JInternalFrame f)
          Gibt die Größe und Position des InternalFrame zurück, di dieses hatte, bevor es maximiert wurde.
 BusinessInternalFrame getSelectedFrame()
          Gibt das gerade im Vordergrund stehende Fenster zurück.
 void hideMDI()
          Macht das MDI unsichtbar.
 void iconifyFrame(JInternalFrame f)
          Iconifiziert das uebergeben InternalFrame.Bei Aufruf dieser Methode wird das InternalFrame aus dem Dekstop entfernt und statt dessen ein Icon fuer das Internal Frame angezeigt.
 void maximizeFrame(JInternalFrame f)
          Vergroeßert das InternalFrame auf die Groesse des umliegenden MDI.
 void minimizeFrame(JInternalFrame f)
          Setzt das uebergebene InternalFrame wieder an die Position und auf die Groesse, de es vor dem Aufruf der Methode maximizeFrame(JInternalFrame) hatte.
 void openFrame(JInternalFrame f)
          Oeffnet das uebergebene InternalFrame in einem Desktop, sofern dieses InternalFrame einem Desktop schon hinzugefuegt wurde.
protected  void removeIconFor(JInternalFrame f)
          Loescht das fuer das uebergebene InternalFrame auf dem Desktop angezeigte Icon.
 void removeInternalFrame(BusinessInternalFrame internalFrame)
          Loescht das uebergebene InternalFrame aus dem Desktop.
 void resizeFrame(JComponent f, int newX, int newY, int newWidth, int newHeight)
          Diese Methode wird aufgerufen, wenn die Groesse eines InternalFrame geendert wurde.
 void setBoundsForFrame(JComponent f, int newX, int newY, int newWidth, int newHeight)
          Setzt die neue Groesse und Position fuer das uebergebene InternalFrame.
 void setDesktopLayout(LayoutManager layout)
          Setzt den LayoutManager fuer den Desktop.
 void setMDISize(Dimension d)
          Setzt die Größe für das MDI.
 void setMDISize(int width, int height)
          Setzt die Größe für das MDI.
protected  void setPreviosBounds(JInternalFrame f, Rectangle r)
          Speichert die aktuelle Größe und Position des InternalFrames, bevor das InternalFrame maximiert wird.
protected  void setWasIcon(JInternalFrame f, Boolean value)
          Legt fest, ob das InternalFrame als Icon dargestellt werden soll oder normal.
 void showMDI()
          Macht das MDI sichtbar.
protected  boolean wasIcon(JInternalFrame f)
          Gibt den Zustand des Frames zurück, ob es iconifiziert wurde oder nicht.
 
Methods inherited from class de.jsystems.framework.common.BusinessFrameController
changeLookAndFeel, getBusinessFrame, hideFrame, removeLeftView, removeRightView, setLeftView, setRightView, showFrame, toggleStatusArea, toggleToolbar
 
Methods inherited from class de.jsystems.framework.common.Controller
about, canExit, close, copy, createDefaultMenu, createDefaultPopup, createDefaultToolbar, createMenu, createNew, createPopup, createToolbar, cut, delete, edit, exceptionInAction, getActionManager, getAusgewaehlteModels, getMenue, getMessageList, getPopup, getStatusArea, getToolbar, getView, help, info, load, paste, print, redo, registerModel, registerView, registerViewActionControls, save, saveAs, setDefaultLookAndFeel, setLastLookAndFeel, setLookAndFeel, setStartUpProcent, setStartUpStatus, setStatusText, show, showPopup, undo
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

HAS_BEEN_ICONIFIED_PROPERTY

protected static final String HAS_BEEN_ICONIFIED_PROPERTY
See Also:
Constant Field Values

DEFAULT_DRAG_MODE

protected static final int DEFAULT_DRAG_MODE
See Also:
Constant Field Values

OUTLINE_DRAG_MODE

protected static final int OUTLINE_DRAG_MODE
See Also:
Constant Field Values

FASTER_DRAG_MODE

protected static final int FASTER_DRAG_MODE
See Also:
Constant Field Values

dragMode

protected int dragMode

internalFrameCount

protected int internalFrameCount
Zähler für die InternalFrames.


businessDesktop

protected BusinessDesktopFrame businessDesktop
Frame für den Desktop

Constructor Detail

BusinessDesktopFrameController

public BusinessDesktopFrameController()
Erzeugt den Controller für ein MDI. Das MDI hat ein Menü und eine Toolbar.


BusinessDesktopFrameController

public BusinessDesktopFrameController(int auspraegung)
Erzeugt den Controller für ein MDI. Hier wird das MDI angelegt und gegebenenfalls mit einem Menue und/oder einer Toolbar versehen. Die Auspraegung kann dabei die Werte
DEFAULT - Erzeugt ein Standardmenü und eine Standardtoolbar
ONLY_MENU - Erzeugt nur ein Standardmenü
ONLY_TOOLBAR - Erzeugt nur eine Standdardtoolbar
OHNE - Erzeugt nichts
annehmen. Die Action aus dem BusinessDesktop zum beenden der VM bei schliessen des Desktops wird hier im ActionManager registriert.

Parameters:
auspraegung - Festlegung, ob ein Menü und/oder eine Toolbar erzeugt werden.
Method Detail

addInternalFrame

public void addInternalFrame(BusinessInternalFrame internalFrame)
Fuegt das uebergebene InternalFrame dem Desktop hinzu. Dabei wird dieses InternalFrame auch gleich mit einem neuen Menuepunkt im Fenstermenue verbunden. Falls es keine Menuebar gibt wird hier eine angelegt, die nur das Fenstermenue enthaelt. Wenn es eine Menuebar gibt, diese aber kein Fenstermenue enthaelt, so wird das Fenstermenue der Menuebar hinzugefuegt. Dabei erscheint dieses Menue ganz rechts. Das uebergebene InternalFrame darf nicht NULL sein.

Die im InternalFrame angegebene Klasse fuer den InternalFrameListener wird hier registriert. Falls keine eigene Klasse gesetzt wurde, wird die Action ManageInternalFrameAction registriert.

Parameters:
internalFrame - Das dem Desktop hinzuzufuegende InternalFrame.
See Also:
BusinessMenu.addMenuItem(String, JMenuItem, int), BusinessMenu.existMenuEntry(String)

removeInternalFrame

public void removeInternalFrame(BusinessInternalFrame internalFrame)
Loescht das uebergebene InternalFrame aus dem Desktop. Falls hier NULL uebergeben wurde passiert nichts. Das Fenstermenue wird entsprechend angepasst.

Parameters:
internalFrame - Das aus dem Desktop zu loeschende InternalFrame.
See Also:
BusinessMenu.removeMenuEntry(String)

getSelectedFrame

public BusinessInternalFrame getSelectedFrame()
Gibt das gerade im Vordergrund stehende Fenster zurück.

Returns:
Das aktive InternalFrame im Desktop.

getActiveFrameController

public BusinessInternalFrameController getActiveFrameController()
Gibt den Controller des gerade aktiven(= im Vordergrund stehendes) InternalFrame zurück. Wenn keines der Fenster den Focus hat, wird NULL zurückgegeben.

Returns:
Der Controller des gerade aktiven InternalFrame oder NULL.

showMDI

public void showMDI()
Macht das MDI sichtbar.


hideMDI

public void hideMDI()
Macht das MDI unsichtbar.


getDesktop

BusinessDesktopFrame getDesktop()
Gibt den von diesem Controller verwalteten Desktop zurueck.

Returns:
Der von diesem Controller verwaltete Desktop.

setMDISize

public void setMDISize(Dimension d)
Setzt die Größe für das MDI.

Parameters:
d - Die Groesse fuer das DesktopFrame als Dimension-Objekt.

setMDISize

public void setMDISize(int width,
                       int height)
Setzt die Größe für das MDI.

Parameters:
width - Die Breite fuer das DesktopFrame.
height - Die Hoehe fuer das DesktopFrame.

openFrame

public void openFrame(JInternalFrame f)
Oeffnet das uebergebene InternalFrame in einem Desktop, sofern dieses InternalFrame einem Desktop schon hinzugefuegt wurde. Das wird durch der Rueckgabewert der Aufrufkette f.getDesktopIcon().getParent() geprueft. Wenn ein Parent vorhanden ist, so handelt es sich dabei um den Desktop fuer das InternalFrame. Dann wird dem Desktop das InternalFrame zur Anzeige hinzugefuegt und ein vorher evtl. angezeigtes Icon entfernt.

Specified by:
openFrame in interface DesktopManager
Parameters:
f - Das zu oeffnende InternalFrame.

closeFrame

public void closeFrame(JInternalFrame f)
Schliesst das uebergene InternalFrame im Desktop. Dabei wird hier das InternalFrame aus dem Desktop geloescht und stattdessen ein Icon fuer das InternalFrame angezeigt. Das uebergebeneFrame muss das aktive im Desktop sein, sonst passiert hier nichts. Das naechste InternalFrame nach dem hier uebergebenen wird aktiviert.

Specified by:
closeFrame in interface DesktopManager
Parameters:
f - Das zu schliessende InternalFrame.
See Also:
activateNextFrame(Container)

deiconifyFrame

public void deiconifyFrame(JInternalFrame f)
Deiconifiziert das uebergebene InternalFrame. Hier wird eine Icon-Ansicht des InternalFrame aus dem Desktop geloescht und dafuer das InternalFrame wieder an seiner alten Position in seiner alten Groesse angezeigt. Gleichzeitig wird dieses InternalFrame als das aktive Frame im Desktop makiert.

Specified by:
deiconifyFrame in interface DesktopManager
Parameters:
f - Das zu deiconifizierende InternalFrame.

maximizeFrame

public void maximizeFrame(JInternalFrame f)
Vergroeßert das InternalFrame auf die Groesse des umliegenden MDI. Vergroeßert wird also nur auf den sichtbaren Bereich des Desktop, nicht auf die komplette roeße des Desktop. Ein evtl. fuer dieses Frame vorhandene Icon wird aus dem Desktop entfernt und das InternalFrame wird als das aktive im Desktop gekennzeichnet.

Specified by:
maximizeFrame in interface DesktopManager
Parameters:
f - Das zu maximierende InternalFrame.

deactivateFrame

public void deactivateFrame(JInternalFrame f)
Kennzeichnet das uebergebene InternalFrame als nicht aktiv. Damit wird die Titelzeile des InternalFrame grau gekennzeichnet (oder welche Farbe auch immer im Betriebssystem fuer inaktive Fenster benutzt wird). Diese Methode wird immer dann aufgerufen, wenn fuer ein InternalFrame das Property IS_SELECTED auf FALSE gesetzt wurde.

Specified by:
deactivateFrame in interface DesktopManager
Parameters:
f - Das InternalFrame, das den Focus verloren hat.

minimizeFrame

public void minimizeFrame(JInternalFrame f)
Setzt das uebergebene InternalFrame wieder an die Position und auf die Groesse, de es vor dem Aufruf der Methode maximizeFrame(JInternalFrame) hatte.

Specified by:
minimizeFrame in interface DesktopManager
Parameters:
f - Das auf die urspruengliche Groesse zurueckzusetzende InternalFrame.

iconifyFrame

public void iconifyFrame(JInternalFrame f)
Iconifiziert das uebergeben InternalFrame.Bei Aufruf dieser Methode wird das InternalFrame aus dem Dekstop entfernt und statt dessen ein Icon fuer das Internal Frame angezeigt.

Specified by:
iconifyFrame in interface DesktopManager
Parameters:
f - Das zu iconifizierende InternalFrame.

activateNextFrame

protected void activateNextFrame(Container c)
Aktiviert das erste im Container enthaltene Frame. Diese Methode wird aufgerufen, wenn ein anderes Frame Iconifiziert oder aus dem Desktop gelöscht wurde. Dabei ist das naechste frame immer das erste Frame, das im Array aller InternalFrames enthalten ist, das durch die Methode JDesktopPane.getAllFrames() des Desktop geliefert wird.

Der uebergebene Parameter wird nicht benutzt, da immer auf den Desktop im COntroller zugegriffen werden kann.

Parameters:
c - Ein Container, der alle InternalFrames enthaelt.

dragFrame

public void dragFrame(JComponent f,
                      int newX,
                      int newY)
Diese Methode wird aufgerufen wenn ein InternalFrame auf dem Desktop bewegt wurde. Diese Methode sollte vor der Methode beginDraggingFrame(JComponent) aufgerufen werden.

Specified by:
dragFrame in interface DesktopManager
Parameters:
f - Das bewegte InternalFrame.
newX - Die neue X-Position des InternalFrame.
newY - Die neue Y-Position des InternalFrame.

activateFrame

public void activateFrame(JInternalFrame f)
Sorgt dafuer, dass das uebergebene InternalFrame den Focus erhaelt. Diese Methode wird aufgerufen, sobald das Property IS_SELECTED des InternalFrame auf TRUE gesetzt wurde.

Specified by:
activateFrame in interface DesktopManager
Parameters:
f - Das InternalFrame, das im Desktop aktiv sein soll.

beginResizingFrame

public void beginResizingFrame(JComponent f,
                               int direction)
Diese Methode wird aufgerufen wenn festgestellt wird, das ein InternalFrame in der Groesse geaendert werden soll. Diese Methode sollte immer vor der Methode resizeFrame(JComponent, int, int, int, int) aufgerufen werden, damit der DesktopManager den notwendigen Zustand herstellen kann.

Specified by:
beginResizingFrame in interface DesktopManager
Parameters:
f - Das InternalFrame, das in der Groesse veraendert werden soll.
direction - Die Richtung fuer die Groessenaenderung.

beginDraggingFrame

public void beginDraggingFrame(JComponent f)
Diese Methode wird aufgerufen wenn festgestellt wird, dass das InternalFrame bewegt werden soll. Diese Methode sollte immer vor der Methode dragFrame(JComponent, int, int) aufgerufen werden, damit der DesktopManager den notwendigen Zustand herstellen kann.

Specified by:
beginDraggingFrame in interface DesktopManager
Parameters:
f - Das InternalFrame, das bewegt werden soll.

endResizingFrame

public void endResizingFrame(JComponent f)
Benachrichtig den DesktopManager, das die Groessenaenderung fuer das InternalFrame beendet wurde. Hier koennen dann alle im DesktopManager geaenderten oder gesetzten Zustaende aus der Methode beginResizingFrame(JComponent, int) wieder geloescht werden.

Specified by:
endResizingFrame in interface DesktopManager
Parameters:
f - Das InternalFrame, fuer das die Groessenaenderung beendet wurde.

endDraggingFrame

public void endDraggingFrame(JComponent f)
Benachrichtig den DesktopManager, das die Bewegung des InternalFrame beendet wurde. Hier koennen dann alle im DesktopManager geaenderten oder gesetzten Zustaende aus der Methode beginDraggingFrame(JComponent) wieder geloescht werden.

Specified by:
endDraggingFrame in interface DesktopManager
Parameters:
f - Das InternalFrame, dessen Bewegung beendet wurde.

resizeFrame

public void resizeFrame(JComponent f,
                        int newX,
                        int newY,
                        int newWidth,
                        int newHeight)
Diese Methode wird aufgerufen, wenn die Groesse eines InternalFrame geendert wurde. Vor dieser Methode sollte immer die Methode beginResizingFrame(JComponent, int) aufgerufen werden.

Specified by:
resizeFrame in interface DesktopManager
Parameters:
f - Das in der Groesse geaenderte InternalFrame.
newX - Die neue X-Position fuer das InternalFrame.
newY - Die neue Y-Position fuer das InternalFrame.
newWidth - Die neue Breite fuer das InternalFrame.
newHeight - Die neue Hoehe fuer das InternalFrame.

setBoundsForFrame

public void setBoundsForFrame(JComponent f,
                              int newX,
                              int newY,
                              int newWidth,
                              int newHeight)
Setzt die neue Groesse und Position fuer das uebergebene InternalFrame. Falls die alte und die neue Groesse uebereinstimmen passiert hier nichts.

Specified by:
setBoundsForFrame in interface DesktopManager
Parameters:
f - Das InternalFrame, dessen Groesse und Position sich aendern soll.
newX - Die neue X-Position fuer das InternalFrame.
newY - Die neue Y-Position fuer das InternalFrame.
newWidth - Die neue Breite fuer das InternalFrame.
newHeight - Die neue Hoehe fuer das InternalFrame.

removeIconFor

protected void removeIconFor(JInternalFrame f)
Loescht das fuer das uebergebene InternalFrame auf dem Desktop angezeigte Icon.

Parameters:
f - Das InternalFrame, dessen Icon aus dem Desktop geloescht werden soll.

getBoundsForIconOf

protected Rectangle getBoundsForIconOf(JInternalFrame f)
Diese Methode wird von der Methode iconifyFrame(JInternalFrame) aufgerufen zum ermitteln der Groesse des anzuzeigenden Icon.

Parameters:
f - Das InternalFrame zu dem die Groesse des zugehoerigen Icons ermittelt werden soll.

setPreviosBounds

protected void setPreviosBounds(JInternalFrame f,
                                Rectangle r)
Speichert die aktuelle Größe und Position des InternalFrames, bevor das InternalFrame maximiert wird.

Parameters:
f - Das InternalFrame dessen eigentliche Groese gespeichert werden soll.
r - Ein Rechteck, das die Groesse und Position des InternalFrame darstellt.
See Also:
maximizeFrame(JInternalFrame)

getPreviosBounds

protected Rectangle getPreviosBounds(JInternalFrame f)
Gibt die Größe und Position des InternalFrame zurück, di dieses hatte, bevor es maximiert wurde.

Parameters:
f - Ein InternalFrame, dessen eigentliche Groesse zurueckgeliefert werden soll.
Returns:
Ein Rectangle-Objekt mit der eigentlichen Groesse und Position des InternalFrame
See Also:
maximizeFrame(JInternalFrame), minimizeFrame(JInternalFrame)

setWasIcon

protected void setWasIcon(JInternalFrame f,
                          Boolean value)
Legt fest, ob das InternalFrame als Icon dargestellt werden soll oder normal.

Parameters:
f - Das InternalFrame, fuer dass das Property HAS_BEEN_ICONIFIED gesetzt werden soll.
value - Der Wert fuer das Property HAS_BEEN_ICONIFIED

wasIcon

protected boolean wasIcon(JInternalFrame f)
Gibt den Zustand des Frames zurück, ob es iconifiziert wurde oder nicht. Hierbei handelt es sich um den Wert des Property HAS_BEEN_ICONIFIED

Parameters:
f - Das InternalFrame von dem festgestellt werden soll ob es Iconifiziert wurde oder nicht.
Returns:
true, wenn das InternalFrame Iconifiziert wurde, ansonsten false.

getInternalFrameCount

public int getInternalFrameCount()
Gibt die Anzahl InternalFrames im Desktop zurueck.

Returns:
Die Anzahl InternalFrame sim Desktop.

setDesktopLayout

public void setDesktopLayout(LayoutManager layout)
Setzt den LayoutManager fuer den Desktop. Normalerweise hat der Desktop ein NULL-Layout. Die Methode sollte nicht extern aufgerufen werden. Sie wird intern fuer die Anordnung der Fenster benoetigt.

Parameters:
layout - Der LayoutManager fuer den Desktop.