use of org.eclipse.sapphire.ui.forms.PropertyEditorPart in project liferay-ide by liferay.
the class ScriptPropertyEditorRenderer method createContents.
@Override
protected void createContents(Composite parent) {
PropertyEditorPart part = part();
Element element = part.getLocalModelElement();
ValueProperty property = part.property().nearest(ValueProperty.class);
CreateMainCompositeDelegate createMainCompositeDelegate = new CreateMainCompositeDelegate(part) {
@Override
public boolean canScaleVertically() {
return true;
}
};
Composite codeEditorParent = createMainComposite(parent, createMainCompositeDelegate);
// context.adapt( codeEditorParent );
int codeEditorParentColumns = 1;
SapphireToolBarActionPresentation toolBarActionsPresentation = new SapphireToolBarActionPresentation(getActionPresentationManager());
boolean actionsToolBarNeeded = toolBarActionsPresentation.hasActions();
if (actionsToolBarNeeded) {
codeEditorParentColumns++;
}
codeEditorParent.setLayout(glayout(codeEditorParentColumns, 0, 0, 0, 0));
Composite nestedComposite = new Composite(codeEditorParent, SWT.NONE);
nestedComposite.setLayoutData(gdfill());
// nestedComposite.setLayout( glspacing( glayout( 2, 0, 0 ), 2 ) );
addControl(nestedComposite);
PropertyEditorAssistDecorator decorator = createDecorator(nestedComposite);
decorator.control().setLayoutData(gdvalign(gd(), SWT.TOP));
decorator.addEditorControl(nestedComposite);
ScriptPropertyEditorInput editorInput = new ScriptPropertyEditorInput(element, property);
List<Control> relatedControls = new ArrayList<>();
try {
IEditorSite editorSite = part().adapt(IEditorSite.class);
_editorPart = createEditorPart(editorInput, editorSite);
_editorPart.createPartControl(nestedComposite);
Control editorControl = _editorPart.getAdapter(Control.class);
// need to find the first child of nestedComposite to relayout
// editor control
Composite editorControlParent = null;
Control control = editorControl;
while ((editorControlParent == null) && (control != null) && !nestedComposite.equals(control.getParent())) {
control = control.getParent();
}
nestedComposite.setLayout(glspacing(glayout(2, 0, 0), 2));
control.setLayoutData(gdfill());
decorator.addEditorControl(editorControl, true);
editorControl.setData(RELATED_CONTROLS, relatedControls);
} catch (Exception e) {
KaleoUI.logError(e);
}
if (actionsToolBarNeeded) {
ToolBar toolbar = new ToolBar(codeEditorParent, SWT.FLAT | SWT.HORIZONTAL);
toolbar.setLayoutData(gdvfill());
toolBarActionsPresentation.setToolBar(toolbar);
toolBarActionsPresentation.render();
addControl(toolbar);
decorator.addEditorControl(toolbar);
relatedControls.add(toolbar);
}
List<Class<?>> listenerClasses = part.getRenderingHint(PropertyEditorDef.HINT_LISTENERS, Collections.<Class<?>>emptyList());
List<ValuePropertyEditorListener> listeners = new ArrayList<>();
if (ListUtil.isNotEmpty(listenerClasses)) {
for (Class<?> cl : listenerClasses) {
try {
ValuePropertyEditorListener listener = (ValuePropertyEditorListener) cl.newInstance();
listener.initialize(this);
listeners.add(listener);
} catch (Exception e) {
KaleoUI.logError(e);
}
}
}
ITextEditor textEditor = null;
if (_editorPart instanceof ITextEditor) {
textEditor = (ITextEditor) _editorPart;
} else {
ITextEditor textEdit = _editorPart.getAdapter(ITextEditor.class);
textEditor = textEdit;
}
addControl((Control) textEditor.getAdapter(Control.class));
IDocumentListener documentListener = new IDocumentListener() {
public void documentAboutToBeChanged(DocumentEvent event) {
}
public void documentChanged(DocumentEvent event) {
Value<Object> elementProperty = element.property(property);
elementProperty.write(event.getDocument().get());
if (ListUtil.isNotEmpty(listeners)) {
for (ValuePropertyEditorListener listener : listeners) {
try {
listener.handleValueChanged();
} catch (Exception e) {
KaleoUI.logError(e);
}
}
}
}
};
IDocumentProvider documentProvider = textEditor.getDocumentProvider();
IDocument document = documentProvider.getDocument(_editorPart.getEditorInput());
document.addDocumentListener(documentListener);
}
use of org.eclipse.sapphire.ui.forms.PropertyEditorPart in project liferay-ide by liferay.
the class PossibleValuesRadioPropertyEditorPresentation method createContents.
@Override
protected void createContents(final Composite parent) {
final PropertyEditorPart part = part();
final boolean showLabel = part.label() != null;
final int leftMargin = part.getMarginLeft();
PropertyEditorAssistDecorator decorator = null;
final Composite composite = createMainComposite(parent, new CreateMainCompositeDelegate(part) {
@Override
public boolean getShowLabel() {
return false;
}
@Override
public boolean getSpanBothColumns() {
return true;
}
});
composite.setLayout(glspacing(glayout(2, 0, 0), 2, 5));
decorator = createDecorator(composite);
decorator.addEditorControl(composite);
if (showLabel) {
decorator.control().setLayoutData(gdvalign(gd(), SWT.CENTER));
final Label label = new Label(composite, SWT.WRAP);
label.setLayoutData(gd());
final Runnable updateLabelOp = new Runnable() {
public void run() {
label.setText(part.label(CapitalizationType.FIRST_WORD_ONLY, true));
}
};
final org.eclipse.sapphire.Listener listener = new org.eclipse.sapphire.Listener() {
@Override
public void handle(final org.eclipse.sapphire.Event event) {
if (event instanceof LabelChangedEvent) {
updateLabelOp.run();
PossibleValuesRadioPropertyEditorPresentation.this.layout();
}
}
};
part.attach(listener);
updateLabelOp.run();
label.addDisposeListener(new DisposeListener() {
public void widgetDisposed(final DisposeEvent event) {
part.detach(listener);
}
});
decorator.addEditorControl(label);
} else {
decorator.control().setLayoutData(gdvindent(gdvalign(gd(), SWT.TOP), 4));
}
_control = new RadioButtonsGroup(composite, true);
if (showLabel) {
_control.setLayoutData(gdhindent(gdhspan(gdhfill(), 2), leftMargin + 20));
} else {
_control.setLayoutData(gdhfill());
}
binding = new PossibleValuesRadioButtonsGroupBinding<>(this, (RadioButtonsGroup) _control);
_control.setData(DATA_BINDING, binding);
decorator.addEditorControl(_control, true);
addControl(_control);
}
Aggregations