package org.infosec.ismp.applet.event;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionAdapter;
import java.sql.Timestamp;
import java.util.List;
import javax.swing.JApplet;
import javax.swing.JLabel;
import javax.swing.JPanel;
import org.infosec.ismp.applet.comm.util.HttpInvokerProxyFactoryBeanUtil;
import org.infosec.ismp.applet.comm.util.ServerConfig;
import org.infosec.ismp.manager.rmi.event.Ilnvoker;
import twaver.Element;
import twaver.Node;
import twaver.TDataBox;
import twaver.TWaverConst;
import twaver.TWaverUtil;
import twaver.TaskAdapter;
import twaver.TaskScheduler;
import twaver.chart.AbstractChart;
import twaver.chart.PieChart;
/**
* 实现域事件统计饼图
* @author wudengke 2009-6-29
*
*/
public class EventPieChart extends JApplet {
public void init() {
Timestamp starttime = null;
Timestamp endtime = null;
ServerConfig.init(this.getParameter("serverpath"));
String s = this.getParameter("beginTime");
String e = this.getParameter("endTime");
String bureauId = this.getParameter("bureauId");
// String s="1994-06-23 11:54:49";
// String e="2009-09-23 11:58:19";
starttime = Timestamp.valueOf(s);
endtime = Timestamp.valueOf(e);
PieChartPanel pieChartPanel = new PieChartPanel(starttime,endtime,bureauId);
this.getContentPane().setLayout(new BorderLayout());
this.getContentPane().add(pieChartPanel, BorderLayout.CENTER);
(new Thread(pieChartPanel)).start();
}
public void start() {
}
public void stop() {
}
}
class PieChartPanel extends JPanel implements Runnable{
Timestamp starttime = null;
Timestamp endtime = null;
private Ilnvoker realTime = (Ilnvoker) HttpInvokerProxyFactoryBeanUtil
.getService(ServerConfig.getServerPath()
+ "/remoting/eventInvokerServiceRemoting", Ilnvoker.class);
private TDataBox box = new TDataBox();
private PieChart pie = new PieChart(box);
public PieChartPanel(Timestamp starttime,Timestamp endtime,String bureauId) {
this.starttime = starttime;
this.endtime = endtime;
this.setLayout(new BorderLayout());
// new MouseListener(pie);
pie.setTitle("<html><font color='black'>域事件统计(件)</html>");
pie.getTitleLabel().setBackground(null);
pie.setLegendOrientation(TWaverConst.LABEL_ORIENTATION_HORIZONTAL);
pie.setValueTextVisible(false);
pie.setEnableXZoom(false);
pie.setEnableXTranslate(false);
pie.setEnableYZoom(false);
pie.setEnableYTranslate(false);
pie.setValueTextVisible(true);
pie.setHollow(true);
List<Object> list = realTime.StatisticsDomain(starttime,endtime,Integer.valueOf(bureauId));
if (list != null && list.size() > 0) {
for (int i = 0; i < list.size(); i++) {
Object[] obj = (Object[]) list.get(i);
addNode(obj[0].toString().trim(), Double.parseDouble(String
.valueOf(obj[1])),i);
}
}
this.add(pie, BorderLayout.CENTER);
}
public class MouseListener extends MouseMotionAdapter {
private AbstractChart chart = null;
public MouseListener(AbstractChart chart) {
this.chart = chart;
JLabel label = chart.getTitleLabel();
label.setOpaque(true);
label.setForeground(Color.WHITE);
// this.chart.getChartPane().addMouseMotionListener(this);
}
public void mouseMoved(MouseEvent e) {
Element element = chart.getElementAt(e.getPoint());
if (element != null) {
String value = TWaverConst.DEFAULT_INT_FORMATER.format(element
.getChartValue());
JLabel label = chart.getTitleLabel();
label.setText(element.getName() + ":" + value + "$");
label.setBackground(element.getChartColor());
chart.getDataBox().getSelectionModel().setSelection(element);
}
}
}
private void addNode(String name, double value,int i) {
Element element = new Node();
element.setName(name);
element.setVisible(true);
element.putChartValue(value);
switch (i) {
case 0:
element.putChartColor(Color.RED);
break;
case 1:
element.putChartColor(Color.YELLOW);
break;
case 2:
element.putChartColor(Color.GREEN);
break;
case 3:
element.putChartColor(Color.PINK);
break;
case 4:
element.putChartColor(Color.CYAN);
break;
case 5:
element.putChartColor(Color.BLUE);
break;
case 6:
element.putChartColor(Color.GRAY);
break;
case 7:
element.putChartColor(Color.MAGENTA);
break;
case 8:
element.putChartColor(Color.ORANGE);
break;
default:element.putChartColor(TWaverUtil.getRandomColor());
}
box.addElement(element);
}
public void run() {
TaskScheduler.getInstance().register(new TaskAdapter() {
public void run(long clock) {
pie.setStartAngle(pie.getStartAngle() + 10);
}
public int getInterval() {
return 2000;
}
});
if (box.getSelectionModel().size() == 0) {
pie.setStartAngle(pie.getStartAngle() + 1);
}
}
}