# HG changeset patch # User Goffi # Date 1304805164 -7200 # Node ID 824516b247e6ecd317820647b178932b10c6e94d # Parent 46c8d5431198f547c44ff24f147f9f0f2fa3e59d browser side: added ContactsChooser dialog diff -r 46c8d5431198 -r 824516b247e6 browser_side/dialog.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/browser_side/dialog.py Sat May 07 23:52:44 2011 +0200 @@ -0,0 +1,82 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- + +""" +Libervia: a Salut à Toi frontend +Copyright (C) 2011 Jérôme Poisson (goffi@goffi.org) + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with this program. If not, see . +""" + +from pyjamas.ui.VerticalPanel import VerticalPanel +from pyjamas.ui.HorizontalPanel import HorizontalPanel +from pyjamas.ui.DialogBox import DialogBox +from pyjamas.ui.ListBox import ListBox +from pyjamas.ui.Button import Button + +class ContactsChooser(DialogBox): + + def __init__(self, host, callback, nb_contact=None, text='Please select contacts'): + """ + ContactsChooser allow to select one or several connected contacts + @param host: SatWebFrontend instance + @param callback: method to call when contacts have been choosed + @param nb_contact: number of contacts that have to be selected, None for no limit + """ + self.host = host + self.callback = callback + self.nb_contact = nb_contact + DialogBox.__init__(self, centered=True) + + content = VerticalPanel() + content.setWidth('100%') + self.contacts_list = ListBox() + self.contacts_list.setVisibleItemCount(10) + self.contacts_list.setMultipleSelect(True) + self.contacts_list.setWidth("100%") + self.contacts_list.setStyleName('contactsChooser') + self.contacts_list.addChangeListener(self.onChange) + content.add(self.contacts_list) + button_panel = HorizontalPanel() + self.choose_button = Button("Choose", self.onChoose) + self.choose_button.setEnabled(False) + button_panel.add(self.choose_button) + button_panel.add(Button("Cancel", self.onCancel)) + content.add(button_panel) + self.setHTML(text) + self.setWidget(content) + + def onChange(self): + if self.nb_contact: + if len(self.contacts_list.getSelectedValues()) == self.nb_contact: + self.choose_button.setEnabled(True) + else: + self.choose_button.setEnabled(False) + + def getContacts(self): + """ + Actually ask to choose the contacts + """ + self.contacts_list.clear() + for contact in self.host.contact_panel.getConnected(): + self.contacts_list.addItem(contact) + self.show() + + def onChoose(self): + self.hide() + self.callback(self.contacts_list.getSelectedValues()) + + def onCancel(self): + self.hide() +