alarmtabledemo.java

来自「全面实现ilog地功能,没有使用第三方lib.」· Java 代码 · 共 158 行

JAVA
158
字号
/* * This source code is part of TWaver 1.3.1 * * SERVA Software PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. * Copyright 2000-2005 SERVA Software, Inc. All rights reserved. */package demo.alarm;

import java.awt.BorderLayout;
import java.awt.Component;
import java.util.Random;

import javax.swing.DefaultCellEditor;
import javax.swing.DefaultListCellRenderer;
import javax.swing.Icon;
import javax.swing.JComboBox;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableCellRenderer;

import twaver.Alarm;
import twaver.AlarmProbableCause;
import twaver.AlarmSeverity;
import twaver.AlarmTrendIndication;
import twaver.Node;
import twaver.TDataBox;
import twaver.TWaverUtil;
import twaver.table.TAlarmTable;
import twaver.table.TTableColumn;
import demo.DemoPane;

public class AlarmTableDemo extends DemoPane {
    private static Object[] values = AlarmProbableCause.LOW_HUMIDITY.getValues();
    private static Random random = new Random();

    public AlarmTableDemo() {
        class Owner {
            private String name = null;
            private Icon icon = null;

            Owner(String name, Icon icon) {
                setName(name);
                setIcon(icon);
            }

            String getName() {
                return name;
            }

            void setName(String name) {
                this.name = name;
            }

            Icon getIcon() {
                return icon;
            }

            void setIcon(Icon icon) {
                this.icon = icon;
            }
        }

        TDataBox box = new TDataBox();
        TAlarmTable table = new TAlarmTable(box);
        table.setRowHeight(19);
        add(new JScrollPane(table), BorderLayout.CENTER);

        Node node = new Node("node1");
        node.setName("Router-2");
        box.addElement(node);

        Icon peterIcon = TWaverUtil.getIcon("/demo/resource/alarm/peter.gif");
        Icon maryIcon = TWaverUtil.getIcon("/demo/resource/alarm/mary.gif");
        for (int i = 0; i < 5; i++) {
            Alarm alarm = new Alarm("ALM00" + i);
            if (i % 2 == 1) {
                alarm.putClientProperty("owner", new Owner("Peter", peterIcon));
            } else {
                alarm.putClientProperty("owner", new Owner("Mary", maryIcon));
            }
            alarm.setElementID("node1");
            alarm.setAcked(i % 2 == 1);
            alarm.setAlarmSeverity(AlarmSeverity.getByValue( (i + 1) * 100));
            alarm.setTrendIndication(AlarmTrendIndication.MORE_SEVERE);
            alarm.setProbableCause(getRandomAlarmProbableCause());
            box.getAlarmModel().addAlarm(alarm);
        }
        table.getTableModel().getColumnByName("probableCause").setPreferredWidth(200);
        TTableColumn ownerColumn = new TTableColumn("owner", "Owner");
        ownerColumn.setPreferredWidth(80);
        ownerColumn.setEditable(true);
        table.getTableModel().addColumn(ownerColumn);
        ownerColumn.setRenderer(new DefaultTableCellRenderer() {
            public Component getTableCellRendererComponent(JTable table,
                Object value,
                boolean isSelected,
                boolean hasFocus,
                int row,
                int column) {
                JLabel label = (JLabel)super.getTableCellRendererComponent(table,
                    value,
                    isSelected,
                    hasFocus,
                    row,
                    column);
                if (value instanceof Owner) {
                    Owner owner = (Owner) value;
                    label.setIcon(owner.getIcon());
                    label.setText(owner.getName());
                }
                return label;
            }
        });

        JComboBox options = new JComboBox();
        options.addItem(new Owner("Peter", peterIcon));
        options.addItem(new Owner("Mary", maryIcon));
        options.setRenderer(new DefaultListCellRenderer() {
            public Component getListCellRendererComponent(
                JList list,
                Object value,
                int index,
                boolean isSelected,
                boolean cellHasFocus) {
                super.getListCellRendererComponent(list,
                    value,
                    index,
                    isSelected,
                    cellHasFocus);
                if (value instanceof Owner) {
                    Owner owner = (Owner) value;
                    this.setIcon(owner.getIcon());
                    this.setText(owner.getName());
                }
                return this;
            }
        });
        ownerColumn.setEditor(new DefaultCellEditor(options));
    }

    public String getHelp() {
        return "Customize alarm table component. <br>" +
            "In this example, column 'owner' is editable," +
            " and its editor/renderer are customized. "+
            "Click this column and check it out.";
    }

    public String getTitle() {
        return "Alarm Table Demo";
    }

    private AlarmProbableCause getRandomAlarmProbableCause() {
        return (AlarmProbableCause) values[random.nextInt(values.length)];
    }
}

⌨️ 快捷键说明

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