--- /dev/null
+// ServerList.java\r
+// $Id: ServerList.java,v 1.1 2010/06/15 12:28:59 smhuang Exp $\r
+// (c) COPYRIGHT MIT and INRIA, 1998.\r
+// Please first read the full copyright statement in file COPYRIGHT.html\r
+\r
+package org.w3c.jigadmin.gui.slist;\r
+\r
+import java.awt.Insets;\r
+import java.awt.GridLayout;\r
+import java.awt.event.ActionListener;\r
+import java.awt.event.ActionEvent;\r
+\r
+import javax.swing.JPanel;\r
+import javax.swing.BorderFactory;\r
+import javax.swing.JButton;\r
+import javax.swing.ImageIcon;\r
+import javax.swing.AbstractButton;\r
+\r
+import javax.swing.event.EventListenerList;\r
+\r
+import org.w3c.jigadmin.RemoteResourceWrapper;\r
+import org.w3c.jigadmin.gui.Message;\r
+\r
+import org.w3c.jigsaw.admin.RemoteAccessException;\r
+\r
+import org.w3c.tools.widgets.Utilities;\r
+\r
+/**\r
+ * Manage a list of Jigsaw server.\r
+ * @version $Revision: 1.1 $\r
+ * @author Benoît Mahé (bmahe@w3.org)\r
+ */\r
+public class ServerList extends JPanel {\r
+\r
+ ServerListModelInterface model = null;\r
+ EventListenerList listenerList = null;\r
+\r
+ ImageIcon icon = null;\r
+\r
+ /**\r
+ * Our internal ActionListener.\r
+ */\r
+ ActionListener al = new ActionListener() {\r
+ public void actionPerformed(ActionEvent e) {\r
+ fireServerSelectedEvent(e.getActionCommand());\r
+ }\r
+ };\r
+\r
+ /**\r
+ * Get the Server List Model.\r
+ * @return a ServerListModelInterface instance.\r
+ */\r
+ public ServerListModelInterface getModel() {\r
+ return model;\r
+ }\r
+\r
+ /**\r
+ * Add a ServerListListener.\r
+ * @param listener the ServerListListener to add.\r
+ */\r
+ public void addServerListListener(ServerListListener listener) {\r
+ listenerList.add(ServerListListener.class, listener);\r
+ }\r
+\r
+ /**\r
+ * Remove a ServerListListener.\r
+ * @param listener the ServerListListener to remove.\r
+ */\r
+ public void removeServerListListener(ServerListListener listener) {\r
+ listenerList.remove(ServerListListener.class, listener);\r
+ }\r
+\r
+ /**\r
+ * Fire a ServerSelectedEvent for the given server name.\r
+ * @param name the server name.\r
+ */\r
+ protected void fireServerSelectedEvent(String name) {\r
+ RemoteResourceWrapper server = null;\r
+ server = model.getServer(name);\r
+ Object listeners[] = listenerList.getListenerList();\r
+ for (int i = listeners.length-2; i>=0; i-=2) {\r
+ if (listeners[i] == ServerListListener.class) {\r
+ ((ServerListListener)\r
+ listeners[i+1]).serverSelected(name, server);\r
+ }\r
+ }\r
+ }\r
+\r
+ /**\r
+ * Build the interface.\r
+ */\r
+ protected void build() {\r
+ String servers[] = model.getServers();\r
+ int len = servers.length;\r
+ JButton b = null;\r
+ setLayout(new GridLayout(len, 1));\r
+\r
+ for (int i = 0 ; i < len ; i++) {\r
+ b = new JButton(servers[i], icon);\r
+ b.setVerticalTextPosition(AbstractButton.BOTTOM);\r
+ b.setHorizontalTextPosition(AbstractButton.CENTER);\r
+ b.setActionCommand(servers[i]);\r
+ b.addActionListener(al);\r
+ b.setMargin(Utilities.insets2);\r
+ b.setToolTipText("Load or reload the configuration of "+\r
+ servers[i]);\r
+ //b.setBorder(BorderFactory.createRaisedBevelBorder());\r
+ add(b);\r
+ }\r
+ }\r
+\r
+ /**\r
+ * Constructor.\r
+ * @param model The Server list model.\r
+ */\r
+ public ServerList(ServerListModelInterface model) {\r
+ this(model, null);\r
+ }\r
+\r
+ /**\r
+ * Constructor.\r
+ * @param model The Server list model.\r
+ * @param icon. The server icon.\r
+ */\r
+ public ServerList(ServerListModelInterface model, ImageIcon icon) {\r
+ this.icon = icon;\r
+ this.model = model;\r
+ listenerList = new EventListenerList();\r
+ build();\r
+ }\r
+\r
+ /**\r
+ * Constructor.\r
+ * @param root The root RemoteResourceWrapper\r
+ */\r
+ public ServerList(RemoteResourceWrapper root) \r
+ throws RemoteAccessException\r
+ {\r
+ this(root, null);\r
+ }\r
+\r
+ /**\r
+ * Constructor.\r
+ * @param root The root RemoteResourceWrapper\r
+ * @param icon. The server icon.\r
+ */\r
+ public ServerList(RemoteResourceWrapper root, ImageIcon icon) \r
+ throws RemoteAccessException\r
+ {\r
+ this.icon = icon;\r
+ this.model = new ServerListModel(root);\r
+ listenerList = new EventListenerList();\r
+ build();\r
+ }\r
+\r
+}\r