package simulator.interfaces.swing;

import models.algebra.Constant;
import models.algebra.Expression;
import models.algebra.Term;
import models.dataConstraintModel.DataConstraintModel;
import simulator.Event;
import simulator.SystemState;
import simulator.interfaces.INativeReceiver;

import java.awt.*;

public class ComponentVisibilityReceiver implements INativeReceiver {
	protected Component component;
	
	public ComponentVisibilityReceiver(Component component) {
		this.component = component;
	}
	
	@Override
	public void onReceiveFromModel(Event event, SystemState nextSystemState) {
		Expression message = event.getMessage();
		if (message instanceof Term) {
			Expression visible = ((Term) message).getChild(0);
			if (visible instanceof Constant) {
				if (((Constant) visible).getSymbol() == DataConstraintModel.true_) {
					component.setVisible(true);
				} else {
					component.setVisible(false);
				}
			}
		}
	}
	
}
