📄 menubar.java
字号:
} //#if tmp.RightOptions if (this.singleRightCommand != null) { if ( this.singleRightCommand.getCommandType() == Command.BACK || this.singleRightCommand.getCommandType() == Command.CANCEL ) { this.singleLeftCommand = this.singleRightCommand; this.singleLeftCommandItem.setText( this.singleLeftCommand.getLabel() ); this.singleRightCommand = null; } if (this.isInitialised) { this.isInitialised = false; repaint(); } return; } int newSingleRightCommandIndex = getNextNegativeCommandIndex(); if ( newSingleRightCommandIndex != -1 ) { this.singleLeftCommand = (Command) this.commandsList.remove(newSingleRightCommandIndex); this.singleLeftCommandItem.setText( this.singleLeftCommand.getLabel() ); this.commandsContainer.remove( newSingleRightCommandIndex ); } // don't return here yet, since it could well be that there is only // one remaining item in the commandsList. In such a case the // single right command is used instead. //#endif } // 2.case: cmd == this.singleRightCommand if ( cmd == this.singleRightCommand ) { // remove single right command: this.singleRightCommand = null; //System.out.println("removing single right command"); // check if there is another BACK or CANCEL command and // select the one with the highest priority: //#if !tmp.RightOptions if (this.singleLeftCommand != null) { if ( this.singleLeftCommand.getCommandType() == Command.BACK || this.singleLeftCommand.getCommandType() == Command.CANCEL ) { this.singleRightCommand = this.singleLeftCommand; this.singleRightCommandItem.setText( this.singleLeftCommand.getLabel() ); this.singleLeftCommand = null; } if (this.isInitialised) { this.isInitialised = false; repaint(); } return; } int newSingleRightCommandIndex = getNextNegativeCommandIndex(); if ( newSingleRightCommandIndex != -1 ) { this.singleRightCommand = (Command) this.commandsList.remove(newSingleRightCommandIndex); this.singleRightCommandItem.setText( this.singleRightCommand.getLabel() ); this.commandsContainer.remove( newSingleRightCommandIndex ); } // don't return here yet, since it could well be that there is only // one remaining item in the commandsList. In such a case the // single left command is used instead. //#endif } // 3.case: cmd belongs to command collection int index = this.commandsList.indexOf( cmd ); if (index != -1) { //System.out.println("removing normal command"); this.commandsList.remove( index ); this.commandsContainer.remove( index ); } // if there is only one remaining item in the commandsList, the // single left command is used instead: //#if !tmp.useInvisibleMenuBar if (this.commandsList.size() == 1) { //System.out.println("moving only left command to single-left-one"); CommandItem item = (CommandItem) this.commandsContainer.get( 0 ); if (!item.hasChildren) { Command command = (Command) this.commandsList.remove( 0 ); this.commandsContainer.remove( 0 ); //#if tmp.RightOptions this.singleRightCommand = command; this.singleRightCommandItem.setText( command.getLabel() ); //#else this.singleLeftCommand = command; this.singleLeftCommandItem.setText( command.getLabel() ); //#endif } } //#endif if (this.isInitialised) { this.isInitialised = false; repaint(); } } private int getNextNegativeCommandIndex() { // there are several commands available, from the which the BACK/CANCEL command // with the highest priority needs to be chosen: Command[] myCommands = (Command[]) this.commandsList.toArray( new Command[ this.commandsList.size() ]); int maxPriority = 1000; int maxPriorityId = -1; for (int i = 0; i < myCommands.length; i++) { Command command = myCommands[i]; int type = command.getCommandType(); //#if polish.blackberry if ((type == Command.BACK || type == Command.CANCEL || type == Command.EXIT) //#else //# if ((type == Command.BACK || type == Command.CANCEL) //#endif && command.getPriority() < maxPriority ) { maxPriority = command.getPriority(); maxPriorityId = i; } } return maxPriorityId; } /* (non-Javadoc) * @see de.enough.polish.ui.Item#initContent(int, int) */ protected void initContent(int firstLineWidth, int lineWidth) { //#debug System.out.println("Init content of MenuBar - isOpened=" + this.isOpened ); if (this.isOpened) { int titleHeight = this.screen.titleHeight; // + this.screen.subTitleHeight + this.screen.infoHeight; int screenHeight = this.screen.screenHeight; this.topY = titleHeight; this.commandsContainer.setVerticalDimensions( titleHeight, screenHeight ); //System.out.println("setting vertical dimension: " + topMargin + ", " + (this.screen.screenHeight - topMargin) ); //#if polish.Screen.maxMenuWidthInPercent:defined //#= this.commandsContainerWidth = (this.screen.screenWidth * ${polish.Screen.maxMenuWidthInPercent}) / 100; //#else this.commandsContainerWidth = this.screen.screenWidth; //#endif int containerHeight = this.commandsContainer.getItemHeight(this.commandsContainerWidth, this.commandsContainerWidth); this.commandsContainerWidth = this.commandsContainer.itemWidth; //#debug System.out.println("commandsContainerWidth=" + this.commandsContainerWidth); this.commandsContainerY = screenHeight - containerHeight - 1; if (this.commandsContainerY < titleHeight) { this.commandsContainerY = titleHeight; } /* int focusedIndex = this.commandsContainer.focusedIndex; this.canScrollUpwards = (focusedIndex != 0); this.canScrollDownwards = (focusedIndex != this.commandsList.size() - 1 ); */ this.canScrollUpwards = (this.commandsContainer.yOffset != 0) && (this.commandsContainer.focusedIndex != 0); this.canScrollDownwards = (this.commandsContainer.yOffset + containerHeight > screenHeight - titleHeight) && (this.commandsContainer.focusedIndex != this.commandsList.size() - 1 ); this.paintScrollIndicator = this.canScrollUpwards || this.canScrollDownwards; //#if !tmp.useInvisibleMenuBar //#if tmp.OkCommandOnLeft IconItem item = this.singleLeftCommandItem; //#elif tmp.RightOptions //# IconItem item = this.singleRightCommandItem; //#else //# IconItem item = this.singleLeftCommandItem; //#endif if (this.selectImage != null) { item.setImage( this.selectImage ); if (this.showImageAndText) { //#ifdef polish.i18n.useDynamicTranslations item.setText( Locale.get( "polish.command.select" ) ); //#elifdef polish.command.select:defined //#= item.setText( "${polish.command.select}" ); //#else item.setText( "Select" ); //#endif } else { item.setText( null ); } } else { item.setImage( (Image)null ); //#ifdef polish.i18n.useDynamicTranslations item.setText( Locale.get( "polish.command.select" ) ); //#elifdef polish.command.select:defined //#= item.setText( "${polish.command.select}" ); //#else item.setText( "Select" ); //#endif } //#if tmp.OkCommandOnLeft this.singleRightCommandItem.setText(null); this.singleRightCommandItem.setImage( (Image)null ); //#else //#if tmp.RightOptions item = this.singleLeftCommandItem; //#else //# item = this.singleRightCommandItem; //#endif if (this.cancelImage != null) { item.setImage( this.cancelImage ); if (this.showImageAndText) { //#ifdef polish.i18n.useDynamicTranslations item.setText( Locale.get( "polish.command.cancel" ) ); //#elifdef polish.command.cancel:defined //#= item.setText( "${polish.command.cancel}" ); //#else item.setText( "Cancel" ); //#endif } else { item.setText( null ); } } else { //#ifdef polish.i18n.useDynamicTranslations item.setText( Locale.get( "polish.command.cancel" ) ); //#elifdef polish.command.cancel:defined //#= item.setText( "${polish.command.cancel}" ); //#else item.setText( "Cancel" ); //#endif } //#endif //#endif } else { //#if tmp.useInvisibleMenuBar this.background = null; this.border = null; this.contentWidth = 0; this.contentHeight = 0; //#else if (this.singleLeftCommand == null && this.singleRightCommand == null && this.commandsList.size() == 0 ) { this.contentWidth = 0; this.contentHeight = 0; return; } // the menu is closed this.paintScrollIndicator = false; //#if tmp.RightOptions if (this.singleLeftCommand != null) { this.singleLeftCommandItem.setText( this.singleLeftCommand.getLabel() ); } else { this.singleLeftCommandItem.setText( null ); } this.singleLeftCommandItem.setImage( (Image)null ); //#else if (this.singleRightCommand != null) { this.singleRightCommandItem.setText( this.singleRightCommand.getLabel() ); } else { this.singleRightCommandItem.setText( null ); } this.singleRightCommandItem.setImage( (Image)null ); //#endif if (this.commandsList.size() > 0) { //#if tmp.RightOptions IconItem item = this.singleRightCommandItem; //#else //# IconItem item = this.singleLeftCommandItem; //#endif if (this.optionsImage != null) { item.setImage( this.optionsImage ); if (this.showImageAndText) { //#ifdef polish.i18n.useDynamicTranslations item.setText( Locale.get( "polish.command.options" ) ); //#elifdef polish.command.options:defined //#= item.setText( "${polish.command.options}" ); //#else item.setText( "Options" ); //#endif } else { item.setText( null ); } } else { item.setImage( (Image)null ); //#ifdef polish.i18n.useDynamicTranslations item.setText( Locale.get( "polish.command.options" ) ); //#elifdef polish.command.options:defined //#= item.setText( "${polish.command.options}" ); //#else item.setText( "Options" ); //#endif } } //#endif } //#if !tmp.useInvisibleMenuBar int availableWidth = lineWidth / 2;// if ( ! this.isOpened && this.singleRightCommand == null ) {// availableWidth = lineWidth;// } //System.out.println("Initialising single commands with a width of " + availableWidth + " lineWidth is " + lineWidth); int height = this.singleLeftCommandItem.getItemHeight( availableWidth, availableWidth); if (this.singleRightCommandItem.getItemHeight( availableWidth, availableWidth ) > height) { height = this.singleRightCommandItem.itemHeight; } if (height > this.contentHeight) { this.contentHeight = height; } this.singleLeftCommandY = this.contentHeight - this.singleLeftCommandItem.itemHeight; this.singleRightCommandY = this.contentHeight - this.singleRightCommandItem.itemHeight; this.contentWidth = lineWidth; //#endif } /* (non-Javadoc) * @see de.enough.polish.ui.Item#paintContent(int, int, int, int, javax.microedition.lcdui.Graphics) */ protected void paintContent(int x, int y, int leftBorder, int rightBorder, Graphics g) { if (this.isOpened) { // paint overlay background: //#if !polish.Bugs.noTranslucencyWithDrawRgb if (this.overlayBackground != null) { this.overlayBackground.paint( 0, this.screen.contentY, this.screen.screenWidth , this.screen.screenHeight - this.screen.contentY, g ); } //#endif // paint opened menu: //System.out.println("setting clip " + this.topY + ", " + (this.screen.screenHeight - this.topY) ); //#if tmp.useInvisibleMenuBar // paint menu at the top right corner: g.setClip(0, this.screen.contentY, this.screen.screenWidth , this.screen.screenHeight - this.screen.contentY); this.commandsContainer.paint( this.screen.screenWidth - this.commandsContainerWidth, this.topY, this.screen.screenWidth - this.commandsContainerWidth, this.screen.screenWidth, g); g.setClip(0, 0, this.screen.screenWidth , this.screen.screenHeight ); //#elif tmp.RightOptions // paint menu at the lower right corner: g.setClip(0, this.topY, this.screen.screenWidth , this.screen.screenHeight - this.topY); this.commandsContainer.paint( this.screen.screenWidth - this.commandsContainerWidth, this.commandsContainerY, this.screen.screenWidth - this.commandsContainerWidth, this.screen.screenWidth, g); g.setClip(0, 0, this.screen.screenWidth , this.screen.screenHeight ); //#else // paint menu at the lower left corner: g.setClip(0, this.topY, this.screen.screenWidth , this.screen.screenHeight - this.topY); this.commandsContainer.paint(0, this.commandsContainerY, 0, this.commandsContainerWidth , g); //#endif //System.out.println("MenuBar: commandContainer.background == null: " + ( this.commandsContainer.background == null ) ); //System.out.println("MenuBar: commandContainer.style.background == null: " + ( this.commandsContainer.style.background == null ) ); //#if !tmp.useInvisibleMenuBar //#ifdef polish.FullCanvasSize:defined //#= g.setClip(0, 0, ${polish.FullCanvasWidth}, ${polish.FullCanvasHeight} ); //#else //TODO rob check if resetting of clip really works g.setClip(0, this.commandsContainerY, this.screen.screenWidth, this.screen.screenHeight ); //#endif // paint menu-bar: int centerX = leftBorder + ((rightBorder - leftBorder)/2); this.singleLeftCommandItem.paint(leftBorder, y + this.singleLeftCommandY, leftBorder, centerX, g); this.singleRightCommandItem.paint(centerX, y + this.singleRightCommandY, centerX, rightBorder, g); } else { int centerX = leftBorder + ((rightBorder - leftBorder)/2); //#if tmp.RightOptions //# if (this.singleLeftCommand != null) { //#else if (this.commandsContainer.size() > 0 || this.singleLeftCommand != null) { //#endif //System.out.println("painting left command from " + leftBorder + " to " + centerX ); this.singleLeftCommandItem.paint(leftBorder, y + this.singleLeftCommandY, leftBorder, centerX, g); } //#if tmp.RightOptions if (this.commandsContainer.size() > 0 || this.singleRightCommand != null) { //#else //# if (this.singleRightCommand != null) { //#endif //System.out.println("painting right command from " + centerX + " to " + rightBorder ); this.singleRightCommandItem.paint(centerX, y + this.singleRightCommandY, centerX, rightBorder, g); }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -