package org.xmind.ui.internal.editor;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Listener;
import org.eclipse.swt.widgets.Text;
import org.xmind.ui.texteditor.MEmbeddedEditor;
import org.xmind.ui.viewers.MButton;
public class AuthorInfoEditor extends MEmbeddedEditor implements Listener {
private Text input;
public AuthorInfoEditor(Composite parent) {
super(parent, MButton.NO_ARROWS);
}
@Override
protected void createEditor(Composite parent) {
Composite composite = new Composite(parent, SWT.NONE);
composite.setBackground(parent.getBackground());
composite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
GridLayout gridLayout = new GridLayout();
gridLayout.marginWidth = 2;
gridLayout.marginHeight = 2;
gridLayout.verticalSpacing = 0;
gridLayout.horizontalSpacing = 3;
composite.setLayout(gridLayout);
createInput(composite);
}
private void createInput(Composite parent) {
Composite composite = new Composite(parent, SWT.NONE);
composite.setBackground(parent.getBackground());
composite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
GridLayout gridLayout = new GridLayout();
gridLayout.marginWidth = 0;
gridLayout.marginHeight = 0;
gridLayout.verticalSpacing = 0;
gridLayout.horizontalSpacing = 2;
composite.setLayout(gridLayout);
input = new Text(composite, SWT.SINGLE | SWT.BORDER);
input.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, true));
input.addListener(SWT.Traverse, this);
input.addListener(SWT.DefaultSelection, this);
input.addListener(SWT.FocusOut, this);
}
public Text getInput() {
return input;
}
public void setInput(Text input) {
this.input = input;
}
@Override
protected void setEditorFocus() {
input.setFocus();
input.setSelection(input.getText().length(), input.getText().length());
}
public void handleEvent(Event event) {
if (event.type == SWT.Traverse) {
if (event.detail == SWT.TRAVERSE_ESCAPE) {
cancelEditing();
}
} else if (event.type == SWT.DefaultSelection) {
endEditing();
} else if (event.type == SWT.FocusOut) {
endEditingWhenFocusOut();
}
}
}