Package org.eclipse.nebula.widgets.nattable.selection.config

Source Code of org.eclipse.nebula.widgets.nattable.selection.config.DefaultSelectionBindings

/*******************************************************************************
* Copyright (c) 2012, 2013 Original authors 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:
*     Original authors and others - initial API and implementation
******************************************************************************/
package org.eclipse.nebula.widgets.nattable.selection.config;

import org.eclipse.nebula.widgets.nattable.config.AbstractUiBindingConfiguration;
import org.eclipse.nebula.widgets.nattable.copy.action.CopyDataAction;
import org.eclipse.nebula.widgets.nattable.selection.SelectionLayer.MoveDirectionEnum;
import org.eclipse.nebula.widgets.nattable.selection.action.CellSelectionDragMode;
import org.eclipse.nebula.widgets.nattable.selection.action.MoveSelectionAction;
import org.eclipse.nebula.widgets.nattable.selection.action.MoveToFirstColumnAction;
import org.eclipse.nebula.widgets.nattable.selection.action.MoveToFirstRowAction;
import org.eclipse.nebula.widgets.nattable.selection.action.MoveToLastColumnAction;
import org.eclipse.nebula.widgets.nattable.selection.action.MoveToLastRowAction;
import org.eclipse.nebula.widgets.nattable.selection.action.PageDownAction;
import org.eclipse.nebula.widgets.nattable.selection.action.PageUpAction;
import org.eclipse.nebula.widgets.nattable.selection.action.SelectAllAction;
import org.eclipse.nebula.widgets.nattable.selection.action.SelectCellAction;
import org.eclipse.nebula.widgets.nattable.ui.action.IKeyAction;
import org.eclipse.nebula.widgets.nattable.ui.action.IMouseAction;
import org.eclipse.nebula.widgets.nattable.ui.binding.UiBindingRegistry;
import org.eclipse.nebula.widgets.nattable.ui.matcher.KeyEventMatcher;
import org.eclipse.nebula.widgets.nattable.ui.matcher.MouseEventMatcher;
import org.eclipse.nebula.widgets.nattable.viewport.action.ViewportSelectColumnAction;
import org.eclipse.nebula.widgets.nattable.viewport.action.ViewportSelectRowAction;
import org.eclipse.swt.SWT;

public class DefaultSelectionBindings extends AbstractUiBindingConfiguration {

    @Override
    public void configureUiBindings(UiBindingRegistry uiBindingRegistry) {
        // Move up
        configureMoveUpBindings(uiBindingRegistry, new MoveSelectionAction(
                MoveDirectionEnum.UP));

        // Move down
        configureMoveDownBindings(uiBindingRegistry, new MoveSelectionAction(
                MoveDirectionEnum.DOWN));

        // Move left
        configureMoveLeftBindings(uiBindingRegistry, new MoveSelectionAction(
                MoveDirectionEnum.LEFT));

        // Move right
        configureMoveRightBindings(uiBindingRegistry, new MoveSelectionAction(
                MoveDirectionEnum.RIGHT));

        // Page Up
        configurePageUpButtonBindings(uiBindingRegistry, new PageUpAction());

        // Page down
        configurePageDownButtonBindings(uiBindingRegistry, new PageDownAction());

        // Home - Move to first column
        configureHomeButtonBindings(uiBindingRegistry,
                new MoveToFirstColumnAction());

        // End - Move to last column
        configureEndButtonBindings(uiBindingRegistry,
                new MoveToLastColumnAction());

        // Select all
        uiBindingRegistry.registerKeyBinding(
                new KeyEventMatcher(SWT.MOD1, 'a'), new SelectAllAction());

        // Copy
        uiBindingRegistry.registerKeyBinding(
                new KeyEventMatcher(SWT.MOD1, 'c'), new CopyDataAction());

        // Mouse bindings - select Cell
        configureBodyMouseClickBindings(uiBindingRegistry);

        // Mouse bindings - select columns
        configureColumnHeaderMouseClickBindings(uiBindingRegistry);

        // Mouse bindings - select rows
        configureRowHeaderMouseClickBindings(uiBindingRegistry);

        // Mouse bindings - Drag
        configureBodyMouseDragMode(uiBindingRegistry);
    }

    // *** pg. up, pg. down, home, end keys selection bindings ***

    protected void configureEndButtonBindings(
            UiBindingRegistry uiBindingRegistry, IKeyAction action) {
        uiBindingRegistry.registerKeyBinding(new KeyEventMatcher(SWT.NONE,
                SWT.END), action);
        uiBindingRegistry.registerKeyBinding(new KeyEventMatcher(SWT.SHIFT,
                SWT.END), action);
        uiBindingRegistry.registerKeyBinding(new KeyEventMatcher(SWT.MOD1,
                SWT.END), action);
        uiBindingRegistry.registerKeyBinding(new KeyEventMatcher(SWT.SHIFT
                | SWT.MOD1, SWT.END), action);
    }

    protected void configureHomeButtonBindings(
            UiBindingRegistry uiBindingRegistry, IKeyAction action) {
        uiBindingRegistry.registerKeyBinding(new KeyEventMatcher(SWT.NONE,
                SWT.HOME), action);
        uiBindingRegistry.registerKeyBinding(new KeyEventMatcher(SWT.SHIFT,
                SWT.HOME), action);
        uiBindingRegistry.registerKeyBinding(new KeyEventMatcher(SWT.MOD1,
                SWT.HOME), action);
        uiBindingRegistry.registerKeyBinding(new KeyEventMatcher(SWT.SHIFT
                | SWT.MOD1, SWT.HOME), action);
    }

    protected void configurePageDownButtonBindings(
            UiBindingRegistry uiBindingRegistry, IKeyAction action) {
        uiBindingRegistry.registerKeyBinding(new KeyEventMatcher(SWT.NONE,
                SWT.PAGE_DOWN), action);
        uiBindingRegistry.registerKeyBinding(new KeyEventMatcher(SWT.SHIFT,
                SWT.PAGE_DOWN), action);
        uiBindingRegistry.registerKeyBinding(new KeyEventMatcher(SWT.MOD1,
                SWT.PAGE_DOWN), action);
        uiBindingRegistry.registerKeyBinding(new KeyEventMatcher(SWT.SHIFT
                | SWT.MOD1, SWT.PAGE_DOWN), action);
    }

    protected void configurePageUpButtonBindings(
            UiBindingRegistry uiBindingRegistry, PageUpAction action) {
        uiBindingRegistry.registerKeyBinding(new KeyEventMatcher(SWT.NONE,
                SWT.PAGE_UP), action);
        uiBindingRegistry.registerKeyBinding(new KeyEventMatcher(SWT.SHIFT,
                SWT.PAGE_UP), action);
        uiBindingRegistry.registerKeyBinding(new KeyEventMatcher(SWT.MOD1,
                SWT.PAGE_UP), action);
        uiBindingRegistry.registerKeyBinding(new KeyEventMatcher(SWT.SHIFT
                | SWT.MOD1, SWT.PAGE_UP), action);
    }

    // *** Arrow keys selection bindings ***

    protected void configureMoveRightBindings(
            UiBindingRegistry uiBindingRegistry, IKeyAction action) {
        uiBindingRegistry.registerKeyBinding(new KeyEventMatcher(SWT.NONE,
                SWT.ARROW_RIGHT), action);
        uiBindingRegistry.registerKeyBinding(new KeyEventMatcher(SWT.SHIFT,
                SWT.ARROW_RIGHT), action);
        uiBindingRegistry.registerKeyBinding(new KeyEventMatcher(SWT.MOD1,
                SWT.ARROW_RIGHT), new MoveToLastColumnAction());
        uiBindingRegistry.registerKeyBinding(new KeyEventMatcher(SWT.SHIFT
                | SWT.MOD1, SWT.ARROW_RIGHT), new MoveToLastColumnAction());

        uiBindingRegistry.registerKeyBinding(new KeyEventMatcher(SWT.NONE,
                SWT.TAB), action);
        uiBindingRegistry.registerKeyBinding(new KeyEventMatcher(SWT.MOD1,
                SWT.TAB), action);
    }

    protected void configureMoveLeftBindings(
            UiBindingRegistry uiBindingRegistry, IKeyAction action) {
        uiBindingRegistry.registerKeyBinding(new KeyEventMatcher(SWT.NONE,
                SWT.ARROW_LEFT), action);
        uiBindingRegistry.registerKeyBinding(new KeyEventMatcher(SWT.SHIFT,
                SWT.ARROW_LEFT), action);
        uiBindingRegistry.registerKeyBinding(new KeyEventMatcher(SWT.MOD1,
                SWT.ARROW_LEFT), new MoveToFirstColumnAction());
        uiBindingRegistry.registerKeyBinding(new KeyEventMatcher(SWT.SHIFT
                | SWT.MOD1, SWT.ARROW_LEFT), new MoveToFirstColumnAction());

        uiBindingRegistry.registerKeyBinding(new KeyEventMatcher(SWT.SHIFT,
                SWT.TAB), new MoveSelectionAction(MoveDirectionEnum.LEFT,
                false, false));
        uiBindingRegistry.registerKeyBinding(new KeyEventMatcher(SWT.SHIFT
                | SWT.MOD1, SWT.TAB), action);
    }

    protected void configureMoveDownBindings(
            UiBindingRegistry uiBindingRegistry, IKeyAction action) {
        uiBindingRegistry.registerKeyBinding(new KeyEventMatcher(SWT.NONE,
                SWT.ARROW_DOWN), action);
        uiBindingRegistry.registerKeyBinding(new KeyEventMatcher(SWT.SHIFT,
                SWT.ARROW_DOWN), action);
        uiBindingRegistry.registerKeyBinding(new KeyEventMatcher(SWT.MOD1,
                SWT.ARROW_DOWN), new MoveToLastRowAction());
        uiBindingRegistry.registerKeyBinding(new KeyEventMatcher(SWT.SHIFT
                | SWT.MOD1, SWT.ARROW_DOWN), new MoveToLastRowAction());

        uiBindingRegistry.registerKeyBinding(new KeyEventMatcher(SWT.NONE,
                SWT.CR), action);
        uiBindingRegistry.registerKeyBinding(new KeyEventMatcher(SWT.MOD1,
                SWT.CR), action);
    }

    protected void configureMoveUpBindings(UiBindingRegistry uiBindingRegistry,
            IKeyAction action) {
        uiBindingRegistry.registerKeyBinding(new KeyEventMatcher(SWT.NONE,
                SWT.ARROW_UP), action);
        uiBindingRegistry.registerKeyBinding(new KeyEventMatcher(SWT.SHIFT,
                SWT.ARROW_UP), action);
        uiBindingRegistry.registerKeyBinding(new KeyEventMatcher(SWT.MOD1,
                SWT.ARROW_UP), new MoveToFirstRowAction());
        uiBindingRegistry.registerKeyBinding(new KeyEventMatcher(SWT.SHIFT
                | SWT.MOD1, SWT.ARROW_UP), new MoveToFirstRowAction());

        uiBindingRegistry.registerKeyBinding(new KeyEventMatcher(SWT.SHIFT,
                SWT.CR), new MoveSelectionAction(MoveDirectionEnum.UP, false,
                false));
        uiBindingRegistry.registerKeyBinding(new KeyEventMatcher(SWT.SHIFT
                | SWT.MOD1, SWT.CR), action);
    }

    // *** Mouse bindings ***

    protected void configureBodyMouseClickBindings(
            UiBindingRegistry uiBindingRegistry) {
        IMouseAction action = new SelectCellAction();
        uiBindingRegistry.registerMouseDownBinding(
                MouseEventMatcher.bodyLeftClick(SWT.NONE), action);
        uiBindingRegistry.registerMouseDownBinding(
                MouseEventMatcher.bodyLeftClick(SWT.SHIFT), action);
        uiBindingRegistry.registerMouseDownBinding(
                MouseEventMatcher.bodyLeftClick(SWT.MOD1), action);
        uiBindingRegistry.registerMouseDownBinding(
                MouseEventMatcher.bodyLeftClick(SWT.SHIFT | SWT.MOD1), action);
    }

    protected void configureColumnHeaderMouseClickBindings(
            UiBindingRegistry uiBindingRegistry) {
        uiBindingRegistry.registerSingleClickBinding(
                MouseEventMatcher.columnHeaderLeftClick(SWT.NONE),
                new ViewportSelectColumnAction(false, false));
        uiBindingRegistry.registerSingleClickBinding(
                MouseEventMatcher.columnHeaderLeftClick(SWT.SHIFT),
                new ViewportSelectColumnAction(true, false));
        uiBindingRegistry.registerSingleClickBinding(
                MouseEventMatcher.columnHeaderLeftClick(SWT.MOD1),
                new ViewportSelectColumnAction(false, true));
        uiBindingRegistry.registerSingleClickBinding(
                MouseEventMatcher.columnHeaderLeftClick(SWT.SHIFT | SWT.MOD1),
                new ViewportSelectColumnAction(true, true));
    }

    protected void configureRowHeaderMouseClickBindings(
            UiBindingRegistry uiBindingRegistry) {
        uiBindingRegistry.registerMouseDownBinding(
                MouseEventMatcher.rowHeaderLeftClick(SWT.NONE),
                new ViewportSelectRowAction(false, false));
        uiBindingRegistry.registerMouseDownBinding(
                MouseEventMatcher.rowHeaderLeftClick(SWT.SHIFT),
                new ViewportSelectRowAction(true, false));
        uiBindingRegistry.registerMouseDownBinding(
                MouseEventMatcher.rowHeaderLeftClick(SWT.MOD1),
                new ViewportSelectRowAction(false, true));
        uiBindingRegistry.registerMouseDownBinding(
                MouseEventMatcher.rowHeaderLeftClick(SWT.SHIFT | SWT.MOD1),
                new ViewportSelectRowAction(true, true));
    }

    protected void configureBodyMouseDragMode(
            UiBindingRegistry uiBindingRegistry) {
        CellSelectionDragMode dragMode = new CellSelectionDragMode();
        uiBindingRegistry.registerMouseDragMode(
                MouseEventMatcher.bodyLeftClick(SWT.NONE), dragMode);
        uiBindingRegistry.registerMouseDragMode(
                MouseEventMatcher.bodyLeftClick(SWT.SHIFT), dragMode);
        uiBindingRegistry.registerMouseDragMode(
                MouseEventMatcher.bodyLeftClick(SWT.MOD1), dragMode);
        uiBindingRegistry
                .registerMouseDragMode(
                        MouseEventMatcher.bodyLeftClick(SWT.SHIFT | SWT.MOD1),
                        dragMode);
    }

}
TOP

Related Classes of org.eclipse.nebula.widgets.nattable.selection.config.DefaultSelectionBindings

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.