void EntityEditorPropertyView::handleEvent(Event *event) {
    if(event->getEventCode() == PropEvent::EVENT_PROP_CHANGE) {
        
        PropEvent *propEvent = (PropEvent*) event;
        
        PropEvent *newPropEvent = new PropEvent(propEvent->prop, propEvent->sheet, propEvent->beforeData, propEvent->afterData);
        dispatchEvent(newPropEvent, PropEvent::EVENT_PROP_CHANGE);
    } else {
        if(event->getDispatcher() == materialSheet) {
            if(targetEntity) {
                updateShaderOptions();
            }
        }
    }
}
void EntityEditorPropertyView::setEntity(Entity *entity) {
    
    targetEntity = entity;
    
    SceneLight *sceneLight = dynamic_cast<SceneLight*>(entity);
    lightSheet->setSceneLight(sceneLight);
    
    SceneMesh *sceneMesh = dynamic_cast<SceneMesh*>(entity);
    materialSheet->setSceneMesh(sceneMesh);
    updateShaderOptions();

    SceneLabel *sceneLabel = dynamic_cast<SceneLabel*>(entity);
    labelSheet->setSceneLabel(sceneLabel);

    SceneCurve *sceneCurve = dynamic_cast<SceneCurve*>(entity);
    curveSheet->setCurve(sceneCurve);
    
    SceneSprite *sceneSprite = dynamic_cast<SceneSprite*>(entity);
    spriteSheet->setSprite(sceneSprite);

    ScenePrimitive *scenePrimitive = dynamic_cast<ScenePrimitive*>(entity);
    
    if(!sceneLabel && !sceneSprite) {
        primitiveSheet->setScenePrimitive(scenePrimitive);
    } else {
        primitiveSheet->setScenePrimitive(NULL);
    }
    
    sceneMeshSheet->setSceneMesh(sceneMesh);
    
    SceneSound *sound = dynamic_cast<SceneSound*>(entity);
    soundSheet->setSound(sound);

    Camera *camera = dynamic_cast<Camera*>(entity);
    cameraSheet->setCamera(camera);

    SceneParticleEmitter *emitter = dynamic_cast<SceneParticleEmitter*>(entity);
    particleSheet->setParticleEmitter(emitter);

    entitySheet->setEntity(entity);
    propSheet->setEntity(entity);
    transformSheet->setEntity(entity);
        
    Resize(getWidth(), getHeight());
}