javax.swing.text

Class FlowView.FlowStrategy

Enclosing Class:
FlowView

public static class FlowView.FlowStrategy
extends Object

A strategy for translating the logical views of a FlowView into the real views.

Constructor Summary

FlowStrategy()
Creates a new instance of FlowStragegy.

Method Summary

protected void
adjustRow(FlowView fv, int rowIndex, int desiredSpan, int x)
Tries to adjust the specified row to fit within the desired span.
void
changedUpdate(FlowView fv, DocumentEvent e, Rectangle alloc)
Receives notification from a FlowView that some attributes have changed in the document at a location that the FlowView is responsible for.
protected View
createView(FlowView fv, int startOffset, int spanLeft, int rowIndex)
Creates physical views that form the rows of the flow view.
protected View
getLogicalView(FlowView fv)
Returns the logical view of the managed FlowView.
void
insertUpdate(FlowView fv, DocumentEvent e, Rectangle alloc)
Receives notification from a FlowView that some content has been inserted into the document at a location that the FlowView is responsible for.
void
layout(FlowView fv)
Performs the layout for the whole view.
protected int
layoutRow(FlowView fv, int rowIndex, int pos)
Lays out one row of the flow view.
void
removeUpdate(FlowView fv, DocumentEvent e, Rectangle alloc)
Receives notification from a FlowView that some content has been removed from the document at a location that the FlowView is responsible for.

Methods inherited from class java.lang.Object

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

Constructor Details

FlowStrategy

public FlowStrategy()
Creates a new instance of FlowStragegy.

Method Details

adjustRow

protected void adjustRow(FlowView fv,
                         int rowIndex,
                         int desiredSpan,
                         int x)
Tries to adjust the specified row to fit within the desired span. The default implementation iterates through the children of the specified row to find the view that has the highest break weight and - if there is more than one view with such a break weight - which is nearest to the end of the row. If there is such a view that has a break weight > View.BadBreakWeight, this view is broken using the View.breakView(int,int,float,float) method and this view and all views after the now broken view are replaced by the broken view.
Parameters:
fv - the flow view
rowIndex - the index of the row to be adjusted
desiredSpan - the layout span
x - the X location at which the row starts

changedUpdate

public void changedUpdate(FlowView fv,
                          DocumentEvent e,
                          Rectangle alloc)
Receives notification from a FlowView that some attributes have changed in the document at a location that the FlowView is responsible for. The default implementation simply calls layout(FlowView).
Parameters:
fv - the flow view that sends the notification
e - the document event describing the change
alloc - the current allocation of the flow view

createView

protected View createView(FlowView fv,
                          int startOffset,
                          int spanLeft,
                          int rowIndex)
Creates physical views that form the rows of the flow view. This can be an entire view from the logical view (if it fits within the available span), a fragment of such a view (if it doesn't fit in the available span and can be broken down) or null (if it does not fit in the available span and also cannot be broken down). The default implementation fetches the logical view at the specified startOffset. If that view has a different startOffset than specified in the argument, a fragment is created using View.createFragment(int,int) that has the correct startOffset and the logical view's endOffset.
Parameters:
fv - the flow view
startOffset - the start offset for the view to be created
spanLeft - the available span
rowIndex - the index of the row
Returns:
a view to fill the row with, or null if there is no view or view fragment that fits in the available span

getLogicalView

protected View getLogicalView(FlowView fv)
Returns the logical view of the managed FlowView.
Parameters:
fv - the flow view for which to return the logical view
Returns:
the logical view of the managed FlowView

insertUpdate

public void insertUpdate(FlowView fv,
                         DocumentEvent e,
                         Rectangle alloc)
Receives notification from a FlowView that some content has been inserted into the document at a location that the FlowView is responsible for. The default implementation simply calls layout(FlowView).
Parameters:
fv - the flow view that sends the notification
e - the document event describing the change
alloc - the current allocation of the flow view

layout

public void layout(FlowView fv)
Performs the layout for the whole view. By default this rebuilds all the physical views from the logical views of the managed FlowView. This is called by FlowView.layout(int,int) to update the layout of the view.
Parameters:
fv - the flow view for which we perform the layout

layoutRow

protected int layoutRow(FlowView fv,
                        int rowIndex,
                        int pos)
Lays out one row of the flow view. This is called by layout(FlowView) to fill one row with child views until the available span is exhausted. The default implementation fills the row by calling createView(FlowView,int,int,int) until the available space is exhausted, a forced break is encountered or there are no more views in the logical view. If the available space is exhausted, adjustRow(FlowView,int,int,int) is called to fit the row into the available span.
Parameters:
fv - the flow view for which we perform the layout
rowIndex - the index of the row
pos - the model position for the beginning of the row
Returns:
the start position of the next row

removeUpdate

public void removeUpdate(FlowView fv,
                         DocumentEvent e,
                         Rectangle alloc)
Receives notification from a FlowView that some content has been removed from the document at a location that the FlowView is responsible for. The default implementation simply calls layout(FlowView).
Parameters:
fv - the flow view that sends the notification
e - the document event describing the change
alloc - the current allocation of the flow view

FlowView.java -- A composite View Copyright (C) 2005 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.