📄 exclusivesinglelineview.java
字号:
//# // } else {
//# // this.arrowPadding = style.paddingHorizontal;
//# }
//#endif
//#endif
//#ifdef polish.css.exclusiveview-roundtrip
//# Boolean allowRoundTripBool = style.getBooleanProperty(127);
//# if (allowRoundTripBool != null) {
//# this.allowRoundTrip = allowRoundTripBool.booleanValue();
//# }
//#endif
}
/* (non-Javadoc)
* @see de.enough.polish.ui.ContainerView#paintContent(int, int, int, int, javax.microedition.lcdui.Graphics)
*/
protected void paintContent(Item parent, int x, int y, int leftBorder, int rightBorder,
Graphics g)
{
//#debug
//# System.out.println("ExclusiveView.start: x=" + x + ", y=" + y + ", leftBorder=" + leftBorder + ", rightBorder=" + rightBorder );
this.xStart = x;
int modifiedX = x;
//#ifdef polish.css.exclusiveview-expand-background
//# if (this.expandBackground && this.background != null) {
//# if (this.currentItem != null && this.currentItem.background == this.background) {
//# this.currentItem.background = null;
//# }
//# //this.background.paint(x, y, this.contentWidth, this.contentHeight, g);
//# this.background.paint(leftBorder, y, rightBorder-leftBorder, this.contentHeight, g);
//# }
//#endif
//#ifdef polish.css.exclusiveview-arrow-position
//# if (this.arrowPosition == POSITION_BOTH_SIDES ) {
//#endif
modifiedX += this.arrowWidth + this.paddingHorizontal;
leftBorder += this.arrowWidth + this.paddingHorizontal;
//#ifdef polish.css.exclusiveview-arrow-position
//# } else if (this.arrowPosition == POSITION_LEFT ) {
//# modifiedX += (this.arrowWidth + this.paddingHorizontal) << 1;
//# leftBorder += (this.arrowWidth + this.paddingHorizontal) << 1;
//# }
//#endif
//#ifdef polish.css.exclusiveview-arrow-position
//# if (this.arrowPosition == POSITION_BOTH_SIDES ) {
//#endif
rightBorder -= this.arrowWidth + this.paddingHorizontal;
//#ifdef polish.css.exclusiveview-arrow-position
//# } else if (this.arrowPosition == POSITION_RIGHT ) {
//# rightBorder -= (this.arrowWidth + this.paddingHorizontal) << 1;
//# }
//#endif
//#debug
//# System.out.println("ExclusiveView.item: x=" + modifiedX + ", y=" + y + ", leftBorder=" + leftBorder + ", rightBorder=" + rightBorder + ", availableWidth=" + (rightBorder - leftBorder) + ", itemWidth=" + this.currentItem.itemWidth );
if (this.currentItem != null) {
this.currentItem.paint(modifiedX, y, leftBorder, rightBorder, g);
}
g.setColor( this.arrowColor );
//draw left arrow:
//#ifdef polish.css.exclusiveview-roundtrip
//# if (this.allowRoundTrip || this.currentItemIndex > 0) {
//#else
if (this.currentItemIndex > 0) {
//#endif
// draw left arrow
int startX = x + this.leftArrowStartX;
if (startX >= rightBorder) {
//TODO this is a hack for cases where the label is staying on the same line as this view:
startX = rightBorder - (this.arrowWidth << 1);
}
//#ifdef polish.css.exclusiveview-left-arrow
//# if (this.leftArrow != null) {
//# //System.out.println("Drawing left IMAGE arrow at " + startX );
//# g.drawImage( this.leftArrow, startX, y + this.leftYOffset, Graphics.LEFT | Graphics.TOP );
//# } else {
//#endif
//#if polish.midp2
//# //System.out.println("Drawing left triangle arrow at " + startX );
//# g.fillTriangle(
//# startX, y + this.contentHeight/2,
//# startX + this.arrowWidth, y,
//# startX + this.arrowWidth, y + this.contentHeight );
//#else
int y1 = y + this.contentHeight / 2;
int x2 = startX + this.arrowWidth;
int y3 = y + this.contentHeight;
g.drawLine( startX, y1, x2, y );
g.drawLine( startX, y1, x2, y3 );
g.drawLine( x2, y, x2, y3 );
//#endif
//#ifdef polish.css.exclusiveview-left-arrow
//# }
//#endif
}
// draw right arrow:
//#ifdef polish.css.exclusiveview-roundtrip
//# if (this.allowRoundTrip || (this.currentItemIndex < this.parentContainer.size() - 1) ) {
//#else
if (this.currentItemIndex < this.parentContainer.size() - 1) {
//#endif
// draw right arrow
int startX = x + this.rightArrowStartX;
if (startX >= rightBorder) {
//TODO this is a hack for cases where the label is staying on the same line as this view:
startX = rightBorder; // - this.arrowWidth;
}
//#ifdef polish.css.exclusiveview-right-arrow
//# if (this.rightArrow != null) {
//# g.drawImage( this.rightArrow, startX, y + this.rightYOffset, Graphics.LEFT | Graphics.TOP );
//# } else {
//#endif
//#if polish.midp2
//# g.fillTriangle(
//# startX + this.arrowWidth, y + this.contentHeight/2,
//# startX, y,
//# startX, y + this.contentHeight );
//#else
int y1 = y + this.contentHeight / 2;
int x2 = startX + this.arrowWidth;
int y3 = y + this.contentHeight;
g.drawLine( x2, y1, startX, y );
g.drawLine( x2, y1, startX, y3 );
g.drawLine( startX, y, startX, y3 );
//#endif
//#ifdef polish.css.exclusiveview-right-arrow
//# }
//#endif
}
}
/* (non-Javadoc)
* @see de.enough.polish.ui.ContainerView#getNextItem(int, int)
*/
protected Item getNextItem(int keyCode, int gameAction) {
//#debug
//# System.out.println("ExclusiveSingleLineView: getNextItem()");
ChoiceGroup choiceGroup = (ChoiceGroup) this.parentContainer;
Item[] items = this.parentContainer.getItems();
if (this.currentItem == null) {
//#debug warn
//# System.out.println("ExclusiveSingleLineView: getNextItem(): no current item defined, it seems the initContent() has been skipped.");
this.currentItemIndex = choiceGroup.getSelectedIndex();
this.currentItem = (ChoiceItem) items[ this.currentItemIndex ];
}
Item lastItem = this.currentItem;
//ChoiceItem currentItem = (ChoiceItem) items[ this.currentItemIndex ];
//#ifdef polish.css.exclusiveview-roundtrip
//# if ( gameAction == Canvas.LEFT && (this.allowRoundTrip || this.currentItemIndex > 0 )) {
//#else
if ( gameAction == Canvas.LEFT && this.currentItemIndex > 0 ) {
//#endif
this.currentItem.select( false );
this.currentItemIndex--;
//#ifdef polish.css.exclusiveview-roundtrip
//# if (this.currentItemIndex < 0) {
//# this.currentItemIndex = items.length - 1;
//# }
//#endif
this.currentItem = (ChoiceItem) items[ this.currentItemIndex ];
this.currentItem.adjustProperties( lastItem );
//this.currentItem.select( true );
choiceGroup.setSelectedIndex( this.currentItemIndex, true );
choiceGroup.notifyStateChanged();
return this.currentItem;
//#ifdef polish.css.exclusiveview-roundtrip
//# } else if ( gameAction == Canvas.RIGHT && (this.allowRoundTrip || this.currentItemIndex < items.length - 1 )) {
//#else
} else if ( gameAction == Canvas.RIGHT && this.currentItemIndex < items.length - 1 ) {
//#endif
this.currentItem.select( false );
this.currentItemIndex++;
//#ifdef polish.css.exclusiveview-roundtrip
//# if (this.currentItemIndex >= items.length) {
//# this.currentItemIndex = 0;
//# }
//#endif
this.currentItem = (ChoiceItem) items[ this.currentItemIndex ];
this.currentItem.adjustProperties( lastItem );
choiceGroup.setSelectedIndex( this.currentItemIndex, true );
choiceGroup.notifyStateChanged();
//this.currentItem.select( true );
return this.currentItem;
}
// in all other cases there is no next item:
return null;
}
//#ifdef polish.hasPointerEvents
//# /**
//# * Handles pointer pressed events.
//# * This is an optional feature that doesn't need to be implemented by subclasses.
//# *
//# * @param x the x position of the event
//# * @param y the y position of the event
//# * @return true when the event has been handled. When false is returned the parent container
//# * will forward the event to the affected item.
//# */
//# public boolean handlePointerPressed(int x, int y) {
//# if (y < 0 || y > this.contentHeight ) {
//# return false;
//# }
//# Item[] items = this.parentContainer.getItems();
//# this.currentItem.select( false );
//# x -= this.xStart;
//# int index = this.currentItemIndex;
//# if ( (index > 0 || this.allowRoundTrip) && x >= this.leftArrowStartX && x <= this.leftArrowEndX ) {
//# index--;
//# if (index < 0) {
//# index = items.length - 1;
//# }
//# } else if (! (x >= this.leftArrowStartX && x <= this.leftArrowEndX && index > 0)) {
//# index = ( index + 1) % items.length;
//# }
//# this.currentItemIndex = index;
//# this.currentItem = (ChoiceItem) items[ index ];
//# //this.currentItem.select( true );
//# ((ChoiceGroup) this.parentContainer).setSelectedIndex( this.currentItemIndex, true );
//# this.parentContainer.focus(this.currentItemIndex, this.currentItem, 0);
//# this.parentContainer.notifyStateChanged();
//# return true;
//# }
//#endif
/* (non-Javadoc)
* @see de.enough.polish.ui.ContainerView#defocus(de.enough.polish.ui.Style)
*/
protected void defocus(Style originalStyle) {
//System.out.println("DEFOCUSING ExclusiveSingleLineView " + this.parentContainer.getLabel());
if (this.parentBackground != null ) {
this.parentContainer.background = this.parentBackground;
this.parentBackground = null;
}
//#ifdef polish.css.exclusiveview-expand-background
//# if (this.expandBackground) {
//# this.background = null;
//# }
//#endif
super.defocus(originalStyle);
}
/* (non-Javadoc)
* @see de.enough.polish.ui.ContainerView#focus(de.enough.polish.ui.Style, int)
*/
public void focus(Style focusstyle, int direction) {
//System.out.println("FOCUSING ExclusiveSingleLineView " + this.parentContainer.getLabel());
Background bg = this.parentContainer.background;
if (bg != null) {
this.parentBackground = bg;
this.parentContainer.background = null;
}
super.focus(focusstyle, direction);
}
/* (non-Javadoc)
* @see de.enough.polish.ui.ItemView#isValid(de.enough.polish.ui.Item, de.enough.polish.ui.Style)
*/
protected boolean isValid(Item parent, Style style) {
return (parent instanceof ChoiceGroup);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -