package org.goko.tools.serial.jssc.preferences.connection;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.widgets.Composite;
import org.goko.common.preferences.GkFieldEditorPreferencesPage;
import org.goko.common.preferences.fieldeditor.preference.ComboFieldEditor;
import org.goko.core.connection.serial.SerialParameter;
import org.goko.tools.serial.jssc.service.JsscParameter;
/**
* Serial connection preference page
* @author PsyKo
*
*/
public class SerialConnectionPreferencesPage extends GkFieldEditorPreferencesPage {
public SerialConnectionPreferencesPage() {
setDescription("Configure your connection settings");
setTitle("Serial");
setPreferenceStore(SerialConnectionPreference.getInstance());
}
/** (inheritDoc)
* @see org.goko.common.preferences.GkPreferencesPage#createPreferencePage(org.eclipse.swt.widgets.Composite)
*/
@Override
protected void createPreferencePage(Composite parent) {
ComboFieldEditor baudrateField = new ComboFieldEditor(parent, SWT.READ_ONLY);
((GridData) baudrateField.getControl().getLayoutData()).widthHint = 60;
baudrateField.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, true, false, 1, 1));
baudrateField.setLabelWidthInChar(10);
baudrateField.setPreferenceName(JsscParameter.BAUDRATE.toString());
baudrateField.setLabel("Baudrate");
initBaudrateChoices(baudrateField);
ComboFieldEditor databitsField = new ComboFieldEditor(parent, SWT.READ_ONLY);
((GridData) databitsField.getControl().getLayoutData()).widthHint = 60;
databitsField.setPreferenceName(JsscParameter.DATABITS.toString());
databitsField.setLabelWidthInChar(10);
databitsField.setLabel("Data bits");
initDataBitsChoices(databitsField);
ComboFieldEditor parityField = new ComboFieldEditor(parent, SWT.READ_ONLY);
((GridData) parityField.getControl().getLayoutData()).widthHint = 60;
parityField.setPreferenceName(JsscParameter.PARITY.toString());
parityField.setLabelWidthInChar(10);
parityField.setLabel("Parity");
parityField.setLayoutData(new GridData(SWT.LEFT, SWT.TOP, false, false, 1, 1));
initParityChoices(parityField);
ComboFieldEditor stopbitField = new ComboFieldEditor(parent, SWT.READ_ONLY);
((GridData) stopbitField.getControl().getLayoutData()).widthHint = 60;
stopbitField.setPreferenceName(JsscParameter.STOPBITS.toString());
stopbitField.setLabelWidthInChar(10);
stopbitField.setLabel("Stop bits");
initStopBitsChoices(stopbitField);
ComboFieldEditor flowControlFieldEditor = new ComboFieldEditor(parent, SWT.READ_ONLY);
((GridData) flowControlFieldEditor.getControl().getLayoutData()).widthHint = 60;
flowControlFieldEditor.setLabel("Flow control");
flowControlFieldEditor.setLabelWidthInChar(10);
flowControlFieldEditor.setPreferenceName(JsscParameter.FLOWCONTROL.toString());
initFlowControlChoices(flowControlFieldEditor);
addField(stopbitField);
addField(parityField);
addField(databitsField);
addField(baudrateField);
addField(flowControlFieldEditor);
}
private void initBaudrateChoices(ComboFieldEditor field){
String[][] baudrateItems = new String[][]{
{String.valueOf(SerialParameter.BAUDRATE_110) ,"5"},
{String.valueOf(SerialParameter.BAUDRATE_110) ,"110"},
{String.valueOf(SerialParameter.BAUDRATE_300) ,"300"},
{String.valueOf(SerialParameter.BAUDRATE_600) ,"600"},
{String.valueOf(SerialParameter.BAUDRATE_1200) ,"1200"},
{String.valueOf(SerialParameter.BAUDRATE_4800) ,"4800"},
{String.valueOf(SerialParameter.BAUDRATE_9600) ,"9600"},
{String.valueOf(SerialParameter.BAUDRATE_14400) ,"14400"},
{String.valueOf(SerialParameter.BAUDRATE_19200) ,"19200"},
{String.valueOf(SerialParameter.BAUDRATE_38400) ,"38400"},
{String.valueOf(SerialParameter.BAUDRATE_57600) ,"57600"},
{String.valueOf(SerialParameter.BAUDRATE_115200) ,"115200"},
{String.valueOf(SerialParameter.BAUDRATE_128000) ,"128000"},
{String.valueOf(SerialParameter.BAUDRATE_230400) ,"230400"},
{String.valueOf(SerialParameter.BAUDRATE_256000) ,"256000"}};
field.setEntry(baudrateItems);
}
private void initFlowControlChoices(ComboFieldEditor field){
String[][] baudrateItems = new String[][]{
{"Off", String.valueOf(SerialParameter.FLOWCONTROL_NONE)},
{"Xon/Xoff", String.valueOf(SerialParameter.FLOWCONTROL_XONXOFF)},
{"RTS/CTS", String.valueOf(SerialParameter.FLOWCONTROL_RTSCTS)}};
field.setEntry(baudrateItems);
}
private void initDataBitsChoices(ComboFieldEditor field){
String[][] databitsItems = new String[][]{
{"5", String.valueOf(SerialParameter.DATABITS_5)},
{"6", String.valueOf(SerialParameter.DATABITS_6)},
{"7", String.valueOf(SerialParameter.DATABITS_7)},
{"8", String.valueOf(SerialParameter.DATABITS_8)},
};
field.setEntry(databitsItems);
}
private void initParityChoices(ComboFieldEditor field){
String[][] parityItems = new String[][]{
{"None", String.valueOf(SerialParameter.PARITY_NONE)},
{"Even", String.valueOf(SerialParameter.PARITY_EVEN)},
{"Odd" , String.valueOf(SerialParameter.PARITY_ODD)}};
field.setEntry(parityItems);
}
private void initStopBitsChoices(ComboFieldEditor field){
String[][] stopBitItems = new String[][]{
{"1",String.valueOf(SerialParameter.STOPBITS_1)},
{"1.5",String.valueOf(SerialParameter.STOPBITS_1_5)},
{"2",String.valueOf(SerialParameter.STOPBITS_2)}};
field.setEntry(stopBitItems);
}
}