Skip to content

Content of file ECPAbstractCustomControlSWTStub.java

/*******************************************************************************
 * Copyright (c) 2011-2013 EclipseSource Muenchen GmbH and others.
 *
 * 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:
 * Eugen Neufeld - initial API and implementation
 ******************************************************************************/
package org.eclipse.emf.ecp.view.custom.ui.swt.test;

import java.util.Collections;
import java.util.List;
import java.util.Set;

import org.eclipse.emf.common.util.Diagnostic;
import org.eclipse.emf.ecore.EStructuralFeature;
import org.eclipse.emf.ecp.edit.internal.swt.util.SWTControl;
import org.eclipse.emf.ecp.view.spi.custom.model.ECPHardcodedReferences;
import org.eclipse.emf.ecp.view.spi.custom.model.VCustomPackage;
import org.eclipse.emf.ecp.view.spi.custom.swt.ECPAbstractCustomControlSWT;
import org.eclipse.emf.ecp.view.spi.model.VDiagnostic;
import org.eclipse.emf.ecp.view.spi.model.VDomainModelReference;
import org.eclipse.emf.ecp.view.spi.model.VFeaturePathDomainModelReference;
import org.eclipse.emf.ecp.view.spi.renderer.NoPropertyDescriptorFoundExeption;
import org.eclipse.emf.ecp.view.spi.renderer.NoRendererFoundException;
import org.eclipse.emfforms.spi.swt.core.layout.GridDescriptionFactory;
import org.eclipse.emfforms.spi.swt.core.layout.SWTGridCell;
import org.eclipse.emfforms.spi.swt.core.layout.SWTGridDescription;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Label;

/**
 * @author Jonas
 *
 */
public class ECPAbstractCustomControlSWTStub extends ECPAbstractCustomControlSWT implements ECPHardcodedReferences {

	private static final String TEST_MESSAGE = "TestMessage";
	private static final String TEST_TITEL = "TestTitel";
	private boolean rendered;
	private int lastValidationSeverity;
	private EStructuralFeature lastValidationFeature;
	private boolean disposed;
	private Label label;
	private Composite textControl;
	private final boolean withControl;
	private boolean validationReseted;
	private Label validationLabel;
	private Button button;

	/**
	 * @return the validationLabel
	 */
	public Label getValidationLabel() {
		return validationLabel;
	}

	public ECPAbstractCustomControlSWTStub() {
		this(false);
	}

	public ECPAbstractCustomControlSWTStub(boolean withControl) {
		super();
		this.withControl = withControl;
	}

	/**
	 * {@inheritDoc}
	 *
	 * @see org.eclipse.emf.ecp.view.spi.custom.swt.ECPAbstractCustomControlSWT#handleContentValidation()
	 */
	@Override
	protected void handleContentValidation() {
		if (getCustomControl().getDiagnostic() == null) {
			setValidationReseted(true);
		}
		final VDiagnostic diagnostic = getCustomControl().getDiagnostic();
		if (diagnostic.getDiagnostics().size() == 0) {
			setValidationReseted(true);
		}
		for (final Object diagnosticObject : diagnostic.getDiagnostics()) {
			final Diagnostic diagnostic2 = (Diagnostic) diagnosticObject;
			if (diagnostic2.getSeverity() == Diagnostic.OK) {
				setValidationReseted(true);
			} else {
				setLastValidationSeverity(diagnostic2.getSeverity());
				setLastValidationFeature((EStructuralFeature) diagnostic2.getData().get(1));
			}
		}
	}

	/**
	 * {@inheritDoc}
	 *
	 * @see org.eclipse.emf.ecp.view.spi.custom.swt.ECPAbstractCustomControlSWT#getGridDescription()
	 */
	@Override
	public SWTGridDescription getGridDescription() {
		if (!withControl) {
			return GridDescriptionFactory.INSTANCE.createSimpleGrid(1, 2, null);
		}
		return GridDescriptionFactory.INSTANCE.createSimpleGrid(1, 3, null);
	}

	/**
	 * {@inheritDoc}
	 *
	 * @see org.eclipse.emf.ecp.view.spi.custom.swt.ECPAbstractCustomControlSWT#renderControl(org.eclipse.emfforms.spi.swt.core.layout.SWTGridCell,
	 *      org.eclipse.swt.widgets.Composite)
	 */
	@Override
	public Control renderControl(SWTGridCell cell, Composite parent) throws NoRendererFoundException,
		NoPropertyDescriptorFoundExeption {
		if (cell.getColumn() == 0) {
			label = new Label(parent, SWT.NONE);
			label.setText(ECPAbstractCustomControlSWT_PTest.LABELTEXT);
			setRendered(true);
			return label;
		}
		if (cell.getColumn() == 1 && !withControl) {
			button = new Button(parent, SWT.PUSH);
			return getButton();
		}
		if (cell.getColumn() == 1) {
			validationLabel = createValidationIcon(parent);
			return validationLabel;
		}
		if (cell.getColumn() == 2) {
			final VFeaturePathDomainModelReference controlFeature = (VFeaturePathDomainModelReference) getResolvedDomainModelReference(
				VCustomPackage.eINSTANCE
					.getCustomControl_BundleName());
			setTextControl(getControl(SWTControl.class, controlFeature).createControl(parent));
return getTextControl(); } return null; } /** * {@inheritDoc} * * @see org.eclipse.emf.ecp.view.spi.custom.ui.ECPAbstractCustomControl#disposeCustomControl() */ @Override protected void disposeCustomControl() { setDisposed(true); if (label != null) { label.dispose(); } if (textControl != null) { textControl.dispose(); } if (validationLabel != null) { validationLabel.dispose(); } } /** * @param composite */ public void createValidationLabelInStub(Composite composite) { super.createValidationIcon(composite); } /** * @return the rendered */ public boolean isRendered() { return rendered; } /** * @param rendered the rendered to set */ public void setRendered(boolean rendered) { this.rendered = rendered; } /** * @return the lastValidationSeverity */ public int getLastValidationSeverity() { return lastValidationSeverity; } /** * @param lastValidationSeverity the lastValidationSeverity to set */ public void setLastValidationSeverity(int lastValidationSeverity) { this.lastValidationSeverity = lastValidationSeverity; } /** * @return the lastValidationFeature */ public EStructuralFeature getLastValidationFeature() { return lastValidationFeature; } /** * @param lastValidationFeature the lastValidationFeature to set */ public void setLastValidationFeature(EStructuralFeature lastValidationFeature) { this.lastValidationFeature = lastValidationFeature; } /** * @return the disposed */ public boolean isDisposed() { return disposed; } /** * @param disposed the disposed to set */ public void setDisposed(boolean disposed) { this.disposed = disposed; } /** * @return the textControl */ public Composite getTextControl() { return textControl; } public Label getLabel() { return label; } /** * @param textControl the textControl to set */ public void setTextControl(Composite textControl) { this.textControl = textControl; } /** * @return the validationReseted */ public boolean isValidationReseted() { return validationReseted; } /** * @param validationReseted the validationReseted to set */ public void setValidationReseted(boolean validationReseted) { this.validationReseted = validationReseted; } /** * {@inheritDoc} * * @see org.eclipse.emf.ecp.view.spi.custom.model.ECPHardcodedReferences#getNeededDomainModelReferences() */ @Override public Set<VDomainModelReference> getNeededDomainModelReferences() { return Collections.emptySet(); } public List<VDomainModelReference> getResolvedReferences() { return getResolvedDomainModelReferences(); } public SWTCustomControlHelper getStubSWTHelper() { return super.getHelper(); } public Button getButton() { return button; } }