blob: 2bdbd380ac62d90097d517300464b585efc933be [file] [log] [blame]
/**
* Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), 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 v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Florian Pirchner - Initial implementation
*/
package org.eclipse.osbp.ecview.core.extension.editpart.emf;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.osbp.ecview.core.common.context.IViewContext;
import org.eclipse.osbp.ecview.core.common.editpart.IEditPartManager;
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.core.extension.editpart.emf.commands.AddToTableEditpart;
import org.eclipse.osbp.ecview.core.extension.editpart.emf.commands.RemoveFromTableEditpart;
import org.eclipse.osbp.ecview.core.extension.editpart.emf.commands.SetNewBeanInstanceEditpart;
import org.eclipse.osbp.ecview.core.extension.editpart.emf.datatypes.BrowserDatatypeEditpart;
import org.eclipse.osbp.ecview.core.extension.editpart.emf.datatypes.CheckBoxDatatypeEditpart;
import org.eclipse.osbp.ecview.core.extension.editpart.emf.datatypes.ComboBoxDatatypeEditpart;
import org.eclipse.osbp.ecview.core.extension.editpart.emf.datatypes.DateTimeDatatypeEditpart;
import org.eclipse.osbp.ecview.core.extension.editpart.emf.datatypes.DecimalDatatypeEditpart;
import org.eclipse.osbp.ecview.core.extension.editpart.emf.datatypes.ListDatatypeEditpart;
import org.eclipse.osbp.ecview.core.extension.editpart.emf.datatypes.NumericDatatypeEditpart;
import org.eclipse.osbp.ecview.core.extension.editpart.emf.datatypes.OptionsGroupDatatypeEditpart;
import org.eclipse.osbp.ecview.core.extension.editpart.emf.datatypes.ProgressBarDatatypeEditpart;
import org.eclipse.osbp.ecview.core.extension.editpart.emf.datatypes.TabSheetDatatypeEditpart;
import org.eclipse.osbp.ecview.core.extension.editpart.emf.datatypes.TableDatatypeEditpart;
import org.eclipse.osbp.ecview.core.extension.editpart.emf.datatypes.TextDatatypeEditpart;
import org.eclipse.osbp.ecview.core.extension.editpart.emf.datatypes.TreeDatatypeEditpart;
import org.eclipse.osbp.ecview.core.extension.model.datatypes.ExtDatatypesPackage;
import org.eclipse.osbp.ecview.core.extension.model.datatypes.YBrowserDatatype;
import org.eclipse.osbp.ecview.core.extension.model.datatypes.YCheckBoxDatatype;
import org.eclipse.osbp.ecview.core.extension.model.datatypes.YComboBoxDatatype;
import org.eclipse.osbp.ecview.core.extension.model.datatypes.YDateTimeDatatype;
import org.eclipse.osbp.ecview.core.extension.model.datatypes.YDecimalDatatype;
import org.eclipse.osbp.ecview.core.extension.model.datatypes.YListDataType;
import org.eclipse.osbp.ecview.core.extension.model.datatypes.YNumericDatatype;
import org.eclipse.osbp.ecview.core.extension.model.datatypes.YOptionsGroupDataType;
import org.eclipse.osbp.ecview.core.extension.model.datatypes.YProgressBarDatatype;
import org.eclipse.osbp.ecview.core.extension.model.datatypes.YTabSheetDatatype;
import org.eclipse.osbp.ecview.core.extension.model.datatypes.YTableDatatype;
import org.eclipse.osbp.ecview.core.extension.model.datatypes.YTextAreaDatatype;
import org.eclipse.osbp.ecview.core.extension.model.datatypes.YTextDatatype;
import org.eclipse.osbp.ecview.core.extension.model.datatypes.YTreeDatatype;
import org.eclipse.osbp.ecview.core.extension.model.extension.ExtensionModelPackage;
import org.eclipse.osbp.ecview.core.extension.model.extension.YAbsoluteLayout;
import org.eclipse.osbp.ecview.core.extension.model.extension.YAddToTableCommand;
import org.eclipse.osbp.ecview.core.extension.model.extension.YBeanReferenceField;
import org.eclipse.osbp.ecview.core.extension.model.extension.YBooleanSearchField;
import org.eclipse.osbp.ecview.core.extension.model.extension.YBrowser;
import org.eclipse.osbp.ecview.core.extension.model.extension.YButton;
import org.eclipse.osbp.ecview.core.extension.model.extension.YCheckBox;
import org.eclipse.osbp.ecview.core.extension.model.extension.YComboBox;
import org.eclipse.osbp.ecview.core.extension.model.extension.YCssLayout;
import org.eclipse.osbp.ecview.core.extension.model.extension.YDateTime;
import org.eclipse.osbp.ecview.core.extension.model.extension.YDecimalField;
import org.eclipse.osbp.ecview.core.extension.model.extension.YEnumComboBox;
import org.eclipse.osbp.ecview.core.extension.model.extension.YEnumList;
import org.eclipse.osbp.ecview.core.extension.model.extension.YEnumOptionsGroup;
import org.eclipse.osbp.ecview.core.extension.model.extension.YFilteringComponent;
import org.eclipse.osbp.ecview.core.extension.model.extension.YFormLayout;
import org.eclipse.osbp.ecview.core.extension.model.extension.YGridLayout;
import org.eclipse.osbp.ecview.core.extension.model.extension.YHorizontalLayout;
import org.eclipse.osbp.ecview.core.extension.model.extension.YImage;
import org.eclipse.osbp.ecview.core.extension.model.extension.YKanban;
import org.eclipse.osbp.ecview.core.extension.model.extension.YKanbanVisibilityProcessor;
import org.eclipse.osbp.ecview.core.extension.model.extension.YLabel;
import org.eclipse.osbp.ecview.core.extension.model.extension.YList;
import org.eclipse.osbp.ecview.core.extension.model.extension.YMasterDetail;
import org.eclipse.osbp.ecview.core.extension.model.extension.YNumericField;
import org.eclipse.osbp.ecview.core.extension.model.extension.YNumericSearchField;
import org.eclipse.osbp.ecview.core.extension.model.extension.YOptionsGroup;
import org.eclipse.osbp.ecview.core.extension.model.extension.YPanel;
import org.eclipse.osbp.ecview.core.extension.model.extension.YPasswordField;
import org.eclipse.osbp.ecview.core.extension.model.extension.YProgressBar;
import org.eclipse.osbp.ecview.core.extension.model.extension.YRemoveFromTableCommand;
import org.eclipse.osbp.ecview.core.extension.model.extension.YSearchPanel;
import org.eclipse.osbp.ecview.core.extension.model.extension.YSetNewBeanInstanceCommand;
import org.eclipse.osbp.ecview.core.extension.model.extension.YSlider;
import org.eclipse.osbp.ecview.core.extension.model.extension.YSplitPanel;
import org.eclipse.osbp.ecview.core.extension.model.extension.YSuggestTextField;
import org.eclipse.osbp.ecview.core.extension.model.extension.YTab;
import org.eclipse.osbp.ecview.core.extension.model.extension.YTabSheet;
import org.eclipse.osbp.ecview.core.extension.model.extension.YTable;
import org.eclipse.osbp.ecview.core.extension.model.extension.YTextArea;
import org.eclipse.osbp.ecview.core.extension.model.extension.YTextField;
import org.eclipse.osbp.ecview.core.extension.model.extension.YTextSearchField;
import org.eclipse.osbp.ecview.core.extension.model.extension.YTree;
import org.eclipse.osbp.ecview.core.extension.model.extension.YVerticalLayout;
import org.osgi.service.component.ComponentContext;
import org.osgi.service.component.annotations.Component;
/**
* An implementation of IEditPartManager for eObjects with
* nsURI=http://eclipse.org/emf/emfclient/uimodel.
*/
@Component(immediate = true, service = { IEditPartManager.class })
public class EditpartManager extends AbstractEditpartManager {
protected void activate(ComponentContext context) {
}
protected void deactivate(ComponentContext context) {
}
@Override
public boolean isFor(Object element) {
if (element instanceof EObject) {
String uriString = ((EObject) element).eClass().getEPackage().getNsURI();
return uriString.equals(ExtensionModelPackage.eNS_URI) || uriString.equals(ExtDatatypesPackage.eNS_URI);
} else if (element instanceof String) {
return element.equals(ExtensionModelPackage.eNS_URI) || element.equals(ExtDatatypesPackage.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 YTextField) {
result = createNewInstance(TextFieldEditpart.class);
} else if (yElement instanceof YGridLayout) {
result = createNewInstance(GridLayoutEditpart.class);
} else if (yElement instanceof YCssLayout) {
result = createNewInstance(CssLayoutEditpart.class);
} else if (yElement instanceof YHorizontalLayout) {
result = createNewInstance(HorizontalLayoutEditpart.class);
} else if (yElement instanceof YVerticalLayout) {
result = createNewInstance(VerticalLayoutEditpart.class);
} else if (yElement instanceof YFormLayout) {
result = createNewInstance(FormLayoutEditpart.class);
} else if (yElement instanceof YTable) {
result = createNewInstance(TableEditpart.class);
} else if (yElement instanceof YTree) {
result = createNewInstance(TreeEditpart.class);
} else if (yElement instanceof YLabel) {
result = createNewInstance(LabelEditpart.class);
} else if (yElement instanceof YTextArea) {
result = createNewInstance(TextAreaEditpart.class);
} else if (yElement instanceof YButton) {
result = createNewInstance(ButtonEditpart.class);
} else if (yElement instanceof YCheckBox) {
result = createNewInstance(CheckBoxEditpart.class);
} else if (yElement instanceof YComboBox) {
result = createNewInstance(ComboBoxEditpart.class);
} else if (yElement instanceof YList) {
result = createNewInstance(ListEditpart.class);
} else if (yElement instanceof YOptionsGroup) {
result = createNewInstance(OptionsGroupEditpart.class);
} else if (yElement instanceof YNumericField) {
result = createNewInstance(NumericFieldEditpart.class);
} else if (yElement instanceof YDecimalField) {
result = createNewInstance(DecimalFieldEditpart.class);
} else if (yElement instanceof YDateTime) {
result = createNewInstance(DateTimeEditpart.class);
} else if (yElement instanceof YBrowser) {
result = createNewInstance(BrowserEditpart.class);
} else if (yElement instanceof YProgressBar) {
result = createNewInstance(ProgressBarEditpart.class);
} else if (yElement instanceof YTabSheet) {
result = createNewInstance(TabSheetEditpart.class);
} else if (yElement instanceof YTab) {
result = createNewInstance(TabEditpart.class);
} else if (yElement instanceof YBrowserDatatype) {
result = createNewInstance(BrowserDatatypeEditpart.class);
} else if (yElement instanceof YCheckBoxDatatype) {
result = createNewInstance(CheckBoxDatatypeEditpart.class);
} else if (yElement instanceof YComboBoxDatatype) {
result = createNewInstance(ComboBoxDatatypeEditpart.class);
} else if (yElement instanceof YDateTimeDatatype) {
result = createNewInstance(DateTimeDatatypeEditpart.class);
} else if (yElement instanceof YDecimalDatatype) {
result = createNewInstance(DecimalDatatypeEditpart.class);
} else if (yElement instanceof YListDataType) {
result = createNewInstance(ListDatatypeEditpart.class);
} else if (yElement instanceof YNumericDatatype) {
result = createNewInstance(NumericDatatypeEditpart.class);
} else if (yElement instanceof YOptionsGroupDataType) {
result = createNewInstance(OptionsGroupDatatypeEditpart.class);
} else if (yElement instanceof YProgressBarDatatype) {
result = createNewInstance(ProgressBarDatatypeEditpart.class);
} else if (yElement instanceof YTableDatatype) {
result = createNewInstance(TableDatatypeEditpart.class);
} else if (yElement instanceof YTabSheetDatatype) {
result = createNewInstance(TabSheetDatatypeEditpart.class);
} else if (yElement instanceof YTextAreaDatatype) {
result = createNewInstance(TextAreaEditpart.class);
} else if (yElement instanceof YTextDatatype) {
result = createNewInstance(TextDatatypeEditpart.class);
} else if (yElement instanceof YTreeDatatype) {
result = createNewInstance(TreeDatatypeEditpart.class);
} else if (yElement instanceof YMasterDetail) {
result = createNewInstance(MasterDetailEditpart.class);
} else if (yElement instanceof YImage) {
result = createNewInstance(ImageEditpart.class);
} else if (yElement instanceof YTextSearchField) {
result = createNewInstance(TextSearchFieldEditpart.class);
} else if (yElement instanceof YNumericSearchField) {
result = createNewInstance(NumericSearchFieldEditpart.class);
} else if (yElement instanceof YBooleanSearchField) {
result = createNewInstance(BooleanSearchFieldEditpart.class);
} else if (yElement instanceof YSplitPanel) {
result = createNewInstance(SplitPanelEditpart.class);
} else if (yElement instanceof YPanel) {
result = createNewInstance(PanelEditpart.class);
} else if (yElement instanceof YSearchPanel) {
result = createNewInstance(SearchPanelEditpart.class);
} else if (yElement instanceof YBeanReferenceField) {
result = createNewInstance(BeanReferenceFieldEditpart.class);
} else if (yElement instanceof YEnumComboBox) {
result = createNewInstance(EnumComboBoxEditpart.class);
} else if (yElement instanceof YEnumList) {
result = createNewInstance(EnumListEditpart.class);
} else if (yElement instanceof YEnumOptionsGroup) {
result = createNewInstance(EnumOptionsGroupEditpart.class);
} else if (yElement instanceof YAddToTableCommand) {
result = createNewInstance(AddToTableEditpart.class);
} else if (yElement instanceof YRemoveFromTableCommand) {
result = createNewInstance(RemoveFromTableEditpart.class);
} else if (yElement instanceof YSetNewBeanInstanceCommand) {
result = createNewInstance(SetNewBeanInstanceEditpart.class);
} else if (yElement instanceof YSlider) {
result = createNewInstance(SliderEditpart.class);
} else if (yElement instanceof YAbsoluteLayout) {
result = createNewInstance(AbsoluteLayoutEditpart.class);
} else if (yElement instanceof YSuggestTextField) {
result = createNewInstance(SuggestTextFieldEditpart.class);
} else if (yElement instanceof YPasswordField) {
result = createNewInstance(PasswordFieldEditpart.class);
} else if (yElement instanceof YFilteringComponent) {
result = createNewInstance(FilteringComponentEditpart.class);
} else if (yElement instanceof YKanban) {
result = createNewInstance(KanbanEditpart.class);
} else if (yElement instanceof YKanbanVisibilityProcessor) {
result = createNewInstance(KanbanVisibilityProcessorEditpart.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 {
return type.newInstance();
}
}