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 Fri Sep 17 16:44:34 2010 +0300
+++ /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);
- }
-}