【基于spark IM 的二次开发笔记】第一天 各种配置

  • 开发环境配置

已经有现成的了 我就不再造轮子了

http://huxj62488.iteye.com/blog/615600

 

  • 登录界面 描述类

/spark/src/java/org/jivesoftware/LoginDialog.java

 

  • 主界面 描述类

/spark/src/java/org/jivesoftware/spark/Workspace.java

/spark/src/java/org/jivesoftware/MainWindow.java

 

  • 托盘图标 右键 描述类

/spark/src/java/org/jivesoftware/sparkimpl/plugin/systray/SysTrayPlugin.java

 

  • 禁止退出功能

spark 已经有了相关功能,只不过是在配置文件中

/spark/src/java/org/jivesoftware/resource/default.properties

不少功能都可以在这个配置文件中配置

Xml代码 复制代码
  1. # If true, Spark cannot shut down   
  2. # users wont be able to shut down Spark   
  3. DISABLE_EXIT = true  

 

 

由于退出不止这一个方法 我们得考虑很多地方



 但是你会发现



 这两登出按钮始终不会消失,看代码:

MainWindow.java line 506

Java代码 复制代码
  1. if ((Spark.isWindows() || Spark.isLinux()) || Spark.isMac() && !Default.getBoolean("DISABLE_EXIT")) {   
  2.             connectMenu.add(logoutMenuItem);   
  3.             connectMenu.add(logoutWithStatus);   
  4.         connectMenu.addSeparator();   
  5.     }  

 看代码后 貌似配置"DISABLE_EXIT"没啥意义了 想登出就 只留"DISABLE_EXIT"的判断吧

 

 

  • 设置主界面默认大小

在主界面面第一次启动时,会采取一个默认值,关闭时会把这个默认值保存,如果你在关闭之前手动拖拉过主界面的大小,下次启动时的主界面会是你上次关闭时的大小
MainWindow.java

Java代码 复制代码
  1. if (settings.getMainWindowX() == 0 && settings.getMainWindowY() == 0) {   
  2.             // Use default settings.   
  3.             <SPAN style="COLOR: #ff0000">setSize(500500);   
  4. </SPAN>            GraphicUtils.centerWindowOnScreen(this);   
  5.         }  

 

  •  拿掉更新功能

改了半天界面别谁手一犯贱就更新成最新版了


Xml代码 复制代码
  1. # Disables updateability, you should set this, if you have a custom Spark-build   
  2. # or are in an environment where installfiles are distributed via network   
  3. DISABLE_UPDATES = <SPAN style="COLOR: #ff0000">true</SPAN>  

 

 
 

  • 直接拿掉菜单栏

这可没有配置,自己加呗(需要才动这可,谁知道哪里会报错)




 在配置文件 default.properties 中添加

Xml代码 复制代码
  1. # true to hide menu bar   
  2. HIDE_MENUBAR = true  

 MainWindow.java 中修改 line 160

Java代码 复制代码
  1. if (!Default.getBoolean("HIDE_MENUBAR")) {   
  2.             // Add menubar   
  3.             this.setJMenuBar(mainWindowBar);   
  4.             this.getContentPane().add(topToolbar, BorderLayout.NORTH);   
  5.  }else { //不加个空的menubar其它地方会报错导致托盘图标都没了,懒得去研究就用了这个笨办法,图中红箭头就是效果,影响不打   
  6.             JMenuBar jmenubar = new JMenuBar();   
  7.             jmenubar.add(new JMenu());   
  8.             this.setJMenuBar(jmenubar);   
  9. }  

 

 

  • 拿掉联系人和会议Tab
     在配置文件 default.properties 中添加
Xml代码 复制代码
  1. #true to hide contact list and conference   
  2. CONTACT_LIST_DISABLED = true  

 Workspace.java 中修改 line 206

Java代码 复制代码
  1. <SPAN style="COLOR: #0000ff">if (!Default.getBoolean("CONTACT_LIST_DISABLED")) {   
  2. </SPAN>         // Initialize Contact List   
  3.             contactList = UIComponentRegistry.createContactList();   
  4.             conferences = UIComponentRegistry.createConferenceServices();   
  5.             // Init contact list.   
  6.             contactList.initialize();   
  7.   <SPAN style="COLOR: #0000ff">}</SPAN>  

 效果图在上面

  • 添加自定义Tab
     也就是sparkplug开发啦,我这边需求不需要原来的联系人和会议Tab,反正要改代码所以干脆放一起了,没以插件的形式加入

自己新建个插件包,建个类实现Plugin

Java代码 复制代码
  1. public class MessageTreePlugin implements Plugin {   
  2.   
  3.     @Override  
  4.     public void initialize() {   
  5.         System.out.println("Welcome To Spark message Tree!");   
  6.         addTabToSpark();   
  7.     }   
  8.   
  9.     @Override  
  10.     public void shutdown() {   
  11.         // TODO Auto-generated method stub   
  12.   
  13.     }   
  14.   
  15.     @Override  
  16.     public boolean canShutDown() {   
  17.         // TODO Auto-generated method stub   
  18.         return false;   
  19.     }   
  20.   
  21.     @Override  
  22.     public void uninstall() {   
  23.         // TODO Auto-generated method stub   
  24.   
  25.     }   
  26.        
  27.     /**  
  28.      * Adds a tab to Spark  
  29.      */  
  30.     private void addTabToSpark(){   
  31.          // Get Workspace UI from SparkManager   
  32.         Workspace workspace = SparkManager.getWorkspace();   
  33.   
  34.         // Retrieve the Tabbed Pane from the WorkspaceUI.   
  35.         SparkTabbedPane tabbedPane = workspace.getWorkspacePane();   
  36.   
  37.         // Add own Tab.   
  38.         tabbedPane.addTab("My Plugin"null,new JButton("Hello"));   
  39.     }   
  40. }  

 

在Workspace.java line 204中添加

Java代码 复制代码
  1. public void buildLayout() {   
  2.     new Enterprise();   
  3.     if (!Default.getBoolean("CONTACT_LIST_DISABLED")) {   
  4.         // Initialize Contact List   
  5.         contactList = UIComponentRegistry.createContactList();   
  6.         conferences = UIComponentRegistry.createConferenceServices();   
  7.         // Init contact list.   
  8.         contactList.initialize();   
  9.            
  10.     }   
  11.    <SPAN style="COLOR: #ff0000"> MessageTreePlugin mtp = new MessageTreePlugin();   
  12.     mtp.initialize();</SPAN>  

  效果图在上面

 

今天就这么多吧 明天在自定义Tab上添加树型结构

posted @ 2013-05-20 12:39  九州浪子  阅读(908)  评论(0编辑  收藏  举报