package org.mt4j.test.css;
import java.util.List;
import org.junit.Test;
import org.mt4j.AbstractMTApplication;
import org.mt4j.components.MTCanvas;
import org.mt4j.components.MTComponent;
import org.mt4j.components.TransformSpace;
import org.mt4j.components.css.parser.CSSParserConnection;
import org.mt4j.components.css.style.CSSStyle;
import org.mt4j.components.visibleComponents.shapes.MTEllipse;
import org.mt4j.components.visibleComponents.shapes.MTLine;
import org.mt4j.components.visibleComponents.shapes.MTRectangle;
import org.mt4j.components.visibleComponents.widgets.MTTextArea;
import org.mt4j.sceneManagement.Iscene;
import org.mt4j.test.AbstractWindowTestcase;
import org.mt4j.test.testUtil.DummyScene;
import org.mt4j.test.testUtil.TestRunnable;
import org.mt4j.util.MTColor;
import org.mt4j.util.math.Vector3D;
public class SelectorIntegrationTest extends AbstractWindowTestcase {
private MTComponent parent;
private AbstractMTApplication app;
private Iscene scene;
CSSParserConnection pc;
List<CSSStyle> styles;
MTColor w = new MTColor(255,255,255,255);
@Override
public void inStartUp(AbstractMTApplication app) {
this.app = app;
//Add a scene to the mt application
this.scene = new DummyScene(app, "Dummy Scene");
app.addScene(scene);
//Set up components
parent = new MTComponent(app);
getCanvas().addChild(parent);
app.getCssStyleManager().loadStyles("junit/integrationtest.css");
app.getCssStyleManager().setGloballyEnabled(true);
}
public MTCanvas getCanvas(){
return this.scene.getCanvas();
}
@Test
public void testDirectStyleSheets() {
MTRectangle r = new MTRectangle(app,0,0,100, 100);
//r.enableCSS();
getCanvas().addChild(r);
assertTrue(r.getFillColor().equals(MTColor.GREEN));
}
@Test
public void testClassSelector() {
MTEllipse e = new MTEllipse(app, new Vector3D(500,500), 50, 50);
//e.enableCSS();
getCanvas().addChild(e);
assertTrue(e.getFillColor().equals(MTColor.WHITE));
}
@Test
public void testUniversalSelector() {
MTLine l = new MTLine(app, 100,100, 200,200);
//l.enableCSS();
getCanvas().addChild(l);
MTEllipse e = new MTEllipse(app, new Vector3D(500,500), 50, 50);
//e.enableCSS();
getCanvas().addChild(e);
assertTrue(l.getStrokeColor().equals(MTColor.BLUE));
assertTrue(e.getStrokeColor().equals(MTColor.BLUE));
}
@Test
public void testCascadingSelectors() {
this.runTest(new TestRunnable() {
@Override
public void runMTTestCode() {
MTRectangle r1 = new MTRectangle(app,100,100,100, 100);
MTRectangle r2 = new MTRectangle(app,100,100,100, 100);
MTRectangle r3 = new MTRectangle(app,100,100,100, 100);
//r1.enableCSS(); r2.enableCSS(); r3.enableCSS();
MTEllipse e = new MTEllipse(app, new Vector3D(200,200), 50,50);
//e.enableCSS();
MTTextArea ta = new MTTextArea(app);
MTTextArea t2 = new MTTextArea(app);
//ta.enableCSS(); t2.enableCSS();
getCanvas().addChild(r1);
getCanvas().addChild(r2);
r1.addChild(ta);
r2.addChild(e);
e.addChild(r3);
e.addChild(t2);
//ta.applyStyleSheet();
//t2.applyStyleSheet();
//r3.applyStyleSheet();
assertTrue(ta.getFillColor().equals(MTColor.LIME));
assertTrue(r3.getFillColor().equals(MTColor.GREY));
assertTrue(t2.getFillColor().equals(MTColor.BLUE));
}
});
}
@Test
public void testSizes() {
MTRectangle r1 = new MTRectangle(app,100,100,100, 100);
MTRectangle r2 = new MTRectangle(app,100,100,100, 100);
MTRectangle r3 = new MTRectangle(app,100,100,100, 100);
//r1.enableCSS(); r2.enableCSS(); r3.enableCSS();
r1.setCSSID("widthtest");
r2.setCSSID("heighttest");
r3.setCSSID("sizetest");
getCanvas().addChild(r1);
getCanvas().addChild(r2);
getCanvas().addChild(r3);
assertTrue(r1.getWidthXY(TransformSpace.RELATIVE_TO_PARENT) == 90f);
assertTrue(r2.getHeightXY(TransformSpace.RELATIVE_TO_PARENT) == 110f);
assertTrue(r3.getWidthXY(TransformSpace.RELATIVE_TO_PARENT) == 120f);
assertTrue(r3.getHeightXY(TransformSpace.RELATIVE_TO_PARENT) == 450f);
}
}