现在的位置: 首页 > java > spark > 正文
spark 二次开发 为spark添加签名功能。 修改statusbar中的lable位置
2012年05月06日 spark ⁄ 共 3927字 暂无评论

spark是没有签名功能的,为了满足用户的需求,需要加入签名功能,今天搞了搞 。不是很完美,以后会慢慢的完善。 我的思路是 :利用vcard中的中间名,修改成签名信息。

首先,要把布局修改下 workspace 中的buildlayout方法   statusbox.loadvcard 。在声明statusbox时候,进行了statusbox界面加载。 进入org.jivesoftware.spark.ui.status.StatusBar  在 StatusBar的构造方法中 进行了如下修改

 

         add(statusPanel, new GridBagConstraints(1, 0, 1, 1, 1.0, 0.0, GridBagConstraints.NORTHWEST, GridBagConstraints.NONE, new Insets(2,12, 0, 0), 0, 0));
        add(qianmingLabel, new GridBagConstraints(1, 1, 1, 1, 0.0, 0.0, GridBagConstraints.NORTHWEST, GridBagConstraints.NONE, new Insets(0, 7, 0, 0), 0, 0));
         add(commandPanel, new GridBagConstraints(1, 2, 1, 1, 0.0, 0.0, GridBagConstraints.SOUTHWEST, GridBagConstraints.NONE, new Insets(0, 5, 0, 0), 0, 0));
  主要做的工作是 吧statuspanel移到了 nicknamelable位置,然后 把 nicknamelable加载到了statuspanel上

在statusbar中 要声明

   private JLabel qianmingLabel = new JLabel();

添加两个方法

   public void setQianMing(String qianming) {
        qianmingLabel.setText(qianming);
    }

    public JLabel getQianMingLabel() {
        return qianmingLabel;
    }

   String qianming=    SparkManager.getVCardManager().getVCard().getMiddleName();
     if(qianming!=null) setQianMing(qianming);

然后到statuspanel的构造方法内 进行如下修改

 

   add(nicknameLabel, new GridBagConstraints(0, 0, 1, 1, 0.0, 0.0, GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(0, 0, 0, 0), 0, 0));
            add(iconLabel, new GridBagConstraints(1, 0, 1, 1, 0.0, 0.0, GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(0, 0, 0, 0), 0, 0));
            add(statusLabel, new GridBagConstraints(2, 0, 1, 1, 1.0, 0.0, GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(0, 2, 0, 0), 0, 0));

            statusLabel.setFont(new Font("宋体", Font.PLAIN, 11));
            statusLabel.setIcon(SparkRes.getImageIcon(SparkRes.DOWN_ARROW_IMAGE));
            statusLabel.setHorizontalTextPosition(JLabel.LEFT);
         // nicknameLabel.setToolTipText(SparkManager.getConnection().getUser());
          nicknameLabel.setFont(new Font("宋体", Font.BOLD, 12));

 

 

主要工作是把nicknamelabel 加到这个面板上。

 

 

接下来的工作就是要修改vcard了 把 中间名修改为状态。首先,修改界面

先修改下i18  zh_CN 吧 label.middle.name 修改为 签名信息

然后修改   把firstname  与 middlename进行位置调换

   // Handle First Name
        JLabel firstNameLabel = new JLabel();
        firstNameField = new JTextField();
        ResourceUtils.resLabel(firstNameLabel, firstNameField, Res.getString("label.first.name") + ":");

        add(firstNameLabel, new GridBagConstraints(0, 1, 1, 1, 0.0, 0.0, GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(5, 5, 5, 5), 0, 0));
        add(firstNameField, new GridBagConstraints(1, 1, 1, 1, 1.0, 0.0, GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, new Insets(5, 5, 5, 5), 0, 0));

        // Handle Middle Name
        JLabel middleNameLabel = new JLabel();
        middleNameField = new JTextField();
        ResourceUtils.resLabel(middleNameLabel, middleNameField, Res.getString("label.middle.name") + ":");
        add(middleNameLabel, new GridBagConstraints(0, 0, 1, 1, 0.0, 0.0, GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(5, 5, 5, 5), 0, 0));
        add(middleNameField, new GridBagConstraints(1, 0, 1, 1, 1.0, 0.0, GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, new Insets(5, 5, 5, 5), 0, 0)); 

然后在 vcardeditor(org.jivesoftware.sparkimpl.profile )saveVCard() 方法 添加如下代码

 

 vcard.setMiddleName(personalPanel.getMiddleName());
 SparkManager.getWorkspace().getStatusBar().getQianMingLabel().setText(personalPanel.getMiddleName()); //添加的代码。 作用就是 当点击保存的时候,进行statusbar签名信息更新。

最好 还要修改contactitem  要进行监听,设置签名信息  ,当用户修改签名的时候也要对应的进行更新

setstatusText 这个方法已经修改成了进行签名信息更新了 跟staus没有任何关系了

    public void setStatusText(String status) {
        String qianming=   SparkManager.getVCardManager().getVCard(getJID()).getMiddleName();
   
        if(qianming==null||qianming.equals("")){qianming="";}
        getDescriptionLabel().setText(qianming);

//        if (ModelUtil.hasLength(status)) {
//            getDescriptionLabel().setText(" - " + status);
//        }
//        else {
//            getDescriptionLabel().setText("");
//        }
    }

 

最后 在contactitem进行处理,生成contactitem的时候,要进行签名初始化;

 

 // 获取签名信息
    VCard vCard = SparkManager.getVCardManager().getVCard(fullyQualifiedJID);
    String qianming=vCard.getMiddleName();
    setStatusText(qianming);
    // 获取结束

给我留言

您必须 [ 登录 ] 才能发表留言!

×