001package jmri.jmrit.logixng.implementation;
002
003import java.util.List;
004import java.util.Locale;
005import java.util.Map;
006
007import jmri.*;
008import jmri.jmrit.logixng.Base;
009import jmri.jmrit.logixng.FemaleSocketListener;
010import jmri.jmrit.logixng.FemaleStringExpressionSocket;
011import jmri.jmrit.logixng.MaleStringExpressionSocket;
012import jmri.jmrit.logixng.MaleSocket;
013import jmri.jmrit.logixng.StringExpressionManager;
014
015/**
016 * Default implementation of the Female String Expression socket
017 */
018public class DefaultFemaleStringExpressionSocket extends AbstractFemaleSocket
019        implements FemaleStringExpressionSocket {
020
021    public DefaultFemaleStringExpressionSocket(Base parent, FemaleSocketListener listener, String name) {
022        super(parent, listener, name);
023    }
024
025    /** {@inheritDoc} */
026    @Override
027    public boolean isCompatible(MaleSocket socket) {
028        return socket instanceof MaleStringExpressionSocket;
029    }
030
031    /** {@inheritDoc} */
032    @Override
033    public String evaluate() throws JmriException {
034        if (isConnected()) {
035            return ((MaleStringExpressionSocket)getConnectedSocket()).evaluate();
036        } else {
037            return "";
038        }
039    }
040
041    /** {@inheritDoc} */
042    @Override
043    public boolean getTriggerOnChange() {
044        throw new UnsupportedOperationException("Not supported");
045    }
046
047    /** {@inheritDoc} */
048    @Override
049    public void setTriggerOnChange(boolean triggerOnChange) {
050        throw new UnsupportedOperationException("Not supported");
051    }
052
053    /** {@inheritDoc} */
054    @Override
055    public String getShortDescription(Locale locale) {
056        return Bundle.getMessage(locale, "DefaultFemaleStringExpressionSocket_Short");
057    }
058
059    /** {@inheritDoc} */
060    @Override
061    public String getLongDescription(Locale locale) {
062        return Bundle.getMessage(locale, "DefaultFemaleStringExpressionSocket_Long", getName());
063    }
064
065    /** {@inheritDoc} */
066    @Override
067    public Map<Category, List<Class<? extends Base>>> getConnectableClasses() {
068        return InstanceManager.getDefault(StringExpressionManager.class).getExpressionClasses();
069    }
070
071    /** {@inheritDoc} */
072    @Override
073    public void disposeMe() {
074        // Do nothing
075    }
076
077}