001package jmri.jmrit.symbolicprog.tabbedframe;
002
003import javax.swing.JTabbedPane;
004import jmri.jmrit.symbolicprog.ArithmeticQualifier;
005import jmri.jmrit.symbolicprog.VariableValue;
006import org.slf4j.Logger;
007import org.slf4j.LoggerFactory;
008
009/**
010 * Qualify a JMRI DecoderPro pane on a numerical relation by enabling/disabling
011 * the tab.
012 *
013 * @author Bob Jacobsen Copyright (C) 2010, 2014
014 */
015public class PaneQualifier extends ArithmeticQualifier {
016
017    PaneProgPane pane;
018    JTabbedPane tabs;
019    String name;
020
021    public PaneQualifier(PaneProgPane qualifiedPane, VariableValue watchedVal, int value, String relation, JTabbedPane tabPane, String name) {
022        super(watchedVal, value, relation);
023
024        this.pane = qualifiedPane;
025        this.tabs = tabPane;
026        this.name = name;
027
028        setWatchedAvailable(currentDesiredState());
029    }
030
031    @Override
032    public void setWatchedAvailable(boolean enable) {
033        jmri.util.ThreadingUtil.runOnGUIEventually( ()->{
034            log.debug("setWatchedAvailable with {} on {} index {}", enable, name, tabs.indexOfTab(name));
035            tabs.setEnabledAt(tabs.indexOfTab(name), enable);
036        });
037    }
038
039    @Override
040    protected boolean currentAvailableState() {
041        return tabs.isEnabledAt(tabs.indexOfTab(name));
042    }
043
044    private final static Logger log = LoggerFactory.getLogger(PaneQualifier.class);
045
046}