From 83231690557c3478309df007c01c89e05939b555 Mon Sep 17 00:00:00 2001 From: cletavernie Date: Mon, 4 Jul 2011 09:35:35 +0000 Subject: 340430: [Widget] creation of dialog box based on the model explorer https://bugs.eclipse.org/bugs/show_bug.cgi?id=340430 351054: [Property View] The property view configurations need a URI catalog https://bugs.eclipse.org/bugs/show_bug.cgi?id=351054 --- .../Model/Customization.ctx | 187 ++++++++++++--------- .../Model/ui/EcoreInstanceOf.xwt | 2 +- .../Model/ui/MultipleCompositeConstraint.xwt | 2 + .../Model/ui/MultipleConstraintDescriptor.xwt | 2 +- .../Model/ui/MultipleEnvironment.xwt | 2 +- .../Model/ui/OCLQuery.xwt | 2 +- .../Model/ui/SingleCompositeConstraint.xwt | 2 + .../Model/ui/SingleConstraintDescriptor.xwt | 2 +- .../Model/ui/SingleConstraintType.xwt | 2 +- .../Model/ui/SingleEnvironment.xwt | 2 +- .../Model/ui/Stereotype.xwt | 2 +- .../Model/ui/UMLInstanceOf.xwt | 2 +- .../customization/messages/messages.properties | 10 +- .../modelelement/CustomizationModelElement.java | 8 +- .../ConstraintDescriptorContentProvider.java | 21 ++- .../customization/ui/CopyContextAction.java | 8 +- .../properties/customization/util/ProjectUtil.java | 3 +- 17 files changed, 153 insertions(+), 106 deletions(-) create mode 100644 incoming/org.eclipse.papyrus.properties.customization/Model/ui/MultipleCompositeConstraint.xwt create mode 100644 incoming/org.eclipse.papyrus.properties.customization/Model/ui/SingleCompositeConstraint.xwt (limited to 'incoming') diff --git a/incoming/org.eclipse.papyrus.properties.customization/Model/Customization.ctx b/incoming/org.eclipse.papyrus.properties.customization/Model/Customization.ctx index 1a2dca9b479..e3fa9c297f8 100644 --- a/incoming/org.eclipse.papyrus.properties.customization/Model/Customization.ctx +++ b/incoming/org.eclipse.papyrus.properties.customization/Model/Customization.ctx @@ -201,7 +201,7 @@ - + @@ -210,7 +210,7 @@ - + @@ -219,7 +219,7 @@ - + @@ -228,7 +228,7 @@ - + @@ -237,7 +237,7 @@ - + @@ -246,7 +246,7 @@ - + @@ -255,7 +255,7 @@ - + @@ -264,7 +264,7 @@ - + @@ -273,7 +273,7 @@ - + @@ -282,476 +282,496 @@ - + + + + + + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + + + + + + + + + + + + + + + @@ -840,9 +860,7 @@ - - @@ -855,6 +873,13 @@ + + + + + + + @@ -893,7 +918,7 @@ - + @@ -924,7 +949,7 @@ - + @@ -940,6 +965,6 @@ - + diff --git a/incoming/org.eclipse.papyrus.properties.customization/Model/ui/EcoreInstanceOf.xwt b/incoming/org.eclipse.papyrus.properties.customization/Model/ui/EcoreInstanceOf.xwt index c971158aa4a..dc2e8c4b749 100644 --- a/incoming/org.eclipse.papyrus.properties.customization/Model/ui/EcoreInstanceOf.xwt +++ b/incoming/org.eclipse.papyrus.properties.customization/Model/ui/EcoreInstanceOf.xwt @@ -1,2 +1,2 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/incoming/org.eclipse.papyrus.properties.customization/Model/ui/MultipleCompositeConstraint.xwt b/incoming/org.eclipse.papyrus.properties.customization/Model/ui/MultipleCompositeConstraint.xwt new file mode 100644 index 00000000000..615db8f43bb --- /dev/null +++ b/incoming/org.eclipse.papyrus.properties.customization/Model/ui/MultipleCompositeConstraint.xwt @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/incoming/org.eclipse.papyrus.properties.customization/Model/ui/MultipleConstraintDescriptor.xwt b/incoming/org.eclipse.papyrus.properties.customization/Model/ui/MultipleConstraintDescriptor.xwt index 0652e3cca94..c278bb83e9c 100644 --- a/incoming/org.eclipse.papyrus.properties.customization/Model/ui/MultipleConstraintDescriptor.xwt +++ b/incoming/org.eclipse.papyrus.properties.customization/Model/ui/MultipleConstraintDescriptor.xwt @@ -1,2 +1,2 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/incoming/org.eclipse.papyrus.properties.customization/Model/ui/MultipleEnvironment.xwt b/incoming/org.eclipse.papyrus.properties.customization/Model/ui/MultipleEnvironment.xwt index c42af8507ee..ab3d7fcf9b9 100644 --- a/incoming/org.eclipse.papyrus.properties.customization/Model/ui/MultipleEnvironment.xwt +++ b/incoming/org.eclipse.papyrus.properties.customization/Model/ui/MultipleEnvironment.xwt @@ -1,2 +1,2 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/incoming/org.eclipse.papyrus.properties.customization/Model/ui/OCLQuery.xwt b/incoming/org.eclipse.papyrus.properties.customization/Model/ui/OCLQuery.xwt index 43f23369284..9d2314c3993 100644 --- a/incoming/org.eclipse.papyrus.properties.customization/Model/ui/OCLQuery.xwt +++ b/incoming/org.eclipse.papyrus.properties.customization/Model/ui/OCLQuery.xwt @@ -1,2 +1,2 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/incoming/org.eclipse.papyrus.properties.customization/Model/ui/SingleCompositeConstraint.xwt b/incoming/org.eclipse.papyrus.properties.customization/Model/ui/SingleCompositeConstraint.xwt new file mode 100644 index 00000000000..ba8217a7cf3 --- /dev/null +++ b/incoming/org.eclipse.papyrus.properties.customization/Model/ui/SingleCompositeConstraint.xwt @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/incoming/org.eclipse.papyrus.properties.customization/Model/ui/SingleConstraintDescriptor.xwt b/incoming/org.eclipse.papyrus.properties.customization/Model/ui/SingleConstraintDescriptor.xwt index e841cf3fa44..6c585193189 100644 --- a/incoming/org.eclipse.papyrus.properties.customization/Model/ui/SingleConstraintDescriptor.xwt +++ b/incoming/org.eclipse.papyrus.properties.customization/Model/ui/SingleConstraintDescriptor.xwt @@ -1,2 +1,2 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/incoming/org.eclipse.papyrus.properties.customization/Model/ui/SingleConstraintType.xwt b/incoming/org.eclipse.papyrus.properties.customization/Model/ui/SingleConstraintType.xwt index 03a3b35f6aa..b1948e43bc0 100644 --- a/incoming/org.eclipse.papyrus.properties.customization/Model/ui/SingleConstraintType.xwt +++ b/incoming/org.eclipse.papyrus.properties.customization/Model/ui/SingleConstraintType.xwt @@ -1,2 +1,2 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/incoming/org.eclipse.papyrus.properties.customization/Model/ui/SingleEnvironment.xwt b/incoming/org.eclipse.papyrus.properties.customization/Model/ui/SingleEnvironment.xwt index 9d4a124e5c8..ff64d5ab388 100644 --- a/incoming/org.eclipse.papyrus.properties.customization/Model/ui/SingleEnvironment.xwt +++ b/incoming/org.eclipse.papyrus.properties.customization/Model/ui/SingleEnvironment.xwt @@ -1,2 +1,2 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/incoming/org.eclipse.papyrus.properties.customization/Model/ui/Stereotype.xwt b/incoming/org.eclipse.papyrus.properties.customization/Model/ui/Stereotype.xwt index 93536b4094c..63db56d2dad 100644 --- a/incoming/org.eclipse.papyrus.properties.customization/Model/ui/Stereotype.xwt +++ b/incoming/org.eclipse.papyrus.properties.customization/Model/ui/Stereotype.xwt @@ -1,2 +1,2 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/incoming/org.eclipse.papyrus.properties.customization/Model/ui/UMLInstanceOf.xwt b/incoming/org.eclipse.papyrus.properties.customization/Model/ui/UMLInstanceOf.xwt index 578271783f2..977189c4f2e 100644 --- a/incoming/org.eclipse.papyrus.properties.customization/Model/ui/UMLInstanceOf.xwt +++ b/incoming/org.eclipse.papyrus.properties.customization/Model/ui/UMLInstanceOf.xwt @@ -1,2 +1,2 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/incoming/org.eclipse.papyrus.properties.customization/src/org/eclipse/papyrus/properties/customization/messages/messages.properties b/incoming/org.eclipse.papyrus.properties.customization/src/org/eclipse/papyrus/properties/customization/messages/messages.properties index 0610a712d78..1900ca64f6e 100644 --- a/incoming/org.eclipse.papyrus.properties.customization/src/org/eclipse/papyrus/properties/customization/messages/messages.properties +++ b/incoming/org.eclipse.papyrus.properties.customization/src/org/eclipse/papyrus/properties/customization/messages/messages.properties @@ -2,7 +2,7 @@ CopyContextAction_Copying=Copying CopyContextAction_InitializingTheCopyOf=Initializing the copy of CopyContextAction_ThisMayTakeSomeTime=. This may take some time CopyContextAction_To=\ to -CustomizationDialog_cannotDeletePluginContext=Plugin contexts cannot be deleted +CustomizationDialog_cannotDeletePluginContext=Read-only contexts cannot be deleted CustomizationDialog_configurationName=Configuration name CustomizationDialog_configurationNameNotEmpty=The name of the configuration shouldn't be empty CustomizationDialog_configurationWithSameNameExists=A configuration with the same name already exists @@ -15,11 +15,11 @@ CustomizationDialog_deleteContext=Delete context ? CustomizationDialog_deleteContextConfirmation1=Are you sure you want to delete the Property View context CustomizationDialog_deleteContextConfirmation2=\ ? This choice is irreversible. If you simply want to deactivate this context, you can do so in Preferences > Papyrus > Property views CustomizationDialog_edit=Edit -CustomizationDialog_editSelectedContext=Edits the selected Context. This option is only available for non-plugin Contexts +CustomizationDialog_editSelectedContext=Edits the selected Context. This option is only available for writeable Contexts CustomizationDialog_enterConfigurationName=Enter the new configuration name -CustomizationDialog_plugin=\ (Plugin) -CustomizationDialog_removeSelectedContext=Removes the selected Context. This option is only available for non-plugin Contexts -CustomizationDialog_selectContextToEdit=Select a context to edit. Plugin contexts should be copied before they can be edited. +CustomizationDialog_plugin=\ (Read-only) +CustomizationDialog_removeSelectedContext=Removes the selected Context. This option is only available for writeable Contexts +CustomizationDialog_selectContextToEdit=Select a context to edit. Read-only contexts should be copied before they can be edited. CustomizationPreferencePage_AskForConfirmation=Ask for confirmation CustomizationPreferencePage_OpenCustomizationPerspective=Open customization perspective CustomizationPreferencePage_PropertyViewCustomizationPreferences=Property view customization preferences diff --git a/incoming/org.eclipse.papyrus.properties.customization/src/org/eclipse/papyrus/properties/customization/modelelement/CustomizationModelElement.java b/incoming/org.eclipse.papyrus.properties.customization/src/org/eclipse/papyrus/properties/customization/modelelement/CustomizationModelElement.java index 0609feda734..ac43094dde0 100644 --- a/incoming/org.eclipse.papyrus.properties.customization/src/org/eclipse/papyrus/properties/customization/modelelement/CustomizationModelElement.java +++ b/incoming/org.eclipse.papyrus.properties.customization/src/org/eclipse/papyrus/properties/customization/modelelement/CustomizationModelElement.java @@ -32,6 +32,7 @@ import org.eclipse.papyrus.properties.customization.providers.TabContentProvider import org.eclipse.papyrus.properties.environment.EnvironmentPackage; import org.eclipse.papyrus.properties.modelelement.AbstractModelElement; import org.eclipse.papyrus.properties.modelelement.EMFModelElement; +import org.eclipse.papyrus.properties.util.EMFHelper; import org.eclipse.papyrus.widgets.creation.ReferenceValueFactory; import org.eclipse.papyrus.widgets.providers.EmptyContentProvider; import org.eclipse.papyrus.widgets.providers.IStaticContentProvider; @@ -50,9 +51,6 @@ import org.eclipse.papyrus.widgets.providers.IStaticContentProvider; */ public class CustomizationModelElement extends AbstractModelElement { - //TODO : Support for ConstraintDescriptor content provider - //The provider relies on EMF, which loads the whole model (including XWT files) - private EMFModelElement delegate; private static Map providers; @@ -106,8 +104,8 @@ public class CustomizationModelElement extends AbstractModelElement { //Sections can only be moved to tabs from non-plugin contexts boolean editableTabsOnly = delegate.getSource() instanceof Section; return new TabContentProvider(delegate.getSource(), editableTabsOnly); - } else if(classifier == ContextsPackage.eINSTANCE.getConstraintDescriptor()) { - return new ConstraintDescriptorContentProvider(delegate.getSource()); + } else if(classifier instanceof EClass && EMFHelper.isSubclass((EClass)classifier, ContextsPackage.eINSTANCE.getConstraintDescriptor())) { + return new ConstraintDescriptorContentProvider(delegate.getSource(), (EClass)classifier); } else if(isDataContextElement(classifier)) { return new DataContextElementContentProvider((DataContextElement)delegate.getSource()); } else { diff --git a/incoming/org.eclipse.papyrus.properties.customization/src/org/eclipse/papyrus/properties/customization/providers/ConstraintDescriptorContentProvider.java b/incoming/org.eclipse.papyrus.properties.customization/src/org/eclipse/papyrus/properties/customization/providers/ConstraintDescriptorContentProvider.java index dbd0b6d1ad6..e7db4381274 100644 --- a/incoming/org.eclipse.papyrus.properties.customization/src/org/eclipse/papyrus/properties/customization/providers/ConstraintDescriptorContentProvider.java +++ b/incoming/org.eclipse.papyrus.properties.customization/src/org/eclipse/papyrus/properties/customization/providers/ConstraintDescriptorContentProvider.java @@ -14,9 +14,11 @@ package org.eclipse.papyrus.properties.customization.providers; import java.util.LinkedList; import java.util.List; +import org.eclipse.emf.ecore.EClass; import org.eclipse.emf.ecore.EObject; import org.eclipse.papyrus.properties.contexts.ConstraintDescriptor; import org.eclipse.papyrus.properties.contexts.Context; +import org.eclipse.papyrus.properties.contexts.DisplayUnit; import org.eclipse.papyrus.properties.contexts.Section; import org.eclipse.papyrus.properties.contexts.Tab; import org.eclipse.papyrus.properties.contexts.View; @@ -29,6 +31,8 @@ import org.eclipse.papyrus.properties.contexts.View; */ public class ConstraintDescriptorContentProvider extends AbstractContextualContentProvider { + private EClass type; + /** * * Constructor. @@ -36,23 +40,34 @@ public class ConstraintDescriptorContentProvider extends AbstractContextualConte * @param source * The source Object used to retrieve the available ConstraintDescriptors */ - public ConstraintDescriptorContentProvider(EObject source) { + public ConstraintDescriptorContentProvider(EObject source, EClass type) { super(source); + this.type = type; } public Object[] getElements() { List result = new LinkedList(); for(Context context : contexts) { for(View view : context.getViews()) { - result.addAll(view.getConstraints()); + result.addAll(getFilteredConstraintsFromDisplayUnit(view)); } for(Tab tab : context.getTabs()) { for(Section section : tab.getSections()) { - result.addAll(section.getConstraints()); + result.addAll(getFilteredConstraintsFromDisplayUnit(section)); } } } return result.toArray(); } + private List getFilteredConstraintsFromDisplayUnit(DisplayUnit unit) { + List result = new LinkedList(); + for(ConstraintDescriptor constraint : unit.getConstraints()) { + if(type.isInstance(constraint)) { + result.add(constraint); + } + } + return result; + } + } diff --git a/incoming/org.eclipse.papyrus.properties.customization/src/org/eclipse/papyrus/properties/customization/ui/CopyContextAction.java b/incoming/org.eclipse.papyrus.properties.customization/src/org/eclipse/papyrus/properties/customization/ui/CopyContextAction.java index 3550081727d..9ed0f1091f2 100644 --- a/incoming/org.eclipse.papyrus.properties.customization/src/org/eclipse/papyrus/properties/customization/ui/CopyContextAction.java +++ b/incoming/org.eclipse.papyrus.properties.customization/src/org/eclipse/papyrus/properties/customization/ui/CopyContextAction.java @@ -32,6 +32,7 @@ import org.eclipse.emf.ecore.util.EcoreUtil; import org.eclipse.jface.dialogs.ProgressMonitorDialog; import org.eclipse.jface.operation.IRunnableWithProgress; import org.eclipse.papyrus.properties.Activator; +import org.eclipse.papyrus.properties.catalog.PropertiesURIHandler; import org.eclipse.papyrus.properties.contexts.Context; import org.eclipse.papyrus.properties.customization.messages.Messages; import org.eclipse.papyrus.properties.runtime.ConfigurationManager; @@ -158,7 +159,12 @@ public class CopyContextAction { } protected void copy(Resource resource, File target) throws IOException { - copy(new URL(resource.getURI().toString()).openStream(), target); + PropertiesURIHandler uriHandler = new PropertiesURIHandler(); + URI uri = resource.getURI(); + if(uriHandler.canHandle(uri)) { + uri = uriHandler.getConvertedURI(uri); + } + copy(new URL(uri.toString()).openStream(), target); } private void copy(Resource resource, File directory, EObject source, String targetName) throws IOException { diff --git a/incoming/org.eclipse.papyrus.properties.customization/src/org/eclipse/papyrus/properties/customization/util/ProjectUtil.java b/incoming/org.eclipse.papyrus.properties.customization/src/org/eclipse/papyrus/properties/customization/util/ProjectUtil.java index 67f58424af5..6e5cb31df16 100644 --- a/incoming/org.eclipse.papyrus.properties.customization/src/org/eclipse/papyrus/properties/customization/util/ProjectUtil.java +++ b/incoming/org.eclipse.papyrus.properties.customization/src/org/eclipse/papyrus/properties/customization/util/ProjectUtil.java @@ -26,7 +26,6 @@ import org.eclipse.core.runtime.Path; import org.eclipse.papyrus.properties.contexts.Context; import org.eclipse.papyrus.properties.contexts.Section; import org.eclipse.papyrus.properties.customization.Activator; -import org.eclipse.papyrus.properties.customization.ui.CopyContextAction; /** * The Eclipse Editors can only handle files from the workspace. However, when @@ -86,7 +85,7 @@ public class ProjectUtil { custom.open(null); } - custom.setHidden(false); + custom.setHidden(true); workspace.getRoot().refreshLocal(IResource.DEPTH_INFINITE, null); return custom; -- cgit v1.2.3