blob: 16e2fd437a586ca062809e4d5a9463cfc9fc9129 [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 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.core.extension.editpart.emf;
import org.eclipse.emf.common.notify.Notification;
import org.eclipse.emf.common.notify.Notifier;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.util.EContentAdapter;
import org.eclipse.osbp.ecview.core.common.context.IViewContext;
import org.eclipse.osbp.ecview.core.common.editpart.emf.LayoutEditpart;
import org.eclipse.osbp.ecview.core.common.model.core.YEmbeddable;
import org.eclipse.osbp.ecview.core.extension.model.extension.YAbsoluteLayoutCellStyle;
import org.eclipse.osbp.ecview.core.extension.model.extension.YVerticalLayout;
import org.eclipse.osbp.ecview.core.extension.model.extension.YVerticalLayoutCellStyle;
import org.eclipse.osbp.ecview.core.ui.core.editparts.extension.IVerticalLayoutEditpart;
/**
* The implementation of the IVerticalLayoutEditpart.
*/
public class VerticalLayoutEditpart extends LayoutEditpart<YVerticalLayout>
implements IVerticalLayoutEditpart {
private StylesController stylesController;
@Override
public void initialize(IViewContext context, YVerticalLayout model) {
super.initialize(context, model);
stylesController = new StylesController();
model.eAdapters().add(stylesController);
}
@Override
protected void internalDispose() {
try {
getModel().eAdapters().remove(stylesController);
stylesController = null;
} finally {
super.internalDispose();
}
}
protected void updateCellStyle(YEmbeddable target) {
if (isRendered()) {
getPresentation().updateCellStyle(target);
}
}
/**
* This class automatically connects to all {@link YAbsoluteLayoutCellStyle}
*/
public class StylesController extends EContentAdapter {
/**
* Add this adapter only to EObjects from grid package.
*/
protected void addAdapter(Notifier notifier) {
if (notifier instanceof EObject) {
EObject e = (EObject) notifier;
if (e instanceof YVerticalLayoutCellStyle) {
notifier.eAdapters().add(this);
}
}
}
public void notifyChanged(Notification notification) {
super.notifyChanged(notification);
// notify the layout to update the cell style
if (notification.getNotifier() instanceof YVerticalLayoutCellStyle) {
updateCellStyle(((YVerticalLayoutCellStyle) notification
.getNotifier()).getTarget());
}
}
}
}