⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 addhvacunitpage.java

📁 这是一个以JAVA编写的程序,本人还没有试过,是一个简单的温度控制系统
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
         *         * Some units have it, some don't - depends on the way the unit was         * installed.         *         * <p>         *         * This control is applicable only for a heat pump.         */        public final JCheckBox emergencyBox = new JCheckBox("Emergency Heat available");                /**         * Multistage unit selector.         *         * If the unit is multistage, this box should be checked.         */        public final JCheckBox multistageBox = new JCheckBox("Multistage unit");                /**         * Variable speed blower selector.         *         * If the unit has a variable speed blower, this box should be checked.         */        public final JCheckBox vsBox = new JCheckBox("Variable Speed Blower");                /**         * Unit driver control panel.         */        public final HvacDriverPanel driverPanel;                /**         * Create an instance.         *         * It is assumed that a new control panel will be created every time         * the unit is selected.         *         * @param owner Wizard page that owns this panel.         *         * @param ud Unit descriptor.         */        public HvacUnitConfPanel(WizardPage owner, UnitDescriptor ud) {                    hvacTypeCombo.addItem("Pure A/C (no heating)");            hvacTypeCombo.addItem("Heat Pump (heating and cooling)");            hvacTypeCombo.addItem("Furnace (no cooling)");            hvacTypeCombo.addItem("Boiler (no cooling)");                        hvacTypeCombo.setSelectedIndex(1);                        energizeCombo.addItem("Energize to Cool");            energizeCombo.addItem("Energize to Heat");                        energizeCombo.setSelectedIndex(0);            defaultModeCombo.addItem("Default mode: cooling");            defaultModeCombo.addItem("Default mode: heating");                        defaultModeCombo.setSelectedIndex(0);                        GridBagLayout layout = new GridBagLayout();            GridBagConstraints cs = new GridBagConstraints();                        setLayout(layout);                        JPanel filler1 = new JPanel();            JPanel filler2 = new JPanel();                        cs.fill = GridBagConstraints.BOTH;            cs.gridx = 0;            cs.gridy = 0;            cs.weightx = 1;            cs.weighty = 1;            layout.setConstraints(filler1, cs);            add(filler1);                        cs.gridy++;            cs.fill = GridBagConstraints.HORIZONTAL;            cs.weighty = 0;                        JPanel typePanel = new JPanel();            typePanel.setLayout(new GridLayout(6, 1));            typePanel.setBorder(BorderFactory.createTitledBorder("Unit Options"));                        layout.setConstraints(typePanel, cs);            add(typePanel);            typePanel.add(hvacTypeCombo);            typePanel.add(emergencyBox);            typePanel.add(multistageBox);            typePanel.add(vsBox);            typePanel.add(energizeCombo);            typePanel.add(defaultModeCombo);                        cs.gridy++;                        driverPanel = new HvacDriverPanel(owner);                        driverPanel.driverCombo.setEnabled(false);                        layout.setConstraints(driverPanel, cs);            add(driverPanel);                        cs.gridy++;            cs.fill = GridBagConstraints.BOTH;            cs.weighty = 1;                        layout.setConstraints(filler2, cs);            add(filler2);                        addListener(this);            addListener(owner);                        syncFrom(ud);        }                /**         * Add a listener to this panel's elements.         *         * @param listener Listener to add.         */        private void addListener(ItemListener listener) {                    hvacTypeCombo.addItemListener(listener);            energizeCombo.addItemListener(listener);            driverPanel.driverCombo.addItemListener(listener);                        emergencyBox.addItemListener(listener);            multistageBox.addItemListener(listener);            vsBox.addItemListener(listener);        }                /**         * Handle the unit type.         *         * Depending on what unit type is selected, different set of options         * and drivers is available.         *         * @param e Event to handle.         */        public void itemStateChanged(ItemEvent e) {                    Object source = e.getSource();                        if ( source == hvacTypeCombo ) {                            driverPanel.setType(hvacTypeCombo.getSelectedIndex());                            // VT: FIXME: This is rather redundant...                                switch ( hvacTypeCombo.getSelectedIndex() ) {                                    case 0:                                            // There's no cool/heat switch, and there's no                        // emergency heat                                                emergencyBox.setEnabled(false);                        multistageBox.setEnabled(true);                        vsBox.setEnabled(true);                        energizeCombo.setEnabled(false);                        defaultModeCombo.setEnabled(false);                        driverPanel.driverCombo.setSelectedIndex(0);                        driverPanel.driverCombo.setEnabled(false);                        break;                                            case 1:                                            // It's all good                                                emergencyBox.setEnabled(true);                        multistageBox.setEnabled(true);                        vsBox.setEnabled(true);                        energizeCombo.setEnabled(true);                        defaultModeCombo.setEnabled(true);                        driverPanel.driverCombo.setSelectedIndex(0);                        driverPanel.driverCombo.setEnabled(false);                        break;                                            case 2:                                            // There's no cool/heat switch, and I don't think                        // there'e emergency heat                                                emergencyBox.setEnabled(false);                        multistageBox.setEnabled(true);                        vsBox.setEnabled(true);                        energizeCombo.setEnabled(false);                        defaultModeCombo.setEnabled(false);                        driverPanel.driverCombo.setSelectedIndex(0);                        driverPanel.driverCombo.setEnabled(false);                        break;                                            case 3:                                            // There's no cool/heat switch, and I doubt they can                        // be multistage and/or have blowers at all. Also,                        // this is the only one that can be driven by DTR                        // driver.                                                emergencyBox.setEnabled(false);                        multistageBox.setEnabled(false);                        vsBox.setEnabled(false);                        energizeCombo.setEnabled(false);                        defaultModeCombo.setEnabled(false);                        driverPanel.driverCombo.setEnabled(true);                        break;                }                        } else if ( source == energizeCombo ) {                            // VT: FIXME: It seems to me that there's nothing to be                // done, but I'd better verify this            } else if ( source == driverPanel.driverCombo ) {                            // VT: FIXME: Need to figure out what to do here            }        }                /**         * Get a type of the unit currently selected.         *         * @return Unit type as a string.         */        public String getType() {                    // VT: FIXME: These must be made immutable, not free type            // strings.                    switch ( hvacTypeCombo.getSelectedIndex() ) {                            case 0:                                    return "ac";                                    case 1:                                    return "heat pump";                                    case 2:                                    return "furnace";                                    case 3:                                    return "boiler";                                    default:                                    complain(LOG_ERR, CH_WP, "No type selected???");                    return "heat pump";            }        }                /**         * Move the {@link #hvacTypeCombo HVAC type selector} into         * appropriate position, corresponding to the unit type.         *         * @param type Unit type to select.         */        public void selectType(String type) {                    if ( "ac".equals(type) ) {                            hvacTypeCombo.setSelectedIndex(0);            } else if ( "heat pump".equals(type) ) {                            hvacTypeCombo.setSelectedIndex(1);                        } else if ( "furnace".equals(type) ) {                            hvacTypeCombo.setSelectedIndex(2);            } else if ( "boiler".equals(type) ) {                            hvacTypeCombo.setSelectedIndex(3);            } else {                            hvacTypeCombo.setSelectedIndex(1);                complain(LOG_ERR, CH_WP, "Unknown HVAC type '" + type + "'");            }        }                public void selectEnergize(String energize) {                    if ( "cool".equals(energize) ) {                            energizeCombo.setSelectedIndex(0);            } else if ( "heat".equals(energize) ) {                            energizeCombo.setSelectedIndex(1);            }        }                public String getEnergize() {                    return (energizeCombo.getSelectedIndex() == 0) ? "cool" : "heat";        }        public void selectDriver(String driver) {                    if ( "1-wire".equals(driver) ) {                            driverPanel.driverCombo.setSelectedIndex(0);            } else if ( "serial".equals(driver) ) {                            driverPanel.driverCombo.setSelectedIndex(1);            }        }                public String getDriver() {                    return (driverPanel.driverCombo.getSelectedIndex() == 0) ? "1-wire" : "serial";        }        /**         * Dump the unit descriptor content into the panel.         *         * @param ud Unit descriptor to display.         */        private void syncFrom(UnitDescriptor ud) {                    String type = (String)ud.propertyMap.get("type");            Boolean _emergency = (Boolean)ud.propertyMap.get("emergency");            Boolean _multistage = (Boolean)ud.propertyMap.get("multistage");            Boolean _vs = (Boolean)ud.propertyMap.get("vs");            String energize = (String)ud.propertyMap.get("energize");            String driver = (String)ud.propertyMap.get("driver");                        // Let's see if we have to set some defaults                        if ( type == null ) {                            type = "heat pump";            }                        boolean emergency = (_emergency == null) ? false : _emergency.booleanValue();            boolean multistage = (_multistage == null) ? false : _multistage.booleanValue();            boolean vs = (_vs == null) ? false : _vs.booleanValue();                        if ( energize == null ) {                            energize = "cool";            }                        if ( driver == null ) {                            driver = "1-wire";            }                        // Now, let's set the controls                        selectType(type);            emergencyBox.setSelected(emergency);            multistageBox.setSelected(multistage);            vsBox.setSelected(vs);                        selectEnergize(energize);            selectDriver(driver);                        driverPanel.syncFrom(ud);                        complain(LOG_NOTICE, CH_WP, "unit2conf: " + ud.propertyMap);        }                /**         * Dump the panel content into the unit descriptor.         *         * @param ud Unit descriptor to dump the panel content into.         */        public void syncTo(UnitDescriptor ud) {                    ud.propertyMap.put("type", getType());            ud.propertyMap.put("emergency", new Boolean(emergencyBox.isSelected()));            ud.propertyMap.put("multistage", new Boolean(multistageBox.isSelected()));            ud.propertyMap.put("vs", new Boolean(vsBox.isSelected()));            ud.propertyMap.put("energize", getEnergize());            ud.propertyMap.put("driver", getDriver());                        driverPanel.syncTo(ud);            complain(LOG_DEBUG, CH_WP, "conf2unit: " + ud.propertyMap);        }    }        protected class HvacDriverPanel extends JPanel        implements ActionListener, ItemListener, ListSelectionListener {            private WizardPage owner;            public final JComboBox driverCombo = new JComboBox();        private JPanel onewirePanel = new JPanel();        private JPanel dtrPanel = new JPanel();        public final JList switchList = new JList();                private JLabel modeLabel = new JLabel("Mode");        private JLabel compressorLabel = new JLabel("Compressor");        private JLabel fanLabel = new JLabel("Fan");        private JLabel modeAddressLabel = new JLabel();        private JLabel compressorAddressLabel = new JLabel();        private JLabel fanAddressLabel = new JLabel();                private JButton modeButton = new JButton("Assign");        private JButton compressorButton = new JButton("Assign");        private JButton fanButton = new JButton("Assign");                public HvacDriverPanel(WizardPage owner) {                    this.owner = owner;                    GridBagLayout layout = new GridBagLayout();            GridBagConstraints cs = new GridBagConstraints();                        setLayout(layout);        

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -