/*=============================================================================#
# Copyright (c) 2005-2016 Stephan Wahlbrink (WalWare.de) and others.
# All rights reserved. This program and the accompanying materials
# are made available under the terms of the Eclipse Public License v1.0
# which accompanies this distribution, and is available at
# http://www.eclipse.org/legal/epl-v10.html
#
# Contributors:
# Stephan Wahlbrink - initial API and implementation
#=============================================================================*/
package de.walware.ecommons.text.ui;
import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.StyledText;
import org.eclipse.ui.texteditor.ITextEditorActionDefinitionIds;
public class TextHandlerUtil {
private static final boolean IS_MAC, IS_GTK, IS_MOTIF;
static {
final String platform = SWT.getPlatform();
IS_MAC = "carbon".equals(platform) || "cocoa".equals(platform);
IS_GTK = "gtk".equals(platform);
IS_MOTIF = "motif".equals(platform);
}
public static void disable(final StyledText widget, final String commandId) {
if (commandId.equals(ITextEditorActionDefinitionIds.DELETE_NEXT)) {
widget.setKeyBinding(SWT.DEL, SWT.NULL);
if (IS_MAC) {
widget.setKeyBinding((SWT.DEL | SWT.MOD2), SWT.NULL);
}
}
else if (commandId.equals(ITextEditorActionDefinitionIds.WORD_NEXT)) {
if (IS_MAC) {
widget.setKeyBinding((SWT.MOD3 | SWT.ARROW_RIGHT), SWT.NULL);
}
else {
widget.setKeyBinding((SWT.MOD1 | SWT.ARROW_RIGHT), SWT.NULL);
}
}
else if (commandId.equals(ITextEditorActionDefinitionIds.WORD_PREVIOUS)) {
if (IS_MAC) {
widget.setKeyBinding((SWT.MOD3 | SWT.ARROW_LEFT), SWT.NULL);
}
else {
widget.setKeyBinding((SWT.MOD1 | SWT.ARROW_LEFT), SWT.NULL);
}
}
else if (commandId.equals(ITextEditorActionDefinitionIds.SELECT_WORD_NEXT)) {
if (IS_MAC) {
widget.setKeyBinding((SWT.MOD2 | SWT.MOD3 | SWT.ARROW_RIGHT), SWT.NULL);
}
else {
widget.setKeyBinding((SWT.MOD1 | SWT.MOD2 | SWT.ARROW_RIGHT), SWT.NULL);
}
}
else if (commandId.equals(ITextEditorActionDefinitionIds.SELECT_WORD_PREVIOUS)) {
if (IS_MAC) {
widget.setKeyBinding((SWT.MOD2 | SWT.MOD3 | SWT.ARROW_LEFT), SWT.NULL);
}
else {
widget.setKeyBinding((SWT.MOD1 | SWT.MOD2 | SWT.ARROW_LEFT), SWT.NULL);
}
}
else if (commandId.equals(ITextEditorActionDefinitionIds.DELETE_NEXT_WORD)) {
widget.setKeyBinding((SWT.MOD1 | SWT.DEL), SWT.NULL);
if (IS_MAC) {
widget.setKeyBinding((SWT.MOD3 | SWT.DEL), SWT.NULL);
}
}
else if (commandId.equals(ITextEditorActionDefinitionIds.DELETE_PREVIOUS_WORD)) {
widget.setKeyBinding((SWT.MOD1 | SWT.BS), SWT.NULL);
if (IS_MAC) {
widget.setKeyBinding((SWT.MOD3 | SWT.BS), SWT.NULL);
}
}
}
}