package com.netifera.platform.ui.spaces.actions.options;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.KeyEvent;
import org.eclipse.swt.events.KeyListener;
import org.eclipse.swt.events.ModifyEvent;
import org.eclipse.swt.events.ModifyListener;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Text;
import org.eclipse.ui.forms.widgets.FormToolkit;
import com.netifera.platform.tools.options.StringOption;
public class StringOptionWidget extends OptionWidget {
private final Text text;
public StringOptionWidget(Composite parent, FormToolkit toolkit, StringOption option) {
super(parent, toolkit, option);
Composite area = toolkit.createComposite(parent);
area.setLayout(new GridLayout(2,false));
area.setToolTipText(option.getDescription());
Label label = toolkit.createLabel(area, option.getLabel());
label.setToolTipText(option.getDescription());
text = toolkit.createText(area, option.getValue(), SWT.BORDER);
GridData gd = new GridData(SWT.BEGINNING, SWT.FILL, true, false);
gd.widthHint = 200;
// TableWrapData td = new TableWrapData(TableWrapData.FILL_GRAB);
text.setLayoutData(gd);
text.setToolTipText(option.getDescription());
text.addModifyListener(new ModifyListener() {
public void modifyText(ModifyEvent e) {
modified();
}
});
text.addKeyListener(new KeyListener() {
public void keyPressed(KeyEvent e) {
}
public void keyReleased(KeyEvent e) {
modified();
if (e.character == SWT.CR && isValid())
accept();
}
});
if (option.isFixed())
text.setEnabled(false);
}
public StringOption getOption() {
return (StringOption) super.getOption();
}
public boolean isValid() {
return (getOption().allowsEmptyValue() || (text.getText().length() > 0)) && isValid(text.getText());
}
public boolean isValid(String value) {
return true;
}
protected String getValue() {
return text.getText();
}
public void setOptionValue() {
getOption().setValue(text.getText());
}
}