diff -r 6d7ae91094e7 -r d93ef1df440d javauis/eswt_qt/org.eclipse.swt/Eclipse_SWT_PI/linux/org/eclipse/swt/internal/qt/s60/S60CommandPresentationStrategy.java --- a/javauis/eswt_qt/org.eclipse.swt/Eclipse_SWT_PI/linux/org/eclipse/swt/internal/qt/s60/S60CommandPresentationStrategy.java Tue Jun 22 09:54:11 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,178 +0,0 @@ -package org.eclipse.swt.internal.qt.s60; - -import org.eclipse.ercp.swt.mobile.Command; -import org.eclipse.swt.internal.qt.CommandPresentationStrategy; -import org.eclipse.swt.internal.qt.CommandUtils; -import org.eclipse.swt.internal.qt.OS; -import org.eclipse.swt.internal.qt.CommandArranger.CommandCollection; -import org.eclipse.swt.widgets.Control; -import org.eclipse.swt.widgets.Internal_PackageSupport; -import org.eclipse.swt.widgets.Widget; - -public class S60CommandPresentationStrategy extends CommandPresentationStrategy { - private Command[] positiveKeyCommands; - private Command negativeKeyCommand; - private Command defaultCommand; - - public S60CommandPresentationStrategy() { - super(); - } - - protected void dispose() { - positiveKeyCommands = null; - negativeKeyCommand = null; - defaultCommand =null; - } - - - protected void handleCommandListChange(Command added, Command removed, - CommandCollection commands) { - cleanNegativeCommand(); - cleanPositiveCommands(); - updateCommandPositions(commands.getCommands(null)); - placeNegativeCommand(); - placePositiveCommands(); - } - - protected void handleDefaultCommandChange(Command defaultCommand) { - this.defaultCommand = defaultCommand; - cleanPositiveCommands(); - placePositiveCommands(); - } - - - protected void handleFocusChange(Control focused, - CommandCollection oldCommands, CommandCollection commands) { - - //Clean-up the existing commands - cleanPositiveCommands(); - cleanNegativeCommand(); - //determine where the commands go - if( commands != null && commands.getSize()>0 ){ - Command[] add = commands.getCommands(null); - updateCommandPositions(add); - } - //Place them to their places - placePositiveCommands(); - placeNegativeCommand(); - - } - - private void updateCommandPositions(Command[] commands) { - positiveKeyCommands = new Command[commands.length]; - int positiveKeyIndex=0; - for (int i = 0; i < commands.length; i++) { - Command cmd = commands[i]; - if ( cmd.isDefaultCommand()){ - defaultCommand = cmd; - continue; - } - if( CommandUtils.isNegativeType(cmd.type) ){ - if (negativeKeyCommand == null || negativeKeyCommand.isDisposed()){ - negativeKeyCommand = cmd; - }else - if( negativeKeyCommand.getPriority() <= cmd.getPriority() ){ - positiveKeyCommands[positiveKeyIndex] = negativeKeyCommand; - positiveKeyIndex++; - negativeKeyCommand = cmd; - }else{ - positiveKeyCommands[positiveKeyIndex] = cmd; - positiveKeyIndex++; - } - continue; - } - positiveKeyCommands[positiveKeyIndex]=cmd; - positiveKeyIndex++; - } - if ((positiveKeyIndex) < positiveKeyCommands.length ){// needs to shrink - Command[] rightSized = new Command[positiveKeyIndex]; - System.arraycopy(positiveKeyCommands, 0, rightSized, 0, rightSized.length); - positiveKeyCommands = rightSized; - } - } - - - private void cleanPositiveCommands() { - boolean useBar = false; - if ( (positiveKeyCommands != null && positiveKeyCommands.length >1) || - (defaultCommand != null && positiveKeyCommands != null) ){ - useBar = true; - } - if (defaultCommand != null && !defaultCommand.isDisposed() - && !defaultCommand.control.isDisposed()) { - if (useBar) { - OS.QWidget_removeAction(defaultCommand.control.getShell() - .internal_getOwnMenuBar(), topHandle(defaultCommand)); - } - else{ - OS.QWidget_removeAction(topHandle(defaultCommand.control), topHandle(defaultCommand)); - } - } - if (positiveKeyCommands != null) { - for (int i = 0; i < positiveKeyCommands.length; i++) { - Command cmd = positiveKeyCommands[i]; - if (cmd == null || cmd.isDisposed() || cmd.control.isDisposed()){ - continue; - } - int handle = 0; - if (useBar) { - handle = cmd.control.getShell().internal_getOwnMenuBar(); - } else { - handle = topHandle(positiveKeyCommands[0].control); - } - OS.QWidget_removeAction(handle, topHandle(cmd)); - - } - } - } - - private void cleanNegativeCommand() { - if(negativeKeyCommand != null && !negativeKeyCommand.isDisposed() && !negativeKeyCommand.control.isDisposed() ){ - OS.QWidget_removeAction(topHandle(negativeKeyCommand.control), topHandle(negativeKeyCommand)); - } - } - - private void placeNegativeCommand() { - if(negativeKeyCommand != null ){ - OS.QWidget_addAction(Internal_PackageSupport.topHandle(negativeKeyCommand.control), - topHandle(negativeKeyCommand)); - } - } - - private void placePositiveCommands() { - if (defaultCommand != null ) { - int defaultCmdHandle = topHandle(defaultCommand); - if (positiveKeyCommands != null) { - OS.QMenuBar_addAction(defaultCommand.control.getShell() - .internal_getOwnMenuBar(), defaultCmdHandle); - } else { - OS.QWidget_addAction(Internal_PackageSupport - .topHandle(defaultCommand.control), defaultCmdHandle); - } - } - if (positiveKeyCommands != null) { - if (positiveKeyCommands.length == 1 && defaultCommand == null) { - OS.QWidget_addAction(Internal_PackageSupport - .topHandle(positiveKeyCommands[0].control), - topHandle(positiveKeyCommands[0])); - } else { - CommandUtils.sort(positiveKeyCommands); - for (int i = 0; i < positiveKeyCommands.length; i++) { - OS.QMenuBar_addAction(positiveKeyCommands[i].control - .getShell().internal_getOwnMenuBar(), - topHandle(positiveKeyCommands[i])); - } - } - } - } - - protected void handleMenuBarChanged(int newMenuBar, - CommandCollection commands) { - placePositiveCommands(); - } - - - private static final int topHandle(Widget w) { - return Internal_PackageSupport.topHandle(w); - } -}