blob: 767085bc9d0b87d139091e8f2dbe8a0bb395c9d1 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2011-2014 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 - initial API and implementation
******************************************************************************/
package org.eclipse.emf.ecp.view.ui.editor.test;
import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.EStructuralFeature.Setting;
import org.eclipse.emf.ecore.EcoreFactory;
import org.eclipse.emf.ecore.EcorePackage;
import org.eclipse.emf.ecp.view.internal.table.swt.CellReadOnlyTesterHelper;
import org.eclipse.emf.ecp.view.spi.model.VDomainModelReference;
import org.eclipse.emf.ecp.view.spi.model.VView;
import org.eclipse.emf.ecp.view.spi.model.VViewFactory;
import org.eclipse.emf.ecp.view.spi.table.model.VTableControl;
import org.eclipse.emf.ecp.view.spi.table.swt.ECPCellReadOnlyTester;
import org.eclipse.emf.ecp.view.table.test.common.TableControlHandle;
import org.eclipse.emf.ecp.view.table.test.common.TableTestUtil;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swtbot.swt.finder.widgets.SWTBotTable;
import org.eclipse.swtbot.swt.finder.widgets.SWTBotText;
/**
* @author Eugen
*
*/
public class CellReadOnly_PTest extends ECPCommonSWTBotTest {
private EClass superType1;
private EClass superType2;
/**
* {@inheritDoc}
*
* @see org.eclipse.emf.ecp.view.ui.editor.test.ECPCommonSWTBotTest#createDomainObject()
*/
@Override
public EObject createDomainObject() {
final EClass eClass = EcoreFactory.eINSTANCE.createEClass();
superType1 = EcoreFactory.eINSTANCE.createEClass();
superType2 = EcoreFactory.eINSTANCE.createEClass();
eClass.getESuperTypes().add(superType1);
eClass.getESuperTypes().add(superType2);
superType1.setName("a");
superType2.setName("b");
return eClass;
}
/**
* {@inheritDoc}
*
* @see org.eclipse.emf.ecp.view.ui.editor.test.ECPCommonSWTBotTest#createView()
*/
@Override
public VView createView() {
final ECPCellReadOnlyTester tester = new ECPCellReadOnlyTester() {
@Override
public boolean isCellReadOnly(VTableControl vTableControl, Setting setting) {
if (!EClass.class.isInstance(setting.getEObject())) {
return false;
}
if (!EcorePackage.eINSTANCE.getENamedElement_Name().equals(setting.getEStructuralFeature())) {
return false;
}
final EClass eClass = EClass.class.cast(setting.getEObject());
if ("a".equals(eClass.getName())) {
return true;
}
return false;
}
};
CellReadOnlyTesterHelper.getInstance().registerCellReadOnlyTester(tester);
final TableControlHandle tableControlHandle = TableTestUtil.createInitializedTableWithoutTableColumns();
final VDomainModelReference tableColumn1 = TableTestUtil.createTableColumn(EcorePackage.eINSTANCE
.getENamedElement_Name());
tableControlHandle.addFirstTableColumn(tableColumn1);
final VDomainModelReference tableColumn2 = TableTestUtil.createTableColumn(EcorePackage.eINSTANCE
.getEClass_Interface());
tableControlHandle.addSecondTableColumn(tableColumn2);
final VView vview = VViewFactory.eINSTANCE.createView();
vview.getChildren().add(tableControlHandle.getTableControl());
vview.setRootEClass(EcorePackage.eINSTANCE.getEClass());
return vview;
}
/**
* {@inheritDoc}
*
* @see org.eclipse.emf.ecp.view.ui.editor.test.ECPCommonSWTBotTest#logic()
*/
@Override
public void logic() {
final SWTBotTable table = bot.table();
table.click(0, 1);
bot.sleep(1000);
Display.getDefault().syncExec(new Runnable() {
@Override
public void run() {
assertEquals(table.cell(0, 1), "a");
}
});
table.click(0, 2);
Display.getDefault().syncExec(new Runnable() {
@Override
public void run() {
assertTrue(superType1.isInterface());
}
});
table.click(1, 1);
bot.sleep(1000);
final SWTBotText textCell11 = bot.text();
Display.getDefault().syncExec(new Runnable() {
@Override
public void run() {
assertTrue(textCell11.widget.getEditable());
}
});
table.click(1, 2);
Display.getDefault().syncExec(new Runnable() {
@Override
public void run() {
assertTrue(superType2.isInterface());
}
});
}
}