diff options
author | Pierre GAUTIER | 2017-09-14 06:44:26 +0000 |
---|---|---|
committer | vincent lorenzo | 2017-09-21 08:43:23 +0000 |
commit | 3d9fa51ba009bac2e5888768a6840a07b0698ede (patch) | |
tree | e96c2f3e61edf636dd6bfef3d0b4c36bfe76a0f2 /plugins/uml/properties | |
parent | bcc1383b24cfe7cc8fc427aba8dde06de6b43e09 (diff) | |
download | org.eclipse.papyrus-3d9fa51ba009bac2e5888768a6840a07b0698ede.tar.gz org.eclipse.papyrus-3d9fa51ba009bac2e5888768a6840a07b0698ede.tar.xz org.eclipse.papyrus-3d9fa51ba009bac2e5888768a6840a07b0698ede.zip |
Bug 521865 - [Property View][Profile] Truncated editors for datatype's attribute.
https://bugs.eclipse.org/bugs/show_bug.cgi?id=521865
add ScrolledComposite in EObjectContentsEditor
Change-Id: Id1bb3362f493dea1b0133c4a408792527ab74571
Signed-off-by: Pierre GAUTIER <pierre.gautier@cea.fr>
Signed-off-by: Vincent Lorenzo <vincent.lorenzo@cea.fr>
Diffstat (limited to 'plugins/uml/properties')
5 files changed, 100 insertions, 11 deletions
diff --git a/plugins/uml/properties/org.eclipse.papyrus.uml.properties/META-INF/MANIFEST.MF b/plugins/uml/properties/org.eclipse.papyrus.uml.properties/META-INF/MANIFEST.MF index b8c8e212fc7..cc7f38b971f 100644 --- a/plugins/uml/properties/org.eclipse.papyrus.uml.properties/META-INF/MANIFEST.MF +++ b/plugins/uml/properties/org.eclipse.papyrus.uml.properties/META-INF/MANIFEST.MF @@ -38,7 +38,7 @@ Require-Bundle: org.eclipse.papyrus.uml.profile;bundle-version="[3.0.0,4.0.0)";v org.eclipse.papyrus.infra.internationalization;bundle-version="[1.0.0,2.0.0)" Bundle-Vendor: %providerName Bundle-ActivationPolicy: lazy;exclude:="org.eclipse.papyrus.uml.properties.constraints" -Bundle-Version: 3.0.0.qualifier +Bundle-Version: 3.1.0.qualifier Bundle-Name: %pluginName Bundle-Localization: plugin Bundle-Activator: org.eclipse.papyrus.uml.properties.Activator diff --git a/plugins/uml/properties/org.eclipse.papyrus.uml.properties/pom.xml b/plugins/uml/properties/org.eclipse.papyrus.uml.properties/pom.xml index 0315d0071b1..7e68d88667f 100644 --- a/plugins/uml/properties/org.eclipse.papyrus.uml.properties/pom.xml +++ b/plugins/uml/properties/org.eclipse.papyrus.uml.properties/pom.xml @@ -8,6 +8,6 @@ <version>0.0.1-SNAPSHOT</version> </parent> <artifactId>org.eclipse.papyrus.uml.properties</artifactId> - <version>3.0.0-SNAPSHOT</version> + <version>3.1.0-SNAPSHOT</version> <packaging>eclipse-plugin</packaging> </project>
\ No newline at end of file diff --git a/plugins/uml/properties/org.eclipse.papyrus.uml.properties/src/org/eclipse/papyrus/uml/properties/messages/Messages.java b/plugins/uml/properties/org.eclipse.papyrus.uml.properties/src/org/eclipse/papyrus/uml/properties/messages/Messages.java index 4327e1cb391..342f2761d35 100644 --- a/plugins/uml/properties/org.eclipse.papyrus.uml.properties/src/org/eclipse/papyrus/uml/properties/messages/Messages.java +++ b/plugins/uml/properties/org.eclipse.papyrus.uml.properties/src/org/eclipse/papyrus/uml/properties/messages/Messages.java @@ -17,6 +17,16 @@ public class Messages extends NLS { private static final String BUNDLE_NAME = "org.eclipse.papyrus.uml.properties.messages.messages"; //$NON-NLS-1$ + /** + * @since 3.1 + */ + public static String EObjectContentsEditor_CreateElement; + + /** + * @since 3.1 + */ + public static String EObjectContentsEditor_UnsetValue; + public static String ExpressionLanguageFactory_EditLanguage; public static String ExpressionLanguageFactory_LanguageDuplicateError; diff --git a/plugins/uml/properties/org.eclipse.papyrus.uml.properties/src/org/eclipse/papyrus/uml/properties/messages/messages.properties b/plugins/uml/properties/org.eclipse.papyrus.uml.properties/src/org/eclipse/papyrus/uml/properties/messages/messages.properties index c6215cdcc08..8a7fe61e5d6 100644 --- a/plugins/uml/properties/org.eclipse.papyrus.uml.properties/src/org/eclipse/papyrus/uml/properties/messages/messages.properties +++ b/plugins/uml/properties/org.eclipse.papyrus.uml.properties/src/org/eclipse/papyrus/uml/properties/messages/messages.properties @@ -1,3 +1,5 @@ +EObjectContentsEditor_CreateElement=Create element +EObjectContentsEditor_UnsetValue=Unset value ExpressionEditor_BodyLabel=Body ProfileApplicationEditor_ApplyProfile=Apply profile ProfileApplicationEditor_ApplyProfilesDialogDescription=Choose profiles to apply diff --git a/plugins/uml/properties/org.eclipse.papyrus.uml.properties/src/org/eclipse/papyrus/uml/properties/widgets/EObjectContentsEditor.java b/plugins/uml/properties/org.eclipse.papyrus.uml.properties/src/org/eclipse/papyrus/uml/properties/widgets/EObjectContentsEditor.java index 8966fcd5ea0..3e4816e3024 100644 --- a/plugins/uml/properties/org.eclipse.papyrus.uml.properties/src/org/eclipse/papyrus/uml/properties/widgets/EObjectContentsEditor.java +++ b/plugins/uml/properties/org.eclipse.papyrus.uml.properties/src/org/eclipse/papyrus/uml/properties/widgets/EObjectContentsEditor.java @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2013 CEA LIST. + * Copyright (c) 2013, 2017 CEA LIST. * * * All rights reserved. This program and the accompanying materials @@ -9,6 +9,7 @@ * * Contributors: * Camille Letavernier (camille.letavernier@cea.fr) - Initial API and implementation + * Pierre GAUTIER (CEA LIST) - bug 521865 * *****************************************************************************/ package org.eclipse.papyrus.uml.properties.widgets; @@ -34,15 +35,20 @@ import org.eclipse.papyrus.infra.ui.emf.providers.EMFLabelProvider; import org.eclipse.papyrus.infra.ui.emf.utils.ProviderHelper; import org.eclipse.papyrus.uml.properties.Activator; import org.eclipse.papyrus.uml.properties.creation.UMLPropertyEditorFactory; +import org.eclipse.papyrus.uml.properties.messages.Messages; import org.eclipse.papyrus.uml.tools.providers.UMLContainerContentProvider; import org.eclipse.papyrus.uml.tools.providers.UMLContentProvider; import org.eclipse.papyrus.uml.tools.providers.UMLFilteredLabelProvider; import org.eclipse.papyrus.uml.tools.providers.UMLLabelProvider; import org.eclipse.swt.SWT; +import org.eclipse.swt.custom.ScrolledComposite; import org.eclipse.swt.events.DisposeEvent; import org.eclipse.swt.events.DisposeListener; +import org.eclipse.swt.events.MouseEvent; +import org.eclipse.swt.events.MouseWheelListener; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.events.SelectionListener; +import org.eclipse.swt.graphics.Point; import org.eclipse.swt.layout.FillLayout; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Button; @@ -75,6 +81,25 @@ public class EObjectContentsEditor extends Composite { protected Composite self; + /** + * the right scrollbar + */ + private final ScrolledComposite scrolled; + + /** + * listener to be be able to move the scrollbar with the mouse wheel + * + */ + private final MouseWheelListener mouseWheelListener = new MouseWheelListener() { + + @Override + public void mouseScrolled(final MouseEvent e) { + final Point or = EObjectContentsEditor.this.scrolled.getOrigin(); + or.y += -e.count * EObjectContentsEditor.this.scrolled.getVerticalBar().getIncrement(); + EObjectContentsEditor.this.scrolled.setOrigin(or); + } + }; + public EObjectContentsEditor(Composite parent, int style, EReference reference) { super(parent, style); @@ -82,7 +107,15 @@ public class EObjectContentsEditor extends Composite { self = new Group(this, SWT.NONE); - ((Group) self).setText(reference.getName() + ": " + reference.getEType().getName()); + final StringBuilder builder = new StringBuilder(); + if (null != reference) { + builder.append(reference.getName()); + builder.append(":"); //$NON-NLS-1$ + if (null != reference.getEType()) { + builder.append(reference.getEType().getName()); + } + } + ((Group) self).setText(builder.toString()); self.setLayout(new PropertiesLayout()); buttonsBar = new Composite(self, SWT.NONE); @@ -94,9 +127,20 @@ public class EObjectContentsEditor extends Composite { updateButtonsBar(); - contents = new Composite(self, SWT.NONE); + scrolled = new ScrolledComposite(self, SWT.V_SCROLL); + scrolled.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true)); + scrolled.setLayout(new PropertiesLayout()); + scrolled.setExpandHorizontal(true); + scrolled.setExpandVertical(true); + scrolled.setMinSize(250, 100); + + contents = new Composite(scrolled, SWT.NONE); contents.setLayout(new PropertiesLayout()); contents.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true)); + contents.setBackgroundMode(SWT.INHERIT_DEFAULT); + contents.setBackground(self.getBackground()); + + scrolled.setContent(contents); this.reference = reference; @@ -135,7 +179,7 @@ public class EObjectContentsEditor extends Composite { protected void updateContents() { EObject dataTypeInstance = (EObject) modelElementObservable.getValue(); - + unregisteredMouseWheelListener(scrolled); for (Control child : contents.getChildren()) { child.dispose(); } @@ -166,11 +210,44 @@ public class EObjectContentsEditor extends Composite { } } + scrolled.setMinSize(contents.computeSize(SWT.DEFAULT, SWT.DEFAULT)); + + registerMouseWheelListener(scrolled); updateButtonsBar(); layout(); } + /** + * Register the mouse wheel listener for the control and its children + * + * @param control + * a control + */ + private void registerMouseWheelListener(final Control control) { + control.addMouseWheelListener(this.mouseWheelListener); + if (control instanceof Composite) { + for (Control ctrl : ((Composite) control).getChildren()) { + registerMouseWheelListener(ctrl); + } + } + } + + /** + * Unregister the mouse wheel listener for the control and its children + * + * @param control + * a control + */ + private void unregisteredMouseWheelListener(final Control control) { + control.removeMouseWheelListener(this.mouseWheelListener); + if (control instanceof Composite) { + for (Control ctrl : ((Composite) control).getChildren()) { + unregisteredMouseWheelListener(ctrl); + } + } + } + @Override public void layout() { contents.layout(); @@ -181,8 +258,8 @@ public class EObjectContentsEditor extends Composite { protected void createAddButton() { addButton = new Button(buttonsBar, SWT.PUSH); - addButton.setImage(org.eclipse.papyrus.infra.widgets.Activator.getDefault().getImage("icons/Add_12x12.gif")); - addButton.setToolTipText("Create element"); + addButton.setImage(org.eclipse.papyrus.infra.widgets.Activator.getDefault().getImage("icons/Add_12x12.gif")); //$NON-NLS-1$ + addButton.setToolTipText(Messages.EObjectContentsEditor_CreateElement); addButton.addSelectionListener(new SelectionListener() { @@ -213,8 +290,8 @@ public class EObjectContentsEditor extends Composite { protected void createDeleteButton() { deleteButton = new Button(buttonsBar, SWT.PUSH); - deleteButton.setImage(org.eclipse.papyrus.infra.widgets.Activator.getDefault().getImage("icons/Delete_12x12.gif")); - deleteButton.setToolTipText("Unset value"); + deleteButton.setImage(org.eclipse.papyrus.infra.widgets.Activator.getDefault().getImage("icons/Delete_12x12.gif")); //$NON-NLS-1$ + deleteButton.setToolTipText(Messages.EObjectContentsEditor_UnsetValue); deleteButton.addSelectionListener(new SelectionListener() { @@ -245,7 +322,7 @@ public class EObjectContentsEditor extends Composite { ITreeContentProvider contentProvider = new UMLContainerContentProvider(dataTypeInstance, reference); - EMFGraphicalContentProvider provider = ProviderHelper.encapsulateProvider(contentProvider, dataTypeInstance.eResource().getResourceSet(), HistoryUtil.getHistoryID(dataTypeInstance, reference, "container")); + EMFGraphicalContentProvider provider = ProviderHelper.encapsulateProvider(contentProvider, dataTypeInstance.eResource().getResourceSet(), HistoryUtil.getHistoryID(dataTypeInstance, reference, "container")); //$NON-NLS-1$ factory.setContainerContentProvider(provider); factory.setReferenceContentProvider(new FeatureContentProvider(type)); |