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 = "carbon".equals(SWT.getPlatform()) ? 620 : 520; //$NON-NLS-1$
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();
}
});