【基于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

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

# If true, Spark cannot shut down
# users wont be able to shut down Spark
DISABLE_EXIT = true

 

 

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



 但是你会发现



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

MainWindow.java line 506

if ((Spark.isWindows() || Spark.isLinux()) || Spark.isMac() && !Default.getBoolean("DISABLE_EXIT")) {
            connectMenu.add(logoutMenuItem);
            connectMenu.add(logoutWithStatus);
	    connectMenu.addSeparator();
	}

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

 

 

主界面右上角的关闭按钮 默认是 点了之后不做退出操作,只是最小化,如果有需要你可以改成退出

ChatFrame.java line 64

this.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);

 可选择:

public interface WindowConstants
{
    public static final int DO_NOTHING_ON_CLOSE = 0;
    public static final int HIDE_ON_CLOSE = 1;
    public static final int DISPOSE_ON_CLOSE = 2;
    public static final int EXIT_ON_CLOSE = 3;
}

 
 

  • 设置主界面默认大小

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

if (settings.getMainWindowX() == 0 && settings.getMainWindowY() == 0) {
            // Use default settings.
            setSize(500, 500);
            GraphicUtils.centerWindowOnScreen(this);
        }

 

  •  拿掉更新功能

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


# Disables updateability, you should set this, if you have a custom Spark-build
# or are in an environment where installfiles are distributed via network
DISABLE_UPDATES = true

 

 
 

  • 直接拿掉菜单栏

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




 在配置文件 default.properties 中添加

# true to hide menu bar
HIDE_MENUBAR = true

 MainWindow.java 中修改 line 160

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

 

 

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

 Workspace.java 中修改 line 206

if (!Default.getBoolean("CONTACT_LIST_DISABLED")) {
        	// Initialize Contact List
        	contactList = UIComponentRegistry.createContactList();
        	conferences = UIComponentRegistry.createConferenceServices();
        	// Init contact list.
        	contactList.initialize();
  }

 效果图在上面

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

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

public class MessageTreePlugin implements Plugin {

	@Override
	public void initialize() {
		System.out.println("Welcome To Spark message Tree!");
		addTabToSpark();
	}

	@Override
	public void shutdown() {
		// TODO Auto-generated method stub

	}

	@Override
	public boolean canShutDown() {
		// TODO Auto-generated method stub
		return false;
	}

	@Override
	public void uninstall() {
		// TODO Auto-generated method stub

	}
	
	/**
     * Adds a tab to Spark
     */
    private void addTabToSpark(){
         // Get Workspace UI from SparkManager
        Workspace workspace = SparkManager.getWorkspace();

        // Retrieve the Tabbed Pane from the WorkspaceUI.
        SparkTabbedPane tabbedPane = workspace.getWorkspacePane();

        // Add own Tab.
        tabbedPane.addTab("My Plugin", null,new JButton("Hello"));
    }
}

 

在Workspace.java line 204中添加

    public void buildLayout() {
        new Enterprise();
        if (!Default.getBoolean("CONTACT_LIST_DISABLED")) {
        	// Initialize Contact List
        	contactList = UIComponentRegistry.createContactList();
        	conferences = UIComponentRegistry.createConferenceServices();
        	// Init contact list.
        	contactList.initialize();
            
        }
        MessageTreePlugin mtp = new MessageTreePlugin();
        mtp.initialize();

  效果图在上面

 

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

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值