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.DigitalExpressionManager;
010import jmri.jmrit.logixng.FemaleSocketListener;
011import jmri.jmrit.logixng.MaleSocket;
012import jmri.jmrit.logixng.FemaleDigitalExpressionSocket;
013import jmri.jmrit.logixng.MaleDigitalExpressionSocket;
014
015/**
016 * Default implementation of the Female Digital Expression socket
017 */
018public class DefaultFemaleDigitalExpressionSocket extends AbstractFemaleSocket
019        implements FemaleDigitalExpressionSocket {
020
021    public DefaultFemaleDigitalExpressionSocket(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 MaleDigitalExpressionSocket;
029    }
030
031    /** {@inheritDoc} */
032    @Override
033    public boolean evaluate() throws JmriException {
034        if (isConnected()) {
035            return ((MaleDigitalExpressionSocket)getConnectedSocket())
036                    .evaluate();
037        } else {
038            return false;
039        }
040    }
041
042    /** {@inheritDoc} */
043    @Override
044    public String getShortDescription(Locale locale) {
045        return Bundle.getMessage(locale, "DefaultFemaleDigitalExpressionSocket_Short");
046    }
047
048    /** {@inheritDoc} */
049    @Override
050    public String getLongDescription(Locale locale) {
051        return Bundle.getMessage(locale, "DefaultFemaleDigitalExpressionSocket_Long", getName());
052    }
053
054    @Override
055    public Map<Category, List<Class<? extends Base>>> getConnectableClasses() {
056        return InstanceManager.getDefault(DigitalExpressionManager.class).getExpressionClasses();
057    }
058
059    /** {@inheritDoc} */
060    @Override
061    public void disposeMe() {
062        // Do nothing
063    }
064
065}