blob: b013caa8660ea0c780deabcfcd57057f78061d0d [file] [log] [blame]
/**
*
* Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
* which accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* Florian Pirchner - Initial implementation
*
*/
package org.eclipse.osbp.ecview.extension.editparts.emf;
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.osbp.ecview.core.common.context.IViewContext;
import org.eclipse.osbp.ecview.core.common.editpart.IElementEditpart;
import org.eclipse.osbp.ecview.core.common.editpart.emf.ElementEditpart;
import org.eclipse.osbp.ecview.core.common.editpart.emf.common.AbstractEditpartManager;
import org.eclipse.osbp.ecview.core.common.model.core.YElement;
import org.eclipse.osbp.ecview.extension.editparts.emf.components.BlobUploadComponentEditpart;
import org.eclipse.osbp.ecview.extension.editparts.emf.components.ContentSensitiveLayoutEditpart;
import org.eclipse.osbp.ecview.extension.editparts.emf.components.CustomDecimalFieldEditpart;
import org.eclipse.osbp.ecview.extension.editparts.emf.components.I18nComboBoxEditpart;
import org.eclipse.osbp.ecview.extension.editparts.emf.components.IconComboBoxEditpart;
import org.eclipse.osbp.ecview.extension.editparts.emf.components.PairComboBoxEditpart;
import org.eclipse.osbp.ecview.extension.editparts.emf.converter.CustomDecimalConverterEditpart;
import org.eclipse.osbp.ecview.extension.editparts.emf.converter.DecimalToUomoConverterEditpart;
import org.eclipse.osbp.ecview.extension.editparts.emf.converter.NumericToResourceConverterEditpart;
import org.eclipse.osbp.ecview.extension.editparts.emf.converter.NumericToUomoConverterEditpart;
import org.eclipse.osbp.ecview.extension.editparts.emf.converter.ObjectToStringConverterEditpart;
import org.eclipse.osbp.ecview.extension.editparts.emf.converter.PriceToStringConverterEditpart;
import org.eclipse.osbp.ecview.extension.editparts.emf.converter.QuantityToStringConverterEditpart;
import org.eclipse.osbp.ecview.extension.editparts.emf.converter.SimpleDecimalConverterEditpart;
import org.eclipse.osbp.ecview.extension.editparts.emf.converter.StringToByteArrayConverterEditpart;
import org.eclipse.osbp.ecview.extension.editparts.emf.converter.StringToResourceConverterEditpart;
import org.eclipse.osbp.ecview.extension.editparts.emf.converter.VaaclipseUiThemeToStringConverterEditpart;
import org.eclipse.osbp.ecview.extension.editparts.emf.strategies.DefaultLayoutingStrategyEditpart;
import org.eclipse.osbp.ecview.extension.editparts.emf.strategies.DelegatingFocusingStrategyEditpart;
import org.eclipse.osbp.ecview.extension.editparts.emf.strategies.DelegatingLayoutingStrategyEditpart;
import org.eclipse.osbp.ecview.extension.editparts.emf.visibility.AuthorizationVisibilityProcessorEditpart;
import org.eclipse.osbp.ecview.extension.editparts.emf.visibility.SubTypeVisibilityProcessorEditpart;
import org.eclipse.osbp.ecview.extension.model.YBlobUploadComponent;
import org.eclipse.osbp.ecview.extension.model.YContentSensitiveLayout;
import org.eclipse.osbp.ecview.extension.model.YCustomDecimalField;
import org.eclipse.osbp.ecview.extension.model.YDefaultLayoutingStrategy;
import org.eclipse.osbp.ecview.extension.model.YDelegatingFocusingStrategy;
import org.eclipse.osbp.ecview.extension.model.YDelegatingLayoutingStrategy;
import org.eclipse.osbp.ecview.extension.model.YECviewPackage;
import org.eclipse.osbp.ecview.extension.model.YI18nComboBox;
import org.eclipse.osbp.ecview.extension.model.YIconComboBox;
import org.eclipse.osbp.ecview.extension.model.YLayoutingInfo;
import org.eclipse.osbp.ecview.extension.model.YMaskedDecimalField;
import org.eclipse.osbp.ecview.extension.model.YMaskedNumericField;
import org.eclipse.osbp.ecview.extension.model.YMaskedTextField;
import org.eclipse.osbp.ecview.extension.model.YPairComboBox;
import org.eclipse.osbp.ecview.extension.model.YPrefixedMaskedTextField;
import org.eclipse.osbp.ecview.extension.model.YQuantityTextField;
import org.eclipse.osbp.ecview.extension.model.YRichTextArea;
import org.eclipse.osbp.ecview.extension.model.YStrategyLayout;
import org.eclipse.osbp.ecview.extension.model.YSuspect;
import org.eclipse.osbp.ecview.extension.model.YSuspectInfo;
import org.eclipse.osbp.ecview.extension.model.converter.YConverterPackage;
import org.eclipse.osbp.ecview.extension.model.converter.YCustomDecimalConverter;
import org.eclipse.osbp.ecview.extension.model.converter.YDecimalToUomoConverter;
import org.eclipse.osbp.ecview.extension.model.converter.YNumericToResourceConverter;
import org.eclipse.osbp.ecview.extension.model.converter.YNumericToUomoConverter;
import org.eclipse.osbp.ecview.extension.model.converter.YObjectToStringConverter;
import org.eclipse.osbp.ecview.extension.model.converter.YPriceToStringConverter;
import org.eclipse.osbp.ecview.extension.model.converter.YQuantityToStringConverter;
import org.eclipse.osbp.ecview.extension.model.converter.YSimpleDecimalConverter;
import org.eclipse.osbp.ecview.extension.model.converter.YStringToByteArrayConverter;
import org.eclipse.osbp.ecview.extension.model.converter.YStringToResourceConverter;
import org.eclipse.osbp.ecview.extension.model.converter.YVaaclipseUiThemeToStringConverter;
import org.eclipse.osbp.ecview.extension.model.visibility.YAuthorizationVisibilityProcessor;
import org.eclipse.osbp.ecview.extension.model.visibility.YSubTypeVisibilityProcessor;
import org.eclipse.osbp.ecview.extension.model.visibility.YVisibilityPackage;
import org.osgi.service.component.ComponentContext;
/**
* An implementation of IEditPartManager for eObjects with
* nsURI=http://eclipse.org/emf/emfclient/uimodel.
*/
public class EditpartManager extends AbstractEditpartManager {
/**
* Activate.
*
* @param context
* the context
*/
protected void activate(ComponentContext context) {
}
/**
* Deactivate.
*
* @param context
* the context
*/
protected void deactivate(ComponentContext context) {
}
/*
* (non-Javadoc)
*
* @see
* org.eclipse.osbp.ecview.core.common.editpart.IEditPartManager#isFor(java
* .lang.Object)
*/
@Override
public boolean isFor(Object element) {
if (element instanceof EObject) {
String uriString = ((EObject) element).eClass().getEPackage().getNsURI();
return uriString.equals(YECviewPackage.eNS_URI) || uriString.equals(YConverterPackage.eNS_URI)
|| uriString.equals(YVisibilityPackage.eNS_URI);
} else if (element instanceof String) {
return element.equals(YECviewPackage.eNS_URI) || element.equals(YConverterPackage.eNS_URI)
|| element.equals(YVisibilityPackage.eNS_URI);
}
return false;
}
/**
* Creates a new instance of the edit part.
*
* @param <A>
* an instance of {@link IElementEditpart}
* @param yElement
* the model element
* @return editpart
*/
@SuppressWarnings("unchecked")
protected <A extends IElementEditpart> A createEditpart(IViewContext context, Object yElement) {
// asserts that no editpart was created already for the given element
assertOneEditpartForModelelement(yElement);
ElementEditpart<YElement> result = null;
if (yElement instanceof YStrategyLayout) {
result = createNewInstance(StrategyLayoutEditpart.class);
} else if (yElement instanceof YDefaultLayoutingStrategy) {
result = createNewInstance(DefaultLayoutingStrategyEditpart.class);
} else if (yElement instanceof YDelegatingLayoutingStrategy) {
result = createNewInstance(DelegatingLayoutingStrategyEditpart.class);
} else if (yElement instanceof YSuspect) {
result = createNewInstance(SuspectEditpart.class);
} else if (yElement instanceof YSuspectInfo) {
result = createNewInstance(SuspectLayoutingInfoEditpart.class);
} else if (yElement instanceof YLayoutingInfo) {
result = createNewInstance(LayoutingInfoEditpart.class);
} else if (yElement instanceof YDelegatingFocusingStrategy) {
result = createNewInstance(DelegatingFocusingStrategyEditpart.class);
// custom component BlobUploadComponent
} else if (yElement instanceof YBlobUploadComponent) {
result = createNewInstance(BlobUploadComponentEditpart.class);
} else if (yElement instanceof YCustomDecimalField) {
result = createNewInstance(CustomDecimalFieldEditpart.class);
} else if (yElement instanceof YObjectToStringConverter) {
result = createNewInstance(ObjectToStringConverterEditpart.class);
} else if (yElement instanceof YVaaclipseUiThemeToStringConverter) {
result = createNewInstance(VaaclipseUiThemeToStringConverterEditpart.class);
} else if (yElement instanceof YStringToResourceConverter) {
result = createNewInstance(StringToResourceConverterEditpart.class);
} else if (yElement instanceof YNumericToResourceConverter) {
result = createNewInstance(NumericToResourceConverterEditpart.class);
} else if (yElement instanceof YQuantityToStringConverter) {
result = createNewInstance(QuantityToStringConverterEditpart.class);
} else if (yElement instanceof YPriceToStringConverter) {
result = createNewInstance(PriceToStringConverterEditpart.class);
} else if (yElement instanceof YNumericToUomoConverter) {
result = createNewInstance(NumericToUomoConverterEditpart.class);
} else if (yElement instanceof YDecimalToUomoConverter) {
result = createNewInstance(DecimalToUomoConverterEditpart.class);
} else if (yElement instanceof YCustomDecimalConverter) {
result = createNewInstance(CustomDecimalConverterEditpart.class);
} else if (yElement instanceof YSimpleDecimalConverter) {
result = createNewInstance(SimpleDecimalConverterEditpart.class);
} else if (yElement instanceof YQuantityTextField) {
result = createNewInstance(QuantityTextfieldEditpart.class);
} else if (yElement instanceof YAuthorizationVisibilityProcessor) {
result = createNewInstance(AuthorizationVisibilityProcessorEditpart.class);
} else if (yElement instanceof YIconComboBox) {
result = createNewInstance(IconComboBoxEditpart.class);
} else if (yElement instanceof YI18nComboBox) {
result = createNewInstance(I18nComboBoxEditpart.class);
} else if (yElement instanceof YPairComboBox) {
result = createNewInstance(PairComboBoxEditpart.class);
} else if (yElement instanceof YContentSensitiveLayout) {
result = createNewInstance(ContentSensitiveLayoutEditpart.class);
} else if (yElement instanceof YSubTypeVisibilityProcessor) {
result = createNewInstance(SubTypeVisibilityProcessorEditpart.class);
} else if (yElement instanceof YRichTextArea) {
result = createNewInstance(RichTextAreaEditpart.class);
} else if (yElement instanceof YMaskedTextField) {
result = createNewInstance(MaskedTextFieldEditpart.class);
} else if (yElement instanceof YMaskedNumericField) {
result = createNewInstance(MaskedNumericFieldEditpart.class);
} else if (yElement instanceof YMaskedDecimalField) {
result = createNewInstance(MaskedDecimalFieldEditpart.class);
} else if (yElement instanceof YPrefixedMaskedTextField) {
result = createNewInstance(PrefixedMaskedTextFieldEditpart.class);
} else if (yElement instanceof YStringToByteArrayConverter) {
result = createNewInstance(StringToByteArrayConverterEditpart.class);
}
if (result != null) {
result.initialize(context, (YElement) yElement);
}
return (A) result;
}
/**
* Returns a new instance of the type.
*
* @param type
* The type of the editpart for which an instance should be
* created.
* @return editPart
* @throws InstantiationException
* e
* @throws IllegalAccessException
* e
*/
protected IElementEditpart newInstance(Class<? extends IElementEditpart> type) throws InstantiationException, IllegalAccessException {
try {
Constructor<? extends IElementEditpart> c = type.getDeclaredConstructor(new Class<?>[0]);
if (!c.isAccessible()) {
c.setAccessible(true);
return c.newInstance(new Object[0]);
}
} catch (NoSuchMethodException e) {
throw new IllegalStateException(e);
} catch (SecurityException e) {
throw new IllegalStateException(e);
} catch (IllegalArgumentException e) {
throw new IllegalStateException(e);
} catch (InvocationTargetException e) {
throw new IllegalStateException(e);
}
return type.newInstance();
}
}