static void initLookAndFeel() { MetalLookAndFeel mlf = new MetalLookAndFeel(); mlf.setCurrentTheme(new SipCommunicatorColorTheme()); try { UIManager.setLookAndFeel(mlf); } catch (UnsupportedLookAndFeelException ex) { console.error("Failed to set custom look and feel", ex); } }
/** * The class is used to request user SubscriptionAuthorisations. When an incoming subscription is * received the user must approve or refuse it for notifications to be sent. * * <p>Company: Network Research Team, Louis Pasteur University * * @author Emil Ivov * @version 1.0 */ public class SubscriptionAuthorizationDialog extends JDialog implements ActionListener { private static final Console console = Console.getConsole(SubscriptionAuthorizationDialog.class); private JPanel contentPane = new JPanel(); private Border border1; private JPanel controlsPane = new JPanel(); private BorderLayout borderLayout1 = new BorderLayout(); private GridLayout gridLayout1 = new GridLayout(); private JComboBox responsesComboBox = new JComboBox(); private JPanel buttonsPane = new JPanel(); private JButton okButton = new JButton(); private FlowLayout flowLayout1 = new FlowLayout(); private JEditorPane messagePane = new JEditorPane(); private String messageString1 = "The following user has requested to subscribe for your presence status."; private String namePrefix = "Name: <b>"; private String nameSuffix = "</b>"; private String addressPrefix = "Address: <b>"; private String addressSuffix = "</b>"; private String messagePrefix = "Message: "; private String messageSuffix = ""; private String messageString2 = "What would you like to do?"; private String name = null; private String address = null; JScrollPane messageScrollPane = new JScrollPane(); public SubscriptionAuthorizationDialog(JFrame owner) throws HeadlessException { super(owner, true); try { jbInit(); initComponents(); } catch (Exception e) { e.printStackTrace(); } } private void initComponents() { setDefaultCloseOperation(JDialog.DO_NOTHING_ON_CLOSE); messagePane.setBackground(contentPane.getBackground()); messagePane.setEditorKit(new HTMLEditorKit()); messagePane.setForeground(contentPane.getForeground()); setSize(450, 360); // center the window int x = (int) (Toolkit.getDefaultToolkit().getScreenSize().getWidth() - getWidth()) / 2; int y = (int) (Toolkit.getDefaultToolkit().getScreenSize().getHeight() - getHeight()) / 2; setLocation(x, y); okButton.addActionListener(this); } private void jbInit() throws Exception { border1 = BorderFactory.createEmptyBorder(20, 20, 20, 20); contentPane.setBorder(border1); contentPane.setLayout(borderLayout1); controlsPane.setLayout(gridLayout1); gridLayout1.setColumns(1); gridLayout1.setHgap(10); gridLayout1.setRows(0); gridLayout1.setVgap(10); okButton.setVerifyInputWhenFocusTarget(true); okButton.setMnemonic('O'); okButton.setText("OK"); buttonsPane.setLayout(flowLayout1); flowLayout1.setAlignment(FlowLayout.CENTER); messagePane.setEditable(false); messagePane.setText(""); borderLayout1.setHgap(10); borderLayout1.setVgap(10); this.setTitle("Subscription Authorization"); this.getContentPane().add(contentPane, BorderLayout.CENTER); contentPane.add(controlsPane, BorderLayout.SOUTH); controlsPane.add(responsesComboBox, null); controlsPane.add(buttonsPane, null); buttonsPane.add(okButton, null); contentPane.add(messageScrollPane, BorderLayout.CENTER); messageScrollPane.getViewport().add(messagePane, null); } private void setSubscriberDetails( String subscriberName, String subscriberAddress, String message) { this.name = subscriberName; this.address = subscriberAddress; Color color = messagePane.getForeground(); messagePane.setText( "<FONT COLOR=\"#" + Integer.toHexString(color.getRGB()).substring(2) + "\">" + messageString1 + "<p>" + namePrefix + name + nameSuffix + "<br>" + addressPrefix + address + addressSuffix + "<p>" + ((message != null && message.trim().length() > 0) ? messagePrefix + message + messageSuffix + "<p>" : "") + messageString2 + "</FONT>"); } public static String obtainAuthorisationResponse( JFrame owner, SubscriptionRequestUIModel request) { SubscriptionAuthorizationDialog sad = new SubscriptionAuthorizationDialog(owner); sad.setSubscriberDetails( request.getRequestingPartyDisplayName(), request.getRequestingPartyAddress(), request.getReasonPhrase()); String[] responses = request.getAcceptedResponses(); Vector resVector = new Vector(); for (int i = 0; i < responses.length; i++) resVector.add(responses[i]); sad.responsesComboBox.setModel(new DefaultComboBoxModel(resVector)); sad.responsesComboBox.setSelectedIndex(0); sad.show(); return sad.responsesComboBox.getSelectedItem().toString(); } public static void main(String[] args) { initLookAndFeel(); String response = obtainAuthorisationResponse( null, new SubscriptionRequestUIModel() { public String[] getAcceptedResponses() { String[] arr = new String[3]; arr[0] = "response 1"; arr[1] = "ouaba daba"; arr[2] = "ouaba dabaasdfaf"; return arr; } public String getRequestingPartyDisplayName() { return "Emil Ivov"; } public String getRequestingPartyAddress() { return "*****@*****.**"; } public String getReasonPhrase() { return "Hello, could I please add you to my contact list?"; } }); System.out.println("Returned response = " + response); } static void initLookAndFeel() { MetalLookAndFeel mlf = new MetalLookAndFeel(); mlf.setCurrentTheme(new SipCommunicatorColorTheme()); try { UIManager.setLookAndFeel(mlf); } catch (UnsupportedLookAndFeelException ex) { console.error("Failed to set custom look and feel", ex); } } public void actionPerformed(ActionEvent evt) { dispose(); } }