Changes

Jump to: navigation, search

Teams Winter 2011/team6/lab2

5,607 bytes added, 15:52, 12 April 2011
Install and run the Service Consumer Bundle
===Define the MANIFEST.MF for the service consumer bundle===
:a) Create a new Plug-in Project
:b) Name your Plug-in Project (cs.dps914.osgi.lab.provider) again be sure to select the target platform correctly
:c) This time you can leave the Activator checked as you will need it. (Change the name of the activator to cs.dps914.osgi.lab.provider.ClientActivator)
:d) Edit the MANIFEST.MF dependencies to add the chat interface (similar to Provider)
:e) Edit the MANIFEST.MF
[[image:14CManifest.png | 500px]]
 
===Use the Client Activator to find the service===
:badd the following code to ClientActivator  public void start(BundleContext bundleContext) Name your Plug-in Project throws Exception { ClientActivator.context = bundleContext; ServiceReference reference=context .getServiceReference(csIChatSystem.class.dps914getName()); if (reference!=null) { chatService=(IChatSystem)context.osgigetService(reference); if (chatService!=null) { ChatApp.labsetup(chatService); context.providerungetService(reference) again be sure ; } } } ===Implement classes required to select consume the target platform correctlyservice===
:ca) This time you can leave Create 2 Java Classes (ChatApp and ChatDialog):b) Make sure the Activator checked as you will need itpackage is defined correctly (cs.dps914. (Change the name of the activator to osgi.lab.client.app and cs.dps914.osgi.lab.providerclient.ClientActivatorgui respectively)
===Use the :c) Fill Java Classes with following Data'''ChatApp.java''' import java.util.ArrayList; import javax.swing.SwingUtilities; import cs.dps914.osgi.lab.chatinterface.IChatClient; import cs.dps914.osgi.lab.chatinterface.IChatSystem; import cs.dps914.osgi.lab.chatinterface.IMessage; import cs.dps914.osgi.lab.client.gui.ChatDialog; public class Activator to find the ChatApp implements IChatClient { private IChatSystem service; private ChatDialog dialog; public ChatApp(IChatSystem sys,ChatDialog gui) { service=sys; service.registerClient(this); dialog=gui; gui.setApp(this); } public ArrayList<IMessage> sendMessage( String src, String msg) { return service.appendMessage(src,msg); } public void receiveMessage(IMessage msg) { dialog.displayMessage(msg.getSource(), msg.getMessage(),msg.getTime()); } public static void exit() { System.exit(0); } public static void setup(final IChatSystem service) { SwingUtilities.invokeLater(new Runnable() { public void run() { ChatDialog window=new ChatDialog(); new ChatApp(service,window); window.pack(); window.setVisible(true); } }); } }
===Implement a class where one can consume the service==='''ChatDialog.java'''
import java.awt.BorderLayout; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.Date; import javax.swing.BorderFactory; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JMenu; import javax.swing.JMenuBar; import javax.swing.JMenuItem; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTextArea; import javax.swing.JTextField; import javax.swing.KeyStroke; import cs.dps914.osgi.lab.client.app.ChatApp; public class ChatDialog extends JFrame { private static final long serialVersionUID = -4817932904935871995L; private ChatApp app; private JScrollPane sp_display; private JTextArea ta_display; private JTextField tf_name; private JTextArea ta_msg; public ChatDialog() { super("Talk-to-Self Chat App"); setLayout(new GridLayout(1,2)); getContentPane().add(makeDisplayArea()); getContentPane().add(makeCompositionArea()); setJMenuBar(makeMenu()); } private JPanel makeDisplayArea() { JPanel panel=new JPanel(); panel.setBorder(BorderFactory.createTitledBorder( "Messages")); panel.setLayout(new BorderLayout()); ta_display=new JTextArea(); ta_display.setEnabled(false); sp_display=new JScrollPane(ta_display); panel.add(sp_display,BorderLayout.CENTER); JButton bt_clear=new JButton("Clear"); bt_clear.setToolTipText("Clear message display"); bt_clear.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { ta_display.setText(""); } }); panel.add(bt_clear,BorderLayout.PAGE_END); return panel; } private JPanel makeCompositionArea() { JPanel panel=new JPanel(); panel.setBorder(BorderFactory.createTitledBorder( "Compose")); panel.setLayout(new BorderLayout()); tf_name=new JTextField(); tf_name.setBorder(BorderFactory.createTitledBorder( "Your Name")); panel.add(tf_name,BorderLayout.PAGE_START); JPanel pn_msg=new JPanel(); pn_msg.setLayout(new BorderLayout()); pn_msg.setBorder(BorderFactory.createTitledBorder( "Your Message")); ta_msg=new JTextArea(); JScrollPane sp_msg=new JScrollPane(ta_msg); pn_msg.add(sp_msg); panel.add(pn_msg,BorderLayout.CENTER); JButton bt_send=new JButton("Send"); bt_send.setToolTipText("Send messages to yourself"); bt_send.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { app.sendMessage(tf_name.getText(), ta_msg.getText()); ta_msg.setText(""); } }); panel.add(bt_send,BorderLayout.PAGE_END); return panel; } private JMenuBar makeMenu() { // Setup menu bar JMenuBar menuBar = new JMenuBar(); // Setup menu options JMenu fileMenu = new JMenu("File"); fileMenu.setMnemonic('F'); menuBar.add(fileMenu); // File menu JMenuItem fileClose = new JMenuItem("Quit"); fileClose.setAccelerator(KeyStroke.getKeyStroke("ctrl W") ); fileClose.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { ChatApp.exit(); } }); fileMenu.add(fileClose); return menuBar; } public void setApp(ChatApp app) { this.app=app; } public void displayMessage(String source, String message,Date time) { ta_display.append(source+" ("+time.toString()+"): "+ message+"\n\n"); } }===Install and run the Service Consumer Chat Client Bundle===:a) Go to Run Configuration then OSGi Framework and make sure the client provider and interface are selected.:b) Select Add Required Bundles
1
edit

Navigation menu