?? nmsexample.java
字號:
package com.zhtelecom.common.topograph.example;
import java.awt.*;
import javax.swing.*;
import com.zhtelecom.common.topograph.*;
//演示拓撲圖的主要功能。可同時在Applet和應用程序中運行。
//network的展開和隱藏;沒有限制的級別,network下可再掛network,node或link
//樹的圖形顯示
//圖形改變后,拓撲圖自動更新
//顏色自動向上改變
//放大、縮小 轉到上層
//Link 路由模式和直連模式
//添加、刪除告警,自動觸發顏色變化
//鼠標、菜單處理
//樹選擇與拓撲圖選擇同步
//添加、刪除 節點、網絡、連接
//<p>Copyright: www.zhtelecom.com Copyright (c) 2007</p>
public class NMSExample extends JApplet
{
static int i = 1;
public static int getNum()
{
return i++;
}
/**
* WEB Applet小程序初始化接口。也是Application應用程序的初始化接口。
* 構建拓撲圖框架。
*/
public void init()
{
try
{
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
//創建數據源
TopoDataSource source = new TopoDataSource();
//通過數據源創建拓撲視圖。
TopoGraphView topoView = new TopoGraphView(source);
topoView.getStatusLabel().setText("狀態欄");
//初始化圖形界面。Swing技術。
JScrollPane sGraph = new JScrollPane(topoView);
//設置拓撲圖視圖的事件處理程序。
TopoMouseAction menuHandle = new TopoMouseAction();
topoView.setMouseHandle(menuHandle);
//根據數據源創建樹
TopoTreeView tree = new TopoTreeView(source);
//將樹的用戶選擇對象、拓撲圖的用戶選擇對象,同步起來。
tree.syncTopoview(topoView);
JScrollPane sTree = new JScrollPane(tree);
JSplitPane pane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, sTree,
sGraph);
pane.setDividerLocation(200);
this.getContentPane().setLayout(new BorderLayout());
this.getContentPane().add(pane, BorderLayout.CENTER);
//this.setVisible(true);
//最后一步,單獨加載拓撲數據。(也可以選擇先加載拓撲數據,再構造拓撲視圖)
processData(topoView);
} catch (Exception ex)
{
ex.printStackTrace();
}
}
/**
* 單獨集中處理拓撲數據。
* 將拓撲圖的數據處理與界面顯示分開處理。
*
*/
private void processData(TopoGraphView topoView)
{
//獲取數據源
TopoDataSource source = topoView.getTopoDataSource();
//定義多業務匯聚網絡
TopoNetwork serviceNet = new TopoNetwork(new StringBuffer("多業務匯聚網")); // 使用StringBuffer,便于后面可修改
serviceNet.setXY(163, 131);
//定義多業務匯聚網內設備
TopoNode nodePC = new TopoNode(new StringBuffer("PC"));
nodePC.setXY(15, 273); // 設置x/y坐標
TopoNode nodeTV = new TopoNode(new StringBuffer("TV機頂盒"));
nodeTV.setXY(15, 166);
nodeTV.setImageIconFromTopoFile("backRecovery.png"); //設置圖片類型
TopoNode nodePhone = new TopoNode(new StringBuffer("IP電話"));
nodePhone.setXY(15, 57);
nodePhone.setImageIconFromTopoFile("digiphone.png");
TopoNode nodeGW = new TopoNode(new StringBuffer("家庭網關"));
nodeGW.setXY(151, 155);
nodeGW.setImageIconFromTopoFile("dm.png");
TopoNode nodeAcess = new TopoNode(new StringBuffer("接入設備"));
nodeAcess.setXY(281, 160);
TopoNode serverManager = new TopoNode(new StringBuffer("業務服務器"));
serverManager.setXY(301, 459);
serverManager.setImageIconFromTopoFile("server_db.png");
nodeAcess.setImageIconFromTopoFile("cartridge_system.png");
TopoNode serverDB = new TopoNode(new StringBuffer("數據庫"));
serverDB.setXY(431, 452);
serverDB.setImageIconFromTopoFile("single_database.png");
TopoNode serverWeb = new TopoNode(new StringBuffer("網站服務器"));
serverWeb.setXY(538, 459);
serverWeb.setImageIconFromTopoFile("server.png");
TopoNode routerAccess = new TopoNode(new StringBuffer("接入路由器"));
routerAccess.setImageIconFromTopoFile("tw130.png");
routerAccess.setXY(415, 148);
TopoNode routerData = new TopoNode(new StringBuffer("數據路由器"));
routerData.setXY(584, 48);
routerData.setImageIconFromTopoFile("tw130.png");
TopoNode routerPhone = new TopoNode(new StringBuffer("語音路由器"));
routerPhone.setXY(702, 150);
routerPhone.setImageIconFromTopoFile("tw130.png");
TopoNode routerTV = new TopoNode(new StringBuffer("視頻路由器"));
routerTV.setXY(584, 235);
routerTV.setImageIconFromTopoFile("tw130.png");
//定義多業務匯聚網內連接
TopoLink linkPCGW = new TopoLink(new StringBuffer("100M"), nodePC, nodeGW); //通過連接起點、終點,創建Link
linkPCGW.setStraight(false); //設置轉折線
linkPCGW.setBrokenLink(true); //設置虛線
linkPCGW.setLinkWidth(1); //設置寬度
TopoLink linkTVGW = new TopoLink(new StringBuffer("Cable"), nodeTV, nodeGW);
linkTVGW.setStraight(false);
linkTVGW.setBrokenLink(true);
linkTVGW.setLinkWidth(1);
TopoLink linkPhoneGW = new TopoLink(new StringBuffer("RJ45"), nodePhone, nodeGW);
linkPhoneGW.setStraight(false);
linkPhoneGW.setBrokenLink(true);
linkPhoneGW.setLinkWidth(1);
TopoLink linkGWAcess = new TopoLink(new StringBuffer("FE"), nodeGW, nodeAcess);
TopoLink linkAcessRouterAC = new TopoLink(new StringBuffer("GE"), nodeAcess, routerAccess);
TopoLink linkAcessManager = new TopoLink(new StringBuffer("L1"), routerAccess, serverManager);
linkAcessManager.setStraight(false);
TopoLink linkAcessDB = new TopoLink(new StringBuffer("L2"), routerAccess, serverDB);
linkAcessDB.setStraight(false);
TopoLink linkAcessWeb = new TopoLink(new StringBuffer("L3"), routerAccess, serverWeb);
linkAcessWeb.setStraight(false);
TopoLink linkRouterACData = new TopoLink(new StringBuffer("G1"), routerAccess, routerData);
linkRouterACData.setShowArrow(false);
linkRouterACData.setLinkWidth(5);
TopoLink linkRouterACTV = new TopoLink(new StringBuffer("G2"), routerAccess, routerTV);
linkRouterACTV.setShowArrow(false);
linkRouterACTV.setLinkWidth(5);
TopoLink linkRouterACPhone = new TopoLink(new StringBuffer("G3"), routerAccess, routerPhone);
linkRouterACPhone.setShowArrow(false);
linkRouterACPhone.setLinkWidth(5);
TopoLink linkRouterTVData = new TopoLink(new StringBuffer("備份1"), routerTV, routerData);
linkRouterTVData.setShowArrow(false);
linkRouterTVData.setBrokenLink(true);
TopoLink linkRouterTVPhone = new TopoLink(new StringBuffer("備份2"), routerTV, routerPhone);
linkRouterTVPhone.setShowArrow(false);
linkRouterTVPhone.setBrokenLink(true);
TopoLink linkRouterPhoneData = new TopoLink(new StringBuffer("備份3"), routerPhone, routerData);
linkRouterPhoneData.setShowArrow(false);
linkRouterPhoneData.setBrokenLink(true);
//添加告警
nodePC.addAlarm("alarm1", TopoSysConfig.AlarmSeverity_Critical); //緊急
nodeTV.addAlarm("alarm2", TopoSysConfig.AlarmSeverity_Major); //主要
nodePhone.addAlarm("alarm3", TopoSysConfig.AlarmSeverity_Minor); //次要;
nodeGW.addAlarm("alarm4", TopoSysConfig.AlarmSeverity_Warning); //警告;
linkGWAcess.addAlarm("alarm5", TopoSysConfig.AlarmSeverity_Indeterminate); //未知
nodeAcess.addAlarm("alarm6", TopoSysConfig.AlarmSeverity_Indeterminate); //未知
////將多業務匯聚網絡的數據放入到數據源容器中......................
source.addTopoData(serviceNet); //serviceNet在根視圖下
source.addTopoData(nodePC, serviceNet); //nodePC在serviceNet下
source.addTopoData(nodeTV, serviceNet);
source.addTopoData(nodePhone, serviceNet);
source.addTopoData(nodeGW, serviceNet);
source.addTopoData(nodeAcess, serviceNet);
source.addTopoData(routerAccess, serviceNet);
source.addTopoData(serverManager, serviceNet);
source.addTopoData(serverWeb, serviceNet);
source.addTopoData(serverDB, serviceNet);
source.addTopoData(routerTV, serviceNet);
source.addTopoData(routerData, serviceNet);
source.addTopoData(routerPhone, serviceNet);
source.addTopoData(linkPCGW, serviceNet);
source.addTopoData(linkTVGW, serviceNet);
source.addTopoData(linkPhoneGW, serviceNet);
source.addTopoData(linkGWAcess, serviceNet);
source.addTopoData(linkAcessRouterAC, serviceNet);
source.addTopoData(linkAcessDB, serviceNet);
source.addTopoData(linkAcessManager, serviceNet);
source.addTopoData(linkAcessWeb, serviceNet);
source.addTopoData(linkRouterACData, serviceNet);
source.addTopoData(linkRouterACTV, serviceNet);
source.addTopoData(linkRouterACPhone, serviceNet);
source.addTopoData(linkRouterTVData, serviceNet);
source.addTopoData(linkRouterTVPhone, serviceNet);
source.addTopoData(linkRouterPhoneData, serviceNet);
//................................................//
//定義多子網網絡和下屬設備、連接
TopoNetwork mutiNet = new TopoNetwork(new StringBuffer("多子網網絡"));
mutiNet.setXY(392, 242);
TopoNetwork internet = new TopoNetwork(new StringBuffer("Internet"));
internet.setXY(331, 303);
TopoNetwork pstn = new TopoNetwork(new StringBuffer("電話網絡"));
pstn.setXY(330, 105);
TopoNetwork vide = new TopoNetwork(new StringBuffer("視頻網絡"));
vide.setXY(140, 192);
TopoNode nodesw = new TopoNode(new StringBuffer("交換機"));
nodesw.setXY(158, 393);
TopoNode nodeVod1 = new TopoNode(new StringBuffer("視頻服務器1"));
nodeVod1.setXY(100, 100);
TopoNode nodeVod2 = new TopoNode(new StringBuffer("視頻服務器2"));
nodeVod2.setXY(300, 100);
TopoLink link1 = new TopoLink(new StringBuffer("Link1"), internet, pstn);
TopoLink link2 = new TopoLink(new StringBuffer("Link2"), pstn, vide);
TopoLink link3 = new TopoLink(new StringBuffer("Link3"), vide, internet);
TopoLink link = new TopoLink(new StringBuffer("video"), nodeVod1, nodeVod2);
//添加告警
pstn.addAlarm("a1", TopoSysConfig.AlarmSeverity_Major);
nodeVod1.addAlarm("a2", TopoSysConfig.AlarmSeverity_Critical);
nodesw.addAlarm("a3", TopoSysConfig.AlarmSeverity_Warning);
//將多子網網絡內數據加入到數據源
source.addTopoData(mutiNet);
source.addTopoData(internet, mutiNet);
source.addTopoData(pstn, mutiNet);
source.addTopoData(vide, mutiNet);
source.addTopoData(nodesw, mutiNet);
source.addTopoData(link1, mutiNet);
source.addTopoData(link2, mutiNet);
source.addTopoData(link3, mutiNet);
source.addTopoData(nodeVod1, vide);
source.addTopoData(nodeVod2, vide);
source.addTopoData(link, vide);
}
//Appliction程序入口,兼容Applet模式。
public static void main(String[] args)
{
//初始化數據和圖形
NMSExample helloApplet = new NMSExample();
helloApplet.init();
//創建Application 窗口
JFrame frame = new JFrame("網絡拓撲圖演示 \u2014\u2014 智和信通出品");
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
frame.setSize(screenSize.width, screenSize.height);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setContentPane(helloApplet.getContentPane());
frame.setVisible(true);
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -