📄 choicegroup.java
字号:
Command selectCmd = this.selectCommand; if (selectCmd == null) { selectCmd = List.SELECT_COMMAND; } scr.callCommandListener( selectCmd ); } } } if ( (this.choiceType != IMPLICIT) && !(this.isPopup && !this.isPopupClosed) && (this.getScreen() instanceof Form) ) { notifyStateChanged(); } return true; } else { //#if polish.Container.dontUseNumberKeys != true if (keyCode >= Canvas.KEY_NUM1 && keyCode <= Canvas.KEY_NUM9) { int index = keyCode - Canvas.KEY_NUM1; if (index < this.itemsList.size()) { if (!this.isPopup || !this.isPopupClosed) { // either this is not a POPUP or the POPUP is opened: setSelectedIndex( index, true ); if (this.isPopup) { closePopup(); } if ( (this.choiceType != IMPLICIT) && (this.getScreen() instanceof Form) ) { notifyStateChanged(); } if (this.isImplicit) { // call command listener: Screen scr = getScreen(); if (scr != null) { Command selectCmd = this.selectCommand; if (selectCmd == null) { selectCmd = List.SELECT_COMMAND; } scr.callCommandListener( selectCmd ); } } return true; } } } else if (this.isPopup && (this.isPopupClosed == false)) { closePopup(); return true; } //#endif } } //#else // no popup item is used by this application: processed = super.handleKeyPressed(keyCode, gameAction); if (!processed) { if (gameAction == Canvas.FIRE && keyCode != Canvas.KEY_NUM5 && this.focusedIndex != -1 ) { if (this.isMultiple) { ChoiceItem item = (ChoiceItem) this.focusedItem; item.toggleSelect(); } else { setSelectedIndex(this.focusedIndex, true); } if ( (this.choiceType != IMPLICIT) && (this.getScreen() instanceof Form) ) { notifyStateChanged(); } if (this.isImplicit) { // call command listener: Screen scr = getScreen(); if (scr != null) { Command selectCmd = this.selectCommand; if (selectCmd == null) { selectCmd = List.SELECT_COMMAND; } scr.callCommandListener( selectCmd ); } } return true; //#if polish.Container.dontUseNumberKeys != true } else if ( (keyCode >= Canvas.KEY_NUM1) && (keyCode <= Canvas.KEY_NUM9) ) { int index = keyCode - Canvas.KEY_NUM1; if (index < this.itemsList.size()) { setSelectedIndex( index, true ); if ((this.choiceType != IMPLICIT) && (this.getScreen() instanceof Form) ) { notifyStateChanged(); } if (this.isImplicit) { // call command listener: Screen scr = getScreen(); if (scr != null) { Command selectCmd = this.selectCommand; if (selectCmd == null) { selectCmd = List.SELECT_COMMAND; } scr.callCommandListener( selectCmd ); } } return true; } //#endif } } //#endif return processed; } //#ifdef polish.hasPointerEvents /* (non-Javadoc) * @see de.enough.polish.ui.Item#handlePointerPressed(int, int) */ protected boolean handlePointerPressed(int x, int y) { //#debug System.out.println("ChoiceGroup.handlePointerPressed(" + x + ", " + y + ")"); //#ifndef polish.usePopupItem boolean processed = super.handlePointerPressed(x, y); int labelHeight = 0; if (this.label != null) { labelHeight = this.label.itemHeight; // TODO: what if the label is on the same line??? } y -= this.yOffset + this.marginTop + this.paddingTop + labelHeight; if (this.focusedItem != null && ( x >= this.focusedItem.xLeftPos ) && ( x <= this.focusedItem.xRightPos ) && ( y >= this.focusedItem.yTopPos ) && ( y <= this.focusedItem.yBottomPos ) ) { return handleKeyPressed( -1, Canvas.FIRE ) || processed; } //# return processed; //#else if (!this.isPopup) { super.handlePointerPressed(x, y); return handleKeyPressed( -1, Canvas.FIRE ); } // this is a popup-item: if (this.isPopupClosed) { focus( this.selectedIndex ); this.isPopupClosed = false; } else { y -= this.yOffset + this.marginTop + this.paddingTop; // select item at x,y and close this popup: // an item within this container was selected: Item[] myItems = getItems(); for (int i = 0; i < myItems.length; i++) { Item item = myItems[i]; if (y < item.yTopPos || y > item.yBottomPos || x < item.xLeftPos || x > item.xRightPos) { // this item is not in the range: continue; } // found out the item: setSelectedIndex(i, true); if ( getScreen() instanceof Form) { notifyStateChanged(); } break; } closePopup(); } requestInit(); return true; //#endif } //#endif /** * Sets the select command for this choice group. * * @param command the new select command */ protected void setSelectCommand(Command command) { this.selectCommand = command; } //#ifndef tmp.suppressAllCommands /** * Sets the command for selecting this (and opening this POPUP) choicegroup. * This implementation only works like described when not all ChoiceGroup command are deactivated * by specifying the <variable name="polish.ChoiceGroup.suppressMarkCommands" value="true"/> * and <variable name="polish.ChoiceGroup.suppressSelectCommand" value="true"/> * preprocessing variables. When all commands are deactivated by the mentioned preprocessing variables, * the implementation of Item is used instead. * * @param cmd the new command for selecting this choice group */ public void setDefaultCommand(Command cmd) { if (this.choiceType == MULTIPLE) { //#ifndef tmp.suppressMarkCommands removeCommand( MARK_COMMAND ); //#endif } else { //#ifndef tmp.suppressSelectCommand removeCommand( List.SELECT_COMMAND ); if (this.selectCommand != null) { removeCommand( this.selectCommand ); } //#endif } if (this.additionalItemCommandListener == null) { this.additionalItemCommandListener = this.itemCommandListener; } addCommand( cmd ); this.selectCommand = cmd; this.defaultCommand = cmd; this.itemCommandListener = this; } //#endif //#ifdef polish.usePopupItem /* (non-Javadoc) * @see de.enough.polish.ui.Item#defocus(de.enough.polish.ui.Style) */ public void defocus(Style originalStyle) { if (this.isPopup) { if (this.isPopupClosed) { this.popupItem.setStyle( originalStyle ); } else { this.isPopupClosed = true; requestInit(); } setStyle( originalStyle ); // now remove any commands which are associated with this item: Screen scr = getScreen(); if (scr != null) { scr.removeItemCommands(this); } // change the label-style of this container: //#ifdef polish.css.label-style Style tmpLabelStyle = null; if ( originalStyle != null) { tmpLabelStyle = (Style) originalStyle.getObjectProperty("label-style"); } if (tmpLabelStyle == null) { tmpLabelStyle = StyleSheet.labelStyle; } if (this.label != null && tmpLabelStyle != null && this.label.style != tmpLabelStyle) { this.label.setStyle( tmpLabelStyle ); } //#endif } else { super.defocus(originalStyle); } } //#endif //#ifdef polish.usePopupItem /* (non-Javadoc) * @see de.enough.polish.ui.Item#focus(de.enough.polish.ui.Style, int) */ protected Style focus(Style focusStyle, int direction) { if (this.isPopup && this.isPopupClosed) { if (this.focusedStyle != null) { focusStyle = this.focusedStyle; } Style original = this.style; this.popupItem.setStyle( focusStyle ); setStyle( focusStyle ); // now remove any commands which are associated with this item: Screen scr = getScreen(); if (scr != null) { scr.setItemCommands(this); } // change the label-style of this container: //#ifdef polish.css.label-style if (this.label != null) { Style labStyle = (Style) focusStyle.getObjectProperty("label-style"); if (labStyle != null) { this.labelStyle = this.label.style; this.label.setStyle( labStyle ); } } //#endif return original; } else { return super.focus(focusStyle, direction); } } //#endif /* (non-Javadoc) * @see de.enough.polish.ui.Container#setStyle(de.enough.polish.ui.Style, boolean) */ public void setStyle(Style style, boolean ignoreBackground) { super.setStyle(style, ignoreBackground); //#ifdef polish.usePopupItem if (this.isPopup && this.popupItem != null) { this.popupItem.setStyle( style ); } if (this.isPopup && this.popupItem.image == null ) { //#ifdef polish.css.popup-image String url = style.getProperty("popup-image"); if (url != null ) { this.popupItem.setImage( url ); } //#endif //#ifdef polish.css.popup-color Integer color = style.getIntProperty("popup-color"); if (color != null) { this.popupColor = color.intValue(); } //#endif //#ifdef polish.css.popup-background-color Integer bgColor = style.getIntProperty("popup-background-color"); if (bgColor != null) { this.popupBackgroundColor = bgColor.intValue(); } //#endif //#if ! tmp.suppressSelectCommand && polish.css.view-type if (!this.isSelectCommandAdded && this.choiceType == EXCLUSIVE && this.view == null) { if (this.selectCommand != null) { addCommand( this.selectCommand ); } else { addCommand( List.SELECT_COMMAND ); } this.isSelectCommandAdded = true; } //#endif } //#endif //#ifndef tmp.suppressAllCommands if (this.choiceType == MULTIPLE) { //#ifndef tmp.suppressMarkCommands //#ifdef polish.i18n.useDynamicTranslations String cmdLabel = Locale.get("polish.command.mark"); if (cmdLabel != MARK_COMMAND.getLabel()) { MARK_COMMAND = new Command( cmdLabel, Command.ITEM, 9 ); } cmdLabel = Locale.get("polish.command.unmark"); if (cmdLabel != UNMARK_COMMAND.getLabel()) { UNMARK_COMMAND = new Command( cmdLabel, Command.ITEM, 10 ); } //#endif addCommand( MARK_COMMAND ); addCommand( UNMARK_COMMAND ); //#endif } else if (this.choiceType == EXCLUSIVE){ //#if !tmp.suppressSelectCommand //#if polish.css.view-type if (this.view == null) { //#endif //#ifdef polish.i18n.useDynamicTranslations String cmdLabel = Locale.get("polish.command.select"); if (cmdLabel != List.SELECT_COMMAND.getLabel()) { List.SELECT_COMMAND = new Command( cmdLabel, Command.ITEM, 3 ); } //#endif addCommand( List.SELECT_COMMAND ); //#if polish.css.view-type } //#endif //#endif } this.itemCommandListener = this; //#endif } //#ifndef tmp.suppressAllCommands /* (non-Javadoc) * @see de.enough.polish.ui.ItemCommandListener#commandAction(javax.microedition.lcdui.Command, de.enough.polish.ui.Item) */ public void commandAction(Command c, Item item) { //#if tmp.allowSelectCommand && tmp.allowMarkCommands if (c == List.SELECT_COMMAND || c == MARK_COMMAND || c == this.selectCommand ) { //#elif tmp.allowSelectCommand //# if (c == List.SELECT_COMMAND || c == this.selectCommand ) { //#elif tmp.allowMarkCommands //# if (c == MARK_COMMAND || c == this.selectCommand ) { //#else //#abort Invalid combination of suppressed commands for a ChoiceGroup! //# if (false) { //#endif if (this.focusedIndex != -1) { setSelectedIndex( this.focusedIndex, true ); if ( (this.choiceType != IMPLICIT) //#ifdef polish.usePopupItem && !(this.isPopup && !this.isPopupClosed) //#endif && (this.getScreen() instanceof Form) ) { notifyStateChanged(); } //#ifdef polish.usePopupItem if (this.isPopup) { if (this.isPopupClosed) { openPopup(); } else { closePopup(); } repaint(); } //#endif } //#ifdef polish.usePopupItem else if (this.isPopup && this.isPopupClosed) { openPopup(); } //#endif //#ifdef tmp.allowMarkCommands } else if (c == UNMARK_COMMAND ) { if (this.focusedIndex != -1) { setSelectedIndex( this.focusedIndex, false ); if ( (this.choiceType != IMPLICIT) //#ifdef polish.usePopupItem && !(this.isPopup && !this.isPopupClosed) //#endif && (this.getScreen() instanceof Form) ) { notifyStateChanged(); } } //#endif } else if (this.additionalItemCommandListener != null) { this.additionalItemCommandListener.commandAction(c, item); } } //#endif //#ifndef tmp.suppressAllCommands public void setItemCommandListener(ItemCommandListener l) { this.additionalItemCommandListener = l; } //#endif}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -