mainpanel.java

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

JAVA
154
字号
/* * 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.table;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Vector;

import javax.swing.JCheckBox;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JSlider;
import javax.swing.JSplitPane;
import javax.swing.JTable;
import javax.swing.JTextArea;
import javax.swing.JToolBar;
import javax.swing.ListSelectionModel;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;

import twaver.AlarmSeverity;
import twaver.TWaverUtil;
import twaver.table.TTable;
import twaver.table.TTableNavigator;
import twaver.table.TTableRowFilter;

public class MainPanel extends JPanel {

	public MainPanel(final TTable table){
		TTableNavigator navigator = new TTableNavigator(table.getTableModel(), new int[]{10, 20, 30, 100, 0});
		final JTextArea textArea = new JTextArea(){
			 public void append(String str) {
				 super.append(str);
				 this.setCaretPosition(getDocument().getLength());
			 }
		};
		final JSlider slider = new JSlider(JSlider.HORIZONTAL, 0, 100, 50);
		JToolBar toolbar = new JToolBar();
		final Map displaySeverityMap = new HashMap();
		
		final QueryFilter queryFilter = new QueryFilter(table);	
		final TTableRowFilter miscellaneousFilter = new TTableRowFilter(){
			public boolean isVisible(TTable table, Vector rowData) {
				if(rowData.get(2) == null){
					return false;
				}
				if(rowData.get(7) instanceof Number){
					if(((Number)rowData.get(7)).doubleValue() < slider.getValue() / 100.0){
						return false;
					}
				}
				if(rowData.get(5) instanceof AlarmSeverity){
					if(!displaySeverityMap.containsKey(rowData.get(5))){
						return false;
					}
				}
				return true;
			}
		};
		
		
		slider.setPaintLabels(true);
		slider.setPaintTicks(true);
		slider.setMinorTickSpacing(1);
		slider.setMajorTickSpacing(10);
		slider.setSnapToTicks(true);
		
		slider.addChangeListener(new ChangeListener(){
			public void stateChanged(ChangeEvent e) {
				textArea.append("\npercent filter:" + slider.getValue() / 100.0);
				table.getTableModel().publishData();
			}
		});
		
		textArea.setBackground(Color.BLACK);
		textArea.setForeground(Color.GREEN);
		
		final JCheckBox checkFilter = new JCheckBox("Enable Filter");
		checkFilter.setSelected(true);
		checkFilter.setFont(TWaverUtil.getDefaultFont());
		checkFilter.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent e) {
				if(checkFilter.isSelected()){
					table.getTableModel().addRowFilter(miscellaneousFilter);
					table.getTableModel().addRowFilter(queryFilter);
				}else{
					table.getTableModel().removeRowFilter(miscellaneousFilter);
					table.getTableModel().removeRowFilter(queryFilter);
				}
			}
		});
		toolbar.add(checkFilter);
		toolbar.addSeparator();
		toolbar.add(queryFilter);
		
		Iterator it = AlarmSeverity.getAllSeverity().iterator();
		while(it.hasNext()){
			final AlarmSeverity severity = (AlarmSeverity)it.next();
			final JCheckBox check = new JCheckBox(severity.getDisplayName());
			check.setSelected(true);
			check.setFont(TWaverUtil.getDefaultFont());
			displaySeverityMap.put(severity, null);
			check.addActionListener(new ActionListener(){
				public void actionPerformed(ActionEvent e) {
					if(check.isSelected()){
						displaySeverityMap.put(severity, null);
					}else{
						displaySeverityMap.remove(severity);
					}
					table.getTableModel().publishData();
				}
			});
			check.setForeground(severity.getColor());
			toolbar.add(check);
		}
		table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
		table.getTableModel().addRowFilter(miscellaneousFilter);
		table.getTableModel().addRowFilter(queryFilter);
		table.getTableModel().addTableListener(new TableListener(table, textArea));
		
		table.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
		
		PopupMenuFactory.initTablePopupMenu(table);
		
        
        JPanel leftPanel = new JPanel(new BorderLayout());
        leftPanel.add(navigator, BorderLayout.NORTH);
        leftPanel.add(new JScrollPane(table), BorderLayout.CENTER);
        leftPanel.add(slider, BorderLayout.SOUTH);
        
        JSplitPane split = new JSplitPane(JSplitPane.VERTICAL_SPLIT, leftPanel,  new JScrollPane(textArea));
        split.setDividerLocation(300);
        split.setOneTouchExpandable(true);
        
        this.setLayout(new BorderLayout());
        this.add(toolbar, BorderLayout.NORTH);
        this.add(split, BorderLayout.CENTER);
        
	}



	
}

⌨️ 快捷键说明

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