Skip to content

Commit d01006c

Browse files
committed
增加修改昵称功能
1 parent 7df7158 commit d01006c

File tree

3 files changed

+81
-23
lines changed

3 files changed

+81
-23
lines changed

src/main/java/UI/AppMainWindow.java

Lines changed: 28 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,15 +6,18 @@
66
import UI.panel.im.IMPanel;
77
import UI.panel.monitor.ConsolePanel;
88
import UI.panel.setting.SettingPanel;
9+
import com.alibaba.fastjson.JSON;
910
import com.nbs.ipfs.IPFSHelper;
1011
import com.nbs.tools.ConfigHelper;
1112
import io.ipfs.api.IPFS;
13+
import org.apache.commons.lang3.StringUtils;
1214
import org.slf4j.Logger;
1315
import org.slf4j.LoggerFactory;
1416

1517
import javax.swing.*;
1618
import java.awt.*;
1719
import java.io.File;
20+
import java.io.IOException;
1821
import java.util.Map;
1922
import java.util.Properties;
2023

@@ -190,15 +193,38 @@ private void loadEnv(){
190193
if(ipfs==null)ipfs = new IPFS(ConfigHelper.getIpfsAddress());
191194
SERVER_STAT = true;
192195
Map map = ipfs.id();
193-
PROFILE_NICKNAME = ipfsHelper.getNickName();
196+
197+
if(map.get("ID")!=null)PEER_ID = (String)map.get("ID");
194198
logger.info(">>>>>>>>>>>>>."+map.get("ID"));
199+
initNick();
195200
}catch (Exception e){
196-
logger.error("ipfs Server is dead.");
201+
logger.error("ipfs Server is dead.",e.getCause());
197202
ipfs = new IPFS(ConfigHelper.getIpfsAddress());
198203
}
199204

200205
}
201206

202207

208+
public void initNick(){
209+
if(StringUtils.isNotBlank(PROFILE_NICKNAME))return;
210+
String nick = "";
211+
try {
212+
Map cfgMap = ipfs.config.show();
213+
if(cfgMap.containsKey(IPFSHelper.JSON_NICKNAME_KEY)){
214+
nick = (String)cfgMap.get(IPFSHelper.JSON_NICKNAME_KEY);
215+
}
216+
} catch (IOException e) {
217+
e.printStackTrace();
218+
nick = ipfsHelper.generateNickName();
219+
try {
220+
ipfs.config.set(IPFSHelper.JSON_NICKNAME_KEY,nick);
221+
String s=JSON.toJSONString(ipfs.config.show(),true);
222+
logger.info(s);
223+
} catch (IOException e1) {
224+
e1.printStackTrace();
225+
}
226+
}
227+
PROFILE_NICKNAME = nick;
228+
}
203229

204230
}

src/main/java/UI/panel/StatusPanel.java

Lines changed: 38 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66

77
import UI.templete.WihteBackJPanel;
88
import com.alibaba.fastjson.JSON;
9+
import com.nbs.ipfs.IPFSHelper;
910
import com.nbs.tools.PropertyUtil;
1011
import com.nbs.tools.StringHelper;
1112
import org.apache.commons.lang3.StringUtils;
@@ -15,6 +16,9 @@
1516
import javax.swing.*;
1617
import javax.swing.table.AbstractTableModel;
1718
import java.awt.*;
19+
import java.awt.event.ActionEvent;
20+
import java.awt.event.MouseAdapter;
21+
import java.awt.event.MouseEvent;
1822
import java.io.File;
1923
import java.io.IOException;
2024
import java.util.Map;
@@ -31,8 +35,6 @@ public class StatusPanel extends JPanel {
3135
private static final long serialVersionUID = 1L;
3236
private static final Logger logger = LoggerFactory.getLogger(StatusPanel.class);
3337

34-
public static boolean isRunning = false;
35-
3638
public static final String AVATAR_IMAGE_PATH = ConstantsUI.PROFILE_ROOT+"avatars"+File.separator;
3739

3840

@@ -101,19 +103,18 @@ private JPanel getCenterPanel(){
101103
JPanel cell11 = new WihteBackJPanel();
102104
cell11.setLayout(new FlowLayout(FlowLayout.LEFT,ConstantsUI.MAIN_H_GAP,5));
103105

104-
String peerId = "";
105-
try {
106-
if(AppMainWindow.SERVER_STAT){
107-
Map m =AppMainWindow.ipfs.id();
108-
if(m.containsKey("ID"))peerId= (String) m.get("ID");
109-
AppMainWindow.PEER_ID = peerId;
110-
}
111-
} catch (IOException e) {
112-
e.printStackTrace();
113-
}
114-
String nickVal = PropertyUtil.getProperty("nbs.ui.panel.status.default-nickname");
106+
//头像
107+
String nickVal = StringUtils.isBlank(AppMainWindow.PROFILE_NICKNAME) ?
108+
PropertyUtil.getProperty("nbs.ui.panel.status.default-nickname") : AppMainWindow.PROFILE_NICKNAME;
115109
ImageIcon icon = new ImageIcon(AVATAR_IMAGE_PATH + PropertyUtil.getProperty("nbs.ui.panel.status.default-avatar"));
116110
AvatarIconButton avatar = new AvatarIconButton(icon,nickVal);
111+
//
112+
avatar.addActionListener(new AbstractAction() {
113+
@Override
114+
public void actionPerformed(ActionEvent e) {
115+
JOptionPane.showMessageDialog(AppMainWindow.frame,"暂时不能设置头像");
116+
}
117+
});
117118
cell11.add(avatar);
118119

119120
firstRow.add(cell11);
@@ -125,19 +126,38 @@ private JPanel getCenterPanel(){
125126
WihteBackJPanel peerInfo = new WihteBackJPanel();
126127
peerInfo.setLayout(new GridLayout(2,1));
127128
//
128-
JLabel nickname = new ContentJLabel(nickVal);
129-
nickname.setFont(ConstantsUI.FONT_LABEL);
130-
peerInfo.add(nickname);
131129

132-
JLabel peerIDLabel = new ContentJLabel(PropertyUtil.getProperty("nbs.ui.panel.status.label.peer-id","PeerID:")+peerId);
130+
JLabel nickLabel = new ContentJLabel(AppMainWindow.PROFILE_NICKNAME);
131+
nickLabel.setFont(ConstantsUI.FONT_LABEL);
132+
nickLabel.addMouseListener(new MouseAdapter() {
133+
@Override
134+
public void mouseClicked(MouseEvent e) {
135+
String newNick = JOptionPane.showInputDialog(AppMainWindow.frame,"昵称",nickLabel.getText());
136+
if(StringUtils.isNotBlank(newNick.trim())&&newNick.trim().length()<=40){
137+
try {
138+
String res = IPFSHelper.getInstance().updateNick(newNick);
139+
if(res!=null)AppMainWindow.PROFILE_NICKNAME = res;
140+
nickLabel.setText(res);
141+
nickLabel.updateUI();
142+
} catch (IOException e1) {
143+
e1.printStackTrace();
144+
JOptionPane.showMessageDialog(AppMainWindow.frame,"修改失败.");
145+
}
146+
}
147+
super.mouseClicked(e);
148+
}
149+
});
150+
peerInfo.add(nickLabel);
151+
152+
JLabel peerIDLabel = new ContentJLabel(PropertyUtil.getProperty("nbs.ui.panel.status.label.peer-id","PeerID:")+AppMainWindow.PEER_ID);
133153
peerIDLabel.setFont(ConstantsUI.FONT_NORMAL);
134154
peerInfo.add(peerIDLabel);
135155
cell11.add(peerInfo,BorderLayout.CENTER);
136156

137157
/**
138158
* Peer 详细信息
139159
*/
140-
JScrollPane scrollPane = new JScrollPane(getPeerIdInfo(peerId),JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
160+
JScrollPane scrollPane = new JScrollPane(getPeerIdInfo(AppMainWindow.PEER_ID),JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
141161
//scrollPane.setLayout(new BorderLayout());
142162
scrollPane.setBackground(ConstantsUI.MAIN_BACK_COLOR);
143163
scrollPane.setSize(ConstantsUI.MAIN_WINDOW_WIDTH-85,ConstantsUI.MAIN_WINDOW_HEIGHT-136);

src/main/java/com/nbs/ipfs/IPFSHelper.java

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ public class IPFSHelper {
2727
private ConcurrentHashMap secMap = new ConcurrentHashMap();
2828
public static String CLIENT_PEERID;
2929
public static String JSON_NICKNAME_KEY = "nickname";
30-
public static String NICKNAME;
30+
3131
private IPFS ipfs;
3232

3333
/**
@@ -71,7 +71,7 @@ public IPFS getIpfs() {
7171
return ipfs;
7272
}
7373

74-
private String generateNickName(){
74+
public String generateNickName(){
7575
String[] sources = new String[]{
7676
"8","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z",
7777
"a","b","c","d","e","f","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z",
@@ -98,7 +98,7 @@ private int getRadom(int len){
9898
* @throws IOException
9999
*/
100100
public String getNickName() throws IOException {
101-
if(StringUtils.isNotBlank(NICKNAME))return NICKNAME;
101+
102102
String nick = ipfs.config.get(JSON_NICKNAME_KEY);
103103
if(StringUtils.isBlank(nick)){
104104
nick = generateNickName();
@@ -107,6 +107,18 @@ public String getNickName() throws IOException {
107107
return nick;
108108
}
109109

110+
/**
111+
*
112+
* @param nick
113+
* @return
114+
* @throws IOException
115+
*/
116+
public String updateNick(String nick) throws IOException {
117+
if(ipfs==null||StringUtils.isBlank(nick))return null;
118+
nick = nick.trim();
119+
ipfs.config.set(JSON_NICKNAME_KEY,nick);
120+
return nick;
121+
}
110122

111123

112124
public void getIMPeers(){

0 commit comments

Comments
 (0)