Skip to content

Commit 603eacf

Browse files
committed
增加图片处理
1 parent d47dc9c commit 603eacf

File tree

3 files changed

+117
-2
lines changed

3 files changed

+117
-2
lines changed

src/main/java/io/ipfs/nbs/helper/MessageViewHolderCacheHelper.java

Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,12 @@
11
package io.ipfs.nbs.helper;
22

3+
import io.nbs.client.ui.components.adapters.MessageMouseListener;
34
import io.nbs.client.ui.panels.im.messages.MessageLeftTextViewHolder;
45
import io.nbs.client.ui.panels.im.messages.MessageRightTextViewHolder;
56
import io.nbs.client.ui.panels.im.messages.MessageSystemMessageViewHolder;
67

8+
import javax.swing.*;
9+
import java.awt.event.MouseListener;
710
import java.util.ArrayList;
811
import java.util.List;
912

@@ -23,8 +26,10 @@ public class MessageViewHolderCacheHelper {
2326
private final int CACHE_CAPACITY = 20;
2427
private List<MessageRightTextViewHolder> rightTextViewHolders = new ArrayList<>();
2528

29+
2630
private List<MessageLeftTextViewHolder> leftTextViewHolders = new ArrayList<>();
2731

32+
2833
private List<MessageSystemMessageViewHolder> systemMessageViewHolders = new ArrayList<>();
2934

3035
private int rightTextPosition = 0;
@@ -58,4 +63,93 @@ private void initLeftTextViewHolder(){
5863
leftTextViewHolders.add(new MessageLeftTextViewHolder());
5964
}
6065
}
66+
67+
/**
68+
*
69+
* @return
70+
*/
71+
public synchronized MessageRightTextViewHolder tryGetRightTextViewHolder(){
72+
MessageRightTextViewHolder holder =null;
73+
if(rightTextPosition <CACHE_CAPACITY && rightTextViewHolders.size()>0){
74+
holder = rightTextViewHolders.get(rightTextPosition);
75+
}
76+
return holder;
77+
}
78+
79+
/**
80+
*
81+
* @return
82+
*/
83+
public synchronized MessageLeftTextViewHolder tryGetLeftTextViewHolder()
84+
{
85+
MessageLeftTextViewHolder holder = null;
86+
if (leftTextPosition < CACHE_CAPACITY && leftTextViewHolders.size() > 0)
87+
{
88+
holder = leftTextViewHolders.get(leftTextPosition);
89+
leftTextPosition++;
90+
}
91+
92+
return holder;
93+
}
94+
95+
/**
96+
* @Date : 2018/7/3 0:04
97+
* @Author : lanbery
98+
* @Decription :
99+
* <p></p>
100+
* @Param :
101+
* @return
102+
* @throws
103+
*/
104+
public synchronized MessageSystemMessageViewHolder tryGetSystemMessageViewHolder()
105+
{
106+
MessageSystemMessageViewHolder holder = null;
107+
if (systemMessagePosition < CACHE_CAPACITY && systemMessageViewHolders.size() > 0)
108+
{
109+
holder = systemMessageViewHolders.get(systemMessagePosition);
110+
systemMessagePosition++;
111+
}
112+
113+
return holder;
114+
}
115+
116+
public synchronized void reset(){
117+
for (int i = 0; i < rightTextPosition; i++)
118+
{
119+
MessageRightTextViewHolder viewHolder = rightTextViewHolders.get(i);
120+
clearMouseListener(viewHolder.messageBubble);
121+
clearMouseListener(viewHolder.resend);
122+
clearMouseListener(viewHolder.text);
123+
}
124+
125+
for (int i = 0; i < leftTextPosition; i++)
126+
{
127+
MessageLeftTextViewHolder viewHolder = leftTextViewHolders.get(i);
128+
129+
clearMouseListener(viewHolder.text);
130+
clearMouseListener(viewHolder.messageBubble);
131+
clearMouseListener(viewHolder.avatar);
132+
}
133+
134+
rightTextPosition = 0;
135+
rightImagePosition = 0;
136+
rightAttachmentPosition = 0;
137+
138+
leftTextPosition = 0;
139+
leftImagePosition = 0;
140+
leftAttachmentPosition = 0;
141+
142+
systemMessagePosition = 0;
143+
}
144+
145+
private void clearMouseListener(JComponent component)
146+
{
147+
for (MouseListener l : component.getMouseListeners())
148+
{
149+
if (l instanceof MessageMouseListener)
150+
{
151+
component.removeMouseListener(l);
152+
}
153+
}
154+
}
61155
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package io.nbs.client.ui.components.adapters;
2+
3+
import java.awt.event.MouseAdapter;
4+
5+
/**
6+
* @Package : io.nbs.client.ui.components.message
7+
* @Description :
8+
* <p></p>
9+
* @Author : lambor.c
10+
* @Date : 2018/7/3-0:07
11+
* Copyright (c) 2018, NBS , lambor.c<[email protected]>.
12+
* All rights reserved.
13+
*/
14+
public class MessageMouseListener extends MouseAdapter {
15+
}

src/main/java/io/nbs/client/ui/panels/im/messages/MessageRightTextViewHolder.java

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package io.nbs.client.ui.panels.im.messages;
22

33
import UI.AppMainWindow;
4+
import io.nbs.client.Launcher;
45
import io.nbs.client.ui.components.NBSIconButton;
56
import com.nbs.tools.ConfigHelper;
67
import io.nbs.client.cnsts.FontUtil;
@@ -23,16 +24,21 @@
2324
* All rights reserved.
2425
*/
2526
public class MessageRightTextViewHolder extends BaseMessageViewHolder {
27+
28+
2629
public SizeAutoAdjustTextArea text;
27-
ImageIcon defaltIcon = new ImageIcon(ConfigHelper.PROFILE_ROOT+"avatars/default_avatar.png");
30+
/**
31+
* TODO
32+
*/
33+
ImageIcon defaltIcon = new ImageIcon(Launcher.appBasePath +"avatars/default_avatar.png");
2834
public NBSIconButton messageButton = new NBSIconButton(defaltIcon,defaltIcon,"");
2935
public JLabel resend = new JLabel(); // 重发按钮
3036
public JLabel sendingProgress = new JLabel(); // 正在发送
3137

3238
private JPanel timePanel = new JPanel();
3339
private JPanel messageAvatarPanel = new JPanel();
3440

35-
private IMRightImageMessageBubble messageBubble = new IMRightImageMessageBubble();
41+
public IMRightImageMessageBubble messageBubble = new IMRightImageMessageBubble();
3642

3743
public MessageRightTextViewHolder(){
3844
initComponents();

0 commit comments

Comments
 (0)