MibBrowserApplication.java
上传用户:aonuowh
上传日期:2021-05-23
资源大小:35390k
文件大小:10k
源码类别:

SNMP编程

开发平台:

C/C++

  1. /* $Id: MibBrowserApplication.src,v 1.16 2002/09/09 06:20:20 tonyjpaul Exp $ */
  2. /**
  3.  * MibBrowserApplication.java    
  4.  * Copyright (c) 1996-2002 AdventNet, Inc. All Rights Reserved.
  5.  * Please read the COPYRIGHTS file for more details.
  6.  
  7.  * ADVENTNET, INC. MAKES NO REPRESENTATIONS OR WARRANTIES
  8.  * ABOUT THE SUITABILITY OF THE SOFTWARE, EITHER EXPRESS OR IMPLIED,
  9.  * INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF MERCHANTABILITY,
  10.  * FITNESS FOR A PARTICULAR PURPOSE, OR NON-INFRINGEMENT.  ADVENTNET,
  11.  *  INC. SHALL NOT BE LIABLE FOR ANY DAMAGES SUFFERED BY
  12.  * LICENSEE AS A RESULT OF USING, MODIFYING OR DISTRIBUTING THIS SOFTWARE
  13.  * OR ITS DERIVATIVES.
  14.  */
  15. import com.adventnet.snmp.snmp2.*;
  16. import com.adventnet.snmp.ui.*;
  17. import com.adventnet.snmp.mibs.*;
  18. import com.adventnet.utils.*;
  19. import javax.swing.*; 
  20. import java.io.*; 
  21. import javax.swing.event.*;
  22. import java.util.StringTokenizer;
  23. import java.util.Locale;
  24. import java.awt.*; 
  25. import java.awt.event.*; 
  26. import com.sun.jimi.core.component.JimiCanvas;
  27. import com.adventnet.builder.framework.utils.startup.StartupWin;
  28. /** A MIB Browser Application using the MIB Browser Bean. **/
  29. public class MibBrowserApplication extends JFrame implements ActionListener {
  30.     static String values[] = // stores the options
  31.     { null, null, null, null, null, null, null, null, "None", null, null, null };
  32.     JMenuItem exitItem;
  33. boolean conExitOpen = false;
  34. MibBrowser mbrowser;
  35.     /** Setup the main frame and initialize MIB Browser bean **/
  36.     public MibBrowserApplication() {
  37.     
  38. // Since internationalization cannot be done here, super is commented out.
  39. // setTitle is called from main method to set the title.
  40. //super(SnmpUtils.getString("AdventNet MibBrowser"));
  41.         
  42.     getContentPane().setLayout(new BorderLayout());
  43. String path=System.getProperty("user.dir");
  44. String confDir = null;
  45. if(path.endsWith("MibBrowser")){
  46. path=System.getProperty("user.dir")+File.separator+".."+File.separator+"images"+File.separator+"about.jpg";  
  47. }else{
  48. confDir = path + File.separator + "conf" + File.separator;
  49. MibBrowser.setConfDir(confDir);
  50. path=System.getProperty("user.dir")+File.separator+"images"+File.separator+"about.jpg";
  51. }
  52. StartupWin startwin=new StartupWin(this,path);
  53. startwin.setVisible(true);
  54. startwin.setProgressValues(100,0,100);
  55. startwin.showProgress(1);
  56. if(values[8].equals("Set"))
  57. {
  58. if(values[9] == null || values[10] == null)
  59. {
  60. System.out.println(SnmpUtils.getString("Please enter the Locale and Font for Internationalization"));
  61. System.exit(1);
  62. }else
  63. {
  64. StringTokenizer strt=new StringTokenizer(values[9],"| ");
  65. if(strt.countTokens() != 2)
  66. {
  67. System.out.println(SnmpUtils.getString("Enter the Language and Country name for Locale"));
  68. System.exit(1);
  69. }
  70. String temp=(String)strt.nextToken();
  71. String temp1=(String)strt.nextToken();
  72. if(temp.indexOf("(")!=-1)
  73. {
  74. temp=temp.substring(0,temp.indexOf("("));
  75. }
  76. if(temp1.indexOf("(")!=-1)
  77. {
  78. temp1=temp1.substring(0,temp1.indexOf("("));
  79. }
  80. Locale locale=new Locale(temp,temp1);
  81. strt=new StringTokenizer(values[10],"| ");
  82. if(strt.countTokens() != 3)
  83. {
  84. System.out.println(SnmpUtils.getString("Enter the Font name, Style and Size for the font"));
  85. System.exit(1);
  86. }
  87. if(values[11] != null)
  88. SnmpUtils.setSearchPath(values[11]);
  89. try{
  90. Font f=new Font((String)strt.nextToken(), Integer.parseInt((String)strt.nextToken()),Integer.parseInt((String)strt.nextToken()));
  91. mbrowser.internationalize(locale,f);
  92. }catch(Exception execpt){
  93. execpt.printStackTrace();
  94. System.exit(1);
  95. }
  96. }
  97. }
  98. startwin.showProgress(10);
  99.     mbrowser = new MibBrowser();
  100. startwin.showProgress(50);
  101.     /**
  102.      * You can customize the MenuBar. You can
  103.      * Add and Remove the MenuItems from the MenuBar.
  104.      * Exit MenuItem is added to the File Menu.
  105.      */
  106. JMenuBar bar = mbrowser.getMenuBar();
  107. JMenu fileMenu = bar.getMenu(0);
  108. fileMenu.addSeparator();
  109. exitItem =new JMenuItem(SnmpUtils.getString("Exit"),'x');
  110. Font lfont=SnmpUIUtils.getFont();//new Font("Regular",Font.PLAIN,12);
  111. exitItem.setFont(lfont);
  112. fileMenu.add(exitItem);
  113. exitItem.addActionListener(this);
  114. startwin.showProgress(60);
  115. /**
  116.      * MenuBar is an Option
  117.      */
  118.     mbrowser.setMenuBarVisible(true);
  119.      /**
  120.      * You can customize the MibBrowser ToolBar. You can
  121.      * Add and Remove the Buttons from the ToolBar.
  122.      * Exit Button is added to the ToolBar.
  123.      */
  124. startwin.showProgress(70);
  125.     /**
  126.      * To remove a button use the following method.
  127.      *
  128.      * Note:Use the index starting from 0. If a button
  129.      * is removed then the indexes will be changed.
  130.      * e.g. If you want to remove 1st and 2nd buttons
  131.      * indexes are  0 and 0. Because if you remove first
  132.      * button then the next button becomes the first button
  133.      * its index become 0.
  134.      */
  135.     //toolbar.removeComponentAt(0);
  136.     if (values[0] != null) mbrowser.setCommunity(values[0]);
  137.     
  138.     try {
  139.         if (values[1] != null) mbrowser.setTargetPort(Integer.parseInt(values[1]));
  140.         if (values[2] != null) mbrowser.setRetries(values[2]);
  141.         if (values[3] != null) mbrowser.setTimeout(values[3]);
  142.     } catch (NumberFormatException ex) {
  143.         System.err.println(SnmpUtils.getString("Invalid option: ")+" "+ex);
  144.     } 
  145.     
  146.     if (values[5] != null) mbrowser.setTargetHost(values[5]);
  147.     if (values[6] != null) {
  148. if(values[6].equals("v2"))
  149. mbrowser.setSnmpVersion( SnmpAPI.SNMP_VERSION_2C ) ;
  150. else if(values[6].equals("v1"))
  151. mbrowser.setSnmpVersion( SnmpAPI.SNMP_VERSION_1 );
  152. else if(values[6].equals("v3"))
  153. mbrowser.setSnmpVersion( SnmpAPI.SNMP_VERSION_3 );
  154. else {
  155. System.out.println(SnmpUtils.getString("Invalid Version Number"));
  156. System.exit(0);
  157. }
  158. }
  159. /**
  160.  * If database params are set, call the initJdbcParams or
  161.  * setting to load from compiled mibs by default.
  162.  */
  163. startwin.showProgress(80);
  164. if(values[7] != null)
  165. {
  166. StringTokenizer st = new StringTokenizer(values[7],"| ");
  167. if(st.countTokens()==4)
  168. {
  169. try{
  170. String s1=(String)st.nextToken();
  171. String s2=(String)st.nextToken();
  172. String s3,s4;
  173. if((s3=(String)st.nextToken()).equals("null")) 
  174. {
  175. s3="";
  176. }
  177. if((s4=(String)st.nextToken()).equals("null"))
  178. {
  179. s4="";
  180. }
  181. mbrowser.initJdbcParams(s1,s2,s3,s4);
  182. }catch(Exception e)
  183. {
  184. System.out.println(SnmpUtils.getString("Error in Database Params :")+" "+e);
  185. }
  186. }
  187. mbrowser.setLoadMibsFromDatabase(true);
  188. }
  189. startwin.showProgress(90);
  190. WindowListener l = new WindowAdapter() {
  191.         public void windowClosing(WindowEvent e) {
  192.             if(!conExitOpen && confirmExit()) {
  193. mbrowser.releaseResources();
  194.                 System.exit(0);
  195.             }
  196.         }
  197.     };
  198. this.addWindowListener(l);
  199. this.setIconImage((createImageIcon("logo.png")).getImage());
  200. this.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
  201.     getContentPane().add("Center", mbrowser);
  202. startwin.showProgress(100);
  203. startwin.setVisible(false);
  204.     }
  205. ImageIcon createImageIcon(String names)
  206. {
  207.      JimiCanvas canvas=new JimiCanvas();
  208.      canvas.setImageLocation(getClass().getResource(names));
  209.      return new ImageIcon(canvas.getImage());
  210. }
  211.     /** Get command line options and setup the MIB Browser accordingly **/    
  212.     public static void main(String[] args) {
  213.     // Take care of getting options
  214.     String usage = "java MibBrowserApplication [-v version(v1/v2/v3)][-m MIB_files] [-c community] [-p port] [-t timeout] [-r retries] [-h host] [-db "driverName url username password"] [-i "Internationalize"] [-L "Locale (language,country) "] [-F "Font (fontname,style,size)"] [-S "MibBrower properties file path" ] ";
  215.     String options[] = { "-c", "-p", "-r", "-t", "-m", "-h", "-v","-db", "-i", "-L", "-F", "-S" };
  216.     ParseOptions opt = new ParseOptions(args,options,values, usage);
  217.     if (opt.remArgs.length != 0) opt.usage_error();
  218.         try {
  219.         UIManager.setLookAndFeel( UIManager.getSystemLookAndFeelClassName());
  220.         } catch (Exception e) {
  221.             System.err.println(SnmpUtils.getString("Couldn't use the system look and feel: ")+" "+ e);
  222.         }
  223.         MibBrowserApplication jframe = new MibBrowserApplication();
  224. jframe.setTitle(SnmpUtils.getString("AdventNet MibBrowser"));
  225.         jframe.setSize(730,500);
  226.     centerWindow(jframe);
  227.         jframe.setVisible(true);
  228.         if (values[4] != null)
  229. {
  230. if(values[4].indexOf('(')!=-1)
  231. {
  232. String paths="";
  233. StringTokenizer str=new StringTokenizer(values[4],"|");
  234. while(str.hasMoreTokens())
  235. {
  236. //replace ( with " " to avoid the Program Files problems
  237. paths=paths + """ + ((String)str.nextToken()).replace('(',' ') + """+ "|";
  238. }
  239. paths=paths.substring(0,paths.length()-1);
  240. values[4]=paths;
  241. }
  242. jframe.mbrowser.setMibModules(values[4]);
  243. }
  244. else {
  245.          if(!jframe.mbrowser.isLoadRecentMibs()) {
  246. String path = System.getProperty("user.dir");
  247. if(path.endsWith("MibBrowser")) {
  248. int index = path.indexOf("MibBrowser");
  249. path = path.substring(0, index-1);
  250. }
  251. if(path.indexOf(" ") != -1) {
  252. jframe.mbrowser.setMibModules(""" + path + File.separator + "mibs" + File.separator + "RFC1213-MIB" + """);
  253. }
  254. else {
  255. jframe.mbrowser.setMibModules(path + File.separator + "mibs" + File.separator + "RFC1213-MIB");
  256. }
  257. }
  258. }
  259.         jframe.mbrowser.getMibTree().getTree().expandRow(0);
  260.     }
  261.     
  262.     public void actionPerformed(ActionEvent e) {
  263. if(e.getActionCommand().equals(SnmpUtils.getString("Exit"))) {
  264. if(!conExitOpen && confirmExit()) {
  265. mbrowser.releaseResources();
  266. this.dispose();
  267. System.exit(0);
  268. }
  269. }
  270.     }
  271.     
  272.     private static void centerWindow(Component win) {
  273.     
  274.     Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
  275.         Point screenCenter = new Point((screenSize.width/2), (screenSize.height/2));
  276.         int x = screenCenter.x-win.getSize().width/2;
  277.         int y = screenCenter.y-win.getSize().height/2;
  278.         if (x < 0) x=0;
  279.         if (y<0) y=0;
  280.         win.setLocation( x, y);
  281.     }
  282. private boolean confirmExit() {
  283. conExitOpen = true;
  284. int retval = JOptionPane.showConfirmDialog(this,
  285. SnmpUtils.getString("Do you want to really quit"),
  286. SnmpUtils.getString("Confirm Exit"),
  287. JOptionPane.YES_NO_OPTION);
  288. if (retval != JOptionPane.YES_OPTION)
  289. conExitOpen = false;
  290. return (retval == JOptionPane.YES_OPTION);
  291. }
  292. }