package tk.eclipse.plugin.htmleditor.gefutils;
import org.eclipse.jface.dialogs.Dialog;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;
/**
* The property descriptor that edits the text by the textarea dialog.
*
* @author Naoki Takezoe
*/
public class TextAreaPropertyDescriptor extends
AbstractDialogPropertyDescriptor {
public TextAreaPropertyDescriptor(Object id, String displayName) {
super(id, displayName);
}
@Override
protected Object openDialogBox(Object obj, Control cellEditorWindow) {
String value = (String)obj;
TextAreaDialog dialog = new TextAreaDialog(cellEditorWindow.getShell(), value);
if(dialog.open()==TextAreaDialog.OK){
return dialog.getResult();
}
return null;
}
private class TextAreaDialog extends Dialog {
private Text text;
private String result;
private String initValue;
public TextAreaDialog(Shell parent, String initValue){
super(parent);
this.initValue = initValue;
setShellStyle(getShellStyle()|SWT.RESIZE);
}
@Override
protected Point getInitialSize() {
return new Point(350, 300);
}
@Override
protected Control createDialogArea(Composite parent) {
getShell().setText(getDisplayName());
Composite composite = new Composite(parent, SWT.NULL);
composite.setLayout(new GridLayout());
composite.setLayoutData(new GridData(GridData.FILL_BOTH));
text = new Text(composite, SWT.MULTI|SWT.BORDER|SWT.H_SCROLL|SWT.V_SCROLL);
text.setLayoutData(new GridData(GridData.FILL_BOTH));
text.setText(this.initValue);
return composite;
}
@Override
protected void okPressed() {
result = this.text.getText();
super.okPressed();
}
public String getResult(){
return this.result;
}
}
}