javax.swing.text

Class ZoneView

Implemented Interfaces:
SwingConstants

public class ZoneView
extends BoxView

A View implementation that delays loading of sub views until they are needed for display or internal transformations. This can be used for editors that need to handle large documents more effectivly than the standard BoxView.
Since:
1.3

Field Summary

Fields inherited from class javax.swing.text.View

BadBreakWeight, ExcellentBreakWeight, ForcedBreakWeight, GoodBreakWeight, X_AXIS, Y_AXIS

Fields inherited from interface javax.swing.SwingConstants

BOTTOM, CENTER, EAST, HORIZONTAL, LEADING, LEFT, NEXT, NORTH, NORTH_EAST, NORTH_WEST, PREVIOUS, RIGHT, SOUTH, SOUTH_EAST, SOUTH_WEST, TOP, TRAILING, VERTICAL, WEST

Constructor Summary

ZoneView(Element element, int axis)
Creates a new ZoneView for the specified element and axis.

Method Summary

protected View
createZone(int p0, int p1)
Creates a zone for the specified range.
int
getMaxZonesLoaded()
Returns the number of zones that are allowed to be loaded.
int
getMaximumZoneSize()
Returns the maximum zone size.
protected int
getViewIndexAtPosition(int pos)
Returns the index of the child view at the document position pos.
void
insertUpdate(DocumentEvent e, Shape a, ViewFactory vf)
Receive notification about an insert update to the text model.
protected boolean
isZoneLoaded(View zone)
Returns true when the specified zone is loaded, false otherwise.
protected void
loadChildren(ViewFactory vf)
Overridden to not load all the child views.
void
removeUpdate(DocumentEvent e, Shape a, ViewFactory vf)
Receive notification about a remove update to the text model.
void
setMaxZonesLoaded(int num)
Sets the maximum number of zones that are allowed to be loaded at the same time.
void
setMaximumZoneSize(int size)
Sets the maximum zone size.
protected void
unloadZone(View zone)
This unloads the specified zone.
protected boolean
updateChildren(DocumentEvent.ElementChange ec, DocumentEvent e, ViewFactory vf)
Updates the list of children that is returned by View.getView(int) and View.getViewCount().
protected void
zoneWasLoaded(View zone)
Gets called after a zone has been loaded.

Methods inherited from class javax.swing.text.BoxView

baselineLayout, baselineRequirements, calculateMajorAxisRequirements, calculateMinorAxisRequirements, childAllocation, flipEastAndWestAtEnds, forwardUpdate, getAlignment, getAxis, getChildAllocation, getHeight, getMaximumSpan, getMinimumSpan, getOffset, getPreferredSpan, getResizeWeight, getSpan, getViewAtPoint, getWidth, isAfter, isAllocationValid, isBefore, isLayoutValid, layout, layoutChanged, layoutMajorAxis, layoutMinorAxis, modelToView, paint, paintChild, preferenceChanged, replace, setAxis, setSize, viewToModel

Methods inherited from class javax.swing.text.CompositeView

childAllocation, flipEastAndWestAtEnds, getBottomInset, getChildAllocation, getInsideAllocation, getLeftInset, getNextEastWestVisualPositionFrom, getNextNorthSouthVisualPositionFrom, getNextVisualPositionFrom, getRightInset, getTopInset, getView, getViewAtPoint, getViewAtPosition, getViewCount, getViewIndex, getViewIndexAtPosition, isAfter, isBefore, loadChildren, modelToView, modelToView, replace, setInsets, setParagraphInsets, setParent, viewToModel

Methods inherited from class javax.swing.text.View

append, breakView, changedUpdate, createFragment, dump, forwardUpdate, forwardUpdateToView, getAlignment, getAttributes, getBreakWeight, getChildAllocation, getContainer, getDocument, getElement, getEndOffset, getGraphics, getMaximumSpan, getMinimumSpan, getNextVisualPositionFrom, getParent, getPreferredSpan, getResizeWeight, getStartOffset, getToolTipText, getView, getViewCount, getViewFactory, getViewIndex, getViewIndex, insert, insertUpdate, isVisible, modelToView, modelToView, modelToView, paint, preferenceChanged, remove, removeAll, removeUpdate, replace, setParent, setSize, updateChildren, updateLayout, viewToModel, viewToModel

Methods inherited from class java.lang.Object

clone, equals, extends Object> getClass, finalize, hashCode, notify, notifyAll, toString, wait, wait, wait

Constructor Details

ZoneView

public ZoneView(Element element,
                int axis)
Creates a new ZoneView for the specified element and axis.
Parameters:
element - the element for which to create a ZoneView
axis - the major layout axis for the box

Method Details

createZone

protected View createZone(int p0,
                          int p1)
Creates a zone for the specified range. Subclasses can override this to provide a custom implementation for the zones.
Parameters:
p0 - the start of the range
p1 - the end of the range
Returns:
the zone

getMaxZonesLoaded

public int getMaxZonesLoaded()
Returns the number of zones that are allowed to be loaded.
Returns:
the number of zones that are allowed to be loaded

getMaximumZoneSize

public int getMaximumZoneSize()
Returns the maximum zone size. Note that zones might still become larger then the size specified when a singe child view is larger for itself, because zones are formed on child view boundaries.
Returns:
the maximum zone size

getViewIndexAtPosition

protected int getViewIndexAtPosition(int pos)
Returns the index of the child view at the document position pos. This overrides the CompositeView implementation because the ZoneView does not provide a one to one mapping from Elements to Views.
Overrides:
getViewIndexAtPosition in interface CompositeView
Parameters:
pos - the document position
Returns:
the index of the child view at the document position pos

insertUpdate

public void insertUpdate(DocumentEvent e,
                         Shape a,
                         ViewFactory vf)
Receive notification about an insert update to the text model. The default implementation of this method does the following:
Overrides:
insertUpdate in interface View
Parameters:
vf - the ViewFactory for creating child views

isZoneLoaded

protected boolean isZoneLoaded(View zone)
Returns true when the specified zone is loaded, false otherwise. The default implementation checks if the zone view has child elements.
Parameters:
zone - the zone view to check
Returns:
true when the specified zone is loaded, false otherwise

loadChildren

protected void loadChildren(ViewFactory vf)
Overridden to not load all the child views. This methods creates initial zones without actually loading them.
Overrides:
loadChildren in interface CompositeView
Parameters:
vf - not used

removeUpdate

public void removeUpdate(DocumentEvent e,
                         Shape a,
                         ViewFactory vf)
Receive notification about a remove update to the text model. The default implementation of this method does the following:
Overrides:
removeUpdate in interface View
Parameters:
vf - the ViewFactory for creating child views

setMaxZonesLoaded

public void setMaxZonesLoaded(int num)
Sets the maximum number of zones that are allowed to be loaded at the same time. If the new number of allowed zones is smaller then the previous settings, this unloads all zones the aren't allowed to be loaded anymore.
Parameters:
num - the number of zones allowed to be loaded at the same time
Throws:
IllegalArgumentException - if num <= 0

setMaximumZoneSize

public void setMaximumZoneSize(int size)
Sets the maximum zone size. Note that zones might still become larger then the size specified when a singe child view is larger for itself, because zones are formed on child view boundaries.
Parameters:
size - the maximum zone size to set

unloadZone

protected void unloadZone(View zone)
This unloads the specified zone. This is implemented to simply remove all child views from that zone.
Parameters:
zone - the zone to be unloaded

updateChildren

protected boolean updateChildren(DocumentEvent.ElementChange ec,
                                 DocumentEvent e,
                                 ViewFactory vf)
Updates the list of children that is returned by View.getView(int) and View.getViewCount(). Element that are specified as beeing added in the ElementChange record are assigned a view for using the ViewFactory. Views of Elements that are specified as beeing removed are removed from the list.
Overrides:
updateChildren in interface View
Parameters:
ec - the ElementChange record that describes the change of the element
vf - the ViewFactory to use for creating new views
Returns:
whether or not the child views represent the child elements of the element that this view is responsible for. Some views may create views that are responsible only for parts of the element that they are responsible for and should then return false.
Since:
1.3

zoneWasLoaded

protected void zoneWasLoaded(View zone)
Gets called after a zone has been loaded. This unloads the oldest zone(s) when the maximum number of zones is reached.
Parameters:
zone - the zone that has been loaded

ZoneView.java -- An effective BoxView subclass Copyright (C) 2006 Free Software Foundation, Inc. This file is part of GNU Classpath. GNU Classpath is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version. GNU Classpath is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with GNU Classpath; see the file COPYING. If not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. Linking this library statically or dynamically with other modules is making a combined work based on this library. Thus, the terms and conditions of the GNU General Public License cover the whole combination. As a special exception, the copyright holders of this library give you permission to link this library with independent modules to produce an executable, regardless of the license terms of these independent modules, and to copy and distribute the resulting executable under terms of your choice, provided that you also meet, for each linked independent module, the terms and conditions of the license of that module. An independent module is a module which is not derived from or based on this library. If you modify this library, you may extend this exception to your version of the library, but you are not obligated to do so. If you do not wish to do so, delete this exception statement from your version.