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}