diff options
Diffstat (limited to 'plugins/infra/ui/org.eclipse.papyrus.infra.widgets/src/org/eclipse/papyrus/infra/widgets/editors/CompletionStyledTextMultipleReferenceEditor.java')
-rw-r--r-- | plugins/infra/ui/org.eclipse.papyrus.infra.widgets/src/org/eclipse/papyrus/infra/widgets/editors/CompletionStyledTextMultipleReferenceEditor.java | 128 |
1 files changed, 128 insertions, 0 deletions
diff --git a/plugins/infra/ui/org.eclipse.papyrus.infra.widgets/src/org/eclipse/papyrus/infra/widgets/editors/CompletionStyledTextMultipleReferenceEditor.java b/plugins/infra/ui/org.eclipse.papyrus.infra.widgets/src/org/eclipse/papyrus/infra/widgets/editors/CompletionStyledTextMultipleReferenceEditor.java new file mode 100644 index 00000000000..7103ed3b46e --- /dev/null +++ b/plugins/infra/ui/org.eclipse.papyrus.infra.widgets/src/org/eclipse/papyrus/infra/widgets/editors/CompletionStyledTextMultipleReferenceEditor.java @@ -0,0 +1,128 @@ +/***************************************************************************** + * Copyright (c) 2010 CEA LIST. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Camille Letavernier (CEA LIST) camille.letavernier@cea.fr - Initial API and implementation + *****************************************************************************/ +package org.eclipse.papyrus.infra.widgets.editors; + +import org.eclipse.core.databinding.observable.IChangeListener; +import org.eclipse.core.databinding.observable.list.IObservableList; +import org.eclipse.papyrus.infra.widgets.databinding.CompletionStyledTextMultiReferenceDialogObservableValue; +import org.eclipse.papyrus.infra.widgets.util.IPapyrusConverter; +import org.eclipse.papyrus.infra.widgets.util.ISetPapyrusConverter; +import org.eclipse.swt.SWT; +import org.eclipse.swt.layout.GridData; +import org.eclipse.swt.widgets.Composite; + +/** + * + * + * An editor for multivalued references, with a string editor in addition. This editor should be used when + * there is enough vertical space available. If the vertical space is limited, + * CompactMultipleReferenceEditor should be used instead. + * + * @author Vincent Lorenzo + * + */ +public class CompletionStyledTextMultipleReferenceEditor extends MultipleReferenceEditor implements ISetPapyrusConverter { + + /** + * the embedded string editor + */ + private CompletionStyledTextStringEditor editor; + + /** + * the converter to use + */ + private IPapyrusConverter converter; + + /** + * + * Constructor. + * + * @param parent + * @param style + * @param ordered + * @param unique + * @param label + */ + public CompletionStyledTextMultipleReferenceEditor(Composite parent, int style, boolean ordered, boolean unique, String label) { + super(parent, style, ordered, unique, label); + addStyledTextSection(parent, style); + } + + /** + * + * Constructor. + * + * @param parent + * @param style + * @param label + */ + public CompletionStyledTextMultipleReferenceEditor(Composite parent, int style, String label) { + super(parent, style, label); + addStyledTextSection(parent, style); + } + + /** + * + * Constructor. + * + * @param parent + * @param style + */ + public CompletionStyledTextMultipleReferenceEditor(Composite parent, int style) { + super(parent, style); + addStyledTextSection(parent, style); + } + + /** + * + * @param parent + * @param style + */ + protected void addStyledTextSection(Composite parent, int style) { + editor = new CompletionStyledTextStringEditor(this, style | SWT.BORDER); + GridData treeData = new GridData(SWT.FILL, SWT.FILL, true, true); + treeData.horizontalSpan = 2; + editor.setLayoutData(treeData); + } + + + /** + * @see org.eclipse.papyrus.infra.widgets.editors.MultipleValueEditor#setModelObservable(org.eclipse.core.databinding.observable.list.IObservableList) + * + * @param modelProperty + */ + @Override + public void setModelObservable(IObservableList modelProperty) { + super.setModelObservable(modelProperty); + CompletionStyledTextMultiReferenceDialogObservableValue styledTextObservable = new CompletionStyledTextMultiReferenceDialogObservableValue(editor, editor.getText(), modelProperty, SWT.FocusOut); + styledTextObservable.setPapyrusConverter(converter); + styledTextObservable.addChangeListener(new IChangeListener() { + + @Override + public void handleChange(org.eclipse.core.databinding.observable.ChangeEvent event) { + commit(); + } + }); + editor.setValue(modelProperty); + } + + /** + * @see org.eclipse.papyrus.infra.widgets.util.ISetPapyrusConverter#setPapyrusConverter(org.eclipse.papyrus.infra.widgets.util.IPapyrusConverter) + * + * @param converter + */ + @Override + public void setPapyrusConverter(IPapyrusConverter converter) { + this.converter = converter; + this.editor.setPapyrusConverter(converter); + } +} |