diff --git a/bundles/org.eclipse.passage.loc.dashboard.ui/src/org/eclipse/passage/loc/dashboard/ui/panel/DashboardPanelPart.java b/bundles/org.eclipse.passage.loc.dashboard.ui/src/org/eclipse/passage/loc/dashboard/ui/panel/DashboardPanelPart.java index a43587190..8f46cb251 100644 --- a/bundles/org.eclipse.passage.loc.dashboard.ui/src/org/eclipse/passage/loc/dashboard/ui/panel/DashboardPanelPart.java +++ b/bundles/org.eclipse.passage.loc.dashboard.ui/src/org/eclipse/passage/loc/dashboard/ui/panel/DashboardPanelPart.java @@ -16,6 +16,7 @@ import javax.annotation.PreDestroy; import javax.inject.Inject; +import org.eclipse.e4.core.contexts.EclipseContextFactory; import org.eclipse.e4.core.contexts.IEclipseContext; import org.eclipse.e4.core.di.annotations.Optional; import org.eclipse.e4.ui.di.Focus; @@ -23,6 +24,7 @@ import org.eclipse.e4.ui.di.UIEventTopic; import org.eclipse.jface.layout.GridDataFactory; import org.eclipse.jface.layout.GridLayoutFactory; +import org.eclipse.passage.lic.emf.meta.ComposableClassMetadata; import org.eclipse.passage.lic.features.FeatureDescriptor; import org.eclipse.passage.lic.features.FeatureSetDescriptor; import org.eclipse.passage.lic.features.FeatureVersionDescriptor; @@ -42,8 +44,13 @@ import org.eclipse.passage.lic.users.UserOriginDescriptor; import org.eclipse.passage.lic.users.registry.UserRegistry; import org.eclipse.passage.lic.users.registry.UserRegistryEvents; +import org.eclipse.passage.moveto.lic.internal.features.model.FeaturesClassMetadata; +import org.eclipse.passage.moveto.lic.internal.licenses.model.LicensesClassMetadata; +import org.eclipse.passage.moveto.lic.internal.products.model.ProductsClassMetadata; +import org.eclipse.passage.moveto.lic.internal.users.model.UsersClassMetadata; import org.eclipse.swt.SWT; import org.eclipse.swt.widgets.Composite; +import org.osgi.framework.FrameworkUtil; public class DashboardPanelPart { @@ -78,6 +85,14 @@ public void postConstruct(Composite parent, IEclipseContext context) { createUserInfo(area); createLicenseInfo(area); createFooterInfo(area); + // FIXME: replace this with OSGi component registration + ComposableClassMetadata metadata = EclipseContextFactory + .getServiceContext(FrameworkUtil.getBundle(getClass()).getBundleContext()) + .get(ComposableClassMetadata.class); + metadata.consider(new FeaturesClassMetadata()); + metadata.consider(new ProductsClassMetadata()); + metadata.consider(new UsersClassMetadata()); + metadata.consider(new LicensesClassMetadata()); } protected void createHeaderInfo(Composite parent) { diff --git a/bundles/org.eclipse.passage.loc.dashboard.ui/src/org/eclipse/passage/loc/dashboard/ui/wizards/IssueLicenseWizard.java b/bundles/org.eclipse.passage.loc.dashboard.ui/src/org/eclipse/passage/loc/dashboard/ui/wizards/IssueLicenseWizard.java index d32ec4b6a..862a2c14d 100644 --- a/bundles/org.eclipse.passage.loc.dashboard.ui/src/org/eclipse/passage/loc/dashboard/ui/wizards/IssueLicenseWizard.java +++ b/bundles/org.eclipse.passage.loc.dashboard.ui/src/org/eclipse/passage/loc/dashboard/ui/wizards/IssueLicenseWizard.java @@ -16,7 +16,6 @@ import org.eclipse.core.runtime.jobs.IJobChangeEvent; import org.eclipse.core.runtime.jobs.JobChangeAdapter; -import org.eclipse.e4.core.contexts.EclipseContextFactory; import org.eclipse.e4.core.contexts.IEclipseContext; import org.eclipse.e4.core.services.events.IEventBroker; import org.eclipse.jface.dialogs.MessageDialog; @@ -27,7 +26,6 @@ import org.eclipse.osgi.util.NLS; import org.eclipse.passage.lic.api.LicensingResult; import org.eclipse.passage.lic.api.access.LicensingRequest; -import org.eclipse.passage.lic.emf.meta.ComposableClassMetadata; import org.eclipse.passage.lic.licenses.LicensePackDescriptor; import org.eclipse.passage.lic.licenses.LicensePlanDescriptor; import org.eclipse.passage.lic.products.ProductVersionDescriptor; @@ -38,11 +36,8 @@ import org.eclipse.passage.loc.internal.dashboard.ui.i18n.IssueLicensePageMessages; import org.eclipse.passage.loc.users.ui.UsersUi; import org.eclipse.passage.loc.workbench.LocWokbench; -import org.eclipse.passage.moveto.lic.internal.products.model.ProductsClassMetadata; -import org.eclipse.passage.moveto.lic.internal.users.model.UsersClassMetadata; import org.eclipse.swt.SWT; import org.eclipse.swt.widgets.Display; -import org.osgi.framework.FrameworkUtil; public class IssueLicenseWizard extends Wizard { @@ -65,12 +60,6 @@ public void init(LicensePlanDescriptor plan, UserDescriptor user, ProductVersion this.licensePlanDescriptor = plan; this.userDescriptor = user; this.productVersionDescriptor = version; - // FIXME: replace this with OSGi component registration - ComposableClassMetadata metadata = EclipseContextFactory - .getServiceContext(FrameworkUtil.getBundle(getClass()).getBundleContext()) - .get(ComposableClassMetadata.class); - metadata.consider(new UsersClassMetadata()); - metadata.consider(new ProductsClassMetadata()); } @Override diff --git a/bundles/org.eclipse.passage.loc.dashboard.ui/src/org/eclipse/passage/moveto/lic/internal/features/model/FeaturesClassMetadata.java b/bundles/org.eclipse.passage.loc.dashboard.ui/src/org/eclipse/passage/moveto/lic/internal/features/model/FeaturesClassMetadata.java new file mode 100644 index 000000000..5e6f03d0e --- /dev/null +++ b/bundles/org.eclipse.passage.loc.dashboard.ui/src/org/eclipse/passage/moveto/lic/internal/features/model/FeaturesClassMetadata.java @@ -0,0 +1,53 @@ +/******************************************************************************* + * Copyright (c) 2020 ArSysOp + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * https://www.eclipse.org/legal/epl-2.0/. + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * ArSysOp - initial API and implementation + *******************************************************************************/ +package org.eclipse.passage.moveto.lic.internal.features.model; + +import java.beans.FeatureDescriptor; +import java.util.HashMap; +import java.util.Map; +import java.util.Optional; + +import org.eclipse.passage.lic.emf.meta.ClassMetadata; +import org.eclipse.passage.lic.emf.meta.EntityMetadata; +import org.eclipse.passage.lic.emf.meta.PlainEntityMetadata; +import org.eclipse.passage.lic.features.FeatureSetDescriptor; +import org.eclipse.passage.lic.features.model.meta.FeaturesPackage; + +//FIXME: AF: remove restriction after moving to the right bundle +@SuppressWarnings("restriction") +public final class FeaturesClassMetadata implements ClassMetadata { + + private final FeaturesPackage meta; + private final Map<Class<?>, EntityMetadata> map; + + public FeaturesClassMetadata() { + meta = FeaturesPackage.eINSTANCE; + map = new HashMap<Class<?>, EntityMetadata>(); + map.put(FeatureSetDescriptor.class, // + new PlainEntityMetadata(// + meta.getFeatureSet(), // + meta.getFeatureSet_Identifier(), // + meta.getFeatureSet_Name())); + map.put(FeatureDescriptor.class, // + new PlainEntityMetadata(// + meta.getFeature(), // + meta.getFeature_Identifier(), // + meta.getFeature_Name())); + } + + @Override + public Optional<EntityMetadata> find(Class<?> clazz) { + return Optional.ofNullable(map.get(clazz)); + } + +} diff --git a/bundles/org.eclipse.passage.loc.dashboard.ui/src/org/eclipse/passage/moveto/lic/internal/licenses/model/LicensesClassMetadata.java b/bundles/org.eclipse.passage.loc.dashboard.ui/src/org/eclipse/passage/moveto/lic/internal/licenses/model/LicensesClassMetadata.java new file mode 100644 index 000000000..dcc062fee --- /dev/null +++ b/bundles/org.eclipse.passage.loc.dashboard.ui/src/org/eclipse/passage/moveto/lic/internal/licenses/model/LicensesClassMetadata.java @@ -0,0 +1,47 @@ +/******************************************************************************* + * Copyright (c) 2020 ArSysOp + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * https://www.eclipse.org/legal/epl-2.0/. + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * ArSysOp - initial API and implementation + *******************************************************************************/ +package org.eclipse.passage.moveto.lic.internal.licenses.model; + +import java.util.HashMap; +import java.util.Map; +import java.util.Optional; + +import org.eclipse.passage.lic.emf.meta.ClassMetadata; +import org.eclipse.passage.lic.emf.meta.EntityMetadata; +import org.eclipse.passage.lic.emf.meta.PlainEntityMetadata; +import org.eclipse.passage.lic.licenses.LicensePlanDescriptor; +import org.eclipse.passage.lic.licenses.model.meta.LicensesPackage; + +//FIXME: AF: remove restriction after moving to the right bundle +@SuppressWarnings("restriction") +public final class LicensesClassMetadata implements ClassMetadata { + + private final LicensesPackage meta; + private final Map<Class<?>, EntityMetadata> map; + + public LicensesClassMetadata() { + meta = LicensesPackage.eINSTANCE; + map = new HashMap<Class<?>, EntityMetadata>(); + map.put(LicensePlanDescriptor.class, // + new PlainEntityMetadata(// + meta.getLicensePlan(), // + meta.getLicensePlan_Identifier(), // + meta.getLicensePlan_Name())); + } + + @Override + public Optional<EntityMetadata> find(Class<?> clazz) { + return Optional.ofNullable(map.get(clazz)); + } + +} diff --git a/bundles/org.eclipse.passage.loc.products.core/META-INF/MANIFEST.MF b/bundles/org.eclipse.passage.loc.products.core/META-INF/MANIFEST.MF index 4aa252709..5f248b7e3 100644 --- a/bundles/org.eclipse.passage.loc.products.core/META-INF/MANIFEST.MF +++ b/bundles/org.eclipse.passage.loc.products.core/META-INF/MANIFEST.MF @@ -7,11 +7,12 @@ Bundle-Name: %Bundle-Name Bundle-Vendor: %Bundle-Vendor Bundle-Copyright: %Bundle-Copyright Bundle-RequiredExecutionEnvironment: JavaSE-1.8 -Require-Bundle: org.eclipse.osgi;bundle-version="0.0.0", +Require-Bundle: org.eclipse.e4.core.services;bundle-version="0.0.0", + org.eclipse.osgi;bundle-version="0.0.0", org.eclipse.osgi.services;bundle-version="0.0.0", - org.eclipse.e4.core.services;bundle-version="0.0.0", - org.eclipse.passage.lic.equinox;bundle-version="0.0.0", org.eclipse.passage.lic.emf;bundle-version="0.0.0", + org.eclipse.passage.lic.equinox;bundle-version="0.0.0", + org.eclipse.passage.lic.products.edit;bundle-version="0.5.100", org.eclipse.passage.lic.products.model;bundle-version="0.0.0";visibility:=reexport, org.eclipse.passage.loc.api;bundle-version="0.0.0" Service-Component: OSGI-INF/*.xml diff --git a/bundles/org.eclipse.passage.loc.workbench/META-INF/MANIFEST.MF b/bundles/org.eclipse.passage.loc.workbench/META-INF/MANIFEST.MF index 318b7c198..3da279a63 100644 --- a/bundles/org.eclipse.passage.loc.workbench/META-INF/MANIFEST.MF +++ b/bundles/org.eclipse.passage.loc.workbench/META-INF/MANIFEST.MF @@ -42,6 +42,8 @@ Export-Package: org.eclipse.passage.loc.internal.workbench; org.eclipse.passage.loc.workbench.dialogs, org.eclipse.passage.loc.workbench.handlers, org.eclipse.passage.loc.workbench.parts, - org.eclipse.passage.loc.workbench.viewers + org.eclipse.passage.loc.workbench.viewers, + org.eclipse.passage.moveto.lic.emf.edit;x-internal:=true, + org.eclipse.passage.moveto.lic.internal.emf.edit.i18n;x-internal:=true Bundle-ActivationPolicy: lazy Service-Component: OSGI-INF/*.xml diff --git a/bundles/org.eclipse.passage.loc.workbench/src/org/eclipse/passage/loc/internal/workbench/CreateClassifier.java b/bundles/org.eclipse.passage.loc.workbench/src/org/eclipse/passage/loc/internal/workbench/CreateClassifier.java index 6d1251165..94bbe7263 100644 --- a/bundles/org.eclipse.passage.loc.workbench/src/org/eclipse/passage/loc/internal/workbench/CreateClassifier.java +++ b/bundles/org.eclipse.passage.loc.workbench/src/org/eclipse/passage/loc/internal/workbench/CreateClassifier.java @@ -16,8 +16,11 @@ import java.util.Optional; import java.util.function.Supplier; +import org.eclipse.emf.common.util.ResourceLocator; +import org.eclipse.emf.ecore.EClass; import org.eclipse.emf.ecore.EObject; import org.eclipse.jface.wizard.WizardDialog; +import org.eclipse.osgi.util.NLS; import org.eclipse.passage.lic.emf.ecore.EditingDomainRegistry; import org.eclipse.passage.lic.emf.edit.ClassifierInitializer; import org.eclipse.passage.lic.emf.edit.EditingDomainRegistryAccess; @@ -27,6 +30,7 @@ import org.eclipse.passage.lic.jface.resource.LicensingImages; import org.eclipse.passage.loc.internal.workbench.i18n.WorkbenchMessages; import org.eclipse.passage.loc.internal.workbench.wizards.BaseClassifierWizard; +import org.eclipse.passage.moveto.lic.emf.edit.EClassResources; import org.eclipse.swt.graphics.Point; import org.eclipse.swt.widgets.Shell; @@ -76,20 +80,26 @@ public Optional<C> get() { protected Optional<EObject> showWizard(Class<C> type, ClassifierInitializer initializer, EditingDomainRegistry<?> registry) { EntityMetadata metadata = context.get(ComposableClassMetadata.class).find(type).get(); + EClass eClass = metadata.eClass(); + ResourceLocator resourceLocator = new EClassResources(eClass).get(); + String typeName = resourceLocator.getString(NLS.bind("_UI_{0}_type", eClass.getName())); //$NON-NLS-1$ BaseClassifierWizard<?> wizard = createWizard(type, metadata, initializer, registry); - WizardDialog dialog = new WizardDialog(context.get(Shell.class), wizard); + Shell parentShell = context.get(Shell.class); + WizardDialog dialog = new WizardDialog(parentShell, wizard); dialog.create(); - dialog.setTitle(initializer.newObjectTitle()); - dialog.setMessage(initializer.newFileMessage()); + dialog.setTitle(typeName); + dialog.setMessage(dialogMessage(typeName)); Shell createdShell = dialog.getShell(); Point location = createdShell.getLocation(); createdShell.setLocation(location.x + 40, location.y + 40); - createdShell.setText(initializer.newObjectMessage()); - createdShell.setImage(LicensingImages.getImage(metadata.eClass().getName())); + createdShell.setText(NLS.bind(WorkbenchMessages.CreateClassifier_text_new_type, typeName)); + createdShell.setImage(LicensingImages.getImage(eClass.getName())); dialog.open(); return wizard.created(); } + protected abstract String dialogMessage(String typeName); + protected abstract BaseClassifierWizard<?> createWizard(Class<C> type, EntityMetadata metadata, ClassifierInitializer initializer, EditingDomainRegistry<?> registry); diff --git a/bundles/org.eclipse.passage.loc.workbench/src/org/eclipse/passage/loc/internal/workbench/CreateInner.java b/bundles/org.eclipse.passage.loc.workbench/src/org/eclipse/passage/loc/internal/workbench/CreateInner.java index eb861b498..56df505c2 100644 --- a/bundles/org.eclipse.passage.loc.workbench/src/org/eclipse/passage/loc/internal/workbench/CreateInner.java +++ b/bundles/org.eclipse.passage.loc.workbench/src/org/eclipse/passage/loc/internal/workbench/CreateInner.java @@ -14,10 +14,12 @@ import java.util.Optional; +import org.eclipse.osgi.util.NLS; import org.eclipse.passage.lic.emf.ecore.EditingDomainRegistry; import org.eclipse.passage.lic.emf.edit.ClassifierInitializer; import org.eclipse.passage.lic.emf.meta.EntityMetadata; import org.eclipse.passage.lic.internal.api.MandatoryService; +import org.eclipse.passage.loc.internal.workbench.i18n.WorkbenchMessages; import org.eclipse.passage.loc.internal.workbench.wizards.BaseClassifierWizard; import org.eclipse.passage.loc.internal.workbench.wizards.InnerClassifierWizard; import org.eclipse.passage.loc.internal.workbench.wizards.RootClassifierWizard; @@ -56,4 +58,9 @@ protected BaseClassifierWizard<?> createWizard(Class<I> clazz, EntityMetadata me return new InnerClassifierWizard<I, R>(clazz, metadata, initializer, registry, request, context); } + @Override + protected String dialogMessage(String typeName) { + return NLS.bind(WorkbenchMessages.CreateInner_message_new_type, typeName); + } + } diff --git a/bundles/org.eclipse.passage.loc.workbench/src/org/eclipse/passage/loc/internal/workbench/CreateRoot.java b/bundles/org.eclipse.passage.loc.workbench/src/org/eclipse/passage/loc/internal/workbench/CreateRoot.java index f0d4e4ddf..a729e274d 100644 --- a/bundles/org.eclipse.passage.loc.workbench/src/org/eclipse/passage/loc/internal/workbench/CreateRoot.java +++ b/bundles/org.eclipse.passage.loc.workbench/src/org/eclipse/passage/loc/internal/workbench/CreateRoot.java @@ -14,10 +14,12 @@ import java.util.Optional; +import org.eclipse.osgi.util.NLS; import org.eclipse.passage.lic.emf.ecore.EditingDomainRegistry; import org.eclipse.passage.lic.emf.edit.ClassifierInitializer; import org.eclipse.passage.lic.emf.meta.EntityMetadata; import org.eclipse.passage.lic.internal.api.MandatoryService; +import org.eclipse.passage.loc.internal.workbench.i18n.WorkbenchMessages; import org.eclipse.passage.loc.internal.workbench.wizards.BaseClassifierWizard; import org.eclipse.passage.loc.internal.workbench.wizards.RootClassifierWizard; @@ -51,4 +53,9 @@ protected BaseClassifierWizard<?> createWizard(Class<R> clazz, EntityMetadata me return new RootClassifierWizard(metadata, initializer, registry); } + @Override + protected String dialogMessage(String typeName) { + return NLS.bind(WorkbenchMessages.CreateRoot_message_new_type, typeName); + } + } diff --git a/bundles/org.eclipse.passage.loc.workbench/src/org/eclipse/passage/loc/internal/workbench/i18n/WorkbenchMessages.java b/bundles/org.eclipse.passage.loc.workbench/src/org/eclipse/passage/loc/internal/workbench/i18n/WorkbenchMessages.java index 144a6c31a..eb082efa7 100644 --- a/bundles/org.eclipse.passage.loc.workbench/src/org/eclipse/passage/loc/internal/workbench/i18n/WorkbenchMessages.java +++ b/bundles/org.eclipse.passage.loc.workbench/src/org/eclipse/passage/loc/internal/workbench/i18n/WorkbenchMessages.java @@ -21,6 +21,7 @@ public class WorkbenchMessages extends NLS { public static String Appearance_e_null_title; public static String BaseClassifierWizardPage_e_null_initializer; public static String BaseClassifierWizardPage_e_null_metadata; + public static String CreateClassifier_text_new_type; public static String CreateDomainResource_e_null_classifier; public static String CreateDomainResource_e_null_context; public static String CreateDomainResource_e_null_domain; @@ -33,6 +34,8 @@ public class WorkbenchMessages extends NLS { public static String CreateFileWizardPage_label_file; public static String CreateFileWizardPage_label_identifier; public static String CreateFileWizardPage_label_name; + public static String CreateInner_message_new_type; + public static String CreateRoot_message_new_type; public static String ExitWorkbenchHandler_exit_message; public static String ExitWorkbenchHandler_exit_title; public static String FileContentDialog_e_unable_read; diff --git a/bundles/org.eclipse.passage.loc.workbench/src/org/eclipse/passage/loc/internal/workbench/i18n/WorkbenchMessages.properties b/bundles/org.eclipse.passage.loc.workbench/src/org/eclipse/passage/loc/internal/workbench/i18n/WorkbenchMessages.properties index e487d3722..ab7c5784f 100644 --- a/bundles/org.eclipse.passage.loc.workbench/src/org/eclipse/passage/loc/internal/workbench/i18n/WorkbenchMessages.properties +++ b/bundles/org.eclipse.passage.loc.workbench/src/org/eclipse/passage/loc/internal/workbench/i18n/WorkbenchMessages.properties @@ -16,6 +16,7 @@ Appearance_e_null_image=Image must not be null Appearance_e_null_labels=LabelProvider must not be null BaseClassifierWizardPage_e_null_initializer=Initializer must not be null BaseClassifierWizardPage_e_null_metadata=Metadata must not be null +CreateClassifier_text_new_type=New {0} CreateDomainResource_e_null_classifier=Classifier must not be null CreateDomainResource_e_null_context=Context must not be null CreateDomainResource_e_null_domain=Domain must not be null @@ -28,6 +29,8 @@ CreateFileWizardPage_e_specify_path=Please specify a file path CreateFileWizardPage_label_file=&File: CreateFileWizardPage_label_identifier=&Identifier: CreateFileWizardPage_label_name=&Name: +CreateInner_message_new_type=Please specify properties for new {0} +CreateRoot_message_new_type=Please specify a file name to store new {0} ExitWorkbenchHandler_exit_message=Do you want to exit the product? ExitWorkbenchHandler_exit_title=Exit dialog FileContentDialog_e_unable_read=Error unable to read: diff --git a/bundles/org.eclipse.passage.loc.workbench/src/org/eclipse/passage/loc/internal/workbench/wizards/BaseClassifierWizardPage.java b/bundles/org.eclipse.passage.loc.workbench/src/org/eclipse/passage/loc/internal/workbench/wizards/BaseClassifierWizardPage.java index fa59e17ad..bab69817f 100644 --- a/bundles/org.eclipse.passage.loc.workbench/src/org/eclipse/passage/loc/internal/workbench/wizards/BaseClassifierWizardPage.java +++ b/bundles/org.eclipse.passage.loc.workbench/src/org/eclipse/passage/loc/internal/workbench/wizards/BaseClassifierWizardPage.java @@ -23,6 +23,8 @@ import org.eclipse.passage.lic.emf.edit.ClassifierInitializer; import org.eclipse.passage.lic.emf.meta.EntityMetadata; import org.eclipse.passage.loc.internal.workbench.i18n.WorkbenchMessages; +import org.eclipse.passage.moveto.lic.emf.edit.EObjectDefaultIdentifier; +import org.eclipse.passage.moveto.lic.emf.edit.EObjectDefaultName; import org.eclipse.swt.SWT; import org.eclipse.swt.events.ModifyListener; import org.eclipse.swt.widgets.Composite; @@ -106,8 +108,8 @@ private void createIdentifierGroup(Composite composite) { } protected void initControls(ClassifierInitializer initializer) { - textId.setText(initializer.newObjectIdentifier()); - textName.setText(initializer.newObjectName()); + textId.setText(new EObjectDefaultIdentifier(eClass).get()); + textName.setText(new EObjectDefaultName(eClass).get()); } protected boolean validatePage() { diff --git a/bundles/org.eclipse.passage.loc.workbench/src/org/eclipse/passage/loc/internal/workbench/wizards/InnerClassifierWizard.java b/bundles/org.eclipse.passage.loc.workbench/src/org/eclipse/passage/loc/internal/workbench/wizards/InnerClassifierWizard.java index cbb7e19e7..48806c0c6 100644 --- a/bundles/org.eclipse.passage.loc.workbench/src/org/eclipse/passage/loc/internal/workbench/wizards/InnerClassifierWizard.java +++ b/bundles/org.eclipse.passage.loc.workbench/src/org/eclipse/passage/loc/internal/workbench/wizards/InnerClassifierWizard.java @@ -3,6 +3,7 @@ import java.util.NoSuchElementException; import java.util.Optional; +import org.eclipse.emf.ecore.EClass; import org.eclipse.emf.ecore.EObject; import org.eclipse.emf.ecore.EReference; import org.eclipse.emf.ecore.resource.Resource; @@ -73,13 +74,16 @@ protected void store(Optional<R> container, EObject candidate) { if (!container.isPresent()) { return; } - EReference reference = candidate.eClass().getEAllReferences().stream()// - .filter(r -> r.isContainer())// - .findFirst()// - .get(); + EReference reference = containerEReference(candidate.eClass()).get(); candidate.eSet(reference, container.get()); Resource resource = candidate.eResource(); - Optional.ofNullable(resource).ifPresent(r -> LocWokbench.save(r)); + Optional.ofNullable(resource).ifPresent(LocWokbench::save); + } + + private Optional<EReference> containerEReference(EClass eClass) { + return eClass.getEAllReferences().stream()// + .filter(EReference::isContainer)// + .findFirst(); } } diff --git a/bundles/org.eclipse.passage.loc.workbench/src/org/eclipse/passage/loc/internal/workbench/wizards/InnerClassifierWizardPage.java b/bundles/org.eclipse.passage.loc.workbench/src/org/eclipse/passage/loc/internal/workbench/wizards/InnerClassifierWizardPage.java index 7c0b995b6..6870c18ef 100644 --- a/bundles/org.eclipse.passage.loc.workbench/src/org/eclipse/passage/loc/internal/workbench/wizards/InnerClassifierWizardPage.java +++ b/bundles/org.eclipse.passage.loc.workbench/src/org/eclipse/passage/loc/internal/workbench/wizards/InnerClassifierWizardPage.java @@ -8,6 +8,7 @@ import java.util.Optional; import java.util.function.Supplier; +import org.eclipse.e4.core.contexts.EclipseContextFactory; import org.eclipse.jface.layout.GridDataFactory; import org.eclipse.osgi.util.NLS; import org.eclipse.passage.lic.emf.edit.ClassifierInitializer; @@ -16,13 +17,17 @@ import org.eclipse.passage.lic.internal.api.MandatoryService; import org.eclipse.passage.loc.internal.api.ComposableClassSupply; import org.eclipse.passage.loc.internal.api.InstanceSupply; +import org.eclipse.passage.loc.internal.workbench.MandatoryEclipseContext; import org.eclipse.passage.loc.internal.workbench.SelectRequest; import org.eclipse.passage.loc.internal.workbench.i18n.WorkbenchMessages; +import org.eclipse.passage.moveto.lic.emf.edit.EClassName; import org.eclipse.swt.SWT; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Label; +import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.widgets.Text; +import org.osgi.framework.FrameworkUtil; /** * Provides UI to to fulfill the field values for an inner classifier to be @@ -37,6 +42,7 @@ public final class InnerClassifierWizardPage<R> extends BaseClassifierWizardPage private final SelectRequest<R> request; private final MandatoryService context; + private final MandatoryEclipseContext forward; private Text text; @@ -45,18 +51,18 @@ protected InnerClassifierWizardPage(EntityMetadata metadata, ClassifierInitializ super(InnerClassifierWizardPage.class.getSimpleName(), metadata, initializer); this.request = request; this.context = context; + this.forward = new MandatoryEclipseContext(EclipseContextFactory + .createServiceContext(FrameworkUtil.getBundle(getClass()).getBundleContext()).createChild()); } @Override protected void createFieldControls(Composite composite) { - text = createTextButtonBlock(composite, labelForContainer(), () -> selectContainer()); + text = createTextButtonBlock(composite, // + new EClassName(containerMetadata().get().eClass()).get(), // + this::selectContainer); super.createFieldControls(composite); } - private String labelForContainer() { - return containerMetadata().get().eClass().getName(); - } - private Optional<EntityMetadata> containerMetadata() { return context.get(ComposableClassMetadata.class).find(request.target()); } @@ -70,6 +76,7 @@ private Text createTextButtonBlock(Composite composite, String labelText, Suppli parent.setLayoutData(GridDataFactory.fillDefaults().grab(true, false).create()); Button select = new Button(composite, SWT.PUSH); select.setText(WorkbenchMessages.InnerClassifierWizardPage_text_select); + forward.get().set(Shell.class, getShell()); select.addSelectionListener(widgetSelectedAdapter(event -> updateText(supplier.get()))); select.setLayoutData(GridDataFactory.fillDefaults().create()); return parent; @@ -96,7 +103,7 @@ protected void initControls(ClassifierInitializer initializer) { private Optional<?> selectContainer() { Collection<R> initial = new ArrayList<>(); container().ifPresent(initial::add); - Optional<InstanceSupply<?>> found = context.get(ComposableClassSupply.class).find(request.target(), context); + Optional<InstanceSupply<?>> found = context.get(ComposableClassSupply.class).find(request.target(), forward); if (found.isPresent()) { return found.get().supply(); } @@ -106,8 +113,8 @@ private Optional<?> selectContainer() { @Override protected boolean validatePage() { if (!Optional.ofNullable(text.getData()).isPresent()) { - setErrorMessage( - NLS.bind(WorkbenchMessages.InnerClassifierWizardPage_e_specify_container, labelForContainer())); + setErrorMessage(NLS.bind(WorkbenchMessages.InnerClassifierWizardPage_e_specify_container, + new EClassName(containerMetadata().get().eClass()).get())); return false; } return super.validatePage(); diff --git a/bundles/org.eclipse.passage.loc.workbench/src/org/eclipse/passage/loc/workbench/LocWokbench.java b/bundles/org.eclipse.passage.loc.workbench/src/org/eclipse/passage/loc/workbench/LocWokbench.java index fc68fce88..50831c2b3 100644 --- a/bundles/org.eclipse.passage.loc.workbench/src/org/eclipse/passage/loc/workbench/LocWokbench.java +++ b/bundles/org.eclipse.passage.loc.workbench/src/org/eclipse/passage/loc/workbench/LocWokbench.java @@ -32,17 +32,13 @@ import org.eclipse.equinox.app.IApplicationContext; import org.eclipse.jface.dialogs.Dialog; import org.eclipse.jface.dialogs.MessageDialog; -import org.eclipse.jface.window.Window; -import org.eclipse.jface.wizard.Wizard; -import org.eclipse.jface.wizard.WizardDialog; import org.eclipse.passage.lic.emf.ecore.EditingDomainRegistry; -import org.eclipse.passage.lic.emf.edit.ClassifierInitializer; import org.eclipse.passage.lic.emf.edit.ComposedAdapterFactoryProvider; import org.eclipse.passage.lic.emf.edit.EditingDomainRegistryAccess; -import org.eclipse.passage.lic.emf.meta.PlainEntityMetadata; import org.eclipse.passage.lic.jface.resource.LicensingImages; +import org.eclipse.passage.loc.internal.workbench.CreateRoot; +import org.eclipse.passage.loc.internal.workbench.MandatoryEclipseContext; import org.eclipse.passage.loc.internal.workbench.i18n.WorkbenchMessages; -import org.eclipse.passage.loc.internal.workbench.wizards.RootClassifierWizard; import org.eclipse.passage.loc.jface.dialogs.FilteredSelectionDialog; import org.eclipse.passage.loc.jface.dialogs.LabelSearchFilter; import org.eclipse.passage.loc.workbench.viewers.DomainRegistryLabelProvider; @@ -89,20 +85,9 @@ private static String maskExtension(String extension) { public static void createDomainResource(IEclipseContext context, String domain, String perspectiveId) { EditingDomainRegistryAccess registryAccess = context.get(EditingDomainRegistryAccess.class); - ClassifierInitializer initializer = registryAccess.getClassifierInitializer(domain); EditingDomainRegistry<?> registry = registryAccess.getDomainRegistry(domain); - PlainEntityMetadata metadata = new PlainEntityMetadata(registry.getContentClassifier(), - registry.getContentIdentifierAttribute(), registry.getContentNameAttribute()); - Wizard wizard = new RootClassifierWizard(metadata, initializer, registry); - WizardDialog dialog = new WizardDialog(context.get(Shell.class), wizard); - dialog.create(); - dialog.setTitle(initializer.newObjectTitle()); - dialog.setMessage(initializer.newFileMessage()); - Shell createdShell = dialog.getShell(); - createdShell.setText(initializer.newObjectMessage()); - createdShell.setImage(LicensingImages.getImage(registry.getContentClassifier().getName())); - int open = dialog.open(); - if (open == Window.OK) { + if (new CreateRoot<>(new MandatoryEclipseContext(context), domain, registry.getContentClass()).get() + .isPresent()) { LocWokbench.switchPerspective(context, perspectiveId); } } diff --git a/bundles/org.eclipse.passage.loc.workbench/src/org/eclipse/passage/moveto/lic/emf/edit/EClassName.java b/bundles/org.eclipse.passage.loc.workbench/src/org/eclipse/passage/moveto/lic/emf/edit/EClassName.java new file mode 100644 index 000000000..e0fdec58c --- /dev/null +++ b/bundles/org.eclipse.passage.loc.workbench/src/org/eclipse/passage/moveto/lic/emf/edit/EClassName.java @@ -0,0 +1,45 @@ +/******************************************************************************* + * Copyright (c) 2020 ArSysOp + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * https://www.eclipse.org/legal/epl-2.0/. + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * ArSysOp - initial API and implementation + *******************************************************************************/ +package org.eclipse.passage.moveto.lic.emf.edit; + +import java.util.Objects; +import java.util.function.Supplier; + +import org.eclipse.emf.ecore.EClass; +import org.eclipse.osgi.util.NLS; + +/** + * + * Retrieves localized name for a given {@link EClass} + * + */ +public class EClassName implements Supplier<String> { + + private final EClassResources resources; + + public EClassName(EClassResources resources) { + Objects.requireNonNull(resources, "Null EClassResources"); //$NON-NLS-1$ + this.resources = resources; + } + + public EClassName(EClass eClass) { + Objects.requireNonNull(eClass, "Null EClass"); //$NON-NLS-1$ + this.resources = new EClassResources(eClass); + } + + @Override + public String get() { + return resources.get().getString(NLS.bind("_UI_{0}_type", resources.eClass().getName())); //$NON-NLS-1$ + } + +} diff --git a/bundles/org.eclipse.passage.loc.workbench/src/org/eclipse/passage/moveto/lic/emf/edit/EClassResources.java b/bundles/org.eclipse.passage.loc.workbench/src/org/eclipse/passage/moveto/lic/emf/edit/EClassResources.java new file mode 100644 index 000000000..bd7edb82f --- /dev/null +++ b/bundles/org.eclipse.passage.loc.workbench/src/org/eclipse/passage/moveto/lic/emf/edit/EClassResources.java @@ -0,0 +1,81 @@ +/******************************************************************************* + * Copyright (c) 2020 ArSysOp + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * https://www.eclipse.org/legal/epl-2.0/. + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * ArSysOp - initial API and implementation + *******************************************************************************/ +package org.eclipse.passage.moveto.lic.emf.edit; + +import java.util.Objects; +import java.util.Optional; +import java.util.function.Supplier; + +import org.eclipse.emf.common.util.ResourceLocator; +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.EObject; +import org.eclipse.emf.edit.EMFEditPlugin; +import org.eclipse.emf.edit.provider.ComposedAdapterFactory; +import org.eclipse.emf.edit.provider.IItemLabelProvider; + +/** + * + * Supplies EMF {@link ResourceLocator} for a given {@link EObject} or + * {@link EClass} + * + */ +public class EClassResources implements Supplier<ResourceLocator> { + + private final ComposedAdapterFactory adapterFactory; + private final EObject eObject; + + public EClassResources(EObject eObject) { + this(eObject, // + new ComposedAdapterFactory(ComposedAdapterFactory.Descriptor.Registry.INSTANCE)); + } + + public EClassResources(EClass eClass) { + this(eClass.getEPackage().getEFactoryInstance().create(eClass), + new ComposedAdapterFactory(ComposedAdapterFactory.Descriptor.Registry.INSTANCE)); + } + + public EClassResources(EObject eObject, ComposedAdapterFactory adapterFactory) { + Objects.requireNonNull(eObject, "Null EObject"); //$NON-NLS-1$ + Objects.requireNonNull(adapterFactory, "Null ComposedAdapterFactory"); //$NON-NLS-1$ + this.eObject = eObject; + this.adapterFactory = adapterFactory; + } + + /** + * The {@link EClass} that these resources dedicated for + * + * @return the {@link EClass} + */ + public EClass eClass() { + return eObject.eClass(); + } + + /** + * The {@link ComposedAdapterFactory} that will be used to resolve resoures + * + * @return the {@link EClass} + */ + public ComposedAdapterFactory adapterFactory() { + return adapterFactory; + } + + @Override + public ResourceLocator get() { + return Optional.ofNullable(// + adapterFactory.adapt(eObject, IItemLabelProvider.class))// + .filter(ResourceLocator.class::isInstance)// + .map(ResourceLocator.class::cast)// + .orElse(EMFEditPlugin.INSTANCE); + } + +} diff --git a/bundles/org.eclipse.passage.loc.workbench/src/org/eclipse/passage/moveto/lic/emf/edit/EObjectDefaultIdentifier.java b/bundles/org.eclipse.passage.loc.workbench/src/org/eclipse/passage/moveto/lic/emf/edit/EObjectDefaultIdentifier.java new file mode 100644 index 000000000..8d4b71395 --- /dev/null +++ b/bundles/org.eclipse.passage.loc.workbench/src/org/eclipse/passage/moveto/lic/emf/edit/EObjectDefaultIdentifier.java @@ -0,0 +1,45 @@ +/******************************************************************************* + * Copyright (c) 2020 ArSysOp + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * https://www.eclipse.org/legal/epl-2.0/. + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * ArSysOp - initial API and implementation + *******************************************************************************/ +package org.eclipse.passage.moveto.lic.emf.edit; + +import java.util.Objects; +import java.util.function.Supplier; + +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.EObject; + +/** + * + * Retrieves localized name for a new {@link EObject} + * + */ +public class EObjectDefaultIdentifier implements Supplier<String> { + + private final EObjectDefaultName name; + + public EObjectDefaultIdentifier(EClassResources resources) { + Objects.requireNonNull(resources, "Null EClassResources"); //$NON-NLS-1$ + this.name = new EObjectDefaultName(resources); + } + + public EObjectDefaultIdentifier(EClass eClass) { + Objects.requireNonNull(eClass, "Null EClass"); //$NON-NLS-1$ + this.name = new EObjectDefaultName(eClass); + } + + @Override + public String get() { + return name.get().replace(' ', '.').toLowerCase(); + } + +} diff --git a/bundles/org.eclipse.passage.loc.workbench/src/org/eclipse/passage/moveto/lic/emf/edit/EObjectDefaultName.java b/bundles/org.eclipse.passage.loc.workbench/src/org/eclipse/passage/moveto/lic/emf/edit/EObjectDefaultName.java new file mode 100644 index 000000000..563881237 --- /dev/null +++ b/bundles/org.eclipse.passage.loc.workbench/src/org/eclipse/passage/moveto/lic/emf/edit/EObjectDefaultName.java @@ -0,0 +1,47 @@ +/******************************************************************************* + * Copyright (c) 2020 ArSysOp + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * https://www.eclipse.org/legal/epl-2.0/. + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * ArSysOp - initial API and implementation + *******************************************************************************/ +package org.eclipse.passage.moveto.lic.emf.edit; + +import java.util.Objects; +import java.util.function.Supplier; + +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.EObject; +import org.eclipse.osgi.util.NLS; +import org.eclipse.passage.moveto.lic.internal.emf.edit.i18n.EmfEditMessages; + +/** + * + * Retrieves localized name for a new {@link EObject} + * + */ +public class EObjectDefaultName implements Supplier<String> { + + private final EClassResources resources; + + public EObjectDefaultName(EClassResources resources) { + Objects.requireNonNull(resources, "Null EClassResources"); //$NON-NLS-1$ + this.resources = resources; + } + + public EObjectDefaultName(EClass eClass) { + Objects.requireNonNull(eClass, "Null EClass"); //$NON-NLS-1$ + this.resources = new EClassResources(eClass); + } + + @Override + public String get() { + return NLS.bind(EmfEditMessages.EObjectDefaultName_new, new EClassName(resources).get()); + } + +} diff --git a/bundles/org.eclipse.passage.loc.workbench/src/org/eclipse/passage/moveto/lic/internal/emf/edit/i18n/EmfEditMessages.java b/bundles/org.eclipse.passage.loc.workbench/src/org/eclipse/passage/moveto/lic/internal/emf/edit/i18n/EmfEditMessages.java new file mode 100644 index 000000000..52b027d41 --- /dev/null +++ b/bundles/org.eclipse.passage.loc.workbench/src/org/eclipse/passage/moveto/lic/internal/emf/edit/i18n/EmfEditMessages.java @@ -0,0 +1,27 @@ +/******************************************************************************* + * Copyright (c) 2020 ArSysOp + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * https://www.eclipse.org/legal/epl-2.0/. + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * ArSysOp - initial API and implementation + *******************************************************************************/ +package org.eclipse.passage.moveto.lic.internal.emf.edit.i18n; + +import org.eclipse.osgi.util.NLS; + +public class EmfEditMessages extends NLS { + private static final String BUNDLE_NAME = "org.eclipse.passage.moveto.lic.internal.emf.edit.i18n.EmfEditMessages"; //$NON-NLS-1$ + public static String EObjectDefaultName_new; + static { + // initialize resource bundle + NLS.initializeMessages(BUNDLE_NAME, EmfEditMessages.class); + } + + private EmfEditMessages() { + } +} diff --git a/bundles/org.eclipse.passage.loc.workbench/src/org/eclipse/passage/moveto/lic/internal/emf/edit/i18n/EmfEditMessages.properties b/bundles/org.eclipse.passage.loc.workbench/src/org/eclipse/passage/moveto/lic/internal/emf/edit/i18n/EmfEditMessages.properties new file mode 100644 index 000000000..7fc739162 --- /dev/null +++ b/bundles/org.eclipse.passage.loc.workbench/src/org/eclipse/passage/moveto/lic/internal/emf/edit/i18n/EmfEditMessages.properties @@ -0,0 +1,14 @@ +############################################################################### +# Copyright (c) 2020 ArSysOp and others +# +# This program and the accompanying materials are made available under the +# terms of the Eclipse Public License 2.0 which is available at +# https://www.eclipse.org/legal/epl-2.0/. +# +# SPDX-License-Identifier: EPL-2.0 +# +# Contributors: +# ArSysOp - initial API and implementation +############################################################################### + +EObjectDefaultName_new=New {0} diff --git a/tests/org.eclipse.passage.loc.workbench.tests/META-INF/MANIFEST.MF b/tests/org.eclipse.passage.loc.workbench.tests/META-INF/MANIFEST.MF index 5438cd120..a0dcb26bd 100644 --- a/tests/org.eclipse.passage.loc.workbench.tests/META-INF/MANIFEST.MF +++ b/tests/org.eclipse.passage.loc.workbench.tests/META-INF/MANIFEST.MF @@ -8,4 +8,5 @@ Bundle-Vendor: %Bundle-Vendor Bundle-Copyright: %Bundle-Copyright Bundle-RequiredExecutionEnvironment: JavaSE-1.8 Fragment-Host: org.eclipse.passage.loc.workbench -Require-Bundle: org.junit;bundle-version="4.12.0" +Require-Bundle: org.eclipse.emf.ecore.edit;bundle-version="2.13.0", + org.junit;bundle-version="4.12.0" diff --git a/tests/org.eclipse.passage.loc.workbench.tests/src/org/eclipse/passage/moveto/lic/emf/edit/tests/EClassNameTest.java b/tests/org.eclipse.passage.loc.workbench.tests/src/org/eclipse/passage/moveto/lic/emf/edit/tests/EClassNameTest.java new file mode 100644 index 000000000..8e27141a6 --- /dev/null +++ b/tests/org.eclipse.passage.loc.workbench.tests/src/org/eclipse/passage/moveto/lic/emf/edit/tests/EClassNameTest.java @@ -0,0 +1,43 @@ +/******************************************************************************* + * Copyright (c) 2020 ArSysOp + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * https://www.eclipse.org/legal/epl-2.0/. + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * ArSysOp - initial API and implementation + *******************************************************************************/ +package org.eclipse.passage.moveto.lic.emf.edit.tests; + +import static org.junit.Assert.assertEquals; + +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.EcorePackage; +import org.eclipse.emf.ecore.provider.EcoreItemProviderAdapterFactory; +import org.eclipse.passage.moveto.lic.emf.edit.EClassName; +import org.eclipse.passage.moveto.lic.emf.edit.EClassResources; +import org.junit.Test; + +public class EClassNameTest { + + @Test(expected = NullPointerException.class) + public void nullEClass() { + new EClassName((EClass) null); + } + + @Test(expected = NullPointerException.class) + public void nullEClassResources() { + new EClassName((EClassResources) null); + } + + @Test + public void positive() { + EClassResources resources = new EClassResources(EcorePackage.eINSTANCE.getEReference()); + resources.adapterFactory().addAdapterFactory(new EcoreItemProviderAdapterFactory()); + assertEquals("EReference", new EClassName(resources).get()); //$NON-NLS-1$ + } + +} diff --git a/tests/org.eclipse.passage.loc.workbench.tests/src/org/eclipse/passage/moveto/lic/emf/edit/tests/EClassResourcesTest.java b/tests/org.eclipse.passage.loc.workbench.tests/src/org/eclipse/passage/moveto/lic/emf/edit/tests/EClassResourcesTest.java new file mode 100644 index 000000000..5b0ef777a --- /dev/null +++ b/tests/org.eclipse.passage.loc.workbench.tests/src/org/eclipse/passage/moveto/lic/emf/edit/tests/EClassResourcesTest.java @@ -0,0 +1,44 @@ +/******************************************************************************* + * Copyright (c) 2020 ArSysOp + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * https://www.eclipse.org/legal/epl-2.0/. + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * ArSysOp - initial API and implementation + *******************************************************************************/ +package org.eclipse.passage.moveto.lic.emf.edit.tests; + +import static org.junit.Assert.assertEquals; + +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.EObject; +import org.eclipse.emf.ecore.EcorePackage; +import org.eclipse.emf.ecore.provider.EReferenceItemProvider; +import org.eclipse.emf.ecore.provider.EcoreItemProviderAdapterFactory; +import org.eclipse.passage.moveto.lic.emf.edit.EClassResources; +import org.junit.Test; + +public class EClassResourcesTest { + + @Test(expected = NullPointerException.class) + public void nullEClass() { + new EClassResources((EClass) null); + } + + @Test(expected = NullPointerException.class) + public void nullEObject() { + new EClassResources((EObject) null); + } + + @Test + public void positive() { + EClassResources resources = new EClassResources(EcorePackage.eINSTANCE.getEReference()); + resources.adapterFactory().addAdapterFactory(new EcoreItemProviderAdapterFactory()); + assertEquals(EReferenceItemProvider.class, resources.get().getClass()); // $NON-NLS-1$ + } + +} diff --git a/tests/org.eclipse.passage.loc.workbench.tests/src/org/eclipse/passage/moveto/lic/emf/edit/tests/EObjectDefaultIdentifierTest.java b/tests/org.eclipse.passage.loc.workbench.tests/src/org/eclipse/passage/moveto/lic/emf/edit/tests/EObjectDefaultIdentifierTest.java new file mode 100644 index 000000000..515ec4eb9 --- /dev/null +++ b/tests/org.eclipse.passage.loc.workbench.tests/src/org/eclipse/passage/moveto/lic/emf/edit/tests/EObjectDefaultIdentifierTest.java @@ -0,0 +1,43 @@ +/******************************************************************************* + * Copyright (c) 2020 ArSysOp + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * https://www.eclipse.org/legal/epl-2.0/. + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * ArSysOp - initial API and implementation + *******************************************************************************/ +package org.eclipse.passage.moveto.lic.emf.edit.tests; + +import static org.junit.Assert.assertEquals; + +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.EcorePackage; +import org.eclipse.emf.ecore.provider.EcoreItemProviderAdapterFactory; +import org.eclipse.passage.moveto.lic.emf.edit.EClassResources; +import org.eclipse.passage.moveto.lic.emf.edit.EObjectDefaultIdentifier; +import org.junit.Test; + +public class EObjectDefaultIdentifierTest { + + @Test(expected = NullPointerException.class) + public void nullEClass() { + new EObjectDefaultIdentifier((EClass) null); + } + + @Test(expected = NullPointerException.class) + public void nullEClassResources() { + new EObjectDefaultIdentifier((EClassResources) null); + } + + @Test + public void positive() { + EClassResources resources = new EClassResources(EcorePackage.eINSTANCE.getEReference()); + resources.adapterFactory().addAdapterFactory(new EcoreItemProviderAdapterFactory()); + assertEquals("new.ereference", new EObjectDefaultIdentifier(resources).get()); //$NON-NLS-1$ + } + +} diff --git a/tests/org.eclipse.passage.loc.workbench.tests/src/org/eclipse/passage/moveto/lic/emf/edit/tests/EObjectDefaultNameTest.java b/tests/org.eclipse.passage.loc.workbench.tests/src/org/eclipse/passage/moveto/lic/emf/edit/tests/EObjectDefaultNameTest.java new file mode 100644 index 000000000..a88302d2d --- /dev/null +++ b/tests/org.eclipse.passage.loc.workbench.tests/src/org/eclipse/passage/moveto/lic/emf/edit/tests/EObjectDefaultNameTest.java @@ -0,0 +1,43 @@ +/******************************************************************************* + * Copyright (c) 2020 ArSysOp + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * https://www.eclipse.org/legal/epl-2.0/. + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * ArSysOp - initial API and implementation + *******************************************************************************/ +package org.eclipse.passage.moveto.lic.emf.edit.tests; + +import static org.junit.Assert.assertEquals; + +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.EcorePackage; +import org.eclipse.emf.ecore.provider.EcoreItemProviderAdapterFactory; +import org.eclipse.passage.moveto.lic.emf.edit.EClassResources; +import org.eclipse.passage.moveto.lic.emf.edit.EObjectDefaultName; +import org.junit.Test; + +public class EObjectDefaultNameTest { + + @Test(expected = NullPointerException.class) + public void nullEClass() { + new EObjectDefaultName((EClass) null); + } + + @Test(expected = NullPointerException.class) + public void nullEClassResources() { + new EObjectDefaultName((EClassResources) null); + } + + @Test + public void positive() { + EClassResources resources = new EClassResources(EcorePackage.eINSTANCE.getEReference()); + resources.adapterFactory().addAdapterFactory(new EcoreItemProviderAdapterFactory()); + assertEquals("New EReference", new EObjectDefaultName(resources).get()); //$NON-NLS-1$ + } + +}