|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectcom.trolltech.qt.internal.QSignalEmitterInternal
com.trolltech.qt.QSignalEmitter
com.trolltech.qt.QtJambiObject
com.trolltech.qt.core.QObject
com.trolltech.qt.gui.QWidget
com.trolltech.qt.gui.QFrame
com.trolltech.qt.gui.QAbstractScrollArea
com.trolltech.qt.gui.QAbstractItemView
com.trolltech.qt.gui.QHeaderView
public class QHeaderView
The QHeaderView class provides a header row or header column for item views. A QHeaderView displays the headers used in item views such as the QTableView
and QTreeView
classes. It takes the place of the QHeader class previously used for the same purpose, but uses the Qt's model/view architecture for consistency with the item view classes.
The QHeaderView class is one of the Model/View Classes and is part of Qt's model/view framework.
The header gets the data for each section from the model using the QAbstractItemModel::headerData()
function. You can set the data by using QAbstractItemModel::setHeaderData()
.
Each header has an orientation()
and a number of sections, given by the count()
function. A section refers to a part of the header - either a row or a column, depending on the orientation.
Sections can be moved and resized using moveSection()
and resizeSection()
; they can also be hidden and shown with hideSection()
and showSection()
.
Each section of a header is described by a section ID, specified by its section(), and can be located at a particular visualIndex()
in the header. A section can have a sort indicator set with setSortIndicator()
; this indicates whether the items in the associated item view will be sorted in the order given by the section.
For a horizontal header the section is equivalent to a column in the model, and for a vertical header the section is equivalent to a row in the model.Moving Header Sections
A header can be fixed in place, or made movable with setMovable()
. It can be made clickable with setClickable()
, and has resizing behavior in accordance with setResizeMode()
.
A header emits sectionMoved()
if the user moves a section, sectionResized()
if the user resizes a section, and sectionClicked()
and sectionHandleDoubleClicked()
in response to mouse clicks. A header also emits sectionCountChanged()
and sectionAutoResize()
.
You can identify a section using the logicalIndex()
and logicalIndexAt()
functions, or by its index position, using the visualIndex()
and visualIndexAt()
functions. The visual index will change if a section is moved, but the logical index will not change.Appearance
QTableWidget
and QTableView
create default headers. If you want the headers to be visible, you can use setVisible().
Not all ItemDataRole
s will have an effect on a QHeaderView. If you need to draw other roles, you can subclass QHeaderView and reimplement paintEvent()
. QHeaderView respects the following item data roles: TextAlignmentRole
, DisplayRole
, FontRole
, DecorationRole
, ForegroundRole
, and BackgroundRole
.
Note: Each header renders the data for each section itself, and does not rely on a delegate. As a result, calling a header's setItemDelegate()
function will have no effect.
QListView
, QTableView
, and QTreeView
.
Nested Class Summary | |
---|---|
static class |
QHeaderView.ResizeMode
The resize mode specifies the behavior of the header sections. |
Nested classes/interfaces inherited from class com.trolltech.qt.gui.QAbstractItemView |
---|
QAbstractItemView.CursorAction, QAbstractItemView.DragDropMode, QAbstractItemView.DropIndicatorPosition, QAbstractItemView.EditTrigger, QAbstractItemView.EditTriggers, QAbstractItemView.ScrollHint, QAbstractItemView.ScrollMode, QAbstractItemView.SelectionBehavior, QAbstractItemView.SelectionMode, QAbstractItemView.State |
Nested classes/interfaces inherited from class com.trolltech.qt.gui.QFrame |
---|
QFrame.Shadow, QFrame.Shape, QFrame.StyleMask |
Nested classes/interfaces inherited from class com.trolltech.qt.gui.QWidget |
---|
QWidget.RenderFlag, QWidget.RenderFlags |
Nested classes/interfaces inherited from class com.trolltech.qt.QSignalEmitter |
---|
QSignalEmitter.AbstractSignal, QSignalEmitter.Signal0, QSignalEmitter.Signal1, QSignalEmitter.Signal2, QSignalEmitter.Signal3, QSignalEmitter.Signal4, QSignalEmitter.Signal5, QSignalEmitter.Signal6, QSignalEmitter.Signal7, QSignalEmitter.Signal8, QSignalEmitter.Signal9 |
Nested classes/interfaces inherited from class com.trolltech.qt.internal.QSignalEmitterInternal |
---|
com.trolltech.qt.internal.QSignalEmitterInternal.AbstractSignalInternal |
Field Summary | |
---|---|
QSignalEmitter.Signal0 |
geometriesChanged
This signal is emitted when the header geometries has changed. |
QSignalEmitter.Signal2 |
sectionAutoResize
This signal takes 2 generic argument(s). |
QSignalEmitter.Signal1 |
sectionClicked
This signal takes 1 generic argument(s). |
QSignalEmitter.Signal2 |
sectionCountChanged
This signal takes 2 generic argument(s). |
QSignalEmitter.Signal1 |
sectionDoubleClicked
This signal takes 1 generic argument(s). |
QSignalEmitter.Signal1 |
sectionEntered
This signal takes 1 generic argument(s). |
QSignalEmitter.Signal1 |
sectionHandleDoubleClicked
This signal takes 1 generic argument(s). |
QSignalEmitter.Signal3 |
sectionMoved
This signal takes 3 generic argument(s). |
QSignalEmitter.Signal1 |
sectionPressed
This signal takes 1 generic argument(s). |
QSignalEmitter.Signal3 |
sectionResized
This signal takes 3 generic argument(s). |
QSignalEmitter.Signal2 |
sortIndicatorChanged
This signal takes 2 generic argument(s). |
Fields inherited from class com.trolltech.qt.gui.QAbstractItemView |
---|
activated, clicked, doubleClicked, entered, pressed, viewportEntered |
Fields inherited from class com.trolltech.qt.gui.QWidget |
---|
customContextMenuRequested |
Fields inherited from class com.trolltech.qt.internal.QSignalEmitterInternal |
---|
currentSender |
Constructor Summary | |
---|---|
QHeaderView(Qt.Orientation orientation)
Creates a new generic header with the given orientation and parent. |
|
QHeaderView(Qt.Orientation orientation,
QWidget parent)
Creates a new generic header with the given orientation and parent. |
Method Summary | |
---|---|
boolean |
cascadingSectionResizes()
This property holds whether interactive resizing will be cascaded to the following sections once the section being resized by the user has reached its minimum size. |
int |
count()
Returns the number of sections in the header. |
Qt.Alignment |
defaultAlignment()
This property holds the default alignment of the text in each header section. |
int |
defaultSectionSize()
This property holds the default size of the header sections before resizing. |
void |
headerDataChanged(Qt.Orientation orientation,
int logicalFirst,
int logicalLast)
Updates the changed header sections with the given orientation, from logicalFirst to logicalLast inclusive. |
int |
hiddenSectionCount()
Returns the number of sections in the header that has been hidden. |
void |
hideSection(int logicalIndex)
Hides the section specified by logicalIndex. |
boolean |
highlightSections()
This property holds whether the sections containing selected items are highlighted. |
protected void |
initStyleOption(QStyleOptionHeader option)
Initialize option with the values from this QHeaderView. |
boolean |
isClickable()
Returns true if the header is clickable; otherwise returns false. |
boolean |
isMovable()
Returns true if the header can be moved by the user; otherwise returns false. |
boolean |
isSectionHidden(int logicalIndex)
Returns true if the section specified by logicalIndex is explicitly hidden from the user; otherwise returns false. |
boolean |
isSortIndicatorShown()
This property holds whether the sort indicator is shown. |
int |
length()
Returns the length along the orientation of the header. |
int |
logicalIndex(int visualIndex)
Returns the logicalIndex for the section at the given visualIndex position, or -1 otherwise. |
int |
logicalIndexAt(int position)
Returns the section that covers the given position in the viewport. |
int |
logicalIndexAt(int x,
int y)
Returns the logical index of the section at the given coordinate. |
int |
logicalIndexAt(QPoint pos)
Returns the logical index of the section at the position given in pos. |
int |
minimumSectionSize()
This property holds the minimum size of the header sections. |
void |
moveSection(int from,
int to)
Moves the section at visual index from to occupy visual index to. |
int |
offset()
Returns the offset of the header. |
Qt.Orientation |
orientation()
Returns the orientation of the header. |
protected void |
paintSection(QPainter painter,
QRect rect,
int logicalIndex)
Paints the section specified by the given logicalIndex, using the given painter and rect. |
QHeaderView.ResizeMode |
resizeMode(int logicalIndex)
Returns the resize mode that applies to the section specified by the given logicalIndex. |
void |
resizeSection(int logicalIndex,
int size)
Resizes the section specified by logicalIndex to the size measured in pixels. |
protected void |
resizeSections()
Resizes the sections according to their size hints. |
void |
resizeSections(QHeaderView.ResizeMode mode)
Resizes the sections according to the given mode, ignoring the current resize mode. |
boolean |
restoreState(QByteArray state)
Restores the state of this header view. |
QByteArray |
saveState()
Saves the current state of this header view. |
int |
sectionPosition(int logicalIndex)
Returns the section position of the given logicalIndex, or -1 if the section is hidden. |
protected void |
sectionsAboutToBeRemoved(com.trolltech.qt.core.QModelIndex parent,
int logicalFirst,
int logicalLast)
This slot is called when sections are removed from the parent, logicalFirst and logicalLast signify where the sections are removed from. |
boolean |
sectionsHidden()
Returns true if sections in the header has been hidden; otherwise returns false; |
protected void |
sectionsInserted(com.trolltech.qt.core.QModelIndex parent,
int logicalFirst,
int logicalLast)
This slot is called when sections are inserted into the parent, logicalFirst and logicalLast indexes signify where the new sections are inserted. |
int |
sectionSize(int logicalIndex)
Returns the width (or height for vertical headers) of the given logicalIndex. |
protected QSize |
sectionSizeFromContents(int logicalIndex)
Returns the size of the contents of the section specified by the give logicalIndex. |
int |
sectionSizeHint(int logicalIndex)
Returns a suitable size hint for the section specified by logicalIndex. |
boolean |
sectionsMoved()
Returns true if sections in the header has been moved; otherwise returns false; |
int |
sectionViewportPosition(int logicalIndex)
Returns the section viewport position of the given logicalIndex. |
void |
setCascadingSectionResizes(boolean enable)
This property holds whether interactive resizing will be cascaded to the following sections once the section being resized by the user has reached its minimum size. |
void |
setClickable(boolean clickable)
If clickable is true, the header will respond to single clicks. |
void |
setDefaultAlignment(Qt.Alignment alignment)
This property holds the default alignment of the text in each header section. |
void |
setDefaultAlignment(Qt.AlignmentFlag[] alignment)
|
void |
setDefaultSectionSize(int size)
This property holds the default size of the header sections before resizing. |
void |
setHighlightSections(boolean highlight)
This property holds whether the sections containing selected items are highlighted. |
void |
setMinimumSectionSize(int size)
This property holds the minimum size of the header sections. |
void |
setMovable(boolean movable)
If movable is true, the header may be moved by the user; otherwise it is fixed in place. |
void |
setOffset(int offset)
Sets the header's offset to offset. |
void |
setOffsetToLastSection()
Sets the offset to make the last section visible. |
void |
setOffsetToSectionPosition(int visualIndex)
Sets the offset to the start of the section at the given visualIndex. |
void |
setResizeMode(int logicalIndex,
QHeaderView.ResizeMode mode)
Sets the constraints on how the section specified by logicalIndex in the header can be resized to those described by the given mode. |
void |
setResizeMode(QHeaderView.ResizeMode mode)
Sets the constraints on how the header can be resized to those described by the given mode. |
void |
setSectionHidden(int logicalIndex,
boolean hide)
If hide is true the section specified by logicalIndex is hidden, otherwise the section is shown. |
void |
setSortIndicator(int logicalIndex,
Qt.SortOrder order)
Sets the sort indicator for the section specified by the given logicalIndex in the direction specified by order, and removes the sort indicator from any other section that was showing it. |
void |
setSortIndicatorShown(boolean show)
This property holds whether the sort indicator is shown. |
void |
setStretchLastSection(boolean stretch)
This property holds whether the last visible section in the header takes up all the available space. |
void |
showSection(int logicalIndex)
Shows the section specified by logicalIndex. |
Qt.SortOrder |
sortIndicatorOrder()
Returns the order for the sort indicator. |
int |
sortIndicatorSection()
Returns the logical index of the section that has a sort indicator. |
boolean |
stretchLastSection()
This property holds whether the last visible section in the header takes up all the available space. |
int |
stretchSectionCount()
Returns the number of sections that are set to resize mode stretch. |
void |
swapSections(int first,
int second)
Swaps the section at visual index first with the section at visual index second. |
int |
visualIndex(int logicalIndex)
Returns the visual index position of the section specified by the given logicalIndex, or -1 otherwise. |
int |
visualIndexAt(int position)
Returns the visual index of the section that covers the given position in the viewport. |
Methods inherited from class com.trolltech.qt.gui.QFrame |
---|
frameRect, frameShadow, frameShape, frameStyle, frameWidth, lineWidth, midLineWidth, setFrameRect, setFrameShadow, setFrameShape, setFrameStyle, setLineWidth, setMidLineWidth |
Methods inherited from class com.trolltech.qt.core.QObject |
---|
childEvent, children, connectSlotsByName, customEvent, disposeLater, dumpObjectInfo, dumpObjectTree, dynamicPropertyNames, event, eventFilter, findChild, findChild, findChild, findChildren, findChildren, findChildren, findChildren, indexOfProperty, installEventFilter, isWidgetType, killTimer, moveToThread, objectName, parent, properties, property, removeEventFilter, setObjectName, setParent, setProperty, startTimer, timerEvent, toString, userProperty |
Methods inherited from class com.trolltech.qt.QtJambiObject |
---|
dispose, disposed, equals, finalize, reassignNativeResources, tr, tr, tr |
Methods inherited from class com.trolltech.qt.QSignalEmitter |
---|
blockSignals, disconnect, disconnect, signalsBlocked, signalSender, thread |
Methods inherited from class com.trolltech.qt.internal.QSignalEmitterInternal |
---|
__qt_signalInitialization |
Methods inherited from class java.lang.Object |
---|
clone, getClass, hashCode, notify, notifyAll, wait, wait, wait |
Methods inherited from interface com.trolltech.qt.QtJambiInterface |
---|
disableGarbageCollection, nativeId, nativePointer, reenableGarbageCollection, setJavaOwnership |
Field Detail |
---|
public final QSignalEmitter.Signal0 geometriesChanged
public final QSignalEmitter.Signal2 sectionAutoResize
This signal takes 2 generic argument(s). We list their type and the name they go by in the description of this signal. <java.lang.Integer(named: logicalIndex), com.trolltech.qt.gui.QHeaderView$ResizeMode(named: mode)>:
This signal is emitted when a section is automatically resized. The section's logical index is specified by logicalIndex, and the resize mode by mode.
setResizeMode()
, and stretchLastSection()
.
public final QSignalEmitter.Signal1 sectionClicked
This signal takes 1 generic argument(s). We list their type and the name they go by in the description of this signal. <java.lang.Integer(named: logicalIndex)>:
This signal is emitted when a section is clicked. The section's logical index is specified by logicalIndex.
Note that the sectionPressed signal will also be emitted.
setClickable()
, and sectionPressed()
.
public final QSignalEmitter.Signal2 sectionCountChanged
This signal takes 2 generic argument(s). We list their type and the name they go by in the description of this signal. <java.lang.Integer(named: oldCount), java.lang.Integer(named: newCount)>:
This signal is emitted when the number of sections changes; i. . when sections are added or deleted. The original count is specified by oldCount, and the new count by newCount.
count()
, length()
, and headerDataChanged()
.
public final QSignalEmitter.Signal1 sectionDoubleClicked
This signal takes 1 generic argument(s). We list their type and the name they go by in the description of this signal. <java.lang.Integer(named: logicalIndex)>:
This signal is emitted when a section is double-clicked. The section's logical index is specified by logicalIndex.
setClickable()
.
public final QSignalEmitter.Signal1 sectionEntered
This signal takes 1 generic argument(s). We list their type and the name they go by in the description of this signal. <java.lang.Integer(named: logicalIndex)>:
This signal is emitted when the cursor moves over the section and the left mouse button is pressed. The section's logical index is specified by logicalIndex.
setClickable()
, and sectionPressed()
.
public final QSignalEmitter.Signal1 sectionHandleDoubleClicked
This signal takes 1 generic argument(s). We list their type and the name they go by in the description of this signal. <java.lang.Integer(named: logicalIndex)>:
This signal is emitted when a section is double-clicked. The section's logical index is specified by logicalIndex.
setClickable()
.
public final QSignalEmitter.Signal3 sectionMoved
This signal takes 3 generic argument(s). We list their type and the name they go by in the description of this signal. <java.lang.Integer(named: logicalIndex), java.lang.Integer(named: oldVisualIndex), java.lang.Integer(named: newVisualIndex)>:
This signal is emitted when a section is moved. The section's logical index is specified by logicalIndex, the old index by oldVisualIndex, and the new index position by newVisualIndex.
moveSection()
.
public final QSignalEmitter.Signal1 sectionPressed
This signal takes 1 generic argument(s). We list their type and the name they go by in the description of this signal. <java.lang.Integer(named: logicalIndex)>:
This signal is emitted when a section is pressed. The section's logical index is specified by logicalIndex.
setClickable()
.
public final QSignalEmitter.Signal3 sectionResized
This signal takes 3 generic argument(s). We list their type and the name they go by in the description of this signal. <java.lang.Integer(named: logicalIndex), java.lang.Integer(named: oldSize), java.lang.Integer(named: newSize)>:
This signal is emitted when a section is resized. The section's logical number is specified by logicalIndex, the old size by oldSize, and the new size by newSize.
resizeSection()
.
public final QSignalEmitter.Signal2 sortIndicatorChanged
This signal takes 2 generic argument(s). We list their type and the name they go by in the description of this signal. <java.lang.Integer(named: logicalIndex), com.trolltech.qt.core.Qt$SortOrder(named: order)>:
This signal is emitted when the section containing the sort indicator or the order indicated is changed. The section's logical index is specified by logicalIndex and the sort order is specified by order.
setSortIndicator()
.
Constructor Detail |
---|
public QHeaderView(Qt.Orientation orientation)
public QHeaderView(Qt.Orientation orientation, QWidget parent)
Method Detail |
---|
public final boolean cascadingSectionResizes()
Interactive
as the resize mode. The default value is false.
setResizeMode()
.
public final int count()
sectionCountChanged()
, and length()
.
public final Qt.Alignment defaultAlignment()
public final int defaultSectionSize()
Interactive
or Fixed
as the resize mode. setResizeMode()
, and minimumSectionSize
.
public final void headerDataChanged(Qt.Orientation orientation, int logicalFirst, int logicalLast)
public final int hiddenSectionCount()
setSectionHidden()
, and isSectionHidden()
.
public final void hideSection(int logicalIndex)
showSection()
, isSectionHidden()
, hiddenSectionCount()
, and setSectionHidden()
.
public final boolean highlightSections()
public final boolean isClickable()
setClickable()
.
public final boolean isMovable()
setMovable()
.
public final boolean isSectionHidden(int logicalIndex)
hideSection()
, showSection()
, setSectionHidden()
, and hiddenSectionCount()
.
public final boolean isSortIndicatorShown()
setClickable()
.
public final int length()
setResizeMode()
, and offset()
.
public final int logicalIndex(int visualIndex)
visualIndex()
, and sectionPosition()
.
public final int logicalIndexAt(QPoint pos)
sectionPosition()
.
public final int logicalIndexAt(int position)
visualIndexAt()
, and isSectionHidden()
.
public final int logicalIndexAt(int x, int y)
public final int minimumSectionSize()
global strut
or the font metrics
size. This property is honored by all resize modes
.
setResizeMode()
, and defaultSectionSize
.
public final void moveSection(int from, int to)
sectionsMoved()
.
public final int offset()
setOffset()
.
public final Qt.Orientation orientation()
Qt::Orientation
.
public final QHeaderView.ResizeMode resizeMode(int logicalIndex)
setResizeMode()
.
public final void resizeSection(int logicalIndex, int size)
sectionResized()
, resizeMode()
, and sectionSize()
.
protected final void resizeSections()
public final void resizeSections(QHeaderView.ResizeMode mode)
resizeMode()
, and sectionResized()
.
public final boolean restoreState(QByteArray state)
saveState()
.
public final QByteArray saveState()
To restore the saved state, pass the return value to restoreState()
.
restoreState()
.
public final int sectionPosition(int logicalIndex)
sectionViewportPosition()
.
public final int sectionSize(int logicalIndex)
length()
, setResizeMode()
, and defaultSectionSize()
.
public final int sectionSizeHint(int logicalIndex)
defaultSectionSize()
, minimumSectionSize()
, and Qt::SizeHintRole
.
public final int sectionViewportPosition(int logicalIndex)
If the section is hidden, this function returns an undefined value.
sectionPosition()
, and isSectionHidden()
.
protected final void sectionsAboutToBeRemoved(com.trolltech.qt.core.QModelIndex parent, int logicalFirst, int logicalLast)
public final boolean sectionsHidden()
setSectionHidden()
.
protected final void sectionsInserted(com.trolltech.qt.core.QModelIndex parent, int logicalFirst, int logicalLast)
logicalFirst and logicalLast will be the same if just one section is inserted.
public final boolean sectionsMoved()
moveSection()
.
public final void setCascadingSectionResizes(boolean enable)
Interactive
as the resize mode. The default value is false.
setResizeMode()
.
public final void setClickable(boolean clickable)
isClickable()
, sectionClicked()
, sectionPressed()
, and setSortIndicatorShown()
.
public final void setDefaultAlignment(Qt.AlignmentFlag[] alignment)
public final void setDefaultAlignment(Qt.Alignment alignment)
public final void setDefaultSectionSize(int size)
Interactive
or Fixed
as the resize mode. setResizeMode()
, and minimumSectionSize
.
public final void setHighlightSections(boolean highlight)
public final void setMinimumSectionSize(int size)
global strut
or the font metrics
size. This property is honored by all resize modes
.
setResizeMode()
, and defaultSectionSize
.
public final void setMovable(boolean movable)
isMovable()
, and sectionMoved()
.
public final void setOffset(int offset)
offset()
, and length()
.
public final void setOffsetToLastSection()
setOffset()
, sectionPosition()
, and setOffsetToSectionPosition()
.
public final void setOffsetToSectionPosition(int visualIndex)
setOffset()
, and sectionPosition()
.
public final void setResizeMode(QHeaderView.ResizeMode mode)
resizeMode()
, length()
, sectionResized()
, and sectionAutoResize()
.
public final void setResizeMode(int logicalIndex, QHeaderView.ResizeMode mode)
public final void setSectionHidden(int logicalIndex, boolean hide)
isSectionHidden()
, and hiddenSectionCount()
.
public final void setSortIndicator(int logicalIndex, Qt.SortOrder order)
sortIndicatorSection()
, and sortIndicatorOrder()
.
public final void setSortIndicatorShown(boolean show)
setClickable()
.
public final void setStretchLastSection(boolean stretch)
Note: The horizontal headers provided by QTreeView
are configured with this property set to true, ensuring that the view does not waste any of the space assigned to it for its header. If this value is set to true, this property will override the resize mode set on the last section in the header.
setResizeMode()
.
public final void showSection(int logicalIndex)
hideSection()
, isSectionHidden()
, hiddenSectionCount()
, and setSectionHidden()
.
public final Qt.SortOrder sortIndicatorOrder()
setSortIndicator()
, and sortIndicatorSection()
.
public final int sortIndicatorSection()
setSortIndicator()
, sortIndicatorOrder()
, and setSortIndicatorShown()
.
public final boolean stretchLastSection()
Note: The horizontal headers provided by QTreeView
are configured with this property set to true, ensuring that the view does not waste any of the space assigned to it for its header. If this value is set to true, this property will override the resize mode set on the last section in the header.
setResizeMode()
.
public final int stretchSectionCount()
stretchLastSection
, and resizeMode()
.
public final void swapSections(int first, int second)
moveSection()
.
public final int visualIndex(int logicalIndex)
logicalIndex()
.
public final int visualIndexAt(int position)
logicalIndexAt()
.
protected void paintSection(QPainter painter, QRect rect, int logicalIndex)
You normally would not need to use this function.
protected QSize sectionSizeFromContents(int logicalIndex)
defaultSectionSize()
.
protected final void initStyleOption(QStyleOptionHeader option)
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |