package com.baselet.element.facet.specific;
import java.util.List;
import com.baselet.control.basics.XValues;
import com.baselet.control.enums.Priority;
import com.baselet.diagram.draw.DrawHandler;
import com.baselet.element.facet.FirstRunKeyValueFacet;
import com.baselet.element.facet.PropertiesParserState;
/**
* must be in first-run because it manipulates the left buffer which is used by second-run facets
* must handle values in parsingFinished when drawer-setup is finished
*/
public class ActiveClassFacet extends FirstRunKeyValueFacet {
public static final ActiveClassFacet INSTANCE = new ActiveClassFacet();
private ActiveClassFacet() {}
private static enum ClassTypeEnum {
ACTCLASS
}
@Override
public KeyValue getKeyValue() {
return new KeyValue("type", new ValueInfo(ClassTypeEnum.ACTCLASS, "make class active (double left/right border)"));
}
private static final int SPACING = 6;
@Override
public void handleValue(String value, PropertiesParserState state) {
// only act if parsing is finished to make sure DrawHandler-Setup is finished
}
@Override
public void parsingFinished(PropertiesParserState state, List<String> handledLines) {
if (!handledLines.isEmpty()) {
ClassTypeEnum.valueOf(extractValue(handledLines.get(0)).toUpperCase()); // parse the value to make sure only valid types are accepted
state.getBuffer().addToLeftAndRight(SPACING);
XValues xLimits = state.getXLimits(state.getTextPrintPosition());
DrawHandler drawer = state.getDrawer();
drawer.drawLine(xLimits.getLeft(), state.getBuffer().getTop(), xLimits.getLeft(), state.getGridElementSize().getHeight());
drawer.drawLine(xLimits.getRight(), state.getBuffer().getTop(), xLimits.getRight(), state.getGridElementSize().getHeight());
}
}
@Override
public Priority getPriority() {
return Priority.LOW; // must be after template class to work
}
}