/*
* Copyright (C) 2006-2016 DLR, Germany
*
* All rights reserved
*
* http://www.rcenvironment.de/
*/
package de.rcenvironment.components.outputwriter.gui;
import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.StyledText;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.events.SelectionListener;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Combo;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Text;
/**
* Provides GUI elements needed by the OutputWriterEditDialog as well as the OutputLocationEditDialog.
*
* @author Brigitte Boden
*
*/
public final class OutputWriterGuiUtils {
private OutputWriterGuiUtils(){}
/**
* Create a combo for selecting placeholders.
*
* @param parent The parent composite
* @param placeholders Array of possible placeholders
* @return combo to select placeholders
*/
public static Combo createPlaceholderCombo(Composite parent, String[] placeholders) {
final Combo placeholderCombo = new Combo(parent, SWT.READ_ONLY);
placeholderCombo.setLayoutData(new GridData(GridData.FILL_HORIZONTAL | GridData.GRAB_HORIZONTAL));
placeholderCombo.setItems(placeholders);
placeholderCombo.select(0);
return placeholderCombo;
}
/**
* Create an "insert" button for a given placeholder combo.
*
* @param parent The parent composite
* @param placeholderCombo The placeholder selection combo
* @param textfield The textfield into which the placeholders are inserted
* @return button to insert placeholders
*/
public static Button createPlaceholderInsertButton(Composite parent, final Combo placeholderCombo, final Text textfield) {
Button insertButton = new Button(parent, SWT.PUSH);
insertButton.setText(Messages.insertButtonText);
insertButton.addSelectionListener(new SelectionListener() {
@Override
public void widgetSelected(SelectionEvent arg0) {
int positionbuffer = textfield.getCaretPosition();
String word = placeholderCombo.getText();
textfield.insert(word);
if (textfield.getText().length() >= (positionbuffer + word.length())) {
textfield.setSelection(positionbuffer + word.length());
}
textfield.forceFocus();
}
@Override
public void widgetDefaultSelected(SelectionEvent arg0) {
}
});
return insertButton;
}
/**
* Create an "insert" button for a given placeholder combo.
* Additional method for StyledText fields.
*
* @param parent The parent composite
* @param placeholderCombo The placeholder selection combo
* @param textfield The textfield into which the placeholders are inserted
* @return button to insert placeholders
*/
public static Button createPlaceholderInsertButton(Composite parent, final Combo placeholderCombo, final StyledText textfield) {
Button insertButton = new Button(parent, SWT.PUSH);
insertButton.setText(Messages.insertButtonText);
insertButton.addSelectionListener(new SelectionListener() {
@Override
public void widgetSelected(SelectionEvent arg0) {
int positionbuffer = textfield.getCaretOffset();
String word = placeholderCombo.getText();
textfield.insert(word);
if (textfield.getText().length() >= (positionbuffer + word.length())) {
textfield.setSelection(positionbuffer + word.length());
}
textfield.forceFocus();
}
@Override
public void widgetDefaultSelected(SelectionEvent arg0) {
}
});
return insertButton;
}
}