Fix right-click in Tabs.

git-svn-id: http://svn.igniterealtime.org/svn/repos/spark/trunk@4884 b35dd754-fafc-0310-a699-88a17e54d16e
This commit is contained in:
Derek DeMoro
2006-08-10 23:50:41 +00:00
committed by derek
parent 675a9b3893
commit 93be14b35e
5 changed files with 78 additions and 91 deletions

View File

@ -21,7 +21,6 @@ import org.jivesoftware.smack.util.StringUtils;
import org.jivesoftware.smackx.Form; import org.jivesoftware.smackx.Form;
import org.jivesoftware.smackx.MessageEventNotificationListener; import org.jivesoftware.smackx.MessageEventNotificationListener;
import org.jivesoftware.smackx.muc.MultiUserChat; import org.jivesoftware.smackx.muc.MultiUserChat;
import org.jivesoftware.spark.component.tabbedPane.SparkTab;
import org.jivesoftware.spark.ui.ChatContainer; import org.jivesoftware.spark.ui.ChatContainer;
import org.jivesoftware.spark.ui.ChatRoom; import org.jivesoftware.spark.ui.ChatRoom;
import org.jivesoftware.spark.ui.ChatRoomListener; import org.jivesoftware.spark.ui.ChatRoomListener;
@ -37,20 +36,15 @@ import org.jivesoftware.spark.util.log.Log;
import org.jivesoftware.sparkimpl.preference.chat.ChatPreference; import org.jivesoftware.sparkimpl.preference.chat.ChatPreference;
import org.jivesoftware.sparkimpl.preference.chat.ChatPreferences; import org.jivesoftware.sparkimpl.preference.chat.ChatPreferences;
import java.awt.Color; import javax.swing.Icon;
import java.awt.Font; import javax.swing.SwingUtilities;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collection; import java.util.Collection;
import java.util.HashSet; import java.util.HashSet;
import java.util.Iterator; import java.util.Iterator;
import java.util.List; import java.util.List;
import java.util.Set; import java.util.Set;
import java.util.Timer;
import java.util.TimerTask;
import javax.swing.Icon;
import javax.swing.JLabel;
import javax.swing.SwingUtilities;
/** /**
* Handles the Chat Management of each individual <code>Workspace</code>. The ChatManager is responsible * Handles the Chat Management of each individual <code>Workspace</code>. The ChatManager is responsible
@ -109,9 +103,6 @@ public class ChatManager implements MessageEventNotificationListener {
} }
} }
}, new PacketTypeFilter(Message.class)); }, new PacketTypeFilter(Message.class));
// Start timeout
checkRoomsForTimeout();
} }
@ -414,29 +405,4 @@ public class ChatManager implements MessageEventNotificationListener {
} }
}); });
} }
/**
* Checks every room every 30 seconds to see if it's timed out.
*/
private void checkRoomsForTimeout() {
int delay = 60000; // delay for 1 minute
int period = 30000; // repeat every 30 seconds.
Timer timer = new Timer();
timer.scheduleAtFixedRate(new TimerTask() {
public void run() {
for (ChatRoom chatRoom : getChatContainer().getStaleChatRooms()) {
// Turn tab gray
int index = getChatContainer().indexOfComponent(chatRoom);
SparkTab tab = getChatContainer().getTabAt(index);
final JLabel titleLabel = tab.getTitleLabel();
titleLabel.setForeground(Color.gray);
titleLabel.validate();
titleLabel.repaint();
}
}
}, delay, period);
}
} }

View File

@ -83,10 +83,7 @@ public class SparkTab extends TabPanel {
if (boldWhenActive && selected) { if (boldWhenActive && selected) {
textLabel.setFont(textLabel.getFont().deriveFont(Font.BOLD)); textLabel.setFont(textLabel.getFont().deriveFont(Font.BOLD));
} }
else if (!selected && boldWhenActive) { else if(boldWhenActive && !selected){
textLabel.setFont(defaultFont);
}
else if(selected){
textLabel.setFont(defaultFont); textLabel.setFont(defaultFont);
} }
@ -94,6 +91,10 @@ public class SparkTab extends TabPanel {
repaint(); repaint();
} }
public Font getDefaultFont(){
return defaultFont;
}
public JLabel getTitleLabel() { public JLabel getTitleLabel() {
return textLabel; return textLabel;
} }

View File

@ -14,6 +14,13 @@ import org.jivesoftware.resource.SparkRes;
import org.jivesoftware.spark.component.RolloverButton; import org.jivesoftware.spark.component.RolloverButton;
import org.jivesoftware.spark.util.ModelUtil; import org.jivesoftware.spark.util.ModelUtil;
import javax.swing.Icon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTabbedPane;
import java.awt.BorderLayout; import java.awt.BorderLayout;
import java.awt.CardLayout; import java.awt.CardLayout;
import java.awt.Component; import java.awt.Component;
@ -34,13 +41,6 @@ import java.util.Iterator;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import javax.swing.Icon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTabbedPane;
/** /**
* *
*/ */
@ -399,7 +399,10 @@ public class SparkTabbedPane extends JPanel implements MouseListener {
} }
public void mouseClicked(MouseEvent e) { public void mouseClicked(MouseEvent e) {
if (e.getSource() instanceof SparkTab) {
SparkTab tab = (SparkTab)e.getSource();
setSelectedTab(tab);
}
} }
public void setSelectedTab(SparkTab tab) { public void setSelectedTab(SparkTab tab) {
@ -413,14 +416,7 @@ public class SparkTabbedPane extends JPanel implements MouseListener {
} }
public void mousePressed(MouseEvent e) { public void mousePressed(MouseEvent e) {
if(e.isPopupTrigger()){
return;
}
if (e.getSource() instanceof SparkTab) {
SparkTab tab = (SparkTab)e.getSource();
setSelectedTab(tab);
}
} }
public void mouseReleased(MouseEvent e) { public void mouseReleased(MouseEvent e) {

View File

@ -34,6 +34,20 @@ import org.jivesoftware.spark.util.log.Log;
import org.jivesoftware.sparkimpl.settings.local.LocalPreferences; import org.jivesoftware.sparkimpl.settings.local.LocalPreferences;
import org.jivesoftware.sparkimpl.settings.local.SettingsManager; import org.jivesoftware.sparkimpl.settings.local.SettingsManager;
import javax.swing.AbstractAction;
import javax.swing.Action;
import javax.swing.BorderFactory;
import javax.swing.Icon;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPopupMenu;
import javax.swing.KeyStroke;
import javax.swing.SwingUtilities;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import java.awt.Color; import java.awt.Color;
import java.awt.Component; import java.awt.Component;
import java.awt.Dimension; import java.awt.Dimension;
@ -52,20 +66,8 @@ import java.util.HashSet;
import java.util.Iterator; import java.util.Iterator;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Timer;
import javax.swing.AbstractAction; import java.util.TimerTask;
import javax.swing.Action;
import javax.swing.BorderFactory;
import javax.swing.Icon;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPopupMenu;
import javax.swing.KeyStroke;
import javax.swing.SwingUtilities;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
/** /**
* Contains all <code>ChatRoom</code> objects within Spark. * Contains all <code>ChatRoom</code> objects within Spark.
@ -616,6 +618,7 @@ public class ChatContainer extends SparkTabbedPane implements MessageListener, C
} }
public void messageSent(ChatRoom room, Message message) { public void messageSent(ChatRoom room, Message message) {
useTabDefault(room);
} }
/** /**
@ -908,19 +911,21 @@ public class ChatContainer extends SparkTabbedPane implements MessageListener, C
} }
public void useTabDefault(final ChatRoom room) { public void useTabDefault(final ChatRoom room) {
// Check if room is stale
boolean containsRoom = getStaleChatRooms().contains(room);
if (containsRoom) {
return;
}
final int index = indexOfComponent(room); final int index = indexOfComponent(room);
if (index != -1) { if (index != -1) {
SparkTab tab = getTabAt(index); SparkTab tab = getTabAt(index);
Font defaultFont = tab.getDefaultFont();
final JLabel titleLabel = tab.getTitleLabel(); final JLabel titleLabel = tab.getTitleLabel();
Font font = titleLabel.getFont();
titleLabel.setForeground(Color.black); titleLabel.setForeground(Color.black);
titleLabel.setFont(defaultFont);
Font newFont = font.deriveFont(Font.PLAIN);
titleLabel.setFont(newFont);
titleLabel.validate();
titleLabel.repaint();
} }
} }
@ -990,6 +995,9 @@ public class ChatContainer extends SparkTabbedPane implements MessageListener, C
} }
}); });
// Start timer
checkRoomsForTimeout();
} }
@ -1072,15 +1080,6 @@ public class ChatContainer extends SparkTabbedPane implements MessageListener, C
LocalPreferences pref = SettingsManager.getLocalPreferences(); LocalPreferences pref = SettingsManager.getLocalPreferences();
int timeoutMinutes = pref.getChatLengthDefaultTimeout(); int timeoutMinutes = pref.getChatLengthDefaultTimeout();
try {
ChatRoom activeChatRoom = getActiveChatRoom();
if (activeChatRoom == chatRoom) {
continue;
}
}
catch (ChatRoomNotFoundException e) {
}
if (timeoutMinutes <= minutes) { if (timeoutMinutes <= minutes) {
staleRooms.add(chatRoom); staleRooms.add(chatRoom);
} }
@ -1145,4 +1144,29 @@ public class ChatContainer extends SparkTabbedPane implements MessageListener, C
} }
/**
* Checks every room every 30 seconds to see if it's timed out.
*/
private void checkRoomsForTimeout() {
int delay = 1000; // delay for 1 minute
int period = 60000; // repeat every 30 seconds.
Timer timer = new Timer();
timer.scheduleAtFixedRate(new TimerTask() {
public void run() {
for (ChatRoom chatRoom : getStaleChatRooms()) {
// Turn tab gray
int index = indexOfComponent(chatRoom);
SparkTab tab = getTabAt(index);
final JLabel titleLabel = tab.getTitleLabel();
titleLabel.setForeground(Color.gray);
titleLabel.setFont(tab.getDefaultFont());
titleLabel.validate();
titleLabel.repaint();
}
}
}, delay, period);
}
} }

View File

@ -301,6 +301,8 @@ public class ChatRoomImpl extends ChatRoom {
* @param message the message to send. * @param message the message to send.
*/ */
public void sendMessage(Message message) { public void sendMessage(Message message) {
lastActivity = System.currentTimeMillis();
// Check to see if the user is online to recieve this message. // Check to see if the user is online to recieve this message.
RosterEntry entry = roster.getEntry(participantJID); RosterEntry entry = roster.getEntry(participantJID);
if (presence == null && !offlineSent && entry != null) { if (presence == null && !offlineSent && entry != null) {
@ -345,8 +347,6 @@ public class ChatRoomImpl extends ChatRoom {
catch (Exception ex) { catch (Exception ex) {
Log.error("Error sending message", ex); Log.error("Error sending message", ex);
} }
lastActivity = System.currentTimeMillis();
} }
public String getRoomname() { public String getRoomname() {