Example usage for org.eclipse.jface.bindings.keys KeySequenceText KeySequenceText

List of usage examples for org.eclipse.jface.bindings.keys KeySequenceText KeySequenceText

Introduction

In this page you can find the example usage for org.eclipse.jface.bindings.keys KeySequenceText KeySequenceText.

Prototype

public KeySequenceText(Text wrappedText) 

Source Link

Document

Constructs an instance of KeySequenceTextField with the text field to use.

Usage

From source file:com.bdaum.zoom.ui.internal.preferences.KeyPreferencePage.java

License:Open Source License

@SuppressWarnings("unused")
private void createDefinitionArea(Composite parent) {
    final Composite composite = new Composite(parent, SWT.NONE);
    composite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
    composite.setLayout(new GridLayout(2, false));
    new Label(composite, SWT.NONE).setText(Messages.getString("KeyPreferencePage.command2")); //$NON-NLS-1$
    nameField = new Text(composite, SWT.SINGLE | SWT.LEAD | SWT.BORDER | SWT.READ_ONLY);
    nameField.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
    new Label(composite, SWT.NONE).setText(Messages.getString("KeyPreferencePage.description")); //$NON-NLS-1$
    descriptionField = new Text(composite, SWT.MULTI | SWT.LEAD | SWT.BORDER | SWT.READ_ONLY | SWT.WRAP);
    GridData layoutData = new GridData(SWT.FILL, SWT.CENTER, true, false);
    layoutData.heightHint = 50;//  w w  w .  j a  v  a2 s .  c  om
    descriptionField.setLayoutData(layoutData);
    new Label(composite, SWT.NONE).setText(Messages.getString("KeyPreferencePage.key_sequence")); //$NON-NLS-1$
    Composite keyGroup = new Composite(composite, SWT.NONE);
    keyGroup.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, true));
    GridLayout layout = new GridLayout(2, false);
    layout.marginHeight = 0;
    layout.marginWidth = 0;
    keyGroup.setLayout(layout);
    keyField = new Text(keyGroup, SWT.SINGLE | SWT.LEAD | SWT.BORDER);
    keyField.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
    keySequenceField = new KeySequenceText(keyField);
    keySequenceField.setKeyStrokeLimit(2);
    keySequenceField.addPropertyChangeListener(new IPropertyChangeListener() {
        public final void propertyChange(final PropertyChangeEvent event) {
            if (!event.getOldValue().equals(event.getNewValue())) {
                final KeySequence keySequence = keySequenceField.getKeySequence();
                if (selectedCommand == null || !keySequence.isComplete())
                    return;
                boolean empty = keySequence.isEmpty();
                Binding newBinding;
                Binding b = commandMap.get(selectedCommand.getId());
                if (b != null) {
                    if (!keySequence.equals(b.getTriggerSequence())) {
                        newBinding = new KeyBinding(keySequence, empty ? null : b.getParameterizedCommand(),
                                activeSchemeId, b.getContextId(), null, null, null, Binding.USER);
                        userMap.remove(b.getTriggerSequence());
                        userMap.put(keySequence, newBinding);
                        if (empty)
                            commandMap.remove(selectedCommand.getId());
                        else
                            commandMap.put(selectedCommand.getId(), newBinding);
                    }
                } else if (!empty) {
                    ParameterizedCommand pc = new ParameterizedCommand(selectedCommand, null);
                    newBinding = new KeyBinding(keySequence, pc, activeSchemeId,
                            "org.eclipse.ui.contexts.window", //$NON-NLS-1$
                            null, null, null, Binding.USER);
                    userMap.put(keySequence, newBinding);
                    commandMap.put(selectedCommand.getId(), newBinding);
                }
                refreshViewer();
                doValidate();
                keyField.setSelection(keyField.getTextLimit());
            }
        }
    });
    final Button helpButton = new Button(keyGroup, SWT.ARROW | SWT.LEFT);
    helpButton.setLayoutData(new GridData(SWT.BEGINNING, SWT.CENTER, false, false));
    helpButton.setToolTipText(Messages.getString("KeyPreferencePage.add_a_special_key")); //$NON-NLS-1$
    // Arrow buttons aren't normally added to the tab list. Let's fix that.
    final Control[] tabStops = keyGroup.getTabList();
    final ArrayList<Control> newTabStops = new ArrayList<Control>();
    for (int i = 0; i < tabStops.length; i++) {
        Control tabStop = tabStops[i];
        newTabStops.add(tabStop);
        if (keyField.equals(tabStop))
            newTabStops.add(helpButton);
    }
    keyGroup.setTabList(newTabStops.toArray(new Control[newTabStops.size()]));

    // Construct the menu to attach to the above button.
    final Menu addKeyMenu = new Menu(helpButton);
    final Iterator<?> trappedKeyItr = KeySequenceText.TRAPPED_KEYS.iterator();
    while (trappedKeyItr.hasNext()) {
        final KeyStroke trappedKey = (KeyStroke) trappedKeyItr.next();
        final MenuItem menuItem = new MenuItem(addKeyMenu, SWT.PUSH);
        menuItem.setText(trappedKey.format());
        menuItem.addSelectionListener(new SelectionAdapter() {
            @Override
            public void widgetSelected(SelectionEvent e) {
                keySequenceField.insert(trappedKey);
                keyField.setFocus();
                keyField.setSelection(keyField.getTextLimit());
            }
        });
    }
    helpButton.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent selectionEvent) {
            Point buttonLocation = helpButton.getLocation();
            buttonLocation = composite.toDisplay(buttonLocation.x, buttonLocation.y);
            Point buttonSize = helpButton.getSize();
            addKeyMenu.setLocation(buttonLocation.x, buttonLocation.y + buttonSize.y);
            addKeyMenu.setVisible(true);
        }
    });
    new Label(composite, SWT.NONE);
    userLabel = new Label(composite, SWT.NONE);
    userLabel.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
}

From source file:net.sourceforge.vrapper.plugin.bindingkeeper.preferences.KeySequenceInput.java

License:Open Source License

@Override
protected Control createDialogArea(Composite parent) {

    Composite composite = (Composite) super.createDialogArea(parent);

    getText().addFocusListener(new FocusListener() {
        @Override//from w  w w .  j  a va2 s.  c o m
        public void focusGained(FocusEvent e) {
            bindingService.setKeyFilterEnabled(false);
        }

        @Override
        public void focusLost(FocusEvent e) {
            bindingService.setKeyFilterEnabled(true);
        }
    });
    getText().addDisposeListener(new DisposeListener() {
        @Override
        public void widgetDisposed(DisposeEvent e) {
            if (!bindingService.isKeyFilterEnabled()) {
                bindingService.setKeyFilterEnabled(true);
            }
        }
    });

    final KeySequenceText keySequenceText = new KeySequenceText(getText());
    keySequenceText.setKeyStrokeLimit(1);
    keySequenceText.addPropertyChangeListener(new IPropertyChangeListener() {
        @Override
        public final void propertyChange(final PropertyChangeEvent event) {
            if (!event.getOldValue().equals(event.getNewValue())) {
                final KeySequence keySequence = keySequenceText.getKeySequence();
                if (!keySequence.isComplete()) {
                    return;
                }

                getText().setSelection(getText().getTextLimit());
            }
        }
    });

    applyDialogFont(composite);
    return composite;

}

From source file:org.eclipse.e4.ui.keybinding.tests.Bug42024Test.java

License:Open Source License

protected void doSetUp() throws Exception {
    super.doSetUp();

    // Create a window with a KeySequenceText
    Display display = Display.getCurrent();
    shell = new Shell(display);
    shell.setLayout(new RowLayout());
    text = new KeySequenceText(new Text(shell, SWT.BORDER));

    // Open it//from w w w . j  a  v a  2 s.  co  m
    shell.pack();
    shell.open();
}

From source file:org.eclipse.e4.ui.keybinding.tests.Bug43168Test.java

License:Open Source License

/**
 * Tests that a <code>StackOverflowError</code> does not occur when
 * trying to set the key sequence in a key sequence entry widget.
 * //from  www  .  j  a  v a  2  s .  co  m
 * @throws ParseException
 *             If "CTRL+" is not recognized as a key sequence.
 */
public void testStackOverflow() throws ParseException {
    Display display = Display.getCurrent();
    Shell shell = new Shell(display);
    shell.setLayout(new RowLayout());
    Text text = new Text(shell, SWT.BORDER);
    KeySequenceText keySequenceText = new KeySequenceText(text);

    shell.pack();
    shell.open();
    keySequenceText.setKeySequence(KeySequence.getInstance("CTRL+")); //$NON-NLS-1$
    shell.close();
}

From source file:org.eclipse.jubula.client.ui.rcp.widgets.ModifiableTriggerList.java

License:Open Source License

/**
 * create all controls for this component
 * @param headerText the text to display
 * @param values initial values to display
 */// ww w.  ja va 2s.c  o  m
private void initControls(String headerText, Set<String> values) {
    FormLayout layout = new FormLayout();
    layout.marginHeight = 5;
    layout.marginWidth = 10;
    this.setLayout(layout);

    Label header = new Label(this, SWT.NONE);
    header.setText(headerText);
    FormData headerData = new FormData();
    headerData.left = new FormAttachment(0, 0);
    headerData.top = new FormAttachment(0, 0);
    headerData.right = new FormAttachment(100, 0);
    header.setLayoutData(headerData);

    m_editor = new Text(this, SWT.BORDER);
    FormData editorData = new FormData();
    editorData.left = new FormAttachment(0, 0);
    editorData.top = new FormAttachment(header, 5, SWT.BOTTOM);
    m_editor.setLayoutData(editorData);

    m_textTriggerSequenceManager = new KeySequenceText(m_editor);
    m_textTriggerSequenceManager.setKeyStrokeLimit(1);

    m_addButton = new Button(this, SWT.PUSH);
    m_addButton.setText(Messages.ModifiableListAdd);
    FormData addButtonData = new FormData();
    m_addButton.setLayoutData(addButtonData);

    editorData.right = new FormAttachment(74, 0);
    addButtonData.top = new FormAttachment(m_editor, -2, SWT.TOP);
    addButtonData.left = new FormAttachment(76, 0);
    addButtonData.right = new FormAttachment(100, 0);

    createButtonGroup();
    m_list = new List(this, SWT.SINGLE | SWT.V_SCROLL | SWT.BORDER);
    addToolTipListener();
    FormData listData = new FormData();
    listData.left = new FormAttachment(0, 0);
    listData.top = new FormAttachment(m_addButton, 10, SWT.BOTTOM);
    listData.right = new FormAttachment(m_addButton, 0, SWT.RIGHT);
    listData.bottom = new FormAttachment(m_changeButton, -10, SWT.TOP);
    m_list.setLayoutData(listData);
    setValues(values);
    //        pack(true);
}

From source file:org.eclipse.ui.internal.keys.KeysPreferencePage.java

License:Open Source License

/**
 * Creates the tab that allows the user to change the keyboard shortcuts.
 * /*from   w  w  w .j  a  v a2 s .c om*/
 * @param parent
 *            The tab folder in which the tab should be created; must not be
 *            <code>null</code>.
 * @return The composite which represents the contents of the tab; never
 *         <code>null</code>.
 */
private final Composite createModifyTab(final TabFolder parent) {
    final Composite composite = new Composite(parent, SWT.NULL);
    composite.setLayout(new GridLayout());
    GridData gridData = new GridData(GridData.FILL_BOTH);
    composite.setLayoutData(gridData);
    final Composite compositeKeyConfiguration = new Composite(composite, SWT.NULL);
    GridLayout gridLayout = new GridLayout();
    gridLayout.numColumns = 3;
    compositeKeyConfiguration.setLayout(gridLayout);
    gridData = new GridData(GridData.FILL_HORIZONTAL);
    compositeKeyConfiguration.setLayoutData(gridData);
    final Label labelKeyConfiguration = new Label(compositeKeyConfiguration, SWT.LEFT);
    labelKeyConfiguration.setText(Util.translateString(RESOURCE_BUNDLE, "labelScheme")); //$NON-NLS-1$
    comboScheme = new Combo(compositeKeyConfiguration, SWT.READ_ONLY);
    gridData = new GridData();
    gridData.widthHint = 200;
    comboScheme.setLayoutData(gridData);
    comboScheme.setVisibleItemCount(ITEMS_TO_SHOW);

    comboScheme.addSelectionListener(new SelectionAdapter() {
        public final void widgetSelected(final SelectionEvent e) {
            selectedComboScheme();
        }
    });

    labelSchemeExtends = new Label(compositeKeyConfiguration, SWT.LEFT);
    gridData = new GridData(GridData.FILL_HORIZONTAL);
    labelSchemeExtends.setLayoutData(gridData);
    final Control spacer = new Composite(composite, SWT.NULL);
    gridData = new GridData();
    gridData.heightHint = 10;
    gridData.widthHint = 10;
    spacer.setLayoutData(gridData);
    final Group groupCommand = new Group(composite, SWT.SHADOW_NONE);
    gridLayout = new GridLayout();
    gridLayout.numColumns = 3;
    groupCommand.setLayout(gridLayout);
    gridData = new GridData(GridData.FILL_BOTH);
    groupCommand.setLayoutData(gridData);
    groupCommand.setText(Util.translateString(RESOURCE_BUNDLE, "groupCommand")); //$NON-NLS-1$   
    final Label labelCategory = new Label(groupCommand, SWT.LEFT);
    gridData = new GridData();
    labelCategory.setLayoutData(gridData);
    labelCategory.setText(Util.translateString(RESOURCE_BUNDLE, "labelCategory")); //$NON-NLS-1$
    comboCategory = new Combo(groupCommand, SWT.READ_ONLY);
    gridData = new GridData();
    gridData.horizontalSpan = 2;
    gridData.widthHint = 200;
    comboCategory.setLayoutData(gridData);
    comboCategory.setVisibleItemCount(ITEMS_TO_SHOW);

    comboCategory.addSelectionListener(new SelectionAdapter() {
        public final void widgetSelected(final SelectionEvent e) {
            update();
        }
    });

    final Label labelCommand = new Label(groupCommand, SWT.LEFT);
    gridData = new GridData();
    labelCommand.setLayoutData(gridData);
    labelCommand.setText(Util.translateString(RESOURCE_BUNDLE, "labelCommand")); //$NON-NLS-1$
    comboCommand = new Combo(groupCommand, SWT.READ_ONLY);
    gridData = new GridData();
    gridData.horizontalSpan = 2;
    gridData.widthHint = 300;
    comboCommand.setLayoutData(gridData);
    comboCommand.setVisibleItemCount(9);

    comboCommand.addSelectionListener(new SelectionAdapter() {
        public final void widgetSelected(final SelectionEvent e) {
            update();
        }
    });

    labelBindingsForCommand = new Label(groupCommand, SWT.LEFT);
    gridData = new GridData(GridData.VERTICAL_ALIGN_BEGINNING);
    gridData.verticalAlignment = GridData.FILL_VERTICAL;
    labelBindingsForCommand.setLayoutData(gridData);
    labelBindingsForCommand.setText(Util.translateString(RESOURCE_BUNDLE, "labelAssignmentsForCommand")); //$NON-NLS-1$
    tableBindingsForCommand = new Table(groupCommand,
            SWT.BORDER | SWT.FULL_SELECTION | SWT.H_SCROLL | SWT.V_SCROLL);
    tableBindingsForCommand.setHeaderVisible(true);
    gridData = new GridData(GridData.FILL_BOTH);
    gridData.heightHint = 60;
    gridData.horizontalSpan = 2;
    boolean isMac = org.eclipse.jface.util.Util.isMac();
    gridData.widthHint = isMac ? 620 : 520;
    tableBindingsForCommand.setLayoutData(gridData);
    TableColumn tableColumnDelta = new TableColumn(tableBindingsForCommand, SWT.NULL, 0);
    tableColumnDelta.setResizable(false);
    tableColumnDelta.setText(Util.ZERO_LENGTH_STRING);
    tableColumnDelta.setWidth(20);
    TableColumn tableColumnContext = new TableColumn(tableBindingsForCommand, SWT.NULL, 1);
    tableColumnContext.setResizable(true);
    tableColumnContext.setText(Util.translateString(RESOURCE_BUNDLE, "tableColumnContext")); //$NON-NLS-1$
    tableColumnContext.pack();
    tableColumnContext.setWidth(200);
    final TableColumn tableColumnKeySequence = new TableColumn(tableBindingsForCommand, SWT.NULL, 2);
    tableColumnKeySequence.setResizable(true);
    tableColumnKeySequence.setText(Util.translateString(RESOURCE_BUNDLE, "tableColumnKeySequence")); //$NON-NLS-1$
    tableColumnKeySequence.pack();
    tableColumnKeySequence.setWidth(300);

    tableBindingsForCommand.addMouseListener(new MouseAdapter() {

        public void mouseDoubleClick(MouseEvent mouseEvent) {
            update();
        }
    });

    tableBindingsForCommand.addSelectionListener(new SelectionAdapter() {

        public void widgetSelected(SelectionEvent selectionEvent) {
            selectedTableBindingsForCommand();
        }
    });

    final Group groupKeySequence = new Group(composite, SWT.SHADOW_NONE);
    gridLayout = new GridLayout();
    gridLayout.numColumns = 4;
    groupKeySequence.setLayout(gridLayout);
    gridData = new GridData(GridData.FILL_BOTH);
    groupKeySequence.setLayoutData(gridData);
    groupKeySequence.setText(Util.translateString(RESOURCE_BUNDLE, "groupKeySequence")); //$NON-NLS-1$   
    final Label labelKeySequence = new Label(groupKeySequence, SWT.LEFT);
    gridData = new GridData();
    labelKeySequence.setLayoutData(gridData);
    labelKeySequence.setText(Util.translateString(RESOURCE_BUNDLE, "labelKeySequence")); //$NON-NLS-1$

    // The text widget into which the key strokes will be entered.
    textTriggerSequence = new Text(groupKeySequence, SWT.BORDER);
    // On MacOS X, this font will be changed by KeySequenceText
    textTriggerSequence.setFont(groupKeySequence.getFont());
    gridData = new GridData();
    gridData.horizontalSpan = 2;
    gridData.widthHint = 300;
    textTriggerSequence.setLayoutData(gridData);
    textTriggerSequence.addModifyListener(new ModifyListener() {
        public void modifyText(ModifyEvent e) {
            update();
        }
    });
    textTriggerSequence.addFocusListener(new FocusListener() {
        public void focusGained(FocusEvent e) {
            bindingService.setKeyFilterEnabled(false);
        }

        public void focusLost(FocusEvent e) {
            bindingService.setKeyFilterEnabled(true);
        }
    });
    textTriggerSequence.addDisposeListener(new DisposeListener() {
        public void widgetDisposed(DisposeEvent e) {
            if (!bindingService.isKeyFilterEnabled()) {
                bindingService.setKeyFilterEnabled(true);
            }
        }
    });

    // The manager for the key sequence text widget.
    textTriggerSequenceManager = new KeySequenceText(textTriggerSequence);
    textTriggerSequenceManager.setKeyStrokeLimit(4);

    // Button for adding trapped key strokes
    final Button buttonAddKey = new Button(groupKeySequence, SWT.LEFT | SWT.ARROW);
    buttonAddKey.setToolTipText(Util.translateString(RESOURCE_BUNDLE, "buttonAddKey.ToolTipText")); //$NON-NLS-1$
    gridData = new GridData();
    gridData.heightHint = comboCategory.getTextHeight();
    buttonAddKey.setLayoutData(gridData);

    // Arrow buttons aren't normally added to the tab list. Let's fix that.
    final Control[] tabStops = groupKeySequence.getTabList();
    final ArrayList newTabStops = new ArrayList();
    for (int i = 0; i < tabStops.length; i++) {
        Control tabStop = tabStops[i];
        newTabStops.add(tabStop);
        if (textTriggerSequence.equals(tabStop)) {
            newTabStops.add(buttonAddKey);
        }
    }
    final Control[] newTabStopArray = (Control[]) newTabStops.toArray(new Control[newTabStops.size()]);
    groupKeySequence.setTabList(newTabStopArray);

    // Construct the menu to attach to the above button.
    final Menu menuButtonAddKey = new Menu(buttonAddKey);
    final Iterator trappedKeyItr = KeySequenceText.TRAPPED_KEYS.iterator();
    while (trappedKeyItr.hasNext()) {
        final KeyStroke trappedKey = (KeyStroke) trappedKeyItr.next();
        final MenuItem menuItem = new MenuItem(menuButtonAddKey, SWT.PUSH);
        menuItem.setText(trappedKey.format());
        menuItem.addSelectionListener(new SelectionAdapter() {

            public void widgetSelected(SelectionEvent e) {
                textTriggerSequenceManager.insert(trappedKey);
                textTriggerSequence.setFocus();
                textTriggerSequence.setSelection(textTriggerSequence.getTextLimit());
            }
        });
    }
    buttonAddKey.addSelectionListener(new SelectionAdapter() {

        public void widgetSelected(SelectionEvent selectionEvent) {
            Point buttonLocation = buttonAddKey.getLocation();
            buttonLocation = groupKeySequence.toDisplay(buttonLocation.x, buttonLocation.y);
            Point buttonSize = buttonAddKey.getSize();
            menuButtonAddKey.setLocation(buttonLocation.x, buttonLocation.y + buttonSize.y);
            menuButtonAddKey.setVisible(true);
        }
    });

    labelBindingsForTriggerSequence = new Label(groupKeySequence, SWT.LEFT);
    gridData = new GridData(GridData.VERTICAL_ALIGN_BEGINNING);
    gridData.verticalAlignment = GridData.FILL_VERTICAL;
    labelBindingsForTriggerSequence.setLayoutData(gridData);
    labelBindingsForTriggerSequence
            .setText(Util.translateString(RESOURCE_BUNDLE, "labelAssignmentsForKeySequence")); //$NON-NLS-1$
    tableBindingsForTriggerSequence = new Table(groupKeySequence,
            SWT.BORDER | SWT.FULL_SELECTION | SWT.H_SCROLL | SWT.V_SCROLL);
    tableBindingsForTriggerSequence.setHeaderVisible(true);
    gridData = new GridData(GridData.FILL_BOTH);
    gridData.heightHint = 60;
    gridData.horizontalSpan = 3;
    gridData.widthHint = isMac ? 620 : 520;
    tableBindingsForTriggerSequence.setLayoutData(gridData);
    tableColumnDelta = new TableColumn(tableBindingsForTriggerSequence, SWT.NULL, 0);
    tableColumnDelta.setResizable(false);
    tableColumnDelta.setText(Util.ZERO_LENGTH_STRING);
    tableColumnDelta.setWidth(20);
    tableColumnContext = new TableColumn(tableBindingsForTriggerSequence, SWT.NULL, 1);
    tableColumnContext.setResizable(true);
    tableColumnContext.setText(Util.translateString(RESOURCE_BUNDLE, "tableColumnContext")); //$NON-NLS-1$
    tableColumnContext.pack();
    tableColumnContext.setWidth(200);
    final TableColumn tableColumnCommand = new TableColumn(tableBindingsForTriggerSequence, SWT.NULL, 2);
    tableColumnCommand.setResizable(true);
    tableColumnCommand.setText(Util.translateString(RESOURCE_BUNDLE, "tableColumnCommand")); //$NON-NLS-1$
    tableColumnCommand.pack();
    tableColumnCommand.setWidth(300);

    tableBindingsForTriggerSequence.addMouseListener(new MouseAdapter() {

        public void mouseDoubleClick(MouseEvent mouseEvent) {
            update();
        }
    });

    tableBindingsForTriggerSequence.addSelectionListener(new SelectionAdapter() {

        public void widgetSelected(SelectionEvent selectionEvent) {
            selectedTableBindingsForTriggerSequence();
        }
    });

    final Composite compositeContext = new Composite(composite, SWT.NULL);
    gridLayout = new GridLayout();
    gridLayout.numColumns = 3;
    compositeContext.setLayout(gridLayout);
    gridData = new GridData(GridData.FILL_HORIZONTAL);
    compositeContext.setLayoutData(gridData);
    final Label labelContext = new Label(compositeContext, SWT.LEFT);
    labelContext.setText(Util.translateString(RESOURCE_BUNDLE, "labelContext")); //$NON-NLS-1$
    comboContext = new Combo(compositeContext, SWT.READ_ONLY);
    gridData = new GridData();
    gridData.widthHint = 250;
    comboContext.setLayoutData(gridData);
    comboContext.setVisibleItemCount(ITEMS_TO_SHOW);

    comboContext.addSelectionListener(new SelectionAdapter() {
        public final void widgetSelected(final SelectionEvent e) {
            update();
        }
    });

    labelContextExtends = new Label(compositeContext, SWT.LEFT);
    gridData = new GridData(GridData.FILL_HORIZONTAL);
    labelContextExtends.setLayoutData(gridData);
    final Composite compositeButton = new Composite(composite, SWT.NULL);
    gridLayout = new GridLayout();
    gridLayout.marginHeight = 20;
    gridLayout.marginWidth = 0;
    gridLayout.numColumns = 3;
    compositeButton.setLayout(gridLayout);
    gridData = new GridData();
    compositeButton.setLayoutData(gridData);
    buttonAdd = new Button(compositeButton, SWT.CENTER | SWT.PUSH);
    gridData = new GridData();
    int widthHint = convertHorizontalDLUsToPixels(IDialogConstants.BUTTON_WIDTH);
    buttonAdd.setText(Util.translateString(RESOURCE_BUNDLE, "buttonAdd")); //$NON-NLS-1$
    gridData.widthHint = Math.max(widthHint, buttonAdd.computeSize(SWT.DEFAULT, SWT.DEFAULT, true).x) + 5;
    buttonAdd.setLayoutData(gridData);

    buttonAdd.addSelectionListener(new SelectionAdapter() {

        public void widgetSelected(SelectionEvent selectionEvent) {
            selectedButtonAdd();
        }
    });

    buttonRemove = new Button(compositeButton, SWT.CENTER | SWT.PUSH);
    gridData = new GridData();
    widthHint = convertHorizontalDLUsToPixels(IDialogConstants.BUTTON_WIDTH);
    buttonRemove.setText(Util.translateString(RESOURCE_BUNDLE, "buttonRemove")); //$NON-NLS-1$
    gridData.widthHint = Math.max(widthHint, buttonRemove.computeSize(SWT.DEFAULT, SWT.DEFAULT, true).x) + 5;
    buttonRemove.setLayoutData(gridData);

    buttonRemove.addSelectionListener(new SelectionAdapter() {

        public void widgetSelected(SelectionEvent selectionEvent) {
            selectedButtonRemove();
        }
    });

    buttonRestore = new Button(compositeButton, SWT.CENTER | SWT.PUSH);
    gridData = new GridData();
    widthHint = convertHorizontalDLUsToPixels(IDialogConstants.BUTTON_WIDTH);
    buttonRestore.setText(Util.translateString(RESOURCE_BUNDLE, "buttonRestore")); //$NON-NLS-1$
    gridData.widthHint = Math.max(widthHint, buttonRestore.computeSize(SWT.DEFAULT, SWT.DEFAULT, true).x) + 5;
    buttonRestore.setLayoutData(gridData);

    buttonRestore.addSelectionListener(new SelectionAdapter() {

        public void widgetSelected(SelectionEvent selectionEvent) {
            selectedButtonRestore();
        }
    });

    return composite;
}

From source file:org.eclipse.ui.internal.keys.NewKeysPreferencePage.java

License:Open Source License

private final void createDataControls(final Composite parent) {
    GridLayout layout;/*from   www.j av a  2  s  . com*/
    GridData gridData;

    // Creates the data area.
    final Composite dataArea = new Composite(parent, SWT.NONE);
    layout = new GridLayout(2, true);
    layout.marginWidth = 0;
    dataArea.setLayout(layout);
    gridData = new GridData();
    gridData.grabExcessHorizontalSpace = true;
    gridData.horizontalAlignment = SWT.FILL;
    dataArea.setLayoutData(gridData);

    // LEFT DATA AREA
    // Creates the left data area.
    final Composite leftDataArea = new Composite(dataArea, SWT.NONE);
    layout = new GridLayout(3, false);
    leftDataArea.setLayout(layout);
    gridData = new GridData();
    gridData.grabExcessHorizontalSpace = true;
    gridData.verticalAlignment = SWT.TOP;
    gridData.horizontalAlignment = SWT.FILL;
    leftDataArea.setLayoutData(gridData);

    // The command name label.
    final Label commandNameLabel = new Label(leftDataArea, SWT.NONE);
    commandNameLabel.setText(NewKeysPreferenceMessages.CommandNameLabel_Text);

    // The current command name.
    commandNameValueLabel = new Label(leftDataArea, SWT.NONE);
    gridData = new GridData();
    gridData.grabExcessHorizontalSpace = true;
    gridData.horizontalSpan = 2;
    gridData.horizontalAlignment = SWT.FILL;
    commandNameValueLabel.setLayoutData(gridData);

    final Label commandDescriptionlabel = new Label(leftDataArea, SWT.LEAD);
    commandDescriptionlabel.setText(NewKeysPreferenceMessages.CommandDescriptionLabel_Text);
    gridData = new GridData();
    gridData.verticalAlignment = SWT.BEGINNING;
    commandDescriptionlabel.setLayoutData(gridData);

    fDescriptionText = new Text(leftDataArea, SWT.MULTI | SWT.WRAP | SWT.BORDER | SWT.READ_ONLY);

    // The binding label.
    final Label bindingLabel = new Label(leftDataArea, SWT.NONE);
    bindingLabel.setText(NewKeysPreferenceMessages.BindingLabel_Text);

    // The key sequence entry widget.
    fBindingText = new Text(leftDataArea, SWT.BORDER);
    gridData = new GridData();
    gridData.grabExcessHorizontalSpace = true;
    gridData.horizontalAlignment = SWT.FILL;
    gridData.widthHint = 200;
    fBindingText.setLayoutData(gridData);

    fBindingText.addFocusListener(new FocusListener() {
        public void focusGained(FocusEvent e) {
            fBindingService.setKeyFilterEnabled(false);
        }

        public void focusLost(FocusEvent e) {
            fBindingService.setKeyFilterEnabled(true);
        }
    });
    fBindingText.addDisposeListener(new DisposeListener() {
        public void widgetDisposed(DisposeEvent e) {
            if (!fBindingService.isKeyFilterEnabled()) {
                fBindingService.setKeyFilterEnabled(true);
            }
        }
    });

    fKeySequenceText = new KeySequenceText(fBindingText);
    fKeySequenceText.setKeyStrokeLimit(4);
    fKeySequenceText.addPropertyChangeListener(new IPropertyChangeListener() {
        public final void propertyChange(final PropertyChangeEvent event) {
            if (!event.getOldValue().equals(event.getNewValue())) {
                final KeySequence keySequence = fKeySequenceText.getKeySequence();
                if (!keySequence.isComplete()) {
                    return;
                }

                BindingElement activeBinding = (BindingElement) keyController.getBindingModel()
                        .getSelectedElement();
                if (activeBinding != null) {
                    activeBinding.setTrigger(keySequence);
                }
                fBindingText.setSelection(fBindingText.getTextLimit());
            }
        }
    });

    // Button for adding trapped key strokes
    final Button addKeyButton = new Button(leftDataArea, SWT.LEFT | SWT.ARROW);
    addKeyButton.setToolTipText(NewKeysPreferenceMessages.AddKeyButton_ToolTipText);
    gridData = new GridData();
    gridData.heightHint = fSchemeCombo.getCombo().getTextHeight();
    addKeyButton.setLayoutData(gridData);

    // Arrow buttons aren't normally added to the tab list. Let's fix that.
    final Control[] tabStops = dataArea.getTabList();
    final ArrayList newTabStops = new ArrayList();
    for (int i = 0; i < tabStops.length; i++) {
        Control tabStop = tabStops[i];
        newTabStops.add(tabStop);
        if (fBindingText.equals(tabStop)) {
            newTabStops.add(addKeyButton);
        }
    }
    final Control[] newTabStopArray = (Control[]) newTabStops.toArray(new Control[newTabStops.size()]);
    dataArea.setTabList(newTabStopArray);

    // Construct the menu to attach to the above button.
    final Menu addKeyMenu = new Menu(addKeyButton);
    final Iterator trappedKeyItr = KeySequenceText.TRAPPED_KEYS.iterator();
    while (trappedKeyItr.hasNext()) {
        final KeyStroke trappedKey = (KeyStroke) trappedKeyItr.next();
        final MenuItem menuItem = new MenuItem(addKeyMenu, SWT.PUSH);
        menuItem.setText(trappedKey.format());
        menuItem.addSelectionListener(new SelectionAdapter() {

            public void widgetSelected(SelectionEvent e) {
                fKeySequenceText.insert(trappedKey);
                fBindingText.setFocus();
                fBindingText.setSelection(fBindingText.getTextLimit());
            }
        });
    }
    addKeyButton.addSelectionListener(new SelectionAdapter() {

        public void widgetSelected(SelectionEvent selectionEvent) {
            Point buttonLocation = addKeyButton.getLocation();
            buttonLocation = dataArea.toDisplay(buttonLocation.x, buttonLocation.y);
            Point buttonSize = addKeyButton.getSize();
            addKeyMenu.setLocation(buttonLocation.x, buttonLocation.y + buttonSize.y);
            addKeyMenu.setVisible(true);
        }
    });

    // The when label.
    final Label whenLabel = new Label(leftDataArea, SWT.NONE);
    whenLabel.setText(NewKeysPreferenceMessages.WhenLabel_Text);

    // The when combo.
    fWhenCombo = new ComboViewer(leftDataArea);
    gridData = new GridData();
    gridData.grabExcessHorizontalSpace = true;
    gridData.horizontalAlignment = SWT.FILL;
    gridData.horizontalSpan = 2;
    ViewerComparator comparator = new ViewerComparator();
    fWhenCombo.setComparator(comparator);
    fWhenCombo.getCombo().setVisibleItemCount(ITEMS_TO_SHOW);
    fWhenCombo.getCombo().setLayoutData(gridData);
    fWhenCombo.setContentProvider(new ModelContentProvider());
    fWhenCombo.setLabelProvider(new ListLabelProvider());
    fWhenCombo.addSelectionChangedListener(new ISelectionChangedListener() {
        public final void selectionChanged(final SelectionChangedEvent event) {
            ContextElement context = (ContextElement) ((IStructuredSelection) event.getSelection())
                    .getFirstElement();
            if (context != null) {
                keyController.getContextModel().setSelectedElement(context);
            }
        }
    });
    IPropertyChangeListener whenListener = new IPropertyChangeListener() {

        // Sets the combo selection when a new keybinding is selected?
        public void propertyChange(PropertyChangeEvent event) {
            if (event.getSource() == keyController.getContextModel()
                    && CommonModel.PROP_SELECTED_ELEMENT.equals(event.getProperty())) {
                Object newVal = event.getNewValue();
                StructuredSelection structuredSelection = newVal == null ? null
                        : new StructuredSelection(newVal);
                fWhenCombo.setSelection(structuredSelection, true);
            }
        }
    };
    keyController.addPropertyChangeListener(whenListener);

    // RIGHT DATA AREA
    // Creates the right data area.
    final Composite rightDataArea = new Composite(dataArea, SWT.NONE);
    layout = new GridLayout(1, false);
    rightDataArea.setLayout(layout);
    gridData = new GridData(SWT.FILL, SWT.FILL, true, true);
    rightDataArea.setLayoutData(gridData);

    new Label(rightDataArea, SWT.NONE); // filler

    // The description label.
    final Label descriptionLabel = new Label(rightDataArea, SWT.NONE);
    descriptionLabel.setText(NewKeysPreferenceMessages.ConflictsLabel_Text);
    gridData = new GridData();
    gridData.grabExcessHorizontalSpace = true;
    gridData.horizontalAlignment = SWT.FILL;
    descriptionLabel.setLayoutData(gridData);

    conflictViewer = new TableViewer(rightDataArea,
            SWT.SINGLE | SWT.V_SCROLL | SWT.BORDER | SWT.FULL_SELECTION);
    Table table = conflictViewer.getTable();
    table.setHeaderVisible(true);
    TableColumn bindingNameColumn = new TableColumn(table, SWT.LEAD);
    bindingNameColumn.setText(NewKeysPreferenceMessages.CommandNameColumn_Text);
    bindingNameColumn.setWidth(150);
    TableColumn bindingContextNameColumn = new TableColumn(table, SWT.LEAD);
    bindingContextNameColumn.setText(NewKeysPreferenceMessages.WhenColumn_Text);
    bindingContextNameColumn.setWidth(150);
    gridData = new GridData(SWT.FILL, SWT.FILL, true, true);
    //gridData.horizontalIndent = 10;
    table.setLayoutData(gridData);
    TableLayout tableLayout = new TableLayout();
    tableLayout.addColumnData(new ColumnWeightData(60));
    tableLayout.addColumnData(new ColumnWeightData(40));
    table.setLayout(tableLayout);
    conflictViewer.setContentProvider(new IStructuredContentProvider() {

        public Object[] getElements(Object inputElement) {
            if (inputElement instanceof Collection) {
                return ((Collection) inputElement).toArray();
            }
            return new Object[0];
        }

        public void dispose() {
        }

        public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
        }
    });
    conflictViewer.setLabelProvider(new BindingElementLabelProvider() {
        public String getColumnText(Object o, int index) {
            BindingElement element = (BindingElement) o;
            if (index == 0) {
                return element.getName();
            }
            return element.getContext().getName();
        }
    });
    conflictViewer.addSelectionChangedListener(new ISelectionChangedListener() {

        // When the conflict viewer's selection changes, update the
        // model's current selection
        public void selectionChanged(SelectionChangedEvent event) {
            ModelElement binding = (ModelElement) ((IStructuredSelection) event.getSelection())
                    .getFirstElement();
            BindingModel bindingModel = keyController.getBindingModel();
            if (binding != null && binding != bindingModel.getSelectedElement()) {
                StructuredSelection selection = new StructuredSelection(binding);

                bindingModel.setSelectedElement(binding);
                conflictViewer.setSelection(selection);

                boolean selectionVisible = false;
                TreeItem[] items = fFilteredTree.getViewer().getTree().getItems();
                for (int i = 0; i < items.length; i++) {
                    if (items[i].getData().equals(binding)) {
                        selectionVisible = true;
                        break;
                    }
                }

                if (!selectionVisible) {
                    fFilteredTree.getFilterControl().setText(""); //$NON-NLS-1$
                    fFilteredTree.getViewer().refresh();
                    bindingModel.setSelectedElement(binding);
                    conflictViewer.setSelection(selection);
                }
            }
        }
    });

    IPropertyChangeListener conflictsListener = new IPropertyChangeListener() {
        public void propertyChange(PropertyChangeEvent event) {
            if (event.getSource() == keyController.getConflictModel()
                    && CommonModel.PROP_SELECTED_ELEMENT.equals(event.getProperty())) {
                if (keyController.getConflictModel().getConflicts() != null) {
                    Object newVal = event.getNewValue();
                    StructuredSelection structuredSelection = newVal == null ? null
                            : new StructuredSelection(newVal);
                    conflictViewer.setSelection(structuredSelection, true);
                }
            } else if (ConflictModel.PROP_CONFLICTS.equals(event.getProperty())) {
                conflictViewer.setInput(event.getNewValue());
            } else if (ConflictModel.PROP_CONFLICTS_ADD.equals(event.getProperty())) {
                conflictViewer.add(event.getNewValue());
            } else if (ConflictModel.PROP_CONFLICTS_REMOVE.equals(event.getProperty())) {
                conflictViewer.remove(event.getNewValue());
            }
        }
    };
    keyController.addPropertyChangeListener(conflictsListener);

    IPropertyChangeListener dataUpdateListener = new IPropertyChangeListener() {

        public void propertyChange(PropertyChangeEvent event) {
            BindingElement bindingElement = null;
            boolean weCare = false;
            if (event.getSource() == keyController.getBindingModel()
                    && CommonModel.PROP_SELECTED_ELEMENT.equals(event.getProperty())) {
                bindingElement = (BindingElement) event.getNewValue();
                weCare = true;
            } else if (event.getSource() == keyController.getBindingModel().getSelectedElement()
                    && ModelElement.PROP_MODEL_OBJECT.equals(event.getProperty())) {
                bindingElement = (BindingElement) event.getSource();
                weCare = true;
            }
            if (bindingElement == null && weCare) {
                commandNameValueLabel.setText(""); //$NON-NLS-1$
                fDescriptionText.setText(""); //$NON-NLS-1$
                fBindingText.setText(""); //$NON-NLS-1$
            } else if (bindingElement != null) {
                commandNameValueLabel.setText(bindingElement.getName());
                String desc = bindingElement.getDescription();
                fDescriptionText.setText(desc == null ? "" : desc); //$NON-NLS-1$
                KeySequence trigger = (KeySequence) bindingElement.getTrigger();
                fKeySequenceText.setKeySequence(trigger);
            }
        }
    };
    keyController.addPropertyChangeListener(dataUpdateListener);

}

From source file:org.limy.eclipse.qalab.keybind.KeybindWindow.java

License:Open Source License

/**
 * @param comp//from  w  w w . ja v a2 s  .co  m
 * @param commandId 
 * @param commandBinding 
 * @param commandName
 * @param lastTarget
 * @return 
 * @throws NotDefinedException 
 */
private Control createCommandComp(Composite comp, String commandId, Control lastTarget)
        throws NotDefinedException {

    Binding[] bindings = bindingService.getBindings();

    Binding systemBinding = null;
    Collection<Binding> userBindings = new ArrayList<Binding>();
    for (Binding binding : bindings) {
        ParameterizedCommand command = binding.getParameterizedCommand();

        if (command != null && commandId.equals(command.getId())) {

            if (binding.getType() == Binding.SYSTEM) {
                systemBinding = binding;
            } else {
                userBindings.add(binding);
            }
        }
    }

    Label label = new Label(comp, SWT.NONE);
    label.setText(systemBinding.getParameterizedCommand().getCommand().getDescription());
    label.setLayoutData(FormDataCreater.controlDown(lastTarget, 6, 280));
    label.setFont(new Font(comp.getDisplay(), "Serif", 10, SWT.NORMAL));

    Text text = new Text(comp, SWT.BORDER);
    text.setLayoutData(FormDataCreater.controlDownWithWidth(lastTarget, 4, 288, 100));
    text.setData(systemBinding);

    text.addFocusListener(new FocusListener() {
        public void focusGained(FocusEvent e) {
            bindingService.setKeyFilterEnabled(false);
        }

        public void focusLost(FocusEvent e) {
            bindingService.setKeyFilterEnabled(true);
        }
    });

    KeySequenceText sequenceText = new KeySequenceText(text);
    if (!userBindings.isEmpty()) {
        sequenceText.setKeySequence((KeySequence) userBindings.iterator().next().getTriggerSequence());
    } else {
        sequenceText.setKeySequence((KeySequence) systemBinding.getTriggerSequence());
    }
    sequenceText.setKeyStrokeLimit(4);

    texts.add(text);
    sequenceTexts.add(sequenceText);
    return text;
}