diff options
author | Mickael ADAM | 2016-11-17 13:03:43 +0000 |
---|---|---|
committer | Gerrit Code Review @ Eclipse.org | 2016-11-30 13:47:52 +0000 |
commit | a3ea7ef9891a5d83d0de788df4bafcfcfb50b453 (patch) | |
tree | ba6c0877b799748a0f3120e096273571462b4370 | |
parent | e96ff0214a5cdea079ffb209880589c35e9077cf (diff) | |
download | org.eclipse.papyrus-a3ea7ef9891a5d83d0de788df4bafcfcfb50b453.tar.gz org.eclipse.papyrus-a3ea7ef9891a5d83d0de788df4bafcfcfb50b453.tar.xz org.eclipse.papyrus-a3ea7ef9891a5d83d0de788df4bafcfcfb50b453.zip |
Bug 507654 - [Palette Customization] Exported Element type model are
wrong
- Fix issue
Plus:
- correct selection dialog of palette configuration layers
- for some use of tree selector dialog
- Add constraint to flat tabulation:
- Don't display tab in selector dialog when the contentProvider
is flat
https://bugs.eclipse.org/bugs/show_bug.cgi?id=507654
Change-Id: If547f0f8101d56dacc1b2dc488f71a2d8550e792
Signed-off-by: Mickael ADAM <mickael.adam@ALL4TEC.net>
14 files changed, 266 insertions, 518 deletions
diff --git a/plugins/customization/org.eclipse.papyrus.customization.palette/src/org/eclipse/papyrus/customization/palette/dialog/AbstractPaletteConfigurationWizard.java b/plugins/customization/org.eclipse.papyrus.customization.palette/src/org/eclipse/papyrus/customization/palette/dialog/AbstractPaletteConfigurationWizard.java index c6b92702601..5d302806620 100644 --- a/plugins/customization/org.eclipse.papyrus.customization.palette/src/org/eclipse/papyrus/customization/palette/dialog/AbstractPaletteConfigurationWizard.java +++ b/plugins/customization/org.eclipse.papyrus.customization.palette/src/org/eclipse/papyrus/customization/palette/dialog/AbstractPaletteConfigurationWizard.java @@ -8,6 +8,7 @@ * * Contributors: * Mickael ADAM (ALL4TEC) mickael.adam@all4tec.net - Initial API and Implementation + * Mickael ADAM (ALL4TEC) mickael.adam@all4tec.net - Bug 507654 Change load order and add EcoreUtil.resolveAll(resource) to avoid absolute references *****************************************************************************/ package org.eclipse.papyrus.customization.palette.dialog; @@ -23,6 +24,7 @@ import org.eclipse.emf.common.util.URI; import org.eclipse.emf.ecore.provider.EcoreItemProviderAdapterFactory; import org.eclipse.emf.ecore.resource.Resource; import org.eclipse.emf.ecore.resource.ResourceSet; +import org.eclipse.emf.ecore.util.EcoreUtil; import org.eclipse.emf.edit.command.AddCommand; import org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain; import org.eclipse.emf.edit.provider.ComposedAdapterFactory; @@ -313,28 +315,29 @@ public abstract class AbstractPaletteConfigurationWizard extends Wizard { } // Create resource - elementTypeUIResource = editingDomain.getResourceSet().createResource(elementTypeUIURI); elementTypeSemResource = editingDomain.getResourceSet().createResource(elementTypeSemURI); + elementTypeUIResource = editingDomain.getResourceSet().createResource(elementTypeUIURI); if (!PaletteUtils.notErrorOnFile(elementTypeUIFile) && !PaletteUtils.notErrorOnFile(elementTypeSemFile)) { - ElementTypeSetConfiguration emptyElementTypeModelUI = getEmptyElementTypeModel(elementTypeUIResource.getURI().lastSegment().replace(STR_DOT + PaletteConstants.ELEMENTTYPE_EXTENSION, ""));//$NON-NLS-1$ ElementTypeSetConfiguration emptyElementTypeModelSem = getEmptyElementTypeModel(elementTypeSemResource.getURI().lastSegment().replace(STR_DOT + PaletteConstants.ELEMENTTYPE_EXTENSION, ""));//$NON-NLS-1$ + ElementTypeSetConfiguration emptyElementTypeModelUI = getEmptyElementTypeModel(elementTypeUIResource.getURI().lastSegment().replace(STR_DOT + PaletteConstants.ELEMENTTYPE_EXTENSION, ""));//$NON-NLS-1$ // Add it to the resource CompoundCommand compoundCommand = new CompoundCommand(); - compoundCommand.append(new AddCommand(editingDomain, elementTypeUIResource.getContents(), emptyElementTypeModelUI)); compoundCommand.append(new AddCommand(editingDomain, elementTypeSemResource.getContents(), emptyElementTypeModelSem)); + compoundCommand.append(new AddCommand(editingDomain, elementTypeUIResource.getContents(), emptyElementTypeModelUI)); editingDomain.getCommandStack().execute(compoundCommand); } if (null != elementTypeUIResource || null != elementTypeSemResource) { try { - elementTypeUIResource.load(Collections.emptyMap()); elementTypeSemResource.load(Collections.emptyMap()); - - elementTypeUIResource.getResourceSet().getLoadOptions().put(PaletteRessourcesConstants.ELEMENTTYPE_UI_RESSOURCE_IDENTIFIER, elementTypeUIResource); + EcoreUtil.resolveAll(elementTypeSemResource); + elementTypeUIResource.load(Collections.emptyMap()); + EcoreUtil.resolveAll(elementTypeUIResource); elementTypeSemResource.getResourceSet().getLoadOptions().put(PaletteRessourcesConstants.ELEMENTTYPE_SEMENTIC_RESSOURCE_IDENTIFIER, elementTypeSemResource); + elementTypeUIResource.getResourceSet().getLoadOptions().put(PaletteRessourcesConstants.ELEMENTTYPE_UI_RESSOURCE_IDENTIFIER, elementTypeUIResource); } catch (IOException e) { Activator.log.error(e); } @@ -421,6 +424,7 @@ public abstract class AbstractPaletteConfigurationWizard extends Wizard { try { paletteResource.load(Collections.emptyMap()); paletteResource.getResourceSet().getLoadOptions().put(PaletteRessourcesConstants.PALETTE_RESSOURCE_IDENTIFIER, paletteResource); + EcoreUtil.resolveAll(paletteResource); } catch (IOException e) { Activator.log.error(e); } diff --git a/plugins/customization/org.eclipse.papyrus.customization.palette/src/org/eclipse/papyrus/customization/palette/dialog/ExportPaletteConfigurationWizard.java b/plugins/customization/org.eclipse.papyrus.customization.palette/src/org/eclipse/papyrus/customization/palette/dialog/ExportPaletteConfigurationWizard.java index 85dce028af4..6e89b2fe30d 100644 --- a/plugins/customization/org.eclipse.papyrus.customization.palette/src/org/eclipse/papyrus/customization/palette/dialog/ExportPaletteConfigurationWizard.java +++ b/plugins/customization/org.eclipse.papyrus.customization.palette/src/org/eclipse/papyrus/customization/palette/dialog/ExportPaletteConfigurationWizard.java @@ -8,7 +8,7 @@ * * Contributors: * Mickael ADAM (ALL4TEC) mickael.adam@all4tec.net - Initial API and Implementation - * + * Mickael ADAM (ALL4TEC) mickael.adam@all4tec.net - Bug 507654 Change the save order *****************************************************************************/ package org.eclipse.papyrus.customization.palette.dialog; @@ -77,34 +77,33 @@ public class ExportPaletteConfigurationWizard extends AbstractPaletteConfigurati clearStringBuilder(); stringBuilder.append(selectedPath); + stringBuilder.append(PaletteConstants.ELEMENTTYPE_SEMENTIC_IDENTIFIER_POSTFIX); stringBuilder.append(STR_DOT); - stringBuilder.append(PaletteConstants.PALETTECONFIGURATION_EXTENSION); - // Set new path - paletteResource.setURI(URI.createFileURI(stringBuilder.toString())); + stringBuilder.append(PaletteConstants.ELEMENTTYPE_EXTENSION); + elementTypeSemResource.setURI(URI.createFileURI(stringBuilder.toString())); clearStringBuilder(); stringBuilder.append(selectedPath); stringBuilder.append(PaletteConstants.ELEMENTTYPE_UI_IDENTIFIER_POSTFIX); stringBuilder.append(STR_DOT); stringBuilder.append(PaletteConstants.ELEMENTTYPE_EXTENSION); - elementTypeUIResource.setURI(URI.createFileURI(stringBuilder.toString())); clearStringBuilder(); stringBuilder.append(selectedPath); - stringBuilder.append(PaletteConstants.ELEMENTTYPE_SEMENTIC_IDENTIFIER_POSTFIX); stringBuilder.append(STR_DOT); - stringBuilder.append(PaletteConstants.ELEMENTTYPE_EXTENSION); - elementTypeSemResource.setURI(URI.createFileURI(stringBuilder.toString())); + stringBuilder.append(PaletteConstants.PALETTECONFIGURATION_EXTENSION); + // Set new path + paletteResource.setURI(URI.createFileURI(stringBuilder.toString())); // Save try { - paletteResource.save(PaletteUtils.saveOptions); // Checks if model are not void and are useful if (!((ElementTypeSetConfiguration) elementTypeUIResource.getContents().get(0)).getElementTypeConfigurations().isEmpty()) { - elementTypeUIResource.save(PaletteUtils.saveOptions); elementTypeSemResource.save(PaletteUtils.saveOptions); + elementTypeUIResource.save(PaletteUtils.saveOptions); } + paletteResource.save(PaletteUtils.saveOptions); } catch (IOException e) { Activator.log.error(e); } diff --git a/plugins/infra/emf/org.eclipse.papyrus.infra.emf.types.ui.properties/src/org/eclipse/papyrus/infra/emf/types/ui/properties/providers/ViewContentProvider.java b/plugins/infra/emf/org.eclipse.papyrus.infra.emf.types.ui.properties/src/org/eclipse/papyrus/infra/emf/types/ui/properties/providers/ViewContentProvider.java index e8edbae6b29..37dee81d76f 100644 --- a/plugins/infra/emf/org.eclipse.papyrus.infra.emf.types.ui.properties/src/org/eclipse/papyrus/infra/emf/types/ui/properties/providers/ViewContentProvider.java +++ b/plugins/infra/emf/org.eclipse.papyrus.infra.emf.types.ui.properties/src/org/eclipse/papyrus/infra/emf/types/ui/properties/providers/ViewContentProvider.java @@ -19,12 +19,12 @@ import org.eclipse.jface.viewers.ITreeContentProvider; import org.eclipse.papyrus.infra.properties.contexts.Context; import org.eclipse.papyrus.infra.properties.contexts.View; import org.eclipse.papyrus.infra.properties.ui.runtime.PropertiesRuntime; -import org.eclipse.papyrus.infra.widgets.providers.IStaticContentProvider; +import org.eclipse.papyrus.infra.widgets.providers.FilteredContentProvider; /** * A {@link ITreeContentProvider} for {@link View}. */ -public class ViewContentProvider implements ITreeContentProvider, IStaticContentProvider { +public class ViewContentProvider extends FilteredContentProvider { /** * {@inheritDoc} @@ -80,4 +80,15 @@ public class ViewContentProvider implements ITreeContentProvider, IStaticContent return features.toArray(); } + /** + * @see org.eclipse.papyrus.infra.widgets.providers.EncapsulatedContentProvider#isValidValue(java.lang.Object) + * + * @param element + * @return + */ + @Override + public boolean isValidValue(final Object element) { + return element instanceof View; + } + }
\ No newline at end of file diff --git a/plugins/infra/emf/org.eclipse.papyrus.infra.emf.types.ui.properties/src/org/eclipse/papyrus/infra/emf/types/ui/properties/widgets/FeatureNameValueEditor.java b/plugins/infra/emf/org.eclipse.papyrus.infra.emf.types.ui.properties/src/org/eclipse/papyrus/infra/emf/types/ui/properties/widgets/FeatureNameValueEditor.java index 30583fec8f5..67a490345c6 100644 --- a/plugins/infra/emf/org.eclipse.papyrus.infra.emf.types.ui.properties/src/org/eclipse/papyrus/infra/emf/types/ui/properties/widgets/FeatureNameValueEditor.java +++ b/plugins/infra/emf/org.eclipse.papyrus.infra.emf.types.ui.properties/src/org/eclipse/papyrus/infra/emf/types/ui/properties/widgets/FeatureNameValueEditor.java @@ -22,14 +22,14 @@ import org.eclipse.emf.ecore.EStructuralFeature; import org.eclipse.jface.viewers.DelegatingStyledCellLabelProvider; import org.eclipse.jface.viewers.DelegatingStyledCellLabelProvider.IStyledLabelProvider; import org.eclipse.jface.viewers.ILabelProvider; -import org.eclipse.jface.viewers.IStructuredContentProvider; import org.eclipse.jface.viewers.StyledString; import org.eclipse.jface.window.Window; import org.eclipse.papyrus.infra.emf.types.ui.properties.messages.Messages; import org.eclipse.papyrus.infra.ui.emf.providers.EMFLabelProvider; import org.eclipse.papyrus.infra.widgets.Activator; -import org.eclipse.papyrus.infra.widgets.editors.ElementsExplorerDialog; import org.eclipse.papyrus.infra.widgets.editors.StringEditor; +import org.eclipse.papyrus.infra.widgets.editors.TreeSelectorDialog; +import org.eclipse.papyrus.infra.widgets.providers.FilteredContentProvider; import org.eclipse.swt.SWT; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; @@ -45,7 +45,7 @@ public class FeatureNameValueEditor extends StringEditor { /** * Content provider for the feature viewer. */ - protected class FeatureContentProvider implements IStructuredContentProvider { + protected class FeatureContentProvider extends FilteredContentProvider { /** current edited Eclass */ protected EClass currentEClass; @@ -75,6 +75,17 @@ public class FeatureNameValueEditor extends StringEditor { return features.toArray(); } + /** + * {@inheritDoc} + * + * @see org.eclipse.papyrus.infra.widgets.providers.EncapsulatedContentProvider#isFlat() + */ + @Override + public boolean isFlat() { + return true; + } + + } /** @@ -178,7 +189,7 @@ public class FeatureNameValueEditor extends StringEditor { * Handles action when user press the Manage bundle button in the combo area */ protected void handleManageBrowseButtonPressed() { - ElementsExplorerDialog dialog = new ElementsExplorerDialog(getParent().getShell()); + TreeSelectorDialog dialog = new TreeSelectorDialog(getParent().getShell()); dialog.setContentProvider(new FeatureContentProvider()); dialog.setLabelProvider(new FeatureStyledLabelProvider()); diff --git a/plugins/infra/emf/org.eclipse.papyrus.infra.emf.types.ui.properties/src/org/eclipse/papyrus/infra/emf/types/ui/properties/widgets/ViewToDisplayValueEditor.java b/plugins/infra/emf/org.eclipse.papyrus.infra.emf.types.ui.properties/src/org/eclipse/papyrus/infra/emf/types/ui/properties/widgets/ViewToDisplayValueEditor.java index bd617aa201e..7a1d6227638 100644 --- a/plugins/infra/emf/org.eclipse.papyrus.infra.emf.types.ui.properties/src/org/eclipse/papyrus/infra/emf/types/ui/properties/widgets/ViewToDisplayValueEditor.java +++ b/plugins/infra/emf/org.eclipse.papyrus.infra.emf.types.ui.properties/src/org/eclipse/papyrus/infra/emf/types/ui/properties/widgets/ViewToDisplayValueEditor.java @@ -18,8 +18,8 @@ import org.eclipse.papyrus.infra.emf.types.ui.properties.providers.ViewContentPr import org.eclipse.papyrus.infra.emf.types.ui.properties.providers.ViewLabelProvider; import org.eclipse.papyrus.infra.properties.contexts.View; import org.eclipse.papyrus.infra.widgets.Activator; -import org.eclipse.papyrus.infra.widgets.editors.ElementsExplorerDialog; import org.eclipse.papyrus.infra.widgets.editors.ReferenceDialog; +import org.eclipse.papyrus.infra.widgets.editors.TreeSelectorDialog; import org.eclipse.swt.SWT; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; @@ -120,12 +120,11 @@ public class ViewToDisplayValueEditor extends ReferenceDialog { * Handles action when user press the Manage bundle button in the combo area */ protected void handleManageBrowseButtonPressed() { - ElementsExplorerDialog dialog = new ElementsExplorerDialog(getParent().getShell()); + TreeSelectorDialog dialog = new TreeSelectorDialog(getParent().getShell()); dialog.setContentProvider(new ViewContentProvider()); dialog.setLabelProvider(new ViewLabelProvider()); - // Set the return type. - dialog.setReturnTypeClass(View.class); + dialog.setTitle(Messages.ViewToDisplayValueEditor_dialogTitle); dialog.setMessage(Messages.ViewToDisplayValueEditor_dialogMessage); diff --git a/plugins/infra/ui/org.eclipse.papyrus.infra.widgets/src/org/eclipse/papyrus/infra/widgets/editors/ElementsExplorerDialog.java b/plugins/infra/ui/org.eclipse.papyrus.infra.widgets/src/org/eclipse/papyrus/infra/widgets/editors/ElementsExplorerDialog.java deleted file mode 100644 index 92d56d82e9d..00000000000 --- a/plugins/infra/ui/org.eclipse.papyrus.infra.widgets/src/org/eclipse/papyrus/infra/widgets/editors/ElementsExplorerDialog.java +++ /dev/null @@ -1,436 +0,0 @@ -/***************************************************************************** - * Copyright (c) 2016 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: - * Mickael ADAM (ALL4TEC) mickael.adam@all4tec.net - Initial API and Implementation - *****************************************************************************/ -package org.eclipse.papyrus.infra.widgets.editors; - -import java.util.Arrays; - -import org.eclipse.core.runtime.Assert; -import org.eclipse.core.runtime.IStatus; -import org.eclipse.core.runtime.Status; -import org.eclipse.emf.ecore.resource.Resource; -import org.eclipse.emf.ecore.resource.ResourceSet; -import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl; -import org.eclipse.jface.viewers.DoubleClickEvent; -import org.eclipse.jface.viewers.IBaseLabelProvider; -import org.eclipse.jface.viewers.IDoubleClickListener; -import org.eclipse.jface.viewers.ISelectionChangedListener; -import org.eclipse.jface.viewers.IStructuredContentProvider; -import org.eclipse.jface.viewers.ITreeContentProvider; -import org.eclipse.jface.viewers.SelectionChangedEvent; -import org.eclipse.jface.viewers.TreeViewer; -import org.eclipse.jface.viewers.Viewer; -import org.eclipse.papyrus.infra.widgets.Activator; -import org.eclipse.papyrus.infra.widgets.providers.EncapsulatedContentProvider; -import org.eclipse.papyrus.infra.widgets.providers.PatternViewerFilter; -import org.eclipse.swt.SWT; -import org.eclipse.swt.custom.StyledText; -import org.eclipse.swt.events.KeyAdapter; -import org.eclipse.swt.events.KeyEvent; -import org.eclipse.swt.events.ModifyEvent; -import org.eclipse.swt.events.ModifyListener; -import org.eclipse.swt.events.MouseAdapter; -import org.eclipse.swt.events.MouseEvent; -import org.eclipse.swt.graphics.Image; -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.Label; -import org.eclipse.swt.widgets.Shell; -import org.eclipse.swt.widgets.Tree; -import org.eclipse.ui.dialogs.SelectionStatusDialog; - -/** - * Selection dialog for icons in bundles. - */ -// TODO implement multiselection with multi return -public class ElementsExplorerDialog extends SelectionStatusDialog { - - - /** indicates if several icons can be selected at the same time */ - protected final boolean allowMultiple; - - /** initial value */ - protected String initialValue; - - /** The resource set. */ - protected ResourceSet resourceSet = new ResourceSetImpl(); - - /** The tree viewer. */ - protected TreeViewer elementsTreeViewer; - - /** The tree viewer filter. */ - protected PatternViewerFilterEx viewerFilter = new PatternViewerFilterEx(); - - /** The information text. */ - private StyledText informationText; - - /** The default profile icon path. */ - private static final String ICONS_EXPAND_ALL = "/icons/expandAll.png";//$NON-NLS-1$ - - /** The default profile icon path. */ - private static final String ICONS_COLLAPSE_ALL = "/icons/collapseAll.png";//$NON-NLS-1$ - - /** the content provider. */ - private IStructuredContentProvider contentProvider; - - /** The label provider. */ - private IBaseLabelProvider labelProvider; - - /** The input. */ - private Object input; - - /** the return class type. */ - private Class<?> returnClass; - - public ElementsExplorerDialog(final Shell parentShell, final boolean allowMultiple, final String initialQualifyName) { - super(parentShell); - this.allowMultiple = allowMultiple; - this.initialValue = initialQualifyName; - } - - public ElementsExplorerDialog(final Shell parentShell, final String initialValue) { - this(parentShell, false, initialValue); - } - - public ElementsExplorerDialog(final Shell parentShell) { - this(parentShell, false, "");//$NON-NLS-1$ - } - - /** - * {@inheritDoc} - * Unloads resources. - * - * @see org.eclipse.jface.dialogs.Dialog#close() - */ - @Override - public boolean close() { - for (Resource resource : resourceSet.getResources()) { - if (resource.isLoaded()) { - resource.unload(); - } - } - return super.close(); - } - - /** - * Return the selected {@link Stereotype}. - * {@inheritDoc} - */ - @Override - protected void computeResult() { - Object selectedElements = getSelectedElements(); - if (null != selectedElements) { - setResult(Arrays.asList(selectedElements)); - } - } - - /** - * {@inheritDoc} - */ - @Override - protected Control createDialogArea(final Composite parent) { - Composite composite = (Composite) super.createDialogArea(parent); - initializeDialogUnits(composite); - - // creates the message area, as defined in the super class - createMessageArea(composite); - createFilterText(composite); - createExpandCollapseButtons(composite); - createFilteredList(composite); - createInformationText(composite); - - selectInitialValue(); - refreshOkButton(); - return composite; - } - - /** - * Create buttons to collapse and expand treeViewer. - */ - protected void createExpandCollapseButtons(final Composite composite) { - if (contentProvider instanceof ITreeContentProvider) { - Composite container = new Composite(composite, SWT.NONE); - GridLayout layout = new GridLayout(2, true); - layout.horizontalSpacing = 2; - layout.marginBottom = -5; - layout.marginBottom = -5; - container.setLayout(layout); - - Label buttonExpand = new Label(container, SWT.NONE); - Image imageExpand = Activator.getDefault().getImage(ICONS_EXPAND_ALL); - buttonExpand.setImage(imageExpand); - buttonExpand.addMouseListener(new MouseAdapter() { - /** - * {@iniriteDoc] - * - * @see org.eclipse.swt.events.MouseAdapter#mouseUp(org.eclipse.swt.events.MouseEvent) - */ - @Override - public void mouseUp(MouseEvent event) { - elementsTreeViewer.expandAll(); - } - }); - - Label buttonCollapse = new Label(container, SWT.NONE); - Image imageCollapse = Activator.getDefault().getImage(ICONS_COLLAPSE_ALL); - buttonCollapse.setImage(imageCollapse); - buttonCollapse.addMouseListener(new MouseAdapter() { - /** - * {@iniriteDoc] - * - * @see org.eclipse.swt.events.MouseAdapter#mouseUp(org.eclipse.swt.events.MouseEvent) - */ - @Override - public void mouseUp(MouseEvent event) { - elementsTreeViewer.collapseAll(); - } - }); - } - } - - /** - * Selected the initial value in treeViewer. - */ - protected void selectInitialValue() { - // //Select initialValue Stereotype - if (!initialValue.isEmpty()) { - ITreeContentProvider contentProvider = (ITreeContentProvider) elementsTreeViewer.getContentProvider(); - Object[] roots = contentProvider.getElements(null); - // TODO select initial value - // for (Object root : roots) { - // Object[] profiles = contentProvider.getChildren(root); - // for (Object profile : profiles) { - // Object[] stereotypes = contentProvider.getChildren(profile); - // for (Object stereotype : stereotypes) { - // // if (stereotype instanceof Stereotype && initialValue.equals(((Stereotype) stereotype).getQualifiedName())) { - // // elementsTreeViewer.expandToLevel(profile, 1); - // // elementsTreeViewer.setSelection(new StructuredSelection(stereotype), true); - // // break; - // // } - // - // } - // } - // } - } - } - - /** - * Create information text field. - */ - protected void createInformationText(final Composite composite) { - informationText = new StyledText(composite, SWT.BORDER | SWT.MULTI | SWT.READ_ONLY | SWT.H_SCROLL); - informationText.setLayoutData(new GridData(SWT.FILL, SWT.WRAP, true, false)); - informationText.setAlwaysShowScrollBars(false); - } - - /** - * Creates a filtered list. - * - * @param parent - * the parent composite. - * @return returns the filtered list widget. - */ - protected TreeViewer createFilteredList(final Composite parent) { - - Tree tree = new Tree(parent, SWT.BORDER | SWT.V_SCROLL | SWT.H_SCROLL); - final GridLayout filterLayout = new GridLayout(); - filterLayout.marginHeight = 0; - filterLayout.marginWidth = 0; - tree.setLayout(filterLayout); - { - GridData gridData = new GridData(SWT.FILL, SWT.FILL, true, true); - tree.setLayoutData(gridData); - } - - TreeViewer treeViewer = new TreeViewer(tree); - treeViewer.setContentProvider(new EncapsulatedContentProvider(contentProvider)); - treeViewer.setLabelProvider(labelProvider); - - treeViewer.setFilters(viewerFilter); - - treeViewer.setInput(null != input ? input : new Object()); - - // Selection change listener to refresh button and information - treeViewer.addSelectionChangedListener(new ISelectionChangedListener() { - - @Override - public void selectionChanged(final SelectionChangedEvent event) { - refreshOkButton(); - refreshInformationText(); - } - }); - - // Double click listener to validate with double click - treeViewer.addDoubleClickListener(new IDoubleClickListener() { - - @Override - public void doubleClick(final DoubleClickEvent event) { - if (getOkButton().isEnabled()) { - okPressed(); - } - } - - }); - - treeViewer.refresh(); - elementsTreeViewer = treeViewer; - - return treeViewer; - } - - /** - * Pattern viewer filter extension used to filter elements from stereotype tree viewer with the text field. - * Extended to filter only applicable {@link Stereotype} from source {@link Element}. - */ - private class PatternViewerFilterEx extends PatternViewerFilter { - /** - * Only set it visible if we can load the profile. - * - * @see org.eclipse.papyrus.infra.widgets.providers.PatternViewerFilter#isVisible(org.eclipse.jface.viewers.Viewer, java.lang.Object, java.lang.Object) - */ - @Override - public boolean isVisible(final Viewer viewer, final Object parentElement, final Object element) { - - boolean visible = super.isVisible(viewer, parentElement, element); - visible &= ElementsExplorerDialog.this.isVisible(element); - return visible; - } - - /** - * Override to pass method from protected to public. - * - * @see org.eclipse.papyrus.infra.widgets.providers.AbstractTreeFilter#clearCache() - */ - public void clearCache() { - super.clearCache(); - } - } - - /** - * Creates an area where a filter can be entered. - * - * @param parent - * the parent composite where to create the filter text - * @return the created text area - */ - protected void createFilterText(final Composite parent) { - // Create the filter composite - final StringWithClearEditor filterText = new StringWithClearEditor(parent, SWT.BORDER); - - filterText.setValue("");//$NON-NLS-1$ - - filterText.getText().addModifyListener(new ModifyListener() { - - @Override - public void modifyText(final ModifyEvent e) { - String value = filterText.getValue(); - viewerFilter.setPattern(value); - elementsTreeViewer.refresh(); - elementsTreeViewer.collapseAll(); - // If some text in filter expands to the stereotype level else to the profile level - elementsTreeViewer.expandToLevel(value.isEmpty() ? 2 : 3); - } - }); - - // Key listener to focus in the treviewer when presser arrow down key - filterText.getText().addKeyListener(new KeyAdapter() { - - /** - * {@inheritDoc} - */ - @Override - public void keyPressed(final KeyEvent e) { - if (e.keyCode == SWT.ARROW_DOWN) { - elementsTreeViewer.getControl().setFocus(); - } - } - }); - } - - /** - * Returns the currently selected element. - * To be called within or after open(). - * - * @return returns the currently selected element. - */ - protected Object getSelectedElements() { - Assert.isNotNull(elementsTreeViewer); - return elementsTreeViewer.getStructuredSelection().getFirstElement(); - } - - /** - * Refresh the Ok button according to the selection. - */ - protected void refreshOkButton() { - Object selectedElements = getSelectedElements(); - - if (null != selectedElements && (null == returnClass || returnClass.isInstance(selectedElements))) { - updateStatus(new Status(IStatus.OK, Activator.PLUGIN_ID, ""));//$NON-NLS-1$ - } else { - updateStatus(new Status(IStatus.ERROR, Activator.PLUGIN_ID, ""));//$NON-NLS-1$ - } - } - - /** - * Refresh the Information text according to the selection. To be implemented by client. - */ - protected void refreshInformationText() { - // To be implemented by client. - } - - - /** - * Return true if element have to be visible. It can be used to force element to be visible even if the filter dosen't not match with them. - */ - protected boolean isVisible(final Object element) { - return true; - } - - /** - * Set the content provider of the treeviewer. - */ - public void setContentProvider(final IStructuredContentProvider contentProvider) { - this.contentProvider = contentProvider; - if (null != elementsTreeViewer) { - elementsTreeViewer.setContentProvider(new EncapsulatedContentProvider(contentProvider)); - } - } - - /** - * Set the label provider of the treeviewer. - */ - public void setLabelProvider(final IBaseLabelProvider labelProvider) { - this.labelProvider = labelProvider; - if (null != elementsTreeViewer) { - elementsTreeViewer.setLabelProvider(labelProvider); - } - } - - /** - * Set the input. - */ - public void setInput(final Object input) { - this.input = input; - if (null != elementsTreeViewer) { - elementsTreeViewer.setInput(input); - } - } - - /** - * Sets the return type Class that will be return. - */ - public void setReturnTypeClass(final Class<?> returnClass) { - this.returnClass = returnClass; - } - -} diff --git a/plugins/infra/ui/org.eclipse.papyrus.infra.widgets/src/org/eclipse/papyrus/infra/widgets/editors/TreeSelectorDialog.java b/plugins/infra/ui/org.eclipse.papyrus.infra.widgets/src/org/eclipse/papyrus/infra/widgets/editors/TreeSelectorDialog.java index e6bdf573aa8..2fc31bfe4d7 100644 --- a/plugins/infra/ui/org.eclipse.papyrus.infra.widgets/src/org/eclipse/papyrus/infra/widgets/editors/TreeSelectorDialog.java +++ b/plugins/infra/ui/org.eclipse.papyrus.infra.widgets/src/org/eclipse/papyrus/infra/widgets/editors/TreeSelectorDialog.java @@ -219,10 +219,6 @@ public class TreeSelectorDialog extends SelectionDialog implements ITreeSelector */ public TreeSelectorDialog(final Shell parentShell) { super(parentShell); - tabIds.add(defaultTabId); - tabNames.put(defaultTabId, Messages.TreeSelectorDialog_defaultTabLabel); - Image treeIcon = org.eclipse.papyrus.infra.widgets.Activator.getDefault().getImage(Activator.PLUGIN_ID, ICONS_TREE_VIEW); - tabIcons.put(defaultTabId, treeIcon); } /** @@ -231,26 +227,33 @@ public class TreeSelectorDialog extends SelectionDialog implements ITreeSelector protected void initializeTabulationInfo() { SelectorDialogTabReader instance = SelectorDialogTabReader.getInstance(); + // Add default tab + tabIds.add(defaultTabId); + tabNames.put(defaultTabId, Messages.TreeSelectorDialog_defaultTabLabel); + Image treeIcon = org.eclipse.papyrus.infra.widgets.Activator.getDefault().getImage(Activator.PLUGIN_ID, ICONS_TREE_VIEW); + tabIcons.put(defaultTabId, treeIcon); + List<String> ids = instance.getIds(); for (String id : ids) { + + ILabelProvider tabLabelProvider = instance.getLabelProviders().get(id); + labelProviders.put(id, tabLabelProvider); + if (tabLabelProvider instanceof IDependableLabelProvider) { + ((IDependableLabelProvider) tabLabelProvider).setLabelProvider(labelProviders.get(defaultTabId)); + } + + ITreeContentProvider tabContentProvider = instance.getContentProviders().get(id); + contentProviders.put(id, tabContentProvider); + if (tabContentProvider instanceof IDependableContentProvider) { + ((IDependableContentProvider) tabContentProvider).setContentProvider(contentProviders.get(defaultTabId)); + } + Constraint constraint = instance.getConstraints().get(id); if (!tabIds.contains(id) && (null == constraint || constraint.match(Collections.singleton(id)))) { tabIds.addAll(ids); tabNames.put(id, instance.getTabNames().get(id)); tabIcons.put(id, instance.getTabIcons().get(id)); descriptions.put(id, instance.getDescriptions().get(id)); - - ILabelProvider tabLabelProvider = instance.getLabelProviders().get(id); - labelProviders.put(id, tabLabelProvider); - if (tabLabelProvider instanceof IDependableLabelProvider) { - ((IDependableLabelProvider) tabLabelProvider).setLabelProvider(labelProviders.get(defaultTabId)); - } - - ITreeContentProvider tabContentProvider = instance.getContentProviders().get(id); - contentProviders.put(id, tabContentProvider); - if (tabContentProvider instanceof IDependableContentProvider) { - ((IDependableContentProvider) tabContentProvider).setContentProvider(contentProviders.get(defaultTabId)); - } } } @@ -457,13 +460,20 @@ public class TreeSelectorDialog extends SelectionDialog implements ITreeSelector GridLayoutFactory.swtDefaults().applyTo(tabComposite); } + // Message label(common for all tabs) + if (null != getMessage() && !getMessage().isEmpty()) { + Label messageLabel = new Label(tabComposite, SWT.WRAP); + messageLabel.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false)); + messageLabel.setText(getMessage()); + } // Description Label - if (null != descriptions.get(tabId)) { + if (null != descriptions.get(tabId) && !descriptions.get(tabId).isEmpty()) { Label descriptionLabel = new Label(tabComposite, SWT.WRAP); descriptionLabel.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false)); descriptionLabel.setText(tabDescription); } + // create tree viewer ExtendedTreeViewer tabTreeViewer = new ExtendedTreeViewer(tabComposite, SWT.BORDER); GridDataFactory.fillDefaults().grab(true, true).hint(300, 300).applyTo(tabTreeViewer.getTree()); @@ -656,10 +666,12 @@ public class TreeSelectorDialog extends SelectionDialog implements ITreeSelector * The input. */ private void doSetInput(final String TabId) { - if (null == input) { - treeViewers.get(TabId).setInput("");//$NON-NLS-1$ - } else { - treeViewers.get(TabId).setInput(input); + if (null != treeViewers.get(TabId)) { + if (null == input) { + treeViewers.get(TabId).setInput("");//$NON-NLS-1$ + } else { + treeViewers.get(TabId).setInput(input); + } } } diff --git a/plugins/infra/ui/org.eclipse.papyrus.infra.widgets/src/org/eclipse/papyrus/infra/widgets/providers/FilteredContentProvider.java b/plugins/infra/ui/org.eclipse.papyrus.infra.widgets/src/org/eclipse/papyrus/infra/widgets/providers/FilteredContentProvider.java index d86d51e8254..b67a5bb31f0 100644 --- a/plugins/infra/ui/org.eclipse.papyrus.infra.widgets/src/org/eclipse/papyrus/infra/widgets/providers/FilteredContentProvider.java +++ b/plugins/infra/ui/org.eclipse.papyrus.infra.widgets/src/org/eclipse/papyrus/infra/widgets/providers/FilteredContentProvider.java @@ -130,7 +130,9 @@ public class FilteredContentProvider extends EncapsulatedContentProvider { @Override public void createViewerToolbar(final Composite parent) { // Create case sensitive checkbox - createExpandCollapseButtons(parent); + if (!isFlat()) { + createExpandCollapseButtons(parent); + } } /** @@ -138,7 +140,6 @@ public class FilteredContentProvider extends EncapsulatedContentProvider { */ protected void createExpandCollapseButtons(final Composite parent) { - ToolBar Toolbar = new ToolBar(parent, SWT.NONE); buttonExpand = new ToolItem(Toolbar, SWT.NONE); buttonExpand.setImage(Activator.getDefault().getImage(ICONS_EXPAND_ALL)); diff --git a/plugins/infra/ui/org.eclipse.papyrus.infra.widgets/src/org/eclipse/papyrus/infra/widgets/providers/FlatFilteredContentProvider.java b/plugins/infra/ui/org.eclipse.papyrus.infra.widgets/src/org/eclipse/papyrus/infra/widgets/providers/FlatFilteredContentProvider.java index 0b943186ac6..c41dbda329e 100644 --- a/plugins/infra/ui/org.eclipse.papyrus.infra.widgets/src/org/eclipse/papyrus/infra/widgets/providers/FlatFilteredContentProvider.java +++ b/plugins/infra/ui/org.eclipse.papyrus.infra.widgets/src/org/eclipse/papyrus/infra/widgets/providers/FlatFilteredContentProvider.java @@ -182,7 +182,7 @@ public class FlatFilteredContentProvider protected Object[] getAllChildren(final Object parentElement, final Set<Object> visitedElements) { Set<Object> list = new HashSet<Object>(); Object[] children = provider.getChildren(parentElement); - if (0 < children.length) { + if (null != children && 0 < children.length) { for (int i = 0; i < children.length; i++) { boolean visited = false; diff --git a/plugins/uml/org.eclipse.papyrus.uml.types.ui.properties/src/org/eclipse/papyrus/uml/types/ui/properties/widgets/FeatureToSetNameValueEditor.java b/plugins/uml/org.eclipse.papyrus.uml.types.ui.properties/src/org/eclipse/papyrus/uml/types/ui/properties/widgets/FeatureToSetNameValueEditor.java index 3ec94bff7b8..b241e3993b5 100644 --- a/plugins/uml/org.eclipse.papyrus.uml.types.ui.properties/src/org/eclipse/papyrus/uml/types/ui/properties/widgets/FeatureToSetNameValueEditor.java +++ b/plugins/uml/org.eclipse.papyrus.uml.types.ui.properties/src/org/eclipse/papyrus/uml/types/ui/properties/widgets/FeatureToSetNameValueEditor.java @@ -24,13 +24,13 @@ import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter; import org.eclipse.jface.viewers.DelegatingStyledCellLabelProvider; import org.eclipse.jface.viewers.DelegatingStyledCellLabelProvider.IStyledLabelProvider; import org.eclipse.jface.viewers.ILabelProvider; -import org.eclipse.jface.viewers.IStructuredContentProvider; import org.eclipse.jface.viewers.StyledString; import org.eclipse.jface.window.Window; import org.eclipse.papyrus.infra.ui.emf.providers.EMFLabelProvider; import org.eclipse.papyrus.infra.widgets.Activator; -import org.eclipse.papyrus.infra.widgets.editors.ElementsExplorerDialog; import org.eclipse.papyrus.infra.widgets.editors.StringEditor; +import org.eclipse.papyrus.infra.widgets.editors.TreeSelectorDialog; +import org.eclipse.papyrus.infra.widgets.providers.FilteredContentProvider; import org.eclipse.papyrus.uml.diagram.common.parser.PropertyLabelParser; import org.eclipse.papyrus.uml.types.ui.properties.messages.Messages; import org.eclipse.swt.SWT; @@ -50,7 +50,7 @@ public class FeatureToSetNameValueEditor extends StringEditor { /** * Content provider for the feature viewer. */ - protected class StereotypeAttributesContentProvider implements IStructuredContentProvider { + protected class StereotypeAttributesContentProvider extends FilteredContentProvider { /** current edited EClass */ protected EClass currentEClass; @@ -72,6 +72,16 @@ public class FeatureToSetNameValueEditor extends StringEditor { return attributes.toArray(); } + /** + * {@inheritDoc} + * + * @see org.eclipse.papyrus.infra.widgets.providers.EncapsulatedContentProvider#isFlat() + */ + @Override + public boolean isFlat() { + return true; + } + } public class StereotypeAttributesStyledLabelProvider extends DelegatingStyledCellLabelProvider implements ILabelProvider { @@ -181,7 +191,7 @@ public class FeatureToSetNameValueEditor extends StringEditor { * Handles action when user press the Manage bundle button in the combo area */ protected void handleManageBrowseButtonPressed() { - ElementsExplorerDialog dialog = new ElementsExplorerDialog(getParent().getShell()); + TreeSelectorDialog dialog = new TreeSelectorDialog(getParent().getShell()); dialog.setContentProvider(new StereotypeAttributesContentProvider()); dialog.setLabelProvider(new StereotypeAttributesStyledLabelProvider()); diff --git a/plugins/uml/properties/org.eclipse.papyrus.uml.properties/src/org/eclipse/papyrus/uml/properties/widgets/StereotypeExplorerDialog.java b/plugins/uml/properties/org.eclipse.papyrus.uml.properties/src/org/eclipse/papyrus/uml/properties/widgets/StereotypeExplorerDialog.java index ed47d6d07a8..4236da8c368 100644 --- a/plugins/uml/properties/org.eclipse.papyrus.uml.properties/src/org/eclipse/papyrus/uml/properties/widgets/StereotypeExplorerDialog.java +++ b/plugins/uml/properties/org.eclipse.papyrus.uml.properties/src/org/eclipse/papyrus/uml/properties/widgets/StereotypeExplorerDialog.java @@ -29,10 +29,15 @@ import org.eclipse.emf.ecore.resource.Resource; import org.eclipse.emf.ecore.resource.ResourceSet; import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl; import org.eclipse.emf.ecore.util.EcoreUtil; +import org.eclipse.jface.layout.GridDataFactory; +import org.eclipse.jface.layout.GridLayoutFactory; +import org.eclipse.jface.viewers.AbstractTreeViewer; import org.eclipse.jface.viewers.DelegatingStyledCellLabelProvider; +import org.eclipse.jface.viewers.DelegatingStyledCellLabelProvider.IStyledLabelProvider; import org.eclipse.jface.viewers.DoubleClickEvent; import org.eclipse.jface.viewers.IDoubleClickListener; import org.eclipse.jface.viewers.ILabelProvider; +import org.eclipse.jface.viewers.ISelection; import org.eclipse.jface.viewers.ISelectionChangedListener; import org.eclipse.jface.viewers.ITreeContentProvider; import org.eclipse.jface.viewers.LabelProvider; @@ -41,7 +46,6 @@ import org.eclipse.jface.viewers.StructuredSelection; import org.eclipse.jface.viewers.StyledString; import org.eclipse.jface.viewers.TreeViewer; import org.eclipse.jface.viewers.Viewer; -import org.eclipse.jface.viewers.DelegatingStyledCellLabelProvider.IStyledLabelProvider; import org.eclipse.papyrus.infra.widgets.editors.StringWithClearEditor; import org.eclipse.papyrus.infra.widgets.providers.AbstractStaticContentProvider; import org.eclipse.papyrus.infra.widgets.providers.PatternViewerFilter; @@ -58,8 +62,6 @@ import org.eclipse.swt.events.KeyAdapter; import org.eclipse.swt.events.KeyEvent; import org.eclipse.swt.events.ModifyEvent; import org.eclipse.swt.events.ModifyListener; -import org.eclipse.swt.events.MouseAdapter; -import org.eclipse.swt.events.MouseEvent; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.graphics.Image; @@ -70,6 +72,8 @@ import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Shell; +import org.eclipse.swt.widgets.ToolBar; +import org.eclipse.swt.widgets.ToolItem; import org.eclipse.swt.widgets.Tree; import org.eclipse.ui.dialogs.SelectionStatusDialog; import org.eclipse.uml2.uml.Comment; @@ -352,8 +356,21 @@ public class StereotypeExplorerDialog extends SelectionStatusDialog { // creates the message area, as defined in the super class createMessageArea(composite); - createFilterText(composite); - createExpandCollapseButtons(composite); + + // Top composite containing filter and collapse/expand buttons + Composite topComposite = new Composite(composite, SWT.NONE); + GridLayoutFactory.fillDefaults().numColumns(3).equalWidth(false).applyTo(topComposite); + GridDataFactory.fillDefaults().grab(true, false).applyTo(topComposite); + + // Create filter + createFilterText(topComposite); + + // create separator + Label separator = new Label(topComposite, SWT.VERTICAL | SWT.SEPARATOR); + GridDataFactory.fillDefaults().hint(SWT.DEFAULT, 10).grab(false, false).applyTo(separator); + + // Create Expand button + createExpandCollapseButtons(topComposite); createStereotypeFilteredList(composite); createInformationText(composite); createFilterOnSourceElementButton(composite); @@ -367,40 +384,54 @@ public class StereotypeExplorerDialog extends SelectionStatusDialog { * Create buttons to collapse and expand treeViewer. */ protected void createExpandCollapseButtons(final Composite composite) { - Composite container = new Composite(composite, SWT.NONE); - GridLayout layout = new GridLayout(2, true); - layout.horizontalSpacing = 2; - layout.marginBottom = -5; - layout.marginBottom = -5; - container.setLayout(layout); - - Label buttonExpand = new Label(container, SWT.NONE); + + ToolBar container = new ToolBar(composite, SWT.NONE); + + ToolItem buttonExpand = new ToolItem(container, SWT.NONE); Image imageExpand = Activator.getPluginIconImage(org.eclipse.papyrus.infra.widgets.Activator.PLUGIN_ID, ICONS_EXPAND_ALL); buttonExpand.setImage(imageExpand); - buttonExpand.addMouseListener(new MouseAdapter() { + buttonExpand.addSelectionListener(new SelectionAdapter() { /** - * {@iniriteDoc] - * - * @see org.eclipse.swt.events.MouseAdapter#mouseUp(org.eclipse.swt.events.MouseEvent) + * {@inheritDoc} */ @Override - public void mouseUp(MouseEvent event) { - stereotypeTreeViewer.expandAll(); + public void widgetSelected(SelectionEvent e) { + ISelection selection = stereotypeTreeViewer.getSelection(); + // If there are selected element + if (selection instanceof StructuredSelection && !selection.isEmpty()) { + // For each element + for (Object object : ((StructuredSelection) selection).toArray()) { + ((AbstractTreeViewer) stereotypeTreeViewer).expandToLevel(object, org.eclipse.papyrus.infra.widgets.Activator.getMaxLevelToExpandValue()); + } + } else { + // or expand all + ((AbstractTreeViewer) stereotypeTreeViewer).expandToLevel(org.eclipse.papyrus.infra.widgets.Activator.getMaxLevelToExpandValue()); + } + stereotypeTreeViewer.refresh(); } }); - Label buttonCollapse = new Label(container, SWT.NONE); + ToolItem buttonCollapse = new ToolItem(container, SWT.NONE); Image imageCollapse = Activator.getPluginIconImage(org.eclipse.papyrus.infra.widgets.Activator.PLUGIN_ID, ICONS_COLLAPSE_ALL); buttonCollapse.setImage(imageCollapse); - buttonCollapse.addMouseListener(new MouseAdapter() { + buttonCollapse.addSelectionListener(new SelectionAdapter() { /** - * {@iniriteDoc] - * - * @see org.eclipse.swt.events.MouseAdapter#mouseUp(org.eclipse.swt.events.MouseEvent) + * {@inheritDoc} */ @Override - public void mouseUp(MouseEvent event) { - stereotypeTreeViewer.collapseAll(); + public void widgetSelected(SelectionEvent e) { + ISelection selection = ((AbstractTreeViewer) stereotypeTreeViewer).getSelection(); + // If there are selected element + if (selection instanceof StructuredSelection && !selection.isEmpty()) { + // expand each selected element + for (Object object : ((StructuredSelection) selection).toArray()) { + ((AbstractTreeViewer) stereotypeTreeViewer).collapseToLevel(object, AbstractTreeViewer.ALL_LEVELS); + } + + } else { + // or collapse all + ((AbstractTreeViewer) stereotypeTreeViewer).collapseAll(); + } } }); } @@ -553,7 +584,7 @@ public class StereotypeExplorerDialog extends SelectionStatusDialog { protected void createFilterText(final Composite parent) { // Create the filter composite final StringWithClearEditor filterText = new StringWithClearEditor(parent, SWT.BORDER); - + GridDataFactory.fillDefaults().grab(true, false).applyTo(filterText); filterText.setValue("");//$NON-NLS-1$ filterText.getText().addModifyListener(new ModifyListener() { diff --git a/plugins/uml/tools/org.eclipse.papyrus.uml.tools/plugin.xml b/plugins/uml/tools/org.eclipse.papyrus.uml.tools/plugin.xml index 02791e1f1ba..827731a7a6a 100644 --- a/plugins/uml/tools/org.eclipse.papyrus.uml.tools/plugin.xml +++ b/plugins/uml/tools/org.eclipse.papyrus.uml.tools/plugin.xml @@ -118,6 +118,7 @@ contentProvider="org.eclipse.papyrus.infra.widgets.providers.FlatFilteredContentProvider" id="org.eclipse.papyrus.uml.tools.tabflat" labelProvider="org.eclipse.papyrus.uml.tools.providers.FlatTabUMLLabelProvider" + tabConstraint="org.eclipse.papyrus.uml.tools.providers.FlatTabConstaint" tabIcon="icons/flatView.gif" tabLabel="Flat"> </tabDeclaration> diff --git a/plugins/uml/tools/org.eclipse.papyrus.uml.tools/src/org/eclipse/papyrus/uml/tools/providers/FlatTabConstaint.java b/plugins/uml/tools/org.eclipse.papyrus.uml.tools/src/org/eclipse/papyrus/uml/tools/providers/FlatTabConstaint.java new file mode 100644 index 00000000000..9d6befa11d8 --- /dev/null +++ b/plugins/uml/tools/org.eclipse.papyrus.uml.tools/src/org/eclipse/papyrus/uml/tools/providers/FlatTabConstaint.java @@ -0,0 +1,102 @@ +/***************************************************************************** + * Copyright (c) 2016 CEA LIST, ALL4TEC and others. + * + * 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: + * Mickael ADAM (ALL4TEC) mickael.adam@all4tec.net - Initial API and implementation + *****************************************************************************/ +package org.eclipse.papyrus.uml.tools.providers; + +import java.util.Collection; +import java.util.Set; + +import org.eclipse.jface.viewers.ITreeContentProvider; +import org.eclipse.papyrus.infra.constraints.ConstraintDescriptor; +import org.eclipse.papyrus.infra.constraints.DisplayUnit; +import org.eclipse.papyrus.infra.constraints.constraints.Constraint; +import org.eclipse.papyrus.infra.widgets.SelectorDialogTabReader; +import org.eclipse.papyrus.infra.widgets.providers.IDependableContentProvider; +import org.eclipse.papyrus.infra.widgets.providers.IFlattenableContentProvider; + +/** + * Contraint for flat tabulation of selector tab. Match if the dependable content provider of {@link FlatTabUMLLabelProvider} is not flat. + * + * @since 3.0 + */ +public class FlatTabConstaint implements Constraint { + + /** + * Constructor. + */ + public FlatTabConstaint() { + } + + /** + * {@inheritDoc} + * + * @see org.eclipse.papyrus.infra.constraints.constraints.Constraint#setConstraintDescriptor(org.eclipse.papyrus.infra.constraints.ConstraintDescriptor) + */ + @Override + public void setConstraintDescriptor(final ConstraintDescriptor descriptor) { + } + + /** + * {@inheritDoc} + * + * @see org.eclipse.papyrus.infra.constraints.constraints.Constraint#match(java.util.Collection) + */ + @Override + public boolean match(Collection<?> selection) { + boolean match = false; + if (!selection.isEmpty() && selection instanceof Set) { + // Get the id of the tab + Object id = ((Set) selection).toArray()[0]; + if (id instanceof String) { + ITreeContentProvider iContentProvider = SelectorDialogTabReader.getInstance().getContentProviders().get(id); + if (iContentProvider instanceof IDependableContentProvider) { + ITreeContentProvider contentProvider = ((IDependableContentProvider) iContentProvider).getContentProvider(); + if (contentProvider instanceof IFlattenableContentProvider) { + IFlattenableContentProvider flattenableContentProvider = (IFlattenableContentProvider) contentProvider; + match = !flattenableContentProvider.isFlat(); + } + } + } + } + return match; + } + + /** + * {@inheritDoc} + * + * @see org.eclipse.papyrus.infra.constraints.constraints.Constraint#getDisplayUnit() + */ + @Override + public DisplayUnit getDisplayUnit() { + return null; + } + + /** + * {@inheritDoc} + * + * @see org.eclipse.papyrus.infra.constraints.constraints.Constraint#overrides(org.eclipse.papyrus.infra.constraints.constraints.Constraint) + */ + @Override + public boolean overrides(final Constraint constraint) { + return false; + } + + /** + * {@inheritDoc} + * + * @see org.eclipse.papyrus.infra.constraints.constraints.Constraint#getDescriptor() + */ + @Override + public ConstraintDescriptor getDescriptor() { + return null; + } + +} diff --git a/plugins/uml/tools/org.eclipse.papyrus.uml.tools/src/org/eclipse/papyrus/uml/tools/providers/FlatTabUMLLabelProvider.java b/plugins/uml/tools/org.eclipse.papyrus.uml.tools/src/org/eclipse/papyrus/uml/tools/providers/FlatTabUMLLabelProvider.java index dfa5ef5160a..e9f51a8c6db 100644 --- a/plugins/uml/tools/org.eclipse.papyrus.uml.tools/src/org/eclipse/papyrus/uml/tools/providers/FlatTabUMLLabelProvider.java +++ b/plugins/uml/tools/org.eclipse.papyrus.uml.tools/src/org/eclipse/papyrus/uml/tools/providers/FlatTabUMLLabelProvider.java @@ -166,7 +166,10 @@ public class FlatTabUMLLabelProvider implements IGraphicalLabelProvider, IStyled */ protected void setDisplayQualifiedNameButton(final boolean visible) { if (null != Toolbar && !Toolbar.isDisposed() && visible != Toolbar.getVisible()) { - Toolbar.setVisible(visible); + Composite parent = Toolbar.getParent(); + Toolbar.dispose(); + parent.pack(); + } } |