package org.infosec.ismp.applet.discover.ui; import java.awt.BorderLayout; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.Insets; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.BorderFactory; import javax.swing.JButton; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JProgressBar; import javax.swing.JScrollPane; import javax.swing.JTextArea; import javax.swing.ScrollPaneConstants; import javax.swing.SwingConstants; import org.infosec.ismp.applet.discover.service.CDPSearchAppletService; /** * CDPSearchProcessPanel * @author sshanshan * @date 2009-06-19 * @version 1.0 */ public class CDPSearchProcessPanel extends JPanel implements ActionListener{ private static final long serialVersionUID = 1L; private JTextArea flowout = new JTextArea("发现输出详细信息:"+"\n"); private JLabel process = new JLabel("发现进度",SwingConstants.CENTER); private int percent = 0; private JProgressBar progressBar = new JProgressBar(0,100); private JButton stop = new JButton("停止"); private CDPPanel cdpPanel = null; public CDPSearchProcessPanel(CDPPanel cdpPanel) { this.cdpPanel = cdpPanel; this.setBorder(BorderFactory.createEtchedBorder()); this.setLayout(new BorderLayout(5,5)); JScrollPane scrollPane = new JScrollPane(flowout, ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS,ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED); GridBagLayout grid = new GridBagLayout(); GridBagConstraints cons = new GridBagConstraints(); cons.insets = new Insets(5,5,5,5); cons.anchor = GridBagConstraints.NORTHWEST; cons.fill = GridBagConstraints.BOTH; JPanel center = new JPanel(); center.setLayout(grid); cons.gridx = 0; cons.gridy = 0; cons.gridwidth = 3; cons.weightx = 1; cons.weighty = 1; grid.setConstraints(scrollPane, cons); center.add(scrollPane); JPanel south = new JPanel(); south.setLayout(grid); progressBar.setStringPainted(true); cons.insets = new Insets(10,5,5,5); cons.gridx = 0; cons.gridy = 0; cons.gridwidth =1; cons.weightx = 0; cons.weighty = 0; cons.fill = GridBagConstraints.BOTH; grid.setConstraints(process, cons); south.add(process); cons.gridx = 1; cons.gridwidth = 1; cons.weightx = 1; cons.weighty = 0; grid.setConstraints( progressBar, cons ); south.add(progressBar); cons.gridx = 0; cons.gridy = 1; cons.gridwidth = 2; cons.weighty = 1; stop.addActionListener(this); stop.setEnabled(false); grid.setConstraints( stop, cons ); south.add(stop); this.add(BorderLayout.CENTER, center); this.add(BorderLayout.SOUTH, south); } public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub Object source = e.getSource(); if (source == stop) { JOptionPane.showMessageDialog(CDPSearchProcessPanel.this,"正在停止,请耐心等待...","提示" , JOptionPane.INFORMATION_MESSAGE); stop.setEnabled(false); CDPSearchAppletService cdpSearchService = CDPSearchAppletService.getInstance(); cdpSearchService.stopSearch(false); } } public void setPercent(int percent) { this.percent = percent; progressBar.setValue(percent); } public void setMessage(String message) { flowout.append(message); flowout.setCaretPosition(flowout.getText().length()); } public void clearFlowout(){ flowout.setText("发现输出详细信息:"+"\n"); flowout.setCaretPosition(flowout.getText().length()); } public void setStop(boolean b){ stop.setEnabled(b); } }