From 7e63ef44b369f2213af06c2790ee6c824e4e7fc4 Mon Sep 17 00:00:00 2001 From: Yana Stamcheva Date: Mon, 27 Nov 2006 16:30:21 +0000 Subject: [PATCH] single click opens ang closes a group --- .../gui/main/contactlist/ContactList.java | 25 +++++++++++++++++++ .../contactlist/ContactListCellRenderer.java | 23 +++++++++++++---- 2 files changed, 43 insertions(+), 5 deletions(-) diff --git a/src/net/java/sip/communicator/impl/gui/main/contactlist/ContactList.java b/src/net/java/sip/communicator/impl/gui/main/contactlist/ContactList.java index e18bfb7dc..06ed8a3c8 100644 --- a/src/net/java/sip/communicator/impl/gui/main/contactlist/ContactList.java +++ b/src/net/java/sip/communicator/impl/gui/main/contactlist/ContactList.java @@ -537,6 +537,31 @@ public void mousePressed(MouseEvent e) } else if ((e.getModifiers() & InputEvent.BUTTON1_MASK) != 0){ fireContactListEvent(group, ContactListEvent.GROUP_SELECTED); + + //get the component under the mouse + Component component = this.getHorizontalComponent(renderer, + translatedX); + + if (component instanceof JPanel) { + if (component.getName() != null + && component.getName().equals("buttonsPanel")) { + JPanel panel = (JPanel) component; + + int internalX = translatedX + - (renderer.getWidth() - panel.getWidth() - 2); + + Component c = getHorizontalComponent(panel, internalX); + + if (c instanceof JLabel) { + if (listModel.isGroupClosed(group)) { + listModel.openGroup(group); + } + else { + listModel.closeGroup(group); + } + } + } + } } } diff --git a/src/net/java/sip/communicator/impl/gui/main/contactlist/ContactListCellRenderer.java b/src/net/java/sip/communicator/impl/gui/main/contactlist/ContactListCellRenderer.java index 2b2f54233..3a5bfb2c1 100644 --- a/src/net/java/sip/communicator/impl/gui/main/contactlist/ContactListCellRenderer.java +++ b/src/net/java/sip/communicator/impl/gui/main/contactlist/ContactListCellRenderer.java @@ -35,7 +35,7 @@ public class ContactListCellRenderer extends JPanel private JLabel nameLabel = new JLabel(); private JPanel buttonsPanel; - + private SIPCommButton extendPanelButton = new SIPCommButton(ImageLoader .getImage(ImageLoader.MORE_INFO_ICON), ImageLoader .getImage(ImageLoader.MORE_INFO_ICON)); @@ -186,13 +186,26 @@ public Component getListCellRendererComponent(JList list, Object value, //this.remove(buttonsPanel); this.buttonsPanel.removeAll(); + JLabel groupContentIndicator = new JLabel(); + if(((ContactListModel)list.getModel()).isGroupClosed(groupItem)) - this.buttonsPanel.add(new JLabel(new ImageIcon(ImageLoader - .getImage(ImageLoader.CLOSED_GROUP)))); + groupContentIndicator.setIcon(new ImageIcon(ImageLoader + .getImage(ImageLoader.CLOSED_GROUP))); else - this.buttonsPanel.add(new JLabel(new ImageIcon(ImageLoader - .getImage(ImageLoader.OPENED_GROUP)))); + groupContentIndicator.setIcon(new ImageIcon(ImageLoader + .getImage(ImageLoader.OPENED_GROUP))); + //the width is fixed in + //order all the icons to be with the same size + groupContentIndicator.setBounds(0, 0, 12, 12); + this.buttonsPanel.setPreferredSize( + new Dimension(17, 16)); + this.buttonsPanel.setBounds( + list.getWidth() - 2 - 17, 0, + 17, 16); + + this.buttonsPanel.add(groupContentIndicator); + this.isLeaf = false; }